7dbfdcf081
mavgpud.service, the Maven GPU supervisor, is an enabled systemd user unit that binds *:8080 and restarts on kill. The correx server wanted the same port, so qa-stack died with BindException and the QA stack never came up. Worse, qa-stack's --stop ran `fuser -k 8080/tcp`, which killed mavgpud rather than a correx server; systemd then restarted it straight into the port it had just freed, so it won the race every time. Moves the default to 8090 in the four places that have to agree: ServerConfig, ConfigLoader's fallback, the CLI's DEFAULT_PORT, and the TUI's -port flag. A mismatch between any two of them is a client that cannot find its own server. The machine-local halves are not in this diff and were applied on disk: `~/.config/correx/config.toml` pinned `port = 8080` explicitly, which overrides the code default, and `scripts/` is gitignored so qa-stack.sh's five references (including the --stop kill, now aimed at 8090) live only on this box. Verified live: the server binds 8090 and answers /health while mavgpud keeps 8080. Left open in #695: mavgpud also spawns a llama-server on :10000, which is qa-stack's router port, and qa-stack pkills that pattern. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.