diff --git a/docs/active-work.md b/docs/active-work.md index be840a0..992fe93 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -270,7 +270,7 @@ hazard in a shape that looks committed. **A documented error message that never appears is worse than no documentation**, because the reader waits for a signal that is not coming. -## GPU launcher / probe SIGINT teardown — FRAMING APPROVED, diagnostics not started +## GPU launcher / probe SIGINT teardown — D0a DONE, mechanism unknown **Written with the branch's FIRST commit**, per the standing correction from #171 and #215. @@ -285,6 +285,19 @@ from #171 and #215. rather than guessing. Revisions 1, 2 and 3 were each rejected on findings, all upheld; run provenance lives in `docs/probe-sigint-evidence.md`. +- **D0a EXECUTED 2026-08-19 — verdict: difference NOT captured by the + two commits.** 10 runs, counterbalanced, N=5 per endpoint, clean + detached worktrees with isolated target dirs, `dirty=0` per run, zero + voids, zero splits. **A (`7599661`) uniform-red; B (`724b785`) + uniform-red.** So `7599661`, which passed inside `sweep-crdt` on + 08-15, fails 5/5 clean today: **the source hypothesis is eliminated + and no bisect will run.** The onset window is demoted to a true but + unreachable-by-source observation. No package activity in the window + (`pacman.log`), which is a cheap negative and not pursued further. +- **The useful product is a RELIABLE REPRODUCTION** — 10/10 across two + commits at ~4 min/run. D1/D2 no longer wait on a rare event and are + the next step. Per-run provenance in `docs/probe-sigint-evidence.md` + §D0a and `/home/jeans/build/pmacs-gate-targets/d0a/results.tsv`. - **Why it exists.** `ctrl_c_on_launcher_group_does_not_reach_spawned_daemon` fails in gate stage `sweep-crdt` with "child did not exit within 5s". **Pre-existing on `main`** — `72da24a` fails it in a clean worktree diff --git a/docs/gpu-probe-sigint-framing.md b/docs/gpu-probe-sigint-framing.md index 7b17bdf..f662d34 100644 --- a/docs/gpu-probe-sigint-framing.md +++ b/docs/gpu-probe-sigint-framing.md @@ -1,6 +1,8 @@ # GPU launcher / probe SIGINT teardown — framing -Revision 9. Status: **approved 2026-08-19 at `15c25ec`. No implementation.** +Revision 9, approved 2026-08-19 at `15c25ec`. +Status: **D0a EXECUTED — see §4b. No fix implemented; mechanism still +unknown.** Revisions 1 and 2 were each rejected on five findings. Every correction is recorded in place rather than quietly rewritten, because three of @@ -267,6 +269,32 @@ rule; a bare difference decides nothing.) move**, as endpoint reproduction — which is a decision procedure, not a prediction. +## 4b. D0a result — the source hypothesis is eliminated + +Executed 2026-08-19 under the approved contract: 10 runs, +counterbalanced `A B B A A B B A A B`, N = 5 per endpoint, clean +detached worktrees, isolated target directories, `dirty=0` verified per +run. **Zero voids, zero splits.** + +**A (`7599661`) uniform-red. B (`724b785`) uniform-red.** By the +endpoint table this is *both endpoints uniform the same way*: the +difference is **not captured by those two commits**. + +- **No bisect of `7599661..724b785` is justified, and none will run.** + `7599661` passed inside `sweep-crdt` on 08-15 and fails 5/5 clean + today, so the interval cannot contain the transition. +- **The onset window is demoted.** Still a true observation, but not + reachable by source. +- **A reliable reproduction now exists** — 10/10 today across two + commits, ~4 minutes per run. This is D0a's most useful product: + **D1/D2 no longer wait on a rare event.** +- One cheap negative on "what else changed": **no package activity in + the window** (`/var/log/pacman.log`, 08-15 19:57 → 08-16 06:33; + nearest 08-18). Not pursued further — with a reproduction in hand, + direct measurement dominates archaeology. + +Per-run provenance: `docs/probe-sigint-evidence.md` §D0a. + ## 5. Two retracted claims, both mine, kept as warnings **Claim A — "mechanism located".** Reported the launcher blocked in diff --git a/docs/probe-sigint-evidence.md b/docs/probe-sigint-evidence.md index 36bb55c..efee208 100644 --- a/docs/probe-sigint-evidence.md +++ b/docs/probe-sigint-evidence.md @@ -157,6 +157,69 @@ source/environment interaction, or a fix before `7599661` followed by a regression before `724b785`. And an ancestor outside the interval is irrelevant to whether the interval contains a regression. +## D0a — EXECUTED 2026-08-19. Verdict: difference NOT captured + +Ten runs, counterbalanced `A B B A A B B A A B`, N = 5 per endpoint, +**zero voids, zero splits**. Endpoints checked out detached and clean +in dedicated worktrees (`pmacs-d0a-A`, `pmacs-d0a-B`), each with its own +target directory, each run performing the gate's `build-crdt` +precondition then the `sweep-crdt` command. `dirty=0` verified per run. + +| run | endpoint | HEAD | class | ctrl_c ok/failed | red bins | log | +|---|---|---|---|---|---|---| +| A#1 | A | `7599661` | **red** | 0 / 2 | 3 | `d0a/A-1.log` | +| B#1 | B | `724b785` | **red** | 0 / 2 | 2 | `d0a/B-1.log` | +| B#2 | B | `724b785` | **red** | 0 / 2 | 2 | `d0a/B-2.log` | +| A#2 | A | `7599661` | **red** | 0 / 2 | 4 | `d0a/A-2.log` | +| A#3 | A | `7599661` | **red** | 0 / 2 | 3 | `d0a/A-3.log` | +| B#3 | B | `724b785` | **red** | 0 / 2 | 2 | `d0a/B-3.log` | +| B#4 | B | `724b785` | **red** | 0 / 2 | 2 | `d0a/B-4.log` | +| A#4 | A | `7599661` | **red** | 0 / 2 | 3 | `d0a/A-4.log` | +| A#5 | A | `7599661` | **red** | 0 / 2 | 3 | `d0a/A-5.log` | +| B#5 | B | `724b785` | **red** | 0 / 2 | 2 | `d0a/B-5.log` | + +Full per-run provenance — timestamp, HEAD, dirty count, exit, both copy +results, unrelated red-bin count, Cargo suffixes, `uptime`, `free`, +`/tmp` usage, leaked-daemon count, log digest — is in +`/home/jeans/build/pmacs-gate-targets/d0a/results.tsv`. + +**Endpoint verdicts: A uniform-red, B uniform-red.** By the approved +table this is the *both endpoints uniform the same way* row: + +> **the difference is not captured by those two commits** under current +> conditions, and the question becomes what else changed across the +> window. + +### What this settles + +- **The source hypothesis is eliminated for this interval.** `7599661` + passed inside `sweep-crdt` on 08-15 and now fails **5/5** clean. No + bisect of `7599661..724b785` is justified, and none will be run. +- **The onset window is demoted as a lead.** It remains a true + observation, but since neither endpoint reproduces the old green, the + window cannot be probed by source at all. +- **A reliable reproduction now exists.** 10/10 today, on two different + commits, at ~4 minutes per run. **This is the most useful thing D0a + produced**: the mechanism diagnostics D1/D2 no longer depend on a + rare event, and can proceed immediately. +- **A's three extra failures are recorded, not swept up**: + `a54_real_daemon_real_pty_and_headless_gpu_render_one_panel_hosted_terminal`, + `one_daemon_serves_a_v21_panel_session_and_a_shipped_v20_client`, and + `m6_1_pty_mode_lifecycle_started_then_exited`. The v21/v20 row is + expected to differ at that older commit; the other two are + process/PTY-spawn rows, the same family as the target. They do not + affect classification, which reads only the two target copies. + +### What it does not settle + +Nothing about the mechanism. "What else changed across the window" has +one cheap negative result so far: **no package activity in the window** +(`/var/log/pacman.log` shows nothing between 08-15 19:57 and 08-16 +06:33; nearest is 08-18). The `1.88` rust toolchain directory has mtime +08-15 22:39, inside the window, but the gate builds with `1.95.0`. +Neither is pursued further, because with a reliable reproduction in +hand **direct measurement (D1/D2) dominates archaeology**. + ## D0 — re-run the matrix with captured provenance Before any §4 row is relied on for a conclusion, re-run the reductions