docs: freeze the consumed-without-effect set #207

Merged
natsukium merged 2 commits from docs/freeze-consumed-without-effect-183 into main 2026-09-07 23:37:44 +09:00
Owner

Fixes #183.

Freezes the set of compatibility shims that consume producer bytes without effect. vt-compliance.md gains a normative "Consumed without effect" table stating, per row, the exact input and the exact reply or no-op — so the stub answers producers branch on (0;0, Ps=0, 0$r) become a published contract rather than an implementation detail. landscape.md gains the admission rule: a new tolerate-row is accepted only beside the supported form it stands next to, with a Revisit trigger.

Doc cascade: docs/reference/protocols/vt-compliance.md (the normative table), docs/reference/protocols/support-matrix.md (rows point at the frozen table), docs/reference/esctest-compatibility.md (rejected cases aligned), docs/explanation/protocols/landscape.md (admission rule + rationale).

Tests: the tolerated inputs that had no pinning test now have one — mouse mode ?9, the tolerated OSC families, and SCS charset selection — so a shim that starts doing something fails a test.

Verified: just check green (fmt, clippy, nextest, deny, proto-compat); reviewed by pi luna + pi sol; docs proofread by Gemini gemini-3.8-flash-high

Deferred

  • The XTWINOPS CSI 1-9 t row cites no test ("Pinned by: —") — a bare fall-through with nothing observable to assert beyond "no reply"; the adjacent report-arm test already covers the reply-emitting window ops.
  • test: XTWINOPS CSI 1t-9t row is shipped with no pinning test at all — already on the implementer's own deferred list, reasoned as above; a minor test-completeness wish, not a required criterion.
Fixes #183. Freezes the set of compatibility shims that consume producer bytes without effect. `vt-compliance.md` gains a normative "Consumed without effect" table stating, per row, the exact input and the exact reply or no-op — so the stub answers producers branch on (`0;0`, `Ps=0`, `0$r`) become a published contract rather than an implementation detail. `landscape.md` gains the admission rule: a new tolerate-row is accepted only beside the supported form it stands next to, with a Revisit trigger. Doc cascade: `docs/reference/protocols/vt-compliance.md` (the normative table), `docs/reference/protocols/support-matrix.md` (rows point at the frozen table), `docs/reference/esctest-compatibility.md` (rejected cases aligned), `docs/explanation/protocols/landscape.md` (admission rule + rationale). Tests: the tolerated inputs that had no pinning test now have one — mouse mode `?9`, the tolerated OSC families, and SCS charset selection — so a shim that starts doing something fails a test. Verified: just check green (fmt, clippy, nextest, deny, proto-compat); reviewed by pi luna + pi sol; docs proofread by Gemini gemini-3.8-flash-high ## Deferred - The XTWINOPS `CSI 1-9 t` row cites no test ("Pinned by: —") — a bare fall-through with nothing observable to assert beyond "no reply"; the adjacent report-arm test already covers the reply-emitting window ops. - test: XTWINOPS CSI 1t-9t row is shipped with no pinning test at all — already on the implementer's own deferred list, reasoned as above; a minor test-completeness wish, not a required criterion.
The compatibility shims that swallow producer bytes were reasonable one
at a time but were never a recorded set, so "just ignore it" was the
default an addition could take without a decision. Publish freezes the
stub replies producers branch on, so enumerate them normatively while
removing one is still free, and give the landscape an admission rule so
a future tolerate-row has to name the supported form it stands beside.

Refs #183
grid: pin the tolerated inputs that had no test
All checks were successful
darwin / darwin docs-only no-op (pull_request) Has been skipped
darwin / build felis (aarch64-darwin) (pull_request) Successful in 50s
fuzz / cargo fuzz smoke (per target) (pull_request) Successful in 1m30s
pr / nix flake check (pull_request) Successful in 37s
pr / cargo build / clippy / test / deny (pull_request) Successful in 2m13s
pr / wire schema is compatible with the base (pull_request) Successful in 12s
pr / frontend smoke (x86_64-linux) (pull_request) Successful in 1m8s
pr / publish felis (x86_64-linux) (pull_request) Has been skipped
windows / detect relevant changes (pull_request) Successful in 3s
windows / windows docs-only no-op (pull_request) Has been skipped
windows / cargo clippy (Windows cross) (pull_request) Successful in 28s
windows / cargo nextest (Windows) (pull_request) Successful in 4m28s
windows / frontend smoke (Windows) (pull_request) Successful in 1m45s
windows / package felis (x86_64-pc-windows-msvc) (pull_request) Has been skipped
fuzz / cargo fuzz nightly long-run (push) Has been skipped
darwin / detect relevant changes (push) Successful in 3s
darwin / darwin docs-only no-op (push) Has been skipped
darwin / build felis (aarch64-darwin) (push) Successful in 13s
fuzz / cargo fuzz smoke (per target) (push) Successful in 1m12s
pr / nix flake check (push) Successful in 6s
pr / cargo build / clippy / test / deny (push) Successful in 1m56s
pr / wire schema is compatible with the base (push) Successful in 8s
pr / frontend smoke (x86_64-linux) (push) Successful in 6s
windows / detect relevant changes (push) Successful in 3s
windows / windows docs-only no-op (push) Has been skipped
pr / publish felis (x86_64-linux) (push) Successful in 10s
windows / cargo clippy (Windows cross) (push) Successful in 12s
windows / cargo nextest (Windows) (push) Successful in 5m0s
windows / frontend smoke (Windows) (push) Successful in 1m49s
windows / package felis (x86_64-pc-windows-msvc) (push) Successful in 2m24s
23e50f22e2
The consumed-without-effect set is normative once published, so every
row needs a test that fails if the shim starts doing something. The
mouse `?9` mode, the tolerated OSC families, and SCS charset selection
had none.

Refs #183
natsukium deleted branch docs/freeze-consumed-without-effect-183 2026-09-07 23:37:44 +09:00
Sign in to join this conversation.
No description provided.