Biscuit: reference photography, character bible and image backlog - #18
Biscuit: reference photography, character bible and image backlog#18steven-cutting wants to merge 13 commits into
Conversation
Source images of Biscuit the dog, from puppy to adolescent, for the character reference sheet the first pose set needs before an illustrator draws from them. Registers the caption page in the documentation contract and links it from the design direction page's first-pose-set section. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The 55 files were opaque UUIDs behind a page that said only that they existed, which is not something a character reference sheet can be commissioned from. Every image is now opened, described, graded and tagged, and the filename says what it shows. They also turned out not to be raw photographs. All 55 are iOS sticker cutouts, so the edge is the cutout's rather than the animal's and proportion cannot be measured from any of them -- the thing the reference sheet most needs to fix. The page says so, and lists what the corpus cannot answer at all beside the short shoot that would close it. What the index locks: the nose is liver rather than black and the eyes are amber rather than dark, both of which a generic poodle reference overrides; the ears stay brown as the body fades, which is the defence against the cream drift the direction calls a defect. Two files are cartoons rather than photographs and one shows only socked legs, marked rather than deleted. Seven pairs are one instant exported twice, so the folder holds about 48 moments. Her age in a frame is the owner's call and not a reading of the pixels. Biscuit_emoji/ becomes cutouts/, because they are not emoji. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two new design pages, drafted from the graded reference photography and the design direction. The bible is the model sheet in words: the decisions that keep one drawing of her consistent with the next (adolescent proportions, medium coat, a single-weight ink line with flat fills from the biscuit ramp, the eyes as the fixed face), the anatomy rules with their evidence linked, the stage and format an asset ships in, the rules for using her, and a review list for a delivered image. The backlog is every image the game needs, tiered and briefed: the shoot and the sheet before anything is drawn, the reduced mark and its exports, the first pose set, and the later purchases named so nobody draws them early. Both are registered in the manifest and linked from the documentation map, the design direction and the photography index. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8f8b2d41c1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| — a level, evenly lit set at her own height, front, profile, rear and walking away, all | ||
| four feet and the whole tail in frame, nothing worn, a grey card in the first exposure, | ||
| plus sleep and low affect caught rather than posed. The sheet can start without it and | ||
| must be revised against it; the provisional items in the bible are the list of what it | ||
| closes. **Done when** the frames are added to the photography index with grades and tags |
There was a problem hiding this comment.
Include all shots needed to close the evidence gaps
When item 0.1 is used as the photographer's checklist, this set cannot close the gaps it promises: the photography page requires side and underside close-ups of both front and hind feet (lines 709–716), an eye-level head profile with the ear held clear (lines 728–736), and a rear three-quarter view (lines 765–773), none of which is guaranteed by this front/profile/rear full-body set. Item 0.2 can therefore approve the sheet while its foot, profile, and marking evidence remains provisional; keep the complete checklist on the owning photography page and link to it here instead of restating an incomplete version.
AGENTS.md reference: AGENTS.md:L124-L126
Useful? React with 👍 / 👎.
| Each row gives the file, a grade, a description, tags and the moments it could serve. The | ||
| tag vocabulary is closed, so it can be searched. |
There was a problem hiding this comment.
Enumerate every tag in the closed vocabulary
When contributors use this table to classify or search new frames, the claimed closed vocabulary omits many values already present in the index, including eye-contact and dog-bed on line 322, grass and mouth-open on line 366, and ears-flying on line 368. This makes it impossible to determine the permitted tags from the reference; either list every allowed value under an appropriate group or describe the vocabulary as open rather than closed.
Useful? React with 👍 / 👎.
Backlog item 0.2, generated with Nano Banana through agy from the bible and the photo index: the turnaround, head studies, fixed face, marking map, swatches and line-weight specimen, assembled in an HTML sheet with a JPEG render under docs/design/biscuit_sheet/. The seven posture thumbnails are not drawn — the image model's weekly quota ran out and resets 2026-08-29 — so their slots carry the brief and their prompts are saved beside the sheet. The backlog records the draft; the item stays unticked until the owner accepts it. Also fixes a pre-existing MD049 emphasis style in the backlog. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The folder held 55 iOS sticker cutouts, whose edge is the cutout's rather than the animal's, so nothing in it could fix an outline, a tail, a foot or a hindquarter. Twenty unaltered camera frames now sit beside them under full/, every one opened, named, graded and tagged like the rest. The page is rebuilt as two sub-corpora because the two have opposite failure modes: a cutout has no background and no true edge, a full frame has both and a standing person's camera instead. What they close, recorded in a table on the page: the tail's length and its carriage -- up and curved over the back standing, laid out behind her sitting or lying, never tucked -- the marking map behind the hip, low affect in readable light, sleep beyond a puppy's head, and a traceable outline for the reduced mark. What they create: the sheet is anchored to the adolescent and every uncut body in the folder is a grown dog's, so the one age the sheet is committed to drawing is the one age with no whole-body photograph of it. The stage vocabulary gains adult, on the owner's call, and the two frames where she is clipped and reads silver-beige are hers too: the liver nose survives the groom, which is what identifies them. A verification pass re-opened every frame and overturned five of my own readings, each corrected here rather than shipped. The silver-beige frame is the oldest adult photograph and not the newest, so there is no continuing fade and the direction's colour rule stands unamended. The red-cast full frame is not the source of the red-cast cutout -- near-frontal with both eyes against three-quarter with one -- so the folder holds seven duplicate pairs and about 68 distinct moments. No full frame settles the iris, because every one carries a window, a sky or a canopy across the eye. And four filenames asserted what the photographs disprove: she is lying on the ledge, the bottle is on the blanket, she is standing indoors, the bandana is shrimp. Ripples where a closed gap made another page false: the bible drops tail carriage and the hindquarters from its provisional list and gains the anchor-age question, the backlog's closing shoot is shorter than it was, and the reference sheet's provisional flags on those two are marked stale. These twenty files are 3 to 7 MB each and the hook gate caps a file at 768 KB, so check-added-large-files gains its one exclusion, scoped to this folder and carrying its reason: the sheet is drawn from these frames, and a reader has to be able to zoom to a pad or an iris to check a claim the index makes about one -- which is exactly how the verification pass caught four false claims. The cap still applies everywhere else, and the exclusion is recorded on the page that owns the gates. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A second, independently generated draft of backlog item 0.2, made without reading the existing draft so the owner can compare two readings of the same brief. Generated end to end with OpenAI's image model through the Codex CLI's built-in image_gen tool: a turnaround judged from four candidates, every other panel drawn from the winner and reviewed against the character bible's list, the model's recurring habits (catchlights, nose sheen, black eye rims) removed in-place with the tool's edit mode, and the whole composed sheet reviewed again on three lenses before the one hard miss it found was regenerated. The two composed sheets are downscaled and JPEG-encoded, and one panel is palette-quantized, to clear the repository's 768 KB per-file limit. Neither draft is accepted; the backlog item stays unticked. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Eleven unindexed camera frames sat in full/: one indoor session on 2026-08-23, two bursts thirteen minutes apart on a grey carpet, nothing on her but a thin pink collar. They are the newest frames in the folder. Each has been opened, named for what it shows, graded and described, and the index rebuilt around them — 86 files now, 31 of them full frames. They close four things the page had listed as open: the nose leather at the largest magnification the folder holds, a grown forefoot from above, the liver eye rims, and what carries the brow once the skull has faded past the mask. They sharpen a fifth, the traceable body edge for the reduced mark. They also disprove things this page believed, and those matter more. A first pass claimed these frames finally showed her amber iris in a full frame. They do not. At a screen-sized reduction two of them read as a golden ring around a dark pupil; at capture resolution both eyes are dark discs under a broad corneal wash and the ring is liver skin outside the lid blending into the globe. The claim is retracted, the trap is now recorded on the page, and the two files named for it are renamed — naming a file after a conclusion is what made the error load-bearing. A second claim went the same way: dropping her head does not swing the fringe over her eyes. At this coat length the eyes stay clear whatever she does, which is the opposite of what was first written and the firmer ground for the same rule. And the session costs the page its easiest answer about colour. Every pale reading in the folder could previously be laid at a groom, a pane of glass or hard sun. These have none of those and she reads pale anyway, so the pale end is not entirely an exposure. The consequence is recorded; the direction's rule about staying recognisably brown is not this page's to amend. Also fixed: the tail is carried up when she is lying down, so the carriage section no longer says a settled tail goes slack; the plume is two-toned rather than uniformly paler; a raised tail on the move is not always streaming; and the counts, the clothing enumeration and the burst order now all close against the files and their EXIF. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Neither draft was accepted, and keeping them invited a reader to treat a failed attempt as evidence. Both sheets go, with their panels, candidates and prompts, and with the two manifest entries, the backlog's drawn-not- accepted notes and its Related pages links. Item 0.2 stays open and unticked. The three remaining mentions of docs/design/biscuit_sheet/ name the proposed home for the master vector the item still asks for, not the drafts, so they stand. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Item 0.2 of the image backlog, generated with OpenAI's image model through the Codex CLI. The two drafts of 2026-08-22 were deleted as failures because both came back as a cute flat-sticker cartoon poodle, which is the one dog the bible rules out. Three things were done differently here. Naming the genre broke the sticker prior where prose could not: a mid-century screen-printed poster animal, flat and reduced and adult. Two hand-authored construction armatures gave the generator its geometry instead of asking for it, which is what finally killed the show-poodle wedge in profile. And the front view was gated on its own as canon before any other panel was drawn, then attached to every later generation, so the sheet is one dog rather than thirteen readings. Thirty-eight images were generated and fourteen kept. Each was snapped to the bible's exact colour table, fitted to the 240 x 180 stage with the floor line at y = 160, and swapped to derive the light page from the same drawing. The sheet is not accepted and the backlog item stays open: there is no master vector, the stroke weight is not single, and the register itself is what the owner has to rule on. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A verification pass over the finished panels, rather than the candidates, found four things the page asserted that the drawings did not support. The counts were wrong: forty-seven images were generated, not thirty-eight, and one of them is not a drawing at all. Snapping makes the fills exactly on-token but not every pixel — resampling leaves five to thirteen per cent of each panel an anti-aliased blend of two tokens, and the page now says so. Three of the first four profile candidates drew the wedge and the fourth drew a front view, which is not what "all six drew the wedge" claimed. The sit, looking up, was redrawn: the kept candidate had a downturned mouth and eyes so dark the amber was gone, both of which the fixed face forbids. Four more were generated and the best swapped in; none of them tilts the muzzle above the horizontal, so the caption on the sheet now says what the drawing shows. A de-glinting pass fills the white core of each catchlight with the pupil token. It only reaches the hard core, and the surviving halo, the near-black eye rims on the two profiles, and the iris closing up at 180 x 135 are now named as failures in the review section rather than left for the owner to find. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The composition carried a closing </html> with no opening tag, which Prettier reads as a syntax error and which failed `just check`. The composer no longer writes it, and both sheets are formatted and re-rendered from the corrected markup. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The three artefacts are not good enough to build on, so they go rather than get patched: the bible, the image backlog, and the generated reference sheet with its panels, prompts and armature. What they were drawn from stays. The eighty-six graded reference photographs and their index are evidence, and the mascot section of the design direction is product direction; neither is a result of this work. The documentation contract carries the rest: the three manifest entries and their canonical topics, the two bullets in the documentation map, the sentence in the direction that linked the bible and the backlog, and the two Related-pages bullets in the photo index. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The previous bible, backlog and generated reference sheet were withdrawn in 44050f2 as not good enough to build on. This attempt starts over from direction.md and the graded photo index alone, without consulting the withdrawn text, per the owner's instruction. The bible states principles with evidence links rather than restating the direction, and leaves every photograph-dependent choice — production route, rendering register, age anchor, coat length, ear hair, body value, what the fixed face consists of, the icon-mark's wrong element, colour mapping, minimum size, the face break — as an open question with criteria and candidates, proposing no default. The backlog lists every image the game needs in build order, each with a compact brief, and names which poses already have specification support (win, loss, arrival) and which need a spec change first (sign-off, idle after a pause, late at night, after a long absence). Both pages were adversarially verified: every cited anchor, code reference and quotation was checked against its source by an independent refuter across three rounds (227, 88 and 25 claims), with completeness, contract and open-question critics run alongside. 39 issues were found and fixed, including two leaks inherited from the plan itself that would have quietly decided the icon-mark's ink and rendering style. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
Three commits that give the mascot a documented foundation before any image of her is drawn:
docs/design/biscuit_pics/raw/, every file opened, renamed, graded and tagged, with the fixed traits, the things that must be chosen, and the gaps only a new shoot can close.docs/design/biscuit-character-bible.md— the model sheet in words and the rules for drawing and using Biscuit: the decisions table, anatomy rules with their evidence linked into the photography index, colour mapped to the--biscuit-*tokens, the stage and format an asset ships in, brand rules for placement and treatment, a 20-point review list for a delivered image, and the open questions.docs/design/biscuit-image-backlog.md— every image the game needs as tiered briefs: the shoot and the sheet before anything is drawn, the reduced mark and its exports (master SVG,favicon.svg, touch icon), the first pose set from the direction's budget, and the later purchases named so nobody draws them early.Both new pages are registered in
docs/manifest.ymland linked from the documentation map,direction.mdand the photography index.Decisions worth a look
Four were answered by the owner: adolescent proportions (puppy frames for colour only), medium coat, a single-weight ink line with flat fills for the full register, and commissioned illustration. The rest are the bible's proposals, each a row in its decisions table so it can be overturned:
docs/design/biscuit_sheet/andsrc/lib/assets/biscuit/.Test plan
just check-docs— markdownlint, typos, lychee,validate_docs.py(43 pages, 44 topics)just check— full gate, exit 0, worktree matches the check baselineNo code changes; no images exist yet. The next actions are backlog items 0.1 (the shoot) and 0.2 (the reference sheet).
🤖 Generated with Claude Code