Garry Tan and Claude Fable 5.1
3522073ef0
feat(design): {{DESIGN_DETECTOR}} wired into design-review, ship review-lite, review army, design-html
...
The user-installed impeccable engine becomes a deterministic pre-pass in four
skills, through one resolver with three renders: {{DESIGN_DETECTOR}} (the probe
block and how to read every sentinel), {{DESIGN_DETECTOR:phase0}} (design-
review's mechanical scan), {{DESIGN_DETECTOR:gate}} (design-html's bounded slop
gate). Every rendered invocation is `bun --no-env-file run <bin>/gstack-design-
detect.ts ... --host <host>` and every scan ends with the DETECT_EXIT_CODE echo
so exit 2 (findings) never aborts a block.
design-review: probe in Setup; Phase 0 picks DOM mode (URL target) or source
mode (diff-aware, no URL) once; source mode scans the changed frontend files in
Setup, DOM mode never reads source (Rule 4). Phase 3 gains a DOM-dump step per
page: both browser engines load the shared script from lib/dom-dump.js (Aside
splices it into a double-quoted repl script; the fallback engine copies it into
a temp dir for `$B eval --out --raw`), the dump is size-capped, run through
gstack-redact (a HIGH finding skips the page), and persisted under
$REPORT_DIR/dom/$RUN_ID/; one scan runs after the last page, labeled "static
scan of the rendered DOM; cross-origin CSS not resolved". REPORT_DIR honors
GSTACK_HOME so the wrapper's allow-list and the report dir agree; RUN_ID is set
once in Setup. design-baseline.json is schemaVersion 2 with runId, targetSet,
base, and a detector block (mode, engine, byRule, byPage), written temp+rename
with a per-run copy; Regression Output diffs ids only when mode and target set
match, caveats an engine change, and calls live-page count deltas advisory.
Phase 7 hands deferred detector findings to the `handoff=` command the scan
printed; Phase 9 recomputes the same way and deletes the dumps unless
--keep-dom; Phase 10 reports `Detector: N → M`.
ship review-lite gains step 0 (probe, `scan --changed <base>`, tier buckets,
detector + checklist dedupe, advisory and ignored never count) and a
`detector` count in its log payload; the PR body gets a Detector line (rule
ids and counts only). The Review Army Design specialist runs the mechanical
pass at the top of review/design-checklist.md, which now carries it. design-
html probes after DESIGN_SETUP and runs the one-pass gate before screenshots.
lib/dom-dump.js is generated by gen-skill-docs from lib/dom-dump-script.ts
(Claude host, --out-dir aware, dry-run freshness) and pinned byte-equal, so the
prose never carries the script. The contract gains DETECT_JSON, DOM_DUMP_OK,
and the self-describing set; its test now checks both directions.
Budget: design-review eager 25.6K → 28.5K. The plan's target was +2.5K; after
the levers it named (ids-only detector rules, no inline script, trimmed prose)
it lands at +2.87K, and the remainder is doctrine and detector wiring, so the
ceiling moves to the captured 31,319 for design-review only (the full capture
would also have loosened 21 ceilings this branch never touched; those stay).
design-html skeleton re-baselined to 54,000 (measured 53,592). Codex and
Factory ship goldens refreshed (review-lite step 0 and the PR-body line render
inline there).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-08 16:14:03 +00:00
..
2026-09-08 16:14:03 +00:00
2026-09-08 16:14:03 +00:00
2026-08-15 22:20:30 -07:00
2026-08-29 10:10:35 -07:00
2026-03-18 23:57:59 -05:00
2026-08-15 22:20:30 -07:00
2026-08-29 10:10:35 -07:00
2026-08-16 19:34:41 -07:00
2026-08-31 08:55:30 -07:00
2026-09-06 08:54:25 -07:00
2026-09-06 08:54:25 -07:00
2026-09-06 08:54:25 -07:00
2026-09-01 11:15:11 -07:00
2026-08-27 09:50:31 -07:00
2026-08-29 10:10:35 -07:00
2026-08-29 09:06:54 -07:00
2026-04-19 17:50:31 +08:00
2026-08-31 08:55:30 -07:00
2026-06-21 07:15:19 -07:00
2026-08-31 08:55:30 -07:00
2026-08-19 11:42:55 -07:00
2026-08-19 11:42:55 -07:00
2026-05-29 08:35:00 -07:00
2026-08-19 11:42:55 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-16 19:34:41 -07:00
2026-05-20 07:35:01 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-05-29 08:35:00 -07:00
2026-06-07 19:13:24 -07:00
2026-06-07 19:13:24 -07:00
2026-08-29 09:06:54 -07:00
2026-06-07 19:13:24 -07:00
2026-08-14 09:28:56 -07:00
2026-08-29 09:06:54 -07:00
2026-08-16 19:34:41 -07:00
2026-08-15 22:20:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-08-15 11:42:19 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-08-16 19:34:41 -07:00
2026-08-31 08:55:30 -07:00
2026-08-16 19:34:41 -07:00
2026-08-31 08:55:30 -07:00
2026-05-16 12:32:33 -07:00
2026-08-31 08:55:30 -07:00
2026-08-27 09:50:31 -07:00
2026-08-08 09:28:45 -07:00
2026-06-07 19:13:24 -07:00
2026-08-15 09:37:04 -07:00
2026-05-28 18:21:09 -07:00
2026-09-01 11:15:11 -07:00
2026-09-08 15:45:58 +00:00
2026-09-08 15:34:24 +00:00
2026-09-08 16:14:03 +00:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-08-16 19:34:41 -07:00
2026-05-30 12:09:10 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-05-21 21:21:07 -07:00
2026-06-07 19:13:24 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-28 11:43:13 -07:00
2026-09-08 16:01:18 +00:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-08-15 22:20:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-15 22:20:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-08-14 22:02:07 -07:00
2026-08-29 09:06:54 -07:00
2026-05-20 07:35:01 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-09-08 16:01:18 +00:00
2026-08-28 11:43:13 -07:00
2026-08-31 08:55:30 -07:00
2026-08-15 11:42:19 -07:00
2026-06-08 06:20:58 -07:00
2026-08-31 08:55:30 -07:00
2026-06-21 07:15:19 -07:00
2026-08-29 09:06:54 -07:00
2026-08-16 19:34:41 -07:00
2026-08-31 08:55:30 -07:00
2026-06-08 06:20:58 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-05-21 21:21:07 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-08-16 19:34:41 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-05-17 08:26:36 -07:00
2026-08-31 08:55:30 -07:00
2026-05-30 14:57:07 -07:00
2026-08-08 09:28:45 -07:00
2026-08-16 19:34:41 -07:00
2026-08-15 22:20:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-09-06 08:54:25 -07:00
2026-09-08 16:14:03 +00:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-15 11:42:19 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-09-08 16:01:18 +00:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-06-08 06:20:58 -07:00
2026-06-08 06:20:58 -07:00
2026-09-08 16:01:18 +00:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-09-06 08:54:25 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-09-06 08:54:25 -07:00
2026-08-31 08:55:30 -07:00
2026-08-27 09:50:31 -07:00
2026-05-29 08:35:00 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-08-19 11:42:55 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-05-14 17:20:48 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-04-26 13:55:13 -07:00
2026-08-31 08:55:30 -07:00
2026-08-14 09:28:56 -07:00
2026-09-01 11:15:11 -07:00
2026-09-05 14:45:28 -07:00
2026-08-14 22:02:07 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-09-08 16:14:03 +00:00
2026-08-14 22:02:07 -07:00
2026-08-17 07:50:37 -07:00
2026-08-31 08:55:30 -07:00
2026-08-15 11:42:19 -07:00
2026-07-14 16:35:30 -07:00
2026-06-14 11:40:57 -07:00
2026-04-18 15:05:42 +08:00
2026-05-30 14:57:07 -07:00
2026-08-15 09:37:04 -07:00
2026-09-01 11:15:11 -07:00
2026-05-21 21:21:07 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-05-07 20:14:59 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-05-20 07:35:01 -07:00
2026-05-30 14:57:07 -07:00
2026-04-19 08:38:19 +08:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-14 22:02:07 -07:00
2026-08-27 09:50:31 -07:00
2026-04-25 11:52:48 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-14 22:02:07 -07:00
2026-08-31 08:55:30 -07:00
2026-08-14 22:02:07 -07:00
2026-08-27 09:50:31 -07:00
2026-08-08 09:28:45 -07:00
2026-04-17 00:45:13 -07:00
2026-09-01 11:15:11 -07:00
2026-09-06 08:54:25 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-14 22:02:07 -07:00
2026-05-26 16:50:03 -07:00
2026-05-30 12:09:10 -07:00
2026-08-15 09:37:04 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-05-06 19:37:53 -07:00
2026-08-31 08:55:30 -07:00
2026-06-07 22:04:18 -07:00
2026-08-30 20:45:19 -07:00
2026-08-31 08:55:30 -07:00
2026-08-14 09:28:56 -07:00
2026-08-16 19:34:41 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-16 19:34:41 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-15 09:37:04 -07:00
2026-09-01 11:15:11 -07:00
2026-05-30 08:54:46 -07:00
2026-09-01 11:15:11 -07:00
2026-08-16 19:34:41 -07:00
2026-05-30 08:54:46 -07:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-05-30 08:54:46 -07:00
2026-05-30 12:09:10 -07:00
2026-06-07 06:51:10 -07:00
2026-08-27 09:50:31 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 11:15:11 -07:00
2026-09-01 11:15:11 -07:00
2026-09-01 11:15:11 -07:00
2026-09-05 14:45:28 -07:00
2026-05-30 12:09:10 -07:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-05-29 08:35:00 -07:00
2026-09-01 11:15:11 -07:00
2026-08-31 08:55:30 -07:00
2026-09-01 16:42:11 -07:00
2026-08-29 09:06:54 -07:00
2026-05-29 08:35:00 -07:00
2026-08-31 08:55:30 -07:00
2026-05-29 08:35:00 -07:00
2026-04-24 01:38:21 -07:00
2026-06-04 11:14:43 -07:00
2026-06-21 07:15:19 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-07-09 23:49:09 -07:00
2026-08-31 08:55:30 -07:00
2026-09-05 14:45:28 -07:00
2026-09-06 08:54:25 -07:00
2026-09-05 14:45:28 -07:00
2026-09-05 14:45:28 -07:00
2026-09-05 14:45:28 -07:00
2026-08-14 22:02:07 -07:00
2026-08-18 17:00:04 -07:00
2026-09-05 14:45:28 -07:00
2026-09-05 14:45:28 -07:00
2026-08-27 09:50:31 -07:00
2026-08-27 09:50:31 -07:00
2026-08-24 08:55:58 -07:00
2026-08-19 16:53:19 -07:00
2026-09-05 14:45:28 -07:00
2026-09-06 08:54:25 -07:00
2026-08-31 08:55:30 -07:00
2026-09-05 14:45:28 -07:00
2026-09-06 08:54:25 -07:00
2026-08-14 22:02:07 -07:00
2026-08-16 19:34:41 -07:00
2026-09-01 11:15:11 -07:00
2026-09-05 14:45:28 -07:00
2026-09-05 14:45:28 -07:00
2026-08-15 11:42:19 -07:00
2026-08-30 20:45:19 -07:00
2026-05-30 12:09:10 -07:00
2026-08-16 19:34:41 -07:00
2026-05-30 12:09:10 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 10:10:35 -07:00
2026-09-01 11:15:11 -07:00
2026-08-14 09:28:56 -07:00
2026-08-16 19:34:41 -07:00
2026-06-04 11:14:43 -07:00
2026-04-19 08:38:19 +08:00
2026-08-15 22:20:30 -07:00
2026-08-15 22:20:30 -07:00
2026-09-06 08:54:25 -07:00
2026-08-27 09:50:31 -07:00
2026-08-29 10:10:35 -07:00
2026-09-06 08:54:25 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 10:10:35 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-09-06 08:54:25 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-09-06 08:54:25 -07:00
2026-09-06 08:54:25 -07:00
2026-09-06 08:54:25 -07:00
2026-08-30 20:45:19 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-07-14 16:35:30 -07:00
2026-08-29 09:06:54 -07:00
2026-08-19 11:42:55 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-15 09:37:04 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-09-06 08:54:25 -07:00
2026-09-06 08:54:25 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 10:10:35 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-08-29 09:06:54 -07:00
2026-09-01 16:42:11 -07:00
2026-08-31 08:55:30 -07:00
2026-08-29 09:06:54 -07:00
2026-09-06 08:54:25 -07:00
2026-08-29 09:06:54 -07:00
2026-09-06 08:54:25 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-09-06 08:54:25 -07:00
2026-08-29 09:06:54 -07:00
2026-09-06 08:54:25 -07:00
2026-09-06 08:54:25 -07:00
2026-05-29 08:35:00 -07:00
2026-08-31 08:55:30 -07:00
2026-09-06 08:54:25 -07:00
2026-09-06 08:54:25 -07:00
2026-08-29 09:06:54 -07:00
2026-08-31 08:55:30 -07:00
2026-08-27 09:50:31 -07:00
2026-08-29 09:06:54 -07:00
2026-09-06 08:54:25 -07:00
2026-08-31 08:55:30 -07:00
2026-05-29 08:35:00 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-08-31 08:55:30 -07:00
2026-09-05 14:45:28 -07:00
2026-05-30 12:09:10 -07:00
2026-06-08 05:41:07 -07:00
2026-08-29 10:10:35 -07:00
2026-08-31 08:55:30 -07:00
2026-09-06 08:54:25 -07:00
2026-08-28 11:43:13 -07:00
2026-08-31 08:55:30 -07:00
2026-08-15 22:20:30 -07:00
2026-08-15 22:20:30 -07:00
2026-09-06 08:54:25 -07:00
2026-08-31 08:55:30 -07:00
2026-08-16 09:53:31 -07:00
2026-05-30 12:09:10 -07:00
2026-08-16 19:34:41 -07:00
2026-08-31 08:55:30 -07:00
2026-08-14 22:02:07 -07:00
2026-08-31 08:55:30 -07:00
2026-08-19 11:42:55 -07:00
2026-09-05 14:45:28 -07:00
2026-08-28 11:43:13 -07:00
2026-08-15 09:37:04 -07:00
2026-08-19 16:53:19 -07:00
2026-08-29 09:06:54 -07:00
2026-08-14 22:02:07 -07:00
2026-08-31 08:55:30 -07:00
2026-08-27 09:50:31 -07:00