From 3302930b006240820b8af6b970f2aded7a78a29c Mon Sep 17 00:00:00 2001 From: kami Date: Sun, 21 Jun 2026 08:08:14 +0000 Subject: [PATCH] =?UTF-8?q?docs(backlog):=20record=20B=C2=A74=20activation?= =?UTF-8?q?=20(4e08510)=20in=20RETRO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- BACKLOG.md | 9 +++++---- RETRO.md | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/BACKLOG.md b/BACKLOG.md index 2a3cc6f8..19f1731b 100644 --- a/BACKLOG.md +++ b/BACKLOG.md @@ -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. diff --git a/RETRO.md b/RETRO.md index 9f622101..31336a8f 100644 --- a/RETRO.md +++ b/RETRO.md @@ -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.