Skip to content

Commit c1987f9

Browse files
committed
TML-2984: S6-D3 brief + trace (operator simplification: fire-and-forget clears)
Signed-off-by: Serhii Tatarintsev <tatarintsev@prisma.io>
1 parent b8fa14b commit c1987f9

3 files changed

Lines changed: 56 additions & 2 deletions

File tree

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Brief: S6-D3 — drop the configFailed bits; unconditional clears (operator design)
2+
3+
## Task
4+
5+
Operator-settled simplification on PR #974 (`language-server/src/server.ts` + tests):
6+
7+
1. **`ManagedProject` sheds the publish-tracking bits**: `loading { load, lastGood }`
8+
| `loaded { project }` | `failed {}`. The `configFailed` fields on `loading` and
9+
`loaded` are deleted.
10+
2. **Clears become unconditional, fire-and-forget**: every current-load success
11+
publishes `[]` on the config URI (no owed-check); every settled-entry drop in
12+
`dropProjectWithoutManagedDocuments` does likewise; the current-but-no-docs
13+
failure branch keeps its delete + clear. Rationale (record in a short comment
14+
where the success-path clear happens): LSP clients keep per-server diagnostic
15+
collections — an empty publish neither touches other servers' diagnostics nor
16+
costs more than one notification.
17+
3. **`failed` status stays exactly as S6-D2 built it** — absence-for-resolution,
18+
marker-record, watched-refresh radar (the no-open-docs heal must survive; it
19+
lives in the status, not the bits).
20+
4. **Test reshapes (sanctioned):** the superseded-silence pin re-pins from "zero
21+
publishes on the config URI" to "zero *failure* (non-empty) publishes" — empty
22+
clears are now routine; any other pin that counted publishes adjusts the same
23+
way. All other S6 behavioral pins (marker appears, retention serves, fix clears,
24+
no-docs heal, no-resurrection, funnels gated) must pass unchanged in meaning.
25+
26+
## Scope
27+
28+
**In:** `server.ts` + `test/server.test.ts`. **Out:** everything else; no GitHub
29+
replies.
30+
31+
## Completed when
32+
33+
- [ ] Bits gone; union is three plain states; clears unconditional; `failed`
34+
behavior byte-identical to S6-D2.
35+
- [ ] Superseded pin re-pinned (failure-publishes only); all other pins green
36+
unchanged.
37+
- [ ] Gates: `pnpm --filter @prisma-next/language-server test` + typecheck + lint,
38+
`pnpm typecheck`, `pnpm lint:framework-vocabulary`, `pnpm lint:deps`.
39+
Zero casts.
40+
41+
## Operational metadata
42+
43+
- **Time-box:** 45 min. Halt: any pin beyond the publish-counting ones must weaken
44+
(surface — the operator sanctioned only the counting reshape).

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,13 @@ project-load lifecycle):
3131
shown. (rust-analyzer `switch_workspaces` precedent: "it only makes sense to
3232
switch to a partially broken workspace if we don't have any workspace at all
3333
yet.")
34-
3. **The success path is untouched** — a healthy config never executes new code
35-
beyond the clear-if-previously-failed check.
34+
3. **The success path adds only an unconditional clear** — every current-load
35+
success (and every settled-entry drop) publishes `[]` on the config URI,
36+
fire-and-forget. _(Amended by operator, 2026-07-15: publish-tracking bits
37+
(`configFailed`) removed — LSP clients keep per-server diagnostic collections,
38+
so empty publishes are harmless; the `failed` status alone carries the
39+
no-servable-project state and keeps broken configs on the watched-refresh
40+
radar.)_
3641

3742
## Coherence rationale
3843

projects/lsp-interpreter-diagnostics/trace.jsonl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,8 @@
118118
{"event_id":"518a5465-1c14-480e-ba98-425cee46d23e","schema_version":"1","ts":"2026-07-15T13:58:51.842Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"brief-issued","dispatch_id":"759a7e89-3ca6-4eed-9cfa-ee6aa14c36f5","round_id":"248f7267-ceb2-41b7-a1b1-6914f973a1ca","brief_byte_length":4198,"brief_content_hash":"b3f32614e3db7925e3c907665f7c21bfb77eae3d9d1841d1a2fbcdd5f39b8a98","brief_disposition":"initial"}
119119
{"event_id":"220469b5-da1f-4d46-b437-9c98f9f588fd","schema_version":"1","ts":"2026-07-15T14:22:38.743Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"round-end","dispatch_id":"759a7e89-3ca6-4eed-9cfa-ee6aa14c36f5","round_id":"248f7267-ceb2-41b7-a1b1-6914f973a1ca","verdict":"satisfied","findings_filed":0,"wall_clock_ms":4200000}
120120
{"event_id":"9761350f-cdab-4f1f-96b3-8b559983e7fc","schema_version":"1","ts":"2026-07-15T14:22:39.203Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"dispatch-end","dispatch_id":"759a7e89-3ca6-4eed-9cfa-ee6aa14c36f5","result":"completed","wall_clock_ms":4200000}
121+
{"event_id":"c8954574-5fb3-428c-afec-5a61af9bc934","schema_version":"1","ts":"2026-07-15T15:11:30.556Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"dispatch-start","dispatch_id":"28d1899a-9aa7-4239-a200-430678d40628","dispatch_name":"S6-D3 drop configFailed bits; unconditional clears","subagent_type":"spawn_agent","model":null,"parent_dispatch_id":"759a7e89-3ca6-4eed-9cfa-ee6aa14c36f5"}
122+
{"event_id":"531f1e64-0bfb-4bf1-8673-73acf7b97154","schema_version":"1","ts":"2026-07-15T15:11:31.010Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"round-start","dispatch_id":"28d1899a-9aa7-4239-a200-430678d40628","round_id":"e0a921ef-f577-4218-aa80-bcf5bb84a05b","round_number":1}
123+
{"event_id":"73a9e9e0-5c59-4a82-acc8-ce069fbcc3ac","schema_version":"1","ts":"2026-07-15T15:11:42.279Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"brief-issued","dispatch_id":"28d1899a-9aa7-4239-a200-430678d40628","round_id":"e0a921ef-f577-4218-aa80-bcf5bb84a05b","brief_byte_length":2199,"brief_content_hash":"00b993d386ce3f650ef64def30233054d85de2b223ca0e74d25db63cf736245e","brief_disposition":"initial"}
124+
{"event_id":"198499da-07dc-40de-ab7d-2a8e679339b3","schema_version":"1","ts":"2026-07-15T15:22:30.718Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"round-end","dispatch_id":"28d1899a-9aa7-4239-a200-430678d40628","round_id":"e0a921ef-f577-4218-aa80-bcf5bb84a05b","verdict":"satisfied","findings_filed":0,"wall_clock_ms":2400000}
125+
{"event_id":"5963d155-e6da-4d62-af8c-2234c36a8767","schema_version":"1","ts":"2026-07-15T15:22:31.162Z","project_run_id":"lsp-interpreter-diagnostics","orchestrator_agent_id":null,"event_type":"dispatch-end","dispatch_id":"28d1899a-9aa7-4239-a200-430678d40628","result":"completed","wall_clock_ms":2400000}

0 commit comments

Comments
 (0)