Skip to content

refactor(contracts): additive capability facts on the gesture family - #2460

Merged
thymikee merged 2 commits into
claude/2443-additive-familiesfrom
claude/2443-gesture-facts
Sep 10, 2026
Merged

refactor(contracts): additive capability facts on the gesture family#2460
thymikee merged 2 commits into
claude/2443-additive-familiesfrom
claude/2443-gesture-facts

Conversation

@thymikee

@thymikee thymikee commented Sep 10, 2026

Copy link
Copy Markdown
Member

What

Additive capability facts on the gesture family, the second family in #2443. Stacked on #2459.

gestureRuntimeOperationFacts took one fact per tier, and it had five: plan, directionalFling, multiTouch, targetAuthoredDrag, viewport. Gesture tiers split exactly where an owner's mechanics split — no tier is one every owner serves, and several owners serve none — so every tier is optional and unsupported names the denial an omitted tier reports. A call naming no denial is still refused: omission is a classified refusal, never an unclassified tier and never an implied success.

An owner states a tier only to say something the family denial does not. Web refuses every tier with one cell and names only the drag tier, whose wording came from a retired closure; Vega names the two tiers whose refusals came from separate closures; Limrun's session-less and iOS branches name one denial each where each wrote five. The owners that serve gestures keep naming what they serve — the win is the next tier, which an owner can now ignore.

Measured

Replayed addition: performEdgeSwipePlan, one tier named by exactly one owner (Apple), applied identically to this PR's base and to this head.

shape files packages unsupported-owner edits
old (required cell per tier) 15 9 10
new (unsupported + optional tiers) 5 2 0

The five the new shape forces are the addition and the implementing owner. The ten that disappear are the seven non-implementing owner cells, the shared unavailable record, and two cell-enumerating test doubles. No test asserting a non-supporting owner's unavailable reason was edited.

Stop rule: 10 avoided >= 2 -> gesture merges. Clipboard follows.

Refs #2443

Validation

pnpm check:affected --run green on the base and on head; provider integration and coverage are GitHub's to report.

Additive capability facts on the gesture family (#2443, family 2).

gestureRuntimeOperationFacts took one fact per tier, and it had five: plan,
directionalFling, multiTouch, targetAuthoredDrag, viewport. The tiers split exactly
where an owner's mechanics split — no tier is one every owner serves, and several
owners serve none — so every tier is optional now and `unsupported` names the denial
an omitted tier reports. The type still refuses a call that names no denial at all:
omission is a classified refusal, never an unclassified tier and never an implied
success, and an owner cannot leave the family blank.

An owner states a tier only to say something the family denial does not. Web refuses
every tier with one cell and names only the drag tier whose wording came from a
retired closure. Vega names the two tiers whose refusals came from separate closures.
Limrun's session-less and iOS branches name one denial each, where each wrote five.
The owners that serve gestures keep naming what they serve: the win is the next tier,
which an owner can now ignore entirely.

Fact values are unchanged: every owner's gesture cells are byte-identical, and the
family's own test pins an omitted tier reporting the stated denial verbatim, an
owner that names nothing answering with the exhaustive shape, and the freeze.
@github-actions

github-actions Bot commented Sep 10, 2026

Copy link
Copy Markdown

Size Report

Metric Base Current Diff
Installed (including dependencies) 4.53 MB 4.53 MB +14 B
Package (unpacked) 4.53 MB 4.53 MB +14 B
Package (download) 1.34 MB 1.34 MB -57 B

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 23.3 ms 23.9 ms +0.6 ms
CLI --help 64.1 ms 63.4 ms -0.7 ms

Review follow-up on the gesture family.

Apple refuses gestures for two reasons depending on the leaf: watchOS and visionOS
have no gesture surface at all, while every other leaf without a touch kind is the
wrong device kind. One constant cannot be truthful for both, and the family denial
is what the first unnamed tier will report, so it now follows the leaf.

The Limrun gesture call collapsed to one source for the session-less branch, so pin
the reason and hint it reports there rather than availability alone, and cover the
directional-fling tier the loop had skipped.
@thymikee

Copy link
Copy Markdown
Member Author

No code findings at 3b4b615. The updated Apple family denial preserves leaf-specific refusals, and existing gesture facts and bindings stay unchanged. Merge after #2459; several checks are still running, so this is ready for human review rather than a CI-green merge verdict.

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Sep 10, 2026
@thymikee
thymikee added this pull request to stack #2466 September 10, 2026 14:33
@thymikee
thymikee merged commit 1131fb3 into main Sep 10, 2026
18 checks passed
@thymikee
thymikee deleted the claude/2443-gesture-facts branch September 10, 2026 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-human Valid work that needs human implementation, judgment, or maintainer merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant