docs(backlog): record B§4 activation (4e08510) in RETRO

Architect contradiction-check is now live (server subscribes to the architect design
artifact and emits the display-only flag). All cleanly unit-verifiable deterministic
backlog tracks are now landed; what remains is model-dependent activations (live-QA
gated) and deep session-lifecycle work (§H) better done with live testing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 08:08:14 +00:00
parent 4e08510045
commit 3302930b00
2 changed files with 7 additions and 5 deletions
+5 -4
View File
@@ -32,7 +32,7 @@ matching bullets below are superseded; only the noted follow-ups remain live:
- **B §6 + C-A3** `CritiqueFinding` type + calibration projection — `f783eed` *(follow-up: `CritiqueOutcomeCorrelatedEvent` producer)*
- **C-A1** brief echo-back gate — `1df7af5` *(follow-up: `planner.md` brief_echo + `role_pipeline` metadata to activate)*
- **C-A2** stage-level plan checkpointing — `1a1b5cc`
- **B §4** architect contradiction-check (display-only) — `eae0a0c` *(follow-up: decision emit hook + in-session L3 embedding)*
- **B §4** architect contradiction-check (display-only) — `eae0a0c`, **activated** `4e08510` (server subscribes to the architect `design` artifact → emits the flag)
- **D** dedicated `SourceFetched`/`LowQualityExtraction` events — `b098d87`; dynamic per-session egress allowlist — `027ff1f`, **activated** `ab7e4be` (session state threaded into assessment input); batch source-list fetch-approval — `4b0024f`
- **B §5** reviewer static-first (runner + event + context-exclusion, live-wired) — `447fc7a` *(follow-up: a stage that emits `StaticFindingsRecordedEvent`)*
- **G** narration-lane lag — `eff8f8d`
@@ -40,7 +40,7 @@ matching bullets below are superseded; only the noted follow-ups remain live:
- **B §2** plan-derived diff manifest — `641051b`
**Remaining (deeper / lower-verifiability):** B§4 decision hook (next); H freestyle follow-ups (graph re-route, child-session runner — deep session-lifecycle, want live testing); the dormant model-dependent activations (A1 planner prompt, A3 producer, B§5 static_check stage — live-QA-gated). §E plan-comparison view is BLOCKED (no plan-candidate event; see §E).
**Remaining (deeper / lower-verifiability):** H freestyle follow-ups (graph re-route, child-session runner — deep session-lifecycle, want live testing); the dormant model-dependent activations (A1 planner prompt, A3 producer, B§5 static_check stage — live-QA-gated, deprioritized to last). §E plan-comparison view is BLOCKED (no plan-candidate event; see §E). All cleanly unit-verifiable deterministic tracks are now landed.
**§E tui-go remaining (UNBLOCKED — Go via `GOTOOLCHAIN=auto` go1.24.2):** plan comparison view; idea-board→profile promotion.
**Still blocked in this sandbox:** F live-QA gates + D §6 web approval client (need local model / SearXNG / GPU).
@@ -71,8 +71,9 @@ and §5 reviewer prompt/needs wiring (3467826) are shipped — RETRO candidates.
structured type. Shared by plan critic + code reviewer.
- [ ] **§6 `CriticCalibrationProjection`** (keyed by modelHash, role) — needs runtime
history to exist first (spec ordering #5). Same projection as pipeline-addenda A3.
- [ ] **§4 architect contradiction-check** — L3 retrieval over decision journal + ADRs →
`PossibleContradictionFlag` (display-only in v1). Unbuilt.
- [x] **§4 architect contradiction-check** — `eae0a0c` (checker) + `4e08510` (live server hook:
subscribe to architect `design` artifact → `check` → emit `PossibleContradictionFlaggedEvent`,
display-only). → RETRO.
- [ ] **§3 symbol grounding** — deferred; needs a real symbol index (file-path grounding done).
- [ ] **§2 dynamic plan-derived diff manifest** — allowed files from the `impl_plan`
artifact. Future refinement; static per-stage `writes = [globs]` form is shipped.
+2 -1
View File
@@ -34,11 +34,12 @@ Nine tracks, each compiled + unit-tested green before commit.
| `ab7e4be` | Egress allowlist **activation**: `resolveSessionEgressHosts` threads the session's `EgressAllowlistProjection` state into `ToolCallAssessmentInput` at `runPlane2Assessment`, so `NetworkHostRule` now consults the live per-session union (was fed `emptySet()`) | D (activation) |
| `4b0024f` | Batch source-list fetch-approval: `POST /sessions/{id}/approve-sources``SourceListHosts.extract` (java.net.URI, lower-cased, ports stripped, dossier-line tolerant) → one `EgressHostsGrantedEvent`; live allowlist then auto-clears those web_fetches (no per-URL T2) | D |
| `f107ff5` | Idea-board → project-profile promotion: `IdeaPromotedEvent` (board tombstone, like discard) + `ProjectProfileWriter` (escape-aware TOML serialize/write) + `ProjectProfile.withConvention` (deduped) + server `PromoteIdea` handler (loads profile, appends idea text, writes `.correx/project.toml`); also made `SimpleToml`'s reader unescape `\\`/`\"` symmetrically with the writers (fixes pre-existing read/write asymmetry) | E |
| `4e08510` | Architect contradiction-check **activation**: `ServerModule.start()` subscribes to the architect stage's `design` `ArtifactCreatedEvent`, resolves decision text (design-schema `approach` field, capped fallback), runs `ArchitectContradictionChecker.check`, appends the non-null `PossibleContradictionFlaggedEvent`. Live-only, never halts. Checker built in `Main.kt` (gated on `project.enabled`) and threaded into `ServerModule`. Replaces the `Main.kt` `TODO(wiring)` | B §4 (activation) |
### Follow-ups created this pass (refiled into BACKLOG)
- **C-A1 activation** — `planner.md` must emit a `brief_echo` block and `role_pipeline.toml` must set `briefEcho="true"` / `briefEchoSource` for the gate to fire live (model-dependent → live-QA).
- **C-A3 producer** — nothing emits `CritiqueOutcomeCorrelatedEvent` yet; the calibration projection has no live feed until a reviewer-loop producer records finding outcomes.
- **B §4 wiring** — `ArchitectContradictionChecker` is unwired: needs an architect-decision emit hook on the server side, and prior decisions embedded into L3 in-session (today they only land at session end).
- **B §4 wiring** — ✅ DONE (`4e08510`): `ServerModule.start()` now subscribes to the architect `design` artifact and emits the flag. (In-session L3 embedding is NOT needed — the checker filters to PRIOR sessions by design, so it works against prior runs' distilled decisions.)
- **A §4 llama wiring** — `LlamaServerHealthProbe` is unregistered: an `HttpClient` + tokens/sec telemetry aren't exposed to the health-monitor scope yet (`// TODO(wiring)` in `Main.kt`).
- **D egress wiring** — ✅ DONE (`ab7e4be`): session egress state is now threaded into `ToolCallAssessmentInput` at `runPlane2Assessment`, so `NetworkHostRule` consults the live union. Batch fetch-approval ✅ DONE (`4b0024f`): `POST /sessions/{id}/approve-sources` emits one `EgressHostsGrantedEvent` for the whole source list.
- **B §5 static_check stage** — runner/event/filter complete and the filter is live, but no workflow stage emits `StaticFindingsRecordedEvent` yet (`// TODO(wiring)` in `StaticAnalysisRunner.kt`); needs an event-emitting deterministic stage-type seam.