diff --git a/BACKLOG.md b/BACKLOG.md index df1c3511..21e863a7 100644 --- a/BACKLOG.md +++ b/BACKLOG.md @@ -21,6 +21,25 @@ against current code before acting (memory is point-in-time). --- +## ✅ RESOLVED 2026-06-20 → see `RETRO.md` (branch `feat/backlog-burndown`) + +Built + unit-verified this pass (full detail + commit table in `RETRO.md`). The +matching bullets below are superseded; only the noted follow-ups remain live: + +- **G** turnId `/repo`↔`/repo2` collision + WorkspaceStateProbe newline fingerprint — `784accb` +- **I** `.cs`/Godot-Mono symbols — `f715ffa`; structural `.tscn`/`.tres` validator — `0e251d6` +- **A §4** EventStore latency probe (wired) + llama-server probe — `266bbf0` *(follow-up: llama probe live wiring)* +- **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)* +- **D** dedicated `SourceFetched`/`LowQualityExtraction` events — `b098d87` + +**Not yet started (verifiable, Kotlin):** B §5 reviewer static-first infra; D batch fetch-approval + dynamic egress allowlist; B §2 plan-derived diff manifest; G narration-lane lag; H freestyle follow-ups. +**Blocked in this sandbox:** E tui-go items (Go toolchain absent); F live-QA gates + D §6 web approval client (need local model / SearXNG / network / GPU). + +--- + ## A. Observability spec — `docs/plans/2026-06-13-observability-spec.md` Metrics + CLI + TUI pane and the health backbone are shipped (fe94140, 4f6bfa8, diff --git a/RETRO.md b/RETRO.md new file mode 100644 index 00000000..bd54040d --- /dev/null +++ b/RETRO.md @@ -0,0 +1,33 @@ +# CORREX — RETRO (archive of resolved BACKLOG items) + +Counterpart to `BACKLOG.md` (the live outstanding list). Items here are **built and +unit-verified** (Gradle green). Where a live-QA gate applies, that's called out as a +follow-up — this sandbox has no local model / SearXNG / GPU / network, so live-QA +could not be run here. + +--- + +## 2026-06-20 — backlog burndown (branch `feat/backlog-burndown`) + +Nine tracks, each compiled + unit-tested green before commit. + +| Commit | Track | BACKLOG ref | +|--------|-------|-------------| +| `f783eed` | `CritiqueFinding`/`CritiqueSeverity`/`CritiqueRole` type + `CritiqueOutcomeCorrelatedEvent` + `core/critique` calibration projection (state/reducer/projector) | B §6 + C-A3 | +| `784accb` | `repomap:` turnId namespace requires trailing `:` (no `/repo`↔`/repo2` collision; L3RepoKnowledgeRetriever filter + ProjectMemoryService write) + WorkspaceStateProbe newline fingerprint | G | +| `266bbf0` | `EventStoreLatencyProbe` (wired) + `LlamaServerHealthProbe` (+ injectable `LlamaLivenessClient`) + `HealthConfig.eventStoreWarnLatencyMs` | A §4 | +| `f715ffa` | `.cs` / Godot-Mono type symbols in `RepoMapIndexer.SYMBOL_PATTERNS` | I | +| `0e251d6` | `SceneValidator` — structural `.tscn`/`.tres` (header well-formedness, ExtResource/SubResource id resolution, node parent integrity) | I | +| `1df7af5` | Brief echo-back gate: `BriefEchoMismatchEvent` + `BriefEchoComparator`/`BriefEchoExtractor` + `checkBriefEcho` orchestrator gate | C-A1 | +| `1a1b5cc` | Stage-level plan checkpointing: `StageCheckpointPassed/FailedEvent` + `StageCheckpointReconciler` + `emitStageCheckpoint` (gated on a locked plan) | C-A2 | +| `eae0a0c` | Architect contradiction-check (display-only): `PossibleContradictionFlaggedEvent` + L3-backed `ArchitectContradictionChecker` | B §4 | +| `b098d87` | Dedicated `SourceFetchedEvent` / `LowQualityExtractionEvent` (promoted from `ToolExecutionCompletedEvent` metadata; additive), emitted from `SandboxedToolExecutor` | D | + +### 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). +- **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`). + +### Environment note +- A `~/.gradle/gradle.properties` machine-local override was added on this box (`-Xmx768m`, `parallel=false`, kotlin daemon `-Xmx640m`) because the repo's `-Xmx4G` OOM-killed the foreground process on a 1.9 GB machine. **Not committed** — repo defaults intact for higher-RAM machines.