mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-13 06:36:26 +03:00
Oracle: restore detector goldens to post-fix behavior after the engine ports
The Aug 17-31 detector fixes (oklch parsing, color-mix nested hex, 1D grid pass, comment stripping, root-relative linked stylesheets, URL userinfo redaction, inert ignore-value refusal) and the comp-fidelity rules organic-clip-path / buried-raster are ported to the engine. Re-records the gap-pinning detect goldens from the fixed binary (glow.html included: its .photo-opaque-grad column now carries the buried-raster finding it was written for), replays the frozen checkHtmlPatterns call vectors through the last JS engine state in history (db1462b9^; args untouched, 14 of 101 results moved), and rewrites the DELTAS gap section into the landed-ports note. Each re-recorded json fixture golden byte-matches that JS state's output; oracle: 770 pass, 0 fail. Prepared with AI assistance (Claude Code). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WaJv2c4oN8wS7Ttq4XRqyx
This commit is contained in:
co-authored by
Claude Fable 5
parent
aeb8f29a64
commit
f4cb04f892
+49
-12
@@ -34,17 +34,54 @@ origin but not `'wasm-unsafe-eval'` still refuses to compile it. The JS
|
||||
|
||||
- `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: main's post-freeze fixture changes, goldens re-recorded from the engine
|
||||
## Recorded 2026-08-31: detector-engine ports landed, gap goldens restored
|
||||
|
||||
The rebase onto main brought fixture updates whose paired JS rule changes have
|
||||
not been ported to the engine yet. The detect goldens below are re-recorded
|
||||
from the binary, so they pin the engine's current behavior on the new fixture
|
||||
content; the entries name the upstream JS change each one still owes. Until a
|
||||
rule ships in the engine and its golden is re-recorded, the golden is the pin
|
||||
of the gap, not an endorsement of it.
|
||||
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):
|
||||
|
||||
- `detect-fixture-json-color-html`, `detect-fixture-text-color-html`: the fixture gained the color-mix nested-hex column (upstream 54440319, #578, with explicit sizes from 7426af44); the engine still reads hex codes inside `color-mix(...)` when measuring gradient contrast, so its readings on the reshaped fixture differ from the JS engine's.
|
||||
- `detect-fixture-json-oklch-neon-text-html`, `detect-fixture-text-oklch-neon-text-html`: new fixture for oklch parsing in visual-contrast and neon-text (upstream 1b7da15b, #592, columns from 8347d77f); the engine does not parse oklch there yet, so the flag column's neon-text goes unflagged and a mis-read low-contrast is recorded.
|
||||
- `detect-fixture-json-codex-grid-1d-pass-html`, `detect-fixture-text-codex-grid-1d-pass-html`: new pass-case fixture for 1D dashed rules (upstream a236137b/7ddcd533, #615); the engine still flags the 1D line-field as `codex-grid-background`, which is the pre-fix behavior the fixture exists to retire.
|
||||
- `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`: fixtures for the two comp-fidelity rules (upstream 58561610: organic-clip-path, buried-raster); neither rule exists in the engine, so only incidental findings (or none) are recorded.
|
||||
- `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`: directory-wide sweeps over `tests/fixtures/antipatterns/`; re-recorded because the fixture set above grew and changed, shifting counts and orderings.
|
||||
- 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).
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"stdout": "",
|
||||
"stderr": "400 anti-patterns found.\n2 advisory notes (not counted).\n",
|
||||
"stderr": "408 anti-patterns found.\n2 advisory notes (not counted).\n",
|
||||
"exit": 2,
|
||||
"signal": null,
|
||||
"files": {}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"stdout": "[]\n",
|
||||
"stdout": "[\n {\n \"antipattern\": \"buried-raster\",\n \"name\": \"Raster buried under a wash or opacity\",\n \"description\": \"A background image under a near-opaque gradient wash, or a raster on an element at near-zero opacity, never reaches the screen: the page shows the wash, and the produced texture or photo ships as a compliance token. Let the material show (a tint under 0.9 alpha, a blend mode, an opacity you can see) or remove the file.\",\n \"severity\": \"warning\",\n \"category\": \"quality\",\n \"file\": \"<REPO>/tests/fixtures/antipatterns/buried-raster.html\",\n \"line\": 0,\n \"snippet\": \"raster background at opacity 0.04 \\\"Grain\\\"\"\n },\n {\n \"antipattern\": \"buried-raster\",\n \"name\": \"Raster buried under a wash or opacity\",\n \"description\": \"A background image under a near-opaque gradient wash, or a raster on an element at near-zero opacity, never reaches the screen: the page shows the wash, and the produced texture or photo ships as a compliance token. Let the material show (a tint under 0.9 alpha, a blend mode, an opacity you can see) or remove the file.\",\n \"severity\": \"warning\",\n \"category\": \"quality\",\n \"file\": \"<REPO>/tests/fixtures/antipatterns/buried-raster.html\",\n \"line\": 0,\n \"snippet\": \"<img> at opacity 0.05 \\\"Ghost img\\\"\"\n },\n {\n \"antipattern\": \"buried-raster\",\n \"name\": \"Raster buried under a wash or opacity\",\n \"description\": \"A background image under a near-opaque gradient wash, or a raster on an element at near-zero opacity, never reaches the screen: the page shows the wash, and the produced texture or photo ships as a compliance token. Let the material show (a tint under 0.9 alpha, a blend mode, an opacity you can see) or remove the file.\",\n \"severity\": \"warning\",\n \"category\": \"quality\",\n \"file\": \"<REPO>/tests/fixtures/antipatterns/buried-raster.html\",\n \"line\": 0,\n \"snippet\": \"raster under a near-opaque gradient wash: linear-gradient(rgba(240,237,226,0.96), rgba(240,237,226,0.96)), url(assets/manual-paper.p\"\n },\n {\n \"antipattern\": \"buried-raster\",\n \"name\": \"Raster buried under a wash or opacity\",\n \"description\": \"A background image under a near-opaque gradient wash, or a raster on an element at near-zero opacity, never reaches the screen: the page shows the wash, and the produced texture or photo ships as a compliance token. Let the material show (a tint under 0.9 alpha, a blend mode, an opacity you can see) or remove the file.\",\n \"severity\": \"warning\",\n \"category\": \"quality\",\n \"file\": \"<REPO>/tests/fixtures/antipatterns/buried-raster.html\",\n \"line\": 0,\n \"snippet\": \"raster under a near-opaque gradient wash: linear-gradient(0deg, rgba(255,255,255,.95), rgba(255,255,255,.95)), url(\\\"assets/bone-pape\"\n }\n]\n",
|
||||
"stderr": "",
|
||||
"exit": 0,
|
||||
"exit": 2,
|
||||
"signal": null,
|
||||
"files": {}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"stdout": "[\n {\n \"antipattern\": \"codex-grid-background\",\n \"name\": \"Decorative grid-line background\",\n \"description\": \"A decorative grid or line-field background drawn with hairline linear-gradient layers tiled by a fixed pixel cell is a recurring generated-UI signature. Reserve grid overlays for actual canvas, map, blueprint, or measurement surfaces; elsewhere use product structure or a plain surface.\",\n \"severity\": \"advisory\",\n \"category\": \"slop\",\n \"file\": \"<REPO>/tests/fixtures/antipatterns/codex-grid-1d-pass.html\",\n \"line\": 0,\n \"snippet\": \"px-tiled hairline line-field background\"\n }\n]\n",
|
||||
"stdout": "[]\n",
|
||||
"stderr": "",
|
||||
"exit": 2,
|
||||
"exit": 0,
|
||||
"signal": null,
|
||||
"files": {}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"stdout": "",
|
||||
"stderr": "",
|
||||
"exit": 0,
|
||||
"stderr": "\n<REPO>/tests/fixtures/antipatterns/buried-raster.html\n [buried-raster] raster background at opacity 0.04 \"Grain\"\n → A background image under a near-opaque gradient wash, or a raster on an element at near-zero opacity, never reaches the screen: the page shows the wash, and the produced texture or photo ships as a compliance token. Let the material show (a tint under 0.9 alpha, a blend mode, an opacity you can see) or remove the file.\n [buried-raster] <img> at opacity 0.05 \"Ghost img\"\n → A background image under a near-opaque gradient wash, or a raster on an element at near-zero opacity, never reaches the screen: the page shows the wash, and the produced texture or photo ships as a compliance token. Let the material show (a tint under 0.9 alpha, a blend mode, an opacity you can see) or remove the file.\n [buried-raster] raster under a near-opaque gradient wash: linear-gradient(rgba(240,237,226,0.96), rgba(240,237,226,0.96)), url(assets/manual-paper.p\n → A background image under a near-opaque gradient wash, or a raster on an element at near-zero opacity, never reaches the screen: the page shows the wash, and the produced texture or photo ships as a compliance token. Let the material show (a tint under 0.9 alpha, a blend mode, an opacity you can see) or remove the file.\n [buried-raster] raster under a near-opaque gradient wash: linear-gradient(0deg, rgba(255,255,255,.95), rgba(255,255,255,.95)), url(\"assets/bone-pape\n → A background image under a near-opaque gradient wash, or a raster on an element at near-zero opacity, never reaches the screen: the page shows the wash, and the produced texture or photo ships as a compliance token. Let the material show (a tint under 0.9 alpha, a blend mode, an opacity you can see) or remove the file.\n\n4 anti-patterns found.\n",
|
||||
"exit": 2,
|
||||
"signal": null,
|
||||
"files": {}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"stdout": "",
|
||||
"stderr": "\n<REPO>/tests/fixtures/antipatterns/codex-grid-1d-pass.html\n [codex-grid-background] px-tiled hairline line-field background\n → A decorative grid or line-field background drawn with hairline linear-gradient layers tiled by a fixed pixel cell is a recurring generated-UI signature. Reserve grid overlays for actual canvas, map, blueprint, or measurement surfaces; elsewhere use product structure or a plain surface.\n\n1 anti-pattern found.\n",
|
||||
"exit": 2,
|
||||
"stderr": "",
|
||||
"exit": 0,
|
||||
"signal": null,
|
||||
"files": {}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"stdout": "",
|
||||
"stderr": "\n<REPO>/tests/fixtures/antipatterns/organic-clip-path.html\n [low-contrast] 1.2:1 (need 4.5:1) — text #000000 on #1a1a1a\n → Text does not meet WCAG AA contrast requirements (4.5:1 for body, 3:1 for large text). Increase the contrast between text and background.\n [low-contrast] 4.1:1 (need 4.5:1) — text #000000 on #cc3333\n → Text does not meet WCAG AA contrast requirements (4.5:1 for body, 3:1 for large text). Increase the contrast between text and background.\n [low-contrast] 1.3:1 (need 4.5:1) — text #000000 on #222222\n → Text does not meet WCAG AA contrast requirements (4.5:1 for body, 3:1 for large text). Increase the contrast between text and background.\n [low-contrast] 1.7:1 (need 4.5:1) — text #000000 on #333333\n → Text does not meet WCAG AA contrast requirements (4.5:1 for body, 3:1 for large text). Increase the contrast between text and background.\n\n4 anti-patterns found.\n",
|
||||
"stderr": "\n<REPO>/tests/fixtures/antipatterns/organic-clip-path.html\n [low-contrast] 1.2:1 (need 4.5:1) — text #000000 on #1a1a1a\n → Text does not meet WCAG AA contrast requirements (4.5:1 for body, 3:1 for large text). Increase the contrast between text and background.\n [low-contrast] 4.1:1 (need 4.5:1) — text #000000 on #cc3333\n → Text does not meet WCAG AA contrast requirements (4.5:1 for body, 3:1 for large text). Increase the contrast between text and background.\n [low-contrast] 1.3:1 (need 4.5:1) — text #000000 on #222222\n → Text does not meet WCAG AA contrast requirements (4.5:1 for body, 3:1 for large text). Increase the contrast between text and background.\n [low-contrast] 1.7:1 (need 4.5:1) — text #000000 on #333333\n → Text does not meet WCAG AA contrast requirements (4.5:1 for body, 3:1 for large text). Increase the contrast between text and background.\n [organic-clip-path] clip-path: polygon() with 18 vertices approximating an organic contour\n → A clip-path polygon with many arbitrary vertices, or a curved clip-path path(), is CSS approximating a torn edge, blob, or silhouette. It reads as the cheap version of the effect and is usually a produced or photographic material replaced with code. Derive an alpha matte from the real image, or ship the shape as a cut-out raster; keep clip-path for geometry (cut corners, diagonals, hexagons).\n [organic-clip-path] clip-path: polygon() with 21 vertices approximating an organic contour\n → A clip-path polygon with many arbitrary vertices, or a curved clip-path path(), is CSS approximating a torn edge, blob, or silhouette. It reads as the cheap version of the effect and is usually a produced or photographic material replaced with code. Derive an alpha matte from the real image, or ship the shape as a cut-out raster; keep clip-path for geometry (cut corners, diagonals, hexagons).\n [organic-clip-path] clip-path: path() with 6 curve segments\n → A clip-path polygon with many arbitrary vertices, or a curved clip-path path(), is CSS approximating a torn edge, blob, or silhouette. It reads as the cheap version of the effect and is usually a produced or photographic material replaced with code. Derive an alpha matte from the real image, or ship the shape as a cut-out raster; keep clip-path for geometry (cut corners, diagonals, hexagons).\n [organic-clip-path] clip-path: polygon() with 21 vertices approximating an organic contour\n → A clip-path polygon with many arbitrary vertices, or a curved clip-path path(), is CSS approximating a torn edge, blob, or silhouette. It reads as the cheap version of the effect and is usually a produced or photographic material replaced with code. Derive an alpha matte from the real image, or ship the shape as a cut-out raster; keep clip-path for geometry (cut corners, diagonals, hexagons).\n\n8 anti-patterns found.\n",
|
||||
"exit": 2,
|
||||
"signal": null,
|
||||
"files": {}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user