mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-13 08:29:04 +02:00
The DOM-dump script is an arrow function, not a self-calling IIFE: Aside's `pg.evaluate($_DUMP)` receives the function and runs it in the page (the IIFE form executed in the repl sandbox, where `document` does not exist), and the fallback engine calls it with `$B js "($_DUMP)()" --out --raw`. Hygiene widens to every URL-bearing attribute (src, srcset per candidate, poster, action, formaction, data, ping, cite lose their query strings and fragments) and to data: URLs inside existing <style> nodes. The persist and scan blocks restate REPORT_DIR and RUN_ID literally instead of relying on a shell variable from an earlier block; the baseline's targetSet is defined per mode (repo-relative paths in source mode, page slugs in DOM mode) so DOM-mode deltas can match; the PR-body Detector line lists the states the probe can actually print. The DOM fixture is re-captured with the new script from outside the repo (the engine walks up from cwd for DESIGN.md, which the metadata now records). Doctrine contradictions the design specialist found: the landing-page motion rule matches the one-authored-moment reflex; the background rule names the catalog's halo/spotlight/stripe/grid slop instead of asking for gradients; the universal font rule is scoped to the display voice with the body/UI exceptions; "two typefaces max" allows the mono; the methodology's banned-font line renders BANNED_FONTS; Courier New is banned outright; the Brutalist, Retro-Futuristic, and Playful menu entries stop recommending system stacks, glow, and bounce; the coherence nudge uses the decoration vocabulary; Path A's gate names the display voice; font-loading prose points at the source the procedure verified; centered-everything is MEDIUM (an aggregate heuristic); the mockup guard reads "Never by default (unless the brief above asks for it)". The checklist's AUTO-FIX list renders the catalog's auto-fix rules; category 9 and the Hard Rules pointer count from the same partition helpers (detectorSlopEntries, judgmentTellEntries); the handoff list renders from HANDOFF_COMMANDS; a missing catalog id fails gen-skill-docs by name. gstack's own DESIGN.md gains border tokens and Decisions Log rows for its live-feed pulse and 11px mono labels. frontend-scope is case-sensitive like the bash arm. gen-skill-docs shares one emitGenerated helper for sections and lib-derived assets; renderCatalog keeps the one style with a caller. Tests: shared sliceBetween that fails on a missing end marker, the slop-gate fixture's real end marker, an isolated browse daemon for the DOM-mode E2E, the DOM hygiene test gated to CI or opt-in, docs notes for the two superseded plan sentences. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
73 lines
3.6 KiB
JSON
73 lines
3.6 KiB
JSON
{
|
|
"capturedAt": "2026-09-08",
|
|
"engine": {
|
|
"version": "0.1.3",
|
|
"release": "engine-v0.1.3",
|
|
"platform": "linux-x64",
|
|
"installedBy": "npx impeccable install (human-initiated, scratch directory outside the repo)",
|
|
"binaryPath": "<skill>/scripts/bin/linux-x64/impeccable",
|
|
"binaryNote": "the engine is installed as a sibling of the launcher (<skill>/scripts/impeccable), not under ~/.impeccable/bin/, in a project-scoped install"
|
|
},
|
|
"registry": {
|
|
"file": "impeccable-antipatterns.json",
|
|
"upstream": "crates/live/assets/antipatterns.json",
|
|
"commit": "87d8f6d686782561fb572758d9a9bb8596a1a0e7",
|
|
"entries": 61,
|
|
"fields": [
|
|
"id",
|
|
"name",
|
|
"category",
|
|
"description"
|
|
],
|
|
"note": "no severity or advisory field in the registry; advisory status (em-dash-overuse) is engine-side"
|
|
},
|
|
"captures": {
|
|
"impeccable-detect-sample.json": {
|
|
"mode": "source",
|
|
"command": "impeccable detect --json index.html styles.css",
|
|
"cwd": "a copy of test/fixtures/review-eval-design-slop.{html,css} named index.html + styles.css so the <link> resolves",
|
|
"exit": 2,
|
|
"stderrBytes": 0,
|
|
"pathsNormalized": {
|
|
"index.html": "test/fixtures/review-eval-design-slop.html",
|
|
"styles.css": "test/fixtures/review-eval-design-slop.css"
|
|
}
|
|
},
|
|
"impeccable-detect-dom-sample.json": {
|
|
"mode": "dom",
|
|
"dump": "review-eval-design-slop.dom.html",
|
|
"dumpedWith": "browse goto http://127.0.0.1:<port>/index.html; browse js \"($(cat lib/dom-dump.js))()\" --out <tmp>/review-eval-design-slop.dom.html --raw (the arrow function in lib/dom-dump.js, called in the page; same form the skill renders for the fallback engine)",
|
|
"command": "impeccable detect --json review-eval-design-slop.dom.html",
|
|
"exit": 2,
|
|
"stderrBytes": 0,
|
|
"pathsNormalized": {
|
|
"review-eval-design-slop.dom.html": "test/fixtures/review-eval-design-slop.dom.html",
|
|
"http://127.0.0.1:<port>/": "http://127.0.0.1/"
|
|
},
|
|
"cwd": "a temp dir holding only the dump: the engine searches upward from cwd for DESIGN.md, so scanning inside this repo (whose DESIGN.md is in the open format) adds design-system-* findings that the source sample, captured before the conversion, does not have"
|
|
},
|
|
"impeccable-detect-help.txt": {
|
|
"command": "impeccable detect --help"
|
|
}
|
|
},
|
|
"findingFields": [
|
|
"antipattern",
|
|
"name",
|
|
"description",
|
|
"severity",
|
|
"category",
|
|
"file",
|
|
"line",
|
|
"snippet"
|
|
],
|
|
"notes": [
|
|
"HTML-mode findings carry line 0; snippet is the locator",
|
|
"the static engine reads inline <style> in a .html file: the DOM dump yields the same id set as the source scan",
|
|
"without the rgb()->hex fold in the dump script the DOM scan loses ai-color-palette (CSSOM serializes hex as rgb)",
|
|
"a <link rel=stylesheet> left in the dump makes the engine warn on stderr about an unreadable stylesheet; the dump script removes inlined links",
|
|
"the planted fixture has no border-left, so side-tab never fires on it; ai-color-palette is the deterministic slop id",
|
|
"engine 0.1.3 loads a gstack-emitted (spec-format) DESIGN.md from cwd: with the repo's converted DESIGN.md beside a violating page it emits design-system-color, design-system-font, and design-system-radius; without the file only low-contrast (verified 2026-09-08)",
|
|
"the engine discovers DESIGN.md by walking up from the scan's cwd (verified: a dump scanned from test/fixtures picked up the repo root DESIGN.md and emitted design-system-color/font/radius); the committed samples are scanned outside the repo so they pin page rules only"
|
|
]
|
|
}
|