Skip to content

fix: use canonical viewport fallback for rootless touch targeting - #2122

Open
thymikee wants to merge 2 commits into
mainfrom
codex/issue-2120
Open

fix: use canonical viewport fallback for rootless touch targeting#2122
thymikee wants to merge 2 commits into
mainfrom
codex/issue-2120

Conversation

@thymikee

@thymikee thymikee commented Aug 28, 2026

Copy link
Copy Markdown
Member

Summary\n\nRootless snapshot trees now use the canonical fallback during actionable-touch ancestor resolution. A full-screen structural ancestor no longer steals a touch when no explicit Application/Window viewport node exists. The fallback is universal and does not infer Android from class names, backend names, or other strings.\n\nThis PR implements the core slice for #2120 and closes that ordered child of #1609. Fragment fixtures that exercise iOS-shaped promotion now include an honest full-screen Application root, preserving their original assertions without narrowing production semantics.\n\nNo Maestro changes, scroll-predicate consolidation, shared resolver semantic changes, or public CLI/wire/response changes.\n\nCloses #2120\n\n## Validation\n\n- Base: @ \n- Head: on \n- Planted red on unmodified base: the rootless Android direct-target test failed 1/14 ( actual vs expected).\n- Focused green on this head: passed 16/16.\n- Final local gate on this exact head: [WARN] This project is configured to use 11.17.0 of pnpm. Your current pnpm is v11.21.0

Finished in 440ms on 3342 files using 12 threads. completed; [WARN] This project is configured to use 11.17.0 of pnpm. Your current pnpm is v11.21.0
check:affected — diff origin/main...HEAD
Selected 14 check(s):

  • format: Formatting (oxfmt)
    · src/commands/interaction/runtime/tests/test-utils/index.ts [gate:format] — oxfmt covers src/ and test/
    · src/core/interaction-targeting.fixtures.ts [gate:format] — oxfmt covers src/ and test/
    · src/core/interaction-targeting.test.ts [gate:format] — oxfmt covers src/ and test/
    · src/core/interaction-targeting.ts [gate:format] — oxfmt covers src/ and test/
    · src/core/selector-pipeline.test.ts [gate:format] — oxfmt covers src/ and test/
    · src/daemon/handlers/tests/interaction-touch-press.test.ts [gate:format] — oxfmt covers src/ and test/
  • lint: Lint (oxlint)
    · src/commands/interaction/runtime/tests/test-utils/index.ts [gate:lint] — oxlint covers the source tree
    · src/core/interaction-targeting.fixtures.ts [gate:lint] — oxlint covers the source tree
    · src/core/interaction-targeting.test.ts [gate:lint] — oxlint covers the source tree
    · src/core/interaction-targeting.ts [gate:lint] — oxlint covers the source tree
    · src/core/selector-pipeline.test.ts [gate:lint] — oxlint covers the source tree
    · src/daemon/handlers/tests/interaction-touch-press.test.ts [gate:lint] — oxlint covers the source tree
  • typecheck: Typecheck (tsc)
    · src/commands/interaction/runtime/tests/test-utils/index.ts [gate:typecheck] — tsc includes src/ and test/
    · src/core/interaction-targeting.fixtures.ts [gate:typecheck] — tsc includes src/ and test/
    · src/core/interaction-targeting.test.ts [gate:typecheck] — tsc includes src/ and test/
    · src/core/interaction-targeting.ts [gate:typecheck] — tsc includes src/ and test/
    · src/core/selector-pipeline.test.ts [gate:typecheck] — tsc includes src/ and test/
    · src/daemon/handlers/tests/interaction-touch-press.test.ts [gate:typecheck] — tsc includes src/ and test/
  • layering: Import-direction layering guard
    · src/core/interaction-targeting.fixtures.ts [gate:layering] — layering guard reads production src/ modules
    · src/core/interaction-targeting.ts [gate:layering] — layering guard reads production src/ modules
  • fallow: Fallow code-quality audit
    · src/commands/interaction/runtime/tests/test-utils/index.ts [gate:fallow] — fallow audits changed TypeScript for dead code
    · src/core/interaction-targeting.fixtures.ts [gate:fallow] — fallow audits changed TypeScript for dead code
    · src/core/interaction-targeting.test.ts [gate:fallow] — fallow audits changed TypeScript for dead code
    · src/core/interaction-targeting.ts [gate:fallow] — fallow audits changed TypeScript for dead code
    · src/core/selector-pipeline.test.ts [gate:fallow] — fallow audits changed TypeScript for dead code
    · src/daemon/handlers/tests/interaction-touch-press.test.ts [gate:fallow] — fallow audits changed TypeScript for dead code
  • build: Build (tsdown + declarations)
    · src/core/interaction-targeting.fixtures.ts [src-prod] — production source is compiled by the build
    · src/core/interaction-targeting.ts [src-prod] — production source is compiled by the build
  • vitest-related: Tests related by Vitest module graph
    · src/commands/interaction/runtime/tests/test-utils/index.ts [vitest:related] — Vitest resolves affected tests through its static module graph
    · src/core/interaction-targeting.fixtures.ts [vitest:related] — Vitest resolves affected tests through its static module graph
    · src/core/interaction-targeting.test.ts [vitest:related] — Vitest resolves affected tests through its static module graph
    · src/core/interaction-targeting.ts [vitest:related] — Vitest resolves affected tests through its static module graph
    · src/core/selector-pipeline.test.ts [vitest:related] — Vitest resolves affected tests through its static module graph
    · src/daemon/handlers/tests/interaction-touch-press.test.ts [vitest:related] — Vitest resolves affected tests through its static module graph
  • web-smoke: Live web platform smoke (GitHub-authoritative; not run locally)
    · src/core/interaction-targeting.fixtures.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
    · src/core/interaction-targeting.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
  • replay-ios: iOS simulator replay suite (GitHub-authoritative; not run locally)
    · src/core/interaction-targeting.fixtures.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
    · src/core/interaction-targeting.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
  • replay-ios-device: iOS physical device replay suite (GitHub-authoritative; not run locally)
    · src/core/interaction-targeting.fixtures.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
    · src/core/interaction-targeting.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
  • replay-macos: macOS replay suite (GitHub-authoritative; not run locally)
    · src/core/interaction-targeting.fixtures.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
    · src/core/interaction-targeting.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
  • replay-linux: Linux replay suite (GitHub-authoritative; not run locally)
    · src/core/interaction-targeting.fixtures.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
    · src/core/interaction-targeting.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
  • linux-command-evidence: Linux command evidence suite (GitHub-authoritative; not run locally)
    · src/core/interaction-targeting.fixtures.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
    · src/core/interaction-targeting.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
  • replay-android: Android replay suite (GitHub-authoritative; not run locally)
    · src/core/interaction-targeting.fixtures.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it
    · src/core/interaction-targeting.ts [own:device-lane:shared] — shared runtime surface: every device lane drives the CLI and daemon through it

[skip] web-smoke — GitHub-authoritative (jobs: Integration Tests, Typecheck & Package)

[skip] replay-ios — parked, workflow_dispatch only (Replay Manual / iOS Replay Suite)

[skip] replay-ios-device — parked, workflow_dispatch only (Replay Manual / iOS Replay Suite)

[skip] replay-macos — GitHub-authoritative (jobs: macOS / Smoke Tests)

[skip] replay-linux — GitHub-authoritative (jobs: Linux / Smoke Tests)

[skip] linux-command-evidence — GitHub-authoritative (jobs: Linux / Smoke Tests)

[skip] replay-android — parked, workflow_dispatch only (Replay Manual / Android Full Emulator Suite)

[run] format: pnpm run format:check
[WARN] This project is configured to use 11.17.0 of pnpm. Your current pnpm is v11.21.0
Checking formatting...

All matched files use the correct format.
Finished in 575ms on 3342 files using 12 threads.

[run] lint: pnpm run lint
[WARN] This project is configured to use 11.17.0 of pnpm. Your current pnpm is v11.21.0

[run] typecheck: pnpm run typecheck
[WARN] This project is configured to use 11.17.0 of pnpm. Your current pnpm is v11.21.0

[run] layering: pnpm run check:layering
[WARN] This project is configured to use 11.17.0 of pnpm. Your current pnpm is v11.21.0
✔ the durable lifecycle policy accepts fenced, evidence-gated ownership (4.080667ms)
✔ durable lifecycle rejects an unfenced IME mutation and generic capture-kit role (1.404416ms)
✔ durable lifecycle rejects platform ownership in the composition gateway (0.520916ms)
✔ durable lifecycle rejects unevidenced Android startup recovery (0.176541ms)
✔ durable lifecycle ignores decoy prose and rejects reversed calls (0.155375ms)
✔ registryAliasTokens reads every alias property value out of the registry source (57.531125ms)
✔ registryAliasTokens is not fooled by an unrelated alias string elsewhere in the file (1.332458ms)
✔ importsAliasResolver is true only for a real VALUE import of the resolver (0.401542ms)
✔ importsAliasResolver is false for a type-only import (0.099083ms)
✔ importsAliasResolver is false when the import is missing or from the wrong module (0.428458ms)
✔ aliasResolverLocalName resolves the LOCAL binding, following an as alias (0.064208ms)
✔ aliasResolverLocalName is null when there is no matching value import (0.271125ms)
✔ helpTargetBindingName reads the binding resolveSimpleHelpTarget produces (0.408708ms)
✔ helpTargetBindingName is null when the fast path no longer produces one (0.069833ms)
✔ countLocalBindings counts value declarations only, not the import or type positions (0.253ms)
✔ usageTextDelegationFailure accepts the real composition, by local name (0.346541ms)
✔ usageTextDelegationFailure rejects a raw call, with no wrapping resolver call (0.215625ms)
✔ usageTextDelegationFailure rejects a present-but-unused import (0.1905ms)
✔ usageTextDelegationFailure rejects an import used only unrelated to buildCommandUsageText (1.825709ms)
✔ usageTextDelegationFailure rejects a decoy wrapped call beside a raw shipped call (1.451083ms)
✔ usageTextDelegationFailure rejects the resolver applied to anything but the help target (0.349958ms)
✔ usageTextDelegationFailure rejects a local shadow of the imported resolver (0.103833ms)
✔ usageTextDelegationFailure rejects an ambiguous second help-target binding (0.968583ms)
✔ usageTextDelegationFailure reports a fast path that no longer builds usage text at all (0.503667ms)
✔ localAliasLiterals reports every requested token present as a string literal (0.091041ms)
✔ localAliasLiterals ignores tokens that only appear as identifiers, not string literals (0.139167ms)
✔ localAliasLiterals reports nothing when the fixed bin.ts delegates and holds no literals (0.188416ms)
✔ the real tree imports the resolver, calls it into buildCommandUsageText, holds no local alias literals, and passes R12 (6.633292ms)
✔ every catalogued rule is registered, and nothing else is (0.596875ms)
✔ every registered rule is callable, so no entry is a stale reference (0.084166ms)
✔ contracts rejects host process and timer mechanics (3.062666ms)
✔ contracts policy ignores type vocabulary, prose, tests, and capture-kit mechanics (1.120667ms)
✔ network traffic vocabulary cannot grow parser implementation inside contracts (0.74625ms)
✔ contracts rejects mutable interaction-outcome lifecycle (0.2435ms)
✔ contracts rejects snapshot quality warning rendering (0.092583ms)
✔ daemon modularity baseline records the measured R7 ownership pressure (0.385333ms)
✔ external daemon/types.ts importer membership changes require the baseline to change (1.354291ms)
✔ logical modules reject forbidden imports (0.756875ms)
✔ replay-test rejects request-global and engine-internal imports (14.528958ms)
✔ replay-test may still import its own files inside the package (1.296583ms)
✔ internal trees reject deep imports globally, including from daemon (0.188875ms)
✔ R9 records zone ceilings and keeps engine files outside the largest component (0.153708ms)
✔ R10 zone overflow lists the whole zone so the joining member is visible (1.862708ms)
✔ R9 rejects a baseline left above the measured cycle (1.244584ms)
✔ R65 rejects static, type-only, dynamic, type, and re-export dependencies with source lines (54.094667ms)
✔ R65 recognizes side-effect and aliased imports, including nested daemon paths (0.213209ms)
✔ R65 ignores comments, ordinary strings, unresolved dynamic imports, and lookalike names (0.139625ms)
✔ R65 rejects require, import-equals, and template-literal type imports (0.22775ms)
✔ R65 folds statically constructed dynamic platform specifiers (0.14925ms)
✔ R65 unwraps erased TypeScript expressions around executable specifiers (1.109ms)
✔ R65 follows common createRequire and require aliases (0.711ms)
✔ R65 rejects triple-slash concrete-platform type references (0.154125ms)
✔ R65 rejects platform selection inside cleanup orchestrators (0.522375ms)
✔ R65 ignores non-daemon and test-shaped records even when their syntax is red (0.100875ms)
✔ R65 treats a relative specifier as legacy platform code only after path resolution (0.119375ms)
✔ readNamedExports collects re-export and direct-declaration forms, resolving aliases (0.793625ms)
✔ readNamedExports never reports the original name behind an as alias (0.395291ms)
✔ readNamedExports resolves export * as ns to its one real bound name (0.200125ms)
✔ readNamedExports rejects a bare export * re-export (0.348375ms)
✔ readNamedExports rejects a default export (0.106375ms)
✔ readNamedExports reports export { default as x } as the named symbol x (0.067709ms)
✔ readNamedExports collects a local export { … } list with no from (0.062291ms)
✔ readNamedExports collects every declarator of a multi-declarator export (0.048792ms)
✔ parseImports distinguishes value, type-only, dynamic, and value re-export edges (16.415666ms)
✔ value cycles fail while type-only and dynamic cycles stay outside the graph (1.355458ms)
✔ back-edge identities follow the documented target spine (37.414208ms)
✔ neutral ownership zones reject value imports into higher layers (0.201917ms)
✔ a relative import resolves within its own workspace package src/, but not past it (1.968375ms)
✔ type-only edges are ranked by R6 and ignored by R5, and vice versa (0.800833ms)
✔ ranked and unranked zones are disjoint and both non-empty (4.33875ms)
✔ classifyZone separates the ranked spine from intentionally-unranked zones (0.149084ms)
✔ every production zone is deliberately classified as ranked or unranked (990.716459ms)
✔ listSourceFiles includes root-level src/.ts production files (402.919458ms)
✔ SessionState field names come from the declaration, not a hand-kept list (0.230041ms)
✔ session-state writes are found by field, and non-daemon or undeclared names are not (0.601834ms)
✔ every assignment form is a write, including the ones a regex forgets (0.592959ms)
✔ a computed session write is reported rather than silently unattributed (0.078292ms)
✔ every declared session-state owner is a real file path under src/daemon (0.169083ms)
✔ a session write counts through an aliased binding, not only one named session (0.08825ms)
✔ every SessionState field is classified exactly once (0.304917ms)
✔ classification drift is reported in all three directions (0.179042ms)
✔ largestTypeCycleSize counts type-only cycles and ignores dynamic ones (0.205291ms)
✔ specifier sites carry 1-based lines for static and dynamic imports (1.271625ms)
✔ readWorkspacePackages reads tracked manifests only (1629.113541ms)
✔ every workspace package façade names its exports explicitly (no bare export *) (258.357375ms)
✔ every façade re-exports its sources exhaustively (no silent narrowing) (122.690792ms)
✔ double-quoted and re-export routes into packages are not invisible to R11 (0.415375ms)
✔ a package file importing root src is a violation (0.101708ms)
✔ intra-package relative imports hold (0.062833ms)
✔ an exported package self-reference holds while a deep self-import fails (0.130917ms)
✔ a cross-package import needs a workspace:
declaration and an exported subpath (0.108708ms)
✔ a root src file tunnelling into packages//src relatively is a violation (0.226208ms)
✔ a scripts/ file gets no relative route into a package either (0.118792ms)
✔ root workspace specifiers need a root workspace:
entry and an exported subpath (0.089625ms)
✔ the real tree parses, declares, and passes R11 (781.236541ms)
✔ Node resolution enforces the exports map at runtime (4.396042ms)
✔ the inventory substrate has six private lazy packages and one exact composition root (6.825209ms)
✔ retired platform family implementations are rejected from src/platforms (0.619958ms)
✔ capture-kit and platform workspace packages are R11-owned unranked zones (0.412542ms)
✔ untracked production TypeScript makes committed-state evidence fail closed (6.416792ms)
✔ family packages are exact, private, and expose only their root facade (0.893375ms)
✔ composition policy does not pin local platform-module identifier spelling (1.464958ms)
✔ external consumers use root facades with static imports only at the interactor seam (9.294583ms)
✔ only the canonical composition root may import the private provider composition submodule (21.453708ms)
✔ the apple runner mechanics facet subpaths are the enumerated exception (24.339208ms)
✔ the Apple domain facades preserve synchronous helpers without widening the root facade (127.405375ms)
✔ the runner mechanics facet is exempt from ambient-host and raw-process rules the right way around (3.021292ms)
✔ platform packages may import the xml vocabulary package (2.014375ms)
✔ the Android mechanics facet is the named consumer seam and adb host wiring is root-only (19.384584ms)
✔ contracts never depend on a concrete platform package in production or tests (3.499208ms)
✔ platform packages cannot escape to root, daemon, siblings, or raw process primitives (5.728084ms)
✔ platform packages may use capture-kit but no unrelated workspace implementation package (7.457625ms)
✔ package-owned tests may import their own public facade (3.206541ms)
✔ platform facades cannot evaluate mechanics eagerly (2.877292ms)
✔ composition policy does not infer host authority from function or class names (0.389125ms)
✔ composition keeps platform implementation loaders behind selected use (0.845542ms)
✔ implementation-loader detection ignores comments, strings, and deferred function bodies (0.376375ms)
✔ composition imports are category-based for future contracts and host adapters (1.189ms)
✔ Node resolves only each platform package root facade (28.457875ms)
✔ the src/platforms root holds only the shared tests directory (0.104708ms)
✔ a moved Android family cannot leave production or test files under the old root (4.947291ms)
✔ a new direct production file or sibling directory under src/platforms fails closed (0.439583ms)
✔ platform packages may import the provision-kit substrate (23.719ms)
✔ a provision-kit import of a concrete platform package fails closed (3.174458ms)
✔ committed-state discovery rejects untracked production and ignores untracked manifests (2493.206375ms)
✔ facade dynamic imports must be nested in deferred functions (2.511125ms)
✔ platform production cannot acquire ambient filesystem, OS, process, or network authority (1.977042ms)
✔ platform facades cannot probe injected host capabilities at module evaluation (0.20675ms)
✔ Apple production must route xcrun availability and execution through appleTools (0.231667ms)
✔ Apple xcrun routing guard ignores comments, strings, and non-xcrun generic commands (0.962291ms)
✔ syntax checks ignore comments and strings and allow deferred imports and host use (0.388042ms)
✔ R16 rejects native mechanics in the daemon record owner without scanning prose (3.702791ms)
✔ R16 rejects child termination and platform branching in daemon record owners (0.882708ms)
✔ R16 requires the real registry normalization path to assert the record use join (19.62ms)
✔ the layering rules currently in tree carry no unallowed collision (14.81125ms)
✔ a collision nobody allowed fails, whichever order it lands in (0.166584ms)
✔ an allowance expires with the collision it allows (0.062917ms)
✔ reintroducing the transitional collision is rejected once the allowance is gone (0.060083ms)
✔ one rule declaring its id from several call sites is not a collision (0.047458ms)
✔ the permanent runtime policy accepts facts-only admission and typed operation access (1.122959ms)
✔ a descriptor capability bucket and legacy admission call are rejected globally (0.257916ms)
✔ daemon code cannot cast, assert, or bracket its way around runtime narrowing (1.731375ms)
✔ dynamic operation iteration used by admission remains legal (10.730333ms)
✔ shared admission must inspect facts and expose binding exactly once (0.429042ms)
✔ shared admission cannot hide an additional inspection behind an alias (2.275792ms)
✔ every import form that reaches the engine is refused (10.876166ms)
✔ the owner holds the engine, and the root façade stays open to everyone (4.812083ms)
✔ a missing engine door fails the gate instead of silencing it (1.211ms)
✔ the refusal names the owner and the entries that replace the bypass (0.280958ms)
✔ session resources are constructed only by their durable domain owners (9.914583ms)
✔ teardown app-log discriminants are policy input rather than session construction (0.444666ms)
✔ the snapshot facet cannot import daemon assembly (1166.842083ms)
✔ the boundary reports a facet module that reaches back into the daemon (0.163375ms)
✔ source-executed syntax rejects using declarations but ignores prose (2.873209ms)
✔ capture-kit rejects request-scoped async_hooks dispatch (3.607375ms)
✔ capture-kit policy ignores types, prose, tests, and root-runtime ALS (1.081167ms)
✔ retired src/contracts/ production files fail closed (0.161959ms)
✔ R2 commands-floor closes the four zones below the command surface, whatever the kind (0.782708ms)
✔ R3 platforms-seam closes static value imports and opens the two declared seam owners (0.141458ms)
✔ every policy carries a hint, and the lead names the kind it rejected (0.144458ms)
✔ a policy states its scope with exactly one of to or exceptTo (0.061958ms)
ℹ tests 161
ℹ suites 0
ℹ pass 161
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 4094.504583
Layering guard: OK — 1524 source files satisfy R2-R3 and contain no value-import cycles (both checked globally); the ranked target spine contains no back-edges (only the composition root is unranked among src zones), and its type-only inversions match the R6 ratchet (5 remaining); all 34 SessionState fields are classified and every write is inside its declared owner (R7); the largest type-level cycle is 6 files (R9); R10 pins R7 at 19 writer-owned fields / 22 owner claims, R9 at 6 files with zone ceilings, 2 external daemon/types.ts importers, and zero forbidden logical-module imports; R11 holds 19 workspace package(s) behind 198 exported subpath(s) with zero root back-imports; R13 holds six private implementation-lazy platform packages above capture-kit behind one canonical composition root and its single private provider-composition submodule, with the apple runner and android mechanics facets behind their enumerated seams; deferred or type-only edges are limited to the approved platform-runtime host watchlist; runtime facts remain the only device-command admission authority and daemon code cannot manufacture narrowed runtime proof (R66); R65 keeps production src/daemon free of concrete platform imports in every executable and type-only form; and bin.ts imports normalizeCliCommandAlias, actually passes it into buildCommandUsageText, and holds no local alias literals (R12).

[run] fallow: pnpm run check:fallow --base origin/main
[WARN] This project is configured to use 11.17.0 of pnpm. Your current pnpm is v11.21.0

[run] build: pnpm run build
[WARN] This project is configured to use 11.17.0 of pnpm. Your current pnpm is v11.21.0
ℹ tsdown v0.22.14 powered by rolldown v1.2.5
ℹ config file: /Users/thymikee/.codex/worktrees/9b0a/agent-device/tsdown.config.ts
ℹ entry: src/sdk/index.ts, src/sdk/io.ts, src/sdk/artifacts.ts, src/sdk/batch.ts, src/sdk/metro.ts, src/sdk/remote-config.ts, src/sdk/install-source.ts, src/sdk/android-adb.ts, src/sdk/limrun.ts, src/sdk/contracts.ts, src/sdk/selectors.ts, src/sdk/finders.ts, src/ai-sdk/index.ts, src/bin.ts, src/client/companion-tunnel.ts, src/daemon.ts, src/daemon/adapters/maestro/run-script-http-child.ts, packages/capture-kit/src/png-worker.ts, src/utils/update-check-entry.ts
ℹ target: es2022
ℹ tsconfig: tsconfig.lib.json
ℹ Build start
ℹ Cleaning 367 files
ℹ dist/src/internal/daemon.js 108.48 kB │ gzip: 32.32 kB
ℹ dist/src/internal/companion-tunnel.js 8.38 kB │ gzip: 3.22 kB
ℹ dist/src/internal/run-script-http-child.js 2.99 kB │ gzip: 1.46 kB
ℹ dist/src/internal/bin.js 1.92 kB │ gzip: 0.83 kB
ℹ dist/src/ai-sdk.js 1.33 kB │ gzip: 0.74 kB
ℹ dist/src/internal/png-worker.js 1.10 kB │ gzip: 0.55 kB
ℹ dist/src/limrun.js 0.96 kB │ gzip: 0.36 kB
ℹ dist/src/android-adb.js 0.63 kB │ gzip: 0.33 kB
ℹ dist/src/selectors.js 0.33 kB │ gzip: 0.19 kB
ℹ dist/src/index.js 0.29 kB │ gzip: 0.18 kB
ℹ dist/src/metro.js 0.25 kB │ gzip: 0.17 kB
ℹ dist/src/artifacts.js 0.20 kB │ gzip: 0.15 kB
ℹ dist/src/install-source.js 0.15 kB │ gzip: 0.14 kB
ℹ dist/src/finders.js 0.13 kB │ gzip: 0.12 kB
ℹ dist/src/internal/update-check-entry.js 0.13 kB │ gzip: 0.13 kB
ℹ dist/src/contracts.js 0.12 kB │ gzip: 0.12 kB
ℹ dist/src/remote-config.js 0.08 kB │ gzip: 0.09 kB
ℹ dist/src/io.js 0.07 kB │ gzip: 0.09 kB
ℹ dist/src/batch.js 0.06 kB │ gzip: 0.08 kB
ℹ dist/src/session2.js 216.36 kB │ gzip: 62.34 kB
ℹ dist/src/registry.js 156.04 kB │ gzip: 47.38 kB
ℹ dist/src/mechanics.js 154.18 kB │ gzip: 46.80 kB
ℹ dist/src/cli-help.js 89.84 kB │ gzip: 30.70 kB
ℹ dist/src/sdk-batch-runner.js 81.20 kB │ gzip: 20.64 kB
ℹ dist/src/perf-runtime-plan.js 64.90 kB │ gzip: 19.81 kB
ℹ dist/src/runtime.js 64.80 kB │ gzip: 19.95 kB
ℹ dist/src/runtime4.js 50.82 kB │ gzip: 13.36 kB
ℹ dist/src/session-store.js 48.49 kB │ gzip: 15.24 kB
ℹ dist/src/src7.js 47.50 kB │ gzip: 14.17 kB
ℹ dist/src/runner-disposal.js 45.74 kB │ gzip: 14.66 kB
ℹ dist/src/runtime2.js 44.49 kB │ gzip: 13.21 kB
ℹ dist/src/app-inventory-contract.js 44.07 kB │ gzip: 14.68 kB
ℹ dist/src/daemon-client-lifecycle.js 42.31 kB │ gzip: 13.48 kB
ℹ dist/src/runner-client.js 41.72 kB │ gzip: 12.77 kB
ℹ dist/src/interaction.js 30.53 kB │ gzip: 9.30 kB
ℹ dist/src/png-worker-contract.js 30.33 kB │ gzip: 9.34 kB
ℹ dist/src/interactor.js 29.90 kB │ gzip: 9.70 kB
ℹ dist/src/platform-runtime-operation-host.js 27.62 kB │ gzip: 8.18 kB
ℹ dist/src/perf-facade.js 27.26 kB │ gzip: 8.42 kB
ℹ dist/src/cli.js 26.47 kB │ gzip: 8.81 kB
ℹ dist/src/session-snapshot.js 26.00 kB │ gzip: 8.40 kB
ℹ dist/src/src8.js 25.37 kB │ gzip: 7.72 kB
ℹ dist/src/src9.js 23.24 kB │ gzip: 6.97 kB
ℹ dist/src/connection.js 23.01 kB │ gzip: 7.33 kB
ℹ dist/src/selector-runtime.js 22.42 kB │ gzip: 7.33 kB
ℹ dist/src/output.js 22.29 kB │ gzip: 7.93 kB
ℹ dist/src/command-tools.js 21.64 kB │ gzip: 7.88 kB
ℹ dist/src/script.js 20.77 kB │ gzip: 6.48 kB
ℹ dist/src/snapshot-state.js 20.33 kB │ gzip: 6.64 kB
ℹ dist/src/screen-recording-resource-recovery.js 19.81 kB │ gzip: 6.08 kB
ℹ dist/src/connection-runtime.js 19.43 kB │ gzip: 6.29 kB
ℹ dist/src/src.js 19.22 kB │ gzip: 6.31 kB
ℹ dist/src/runtime6.js 18.63 kB │ gzip: 5.95 kB
ℹ dist/src/reporting.js 18.19 kB │ gzip: 6.32 kB
ℹ dist/src/app-log-runtime2.js 17.87 kB │ gzip: 5.49 kB
ℹ dist/src/agent-device-client.js 17.63 kB │ gzip: 5.96 kB
ℹ dist/src/agent-browser-provider.js 16.44 kB │ gzip: 6.12 kB
ℹ dist/src/physical-device-control.js 14.80 kB │ gzip: 4.77 kB
ℹ dist/src/debug-symbols-facade.js 14.27 kB │ gzip: 5.36 kB
ℹ dist/src/screenshot-runtime.js 14.26 kB │ gzip: 5.30 kB
ℹ dist/src/client-metro.js 14.18 kB │ gzip: 5.15 kB
ℹ dist/src/platform-runtime.js 12.19 kB │ gzip: 4.09 kB
ℹ dist/src/platform-runtime2.js 11.27 kB │ gzip: 3.04 kB
ℹ dist/src/sdk-contracts.js 10.96 kB │ gzip: 4.44 kB
ℹ dist/src/runtime9.js 9.82 kB │ gzip: 3.30 kB
ℹ dist/src/replay.js 9.60 kB │ gzip: 3.28 kB
ℹ dist/src/runner-cache-metadata.js 9.37 kB │ gzip: 3.52 kB
ℹ dist/src/script-source-bundle.js 8.76 kB │ gzip: 3.33 kB
ℹ dist/src/proxy.js 8.64 kB │ gzip: 3.42 kB
ℹ dist/src/auth-session.js 8.50 kB │ gzip: 2.93 kB
ℹ dist/src/snapshot-runtime.js 8.49 kB │ gzip: 2.86 kB
ℹ dist/src/video.js 8.26 kB │ gzip: 3.42 kB
ℹ dist/src/archive.js 8.15 kB │ gzip: 2.93 kB
ℹ dist/src/exec.js 8.15 kB │ gzip: 3.11 kB
ℹ dist/src/alert-runtime.js 8.04 kB │ gzip: 2.00 kB
ℹ dist/src/server.js 7.88 kB │ gzip: 3.37 kB
ℹ dist/src/install-source2.js 7.64 kB │ gzip: 3.02 kB
ℹ dist/src/find.js 7.25 kB │ gzip: 2.99 kB
ℹ dist/src/command-schema.js 7.08 kB │ gzip: 2.77 kB
ℹ dist/src/record-runtime.js 7.04 kB │ gzip: 2.48 kB
ℹ dist/src/app-resolution.js 6.45 kB │ gzip: 2.58 kB
ℹ dist/src/snapshot-runtime-binding.js 6.40 kB │ gzip: 2.12 kB
ℹ dist/src/snapshot3.js 6.34 kB │ gzip: 1.89 kB
ℹ dist/src/client-metro-companion.js 6.26 kB │ gzip: 2.23 kB
ℹ dist/src/app-launch.js 6.25 kB │ gzip: 2.45 kB
ℹ dist/src/gesture-plan.js 6.09 kB │ gzip: 2.28 kB
ℹ dist/src/sdk-device.js 6.05 kB │ gzip: 2.25 kB
ℹ dist/src/platform-runtime-app-log-process.js 5.86 kB │ gzip: 2.31 kB
ℹ dist/src/agent-browser-tool.js 5.52 kB │ gzip: 2.27 kB
ℹ dist/src/provider-session-ownership.js 5.40 kB │ gzip: 2.12 kB
ℹ dist/src/cli-config.js 5.22 kB │ gzip: 2.34 kB
ℹ dist/src/android-input-ownership.js 5.21 kB │ gzip: 2.01 kB
ℹ dist/src/platform-runtime-runtime-hints.js 5.09 kB │ gzip: 2.15 kB
ℹ dist/src/snapshot-lines.js 5.05 kB │ gzip: 2.01 kB
ℹ dist/src/snapshot2.js 5.03 kB │ gzip: 2.26 kB
ℹ dist/src/runtime7.js 4.97 kB │ gzip: 1.80 kB
ℹ dist/src/inventory2.js 4.87 kB │ gzip: 1.98 kB
ℹ dist/src/adb-executor.js 4.73 kB │ gzip: 1.80 kB
ℹ dist/src/capture.js 4.71 kB │ gzip: 1.61 kB
ℹ dist/src/process.js 4.69 kB │ gzip: 1.89 kB
ℹ dist/src/sdk-remote-config.js 4.69 kB │ gzip: 1.52 kB
ℹ dist/src/parser.js 4.65 kB │ gzip: 1.69 kB
ℹ dist/src/snapshot-chrome.js 4.64 kB │ gzip: 1.65 kB
ℹ dist/src/application-lifecycle-interaction.js 4.60 kB │ gzip: 1.62 kB
ℹ dist/src/runtime8.js 4.52 kB │ gzip: 1.57 kB
ℹ dist/src/input-actions2.js 4.45 kB │ gzip: 1.58 kB
ℹ dist/src/helper.js 4.44 kB │ gzip: 1.96 kB
ℹ dist/src/runner.js 4.24 kB │ gzip: 1.80 kB
ℹ dist/src/owner-identity.js 4.20 kB │ gzip: 1.70 kB
ℹ dist/src/device-claim-inspection.js 4.17 kB │ gzip: 1.65 kB
ℹ dist/src/png-resize.js 4.13 kB │ gzip: 1.83 kB
ℹ dist/src/inventory.js 4.12 kB │ gzip: 1.79 kB
ℹ dist/src/request-providers.js 4.09 kB │ gzip: 1.18 kB
ℹ dist/src/lease.js 4.08 kB │ gzip: 1.68 kB
ℹ dist/src/adb-failure.js 4.02 kB │ gzip: 1.57 kB
ℹ dist/src/interaction-runtime.js 3.95 kB │ gzip: 1.60 kB
ℹ dist/src/tool-provider.js 3.94 kB │ gzip: 1.60 kB
ℹ dist/src/platform-runtime-screen-recording-android-host.js 3.78 kB │ gzip: 1.50 kB
ℹ dist/src/platform-runtime-unavailable.js 3.75 kB │ gzip: 1.42 kB
ℹ dist/src/mobile-snapshot-semantics.js 3.67 kB │ gzip: 1.47 kB
ℹ dist/src/daemon.js 3.66 kB │ gzip: 1.44 kB
ℹ dist/src/react-native-overlay2.js 3.66 kB │ gzip: 1.61 kB
ℹ dist/src/react-native.js 3.64 kB │ gzip: 1.43 kB
ℹ dist/src/tool-provider2.js 3.53 kB │ gzip: 1.29 kB
ℹ dist/src/boot-diagnostics.js 3.50 kB │ gzip: 1.44 kB
ℹ dist/src/install-source-network-transport.js 3.38 kB │ gzip: 1.47 kB
ℹ dist/src/platform-runtime-screen-recording-finalizer-host.js 3.38 kB │ gzip: 1.45 kB
ℹ dist/src/install-artifact-facade.js 3.35 kB │ gzip: 1.38 kB
ℹ dist/src/touch-runtime.js 3.34 kB │ gzip: 1.25 kB
ℹ dist/src/platform-runtime-screen-recording-apple-simulator-host.js 3.29 kB │ gzip: 1.36 kB
ℹ dist/src/diagnostics.js 3.25 kB │ gzip: 1.40 kB
ℹ dist/src/session-target-evidence.js 3.23 kB │ gzip: 1.29 kB
ℹ dist/src/observation.js 3.20 kB │ gzip: 1.46 kB
ℹ dist/src/retry.js 3.13 kB │ gzip: 1.15 kB
ℹ dist/src/scroll-gesture.js 3.06 kB │ gzip: 1.21 kB
ℹ dist/src/platform-runtime-open-target.js 3.04 kB │ gzip: 1.30 kB
ℹ dist/src/src3.js 2.90 kB │ gzip: 0.87 kB
ℹ dist/src/simulator.js 2.90 kB │ gzip: 1.30 kB
ℹ dist/src/app-lifecycle.js 2.88 kB │ gzip: 1.34 kB
ℹ dist/src/device-selection-resolver.js 2.85 kB │ gzip: 1.21 kB
ℹ dist/src/snapshot-diagnostics.js 2.80 kB │ gzip: 1.12 kB
ℹ dist/src/provider-device-runtime.js 2.78 kB │ gzip: 1.03 kB
ℹ dist/src/interactor2.js 2.73 kB │ gzip: 1.08 kB
ℹ dist/src/dispatch-resolve.js 2.69 kB │ gzip: 1.16 kB
ℹ dist/src/interaction-positionals.js 2.68 kB │ gzip: 1.17 kB
ℹ dist/src/update-check.js 2.64 kB │ gzip: 1.25 kB
ℹ dist/src/snapshot.js 2.56 kB │ gzip: 1.35 kB
ℹ dist/src/platform-runtime-android-adb-host.js 2.53 kB │ gzip: 1.05 kB
ℹ dist/src/input-actions.js 2.50 kB │ gzip: 0.95 kB
ℹ dist/src/agent-browser-process-record.js 2.46 kB │ gzip: 1.09 kB
ℹ dist/src/app-log-reconnect.js 2.40 kB │ gzip: 1.00 kB
ℹ dist/src/src5.js 2.39 kB │ gzip: 0.72 kB
ℹ dist/src/lease-scope.js 2.38 kB │ gzip: 0.64 kB
ℹ dist/src/platform-runtime-screen-recording-apple-runner-transport.js 2.38 kB │ gzip: 0.97 kB
ℹ dist/src/android.js 2.37 kB │ gzip: 1.08 kB
ℹ dist/src/location-coordinates.js 2.35 kB │ gzip: 1.00 kB
ℹ dist/src/platform-runtime-host.js 2.32 kB │ gzip: 1.02 kB
ℹ dist/src/interaction-common.js 2.30 kB │ gzip: 1.06 kB
ℹ dist/src/screenshot3.js 2.28 kB │ gzip: 1.06 kB
ℹ dist/src/limrun-runtime-dependencies.js 2.28 kB │ gzip: 0.94 kB
ℹ dist/src/platform-runtime-screen-recording-apple-runner-host.js 2.25 kB │ gzip: 0.88 kB
ℹ dist/src/app-deployment-resolution.js 2.24 kB │ gzip: 1.14 kB
ℹ dist/src/agent-browser-lifecycle.js 2.10 kB │ gzip: 0.99 kB
ℹ dist/src/capabilities.js 2.09 kB │ gzip: 0.90 kB
ℹ dist/src/snapshot-quality-verdict.js 2.06 kB │ gzip: 0.75 kB
ℹ dist/src/gesture-runtime.js 2.06 kB │ gzip: 0.76 kB
ℹ dist/src/device2.js 2.05 kB │ gzip: 0.90 kB
ℹ dist/src/code-signature-cache.js 1.96 kB │ gzip: 0.94 kB
ℹ dist/src/platform-runtime-screen-recording-apple-host.js 1.95 kB │ gzip: 0.52 kB
ℹ dist/src/web.js 1.94 kB │ gzip: 0.81 kB
ℹ dist/src/session-runtime-admission.js 1.88 kB │ gzip: 0.92 kB
ℹ dist/src/verified-file.js 1.85 kB │ gzip: 0.89 kB
ℹ dist/src/record-trace.js 1.81 kB │ gzip: 0.82 kB
ℹ dist/src/platform-runtime-screen-recording-process-host.js 1.81 kB │ gzip: 0.86 kB
ℹ dist/src/http-health.js 1.78 kB │ gzip: 0.85 kB
ℹ dist/src/inventory3.js 1.71 kB │ gzip: 0.91 kB
ℹ dist/src/doctor-facade.js 1.65 kB │ gzip: 0.72 kB
ℹ dist/src/remote-config2.js 1.63 kB │ gzip: 0.77 kB
ℹ dist/src/host-file.js 1.62 kB │ gzip: 0.54 kB
ℹ dist/src/audio-probe-result.js 1.59 kB │ gzip: 0.62 kB
ℹ dist/src/daemon-shutdown-report.js 1.59 kB │ gzip: 0.65 kB
ℹ dist/src/linux.js 1.59 kB │ gzip: 0.72 kB
ℹ dist/src/src6.js 1.58 kB │ gzip: 0.55 kB
ℹ dist/src/request-cancellation.js 1.52 kB │ gzip: 0.70 kB
ℹ dist/src/sdk-io.js 1.48 kB │ gzip: 0.77 kB
ℹ dist/src/interactor-operation-catalog.js 1.45 kB │ gzip: 0.53 kB
ℹ dist/src/code-signature.js 1.42 kB │ gzip: 0.73 kB
ℹ dist/src/tv-remote.js 1.42 kB │ gzip: 0.59 kB
ℹ dist/src/inventory5.js 1.40 kB │ gzip: 0.83 kB
ℹ dist/src/file.js 1.39 kB │ gzip: 0.74 kB
ℹ dist/src/doctor2.js 1.38 kB │ gzip: 0.78 kB
ℹ dist/src/screenshot-result.js 1.35 kB │ gzip: 0.49 kB
ℹ dist/src/request.js 1.34 kB │ gzip: 0.72 kB
ℹ dist/src/config.js 1.32 kB │ gzip: 0.63 kB
ℹ dist/src/daemon-process.js 1.31 kB │ gzip: 0.66 kB
ℹ dist/src/harmonyos.js 1.29 kB │ gzip: 0.65 kB
ℹ dist/src/type-text-runtime.js 1.29 kB │ gzip: 0.73 kB
ℹ dist/src/auth.js 1.28 kB │ gzip: 0.59 kB
ℹ dist/src/app-parsers.js 1.27 kB │ gzip: 0.66 kB
ℹ dist/src/tool-provider3.js 1.27 kB │ gzip: 0.58 kB
ℹ dist/src/perf.js 1.22 kB │ gzip: 0.68 kB
ℹ dist/src/register-builtins.js 1.21 kB │ gzip: 0.53 kB
ℹ dist/src/screen-recording-live-handle.js 1.21 kB │ gzip: 0.61 kB
ℹ dist/src/platform-runtime-app-log-android-transport.js 1.19 kB │ gzip: 0.65 kB
ℹ dist/src/platform-runtime-screen-recording-harmony-host.js 1.17 kB │ gzip: 0.53 kB
ℹ dist/src/app-helpers.js 1.16 kB │ gzip: 0.62 kB
ℹ dist/src/url.js 1.14 kB │ gzip: 0.52 kB
ℹ dist/src/screenshot-density.js 1.13 kB │ gzip: 0.64 kB
ℹ dist/src/lease-context.js 1.12 kB │ gzip: 0.45 kB
ℹ dist/src/device-inventory-context.js 1.11 kB │ gzip: 0.57 kB
ℹ dist/src/compatibility-policy.js 1.09 kB │ gzip: 0.47 kB
ℹ dist/src/doctor3.js 1.05 kB │ gzip: 0.47 kB
ℹ dist/src/async-lifecycle.js 1.02 kB │ gzip: 0.46 kB
ℹ dist/src/perf-runtime-operation-builder.js 1.01 kB │ gzip: 0.52 kB
ℹ dist/src/snapshot-desktop-projection.js 1.00 kB │ gzip: 0.56 kB
ℹ dist/src/back-mode.js 0.99 kB │ gzip: 0.50 kB
ℹ dist/src/runtime5.js 0.99 kB │ gzip: 0.51 kB
ℹ dist/src/device-ready.js 0.97 kB │ gzip: 0.50 kB
ℹ dist/src/gesture-admission.js 0.94 kB │ gzip: 0.53 kB
ℹ dist/src/apple-multitouch-support.js 0.94 kB │ gzip: 0.50 kB
ℹ dist/src/generic.js 0.92 kB │ gzip: 0.50 kB
ℹ dist/src/src4.js 0.92 kB │ gzip: 0.43 kB
ℹ dist/src/observability.js 0.91 kB │ gzip: 0.50 kB
ℹ dist/src/generic-settle.js 0.88 kB │ gzip: 0.44 kB
ℹ dist/src/app-state.js 0.87 kB │ gzip: 0.45 kB
ℹ dist/src/device.js 0.86 kB │ gzip: 0.44 kB
ℹ dist/src/device-rotation.js 0.86 kB │ gzip: 0.40 kB
ℹ dist/src/react-native-overlay.js 0.86 kB │ gzip: 0.49 kB
ℹ dist/src/application-lifecycle-runtime.js 0.85 kB │ gzip: 0.36 kB
ℹ dist/src/snapshot-capture-annotations.js 0.84 kB │ gzip: 0.34 kB
ℹ dist/src/runner-operations-facade.js 0.83 kB │ gzip: 0.42 kB
ℹ dist/src/error-candidates.js 0.82 kB │ gzip: 0.42 kB
ℹ dist/src/app-log-files.js 0.79 kB │ gzip: 0.51 kB
ℹ dist/src/command.js 0.76 kB │ gzip: 0.43 kB
ℹ dist/src/hdc.js 0.76 kB │ gzip: 0.47 kB
ℹ dist/src/platform-runtime-screen-recording-apple-transport.js 0.76 kB │ gzip: 0.46 kB
ℹ dist/src/scroll-command.js 0.72 kB │ gzip: 0.42 kB
ℹ dist/src/adb-host.js 0.72 kB │ gzip: 0.45 kB
ℹ dist/src/settings.js 0.72 kB │ gzip: 0.41 kB
ℹ dist/src/version.js 0.72 kB │ gzip: 0.41 kB
ℹ dist/src/runtime3.js 0.70 kB │ gzip: 0.42 kB
ℹ dist/src/telemetry.js 0.69 kB │ gzip: 0.42 kB
ℹ dist/src/runtime-transport.js 0.68 kB │ gzip: 0.42 kB
ℹ dist/src/interaction-snapshot.js 0.66 kB │ gzip: 0.38 kB
ℹ dist/src/src2.js 0.66 kB │ gzip: 0.31 kB
ℹ dist/src/plist.js 0.64 kB │ gzip: 0.37 kB
ℹ dist/src/snapshot-scope.js 0.63 kB │ gzip: 0.39 kB
ℹ dist/src/ttl-memo.js 0.62 kB │ gzip: 0.36 kB
ℹ dist/src/local-interactor-operation-set.js 0.61 kB │ gzip: 0.32 kB
ℹ dist/src/entities.js 0.60 kB │ gzip: 0.35 kB
ℹ dist/src/screenshot.js 0.59 kB │ gzip: 0.40 kB
ℹ dist/src/app-resolution-cache.js 0.55 kB │ gzip: 0.35 kB
ℹ dist/src/interactors.js 0.52 kB │ gzip: 0.31 kB
ℹ dist/src/scroll-indicator.js 0.50 kB │ gzip: 0.32 kB
ℹ dist/src/platform-runtime-network-web-transport.js 0.50 kB │ gzip: 0.32 kB
ℹ dist/src/daemon-registration.js 0.49 kB │ gzip: 0.33 kB
ℹ dist/src/doctor.js 0.49 kB │ gzip: 0.31 kB
ℹ dist/src/android-snapshot-quality.js 0.48 kB │ gzip: 0.28 kB
ℹ dist/src/cli-runner.js 0.47 kB │ gzip: 0.29 kB
ℹ dist/src/output-path.js 0.46 kB │ gzip: 0.29 kB
ℹ dist/src/project-runtime.js 0.46 kB │ gzip: 0.28 kB
ℹ dist/src/simctl.js 0.41 kB │ gzip: 0.25 kB
ℹ dist/src/app-lifecycle2.js 0.40 kB │ gzip: 0.24 kB
ℹ dist/src/android-system-chrome.js 0.40 kB │ gzip: 0.26 kB
ℹ dist/src/screen-recording-completion.js 0.40 kB │ gzip: 0.23 kB
ℹ dist/src/simulator-state.js 0.39 kB │ gzip: 0.29 kB
ℹ dist/src/backend-snapshot-options.js 0.39 kB │ gzip: 0.24 kB
ℹ dist/src/logcat.js 0.39 kB │ gzip: 0.29 kB
ℹ dist/src/scoped-provider.js 0.38 kB │ gzip: 0.25 kB
ℹ dist/src/screen-recording-options.js 0.38 kB │ gzip: 0.26 kB
ℹ dist/src/surface-snapshot.js 0.37 kB │ gzip: 0.28 kB
ℹ dist/src/command-catalog.js 0.37 kB │ gzip: 0.24 kB
ℹ dist/src/command-metadata.js 0.37 kB │ gzip: 0.25 kB
ℹ dist/src/platform-runtime-screen-recording-web-host.js 0.37 kB │ gzip: 0.23 kB
ℹ dist/src/snapshot-private-evidence.js 0.36 kB │ gzip: 0.20 kB
ℹ dist/src/recording-export-quality.js 0.36 kB │ gzip: 0.24 kB
ℹ dist/src/keyed-lock.js 0.34 kB │ gzip: 0.26 kB
ℹ dist/src/provider.js 0.33 kB │ gzip: 0.20 kB
ℹ dist/src/perf-runtime.js 0.33 kB │ gzip: 0.18 kB
ℹ dist/src/audio-probe-support.js 0.33 kB │ gzip: 0.23 kB
ℹ dist/src/process-exit.js 0.32 kB │ gzip: 0.23 kB
ℹ dist/src/rolldown-runtime.js 0.31 kB │ gzip: 0.24 kB
ℹ dist/src/status-markers.js 0.30 kB │ gzip: 0.23 kB
ℹ dist/src/path-resolution.js 0.30 kB │ gzip: 0.23 kB
ℹ dist/src/app-resolution-facade.js 0.29 kB │ gzip: 0.19 kB
ℹ dist/src/surface-snapshot2.js 0.29 kB │ gzip: 0.21 kB
ℹ dist/src/response.js 0.28 kB │ gzip: 0.22 kB
ℹ dist/src/device-isolation.js 0.28 kB │ gzip: 0.21 kB
ℹ dist/src/string-enum.js 0.27 kB │ gzip: 0.23 kB
ℹ dist/src/toolchain-probe.js 0.27 kB │ gzip: 0.22 kB
ℹ dist/src/tool-provider-facade.js 0.27 kB │ gzip: 0.17 kB
ℹ dist/src/provider-webdriver.js 0.26 kB │ gzip: 0.20 kB
ℹ dist/src/app-inventory.js 0.26 kB │ gzip: 0.21 kB
ℹ dist/src/command-surface.js 0.25 kB │ gzip: 0.19 kB
ℹ dist/src/prepare-kind.js 0.25 kB │ gzip: 0.21 kB
ℹ dist/src/platform-runtime-android-mechanics.js 0.24 kB │ gzip: 0.18 kB
ℹ dist/src/session.js 0.24 kB │ gzip: 0.20 kB
ℹ dist/src/bounds.js 0.23 kB │ gzip: 0.17 kB
ℹ dist/src/macos-facade.js 0.22 kB │ gzip: 0.16 kB
ℹ dist/src/startup-recovery-fence.js 0.21 kB │ gzip: 0.16 kB
ℹ dist/src/platform-runtime-screen-recording-output-host.js 0.21 kB │ gzip: 0.18 kB
ℹ dist/src/inventory4.js 0.21 kB │ gzip: 0.18 kB
ℹ dist/src/clipboard.js 0.21 kB │ gzip: 0.15 kB
ℹ dist/src/plist-xml.js 0.20 kB │ gzip: 0.16 kB
ℹ dist/src/success-text.js 0.20 kB │ gzip: 0.14 kB
ℹ dist/src/audio-probe-runtime.js 0.19 kB │ gzip: 0.14 kB
ℹ dist/src/process-entry.js 0.19 kB │ gzip: 0.16 kB
ℹ dist/src/touch-reference-frame.js 0.19 kB │ gzip: 0.16 kB
ℹ dist/src/handler-utils.js 0.19 kB │ gzip: 0.15 kB
ℹ dist/src/interactor-types.js 0.18 kB │ gzip: 0.14 kB
ℹ dist/src/shared.js 0.18 kB │ gzip: 0.17 kB
ℹ dist/src/launch-console.js 0.18 kB │ gzip: 0.14 kB
ℹ dist/src/runner-selector-query.js 0.17 kB │ gzip: 0.16 kB
ℹ dist/src/timing-safe-equal.js 0.17 kB │ gzip: 0.14 kB
ℹ dist/src/metro2.js 0.17 kB │ gzip: 0.13 kB
ℹ dist/src/config2.js 0.16 kB │ gzip: 0.13 kB
ℹ dist/src/simulator-facade.js 0.15 kB │ gzip: 0.12 kB
ℹ dist/src/alert-contract.js 0.13 kB │ gzip: 0.14 kB
ℹ dist/src/cli-output.js 0.13 kB │ gzip: 0.13 kB
ℹ dist/src/sdk-finders.js 0.13 kB │ gzip: 0.13 kB
ℹ dist/src/screenshot2.js 0.13 kB │ gzip: 0.12 kB
ℹ dist/src/apple-os-display-names.js 0.12 kB │ gzip: 0.10 kB
ℹ dist/src/sdk-selectors.js 0.11 kB │ gzip: 0.12 kB
ℹ dist/src/inventory6.js 0.11 kB │ gzip: 0.12 kB
ℹ dist/src/keyboard-actions.js 0.10 kB │ gzip: 0.10 kB
ℹ dist/src/physical-device-facade.js 0.09 kB │ gzip: 0.10 kB
ℹ dist/src/simctl-facade.js 0.09 kB │ gzip: 0.09 kB
ℹ dist/src/runner-owner-facade.js 0.09 kB │ gzip: 0.09 kB
ℹ dist/src/doctor-progress.js 0.08 kB │ gzip: 0.09 kB
ℹ dist/src/numeric.js 0.08 kB │ gzip: 0.09 kB
ℹ dist/src/runner-owner-state.js 0.08 kB │ gzip: 0.09 kB
ℹ dist/src/timeouts.js 0.07 kB │ gzip: 0.09 kB
ℹ dist/src/app-lifecycle-facade.js 0.06 kB │ gzip: 0.08 kB
ℹ dist/src/screen-recording-runtime.js 0.04 kB │ gzip: 0.06 kB
ℹ dist/src/diagnostics2.js 0.03 kB │ gzip: 0.05 kB
ℹ dist/src/app-log-runtime.js 0.03 kB │ gzip: 0.05 kB
ℹ dist/src/gesture-plan-types.js 0.03 kB │ gzip: 0.05 kB
ℹ dist/src/limrun.d.ts 10.18 kB │ gzip: 2.60 kB
ℹ dist/src/metro.d.ts 4.42 kB │ gzip: 1.23 kB
ℹ dist/src/android-adb.d.ts 3.03 kB │ gzip: 0.85 kB
ℹ dist/src/ai-sdk.d.ts 2.88 kB │ gzip: 1.34 kB
ℹ dist/src/internal/png-worker.d.ts 1.45 kB │ gzip: 0.56 kB
ℹ dist/src/index.d.ts 0.65 kB │ gzip: 0.29 kB
ℹ dist/src/io.d.ts 0.63 kB │ gzip: 0.25 kB
ℹ dist/src/install-source.d.ts 0.58 kB │ gzip: 0.35 kB
ℹ dist/src/contracts.d.ts 0.56 kB │ gzip: 0.27 kB
ℹ dist/src/artifacts.d.ts 0.54 kB │ gzip: 0.25 kB
ℹ dist/src/selectors.d.ts 0.50 kB │ gzip: 0.21 kB
ℹ dist/src/remote-config.d.ts 0.37 kB │ gzip: 0.18 kB
ℹ dist/src/finders.d.ts 0.18 kB │ gzip: 0.13 kB
ℹ dist/src/internal/run-script-http-child.d.ts 0.16 kB │ gzip: 0.14 kB
ℹ dist/src/batch.d.ts 0.07 kB │ gzip: 0.08 kB
ℹ dist/src/internal/bin.d.ts 0.01 kB │ gzip: 0.03 kB
ℹ dist/src/internal/companion-tunnel.d.ts 0.01 kB │ gzip: 0.03 kB
ℹ dist/src/internal/daemon.d.ts 0.01 kB │ gzip: 0.03 kB
ℹ dist/src/internal/update-check-entry.d.ts 0.01 kB │ gzip: 0.03 kB
ℹ dist/src/client-types.d.ts 55.85 kB │ gzip: 14.26 kB
ℹ dist/src/sdk-selectors.d.ts 33.05 kB │ gzip: 10.06 kB
ℹ dist/src/sdk-contracts.d.ts 18.28 kB │ gzip: 6.43 kB
ℹ dist/src/device-input-state.d.ts 8.68 kB │ gzip: 2.60 kB
ℹ dist/src/sdk-remote-config.d.ts 6.72 kB │ gzip: 2.31 kB
ℹ dist/src/sdk-io.d.ts 2.30 kB │ gzip: 0.68 kB
ℹ dist/src/cloud-artifacts.d.ts 2.10 kB │ gzip: 0.75 kB
ℹ dist/src/sdk-batch-runner.d.ts 1.66 kB │ gzip: 0.74 kB
ℹ dist/src/sdk-finders.d.ts 1.11 kB │ gzip: 0.50 kB
ℹ dist/src/app-inventory.d.ts 0.14 kB │ gzip: 0.13 kB
ℹ 366 files, total: 2.67 MB
✔ Build complete in 4280ms

[run] vitest-related: pnpm exec vitest related --run --passWithNoTests --maxWorkers=4 src/commands/interaction/runtime/tests/test-utils/index.ts src/core/interaction-targeting.fixtures.ts src/core/interaction-targeting.test.ts src/core/interaction-targeting.ts src/core/selector-pipeline.test.ts src/daemon/handlers/tests/interaction-touch-press.test.ts
[WARN] This project is configured to use 11.17.0 of pnpm. Your current pnpm is v11.21.0

RUN v4.1.11 /Users/thymikee/.codex/worktrees/9b0a/agent-device

✓ |interaction-contract| test/integration/interaction-contract/target-drag.contract.test.ts (6 tests) 2776ms
✓ target-drag responseConstruction: daemon response carries the canonical dual-target gesture shape 2767ms
✓ |interaction-contract| test/integration/interaction-contract/coordinate.contract.test.ts (6 tests) 4732ms
✓ coordinate errorTaxonomy: backend failure surfaces as a normalized daemon error 2329ms
✓ coordinate responseConstruction: daemon press x y response carries the canonical point field set 1323ms
✓ coordinate resolutionDisclosure: inapplicable — no resolution field is attached 1045ms
✓ |interaction-contract| test/integration/interaction-contract/runtime-ref.contract.test.ts (11 tests) 2108ms
✓ runtime-ref responseConstruction: daemon press @ref response carries the canonical ref field set 2067ms
✓ |interaction-contract| test/integration/interaction-contract/maestro-fallback.contract.test.ts (4 tests) 6404ms
✓ maestro-non-hittable-fallback responseConstruction: fallback tap response carries the canonical field set and fallback markers 2359ms
✓ runtime fill the coordinate fallback did not execute keeps its resolution disclosure 1582ms
✓ Maestro fill of a non-hittable input resolves through the runtime path 1425ms
✓ maestro-non-hittable-fallback offscreen: runner rejects an element without a tappable frame 1035ms
✓ |interaction-contract| test/integration/interaction-contract/native-ref.contract.test.ts (8 tests) 43ms
✓ |interaction-contract| test/integration/interaction-contract/resolution-disclosure-mutation.contract.test.ts (2 tests) 5ms
✓ |interaction-contract| test/integration/interaction-contract/runtime-selector.contract.test.ts (14 tests) 1685ms
✓ runtime-selector responseConstruction: daemon press response carries the canonical selector field set 1639ms
✓ |output-economy| test/output-economy/routine-workflow.test.ts (7 tests) 4ms
✓ |output-economy| test/output-economy/output-economy.baseline.test.ts (14 tests) 8ms
✓ |interaction-contract| test/integration/interaction-contract/maestro-direct-selector.contract.test.ts (1 test) 1647ms
✓ maestro-direct-selector responseConstruction and resolutionDisclosure: allowed fallback not taken keeps direct-iOS resolution 1646ms
✓ |interaction-contract| test/integration/interaction-contract/interaction-response-shape.contract.test.ts (10 tests) 13118ms
✓ interaction response shape: press @ref uses the canonical ref envelope 2370ms
✓ interaction response shape: fill @ref uses the canonical ref envelope 1560ms
✓ interaction response shape: longpress @ref uses the canonical ref envelope 1527ms
✓ interaction response shape: press selector uses the canonical selector envelope 1093ms
✓ interaction response shape: fill selector uses the canonical selector envelope 1072ms
✓ interaction response shape: longpress selector uses the canonical selector envelope 1218ms
✓ interaction response shape: press point uses the canonical point envelope 881ms
✓ interaction response shape: fill point uses the canonical point envelope 898ms
✓ interaction response shape: type tolerates a zero-sized runner reference frame 1117ms
✓ interaction response shape: longpress point uses the canonical point envelope 1379ms
✓ |provider-integration| test/integration/provider-scenarios/active-session-script-publication.test.ts (8 tests) 9430ms
✓ provider route publishes and replays an open-to-destination script with a live handoff 1532ms
✓ provider route can suppress an authored terminal close for a live replay handoff 822ms
✓ replaying a published script against a reshuffled screen fails closed instead of false-passing the guard 2456ms
✓ a second successful open aborts publication and terminal save flags fail before close 539ms
✓ an armed session still publishes target-v1 evidence through close --save-script 551ms
✓ parameterized fill publishes only ${VAR} and replay resolves it immediately before fill 2187ms
#1398: a read-only wait recorded after a parameterized fill never re-serializes an app-rendered echo, and cannot serve as the destination guard 952ms
✓ |provider-integration| test/integration/provider-scenarios/android-lifecycle.test.ts (12 tests) 11273ms
✓ Provider-backed integration Android Settings flow uses scripted ADB provider 8140ms
✓ Provider-backed integration Android text provider handles Unicode without shell input text 813ms
✓ |provider-integration| test/integration/provider-scenarios/apple-platform-output-guard.test.ts (3 tests) 8439ms
✓ macOS Apple session never emits the internal apple platform on the wire 1206ms
✓ iOS-simulator Apple session never emits the internal apple platform on the wire 7231ms
✓ |provider-integration| test/integration/provider-scenarios/android-test-suite.test.ts (7 tests) 15385ms
✓ Provider-backed integration Android replay test suite covers retries and fail-fast flags 1860ms
✓ Provider-backed integration Android Maestro refreshes action geometry and preserves authored swipe points 1388ms
✓ Provider-backed integration Android Maestro replay test suite discovers YAML flows in directories 1206ms
✓ Provider-backed integration Android Maestro types after tapOn inputText without trailing Enter 1160ms
✓ Provider-backed integration Android Maestro preserves authored inputText then pressKey Enter 1320ms
✓ Provider-backed integration Android Maestro executes runFlow conditions and retry batches at runtime 628ms
✓ Provider-backed integration Android Maestro optional tap misses without touching the device 7816ms
✓ |provider-integration| test/integration/provider-scenarios/doctor.test.ts (9 tests) 6570ms
✓ Provider-backed integration doctor infers Android RN/Metro readiness through daemon route without resolving a default device 940ms
✓ Provider-backed integration doctor runs predictably for supported platform selectors 2149ms
✓ Provider-backed integration doctor probes Metro when runtime metadata exists outside an RN project 2711ms
✓ |provider-integration| test/integration/provider-scenarios/settle-observation.test.ts (4 tests) 6156ms
✓ Provider-backed integration press --settle returns the settled diff and fresh refs 1950ms
✓ Provider-backed integration never-settled press --settle does not issue diff refs 1304ms
✓ Provider-backed integration modal-dismiss press --settle attaches the unchanged interactive tail 1832ms
✓ Provider-backed integration fill --settle summoning the keyboard still attaches the unchanged interactive tail 1069ms
✓ |provider-integration| test/integration/provider-scenarios/ios-lifecycle.test.ts (3 tests) 5942ms
✓ Provider-backed integration iOS Settings flow uses scripted simctl and runner providers 4086ms
✓ Provider-backed integration iOS regular snapshot preserves fixed bottom tabs after scroll content 1439ms
✓ |provider-integration| test/integration/provider-scenarios/interaction-direct-selector-fallback.test.ts (4 tests) 3727ms
✓ Provider-backed iOS selector wait accepts the owner observation and strips selectorChain 1392ms
✓ Provider-backed iOS selector wait falls through to capture after an owner miss 902ms
✓ Provider-backed integration maestro replay dispatch keeps runner AMBIGUOUS_MATCH without fallback 721ms
✓ Provider-backed integration maestro replay dispatch keeps runner ELEMENT_OFFSCREEN without fallback 710ms
✓ |provider-integration| test/integration/provider-scenarios/cloud-webdriver-ios-text-entry.test.ts (4 tests) 4495ms
✓ cloud iOS fill refuses, without typing, when nothing takes focus 2009ms
✓ cloud iOS fill sends no keys when a keyboard-up tap misses the second field 2003ms
✓ |provider-integration| test/integration/provider-scenarios/record-trace-android-copy.test.ts (1 test) 2778ms
✓ Provider-backed integration Android record stop retries the pull until in-place moov finalization lands 2777ms
✓ |provider-integration| test/integration/provider-scenarios/macos-recording.test.ts (3 tests) 3056ms
✓ Provider-backed integration macOS recording uses focused exact runner authority 805ms
✓ Provider-backed integration macOS recording rejects an invalid MP4 before artifact publication 2191ms
✓ |provider-integration| test/integration/provider-scenarios/tvos-remote.test.ts (1 test) 1987ms
✓ Provider-backed integration tvOS remote flow maps navigation commands to runner remote presses 1983ms
✓ |provider-integration| test/integration/provider-scenarios/stale-ref-warning.test.ts (2 tests) 2364ms
✓ Provider-backed integration iOS @refs reject after a selector press replaces the tree 1412ms
✓ Provider-backed iOS press rejects a stale ref after navigation 950ms
✓ |provider-integration| test/integration/provider-scenarios/interaction-verify.test.ts (1 test) 1934ms
✓ Provider-backed integration press --verify returns post-action evidence digest 1933ms
✓ |provider-integration| test/integration/provider-scenarios/ios-record-trace.test.ts (2 tests) 2905ms
✓ generic scoped iOS physical runner recording fails closed without local fallback 550ms
✓ Provider-backed integration iOS simulator recording flow uses the focused Apple transport 2351ms
✓ |provider-integration| test/integration/provider-scenarios/versioned-refs.test.ts (1 test) 1370ms
✓ Provider-backed integration rejects stale pinned @refs and accepts current pins 1369ms
✓ |provider-integration| test/integration/provider-scenarios/web-desktop.test.ts (1 test) 876ms
✓ Provider-backed integration web desktop flow uses semantic web provider calls 874ms
✓ |provider-integration| test/integration/provider-scenarios/android-recording.test.ts (5 tests) 1633ms
✓ Provider-backed integration Android record start and stop use the composed scoped runtime 867ms
✓ Provider-backed integration Android record stop reattaches a matching durable descriptor 658ms
✓ |provider-integration| test/integration/provider-scenarios/linux-desktop.test.ts (1 test) 780ms
✓ Provider-backed integration Linux desktop flow uses semantic desktop and input providers 778ms
✓ |provider-integration| test/integration/provider-scenarios/replay-repair-abort-close.test.ts (1 test) 801ms
✓ Provider-backed integration: repair close paths (abort, plain close, committed) 800ms
✓ |provider-integration| test/integration/provider-scenarios/cloud-webdriver-runtime.test.ts (6 tests) 773ms
✓ |provider-integration| test/integration/provider-scenarios/session-close-leak-oracle.test.ts (1 test) 985ms
✓ Provider-backed integration closing a recording session leaves no unfinalized capture handle 984ms
✓ |provider-integration| test/integration/provider-scenarios/android-find.test.ts (1 test) 748ms
✓ Provider-backed integration Android find flow covers refs, wait, ambiguity, and first/last selection 747ms
✓ |provider-integration| test/integration/provider-scenarios/replay-repair-record-exclusion.test.ts (1 test) 547ms
✓ Provider-backed integration: a repair-armed segment excludes diagnostic reads by default and --record forces the corrective read into the heal 546ms
✓ |provider-integration| test/integration/provider-scenarios/record-trace-android-liveness.test.ts (1 test) 896ms
✓ Provider-backed integration Android record stop finishes an artifact after a dead-pid reattach 896ms
✓ |provider-integration| test/integration/provider-scenarios/no-record-recorder-routes.test.ts (1 test) 607ms
✓ --no-record keeps gesture/back/home out of a recorded session script 606ms
✓ |provider-integration| test/integration/provider-scenarios/macos-desktop.test.ts (2 tests) 955ms
✓ Provider-backed integration macOS desktop flow uses semantic host and helper providers 552ms
✓ |provider-integration| test/integration/provider-scenarios/web-provider.test.ts (1 test) 138ms
✓ |provider-integration| test/integration/provider-scenarios/daemon-command-policy.test.ts (1 test) 134ms
✓ |provider-integration| test/integration/provider-scenarios/provider-ios-runner-transport.test.ts (3 tests) 206ms
✓ |provider-integration| test/integration/provider-scenarios/vega-tv-remote.test.ts (1 test) 170ms
✓ |provider-integration| test/integration/provider-scenarios/apple-app-log-runtime-provider.test.ts (1 test) 113ms
✓ |provider-integration| test/integration/provider-scenarios/ios-alert-settings.test.ts (1 test) 234ms
✓ |provider-integration| test/integration/provider-scenarios/provider-failures.test.ts (1 test) 240ms
✓ |provider-integration| test/integration/provider-scenarios/daemon-http-server.test.ts (10 tests) 140ms
✓ |provider-integration| test/integration/provider-scenarios/remote-daemon-client.test.ts (6 tests) 79ms
✓ |provider-integration| test/integration/provider-scenarios/provider-ios-selector-runtime.test.ts (1 test) 151ms
✓ |provider-integration| test/integration/provider-scenarios/remote-proxy-artifact-tenant.test.ts (1 test) 49ms
✓ |provider-integration| test/integration/provider-scenarios/provider-device-runtime.test.ts (4 tests) 174ms
✓ |provider-integration| test/integration/provider-scenarios/network-runtime-provider.test.ts (1 test) 169ms
✓ |provider-integration| test/integration/provider-scenarios/cloud-webdriver-provider-adapters.test.ts (5 tests) 16ms
✓ |provider-integration| test/integration/provider-scenarios/android-tv-remote.test.ts (1 test) 65ms
✓ |provider-integration| test/integration/provider-scenarios/cloud-webdriver-provider-regressions.test.ts (5 tests) 22ms
✓ |provider-integration| test/integration/provider-scenarios/batch-flags.test.ts (1 test) 113ms
✓ |provider-integration| test/integration/provider-scenarios/provider-command-dispatch.test.ts (2 tests) 4ms
✓ |provider-integration| test/integration/provider-scenarios/android-recording-provider-fixtures.test.ts (1 test) 6ms
✓ |unit-core| src/daemon/handlers/tests/session-open-runtime.test.ts (7 tests) 4113ms
✓ open applies stored runtime launchUrl and reports runtime hints 674ms
✓ open applies launch-only flags only to the direct app launch before runtime launchUrl 1388ms
✓ open --metro-port alone defaults the host to 127.0.0.1 on an iOS simulator 1556ms
✓ |unit-core| src/tests/client-metro.test.ts (20 tests) 5719ms
✓ prepareMetroRuntime starts Metro, bridges through proxy, and writes runtime file when requested 605ms
✓ prepareMetroRuntime starts Re.Pack with rspack-start for rspack.config.ts 565ms
✓ prepareMetroRuntime starts Re.Pack with webpack-start for webpack.config.js 563ms
✓ prepareMetroRuntime maps kind=expo to the virtual-metro-entry bundle URL 563ms
✓ prepareMetroRuntime keeps index.bundle for non-expo kinds 564ms
✓ prepareMetroRuntime detects the package manager from an ancestor lockfile in a monorepo 1092ms
✓ metro reload targets the dev server bound by metro prepare in the same session 579ms
✓ metro prepare --kind expo keeps a prefixed public base URL for session reload 575ms
✓ |unit-core| scripts/tests/help-conformance-bench.test.ts (32 tests) 5501ms
✓ invalid repeat counts and mixed known/unknown case ids fail before a report is written 595ms
✓ plan validator strips shell comments without mutating command arguments 540ms
✓ |unit-core| src/daemon/handlers/tests/snapshot-handler.test.ts (41 tests) 6399ms
✓ snapshot warns when Android freshness retries still return the previous route 1259ms
✓ diff snapshot carries stale-tree warnings for recent Android presses 1257ms
✓ captureSnapshot lazily retries pending no-change touch before returning fresh state 503ms
✓ captureSnapshot does not retry when a tap change appears after a short delay 502ms
✓ captureSnapshot retries pending tap outcome before post-gesture stabilization 705ms
✓ |unit-core| src/tests/daemon-entrypoint.test.ts (5 tests) 1692ms
✓ daemon entrypoint publishes HTTP metadata and cleans up on shutdown 854ms
✓ |unit-core| src/daemon/tests/device-claim-admission.test.ts (11 tests) 2060ms
✓ an abandoned claim becomes this command's own transient claim and is released 864ms
✓ |unit-core| src/daemon/handlers/tests/snapshot-alert.test.ts (3 tests) 3136ms
✓ alert accept adds a scoped-snapshot hint after retrying alert-not-found failures 2114ms
✓ alert dismiss retries a typed absence whatever the message says 604ms
✓ |unit-core| src/daemon/tests/wait-runtime.test.ts (20 tests) 1586ms
✓ |unit-core| src/daemon/handlers/tests/session-open-execution-runtime.test.ts (6 tests) 1482ms
✓ |unit-core| src/tests/cli-diagnostics.test.ts (13 tests) 881ms
✓ cli debug log tail starts at the current daemon log end 509ms
✓ |unit-core| src/daemon/handlers/tests/session-boot-shutdown-device-claims.test.ts (4 tests) 1820ms
✓ shutdown refuses a device held by a foreign live claim and never reaches the device 697ms
✓ boot refuses a device held by a foreign live claim and never reaches the device 612ms
✓ |unit-core| src/daemon/handlers/tests/session-close-error-precedence.test.ts (5 tests) 1081ms
✓ |unit-core| src/daemon/handlers/tests/find.test.ts (28 tests) 639ms
✓ |unit-core| src/daemon/tests/request-router-screenshot.test.ts (16 tests) 498ms
✓ |unit-core| src/daemon/handlers/tests/system-surface-disclosure.test.ts (8 tests) 522ms
✓ |unit-core| src/daemon/handlers/tests/wait-landmark-recording.test.ts (5 tests) 619ms
✓ a replayed wait with a landmark guard refuses at the deadline when only impostors matched 603ms
✓ |unit-core| src/daemon/handlers/tests/session-test-runner.test.ts (9 tests) 386ms
✓ |unit-core| src/daemon/tests/request-router-lock-policy.test.ts (9 tests) 468ms
✓ |unit-core| src/daemon/tests/request-save-script-transports.test.ts (8 tests) 197ms
✓ |unit-core| src/daemon/tests/request-router-open.test.ts (13 tests) 581ms
✓ |unit-core| src/daemon/tests/request-router-android-snapshot-helper.test.ts (2 tests) 574ms
✓ |unit-core| src/tests/cli-config.test.ts (28 tests) 620ms
✓ |unit-core| src/commands/tests/command-explain.test.ts (25 tests) 613ms
✓ prints the formatted explanation to stdout and exits 0 509ms
Installed: com.example.demo
Installed: com.example.demo
Installed: com.example.demo
Installed: com.example.demo
/tmp/screenshot.png
Opened: MenuBarApp
Opened: Agent Device Tester
✓ |unit-core| src/daemon/handlers/tests/session-teardown-resources.test.ts (10 tests) 251ms
✓ |unit-core| src/tests/cli-client-commands.test.ts (30 tests) 201ms
✓ |unit-core| src/commands/interaction/runtime/selector-wait-stable.test.ts (11 tests) 271ms
✓ |unit-core| src/commands/interaction/runtime/selector-read.test.ts (25 tests) 256ms
✓ |unit-core| scripts/fuzz/validation-arbitraries-maestro.test.ts (7 tests) 338ms
✓ |unit-core| src/daemon/handlers/tests/session-test-suite.test.ts (17 tests) 480ms
✓ |unit-core| src/daemon/server/daemon-runtime-idle-reap.test.ts (2 tests) 425ms
✓ |unit-core| src/daemon/tests/request-router-typed-error.test.ts (6 tests) 469ms
✓ |unit-core| src/cli-schema/cli-help-topics.test.ts (26 tests) 91ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-direct-ios-eligibility.test.ts (4 tests) 229ms
✓ |unit-core| src/daemon/tests/request-execution-scope.test.ts (28 tests) 118ms
✓ |unit-core| src/daemon/tests/request-router-replay-scope.test.ts (4 tests) 218ms
✓ |unit-core| scripts/fuzz/validation-arbitraries-cli.test.ts (15 tests) 186ms
✓ |unit-core| src/tests/cli-diff.test.ts (13 tests) 246ms
✓ |unit-core| src/daemon/handlers/tests/session-relaunch-close.test.ts (18 tests) 331ms
✓ |unit-core| src/daemon/handlers/tests/session-logs.test.ts (15 tests) 192ms
✓ |unit-core| src/daemon/handlers/tests/session-close-lifecycle-runtime.test.ts (6 tests) 177ms
✓ |unit-core| src/daemon/handlers/tests/interaction-settle.test.ts (9 tests) 201ms
✓ |unit-core| src/daemon/handlers/tests/session-open-url-prewarm.test.ts (16 tests) 181ms
✓ |unit-core| src/daemon/tests/generic-settle.test.ts (7 tests) 177ms
✓ |unit-core| src/tests/client.test.ts (47 tests) 70ms
✓ |unit-core| src/daemon/server/daemon-runtime-lifecycle-shutdown.test.ts (1 test) 141ms
✓ |unit-core| src/daemon/tests/request-handler-catalog.test.ts (10 tests) 158ms
✓ |unit-core| src/daemon/tests/request-handler-chain.test.ts (10 tests) 197ms
✓ |unit-core| src/commands/management/output.test.ts (12 tests) 148ms
✓ |unit-core| src/daemon/tests/request-router-session-address.test.ts (4 tests) 207ms
✓ |unit-core| src/daemon/handlers/tests/session-open-existing.test.ts (9 tests) 219ms
✓ |unit-core| src/daemon/tests/request-router-record-runtime-lock.test.ts (3 tests) 152ms
✓ |unit-core| src/tests/cli-config-trust.test.ts (19 tests) 130ms
✓ |unit-core| src/commands/batch/cli.test.ts (27 tests) 86ms
✓ |unit-core| src/ai-sdk/tests/index.test.ts (6 tests) 63ms
✓ |unit-core| src/daemon/handlers/tests/session-device-claims.test.ts (10 tests) 114ms
✓ |unit-core| src/commands/capture/runtime/diff-screenshot.test.ts (5 tests) 173ms
✓ |unit-core| src/daemon/tests/request-router-events.test.ts (7 tests) 243ms
✓ |unit-core| src/daemon/handlers/tests/session-reinstall.test.ts (6 tests) 167ms
✓ |unit-core| src/tests/cli-network.test.ts (21 tests) 238ms
✓ |unit-core| src/daemon/handlers/tests/session-relaunch-guards.test.ts (9 tests) 180ms
✓ |unit-core| src/daemon/handlers/tests/session-close-resource-cleanup.test.ts (4 tests) 135ms
✓ |unit-core| src/daemon/tests/request-runtime-binding-router.test.ts (2 tests) 162ms
✓ |unit-core| src/daemon/server/daemon-runtime-recording-teardown.test.ts (3 tests) 73ms
✓ |unit-core| src/tests/cli-perf.test.ts (24 tests) 54ms
✓ |unit-core| src/daemon/handlers/tests/interaction-settle-private-ax-route.test.ts (1 test) 157ms
✓ |unit-core| src/daemon/tests/request-router-android-perf.test.ts (1 test) 206ms
✓ |unit-core| src/tests/cli-help.test.ts (28 tests) 208ms
✓ |unit-core| src/tests/cloud-connect-profile.test.ts (19 tests) 105ms
✓ |unit-core| src/daemon/tests/request-router-repair-expired.test.ts (5 tests) 172ms
✓ |unit-core| src/daemon/handlers/tests/session-close-save-script.test.ts (2 tests) 98ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-fill.test.ts (6 tests) 66ms
✓ |unit-core| src/tests/cli-remote-diagnostics.test.ts (4 tests) 91ms
✓ |unit-core| src/daemon/tests/request-router-recording-health.test.ts (2 tests) 166ms
✓ |unit-core| src/cli-schema/cli-help-command-usage.test.ts (42 tests) 180ms
✓ |unit-core| src/daemon/handlers/tests/session-devices-batch-runtime.test.ts (11 tests) 101ms
✓ |unit-core| src/daemon/tests/request-router-replay-env.test.ts (2 tests) 207ms
✓ |unit-core| src/tests/cli-exit-paths.test.ts (6 tests) 138ms
✓ |unit-core| src/daemon/handlers/tests/session-capabilities.test.ts (15 tests) 110ms
✓ |unit-core| src/tests/cli-replay-script-sources.test.ts (3 tests) 150ms
✓ |unit-core| src/daemon/tests/selector-runtime.test.ts (5 tests) 68ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-press-admission.test.ts (13 tests) 50ms
✓ |unit-core| src/daemon/handlers/tests/interaction-target-evidence.test.ts (9 tests) 65ms
✓ |unit-core| src/cli-schema/cli-help-overview.test.ts (3 tests) 84ms
✓ |unit-core| src/utils/tests/perf-args.test.ts (2 tests) 93ms
✓ |unit-core| src/daemon/tests/offscreen-target-probe.test.ts (6 tests) 79ms
✓ |unit-core| src/tests/cli-debug-symbols.test.ts (3 tests) 65ms
✓ |unit-core| src/daemon/handlers/tests/session-close-shutdown-platform.test.ts (7 tests) 87ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-runtime.test.ts (5 tests) 91ms
✓ |unit-core| src/daemon/tests/daemon-runtime-app-log.test.ts (3 tests) 80ms
✓ |unit-core| src/daemon/selector-runtime-backend.test.ts (2 tests) 58ms
✓ |unit-core| src/daemon/tests/request-router-response-level.test.ts (6 tests) 67ms
✓ |unit-core| src/tests/cli-device-status.test.ts (5 tests) 76ms
✓ |unit-core| src/daemon/handlers/tests/session-runtime-command.test.ts (5 tests) 43ms
✓ |unit-core| src/daemon/handlers/tests/session-boot-shutdown.test.ts (14 tests) 61ms
✓ |unit-core| src/commands/interaction/runtime/settle.test.ts (31 tests) 65ms
✓ |unit-core| src/commands/interaction/runtime/gestures.test.ts (15 tests) 58ms
✓ |unit-core| src/mcp/tests/router.test.ts (16 tests) 74ms
✓ |unit-core| src/daemon/handlers/tests/session-test-reporter-values.test.ts (4 tests) 46ms
✓ |unit-core| src/commands/interaction/runtime/interactions.test.ts (24 tests) 56ms
✓ |unit-core| src/daemon/handlers/tests/interaction-ios-tap-outcome.test.ts (16 tests) 59ms
✓ |unit-core| src/tests/cli-web.test.ts (2 tests) 53ms
✓ |unit-core| src/daemon/tests/snapshot-custom-actions-platform-guard.test.ts (7 tests) 52ms
✓ |unit-core| src/daemon/tests/request-router-record-flags.test.ts (2 tests) 69ms
✓ |unit-core| src/mcp/tests/command-tools.test.ts (46 tests) 53ms
✓ |unit-core| src/daemon/tests/request-router-custom-action-flags.test.ts (3 tests) 65ms
✓ |unit-core| src/daemon/tests/wait-conditional-selector.test.ts (4 tests) 16ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-response.test.ts (7 tests) 28ms
✓ |unit-core| src/daemon/handlers/tests/session-test-reporter-values-maestro.test.ts (2 tests) 33ms
✓ |unit-core| src/daemon/server/daemon-runtime-web-close-teardown.test.ts (5 tests) 20ms
✓ |unit-core| src/daemon/handlers/tests/session-install-source-ref-frame.test.ts (3 tests) 33ms
✓ |unit-core| src/daemon/handlers/tests/session-test-suite-infrastructure.test.ts (2 tests) 35ms
✓ |unit-core| src/daemon/tests/request-router-cost.test.ts (6 tests) 16ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-payload.test.ts (7 tests) 27ms
✓ |unit-core| src/daemon/handlers/tests/session-push.test.ts (6 tests) 35ms
✓ |unit-core| src/daemon/handlers/tests/session-state-boot-warmup.test.ts (1 test) 25ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-press.test.ts (8 tests) 22ms
✓ |unit-core| src/mcp/tests/command-tools-nested-admission.test.ts (6 tests) 25ms
✓ |unit-core| src/daemon/tests/request-router-android-modal.test.ts (3 tests) 19ms
✓ |unit-core| src/daemon/handlers/tests/session-command-replay.test.ts (6 tests) 14ms
✓ |unit-core| src/tests/cli-close.test.ts (6 tests) 25ms
✓ |unit-core| src/daemon/tests/snapshot-quality-latch.test.ts (10 tests) 23ms
✓ |unit-core| src/daemon/tests/viewport-runtime.test.ts (5 tests) 12ms
✓ |unit-core| src/daemon/handlers/tests/interaction.test.ts (16 tests) 33ms
✓ |unit-core| src/cli-schema/cli-help-examples.test.ts (4 tests) 19ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-android-freshness.test.ts (4 tests) 23ms
✓ |unit-core| src/daemon/tests/sparse-fallback-screenshot.test.ts (4 tests) 51ms
✓ |unit-core| src/commands/management/app.test.ts (7 tests) 12ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch.test.ts (12 tests) 22ms
✓ |unit-core| src/daemon/handlers/tests/session-network-runtime-parity.test.ts (13 tests) 10ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-android-readiness.test.ts (7 tests) 18ms
✓ |unit-core| src/daemon/handlers/tests/snapshot-scoped-refs.test.ts (3 tests) 16ms
✓ |unit-core| src/daemon/handlers/tests/interaction-common.test.ts (5 tests) 22ms
✓ |unit-core| src/daemon/tests/snapshot-diff-runtime.test.ts (7 tests) 21ms
✓ |unit-core| src/commands/interaction/runtime/resolution.test.ts (22 tests) 13ms
✓ |unit-core| src/daemon/handlers/tests/session-test-fail-fast.test.ts (1 test) 16ms
✓ |unit-core| src/mcp/tests/command-tools-parity.test.ts (4 tests) 16ms
✓ |unit-core| src/daemon/handlers/tests/session-push-ref-frame.test.ts (2 tests) 35ms
✓ |unit-core| src/daemon/tests/screenshot-runtime.test.ts (7 tests) 38ms
✓ |unit-core| src/daemon/handlers/tests/session-selector-dispatch.test.ts (4 tests) 24ms
✓ |unit-core| src/tests/cli-record-flag-delivery.test.ts (4 tests) 18ms
✓ |unit-core| src/commands/interaction/runtime/stable-capture.test.ts (10 tests) 111ms
✓ |unit-core| src/tests/command-doc-coverage.test.ts (11 tests) 15ms
✓ |unit-core| src/daemon/tests/is-runtime.test.ts (7 tests) 86ms
✓ |unit-core| src/daemon/tests/focus-runtime.test.ts (6 tests) 41ms
✓ |unit-core| src/daemon/tests/selector-capture-binding.test.ts (10 tests) 16ms
✓ |unit-core| src/tests/cli-react-devtools-session.test.ts (2 tests) 34ms
✓ |unit-core| src/tests/cli-auth-diagnostics.test.ts (1 test) 33ms
✓ |unit-core| src/daemon/handlers/tests/interaction-gesture-drag.test.ts (2 tests) 24ms
✓ |unit-core| src/daemon/tests/tv-remote-runtime.test.ts (8 tests) 37ms
✓ |unit-core| src/commands/interaction/runtime/settle-transition-baseline.test.ts (2 tests) 32ms
✓ |unit-core| src/daemon/tests/home-runtime.test.ts (3 tests) 28ms
✓ |unit-core| src/tests/cli-session-state-dir.test.ts (2 tests) 28ms
✓ |unit-core| src/daemon/handlers/tests/session-test-suite-command-video.test.ts (1 test) 22ms
✓ |unit-core| src/daemon/tests/back-runtime.test.ts (4 tests) 14ms
✓ |unit-core| src/tests/cli-clipboard.test.ts (2 tests) 29ms
✓ |unit-core| src/cli-schema/command-schema-guards.test.ts (5 tests) 35ms
✓ |unit-core| src/daemon/tests/orientation-runtime.test.ts (6 tests) 18ms
✓ |unit-core| src/cli/parser/tests/maestro-support-matrix.test.ts (3 tests) 14ms
✓ |unit-core| src/daemon/handlers/tests/session-capabilities-install-projection.test.ts (4 tests) 12ms
✓ |unit-core| src/daemon/handlers/tests/find-single-bind.test.ts (2 tests) 11ms
✓ |unit-core| src/tests/contracts-schema-public.test.ts (7 tests) 4ms
✓ |unit-core| src/daemon/handlers/tests/interaction-type-android-readiness.test.ts (1 test) 20ms
✓ |unit-core| src/commands/tests/command-surface-metadata.test.ts (14 tests) 17ms
✓ |unit-core| src/cli/commands/tests/screenshot.test.ts (2 tests) 5ms
✓ |unit-core| src/daemon/server/daemon-runtime-web-cleanup.test.ts (2 tests) 24ms
✓ |unit-core| src/cli/parser/tests/args-validation.test.ts (19 tests) 12ms
✓ |unit-core| src/cli/parser/tests/command-suggestions.test.ts (22 tests) 15ms
✓ |unit-core| src/daemon/handlers/tests/interaction-touch-direct-ios.test.ts (3 tests) 11ms
✓ |unit-core| src/tests/cli-agent-cdp-session.test.ts (1 test) 18ms
✓ |unit-core| src/daemon/tests/generic-route-runtime-completeness.test.ts (3 tests) 11ms
✓ |unit-core| src/commands/system/index.test.ts (18 tests) 7ms
✓ |unit-core| src/commands/interaction/runtime/offscreen-double-check.test.ts (4 tests) 6ms
✓ |unit-core| src/tests/cli-logs.test.ts (1 test) 21ms
✓ |unit-core| src/commands/capture/runtime/snapshot.test.ts (22 tests) 12ms
✓ |unit-core| src/daemon/tests/snapshot-command-runtime.test.ts (2 tests) 8ms
✓ |unit-core| src/daemon/handlers/tests/session-open-foreground.test.ts (13 tests) 6ms
✓ |unit-core| src/commands/management/session.test.ts (6 tests) 8ms
✓ |unit-core| scripts/tests/help-conformance-sample-outputs.test.ts (14 tests) 13ms
✓ |unit-core| src/daemon/tests/request-router-artifacts-web.test.ts (1 test) 12ms
✓ |unit-core| src/core/selector-pipeline.test.ts (11 tests) 4ms
✓ |unit-core| src/commands/interaction/runtime/tests/selector-read-policy.test.ts (11 tests) 8ms
✓ |unit-core| src/commands/interaction/runtime/selector-wait.test.ts (9 tests) 12ms
✓ |unit-core| src/tests/runtime-public.test.ts (8 tests) 7ms
✓ |unit-core| src/cli/parser/tests/args-parse-session.test.ts (47 tests) 12ms
✓ |unit-core| src/daemon/tests/snapshot-presentation-transitions.test.ts (4 tests) 9ms
✓ |unit-core| src/core/command-descriptor/tests/post-action-observation.test.ts (9 tests) 11ms
✓ |unit-core| src/core/interaction-targeting.test.ts (16 tests) 10ms
✓ |unit-core| src/mcp/tests/command-tools-operator-inputs.test.ts (8 tests) 10ms
✓ |unit-core| src/daemon/handlers/tests/session-replay-target-guard.test.ts (7 tests) 12ms
✓ |unit-core| src/daemon/handlers/tests/find-match-ranking.test.ts (4 tests) 4ms
✓ |unit-core| src/daemon/handlers/tests/session-appstate-input-perf.test.ts (8 tests) 8ms
✓ |unit-core| src/commands/management/runtime/apps.test.ts (5 tests) 6ms
✓ |unit-core| src/cli-schema/option-schema.test.ts (8 tests) 5ms
✓ |unit-core| src/commands/interaction/gesture.test.ts (4 tests) 9ms
✓ |unit-core| src/daemon/tests/interaction-retry-tap.test.ts (4 tests) 5ms
✓ |unit-core| src/commands/interaction/runtime/resolution-touch-point.test.ts (1 test) 5ms
✓ |unit-core| src/cli/parser/tests/args-parse-interaction.test.ts (33 tests) 11ms
✓ |unit-core| src/tests/is-argument-surface-parity.test.ts (2 tests) 3ms
✓ |unit-core| src/tests/cli-grammar.test.ts (10 tests) 7ms
✓ |unit-core| src/daemon/handlers/tests/session-runtime-admission.test.ts (6 tests) 5ms
✓ |unit-core| src/daemon/handlers/tests/session-trigger.test.ts (1 test) 4ms
✓ |unit-core| src/commands/interaction/runtime/selector-wait-cancellation.test.ts (2 tests) 4ms
✓ |unit-core| src/mcp/tests/tool-ref-pins.test.ts (23 tests) 7ms
✓ |unit-core| src/commands/observability/runtime/diagnostics-router.test.ts (2 tests) 4ms
✓ |unit-core| src/daemon/handlers/tests/session-network.test.ts (2 tests) 6ms
✓ |unit-core| src/commands/system/runtime/system.test.ts (3 tests) 4ms
✓ |unit-core| src/daemon/server/daemon-runtime-device-claims.test.ts (2 tests) 5ms
✓ |unit-core| src/commands/interaction/runtime/index.test.ts (1 test) 7ms
✓ |unit-core| src/cli/commands/tests/generic.test.ts (1 test) 5ms
✓ |unit-core| src/commands/interaction/metadata.test.ts (4 tests) 7ms
✓ |unit-core| src/daemon/handlers/snapshot-runtime-route.test.ts (2 tests) 3ms
✓ |unit-core| src/commands/interaction/runtime/selector-action-resolution.test.ts (2 tests) 4ms
✓ |unit-core| src/commands/management/runtime/admin-router.test.ts (3 tests) 4ms
✓ |unit-core| src/daemon/tests/snapshot-runtime-binding.test.ts (1 test) 4ms
✓ |unit-core| scripts/tests/help-conformance-error-recovery-coverage.test.ts (9 tests) 4ms
✓ |unit-core| src/commands/recording/runtime/recording.test.ts (3 tests) 5ms
✓ |unit-core| src/mcp/tests/server-validation.test.ts (8 tests) 3ms
✓ |unit-core| src/commands/interaction/runtime/wait-polling.test.ts (2 tests) 4ms
✓ |unit-core| src/mcp/tests/command-tools-timeout-note.test.ts (2 tests) 3ms
✓ |unit-core| src/cli-schema/cli-help-alias-fast-path.test.ts (3 tests) 3ms
✓ |unit-core| src/daemon/tests/request-handler-chain-provider-scope.test.ts (2 tests) 4ms
✓ |unit-core| src/ai-sdk/tests/missing-peer-dependency.test.ts (1 test) 3ms
✓ |unit-core| scripts/fuzz/validation-arbitraries.test.ts (2 tests) 2ms
✓ |unit-core| src/cli/commands/tests/client-backed.test.ts (1 test) 2ms
✓ |unit-core| scripts/tests/help-conformance-topic-coverage.test.ts (4 tests) 5ms
✓ |unit-core| scripts/fuzz/validation-case.test.ts (6 tests) 6ms
✓ |unit-core| src/tests/agent-device-client-auth.test.ts (1 test) 2ms
✓ |unit-core| src/daemon/tests/runtime-policy.test.ts (1 test) 3ms
✓ |unit-core| src/commands/tests/command-flags.test.ts (1 test) 2ms
✓ |fuzz-worker| scripts/fuzz/corpus-replay.test.ts (11 tests) 2633ms
✓ cli-args corpus cases and seeds hold the invariant, under the watchdog 561ms
✓ selector corpus cases and seeds hold the invariant, under the watchdog 560ms

Test Files 287 passed (287)
Tests 2223 passed (2223)
Start at 21:58:50
Duration 105.47s (transform 14.63s, setup 5.37s, import 175.36s, tests 189.97s, environment 20ms)

check:affected: all runnable checks passed. passed format, lint, typecheck, layering, fallow, build, and 287 related test files / 2,223 tests.\n- Exact-head iOS Smoke run 33204978932 passed. Android Smoke run 33204978994 booted and produced 17 readable captures, then failed waiting for fixture text ; this is a post-boot fixture failure, not the prior zero-readable-capture ADB startup failure.\n- Live Android evidence remains unavailable: local ADB cannot start its server (), and no non-user-owned emulator was available. No RecyclerView-backed live evidence was collected or claimed.\n\nTouched files: 6. No docs or skills changed. No merge was performed.\n\nResidual risk is the missing live Android RecyclerView evidence and the unrelated Android fixture-smoke failure. #2121 remains blocked behind this prerequisite.

@github-actions

github-actions Bot commented Aug 28, 2026

Copy link
Copy Markdown

Size Report

Metric Base Current Diff
JS raw 2.51 MB 2.51 MB -196 B
JS gzip 841.4 kB 841.4 kB -75 B
npm tarball 968.2 kB 968.2 kB -68 B
npm unpacked 3.35 MB 3.35 MB -196 B

npm unpacked components

Component Base Current Diff
JS / dist source 2.67 MB 2.67 MB -196 B
Apple runner source/project 581.1 kB 581.1 kB 0 B
macOS helper source 54.8 kB 54.8 kB 0 B
Android helper artifacts 0 B 0 B 0 B
Other package files 45.6 kB 45.6 kB 0 B

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 29.9 ms 30.4 ms +0.4 ms
CLI --help 81.1 ms 81.1 ms -0.1 ms

Top changed chunks:

Chunk Raw diff Gzip diff
dist/src/app-inventory-contract.js -196 B -75 B

Top changed packed files

Packed file Base Current Diff
dist/src/app-inventory-contract.js 44.3 kB 44.1 kB -196 B

@thymikee

Copy link
Copy Markdown
Member Author

The canonical-contract replacement looks correct and is materially simpler: it removes the local root-only viewport clone while preserving explicit-root caching and avoiding platform-name heuristics. Before this is ready, please (1) record the required rootless direct test red on unmodified base, then green on head; (2) rerun/resolve the exact-head Android and iOS Smoke failures; and (3) obtain rootless RecyclerView live evidence when a non-user-owned emulator is available. The Android failure currently has zero readable captures after adb startup instability; the iOS failure is the existing bare-type TEXT_INPUT_COMMIT_NOT_OBSERVED path, so neither is yet evidence against this patch, but both keep the PR non-green.

@thymikee

Copy link
Copy Markdown
Member Author

Rebase review is unchanged: the two PR commits are patch-equivalent to the prior reviewed head, so the canonical resolver change still looks correct. The required direct rootless planted-red proof and RecyclerView live evidence are still not recorded. Exact-head Android Smoke is also red again—this time the native alert is visible but Alert result: accepted never appears after the alert action (17 readable captures). The changed core-targeting files do not establish causality, but the lane must be rerun/resolved before readiness. iOS targeted XCTest and Settings replay have now passed; its remaining simulator E2E is still running.

@thymikee

Copy link
Copy Markdown
Member Author

Addressed the requested review follow-up.

  • Rebased codex/issue-2120 onto current main 69001179b04b45bb1529350a94bc0e5b2b1efdc3; exact head is 17b91f9cf526d245fcde67d27166400f0ca59b81. No merge was performed.
  • Planted red on unmodified base: the rootless Android direct-target test failed 1/14 (hittable-ancestor actual vs overly-broad-ancestor expected). The same focused test passes 16/16 on the rebased head.
  • Final local validation on this exact head is green: pnpm format; pnpm check:affected --run passed all runnable checks, including 287 related test files / 2,223 tests.
  • Exact-head iOS Smoke run 33204978932 passed. Android Smoke run 33204978994 booted and produced 17 readable captures, then failed waiting for fixture text Alert result: accepted; this is a post-boot fixture failure, not the earlier zero-readable-capture ADB startup failure.
  • Live rootless RecyclerView evidence remains unavailable: local ADB cannot start (Operation not permitted), and no non-user-owned emulator was available. No device was disturbed and no live evidence is claimed.

The PR description now has the current SHA, gate, CI, and residual-risk details. #2121 remains blocked behind this lower layer; no #2121 PR was created or merged.

@thymikee

Copy link
Copy Markdown
Member Author

Re-verified exact head 17b91f9cf526d245fcde67d27166400f0ca59b81: the requested direct planted-red proof is now recorded, and iOS Smoke is green. The canonical resolver change remains sound. This is still not ready because Android Smoke is red after 17 readable captures (Alert result: accepted never appears), and rootless RecyclerView live evidence is still unavailable. The Android failure is not established as patch-caused, but the required lane and device-evidence gap remain unresolved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant