feat: add strict native absence assertion - #2245
Conversation
|
Size Report
npm unpacked components
Startup median (7 runs, lower is better):
Top changed chunks:
Top changed packed files
|
|
BLOCKED — the public contract is unchosen and this head has two correctness defects plus owner-action CI failures.
The zero-match readAny domain, sparse/truncated fail-closed behavior, positional/API projection and replay action-failure classification otherwise look sound. After the contract and code are corrected, include practical iOS and Android evidence for an element unmounting between captures; current smoke lanes do not demonstrate the new command path. Do not apply |
b3c898a to
60a3f0e
Compare
60a3f0e to
97c555c
Compare
|
Addressed the maintainer review on the current PR A head:
The preview and size-report bot comments are metadata only; there are no inline review threads or submitted reviews to resolve. The unchanged provider-backed iOS lifecycle timeout in local affected-gate retry passed in isolation; GitHub CI/device evidence remains authoritative. PR A base: PR B ( |
|
READY at The current head is the same resolved head previously reviewed: it forces fresh capture for All exact-head CI lanes are now green; merge state is CLEAN. No concrete findings. |
Summary
Adds the strict native
is absent <selector>assertion for zero matches in one readable, complete, unscoped, full-depth accessibility capture. It uses the existingreadAnyselector match domain, requests no rectangles, refuses--scopeand--depth, and fails closed with typed evidence for sparse, truncated, or unreadable captures. Existingis hiddensemantics are unchanged.The predicate is available in the CLI, MCP metadata, SDK types, and help/docs, with both positional forms supported:
Present failures report only the match count and bounded first-match identity/text fields; multiple matches advise refining the selector. Authored
is absentobservations record without target-v1 annotation, and replay failures remain action-failures rather than identity mismatches.Refs #2236.
PR A coordination:
maind04e213bcc841cd8d75361844aec871cbbd5a831feat/is-absent-223697c555c3876e1ee4f2041302a820113db0c6cf43wait absent) must stack on this exact head (feat/is-absent-2236at97c555c3876e1ee4f2041302a820113db0c6cf43), not onmain.Validation
pnpm check:affected --runon this exact base/head: the first run was host-contended (4,328/4,345 tests passed); the retry passed 5,204/5,205 tests, with one unchanged provider-backed iOS lifecycle test timing out at its 5-second budget. That test passed in isolation (3/3), and all other runnable checks in the retry were green. GitHub remains authoritative for native/device/coverage lanes.website/docs/docs/commands.md,examples/test-app/README.md, and ADR 0012 replay semantics.