18cbd34739
Uncommitted work from the session-robustness-and-dox branch sweep
(docs/qa/QA-session-robustness-and-dox.md), verified alongside the
compression/context fixes:
- SandboxedToolExecutor: validate tool args centrally before dispatch. A
malformed/missing-arg call becomes a recoverable ERROR: (surfaced with the
tool's arg schema so the model can correct + retry) instead of stranding
the stage with no artifact. + validation test.
- PlanLinter: seed artifacts (analysis) produced by the planning phase count
as available producers, so a plan stage that `needs` them isn't flagged as
an unproduced-need; H1 unproduced-needs + trap-state checks. + tests.
- DefaultSessionOrchestrator: live-QA robustness fixes (event-tail /
per-stage budget + retry handling).
- workflow prompts/configs: DOX AGENTS.md alignment + freestyle/task/role
prompt tweaks.
- SessionOrchestratorIntegrationTest: coverage for the above.
- FreestylePlanningWorkflowTest: allow list_dir in analyst tools (follows the
list_dir wiring in 968cbfa).
- QA plan doc for the branch sweep.
Correx live-QA plans
Each QA-<feature>.md is the artifact that authorizes a BACKLOG.md → RETRO.md move:
it pins observable evidence (events, logs, files, TUI renders) for one shipped feature.
Template: TEMPLATE.md. Environment bring-up: ENV.md (+ scripts/qa/).
A feature is not "resolved" until its plan passes live. On PASS → move the BACKLOG entry to RETRO with the run date + cited evidence; on FAIL → refile each miss as a numbered finding.
Plans (this burndown)
| Plan | Feature | Commits | Needs |
|---|---|---|---|
QA-research-egress.md |
per-session egress allowlist + batch source-list approval + dedicated source events | ab7e4be 4b0024f b098d87 027ff1f |
model + SearXNG |
QA-architect-contradiction.md |
architect contradiction-check (display-only) | 4e08510 eae0a0c |
model + llamacpp embedder + project.enabled, 2 sessions/1 process |
QA-llama-health-probe.md |
LLAMA_SERVER liveness probe | 64a90e7 9eef936 266bbf0 |
static llama-server you can stop |
QA-idea-promotion.md |
idea-board → .correx/project.toml promotion |
f107ff5 |
bound workspace (router model optional — can seed the event) |
QA-reviewer-static-first.md |
reviewer static-findings exclusion (PARTIAL — stage seam+emitter built e46777e; runner activation pending) |
447fc7a e46777e |
seed StaticFindingsRecordedEvent |
QA-brief-echo-gate.md |
ARM-IT plan: brief echo-back gate (off by default; risky to arm blind) | 1df7af5 |
prod-candidate model |
QA-grants.md |
cross-session grants (PROJECT/GLOBAL) + revoke | c36d41b 8df0ec7 |
model + a T2+ tool call, 2 sessions, 2 workspaces |
QA-tui-v2.md |
Bubble Tea v2 + Shift+Enter + native cursor + window title | d247b19 85af2c6 |
kitty-protocol terminal + a server with a resumable session |
Order of attack (suggested)
QA-tui-v2— cheapest of all: no model / network / GPU, just a kitty terminal + a server with a session to enter. Pure render/keyboard verification.QA-llama-health-probe+QA-idea-promotion— cheapest, least model-dependent (health is liveness; promotion can be seeded). Quick wins.QA-grants— no network/embedder; just a model that drives one repeatable T2+ tool call. The headline check (grant in session A → auto-clear in session B) is a strong, cheap signal.QA-research-egress— once SearXNG is up.QA-architect-contradiction— needs a real embedder + two sessions.QA-brief-echo-gate— run this before arming the gate anywhere real; check 2 (100% parseable-echo across runs) is the go/no-go for production.QA-reviewer-static-first— partial until the static-check stage seam lands.
Still-open §F live-QA gates (no dedicated plan yet — same env applies)
These predate the burndown and remain in BACKLOG.md §F; author a plan from TEMPLATE.md
when you tackle one: Epic 15 (events/replay + MDC sessionIds), idea-board capture, clarification
loop + workflow-propose panel, the full research-workflow run, TUI kernel-steering + AMD gauge.