Research: Close #2160 Coord-Shadows Read/Gate Arm
Brownfield remediation mission — the design decisions were made by a 3-lens code squad (reviewer-renata / paula-patterns / randy-reducer) and hardened by a 2-lens post-spec squad. This file records the decisions rather than re-deriving them.
Decision: one canonical subtask-row walk, guard-semantic wins
semantic is canonical; correct the uncheck writer's re-enter behavior to match.
blocks on; the dashboard and rollback must agree with it. The two aggregate walks already diverge, so "byte-identical to the aggregate" is impossible — a canonical choice is required.
writer canonical (rejected — the guard is the gate authority).
- Decision: Extract
_walk_wp_sectionincore/subtask_rows.py; the counter'sbreak-on-exit - Rationale: the guard (
tasks_shared._check_unchecked_subtasks) is the authority the lane gate - Alternatives: keep both walks (rejected — three parallel copies of the semantic); make the
Decision: close the fail-open at the shared emit layer, not per-door
four production callers; retire #2511's per-door pre-derivation.
after #2511's orchestrator-only fix. A shared-layer fix closes the class on every path and reduces code (the per-door patch collapses).
- Decision: fix
_infer_subtasks_complete(row semantics + primary-surface resolution) at all - Rationale: randy proved the native
agent statuspath still fails open viaaggregate.py:717 - Alternatives: keep per-door patches (rejected — leaves the class half-open + duplicates logic).
Decision: reuse sync/daemon._is_process_alive, do not add os.kill
allocator consume it.
parallel primitive (C-002 violation) and would need to re-solve NFR-004's platform safety.
- Decision: promote/centralize the existing psutil liveness helper; both the indicator and the
- Rationale: a cross-platform, edge-hardened helper already exists; adding
os.killwould be a - Alternatives:
os.kill(pid, 0)(rejected — parallel impl, weaker platform handling).
Verified-already-done: #1862 analysis-freshness checkbox-insensitivity
both write_analysis_report and check_analysis_report_current. #1862 is closed verified-already-fixed; the mission keeps only a regression guard (FR-009), no new logic.
analysis_report._normalize_tasks_md(#1764) already strips[ ]/[x]before hashing, wired to
Verified-current: the vulnerable vs already-correct surfaces
agent status --to for_review and the orchestrator door.
(tasks_shared._check_unchecked_subtasks) — resolves TASKS_INDEX + uses the canonical iterator.
- Vulnerable: the emit-layer
_infer_subtasks_complete(fail-open + divergent regex) reached by - Already correct (do not touch): the native
move-taskguard