$ node --test ops/local-work-package.test.mjs ops/local-work-review.test.mjs ops/local-work-gate.test.mjs ops/drive-local-flow.test.mjs
✔ drive-local journals failure and blocks reporting for outside edit (1089.814667ms)
✔ drive-local journals failure and blocks reporting for verifier edit (901.611166ms)
✔ drive-local journals failure and blocks reporting for unchanged package (1054.339291ms)
✔ drive-local journals failure and blocks reporting for HEAD repin (841.583833ms)
✔ drive-local journals failure and blocks reporting for forged snapshot (986.059959ms)
✔ committing outside scope and repinning metadata cannot replace the submitted HEAD (365.7425ms)
✔ forged snapshot, checksum and compiled picker cannot replace the submitted judge (811.5855ms)
✔ raw template refuses selection before implementation without captured gate inputs (94.041792ms)
✔ selection advances past rejected duplicate title: Same title (185.584792ms)
✔ selection advances past rejected duplicate title: Regex [a].* (b) + $ (204.468ms)
✔ skip cursor passes a later title mentioned in an earlier body (301.222167ms)
✔ selection skips missing checks and stale paths with reasons (322.633041ms)
✔ a non-SDK package fails unchanged and passes only after its check holds (624.09425ms)
✔ multiple acceptance checks all execute and failures propagate (350.9095ms)
✔ scope refuses an outside unstaged path (279.713667ms)
✔ scope refuses an outside staged path (266.095375ms)
✔ scope refuses an outside untracked path (238.358541ms)
✔ scope refuses an outside staged reversal path (256.264875ms)
✔ scope refuses an outside rename path (263.418417ms)
✔ scope refuses an outside deleted path (294.105541ms)
✔ the submitted scope command refuses a changed ops/local-work-package.mjs before loading it (236.873958ms)
✔ the submitted scope command refuses a changed ops/local-work-verification.mjs before loading it (233.794208ms)
✔ the submitted scope command refuses a changed ops/BACKLOG.md before loading it (196.681375ms)
✔ editing ignored package metadata cannot widen scope or replace checks (274.704167ms)
✔ scope allows directory children but rejects a sibling with the same prefix (331.91425ms)
✔ scope allows in-scope deletions and rejects symlink escapes (327.241416ms)
✔ replacing a scoped file with a directory does not authorize its children (238.158333ms)
✔ a check that writes outside scope fails verification (308.1535ms)
✔ interrupted package write preserves the original and retry replaces it atomically (323.611125ms)
✔ report includes an allowed unstaged change (422.349958ms)
✔ report includes an allowed staged change (452.419666ms)
✔ report includes an allowed untracked change (408.382209ms)
✔ directory scope checks a pre-existing dangling escape symlink (293.552958ms)
✔ directory scope checks a pre-existing existing internal symlink (294.07025ms)
✔ selection skips untracked scope and accepts the next committed scope (168.807167ms)
✔ reporting after SDK suite effects enforces scope for outside.txt (417.239459ms)
✔ reporting after SDK suite effects enforces scope for src/value.txt (579.685042ms)
ℹ tests 37
ℹ suites 0
ℹ pass 37
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 5726.671

EXIT_CODE=0
