Files
pbakaus_impeccable/tests/oracle/DELTAS.md
T
Paul BakausandClaude Opus 4.8 a7a63180f5 Oracle: re-record the Sep-1 verb fixes ported to the Rust engine
Five fixes landed on main in JS between the swap branch and its rebase and were
ported to the engine; the goldens they touch are re-recorded from the fixed
binary, each engine output first diffed byte-for-byte against the upstream JS on
the same inputs. DELTAS.md documents every case with its upstream hash.

- critique-* (usage/unknown/latest-existing/write-then-read/write-monorepo-child):
  the #660 critique close path (identity + fingerprint freshness, ~NNNN
  collision suffix, closed flag, close verb, latest --json). Upstream 5211bdf4.
- detect-* (new overused-font fixture cases, dir/scope/no-advisory sweeps):
  the #678 overused-font primary-face change (a system stack keeps its system
  face, so a Roboto fallback no longer flags). Upstream 2cfd6076.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WaJv2c4oN8wS7Ttq4XRqyx
2026-08-31 21:01:28 -07:00

9.0 KiB

Accepted deltas

Cases listed here differ from their JS golden on purpose. Each entry names the case id, what differs, and why it is an improvement. Nothing gets on this list without review.

Format: - \`: ()`

Recorded 2026-08-17: the engine names its own commands

The JS scripts printed their own file names in usage lines, directives, and the hook manifests they wrote. The binary prints the verb (impeccable doctor) or the launcher path ("<scripts>/impeccable" hook). Each case below was re-recorded from the engine after a line-level review confirmed the only change is that wording; behavior, exit codes, and every other byte are unchanged.

  • doctor-help, doctor-help-short: Usage: node doctor.mjs … is now Usage: impeccable doctor [--json] [--fix] [--target <path>].
  • doctor-legacy-text: the closing hint reads Run \ doctor --fix``.
  • pin-usage-no-args, pin-usage-one-arg: Usage: impeccable pin <pin|unpin> <command>.
  • surface-brief-usage, surface-brief-unknown, surface-brief-write-usage: usage lines name impeccable surface-brief.
  • critique-usage, critique-unknown: usage lines name impeccable critique-storage.
  • context-monorepo-target-missing: MONOREPO_TARGET_REQUIRED says impeccable context ran without --target.
  • hadmin-on, hadmin-on-twice, hadmin-off-then-status, hadmin-on-repairs-existing-manifest, hadmin-on-malformed-manifest-backup: hooks on writes manifests that run the launcher ("<scripts>/impeccable" hook, Cursor hook-before-edit) instead of node "<scripts>/hook.mjs".
  • hook-session-fresh-then-pending-then-stop, hook-session-two-sessions, hbe-denial-downgrade-after-6: the short footer names impeccable hooks ignore-value.
  • live-help, live-accept-help, live-inject-help, live-insert-help, live-server-help, live-resume-help, live-commit-help, live-discard-help, live-complete-help, live-complete-no-id: usage text names impeccable live* verbs.
  • live-server-already-running, live-daemon-server-status-poll-complete, live-status-empty, live-status-generating, live-status-many-sessions, live-status-stale-server-json, live-status-legacy-sessions-dir, live-status-from-subdir, live-status-manual-apply, live-resume-manual-apply, live-status-mount-failed, live-resume-mount-failed, live-resume-generating, live-resume-by-id, live-resume-first-active-sorted, live-resume-accept-requested, live-resume-carbonize-required: recovery hints and next-command lines spell <self> live-poll / live-server / live-complete / live-commit-manual-edits instead of the .mjs names.

Recorded 2026-08-17: live-inject adds 'wasm-unsafe-eval' to a CSP meta script-src

The detector the live overlay loads from the helper origin is a WebAssembly module in the engine (its docs/WASM-BUNDLE.md); a script-src that names the origin but not 'wasm-unsafe-eval' still refuses to compile it. The JS patchCspMeta predates the wasm bundle and appended only the origin.

  • live-inject-csp-meta-no-connect-src: the patched <meta http-equiv="Content-Security-Policy"> reads script-src 'self' http://localhost:8412 'wasm-unsafe-eval' (was script-src 'self' http://localhost:8412). The data-impeccable-csp-original marker, the connect-src and img-src additions, idempotence, and the revert on unpatch are unchanged. live-inject-vite-csp-meta and live-inject-next-jsx carry meta tags the patch does not touch, so their goldens did not move.

Recorded 2026-08-31: detector-engine ports landed, gap goldens restored

The section previously here pinned the gap between main's post-freeze detector fixes and the engine. Those fixes are now ported (engine repo commits: c0aa75f oklch in visual-contrast/neon-text, upstream 1b7da15b #592; 5cdeec8 color-mix nested hex, upstream 54440319 #578; the 1D grid fix, upstream a236137b #615, rode along in 9046e8f via a concurrent staging race; 6d36231 comment stripping for regex matchers, upstream 067665cc #589 + ddb60993 + ba873f75 + 9a7d0fbc; 33aef88 root-relative linked stylesheets, upstream 2b88aa52 #652 + daae1d41; 6d0ecf1 URL userinfo redaction with origin-scoped basic auth, upstream d5873ff8 + d690349d #657; 09f8ae7 inert exact ignore-value refusal, upstream be87f5eb #662; 20c8347 the comp-fidelity rules organic-clip-path and buried-raster, upstream 58561610). The affected goldens were re-recorded from the fixed engine and each json fixture golden was byte-verified against the last JS engine state in history (db1462b9^, which carries both main's drift and the comp-fidelity rules):

  • Moved to post-fix behavior: detect-fixture-json-codex-grid-1d-pass-html, detect-fixture-text-codex-grid-1d-pass-html (no finding, exit 0), detect-fixture-json-organic-clip-path-html, detect-fixture-text-organic-clip-path-html, detect-fixture-json-buried-raster-html, detect-fixture-text-buried-raster-html (the new rules fire), detect-fixture-json-glow-html, detect-fixture-text-glow-html (glow's .photo-opaque-grad column now carries its intended buried-raster finding), and the sweeps detect-dir-json-all-fixtures, detect-dir-text-all-fixtures, detect-dir-quiet-all-fixtures, detect-no-advisory-json, detect-no-advisory-text.
  • Unchanged on re-record (already matched the fixed JS in the static engine): detect-fixture-json-color-html, detect-fixture-text-color-html, detect-fixture-json-oklch-neon-text-html, detect-fixture-text-oklch-neon-text-html (the oklch and color-mix fixes observably change the browser-side visual-contrast path, which these static scans do not exercise), detect-scope-type, detect-scope-both.

The frozen call vectors for checkHtmlPatterns (tests/oracle/vectors/calls/rules.checks/checkHtmlPatterns.jsonl) were re-recorded the same way: args untouched, results replayed through the db1462b9^ JS (14 of 101 moved: the comp-fidelity scans and the comment-stripping/inline-fragment fixes to enclosingCssSelector). No case in this section is an accepted delta any more; the engine matches the final JS.

Recorded 2026-08-31: main's Aug 17-31 verb fixes ported to the engine, goldens re-recorded

The goldens below froze pre-fix behavior. Each fix landed on main in JS and was ported to the engine; the cases were re-recorded from the binary and reviewed line by line, so they now pin the fixed behavior.

  • hook-session-fresh-then-pending-then-stop, hook-session-two-sessions: the Stop deep pass syncs the remembered set to the live scan, including findings the per-edit pass already surfaced, so a second Stop with nothing new is silent and a fixed-then-reintroduced finding fires again (upstream 3c442af7).
  • hadmin-on, hadmin-on-twice, hadmin-off-then-status, hadmin-on-repairs-existing-manifest, hadmin-on-malformed-manifest-backup: the Claude manifests hooks on writes match on Edit|Write and the description names the current tools; Claude Code folded multi-edit behavior into Edit (upstream 7d5c60d2).
  • live-commit-mock-unreported-file-change: the rollback-failure results share one constructor, which moved unreportedFiles and notes after pageUrl in the emitted JSON (upstream 1f2c3f9d).

Recorded 2026-08-31: main's Sep-1 verb fixes ported after the rust-swap rebase

Five more fixes landed on main in JS between the swap branch and its rebase. Each was ported to the engine and the affected goldens re-recorded from the binary after a line-level review; the engine's output was also diffed byte-for-byte against the upstream JS on the same inputs before recording.

  • critique-usage, critique-unknown: the usage line now lists the new close subcommand (upstream 5211bdf4, #660).
  • critique-latest-existing: latest applies the #660 identity/freshness path: a legacy snapshot carrying no fingerprint for a concrete local target is closed and latest exits 2 instead of printing the stale body (upstream 5211bdf4, #660).
  • critique-write-then-read: write stamps target_identity/target_fingerprint/target_path, uses a fixed-width ~NNNN collision suffix when two snapshots share a UTC second, latest freshness-closes the read snapshot, and trend now surfaces the closed flag and identity fields (upstream 5211bdf4, #660).
  • critique-write-monorepo-child: write stamps the resolved target_identity, and a latest run from a sibling app resolves to a different identity so it exits 2 rather than returning the neighbor's backlog (upstream 5211bdf4, #660).
  • detect-fixture-json-overused-font-html, detect-fixture-text-overused-font-html: new fixture added on the swap branch; overused-font primary selection now skips only the CSS generics, so a system stack keeps its system face as primary and later web-font fallbacks like Roboto no longer flag (upstream 2cfd6076, #678).
  • detect-dir-json-all-fixtures, detect-dir-text-all-fixtures, detect-dir-quiet-all-fixtures, detect-scope-type, detect-scope-both, detect-no-advisory-json, detect-no-advisory-text: the directory sweep picks up the new overused-font fixture and the #678 primary-face change (upstream 2cfd6076, #678).