3302930b00
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>
7.0 KiB
7.0 KiB
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 |
027ff1f |
Dynamic per-session egress allowlist: EgressHostsGrantedEvent + EgressAllowlist union helper + EgressAllowlistProjection; NetworkHostRule delegates to the union |
D |
447fc7a |
Reviewer static-first: StaticFindingsRecordedEvent + StaticAnalysisRunner (injectable CommandRunner; compiler/ktlint/detekt parsers) + excludeStaticFindingsFromReview filter, live-wired into reviewer context assembly |
B §5 |
eff8f8d |
Narration-lane lag: stale pause narrations dropped per-approval-request on resolve / per-session on resume (replay-safe) | G |
1e6699a |
tui-go go.mod go 1.26 → 1.24.2 (1.26 toolchain unreleased/unfetchable) — unblocks Go build/test on released toolchains |
E (enabler) |
da72ee5 |
tui-go: markdown rendering for chat turns via glamour (dark, per-width memoized), plain-text fallback; other roles/UI untouched |
E |
1f7a5d9 |
tui-go session list / resume view: R overlay over GET /sessions, resume via POST /sessions/{id}/resume onto the existing global stream |
E |
2a99e15 |
tui-go per-event render-matrix golden tests (37 cases) + a coverage guard that parses protocol.go so any new event type without a golden fails |
E §2 |
d5afcd3 |
tui-go approval ergonomics: navigable pending-approval queue (no modal stacking) + y/n/e keys + tier-gated T3+ arm/confirm |
E §3 |
641051b |
Plan-derived diff manifest: PlanStage.writes + PlanDerivedManifest.deriveAllowedWrites/combine, unioned into StageConfig.writeManifest at compile, enforced by the existing containment matcher |
B §2 |
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.mdmust emit abrief_echoblock androle_pipeline.tomlmust setbriefEcho="true"/briefEchoSourcefor the gate to fire live (model-dependent → live-QA). - C-A3 producer — nothing emits
CritiqueOutcomeCorrelatedEventyet; the calibration projection has no live feed until a reviewer-loop producer records finding outcomes. - B §4 wiring — ✅ DONE (
4e08510):ServerModule.start()now subscribes to the architectdesignartifact 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 —
LlamaServerHealthProbeis unregistered: anHttpClient+ tokens/sec telemetry aren't exposed to the health-monitor scope yet (// TODO(wiring)inMain.kt). - D egress wiring — ✅ DONE (
ab7e4be): session egress state is now threaded intoToolCallAssessmentInputatrunPlane2Assessment, soNetworkHostRuleconsults the live union. Batch fetch-approval ✅ DONE (4b0024f):POST /sessions/{id}/approve-sourcesemits oneEgressHostsGrantedEventfor the whole source list. - B §5 static_check stage — runner/event/filter complete and the filter is live, but no workflow stage emits
StaticFindingsRecordedEventyet (// TODO(wiring)inStaticAnalysisRunner.kt); needs an event-emitting deterministic stage-type seam. - E toolchain — tui-go now builds via auto-downloaded go1.24.2 (
GOTOOLCHAIN=auto). The committed directive fix assumes 1.26 was unintended; bump if a specific newer release is actually wanted.
Environment note
- A
~/.gradle/gradle.propertiesmachine-local override was added on this box (-Xmx768m,parallel=false, kotlin daemon-Xmx640m) because the repo's-Xmx4GOOM-killed the foreground process on a 1.9 GB machine. Not committed — repo defaults intact for higher-RAM machines.