docs(framing): Stage 1 revision 18 --- residuals that outlive the buffer, and two overclaims narrowed
Answers review of revision 17. Still framing only; no code.
**IDENTITY HAS A SECOND HALF, AND R2/R3 CANNOT REACH IT.** A panel or
terminal residual is keyed to a surface that GOES AWAY, so replacement
is naturally observable. The document's and the minimap's do not work
that way: they live in the long-lived GPU `State` and OUTLIVE the
buffer. Their reset is a manual list --- buffer replacement
(`pmacs-gpu/src/main.rs:5922` onward) zeroes `scroll_top`,
`code_scroll_residual` and `code_scroll_left` one explicit line at a
time, each with its own comment. A new wheel residual will not reset
itself, and nothing fails if it is forgotten except a user's next
document scrolling from someone else's offset.
R4 document A -> document B, covering the document residual AND the
chrome residual it shares; successor starts from zero.
Mutation: omit the document residual from the replacement reset.
R5 minimap across A -> B; its residual is independent (B6) so it
needs its own reset and its own leg.
Mutation: omit the minimap residual from the replacement reset.
The mutations are deliberately separate --- one reset omitted at a time
--- because a single "forgot to reset" mutation would bite both legs
and prove neither field individually covered. `code_scroll_left` had
precisely this defect once, which is why it now carries a comment
explaining that a switch would otherwise inherit the previous
document's leftward viewport.
**AND TWO OVERCLAIMS IN THE SIGNATURE ROWS.** I wrote that both steps
ran "the same executable". They ran the same TARGET but different
ARTIFACTS: `pmacs-9d4963151c6f3151` at 211,777,472 bytes and
`pmacs-7624ed4bed0b6617` at 214,462,056, and `cmp` reports differing
bytes. What is supported is the same libtest target, its 1,940-test
population, and default intra-binary threading --- which is all the
concurrency conclusion ever needed, so that conclusion is unchanged.
"Cargo runs test binaries sequentially" was also stated as a universal.
It is narrowed to what was observed: under cargo 1.95.0, this sweep ran
its 119 binaries sequentially. The rows no longer generalize to cargo
versions or invocations they did not measure.
Gates: all nine green under `env -u TMPDIR`, log 20260814T110707Z.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
parent
836f417313
commit
fff1779677
|
|
@ -1,7 +1,27 @@
|
||||||
# GUI arc, Stage 1 — input foundation (framing)
|
# GUI arc, Stage 1 — input foundation (framing)
|
||||||
|
|
||||||
**Status: revision 17 — AWAITING APPROVAL.** Revision 17 answers review
|
**Status: revision 18 — AWAITING APPROVAL.** Revision 18 answers review
|
||||||
of 16. Two additions and one correction:
|
of 17:
|
||||||
|
|
||||||
|
- **Identity has a second half that R2/R3 cannot reach.** A panel or
|
||||||
|
terminal residual is keyed to a surface that *goes away*; the
|
||||||
|
**document's and the minimap's live in the long-lived GPU `State`
|
||||||
|
and outlive the buffer**. Their reset is a **manual list** —
|
||||||
|
`pmacs-gpu/src/main.rs:5922` zeroes `scroll_top`,
|
||||||
|
`code_scroll_residual` and `code_scroll_left` one line at a time — so
|
||||||
|
a new wheel residual will not reset itself. **R4** (document plus the
|
||||||
|
chrome residual it shares) and **R5** (the minimap's independent
|
||||||
|
residual) add buffer A→B legs, each with its own mutation omitting
|
||||||
|
its own reset. `code_scroll_left` had this exact defect once already.
|
||||||
|
- **U9/U10 said "the same executable"; the two artifacts differ.**
|
||||||
|
`pmacs-9d4963…` and `pmacs-7624…`, different sizes, differing bytes.
|
||||||
|
The supported claim is the same *target*, 1,940-test population and
|
||||||
|
default intra-binary threading. **"Cargo runs test binaries
|
||||||
|
sequentially" is narrowed to the observed cargo 1.95.0 sweep** rather
|
||||||
|
than asserted universally. The concurrency conclusion is unaffected.
|
||||||
|
|
||||||
|
**Previously, revision 17 — SUPERSEDED.** Two additions and one
|
||||||
|
correction:
|
||||||
|
|
||||||
- **B1 gains the two separations its crossing witness could not
|
- **B1 gains the two separations its crossing witness could not
|
||||||
reach.** "Per axis and surface" has two nouns; 16 witnessed one
|
reach.** "Per axis and surface" has two nouns; 16 witnessed one
|
||||||
|
|
@ -337,6 +357,35 @@ defect as leaking between kinds but invisible to a kind-level row.
|
||||||
- **R3 — terminal A→terminal B:** the same, across two terminal
|
- **R3 — terminal A→terminal B:** the same, across two terminal
|
||||||
buffers. *Mutation: key the residual by "the terminal".*
|
buffers. *Mutation: key the residual by "the terminal".*
|
||||||
|
|
||||||
|
**R2 and R3 are not the whole of identity, because the document and the
|
||||||
|
minimap do not get replaced — their state OUTLIVES the buffer.** A
|
||||||
|
panel or terminal residual can be keyed to a surface that goes away; the
|
||||||
|
document's and the minimap's live in the long-lived GPU `State`, which
|
||||||
|
survives a buffer switch. **Their reset is manual, and there is a list
|
||||||
|
to be forgotten from.** Buffer replacement (`pmacs-gpu/src/main.rs:5922`
|
||||||
|
onward) zeroes `scroll_top`, `code_scroll_residual` and
|
||||||
|
`code_scroll_left` **one explicit line at a time**, each with its own
|
||||||
|
comment — including `code_scroll_left`, added later precisely because a
|
||||||
|
switch *"inherits the PREVIOUS document's leftward viewport and renders
|
||||||
|
the new buffer scrolled sideways until a cursor motion repairs it — a
|
||||||
|
symptom nothing about the new buffer explains."* **A new wheel residual
|
||||||
|
will not reset itself.** Two more legs:
|
||||||
|
|
||||||
|
- **R4 — document A→document B**, covering the document residual **and
|
||||||
|
the chrome residual it shares** (chrome's owner is the document's, so
|
||||||
|
one reset must serve both): bank a sub-tick over the document, replace
|
||||||
|
the buffer, motion over B **starts from zero**. *Mutation: omit the
|
||||||
|
document residual from the replacement reset.*
|
||||||
|
- **R5 — minimap across A→B:** the minimap's residual is **independent**
|
||||||
|
(B6), so it needs its own reset and its own leg. *Mutation: omit the
|
||||||
|
minimap residual from the replacement reset.*
|
||||||
|
|
||||||
|
Two mutations, deliberately separate: **one reset omitted at a time**,
|
||||||
|
because a single "forgot to reset" mutation would bite both legs and
|
||||||
|
prove neither field is individually covered. This is the same defect
|
||||||
|
`code_scroll_left` already had once, and the reason it now has a
|
||||||
|
comment explaining itself.
|
||||||
|
|
||||||
R2 and R3 also pin the **discard on disappearance**: a residual banked
|
R2 and R3 also pin the **discard on disappearance**: a residual banked
|
||||||
against a surface that no longer exists must not be inherited by its
|
against a surface that no longer exists must not be inherited by its
|
||||||
successor. That is the identity question and the staleness question at
|
successor. That is the identity question and the staleness question at
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue