Review deck v2 — the approved page, answers file + submit hand-off, rig-measured boxes, rig fixes - #1
Merged
Merged
Conversation
…swers server, rig-measured highlights and writing rules Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P9Gi6kLrnjb3qPEcZMHnkf
… Phase C deck Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P9Gi6kLrnjb3qPEcZMHnkf
…okup, 3×3 dilate, rule-based layout test, coverage orders by run id, no crop command, wait fallback, Destin checkpoint before the full deck Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…r enforces Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…-diff bounding box Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…s.css Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…amps the run id Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…— a late-finishing old shard cannot resurrect a MISSED row Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…s only this sweep's sheets Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…lost in transcription; a pasted ’ over-counted headlines) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…ds the process with the summary; wait reads the file alone Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…p, not nc) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…xes from measurements or pixel diff Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…anged" — a 1 px border gives trim something to shrink from Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…es; a non-JSON POST gets a 400; WHY on shutdown-from-a-thread Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…t inlines it Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…alftone radii now apply), ready only after a real layout, first paint in the first theme, no double-counted seconds, nothing moves after Submit Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
… at three sizes, an answer round-trips to the file Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…dered trim, serve fixes, token specificity, 400 px compact case) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…so a hardcoded midnight would fail it Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…d before the Before run; hand-off gaps closed or filed Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
… N", not "# pass N" Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
… points — two are Before-only, one lacks a Meadow Mist capture) Copy checked against the crops: the card heights, the featured-border count and the "every card" claim in the plan's example text were wrong and are corrected here; the library-empty crop is taller so the message the headline quotes is in the picture. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…ed numbers Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…failed Submit says so, run-review never orphans its workbench, lock checked before build, Host/Origin guard, same-size guard in diff_bbox, images-folder warning Also: a sweep with zero MISSED rows no longer exits 1 (grep -c under pipefail); __pycache__ ignored; SKILL.md carries the exit-code contract; README documents `labels`; follow-ups filed in ROADMAP. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…iew — the old answers are kept aside, not loaded as "already submitted"
Destin's second run-through ("I can't click through the pages"): the 10-step deck reused the answers file from the 3-step one, the page saw `submitted` and locked navigation. `serve` now moves a submitted answers file to <stem>.answers.<when>.json before starting, and a page that does load a submitted state shows it as read-only instead of silently ignoring clicks.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…s the dialog to copy/paste, localhost accepted, SIGTERM cleans the lock Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
…ollow them Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the v1 review deck with the approved page (mockup G), a local server that saves answers to a file and exits when Destin submits, rig-measured highlight boxes, builder-enforced writing rules, and four hand-off rig fixes. Spec:
docs/archive/specs/2026-08-27-review-deck-v2-design.md; plan:docs/archive/plans/2026-08-27-review-deck-v2.md.review-cards.py build→ generic page, one pulsing ring at a guessed %, Y/N/M keys, copy-paste feedbackreview-cards.py servebuilds, serves on 127.0.0.1, opens the browser, writes<spec>.answers.jsonon every click, exits 0 on Submit with the summary on stdout (Claude runs it in the background — its exit is the notification);waitreads the file alonemeasure), or the builder computes the changed region from the Before/After pixels; the spec never carries coordinatesprobe-ports.shrefuses loudly; manifests carry a run id and coverage orders by it; sheets rebuilt only for the plans that ranTests: 59 Python (
unittest, stdlib) + 6 Node (node --test, real headless Chrome) + a bash probe test. Destin ran the deck end to end twice (3-step, then 10-step); the second run found the re-serve-after-submit lock, fixed in2c42b81.Deliberate deviations from the spec: no separate
cropcommand (a stale intermediate file is the v1 bug class);waitadded;Square:1dilate; coverage orders by run id instead of discarding older runs; the Phase C rebuild is auto-only and 10 of 13 points.🤖 Generated with Claude Code
https://claude.ai/code/session_01W4Kj4r7Vk87Kcb6UrNNp3x