mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-14 07:06:45 +03:00
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).
21 lines
1.1 KiB
Markdown
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.
|