Dutch: art production spec
- The new counter plate passes your shop test: +8
- The counter figure, made as a masked edit, passes identity and hands over the plate: +8
- A full counter-screen composite reads cleanly at phone size: +6
Your references





Status: drafted 2026-10-16 by Claude for Sarah, who is producing the art. Revised the same day after pilot round 1 (review): Sarah judged the first counter plate too much like a house and supplied references for a working pawnshop, so section 3, the counter layout, the back room and their prompts are rewritten. The LOANS sign is decided (section 14). Round 2 (same day) produced a plate that reads as a pawnshop with a thinner counter top than this spec first asked for; the bands below now follow that geometry, and the remaining fixes are horizontal (the sign, the cage door and the spike sat outside the phone crop). This spec turns the approved visual components frame into a production handoff: what each piece shows, its size, its registration, its acceptance check and its prompt. Character truth is the Fence bible; the decisions it records (pawnshop front, one counter screen, Fence Agent.jpg as master) are settled.
The app draws every word and number: prices, item names, the hold label, job details, ledger lines and his texts. The painter makes Dutch's two portrait states, Dutch at his counter, the pawnshop counter and its back room, eight item objects, his claim ticket, his envelope, a ledger page and his badge wallet.
1. What the art serves
Dutch is the Fence: a forgettable man behind a pawn counter who buys anything at one flat rate. He's an undercover police officer, Peregrine's connection inside the department, and after the burn her only steady ally.
- The counter screen opens from his Messages thread or from a door in the Underworld. He stands behind the counter. Three things he's offering lie on the glass, each with a paper tag. A fourth hangs on a hook at the counter's end: the hold slot. A wire-mesh cage door behind him leads to the back room.
- The back room lists looks (desk objects, wallpapers, sheets). The chosen look previews on the player's own Desk, which needs no new art.
- His paper turns up wherever he does: claim tickets on items and on Safecracker jobs, his runner's envelope on the desk after the burn, and a ledger page behind the Fence's Book on the Case Board.
- Off the record, alone with Peregrine, he takes his glasses down. That portrait state and the badge wallet appear only on private surfaces.
2. Sources of truth
| What | File | Rule |
|---|---|---|
| Narrative-world style | ART_DIRECTION | Applies in full, including the visual QA checklist. No pendant or hanging lamp. |
| Asset handling | ASSET_PRODUCTION | Applies in full: masters, honest resolution, real transparency, manifest. |
| Identity | Peregrine-Grid-Updated/Squares/Fence Agent.jpg (1254 × 1254) | The master. Face, hairline, moustache, build, dark green work shirt over a black tee, glasses up, pencil behind the right ear, pen in the breast pocket. Fence Undercover.jpg is the earlier casting reference only. |
| Character | The Fence bible | Forgettable on purpose; watches the seller, never the goods. |
| Format model | Kingpin's Room art spec, The Alibi art brief | Registration, masked edits, anchors, manifest, import and review conventions. |
| Distinctness | Kingpin's plates (Image-Assets/Kingpins-Room/plates/), The Alibi's room, The Raid's six locations, the Safecracker spec's places | Dutch's pawnshop must not resemble any of them (section 3). |
| Ledger texture | docs/mockups/_assets.md, row "Coffee-ring + aged-paper stain" | One ring, light foxing. |
3. The pawnshop
Dutch's front: a working neighborhood pawnshop on a side street, open late. It hasn't changed in thirty years, and every wall is covered in things people hocked and never came back for. It's a shop, not a room in someone's house: commercial fixtures, glass showcases, pegboard, steel and mesh. Nothing in it is quite worth what the tag says.
References (Sarah, 2026-10-16; mood and furniture only, never to copy): a 1980s neighborhood pawnshop with pale green walls, pegboard, luggage stacked along the top shelf, a register and a LOANS sign; a 1940s jeweler's counter with rows of rings in a lit case and glass-fronted wall cabinets; a shop wall of hung guitars beside wire-mesh cabinets over a glass showcase.
| Element | Description |
|---|---|
| Counter | A long glass showcase counter seen across its width, waist height: a dark oak base, a thin brushed-aluminum frame around the glass. On top, a black velvet counter pad runs across most of the width: that pad is where the app lays the three items. The showcase front below it is glass, warm-lit from within: rows of rings on trays, watches on stands (tick marks only, no numerals) and a few cameras. The items' paper tags hang down over it. |
| Behind Dutch, center | A bank of tall steel cabinets with wire-mesh doors, closed, shelves of boxed goods dim behind the mesh. It sits directly behind his head and shoulders as an even, dark mid-tone so he reads against it. |
| Behind Dutch, left | Pegboard wall: three or four guitars hung by their necks, a trumpet, a power drill and hand tools on hooks, a portable radio. Below it, on a back counter at his left, an old mechanical cash register with blank keys. |
| Along the top | One long shelf across the whole back wall, under the ceiling, packed with stacked hard-shell suitcases and typewriter cases. |
| Back-room door | Right of center: a wire-mesh security cage door, half open, darkness beyond. |
| Hold hook | Standing on top of the counter at its right end, near the back edge: a brass spike file on a small round wooden base, empty, sized for a claim ticket. Never inside the case. |
| LOANS sign | On the wall above the cage door: a red neon tube sign reading LOANS, lit, tubes visible, a faint red cast on the wall around it and no bloom (Q1, decided). |
| Walls and ceiling | Pale institutional green paint where the wall shows; a ceiling of stained acoustic tiles. |
| Light | Closing time. Flush ceiling fluorescent tubes, out of frame or flat to the ceiling, with only one run still on: cool green-white light from above. The showcase glows warm from inside. The neon adds a small red accent on the right. Nothing hangs from the ceiling. |
Palette. Pale institutional green, dark oak, brushed aluminum, brass, the warm amber of the case light, one red accent from the neon. Brighter and more commercial than The Alibi's room, cheaper than Kingpin's supper club, no safe anywhere.
Never in the plate. People, Dutch, items lying on the counter pad, tags, price cards or handwritten signs, text or numerals other than the one LOANS sign, readable clock faces, a pendant or hanging lamp, a safe, a flat-screen TV, a phone or a game console (they date the shop and draw the eye), wet or glossy surfaces, bloom, smoke, guns or knives on display.
Mood. Patient. The shop is open late because he is. The fluorescent hum is the only sound.
4. The counter screen: camera and layout
Camera. Standing at the customer's side of the counter, eye height about 1.6 m, looking across and slightly down. Dutch stands behind it, facing camera.
Canvas. Portrait 2:3. Generate at 1024 × 1536 until the assembly review passes, then upscale the plate and every layer registered to it by exactly 1.5× to 1536 × 2304, as one set by one method, and re-run the review. The manifest records the native size and method; an upscaled file is never described as native.
Phone fit (iPhone 16 Pro Max, 440 × 956 pt). The app fills the height and crops the sides, about 15.5% of plate width per side. Keep Dutch, the cage door, the LOANS sign and the hold hook inside the central 66% of the width.
| Band | Plate height | What it holds | Art rule |
|---|---|---|---|
| Header | 0–8% | Status bar, Dynamic Island, the coin count | Ceiling tiles in shadow; no lit fixture. Quiet. |
| Dutch | 8–48% | Dutch from mid-chest up, behind the counter; the suitcase shelf, mesh cabinets, pegboard and cage door behind | Head at about 14–26%. The mesh cabinets keep the area right behind him even. The walls beside him may be busy: his line of dialogue sits on a dark scrim, as in The Alibi. |
| Counter top | 48–61% | The black velvet pad with three item spots in a row (about 115 pt tall on the phone), and the hold hook at the pad's right end | The pad is even and matte. Nothing painted on it; the hook stands on the glass beside it. |
| Showcase front | 61–76% | The items' paper tags, hanging from their string loops | The lit case: busy is fine, because the tags are opaque paper. |
| Dock | 76–100% | Buy buttons, the item's description, the home indicator | The oak base. Quiet. |
Each band line may fall within ±2% of the table.
Layer order. dutch_counter, dutch_counter_figure_shadow, dutch_counter_figure, then the app's items, tags, the held item's ticket on the hook, and UI.
Anchors (in anchors.json, plate pixels): the three item spots' centers and footprint (each fits an item at about 90 pt), the hold hook's spike tip, the cage door's tap rectangle, the dialogue area beside Dutch.
5. Dutch
### 5.1 The two portrait states
| Asset | What changes | How it's made | Size |
|---|---|---|---|
dutch_portrait_shop | Nothing: the master, square-cropped as delivered | Copied from Fence Agent.jpg | 1254 × 1254 |
dutch_portrait_off_record | Glasses down and worn over the eyes; pencil gone from behind the ear; pen gone from the pocket. Expression unchanged. | A masked edit of the master. Mask masks/dutch_portrait_edit.png covers the forehead and eye band, the right ear and the breast pocket. Outside it, the image is pixel-identical to the master. | 1254 × 1254 |
The glasses are the same frames that sit on his forehead in the master: thin metal, rounded rectangles. Lenses are clear with a faint reflection; his eyes read through them.
### 5.2 Dutch at the counter
dutch_counter_figure: Dutch from mid-chest up, standing behind the counter in shop mode, both forearms resting on the glass's far edge, hands loosely together. He looks at the camera, unhurried. He holds nothing.
- Identity. The master's face, hairline, moustache, build and clothes. A player who has seen his Messages avatar must know him at a glance. This is an acceptance gate.
- Finish. People are painted and places are inked, as in Kingpin's Room: soft painted realism for Dutch, no ink contours, taking the shop's cool overhead fluorescent and the warm light rising from the case.
- Hands. Two hands, five fingers each, relaxed, clearly drawn. An acceptance gate.
- How it's made. The producer's image tool can't enforce a mask, so the mask is enforced afterward: the producer edits Dutch into the approved plate, and Claude takes only the pixels inside
masks/dutch_counter_figure_zone.png(x 24–77%, y 8–49.5%) from that result, pulls the figure against the plate, and cleans the edges by hand. Only the figure layer ships, so any drift the generator causes elsewhere never reaches the app. What can't be repaired afterward is a change to the counter under his arms (pilot round 1 grew a ledge there), so the prompt forbids it and the review checks it. - Registration. Full-canvas transparent PNG registered to
dutch_counter, withdutch_counter_figure_shadow(multiply) for the contact shadow on the glass. His forearms rest on the counter's back edge and may enter the counter band to 50% and no further; the velvet pad's item spots stay clear. - One state only. No reactions, no off-the-record version at the counter: the counter is a street surface.
### 5.3 The avatar
dutch_avatar: generated by the importer from dutch_portrait_shop, a centered square crop from the top of the head to the top of the pocket, 512 × 512, which the app masks to a circle at 40 pt in Messages. Not painted.
6. The back room
dutch_backroom: through the cage door. The pawnshop's storage cage: steel shelving and wire-mesh bays packed with unclaimed things, each wrapped or bagged with a blank claim ticket tied on, guitars in soft cases standing in a row, boxed radios and typewriters, a workbench with a jeweler's loupe, a small scale and a bench lamp on an arm. Flush fluorescent light, half the tubes out. The same green, oak, aluminum and brass as the shop, dimmer and closer.
- Same camera height and canvas as the counter; no figure, no registered layers.
- Bands: header 0–8%; the room 8–40%; a calm, even band 40–100% (the workbench's top running into shadow) where the app lists looks over a dark scrim. Nothing painted in that band.
- Never: people, text, numerals (the tickets are blank), a hanging lamp, a safe, weapons, a flat-screen TV.
7. The items
Eight objects, each a transparent layer seen front-on and slightly from above, as if lying on the glass, with a soft baked contact shadow and a short string loop where the app ties its tag. Same light as the counter plate: cool white from above, with a faint warm bounce from the case below. 600 × 600 native, object filling about 70% of the canvas, readable at 90 pt.
| Asset | Item | Object |
|---|---|---|
dutch_item_cushion | Cushion | A small square jeweler's pad in faded dark-blue velvet |
dutch_item_swap | Swap | Two blank claim tickets pinned together through the punched holes |
dutch_item_freeze | Freeze | A nickel pocket stopwatch, crown pulled out, face blank of numerals |
dutch_item_alibi | Alibi | A closed bar matchbook, plain dark cover, no lettering |
dutch_item_survey | Survey | A brass surveyor's compass with its lid open, the card blank of letters |
dutch_item_mirror | Mirror Line | A folding pocket mirror, half open, reflecting only a soft warm blur |
dutch_item_buyback | Buy-back | A playing-card-sized card lying face down, plain dark back, clipped with a bulldog clip |
dutch_item_look | A look | A folded swatch of patterned cloth with a corner of wallpaper beneath it |
Rules. No lettering, numerals, logos or brand marks on any object. Each object's silhouette must differ from the others at 90 pt. New items join the set under the same rules.
8. His paper and props
| Asset | What it shows | Native size (px) | Notes |
|---|---|---|---|
dutch_claim_ticket | A buff card claim ticket, rounded top corners, a punched reinforced hole at the top with a short string loop, blank: no number, no printed lines | 700 × 1000 | Nine-slice; hole and string inside the top cap. Used for item tags (scaled small), the hold slot, and Safecracker job tickets (large). Replaces safecracker_paper_ticket. |
dutch_envelope_sealed | A kraft envelope tied with string around a button, a blank claim ticket tucked under the knot | 1200 × 900 | Front-on, flat, transparent outside, baked shadow. |
dutch_envelope_open | The same envelope, string loose, flap open, empty | 1200 × 900 | Registered to the sealed state: same outline below the flap. |
dutch_ledger_page | One page of a cash ledger: cream stock, a single coffee ring near a corner, light foxing, one vertical red margin rule, no horizontal ruling, no writing | 1200 × 1600 | Nine-slice; the app sets the Fence's Book entries on it. |
dutch_badge_wallet | A worn brown leather wallet lying half open on dark wood, a police shield on one side with no lettering, numbers or crest, an empty ID window on the other | 900 × 700 | Opaque, its own small plate. Private surfaces only. |
9. Manifest and import
Folder: Image-Assets/Dutch/dutch-production/.
| Folder | Files |
|---|---|
portraits/ | dutch_portrait_shop, dutch_portrait_off_record |
plates/ | dutch_counter, dutch_backroom |
figures/ | dutch_counter_figure, dutch_counter_figure_shadow |
items/ | the eight dutch_item_* |
paper/ | dutch_claim_ticket, dutch_envelope_sealed, dutch_envelope_open, dutch_ledger_page, dutch_badge_wallet |
masks/ | dutch_portrait_edit (not imported) |
That's 19 runtime files plus the generated avatar. Also: manifest.json (dimensions, native size, upscale method, alpha, byte size, SHA-256, cap insets), anchors.json (section 4), specs/prompts.json (exact prompts, model, size and references for every image used) and review/ (section 10).
Proposed importer, tools/dutch_import.py (not written; follows tools/kingpin_import.py):
- Checks every file against the manifest's SHA-256, dimensions and alpha before writing.
- Checks the off-the-record portrait matches the master outside
dutch_portrait_edit, and the open envelope matches the sealed one below the flap line. - Generates
dutch_avatarfromdutch_portrait_shop. - Writes
Peregrine/Assets.xcassets/Dutch/dutch_<name>.imageset. Plates and portraits as JPEG q86 4:4:4; figures, items and paper as PNG. A generatedDutchCatalog.swiftcarries anchors and cap insets. - Never overwrites a pack master, and runs only in an authorized integration task.
10. Acceptance
- Identity. Side by side at phone size, the counter figure, both portraits and the avatar are the same man as
Fence Agent.jpg. The off-the-record edit reads as him taking his glasses down, with nothing else moved. - Hands. The counter figure's hands pass at native and phone size.
- Reading. At 440 × 956 pt with placeholder UI: three items with tags and prices read on the glass; a ticket hangs on the hold hook; his line of dialogue reads beside him; the dock reads over the counter front. The back room's list band carries six looks without a busy background.
- Items. All eight read apart at 90 pt, on the glass, with tags.
- Paper. The claim ticket stretched to a Safecracker job's length keeps its hole and string intact and its text readable. The ledger page carries ten app-set lines legibly.
- Distinctness. The pawnshop can't be confused with Kingpin's room, The Alibi's room, any Raid location, or Safecracker's loan shark's office.
- A shop. Sarah's test from pilot round 1: it reads as a pawnshop at a glance, not as a room in a house.
- The sign. LOANS is spelled correctly, with even letter spacing and no extra strokes.
- Style. ART_DIRECTION's visual QA checklist, every item recorded per plate. No hanging lamp, no safe, no lettering anywhere but the LOANS sign.
Review composites in review/: the counter alone; the counter with Dutch; a full counter screen (three items, a held ticket, dialogue, dock); the back room with a look list; both portraits and the avatar side by side; the eight items at 90 pt; a stretched claim ticket as a Safecracker job; the ledger page with sample lines; both envelope states on the Desk.
11. Production order
- Pilot:
dutch_portrait_off_record,dutch_counter,dutch_counter_figureand its shadow. These carry the identity and the counter screen; pass the identity, hands and reading checks before going on. - The eight items and the claim ticket (the shop works once these exist).
- The back room, the envelope, the ledger page and the badge wallet.
12. Generation prompts
Shared style line, appended to every place and prop prompt: Graphic-novel noir finish: deliberate ink contours, restrained painterly shading. Matte materials, no gloss. Restrained practical light. No text, numerals, logos or signage. For Dutch himself, replace the first sentence with Soft painted realism, no ink outlines, matching the reference portrait's finish.
dutch_portrait_off_record (masked edit of the master)
In this exact portrait, inside the masked areas only: bring the glasses down from his forehead and set them on his nose over his eyes, the same thin metal rounded-rectangle frames, clear lenses with a faint reflection, his eyes visible through them; remove the pencil from behind his right ear and restore his ear and hair there; remove the pen from his breast pocket, leaving the pocket flat. Keep his expression, face, lighting and everything outside the mask unchanged. 1254 × 1254.
Reference: Peregrine-Grid-Updated/Squares/Fence Agent.jpg.
dutch_counter
Interior of a working neighborhood pawnshop at closing time, seen standing at the customer's side of a long glass showcase counter, eye height about 1.6 m, looking across and slightly down. A commercial shop, not a home. The showcase has a dark oak base and a thin brushed-aluminum frame; inside the front, rows of rings on trays, watches on stands with tick marks and no numerals, and a few cameras. The counter top runs from 48% to 61% of image height, nearly all of it covered by an empty black velvet counter pad; below it the glass showcase front, lit warm from within, runs to 76%, and the dark oak base fills the rest. Standing on the glass at the pad's right end, near the back edge (about x 76–80%), an empty brass spike file on a small round wooden base. Behind the counter, an empty space where a man will stand. Directly behind that space, a bank of tall steel cabinets with closed wire-mesh doors, dim boxed goods behind the mesh, even and dark. To the left, a pegboard wall with three or four guitars hung by their necks, a trumpet, hand tools and a power drill on hooks, a portable radio; below it, on a back counter, an old mechanical cash register with blank keys. Along the top of the back wall, one long shelf packed with stacked hard-shell suitcases. Right of center (between x 60% and 80%), a doorway with a wire-mesh security cage door, half open onto darkness; above it, a red neon tube sign spelling LOANS, the whole word between x 60% and 80%, lit, with a faint red cast on the wall and no glow halo. Pale institutional green walls, stained acoustic ceiling tiles. Cool green-white light from flush ceiling fluorescents out of frame, only one run on; the showcase glows warm from inside. Keep Dutch's space, the cage door, the whole sign and the spike inside the central 66% of the width (x 17–83%). The top 8% is ceiling tiles in shadow, above the suitcase shelf. No people, nothing on the velvet pad, no price cards or handwritten signs, no other lettering or numerals, no hanging lamp, no safe, no flat-screen TV or phones, no guns or knives. Portrait 2:3, 1024 × 1536.
References (mood and furniture only): Sarah's four pawnshop photos, 2026-10-16.
dutch_counter_figure (generated over the approved plate, then extracted)
Add one man standing behind the counter in this exact shop, seen from mid-chest up, facing the camera, unhurried, both forearms resting on the back edge of the counter top, hands loosely together, five fingers each, clearly drawn. Do not add any ledge, shelf or glass under his arms. He is the man in the reference portrait: same face, hairline, moustache and build; dark green button work shirt over a black tee; reading glasses pushed up on his forehead; a pencil behind his right ear; a pen in his breast pocket. He holds nothing. The top of his head at about 12–14% of image height, his chin at about 25%, inside the central 66% of the width. Cool white light from overhead fluorescents, warm light rising from the case below. Inside the masked area only; change nothing outside the mask. 1024 × 1536.
Mask:masks/dutch_counter_figure_zone.png. References: the approveddutch_counter;Peregrine-Grid-Updated/Squares/Fence Agent.jpgfor identity.
dutch_backroom
The storage cage behind a pawnshop at closing time, seen standing in its doorway at about 1.6 m. Steel shelving and wire-mesh bays packed with unclaimed goods, each wrapped or bagged with a blank buff claim ticket tied on; guitars in soft cases standing in a row; boxed radios and typewriters. A workbench with a jeweler's loupe, a small scale and a bench lamp on an arm. Flush ceiling fluorescents, half the tubes out, cool green-white; pale green walls; dark oak, aluminum and brass. The lower 60% of the image is the workbench top running into deep, even shadow, plain and uncluttered. No people, no text or numerals, no hanging lamp, no safe, no weapons, no flat-screen TV. Portrait 2:3, 1024 × 1536.
Items (one prompt each, this pattern)
A single [object from section 7] lying on a black velvet counter pad, seen front-on and slightly from above, lit by cool white overhead light with a faint warm bounce from below. A short loop of plain string attached where a paper tag will be tied. No lettering, numerals or logos. Transparent background with a soft contact shadow. Object fills about 70% of the frame. 600 × 600.
dutch_claim_ticket
A single blank claim ticket of buff card stock, seen perfectly front-on and flat, rounded top corners, a punched reinforced hole near the top with a short loop of plain string through it. No number, no printing, no lines, no marks. Faint card texture, slightly worn edges. Transparent background with a soft contact shadow. Even, plain middle for text. 700 × 1000.
dutch_envelope_sealed / _open
A kraft paper envelope seen front-on and flat, closed with plain string wound around a button, a blank buff claim ticket tucked under the knot. No writing, stamps or postmarks. Transparent background with a soft contact shadow. 1200 × 900. (Open state: the same envelope with the string loose and the flap open, empty inside; identical outline below the flap.)
dutch_ledger_page
A single blank page from a bound cash ledger, cream stock, seen front-on and flat, one thin vertical red margin rule near the left edge, no horizontal ruling, no writing, a single faint coffee ring near one corner, light foxing. Transparent background with a soft contact shadow. Even middle for text. 1200 × 1600.
dutch_badge_wallet
A worn brown leather badge wallet lying half open on dark wood, seen from above at a slight angle. On one side a plain metal police shield with no lettering, numbers or crest; on the other, an empty clear ID window. Warm low light from upper left. 900 × 700.
13. Final review
Pros. Every Dutch surface comes from one identity master, and the only portrait change is a masked edit, so he can't drift into a different man. The counter screen follows the Alibi and Kingpin registration pattern the app already handles. His claim ticket ties his shop, his hold slot and Safecracker's jobs together with one object. Nothing he sells needs lettering, so the app owns every word but the shop's one sign.
Cons. The counter figure is a new painting of Dutch, so identity must be checked by eye. Generated glasses over eyes often warp the eyes behind them. Eight item objects in one consistent light take care to keep matched. A crowded pawnshop works against the calm the counter band needs; the velvet pad and the even mesh cabinets behind him carry that calm, and his dialogue needs a scrim. A painted sign is the one place a generator can garble lettering.
Edge cases. On a 393 pt phone the side crop grows to about 16% per side, which the central-66% rule covers. Large Dynamic Type lengthens tags, so the app may need to drop prices below the item rather than on the tag. If the generator can't keep the off-the-record edit pixel-identical outside the mask, the importer check blocks it and the edit is composited by hand (pilot round 1 needed this; the composite passed). If the LOANS letters come out wrong, a masked edit fixes the sign alone.
Confidence: 78. The off-the-record portrait has passed its mask check. Raised by the new counter plate passing Sarah's shop test (+8), the counter figure made as a masked edit and passing identity and hands over the plate (+8), and a full counter-screen composite reading cleanly at phone size (+6).
14. Decided
| Question | Decision | |
|---|---|---|
| Q1 | Does the plate carry a painted LOANS neon sign? | Yes, painted (Sarah, 2026-10-16). It is the one exception to the no-lettering rule, as ART_DIRECTION allows when a brief asks for it. |
- The new counter plate passes your shop test: +8
- The counter figure, made as a masked edit, passes identity and hands over the plate: +8
- A full counter-screen composite reads cleanly at phone size: +6