Skip to content

Commit f399fd6

Browse files
committed
TML-2984: slice 06 close-out — SDoD walked
Signed-off-by: Serhii Tatarintsev <tatarintsev@prisma.io>
1 parent c1bd627 commit f399fd6

3 files changed

Lines changed: 26 additions & 13 deletions

File tree

projects/lsp-interpreter-diagnostics/plans/plan.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ interpret stage.
233233

234234
### Implement M5: Config-failure surfacing + last-good retention
235235

236-
**Status:** ► In progress — slice 06, branch `tml-2984-slice-06-config-failure`
236+
**Status:** ► In progress — slice 06 delivered (`353e5d4e7`, 4/4 SDoD), PR open; complete on merge
237237

238238
_Outcomes_
239239
A throwing `loadConfig`/`createControlStack` surfaces as a push diagnostic on the

projects/lsp-interpreter-diagnostics/slices/06-config-failure/spec.md

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,29 @@ either a diagnostic for a state we still destroy, or retention nobody can observ
4343

4444
## Slice Definition of Done (beyond CI / reviewer / project-DoD)
4545

46-
- [ ] SDoD1 (TC-13) — first-load failure: push diagnostic on the config-file URI at
47-
(0,0)–(0,1) with the error message; published even when the client supports
48-
pull diagnostics; exactly once per failed load with multiple awaiting
49-
documents; next successful load clears it (empty publish).
50-
- [ ] SDoD2 (TC-14) — reload failure with a previously loaded project: last-good
51-
project keeps serving (schema diagnostics — including interpreter findings —
52-
still returned on pull/push), config diagnostic alongside; a subsequent
53-
successful reload swaps in the new project and clears the config diagnostic.
54-
- [ ] SDoD3 — first-load failure keeps today's no-project behavior (documents
55-
unmanaged; existing regression pins hold); success path behavior-identical
56-
(existing server suite untouched and green).
57-
- [ ] SDoD4 — zero new casts; no new dependency edges.
46+
- [x] SDoD1 (TC-13) — push diagnostic on the config URI at (0,0)–(0,1)
47+
(`PRISMA_NEXT_CONFIG_LOAD_FAILED`, error message); exactly-once is structural
48+
(single shared load promise); published for pull-capable clients; cleared on
49+
next successful load. ✓ `353e5d4e7`
50+
- [x] SDoD2 (TC-14) — break→retain→fix cycle pinned: last-good serves full schema
51+
diagnostics incl. interpreter findings, config diagnostic alongside;
52+
successful reload swaps + clears. Reload-failure resolves with last-good
53+
(funnels untouched). ✓
54+
- [x] SDoD3 — first-load failure = today's behavior (217 existing tests untouched;
55+
1 test re-pinned by charter — it encoded the destroy-on-reload behavior this
56+
slice replaces; reviewer confirmed everything it legitimately protected
57+
survives in other pins). ✓
58+
- [x] SDoD4 — zero casts; no new edges; `lint:framework-vocabulary` at threshold. ✓
59+
60+
**Slice-close ritual (2026-07-14):** single dispatch SATISFIED R1, zero findings;
61+
4/4 SDoD PASS; clear-site relocated from the brief's letter (`stopManagingProject`
62+
whose only callers are the failure funnels) to the genuine stops-caring seam
63+
(`dropProjectWithoutManagedDocuments`), reviewer-blessed. Accepted residual for M6
64+
QA: after a failed *first* load with all schema docs closed, the marker persists
65+
until a doc reopens (lazy lifecycle by design) — QA script must exercise break→fix
66+
with and without open documents. Pre-existing superseded-failed-awaiter hazard
67+
recorded for backlog (blast radius narrowed by this slice). Manual QA: config
68+
break/fix cycle is in the M6 playground script by project DoD.
5869

5970
## Edge cases (pre-investigated)
6071

projects/lsp-interpreter-diagnostics/trace.jsonl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,5 @@
111111
{"event_id":"102ba70b-2815-45a9-a9ff-f608e63d6248","schema_version":"1","ts":"2026-07-14T16:14:10.156Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"dispatch-start","dispatch_id":"5969f7c0-14c6-4f68-8df6-2ed8453710a8","dispatch_name":"S6-D1 config-failure surfacing + last-good retention","subagent_type":"spawn_agent","model":null,"parent_dispatch_id":"af03de09-e8b6-4379-918c-581e95e0e241"}
112112
{"event_id":"c0c6ea09-f9f2-40f5-be24-918140380ad7","schema_version":"1","ts":"2026-07-14T16:14:11.263Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"round-start","dispatch_id":"5969f7c0-14c6-4f68-8df6-2ed8453710a8","round_id":"6057fa81-b057-4313-b10b-b4f5790392b7","round_number":1}
113113
{"event_id":"70a7fde7-8b4e-468b-aaa3-f22b53558065","schema_version":"1","ts":"2026-07-14T16:14:12.425Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"brief-issued","dispatch_id":"5969f7c0-14c6-4f68-8df6-2ed8453710a8","round_id":"6057fa81-b057-4313-b10b-b4f5790392b7","brief_byte_length":3910,"brief_content_hash":"6327b1c6383dfe8e11d0cd2d8f182c4c00a675eed8b0155e89e113a8f5eff765","brief_disposition":"initial"}
114+
{"event_id":"204d8a41-f963-44ff-a73a-177ca1a43f38","schema_version":"1","ts":"2026-07-14T16:44:14.378Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"round-end","dispatch_id":"5969f7c0-14c6-4f68-8df6-2ed8453710a8","round_id":"6057fa81-b057-4313-b10b-b4f5790392b7","verdict":"satisfied","findings_filed":0,"wall_clock_ms":4500000}
115+
{"event_id":"22388532-a5fe-4089-bb81-aeb0cf6f1e38","schema_version":"1","ts":"2026-07-14T16:44:14.851Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"dispatch-end","dispatch_id":"5969f7c0-14c6-4f68-8df6-2ed8453710a8","result":"completed","wall_clock_ms":4500000}

0 commit comments

Comments
 (0)