Commit Graph
180 Commits
Author SHA1 Message Date
pj 0526ac4bfa test(verifier): assert goja picker against the same cross-runtime golden
Drop the node-subprocess coupling: the goja side now installs a stub
__sanderlingHost__ with the fixed candidate list and asserts the committed
golden, matching pkg/spec/test/parity.test.ts.
2026-06-01 17:27:18 +05:30
pj e3bb9aeeb2 test(spec): golden-fixture cross-runtime parity gate for the node picker
Replace the env-driven parity harness with a shared scenario module and a
committed golden the node picker asserts independently. The goja side asserts
the same golden, so neither runtime invokes the other at test time.
2026-06-01 17:27:14 +05:30
pj 0fa6968a5a test(runner): summary reports no unsupported verbs on a clean run 2026-06-01 17:20:09 +05:30
pj 58b57d8f3c test(verifier): unsupported verbs collected deduped in first-seen order 2026-06-01 17:20:09 +05:30
pj 65ba5345a3 test(verifier): cross-runtime goja/node parity gate on the shared picker 2026-06-01 17:20:04 +05:30
pj dba182b96f feat(testrun): surface unsupported verbs in run report 2026-06-01 17:14:39 +05:30
pj 1a17734ce0 refactor(runner): collapse WebDriver forks behind ActionSource/ExtractorSource 2026-06-01 17:14:35 +05:30
pj 0436c6094e feat(verifier): collect unsupported verbs for the run report 2026-06-01 17:14:32 +05:30
pj 26f638f021 test(runner): bundle authored specs with the goja runtime entry 2026-06-01 16:59:23 +05:30
pj aee5d8110a test(verifier): author specs through the shared picker path 2026-06-01 16:59:23 +05:30
pj f8e3baf439 refactor(runner): decode V8 actions via the unified DecodeAction; wire goja runtime 2026-06-01 16:59:18 +05:30
pj 411aefe25f refactor(verifier): goja host + shared picker replace the duplicate Go picker 2026-06-01 16:59:12 +05:30
pj 59cb77d29c refactor(verifier): one DecodeAction reads the unified flat wire contract 2026-06-01 16:59:04 +05:30
pj 50cb9e98cb feat(spec): serialize selector-only string targets for the runner to re-resolve 2026-06-01 16:58:59 +05:30
pj 1a9d82711f refactor(spec): drop the legacy goja bridge fields from action factories 2026-06-01 16:58:59 +05:30
pj 76c68b84ac feat(testrun): bundle the goja runtime entry so the verifier runs the shared picker 2026-06-01 16:43:50 +05:30
pj 45366ddde5 feat(bundler): optional RuntimeFile prepends a runtime-entry import via stdin 2026-06-01 16:43:50 +05:30
pj bf89f3b1cf feat(spec): goja runtime entry wires the shared picker over the Go host 2026-06-01 16:42:48 +05:30
pj 7a5fc9aca5 refactor(spec): picker emits native selector + scroll endpoints, setup precedence 2026-06-01 16:42:38 +05:30
pj 6600994ef1 test(spec): cover the WEB Host surface and seed precision
Replace the deleted-picker tests with Host coverage: platform()==web,
seedHi() parsing a 64-bit seed without Number precision loss, seedLo()==0,
reportUnsupported warning, the installed next-action/extractor globals, and
queryCandidates verb routing + per-tick caching over a querySelectorAll stub.
2026-06-01 16:37:42 +05:30
pj b23bd516a8 refactor(spec): web-runtime becomes the WEB Host, delegates to shared picker
Delete the duplicate picker (resolveGenerator/pickWeighted/randomTap/
randomInput/randomSwipe/randomPressKey/pickFromArray, the mulberry32 PRNG,
and the snake_case serializeAction) plus the __sanderling__ action factory
binds. web-runtime now implements Host (platform/seedHi/seedLo from the
injected 64-bit seed via BigInt, queryCandidates over the live DOM with a
per-tick cache, reportUnsupported) and calls installRuntime so both engines
run pick.ts over the same Pcg. Swipe/longPress/scroll follow the verbs.ts
matrix instead of silently returning null. Keeps the DOM helpers (selector
translation, queryElement, elementHandle, buildState, sanitize, extractors)
and the global locking. Net -214 lines (741 -> 527).
2026-06-01 16:37:37 +05:30
pj b6a706699b refactor(spec): installRuntime accepts a lazy root resolver
The web bundle imports the runtime before the spec, so the action root
on globalThis.actions only exists after the spec evaluates. Accept a
function form so the goja and web hosts resolve the root per tick.
2026-06-01 16:37:30 +05:30
pj 26e27832a2 test(spec): tolerate legacy bridge fields on builtin nodes 2026-06-01 16:31:37 +05:30
pj 58585b88b2 fix(spec): web runtime walks the spec's globalThis.actions data tree 2026-06-01 16:31:37 +05:30
pj ee54c474b6 refactor(spec): bridge data-tree nodes to the legacy goja picker tags 2026-06-01 16:31:37 +05:30
pj c9d8f165b1 test(spec): runtime-entry serializeAction wire-contract round-trip 2026-06-01 16:27:29 +05:30
pj 51200ed829 test(spec): assert data-tree shapes for action factories 2026-06-01 16:27:29 +05:30
pj 804cee70d2 feat(spec): export LongPress/Scroll/longPresses/scrolls factories 2026-06-01 16:27:29 +05:30
pj e18feff5fe feat(spec): shared runtime-entry installs next-action over pick.ts 2026-06-01 16:24:24 +05:30
pj 06ae965387 refactor(spec): wire from() sampling through the picker rng 2026-06-01 16:24:24 +05:30
pj fe3ebd0484 refactor(spec): actions.ts returns pure GeneratorNode data trees 2026-06-01 16:24:20 +05:30
pj b34f73f3f7 test(spec): picker draw-order and determinism 2026-06-01 16:13:53 +05:30
pj 3e9f0b9367 test(spec): verb matrix and warn-once semantics 2026-06-01 16:13:53 +05:30
pj d253d68b52 feat(spec): deterministic shared action picker 2026-06-01 16:13:47 +05:30
pj a4bbd71e04 feat(spec): verb support matrix and warn-once helper 2026-06-01 16:13:47 +05:30
pj af9dd6c741 feat(spec): action-tree types and Host interface 2026-06-01 16:13:44 +05:30
pj 882c3fb053 feat(spec): shared input corpus and press-key pools 2026-06-01 16:13:44 +05:30
pj 39f2197b2f test(spec): assert pcg.ts matches the PCG golden fixture 2026-06-01 16:09:02 +05:30
pj 231f96f5a5 feat(spec): bit-exact PCG port of Go math/rand/v2 2026-06-01 16:09:02 +05:30
pj 307213ef45 test(spec): add Go math/rand/v2 PCG oracle and golden fixture 2026-06-01 16:09:02 +05:30
pj d4ffdce8f9 test: cover web-runtime seeded PRNG, weighted pick, and seed define wiring 2026-06-01 15:10:04 +05:30
pj 6fc1c971c7 feat(testrun): inject seed into web bundle via SANDERLING_SEED define 2026-06-01 15:10:01 +05:30
pj d7c05181b0 fix(web-runtime): seed PRNG for reproducible runs and align weighted pick 2026-06-01 15:09:58 +05:30
pj b5e8d9892e test(ltl): lock implies and bounded-always false-negative regressions 2026-06-01 14:11:26 +05:30
pj 1834019419 fix(ltl): eliminate implies and bounded-always false-negatives
Rewrite a -> b to (not a) or b in NNF so a pending temporal antecedent
can no longer defer the whole implication and drop a consequent that was
false at the current step. Carry a pending inner past a bounded-Always
window close instead of dropping it to holds, so a deferred obligation is
resolved by a later step or Finalize.
2026-06-01 14:11:26 +05:30
pj 283bf44920 test(verifier): finalize surfaces unmet eventually with witness 2026-06-01 13:58:45 +05:30
pj 8ac05b458e test(ltl): lock violation witness reason, IsError, and step 2026-06-01 13:58:45 +05:30
pj 17f4c7e600 feat(runner): thread violation witnesses, finalize, skip marker into trace 2026-06-01 13:57:34 +05:30
pj 3cf668e59a feat(trace): witnesses map and skipped-verification marker on Step 2026-06-01 13:56:31 +05:30
pj 4dcd01eba9 test(verifier): witness API for thrown predicates 2026-06-01 13:56:15 +05:30