Files
pbakaus_impeccable/tests/oracle/vectors/README.md
T
Paul Bakaus b6a34de55a Tests: gate behavior on the oracle and the engine binary
Unit tests of the deleted Node scripts and the JS detector are removed;
their behavior is pinned by tests/oracle goldens (frozen JS behavior plus
reviewed deltas) and the engine's own tests. tests/oracle.test.mjs replays
the corpus against the binary (IMPECCABLE_BIN or skill/scripts/bin/<target>/,
via tests/lib/engine-bin.mjs) and skips cleanly without one; the framework
fixture sweep drives live-inject, live-wrap, and detect-csp through the
binary the same way. record.mjs learns --bin. The function-level vectors
under tests/oracle/vectors/calls are committed as the frozen snapshot they
can no longer be regenerated from. Suites: core trimmed to build and
transformer tests, oracle added to the default run, detector/live reduced to
packaging and reference checks, the live-e2e helper tests move to the opt-in
live-e2e lane pending its retarget, cli-remote-e2e is an empty placeholder.

Prepared with AI assistance (Claude Code).
2026-08-31 19:59:20 -07:00

21 lines
1.1 KiB
Markdown

# Function-level vectors
`record-calls.mjs` runs the detect CLI and the pure-function unit tests with a
loader hook (`hooks.mjs` / `hooks-impl.mjs`) that routes every exported
function declaration in the pure engine modules through `recorder.mjs`. Each
call whose arguments and result are plain data is written once (deduplicated by
arguments) to `calls/<module>/<fn>.jsonl` as `{ "args": [...], "result": ... }`.
Encoding of values JSON cannot carry: `{"$undef":true}`, `{"$nan":true}`,
`{"$inf":1|-1}`, `{"$negzero":true}`, `{"$map":[[k,v],...]}`, `{"$set":[...]}`.
`calls/_skipped.json` names the functions whose calls held DOM-ish objects or
closures; those are covered end to end by the `detect` goldens instead.
`calls/` (about 10 MB) is the frozen snapshot recorded from the JS engine
right before it left the tree with the launcher swap. It can never be
regenerated: the modules `record-calls.mjs`, `hooks.mjs`, `hooks-impl.mjs`,
and `recorder.mjs` instrumented no longer exist here, and those scripts stay
only as the historical record of how the vectors were produced. Treat the
directory as read-only test data for the engine's rule-level parity checks.