Repository navigation
test(daemon): pin the acting route's own ambiguity issuance (ADR 0014 follow-up to #3340) - #3347
Conversation
…he rule's docblock The review's two follow-ups, both confirmed at c6acd1e: 1) The acting seam had no test of its own. Deleting the touch runtime's consumed-capture slot degraded every press/fill ambiguity to count-only with no test red -- the existing press test pressed an is-minted ref, traveling the selector-route seam. An ambiguous label= press through handleInteractionCommands now asserts its OWN refusal carries refsGeneration and a refFrameScope equal to the printed candidate bodies. Mutation-checked: removing the slot fills makes exactly this test fail. 2) The rule's docblock claimed every AMBIGUOUS_MATCH producer runs through the helper; find's refusal (buildAmbiguousMatchError, #1597) prints candidates without issuing them and never called it. Narrowed to the routes that consume the rule, with the find shape named and its contract stated: it prints no refsGeneration and its hint routes the caller to narrow the locator, so it advertises no issued-ref affordance. Routing find through the rule would make its candidates issuable -- a separate contract change, left to the maintainer.
Size Report
Startup median (7 runs, lower is better):
|
There was a problem hiding this comment.
All reported issues were addressed across 2 files
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
…claim
The review nit was right that the old phrasing leaned on an inference
("advertises no issued-ref affordance") that a reader could overread as
"find's candidates cannot be acted on" -- they are printed as ordinary
snapshot lines, and a plain ref against an unrelated complete frame is a
pre-existing admission the rule does not govern. The builder's own
message ("Use a more specific locator or selector.") and absent
refsGeneration remain the facts; state those directly and defer the
issuance question as the contract decision it is.
|
check:affected recorded at head |
|
This PR is ready at f16db65. The new press test pins the acting route's own ambiguity issuance, the only production change is the docblock, and its claim about the Not blocking: the acting-route test sits in a file named for the selector-runtime seam, while source topology would put it beside interaction-touch-runtime; a touch-runtime sibling file or a broader file name is optional. |
|
Summary
Follow-up to the merged #3340, carrying the two findings its final review round confirmed as not-yet-shipped (the maintainer merged
c6acd1e5eat 06:59Z before this commit landed).consumedCapture.state = snapshot(interaction-runtime.ts) degraded everypress/fillambiguity to count-only with zero red tests — the existing press test pressed anis-minted ref and traveled the selector-route seam. A newhandleInteractionCommandstest presses an ambiguouslabel=and asserts the refusal itself carriesrefsGenerationand arefFrameScopeequal to the printed candidate bodies. Mutation-checked: removing the slot fill makes exactly this test fail.publishAmbiguousMatchCandidateRefsclaimed everyAMBIGUOUS_MATCHproducer runs through it;find's refusal (buildAmbiguousMatchError, AMBIGUOUS_MATCH and unsupported find actions give agents nothing to recover with #1597) prints candidates without issuing and never called it. Narrowed to the routes that consume the rule, with find's contract stated explicitly (norefsGeneration, hint routes to narrowing, no issued-ref affordance advertised). Making find's candidates issuable is a separate contract change for a maintainer to decide.Validation
pnpm check:affected --run(one run) at266d23891: all runnable checks passed.c6acd1e5eplus test/docblock changes): raw output posted on fix(is): report ambiguous selector matches as ambiguity, not absence (#2870) #3340 — ambiguousis visible 'role=text'→AMBIGUOUS_MATCH matches=22+ 5 pinned candidates (~s367781= issued generation); plain@e2refused (partial frame,plain_ref_requires_complete_frame); pinned@e3~s367781tapped at (148, 30) = the listed candidate's rect center.