Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -13,8 +13,8 @@
|
||||
**Tasks.**
|
||||
- **#80** [EPIC] LSP validation gate — real per-stage gate + terminal typecheck replacement. Design finalized in the task body; break into the 5 sub-tasks listed there. Container for the work below.
|
||||
- **#310** ✅ LSP diagnostics runner: anchor read on server readiness, not the 750ms timer (kills phantom unresolved-import).
|
||||
- **#311** LSP gate: lint-class diagnostics (unused/deprecated) must not fail the run — classify by `DiagnosticTag`, not severity.
|
||||
- **#263** Auto build-gate never fires on real freestyle scaffold — promotion attaches to no reachable stage. Blocks the terminal safety net #80 doesn't replace.
|
||||
- **#311** ✅ LSP gate: lint-class diagnostics (unused/deprecated) must not fail the run — classify by `DiagnosticTag`, not severity.
|
||||
- **#263** ✅ Auto build-gate never fires on real freestyle scaffold — promotion attaches to no reachable stage. Blocks the terminal safety net #80 doesn't replace.
|
||||
- **#267** Verify build-gate actually fires + re-scope #40 (LSP obsoletes the typecheck alias) — one live run settles both. Acceptance gate for the whole goal; do last.
|
||||
|
||||
**Exit.** One live freestyle run where every write stage gets LSP diagnostics scoped to its write blast-radius, terminal build-gate fires, and a stranded-scaffold case goes to recovery instead of `WorkflowFailed`.
|
||||
@@ -78,6 +78,32 @@
|
||||
| 2 W | #80 sub4 — blast-radius filter | #305 + #306 — ACR external + sticky hint | #304 + #309 — recovery runaway |
|
||||
| 2 F | #310, #311, #267 — readiness anchor + tag class + acceptance run | — | — |
|
||||
|
||||
### Goal 1 progress — 2026-07-26
|
||||
|
||||
- **#310 ✅** (commit `a95475be`). `awaitDiagnostics` waits for one push per URI then a *quiescent*
|
||||
period anchored to the last server publication (`awaitAll` + `awaitQuiet`), not a 750ms timer
|
||||
started at `didOpen`. Kills the half-loaded-project phantom unresolved-import.
|
||||
- **#311 ✅** (commit `f61864ff`). `LspDiagnostic.tags` (lowercased `DiagnosticTag` names) is carried
|
||||
from LSP4J through the event; `SessionOrchestratorGates2` gates on `severity == error && !isLint`.
|
||||
A `noUnusedLocals` tsconfig promoting TS6133 to *error* no longer hard-fails a run that no rewrite
|
||||
could clear. Lint diagnostics stay recorded and visible, just non-gating. Classification by
|
||||
protocol tag, not a TS-code whitelist. Test: `core/events/.../LspDiagnosticTest.kt`.
|
||||
- **#263 ✅** (commit `867e99d1`). Two findings on trace:
|
||||
- The *reported* selection bug was already fixed by `159b3f1e` (#277) — `autoGateStages` is every
|
||||
write-declaring stage **plus** `terminalStageId(plan)`, so a non-writing review terminal is
|
||||
gated and `runExecutionGate` promotes it to PROJECT off the real `FileWritten` manifest. The
|
||||
2026-07-18 evidence was stale.
|
||||
- The hole that remained: any stage declaring `build_expectation: project|tests` zeroed the whole
|
||||
auto-gate set, so a plan building at stage 3 of 9 had nothing verifying the six stages written
|
||||
after it. A declared build now suppresses only the redundant *per-writing-stage* gates; the
|
||||
terminal floor always stays.
|
||||
- Left deliberately: the gate chain still short-circuits before the execution gate when the
|
||||
contract gate fails. The stage fails either way — cheap gates first, no COMPLETE-lie.
|
||||
|
||||
**Goal 1 remaining: #267 only** — the acceptance live run. Needs the #191 `setup = "npm ci"` alias
|
||||
first, or the now-firing gate fails on absent `node_modules` rather than on real code. Fold the
|
||||
unverified #312/#313 trailing-mandate check into the same run.
|
||||
|
||||
---
|
||||
|
||||
## Landed out-of-band — context message-type sweep (#312, #313)
|
||||
|
||||
Reference in New Issue
Block a user