Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions loopx/capabilities/decision_context/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ change touches.
| `sources.py` | Provider-neutral source contracts: specs, items, scans, exact reads, source manifest |
| `runtime.py` | Thin orchestration from profile to providers to evidence assembly and advisory recall |
| `assembler.py` | Deterministic authority rebase, advisory recall assembly, `decision_source_coverage_v0` |
| `freshness.py` | Per-source freshness reports and capture host health projection |
| `packets.py` | Public-safe evidence, proposal, review and outcome packets |
| `review_settlement.py` | Owner-gated or quiet settlement of one assembly |
| `cursor_commit.py` | Validated private cursor commit after settlement |
Expand Down
1 change: 1 addition & 0 deletions loopx/capabilities/decision_context/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ exact-read 完整度和未覆盖的 P0 source 投影为公开安全的回执。`
| `review_settlement.py` | 对单次 assembly 做 owner 把关或 quiet settlement |
| `cursor_commit.py` | settlement 校验通过后提交私有 cursor |
| `private_state.py` | 私有 cursor 与 pending settlement 的文件读写 |
| `freshness.py` | 逐来源 freshness 报告与 capture host 健康投影 |
| `outcome_feedback.py` | 从 outcome 回流到 Reward Memory 的审计反馈 |
| `capture.py` | opt-in 的 source-reference capture 与 `capture-status` |
| `capture_recovery.py` | 保留引用的 capture 诊断与恢复 |
Expand Down
5 changes: 0 additions & 5 deletions loopx/control_plane/status/active_state_projection.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
)


STATE_EVENT_LOG_BASENAME = "events.jsonl"
SECTION_HEADING_PATTERN = re.compile(r"^##+\s+(.+?)\s*$")
BACKLOG_HYGIENE_SECTION_HEADINGS = ("Next Action", "Operating Lessons")
BACKLOG_HYGIENE_BULLET_PATTERN = re.compile(r"^\s*(?:[-*]|\d+[.)])\s+(.+?)\s*$")
Expand All @@ -31,10 +30,6 @@
)






def active_state_sections(state_text: str, headings: tuple[str, ...]) -> dict[str, list[str]]:
return _active_state_sections(
state_text,
Expand Down
4 changes: 0 additions & 4 deletions loopx/status.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,6 @@
StatusCollectionContext,
collect_status as _collect_status_read_model,
)
from .control_plane.status.active_state_projection import (
STATE_EVENT_LOG_BASENAME as STATE_EVENT_LOG_BASENAME,
)
from .control_plane.status.contract_projection import (
STATUS_CONTRACT_RELOAD_HINT as STATUS_CONTRACT_RELOAD_HINT,
)
Expand Down Expand Up @@ -261,7 +258,6 @@
"MONITOR_DISPLAY_STOP_CONDITION": "loopx.control_plane.status.monitor_display_projection",
"MONITOR_DISPLAY_FALLBACK_ACTION": "loopx.control_plane.status.monitor_display_projection",
"STATUS_CONTRACT_RELOAD_HINT": "loopx.control_plane.status.contract_projection",
"STATE_EVENT_LOG_BASENAME": "loopx.control_plane.status.active_state_projection",
"PLANNED_CONTROLLER_OPT_IN_RECOMMENDED_ACTION": "loopx.control_plane.status.goal_attention_projection",
# Refs #4447: the connected-adapter sets were defined here and in both status
# projections that pass them to the same injected read-model parameters. The
Expand Down
12 changes: 9 additions & 3 deletions tests/control_plane/test_canonical_snapshot_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@
from loopx.control_plane.coordination.runtime_shadow import (
build_todo_runtime_shadow_projection,
)
from loopx.control_plane.effect_runtime import MAX_RESPONSE_BYTES, effect_runtime_result
from loopx.control_plane.effect_runtime import (
MAX_RESPONSE_BYTES,
EffectRuntimeResponseAmbiguous,
effect_runtime_result,
)
from loopx.control_plane.todos import provider_projection

REPO = Path(__file__).resolve().parents[2]
Expand Down Expand Up @@ -109,7 +113,7 @@ def test_real_rpc_keeps_budget_and_cli_recovers_complete_display(
runtime, state, registry, projection = wide_goal
runtime_pid = effect_runtime_result("runtime.ping", {})["pid"]
# Same stored workload: old one-shot endpoint really crosses the fixed budget.
with pytest.raises(RuntimeError) as oversized:
with pytest.raises(EffectRuntimeResponseAmbiguous) as oversized:
effect_runtime_result(
"coordination.local_authority.todo_list",
{
Expand All @@ -120,7 +124,9 @@ def test_real_rpc_keeps_budget_and_cli_recovers_complete_display(
},
timeout=15,
)
assert "response is oversized" in str(oversized.value.__cause__)
# The server caps a post-dispatch response by closing the connection. The
# caller cannot classify that lost response as a safe rejection or retry.
assert oversized.value.diagnostic_code == "runtime_response_ambiguous"
measured = []

def capture(method, payload, **kwargs):
Expand Down
Loading