docs(framing): revision 20 --- the both-axis witness was vacuous
Step 3 asked only that "a wheel" move the panel. A whole tick passes straight through #243's existing vertical receiver even if B1's new fractional accumulator discards every sub-tick it is given --- so the witness was satisfiable with the exact mechanism it exists to protect completely broken. The justification for owing it at all is that B1's producer is NEW, and a witness that never exercises the producer proves nothing about it. It now requires fractional input end to end, per axis: a first individually sub-threshold delta produces NO viewport effect, and further same-panel sub-threshold deltas, once accumulated past a tick, produce EXACTLY ONE. Not zero, not two. §1b's panel-replay paragraph carries the same requirement so a reader who starts from the contract table sees it. Also: the v25 note still said the mapping slice "lands" ahead of 1e "because panel-pointer replay blocks 1b". Both landed --- #242 and #243. It is historical now: v25 landed ahead BECAUSE replay then blocked 1b, and the version numbering is what survives.
This commit is contained in:
parent
8b8b6982ae
commit
204998351b
|
|
@ -57,9 +57,19 @@ panel paint call (`src/editor.rs:2863`), `OwnCursor`'s **type doc**
|
||||||
residual's. **Every live citation is now identity-checked against the
|
residual's. **Every live citation is now identity-checked against the
|
||||||
construct its prose names**, not merely bounds-checked.
|
construct its prose names**, not merely bounds-checked.
|
||||||
|
|
||||||
**No ruling changes in revision 20.** It is a re-measurement, three
|
**One contract IS sharpened, and it had to be.** Step 3's both-axis
|
||||||
corrections, a discharge, and one conceptual separation — implementation
|
witness said only that "a wheel" moves the panel. **A whole tick passes
|
||||||
already present is not evidence already owed.
|
straight through #243's existing vertical receiver even if B1's new
|
||||||
|
accumulator discards every sub-tick it is given** — so the witness was
|
||||||
|
satisfiable with the very mechanism it exists to protect completely
|
||||||
|
broken. It now requires **fractional input end to end, per axis**: a
|
||||||
|
first sub-threshold delta produces no effect, and accumulated
|
||||||
|
same-panel deltas produce **exactly one**. That is a strengthening of a
|
||||||
|
witness, not a change to a ruling.
|
||||||
|
|
||||||
|
**Otherwise no ruling changes in revision 20.** It is a re-measurement,
|
||||||
|
three corrections, a discharge, and one conceptual separation —
|
||||||
|
implementation already present is not evidence already owed.
|
||||||
|
|
||||||
**Previously, revision 19 — RECONCILES TWO LINEAGES THAT BOTH NUMBERED
|
**Previously, revision 19 — RECONCILES TWO LINEAGES THAT BOTH NUMBERED
|
||||||
THEMSELVES 13.** This document was advanced independently by two
|
THEMSELVES 13.** This document was advanced independently by two
|
||||||
|
|
@ -249,10 +259,12 @@ written** (§6). **Q#S1-8, Q#S1-9 and Q#S1-10 are RULED.** **1-pre is
|
||||||
IMPLEMENTED**; 1a onward may begin from this document.
|
IMPLEMENTED**; 1a onward may begin from this document.
|
||||||
|
|
||||||
**v26, not v25 — corrected by the panel mapping-generation slice.**
|
**v26, not v25 — corrected by the panel mapping-generation slice.**
|
||||||
That slice (`docs/bottom-panel-framing.md` §5b) takes **v25** for
|
That slice (`docs/bottom-panel-framing.md` §5b) **took v25** for
|
||||||
`PanelFramePayload::PresentMapped` / `FrontendEvent::PanelPointerMapped`,
|
`PanelFramePayload::PresentMapped` / `FrontendEvent::PanelPointerMapped`,
|
||||||
and it lands ahead of 1e because panel-pointer replay blocks 1b.
|
and **it landed ahead of 1e (as #242) because panel-pointer replay
|
||||||
Protocol slices stay serialized; one was inserted in front.
|
blocked 1b at the time.** Both have since landed and neither blocks
|
||||||
|
anything now; the version numbering is what survives. Protocol slices
|
||||||
|
stay serialized; one was inserted in front.
|
||||||
`ADVERTISED_PROTOCOL_VERSION` remains pinned at **20**.
|
`ADVERTISED_PROTOCOL_VERSION` remains pinned at **20**.
|
||||||
|
|
||||||
**Verification base: `0ec13b3`** (revision 20). §2 was re-measured at
|
**Verification base: `0ec13b3`** (revision 20). §2 was re-measured at
|
||||||
|
|
@ -618,9 +630,24 @@ nothing about whether a panel wheel scrolls.
|
||||||
contains #243. §2a's other measurements were unaffected by that
|
contains #243. §2a's other measurements were unaffected by that
|
||||||
lane, as predicted — it touched the daemon side.
|
lane, as predicted — it touched the daemon side.
|
||||||
3. **1b carries an END-TO-END panel-wheel EFFECT witness, on BOTH
|
3. **1b carries an END-TO-END panel-wheel EFFECT witness, on BOTH
|
||||||
axes**: a wheel over a panel cell moves that panel's viewport
|
axes, driven by FRACTIONAL input.** Per axis, over a panel cell:
|
||||||
vertically, and a horizontal wheel moves it horizontally. Not "a
|
- **a first individually sub-threshold delta produces NO viewport
|
||||||
`PanelPointer` was emitted" — the observable effect.
|
effect** — nothing moves, and nothing is emitted that would move
|
||||||
|
it;
|
||||||
|
- **further same-panel sub-threshold deltas, once they accumulate
|
||||||
|
past a tick, produce EXACTLY ONE viewport effect** — the panel's
|
||||||
|
viewport moves once, not zero times and not twice.
|
||||||
|
|
||||||
|
Not "a `PanelPointer` was emitted" — the observable effect on the
|
||||||
|
panel's viewport.
|
||||||
|
|
||||||
|
**A whole-tick witness would NOT do, and that is the point.** A full
|
||||||
|
tick passes straight through #243's existing vertical receiver even
|
||||||
|
if B1's new accumulator discards every sub-tick delta it is given.
|
||||||
|
The justification for owing this witness at all is that **B1's
|
||||||
|
producer is new**; a witness that never exercises the producer is
|
||||||
|
satisfiable with the new mechanism completely broken, which is the
|
||||||
|
vacuous shape this document has rejected elsewhere.
|
||||||
|
|
||||||
**Why BOTH axes are still owed, when #243 already supplies the vertical
|
**Why BOTH axes are still owed, when #243 already supplies the vertical
|
||||||
receiver.** These are different things and revision 20's first draft
|
receiver.** These are different things and revision 20's first draft
|
||||||
|
|
@ -1158,8 +1185,15 @@ blank**. The bound is *width − viewport*, saturating at zero for buffers
|
||||||
narrower than the viewport, and **the right-bound witness asserts the
|
narrower than the viewport, and **the right-bound witness asserts the
|
||||||
final display column is still visible**.
|
final display column is still visible**.
|
||||||
|
|
||||||
**Panel-replay consequence, ruled after §5a's 2026-08-20
|
**Panel-replay consequence — the prerequisite is DISCHARGED (#243, in
|
||||||
re-measurement.** “Horizontal panel wheel” has three receiver outcomes,
|
base `0ec13b3`), the WITNESS is not.** B1's producer is new, so the
|
||||||
|
end-to-end panel-wheel effect witness is owed on **both** axes and must
|
||||||
|
be driven by **fractional** input: a first sub-threshold delta moves
|
||||||
|
nothing, and accumulated same-panel deltas move the viewport **exactly
|
||||||
|
once**. A whole-tick witness passes through #243's receiver with B1's
|
||||||
|
accumulator broken. See §3's step 3.
|
||||||
|
|
||||||
|
**Ruled after §5a's 2026-08-20 re-measurement.** “Horizontal panel wheel” has three receiver outcomes,
|
||||||
not one. When terminal precedence selects child reporting it already
|
not one. When terminal precedence selects child reporting it already
|
||||||
forwards `ScrollLeft` and `ScrollRight` as SGR codes 66/67. The local
|
forwards `ScrollLeft` and `ScrollRight` as SGR codes 66/67. The local
|
||||||
terminal branch — selected by Shift, reporting-off or a scrolled-back
|
terminal branch — selected by Shift, reporting-off or a scrolled-back
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue