Skip to content

Biscuit: reference photography, character bible and image backlog - #18

Open
steven-cutting wants to merge 13 commits into
mainfrom
poodle-pics
Open

Biscuit: reference photography, character bible and image backlog#18
steven-cutting wants to merge 13 commits into
mainfrom
poodle-pics

Conversation

@steven-cutting

Copy link
Copy Markdown
Owner

Summary

Three commits that give the mascot a documented foundation before any image of her is drawn:

  • Reference photography — 55 cutouts of the real dog under 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.yml and linked from the documentation map, direction.md and 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:

  • The eyes are the fixed face; everything else is posture. Consequently sleepy keeps the eyes open and a win's open mouth is posture — both supersede guidance the photography README gave, and both pages say so.
  • Her fills are the biscuit ramp. This widens decision 0010's "warm family spent in exactly one place"; 0010 itself is untouched, and the bible says its sentence is edited when the first asset lands.
  • Nothing worn or held; one drawing for all four palettes; the mark stays geometric and monochrome with its wrong element left to the illustrator's brief; a 240 × 180 stage with a 180 × 135 px minimum; proposed homes docs/design/biscuit_sheet/ and src/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 baseline
  • Pre-commit gate on commit

No 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

steven-cutting and others added 3 commits August 21, 2026 22:31
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>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread docs/design/biscuit-image-backlog.md Outdated
Comment on lines +49 to +53
— 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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment on lines +51 to +52
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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

steven-cutting and others added 10 commits August 22, 2026 02:00
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant