docs(framing): revision 8 --- the superseded one-run rule was still in force
Four findings on revision 7, all upheld.
1. The old one-run D0 rule survived in three durable places --- the
manifest, this branch's ledger, and the framing's own §4a --- each
still permitting a bisect when the endpoints merely "differ". That
contradicts the N = 5 clean-split contract added in revision 7. All
three now defer to that contract, and §4a's "needs only that the two
clean endpoints differ now" is marked as the superseded rule it is.
2. D0a still overstated its evidence, in three ways now fixed:
- "context-sensitive by construction, appearing only in the full
sweep" is downgraded to what has been OBSERVED so far;
- the historical 7/7 and 13/13 are stated as NOT endpoint-specific
rates --- of seven reds only F6 ran at 724b785, of the greens only
the last at 7599661, both with unknown cleanliness;
- five runs are named a PREDEFINED EVIDENTIARY THRESHOLD chosen so
the outcome cannot be argued after the fact, not something that
mathematically separates intermittency.
And the bisect now specifies its own classifier: every intermediate
commit uses the identical N = 5 protocol, and a mixed classification
ABORTS the bisect rather than being guessed, skipped, or rerun until
it agrees. A bisect with cheaper steps than its endpoints would
inherit the weakness the contract exists to remove.
3. The artifacts column is now exact per run, read from each log:
R1/R2 UNKNOWN (no log preserved), R3 -5d9105cb/-d4dae4f0, R4 and R5
-6b4b8223 only, R6 -91f51d0b/-6b4b8223. R8's citation was half2.log:1;
the executable lines are 438 and 459. The framing's last "not same
binaries" is now "not the same compilations".
4. (Held ledger, 5274d6b.) It named a stale ledger tip and two different
framing revisions on consecutive lines.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
parent
7110256956
commit
4e84ff0050
|
|
@ -279,7 +279,7 @@ from #171 and #215.
|
||||||
**`72da24a`**, worktree
|
**`72da24a`**, worktree
|
||||||
`/home/jeans/Repos/personal/pmacs-probe-sigint`. Recover with
|
`/home/jeans/Repos/personal/pmacs-probe-sigint`. Recover with
|
||||||
`git fetch githubsucks && git checkout gpu-probe-sigint-teardown`.
|
`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
|
NO IMPLEMENTATION and no fix proposed** — the mechanism is not known
|
||||||
yet, and the framing says so rather than guessing. Revisions 1, 2 and
|
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
|
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
|
deterministically produce different outcomes, so the pair says
|
||||||
nothing about determinism either.
|
nothing about determinism either.
|
||||||
- **D0a is a decision procedure with no predicted outcome**, and one
|
- **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**,
|
**N = 5 full `sweep-crdt` runs per endpoint, interleaved A/B/A/B**,
|
||||||
under the same captured conditions as D0b plus `uptime`, `free`,
|
under the same captured conditions as D0b plus `uptime`, `free`,
|
||||||
`/tmp` usage and leaked-daemon count. A bisect of
|
`/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.
|
separately cited a gate run the manifest never listed.
|
||||||
- **D0 precedes every other diagnostic**, in two parts: **(a)
|
- **D0 precedes every other diagnostic**, in two parts: **(a)
|
||||||
reproduce the onset endpoints `7599661` and `724b785` clean, in
|
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
|
the matrix at `main` under a harness capturing provenance **and the
|
||||||
artifact hashes executed at run time**, since command shape silently
|
artifact hashes executed at run time**, since command shape silently
|
||||||
changed the binary once already and a hash computed later reflects
|
changed the binary once already and a hash computed later reflects
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# GPU launcher / probe SIGINT teardown — framing
|
# 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
|
Revisions 1 and 2 were each rejected on five findings. Every correction
|
||||||
is recorded in place rather than quietly rewritten, because three of
|
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).
|
(manifest); ledgers still carried the falsified R9 conclusions (§11).
|
||||||
**And a finding that reframes the lane: the failure has a datable
|
**And a finding that reframes the lane: the failure has a datable
|
||||||
onset (§4a) and is not long-standing.**
|
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
|
- r6 → r7: the ancestry supports **no** causal statement at all — the
|
||||||
observations are non-comparable, and even "outcome is not determined
|
observations are non-comparable, and even "outcome is not determined
|
||||||
by commit alone" is withdrawn (§4a); D0a was not yet a valid decision
|
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
|
**withdrawn**, because the bytes a historical run executed are not
|
||||||
knowable now — target directories have been overwritten, and a hash
|
knowable now — target directories have been overwritten, and a hash
|
||||||
computed today is the hash of the current occupant. The weaker claim is
|
computed today is the hash of the current occupant. The weaker claim is
|
||||||
sufficient: R9 establishes **same target names and order**, not same
|
sufficient: R9 establishes **same target names and order**, not the
|
||||||
binaries.
|
same compilations.
|
||||||
|
|
||||||
What the evidence is **consistent with** is an interaction. It does not
|
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
|
isolate one, because the rows differ in more than the two columns shown
|
||||||
|
|
@ -248,9 +252,11 @@ distinguishes:
|
||||||
`724b785`.
|
`724b785`.
|
||||||
|
|
||||||
And an older ancestor outside the interval behaving badly is simply
|
And an older ancestor outside the interval behaving badly is simply
|
||||||
**irrelevant** to whether `7599661..724b785` contains a regression: a
|
**irrelevant** to whether `7599661..724b785` contains a regression —
|
||||||
bisect over that interval needs only that the two clean endpoints
|
that question is settled by the endpoints themselves, under the N = 5
|
||||||
differ *now*.
|
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
|
**This still supersedes the reduction matrix as the lane's first
|
||||||
move**, as endpoint reproduction — which is a decision procedure, not a
|
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
|
(last observed green) and `724b785` (first observed red), each
|
||||||
checked out clean, each in its own isolated target directory. This is
|
checked out clean, each in its own isolated target directory. This is
|
||||||
a **decision procedure with no predicted outcome**. One run per
|
a **decision procedure with no predicted outcome**. One run per
|
||||||
endpoint decides nothing — this failure is context-sensitive by
|
endpoint decides nothing: **so far** the failure has been observed
|
||||||
construction, appearing only in the full sweep — so the procedure is
|
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:
|
specified rather than left to judgement:
|
||||||
- **N = 5 full `sweep-crdt` runs per endpoint**, since the observed
|
- **N = 5 full `sweep-crdt` runs per endpoint.** Five is a
|
||||||
failure rate in the reproducing configuration is 7/7 and the
|
**predefined evidentiary threshold, chosen in advance so the
|
||||||
passing configuration 13/13; anything less cannot separate a real
|
outcome cannot be argued after the fact** — it does not
|
||||||
difference from the intermittency that has not yet been excluded.
|
"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
|
- **Interleaved**, alternating endpoints A/B/A/B…, so any drift in
|
||||||
machine state across the session hits both arms equally instead of
|
machine state across the session hits both arms equally instead of
|
||||||
landing entirely on whichever ran second.
|
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
|
endpoint red and all N of the other green. A mixed result means the
|
||||||
failure is intermittent under fixed source, and **no bisect is
|
failure is intermittent under fixed source, and **no bisect is
|
||||||
justified at all** — that outcome sends the lane back to D1/D2.
|
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`,
|
- **D0b — re-run the §4 matrix with captured provenance**, at `main`,
|
||||||
recording the artifact hashes actually executed **at run time**.
|
recording the artifact hashes actually executed **at run time**.
|
||||||
Revision 2's strongest claim collapsed because command shape silently
|
Revision 2's strongest claim collapsed because command shape silently
|
||||||
|
|
|
||||||
|
|
@ -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`
|
`CARGO_TARGET_DIR=/home/jeans/build/pmacs-gate-targets/pmacs-mapping-gen-8cb089c8`
|
||||||
except `WT=main`, which uses `…/pmacs-fdccc423`.
|
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** |
|
| 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 | reduction | green, 15 passed | **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 | workspace | green | `e09a96512035284e` 33113 |
|
| 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 | reduction | green, 2145 + 15 | `89050c702de22d57` 158812 |
|
| 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 | reduction | green | `31b3e5249b475479` 3706 |
|
| 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 | reduction | green, 11+15+15 | `332693a39c73731a` 4569 |
|
| 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 |
|
| 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 |
|
| 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 |
|
| 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 |
|
| 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** —
|
- **first, reproduce the two candidate endpoints CLEANLY** —
|
||||||
`7599661` (last observed green) and `724b785` (first observed red) —
|
`7599661` (last observed green) and `724b785` (first observed red) —
|
||||||
each checked out clean, each in its **own isolated target
|
each checked out clean, each in its **own isolated target
|
||||||
directory**. A decision procedure with **no predicted outcome**:
|
directory**. A decision procedure with **no predicted outcome**, and
|
||||||
endpoints differ → a regression lives in `7599661..724b785` and a
|
**not decided by one run per endpoint** — see the N = 5 clean-split
|
||||||
bisect over that interval is justified; endpoints agree → the
|
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
|
difference is not captured by those two commits under current
|
||||||
conditions, and the question becomes what else changed across the
|
conditions, and the question becomes what else changed across the
|
||||||
window.
|
window.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue