Repository navigation
Conversation
Size Report
Startup median (7 runs, lower is better):
|
|
The PR is ready at 29ba824. The change only moves tests and drops one unused package.json subpath, and I found no code problems. The only check not yet green is one Smoke Tests job, still pending, and this diff does not touch what those jobs exercise. There are no conflicts. Once that job passes, this can merge. I did not run the tests or the mutation checks, so the "fails 2/10" and "fails 1/10" claims are unverified on my side. One more limit: no single test now runs the real command surface into the daemon's evidence recording, so the fake-to-real payload match rests on types and the assertions in the c half. Not blocking, take or leave: selector-runtime-target-evidence.test.ts:57 re-implements the label/id lookup that |
|
Taking the notes as non-blocking and leaving them: the label/id matcher and the |
…nalizer (a) and the get/is recorder (a); resolution payload cases land beside the selector reads (c) interaction-target-evidence: press (2) and the identity-empty container retarget (1) run beside the interaction handler over the touch-forwarding surface; get (3) and is (4) run beside the selector runtime over a selector-read surface member. The live-selector-read gate assertion now reads the bound querySelector spy instead of a runner mock. Which reads carry the resolution payload is pinned as four new (c) tests in selector-resolution-payload. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e the test-kit entry, drop the testing subpath left without importers Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t/is path can break (ADR 0011 2026-09-11) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2d57dd0 to
2c6f9e9
Compare
|
Summary
Part 3 of 3 of the find/settle batch of the daemon test redesign (no test exports of any kind): the root
interaction-target-evidencetest (10 tests, 461 lines) that drove press, get and is with the real command surface. Stacked on #3698 (green and mergeable), which is stacked on #3693 (green and mergeable); this PR retargets as those merge.Daemon halves (a) run against the package fakes; what the real command code puts into a resolution (c) moved beside that code. New unexported fixture:
support/target-evidence-fixture.ts.a / c split and test-count parity
Before = exact count at the old path (vitest JSON reporter,
origin/main); after = run count per destination on this head.interaction-target-evidence(10)execution/interaction/internal/interaction-target-evidence.test.ts(3: press@refwith and without recording; press on an identity-empty container),execution/selector-runtime-target-evidence.test.ts(7: get and is reads while recording, without recording, and the deferred-coverage cases)src/commands/interaction/runtime/selector-read-resolution-payload.test.ts(4: which reads carrynodeandpreActionNodes;is existsandis absentcarry neither)10 tests before; 14 after (+4: the command-side payload cases the real surface used to cover implicitly). No assertion was dropped. One was replaced: "the runner
querySelectorcommand is not called" had become vacuous after the R36/R37 refactors, because the daemon no longer calls it for get and is. It now assertsmockQuerySelectornot called withquerySelectorAvailableswitched on in the fixture. That spy is a fixture spy (not avi.mock) behind a negative assertion: it can only fail if the daemon starts calling the runner for these reads again, which is what it guards; it cannot be broken without adding such a call.Mutation checks
targetEvidencefrom the recorded action ininteraction-common.tsfails the two press cases (2/10): "press @ref while recording attaches target-v1 evidence…" and "press on an identity-empty container…".isSessionRecording()gate (computing evidence without recording) fails "press @ref without recording never computes target-v1 evidence" (1/10).vi.mockNo
vi.mockin any destination file.Selection
All destinations match
packages/*/src/**/*.test.tsorsrc/**/*.test.ts, sounit-coreselects them (pnpm test:unit,test:coverage); the source was already inunit-core.check:affected --runruns thevitest relatedleg.Subpath exports
daemonDeleted:
session-script-writer. No other package changed; no new subpath, barrel orexport *. With this part the find/settle batch removes 3 of the daemon's./testing/*entries net across the three PRs (81 → 78).Notes
selector-read-resolution-payload.test.tsis named forselector-read.ts; the daemon halves sit besideinteraction-common.tsand the selector runtime.Validation
check:quick,check:layeringandcheck:fallowpass on this head.check:affected --runpassed format, lint, typecheck, layering, di-seams, fallow, mcp-metadata, build and package, then stopped atintegration-node(it stops at the first failure, so its unit lane did not run locally; CI runs it). Theintegration-nodefailures aretest/integration/smoke-daemon-clean.test.ts"clean daemon script stops a live daemon before removing metadata" (20 s, exit 1) andtest/integration/smoke-web-platform.test.ts"web shutdown cleanup reaps the exact daemon that survived graceful shutdown". Both pass when run alone on this head (3/3 and 1/1), and this branch changes no file undertest/integrationorscripts. They fail only inside the full node-integration run on a host that other sessions are loading; CI is the authority.Break-proof (
mockQuerySelectornot-called): adding aquerySelectorcall ininteraction-runtime.ts(the only daemon spot that holds the operation outside touch/gesture) leftselector-runtime-target-evidence.test.tsat 7/7 passing, so the assertion was vacuous: ADR 0011 (2026-09-11) retiredquerySelectoras the backing forget/is/wait, and no get/is route is handed a touch executor. Both negative-only assertions and the stalequerySelectorAvailableswitches are removed in the last commit; the positive assertions (snapshot dispatched, evidence recorded) stay. Reverted; 7 tests before and after.🤖 Generated with Claude Code