diff --git a/docs/active-work.md b/docs/active-work.md index 21ca140..1a68d85 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -279,7 +279,7 @@ from #171 and #215. **`72da24a`**, worktree `/home/jeans/Repos/personal/pmacs-probe-sigint`. Recover with `git fetch githubsucks && git checkout gpu-probe-sigint-teardown`. -- **No PR. Framing revision 7 at `docs/gpu-probe-sigint-framing.md`; +- **No PR. Framing revision 8 at `docs/gpu-probe-sigint-framing.md`; NO IMPLEMENTATION and no fix proposed** — the mechanism is not known yet, and the framing says so rather than guessing. Revisions 1, 2 and 3 were each rejected on findings, all upheld; run provenance lives in @@ -396,7 +396,9 @@ from #171 and #215. deterministically produce different outcomes, so the pair says nothing about determinism either. - **D0a is a decision procedure with no predicted outcome**, and one - run per endpoint decides nothing for a context-sensitive failure. + run per endpoint decides nothing. That the failure has appeared only + in the full sweep is **what has been observed so far**, not a + property established of the defect. **N = 5 full `sweep-crdt` runs per endpoint, interleaved A/B/A/B**, under the same captured conditions as D0b plus `uptime`, `free`, `/tmp` usage and leaked-daemon count. A bisect of @@ -408,7 +410,8 @@ from #171 and #215. separately cited a gate run the manifest never listed. - **D0 precedes every other diagnostic**, in two parts: **(a) reproduce the onset endpoints `7599661` and `724b785` clean, in - isolated target dirs** — not a bisect until they differ; **(b)** re-run + isolated target dirs**, under the N = 5 interleaved clean-split + contract below — a bare difference decides nothing; **(b)** re-run the matrix at `main` under a harness capturing provenance **and the artifact hashes executed at run time**, since command shape silently changed the binary once already and a hash computed later reflects diff --git a/docs/gpu-probe-sigint-framing.md b/docs/gpu-probe-sigint-framing.md index a057fc7..9b1fd47 100644 --- a/docs/gpu-probe-sigint-framing.md +++ b/docs/gpu-probe-sigint-framing.md @@ -1,6 +1,6 @@ # GPU launcher / probe SIGINT teardown — framing -Revision 7. Status: **awaiting approval. No implementation.** +Revision 8. Status: **awaiting approval. No implementation.** Revisions 1 and 2 were each rejected on five findings. Every correction is recorded in place rather than quietly rewritten, because three of @@ -20,6 +20,10 @@ them were claims this document itself had advanced: (manifest); ledgers still carried the falsified R9 conclusions (§11). **And a finding that reframes the lane: the failure has a datable onset (§4a) and is not long-standing.** +- r7 → r8: the superseded one-run D0 rule survived in three places + (§4a, §7, manifest, ledger); D0a still overstated its rates and left + the bisect's own classifier unspecified (§7); residual artifact + wording and four wrong suffix attributions (§4, manifest). - r6 → r7: the ancestry supports **no** causal statement at all — the observations are non-comparable, and even "outcome is not determined by commit alone" is withdrawn (§4a); D0a was not yet a valid decision @@ -158,8 +162,8 @@ Revision 4 went further and called them "byte-different"; that is **withdrawn**, because the bytes a historical run executed are not knowable now — target directories have been overwritten, and a hash computed today is the hash of the current occupant. The weaker claim is -sufficient: R9 establishes **same target names and order**, not same -binaries. +sufficient: R9 establishes **same target names and order**, not the +same compilations. What the evidence is **consistent with** is an interaction. It does not isolate one, because the rows differ in more than the two columns shown @@ -248,9 +252,11 @@ distinguishes: `724b785`. And an older ancestor outside the interval behaving badly is simply -**irrelevant** to whether `7599661..724b785` contains a regression: a -bisect over that interval needs only that the two clean endpoints -differ *now*. +**irrelevant** to whether `7599661..724b785` contains a regression — +that question is settled by the endpoints themselves, under the N = 5 +clean-split contract in §7 D0a. (Revision 6 wrote "needs only that the +two clean endpoints differ *now*", which is the superseded one-run +rule; a bare difference decides nothing.) **This still supersedes the reduction matrix as the lane's first move**, as endpoint reproduction — which is a decision procedure, not a @@ -314,13 +320,18 @@ group. (last observed green) and `724b785` (first observed red), each checked out clean, each in its own isolated target directory. This is a **decision procedure with no predicted outcome**. One run per - endpoint decides nothing — this failure is context-sensitive by - construction, appearing only in the full sweep — so the procedure is + endpoint decides nothing: **so far** the failure has been observed + only in the full sweep, which is a statement about what has been run, + not a property established of the defect. The procedure is therefore specified rather than left to judgement: - - **N = 5 full `sweep-crdt` runs per endpoint**, since the observed - failure rate in the reproducing configuration is 7/7 and the - passing configuration 13/13; anything less cannot separate a real - difference from the intermittency that has not yet been excluded. + - **N = 5 full `sweep-crdt` runs per endpoint.** Five is a + **predefined evidentiary threshold, chosen in advance so the + outcome cannot be argued after the fact** — it does not + "mathematically separate" anything. The historical 7/7 red and + 13/13 green are **not endpoint-specific rates** and must not be + read as such: of the seven reds only F6 ran at `724b785`, and of + the greens only the last ran at `7599661`, both with **unknown + cleanliness**. - **Interleaved**, alternating endpoints A/B/A/B…, so any drift in machine state across the session hits both arms equally instead of landing entirely on whichever ran second. @@ -333,6 +344,12 @@ group. endpoint red and all N of the other green. A mixed result means the failure is intermittent under fixed source, and **no bisect is justified at all** — that outcome sends the lane back to D1/D2. + - **The bisect itself uses the same classifier.** Every intermediate + commit is classified by the identical N = 5 protocol under the same + captured conditions; a commit that classifies mixed **aborts the + bisect** rather than being guessed, skipped, or rerun until it + agrees. A bisect whose steps are cheaper than its endpoints would + inherit exactly the weakness this contract exists to remove. - **D0b — re-run the §4 matrix with captured provenance**, at `main`, recording the artifact hashes actually executed **at run time**. Revision 2's strongest claim collapsed because command shape silently diff --git a/docs/probe-sigint-evidence.md b/docs/probe-sigint-evidence.md index d8620a6..0bfc2fb 100644 --- a/docs/probe-sigint-evidence.md +++ b/docs/probe-sigint-evidence.md @@ -76,16 +76,16 @@ All in worktree `pmacs-mapping-gen` unless stated. `WT=mg` is `CARGO_TARGET_DIR=/home/jeans/build/pmacs-gate-targets/pmacs-mapping-gen-8cb089c8` except `WT=main`, which uses `…/pmacs-fdccc423`. -| id | exact command (after `cargo`) | WT | HEAD | clean | artifacts | result | log (sha256/16, bytes) | +| id | exact command (after `cargo`) | WT | HEAD | clean | Cargo suffixes executed | result | log (sha256/16, bytes) | |---|---|---|---|---|---|---|---| -| R1 | `test --features crdt --test gpu_invocation_acceptance ctrl_c_on_launcher_group` ×3 | mg | ~`724b785`–`5174f73` | UNKNOWN | reduction | green, 0.15–0.17 s | **none preserved** | -| R2 | `test --features crdt --test gpu_invocation_acceptance` | mg | ~`724b785`–`5174f73` | UNKNOWN | reduction | green, 15 passed | **none preserved** | -| R3 | `test --workspace --features crdt --no-fail-fast -- --skip basedpyright ctrl_c_on_launcher_group` | mg | ~`724b785`–`5174f73` | UNKNOWN | workspace | green | `e09a96512035284e` 33113 | -| R4 | `test --features crdt --lib --test gpu_invocation_acceptance --no-fail-fast` | mg | ~`724b785`–`5174f73` | UNKNOWN | reduction | green, 2145 + 15 | `89050c702de22d57` 158812 | -| R5 | `test --features crdt --no-fail-fast --test gate_script_acceptance --test gpu_invocation_acceptance` | mg | ~`5174f73`–`b72843a` | UNKNOWN | reduction | green | `31b3e5249b475479` 3706 | -| R6 | `test --features crdt --no-fail-fast --test gpu_font_acceptance --test gpu_initial_target_acceptance --test gpu_invocation_acceptance` | mg | ~`5174f73`–`b72843a` | UNKNOWN | reduction | green, 11+15+15 | `332693a39c73731a` 4569 | +| R1 | `test --features crdt --test gpu_invocation_acceptance ctrl_c_on_launcher_group` ×3 | mg | ~`724b785`–`5174f73` | UNKNOWN | **UNKNOWN** (no log) | green, 0.15–0.17 s | **none preserved** | +| R2 | `test --features crdt --test gpu_invocation_acceptance` | mg | ~`724b785`–`5174f73` | UNKNOWN | **UNKNOWN** (no log) | green, 15 passed | **none preserved** | +| R3 | `test --workspace --features crdt --no-fail-fast -- --skip basedpyright ctrl_c_on_launcher_group` | mg | ~`724b785`–`5174f73` | UNKNOWN | `-5d9105cb` / `-d4dae4f0` | green | `e09a96512035284e` 33113 | +| R4 | `test --features crdt --lib --test gpu_invocation_acceptance --no-fail-fast` | mg | ~`724b785`–`5174f73` | UNKNOWN | `-6b4b8223` only | green, 2145 + 15 | `89050c702de22d57` 158812 | +| R5 | `test --features crdt --no-fail-fast --test gate_script_acceptance --test gpu_invocation_acceptance` | mg | ~`5174f73`–`b72843a` | UNKNOWN | `-6b4b8223` only | green | `31b3e5249b475479` 3706 | +| R6 | `test --features crdt --no-fail-fast --test gpu_font_acceptance --test gpu_initial_target_acceptance --test gpu_invocation_acceptance` | mg | ~`5174f73`–`b72843a` | UNKNOWN | `-91f51d0b` / `-6b4b8223` | green, 11+15+15 | `332693a39c73731a` 4569 | | R7 | `test --features crdt --no-fail-fast --lib --bins --test acceptance --test ambient_isolation_acceptance --test auto_indent_acceptance --test auto_indent_crdt_acceptance --test auto_pair_acceptance --test auto_pair_crdt_acceptance --test autosave_acceptance --test bottom_panel_stage1_acceptance --test bottom_panel_stage2a_acceptance --test bottom_panel_stage2b_daemon_acceptance --test bottom_panel_stage2b_gpu_acceptance --test bottom_panel_stage2b_protocol_acceptance --test comment_toggle_acceptance --test compile_mode_acceptance --test gpu_invocation_acceptance` | mg | ~`b72843a` | UNKNOWN | `gpu_invocation…-6b4b8223` **only** — R7 does not select `gpu_initial_target` | green | `9e1ebc59ed9f0dd4` 187531 | -| R8 | `test --features crdt --no-fail-fast --test compile_mode_crdt_acceptance --test completion_popup_acceptance --test config_registry_acceptance --test cua_region_acceptance --test desktop_acceptance --test destination_capture_acceptance --test dired_acceptance --test discovery_acceptance --test discovery_stage2_acceptance --test editops_acceptance --test find_file_acceptance --test folding_acceptance --test folding_stage2_acceptance --test full_grid_resync_acceptance --test gate_script_acceptance --test git_status_stage1_acceptance --test gpu_font_acceptance --test gpu_initial_target_acceptance --test gpu_invocation_acceptance` | mg | ~`b72843a` | UNKNOWN | `-91f51d0b` (`half2.log:1`) / `-6b4b8223` | green | `8b26ebfcf5f871b4` 28677 | +| R8 | `test --features crdt --no-fail-fast --test compile_mode_crdt_acceptance --test completion_popup_acceptance --test config_registry_acceptance --test cua_region_acceptance --test desktop_acceptance --test destination_capture_acceptance --test dired_acceptance --test discovery_acceptance --test discovery_stage2_acceptance --test editops_acceptance --test find_file_acceptance --test folding_acceptance --test folding_stage2_acceptance --test full_grid_resync_acceptance --test gate_script_acceptance --test git_status_stage1_acceptance --test gpu_font_acceptance --test gpu_initial_target_acceptance --test gpu_invocation_acceptance` | mg | ~`b72843a` | UNKNOWN | `-91f51d0b` / `-6b4b8223` (`half2.log:438`, `:459`) | green | `8b26ebfcf5f871b4` 28677 | | R9 | `test --features crdt --no-fail-fast --lib --bins --test acceptance --test ambient_isolation_acceptance --test auto_indent_acceptance --test auto_indent_crdt_acceptance --test auto_pair_acceptance --test auto_pair_crdt_acceptance --test autosave_acceptance --test bottom_panel_stage1_acceptance --test bottom_panel_stage2a_acceptance --test bottom_panel_stage2b_daemon_acceptance --test bottom_panel_stage2b_gpu_acceptance --test bottom_panel_stage2b_protocol_acceptance --test comment_toggle_acceptance --test compile_mode_acceptance --test compile_mode_crdt_acceptance --test completion_popup_acceptance --test config_registry_acceptance --test cua_region_acceptance --test desktop_acceptance --test destination_capture_acceptance --test dired_acceptance --test discovery_acceptance --test discovery_stage2_acceptance --test editops_acceptance --test find_file_acceptance --test folding_acceptance --test folding_stage2_acceptance --test full_grid_resync_acceptance --test gate_script_acceptance --test git_status_stage1_acceptance --test gpu_font_acceptance --test gpu_initial_target_acceptance --test gpu_invocation_acceptance` | mg | ~`b72843a` | UNKNOWN | **`-91f51d0b` / `-6b4b8223`** (log `:3066`, `:3087`) | green | `b31d98ee2f427eca` 214566 | | R10 | `test --workspace --features crdt --no-fail-fast --test gpu_initial_target_acceptance --test gpu_invocation_acceptance -- --skip basedpyright` | mg | ~`b72843a` | UNKNOWN | **`-5d9105cb` AND `-d4dae4f0`** (log `:3`, `:24`) | green | `81b48fd7a0e261dc` 3553 | | F1 | `build --workspace --no-default-features --features luajit,crdt && test --workspace --features crdt --no-fail-fast -- --skip basedpyright` | **main** | `72da24a` | clean (verified `git status --porcelain` empty) | `-5d9105cb` / `-d4dae4f0`; today's occupants `e0578039…` / `00f06aeb…` | **red** | `10b55b8ba8741125` 334446 | @@ -174,9 +174,11 @@ log digest. Two constraints learned the hard way: - **first, reproduce the two candidate endpoints CLEANLY** — `7599661` (last observed green) and `724b785` (first observed red) — each checked out clean, each in its **own isolated target - directory**. A decision procedure with **no predicted outcome**: - endpoints differ → a regression lives in `7599661..724b785` and a - bisect over that interval is justified; endpoints agree → the + directory**. A decision procedure with **no predicted outcome**, and + **not decided by one run per endpoint** — see the N = 5 clean-split + contract in the framing's §7 D0a, which governs. In summary: a clean + split (all 5 red one side, all 5 green the other) permits a bisect of + `7599661..724b785`; **any mixed classification forbids it**; the difference is not captured by those two commits under current conditions, and the question becomes what else changed across the window.