01-projects/printables-product

studio charter

·decision-memo·status: open
printablesproductorg-designcloudflareunit-economicsnamingchild-profile

Printables studio charter: org, architecture, unit cost, name

Amended 2026-08-31 after publishing, on founder input the same evening: (1) the account model is CONFIRMED and adult-first, not a guess; (2) every pack's first page is a parent-facing overview; (3) the name shortlist is now two families with two founder-picked finalists, Little Press and Scribble Works - both .com domains are LISTED FOR SALE rather than in use, and an active NJ children's publisher already trades as The Little Press. These landed after the three-round gate and did not go through it.

Vault copy of the HQ decision page published 2026-08-31. Three decisions open with the founder: accept-or-amend the charter, pick a name, greenlight the nightly studio cron. A fourth item (child-profile design) is a clarifying question, not a decision.

Settled going in (founder rulings 2026-08-30 evening, not relitigated)

Step-1 scope approved. Kill criteria DORMANT until "launched" is declared - no clock during development. Multilingual is an ENGINE PROPERTY, not Spanish positioning. Target = tiers 1-4 of the trust ladder. Cloudflare is the platform. Generation stays local on the founder's Max subscription until volume forces the API. Pricing shape = cheap subscription plus customization credits, where credits are the cap on runaway generation. Org = role-scoped subagents, critic family as QA, Ray as operator, founder as board.

1. The standing objective

The load-bearing claim is the third. It rests on the critic family having a real track record on this exact product - the bilingual pack went 4 review rounds and the critic caught a muñeca illustration reading as "girl" across two independent fresh-eyes reads. That gate works. It has never run unattended overnight, which is exactly what decision (c) asks permission to try.

2. Org design

Four role-scoped agents, dispatch-driven, extending the support-agent fleet pattern approved and implemented 2026-08-08 ([[2026-08-08-support-agent-fleet-proposal]]): named sessions, per-agent handoff files, crossSessionInbound: accept, and the standing rule that only Ray talks to the founder. No role agent has channel plugins bound.

Role Owns Autonomous Escalates
product What gets built next; specs; catalog roadmap; activity registry Choosing next activities, writing specs, splitting pack pages into catalog entries, reordering the queue, retiring a repeatedly-failing activity Ladder ordering or rung definition changes; pricing/credits; any commitment to a person outside the household
design Templates, themes, render profiles, print-genre conventions New templates, theme variants, layout iteration, render-profile work, any critic-requested revision Brand mark, name, typographic identity, anything changing how the product looks to a returning visitor
engineering Cloudflare surface + publish rails: Astro site, R2, rung-2 Worker/queue, credits ledger, MCP endpoint, rung-4 Workflow Reversible builds, branches, PRs, preview deploys, migrations on non-production data, anything inside an existing free tier Creating any resource that starts a bill; anything touching payment or a live credits balance. Hard gate. Production deploys: as of 2026-09-12 (founder ratified) a PR merged into main auto-deploys the website and review portal via CI, and daily Worker releases follow the qualified controlled/automatic workflow (#169/#189/#191); the gate is therefore the merge, which runs the full CI + critic gates. Workers Paid is already active (verified 2026-09-12, active since 2026-08-20).
growth Discovery + the instrumentation the kill criteria depend on Metadata, structured data, internal linking, keyword research, analytics on non-child-facing surfaces, drafting copy Every paid-media dollar; every new external account; every outbound email to anyone but the founder; any analytics on a surface where a child profile exists

Cadence. Nightly cron = one studio round (product dequeues, a role builds, the assigned critic gates, Ray files what passed). On-demand for founder-named work. Reporting is a one-line studio state in the morning brief; more than a line means something needed a judgment, which means a decision page.

QA gate map

No critic is a standing agent - fresh-eyes review requires zero context, so critics stay per-dispatch subagents. This follows the fleet proposal's deliberate exclusion.

Artifact class Gate Blocks
Printable page/pack (visual) design-critic, images only Proofs reaching the founder (standing library rule)
Rendered PDF verify-pdf-output Publication to R2
Site page / catalog surface build-landing-page four-layer + design-critic Production deploy
Deployed behavior (customization endpoint, MCP endpoint, download flow, credits deduction) behavior-critic, source-blind, pre-written contract Calling a rung live
Vault note verify-vault-write Filing
Decision page / strategic recommendation verify-strategic-output The founder seeing it
Dispatch prompt (REQUIRED tier) verify-dispatch The dispatch being sent

Named gap: there is no gate on the queue - on whether product picked the right next thing. Critics score artifacts, not priorities. A studio that ships four critic-passing activities nobody searches for has passed every gate and still wasted a month. Growth's instrumentation is the only feedback closing that loop, which is why it is on the critical path. Stated, not solved; solving it needs live traffic that does not exist.

3. Cloudflare architecture, tiers 1-4

The queue is the seam. From rung 2 on, every generation request lands on a queue; what drains it can be a local machine tonight and an API call later without the rest of the system noticing. That is what makes "local until volume forces API" an architecture rather than a temporary state.

Tier Built State Stays local Cost
1. Static catalog Astro on Pages, catalog generated at build time from meta.yaml; PDFs in R2; worktree publish rail; parent overview page on the front of every pack (see below) PDFs in R2; catalog metadata in git (no database - adding one is premature); stable activity IDs assigned here Everything $0.00/mo
2. JIT customization Worker takes request, reserves credits, enqueues, returns a job handle; DO holds per-job status + rate limiting; artifact lands in R2 Credits ledger, accounts, orders, activity registry in D1; in-flight job status in a Durable Object; personalized artifacts in R2 under TTL Generation - a local runner drains the queue and uploads to R2 $5.00/mo Workers Paid floor. Paid allotments: Workers 10M requests + 30M CPU-ms/mo; Queues 1M ops; D1 25B rows read / 50M written / 5GB; DO 1M requests + 400k GB-s. A year-one 500 customizations/mo sits ~3 orders of magnitude below the binding ones (1M Queues ops, 1M DO requests); one customization consumes several queue ops, so real headroom is smaller than a naive reading, and still not close
3. MCP endpoint Remote MCP server on Workers (McpAgent, DO-backed); catalog as searchable tools, customization as a callable tool. Second front door on tier-2 machinery, not a second system Per-session MCP state in the DO; auth tokens + credit association in D1 Generation, still via the queue No new floor. DO Paid includes 1M requests + 400k GB-s/mo; an MCP session is a handful of requests against a short-lived object. If the agent channel actually works, this is the first line to re-check
4. Scheduled delivery Cron Trigger fires a Workflow per subscriber per period: select against profile → enqueue → wait → assemble booklet → render → send. Workflows is right here specifically because it is durable across steps Schedules + delivery history in D1; instance state managed by Workflows; booklets in R2 under TTL Generation - but strained: a deadline is what a best-effort local runner is worst at. Expect the API flip here regardless of volume Same $5 floor + Workflow steps beyond the 500k/mo included on Paid, and storage beyond the included 1GB at $0.20/GB-mo. At ~6 steps per delivery, 500k steps is ~80,000 deliveries/mo. Cloudflare's Workflows pricing page states billing for steps and storage begins 2026-08-10

Honest consequence of local generation at tier 2: a web visitor cannot be served by a Max subscription. Keeping generation on the founder's machine means the "magic moment" is not an 8-second spinner - it is "check back in a few minutes" or an email. That is a product consequence of a cost decision. The queue seam means flipping later is a runner swap, not a redesign, but rung 2 is called the magic moment and asking someone to wait is a different moment.

Correction worth carrying: Cloudflare Email Routing cannot send the booklets. It routes inbound mail and sends only to verified destination addresses - not a transactional sender to arbitrary customers. Use it for inbound (hello@) and Resend for outbound, which is already the newsletter's sender.

Every pack opens with a page for the parent (founder addition, 2026-08-30 evening)

Page one of every pack is not for the child. It is a parent-facing overview: what the activities are, and what the child is meant to learn from each. The child's pages start on page two.

Cheap, because the generator already carries the skills tags for every page it produces - the overview renders information the engine holds and currently discards. Not cosmetic, because it does three things at once:

Scope note: one more page per pack, one more template, one more thing the design critic gates. Not free work. The step-1 sizing already flagged that "we mostly have it" is how scope estimates go wrong. Budget it as a real template.

4. Unit cost

Phase 1 - generation local, hosting on Cloudflare

All rates read off developers.cloudflare.com on 2026-08-30 (research done the evening of 2026-08-30; the page carries the 2026-08-31 dateline it published under). The step-1 memo's unsourced "pennies per month" was wrong in the harmless direction.

Line Published rate Step-1 volume Cost
Generation Max subscription, already paid 15 activities $0.00 marginal in dollars; not free in capacity
Pages static assets free, unlimited requests any $0.00
Pages builds Free plan 500/mo ~30/mo $0.00
R2 storage $0.015/GB-mo; first 10 GB-mo free 15 PDFs ≈ 4 MB $0.00
R2 Class B (downloads) $0.36/M; first 10M/mo free hundreds $0.00
R2 Class A (writes) $4.50/M; first 1M/mo free tens $0.00
R2 egress free any $0.00
Tier 1 total $0.00/mo

Sources: R2 · Pages pricing · Pages limits · Workers. Pages bandwidth limits are not stated on the limits page and are therefore not claimed.

The cost this table does not price: rate-limit capacity. "$0.00 marginal" is true in dollars and misleading as a whole truth. A nightly round of four role agents plus per-artifact critic subagents draws on the same Max plan capacity phData work, the newsletter and the investing crons draw on. This page prices founder hours carefully and then treats founder compute as free and unbounded, which it has no evidence for. It is unmeasured - no instrumentation exists that would say what one studio round costs or what it displaces. That is the argument for the round budget in the cron ask rather than an unbounded nightly loop.

Where zero stops being zero: R2's 10 GB free tier holds ~38,000 activities at the observed 260 KB PDF size; the 10M Class B free tier covers ~5M downloads/month at an assumed 2 Class B operations per download. Neither binds before something else breaks. The first real bill is the flat $5/mo Workers Paid plan at rung 2.

Phase 2 - generation on the API

Modeled on a 7-page custom pack, the shape actually built 2026-08-30.

Measured vs derived. Page counts, file sizes and round counts are read off the library and the session transcript. The token split is derived, not observed: both packs were built inside the always-on channels session, so that window's transcript carries ~41.5M cache-read tokens of long-session context replay unrelated to printables. Using it as per-pack cost would overstate by more than an order of magnitude. What the transcript gives honestly is 131,938 output tokens across the whole window (two packs + narration + unrelated replies) - a usable ceiling on the two builds.

Input Value Provenance
Pack size 7 pages measured (meta.yaml, bilingual v2)
Final artifact 33,066 bytes HTML measured (pack.html)
Review rounds 4 recorded measured - meta.yaml verbatim: "4 review rounds"
Model passes behind those rounds ~6 reconstructed (2 builder, 3 critic, 1 concept swap) assumption, reconstructed from the working-context trail; does not sum to the recorded 4 because a "round" there is a review cycle, not a model call
Model calls the cost model bills 8 (4 build/revise + 4 critic) assumption, and deliberately a ceiling above the ~6 reconstructed passes. The reconstruction is from a narrative trail, not a call log, so it is likelier to under-count than over-count; billing 8 buys margin rather than faking precision. Cost scales with calls, so if the true count is 6 the per-pack figure is about a third higher than that pack would actually cost ($0.71 vs ~$0.53)
Window output tokens 131,938 measured (transcript usage sum)
Artifact emissions/pack 4 full rewrites assumption
Output/emission ~8,300 (33 KB ÷ ~4 bytes/token) derived
Critic verdict output ~1,500 × 4 assumption
Output/pack 39,200, carried as 40,000 derived: 4x8,300 + 4x1,500 = 39,200, rounded UP to 40,000 in the cost line, same ceiling-not-estimate logic as the call count. Under half the 131,938 two-pack ceiling
Build/revise input ~25,000 × 4 assumption
Critic input ~14,000 × 4 (rubric + 7 page images; images dominate) assumption
Input/pack ~156,000 derived, clean-room
Model In $/M Out $/M Input Output Per pack
claude-sonnet-5 $2.00 $10.00 $0.31 $0.40 $0.71
claude-opus-5 (what tonight's packs ran on) $5.00 $25.00 $0.78 $1.00 $1.78

Sourcing caveat. Model rates read from the local claude-api skill's model table, which carries its own cache date of 2026-06-24. They were not fetched from a live pricing page today, unlike every Cloudflare rate above. The rate that matters most is the one with the weakest sourcing. Confirm against anthropic.com/pricing before any of this sets a price.

Read the second row. Modeling on Sonnet 5 is a 2.5x improvement that assumes Sonnet produces packs the critics pass at the same rate - untested, because never tried. That assumption does real work in every number below. Cheap test: run the next few library packs on Sonnet and watch the round count. If rounds go 4 → 7, the saving evaporates.

Sensitivity: the derived split could be half or double → $0.355-$1.420 per pack at Sonnet 5 (exactly half and exactly double the $0.710 basis), central $0.71. Prompt caching is an unpriced downside lever - ~20,000 of the 25,000 input tokens per build call are a stable prefix (design contract + template), exactly what caching is for, but no cache-read rate was verified, so no discount is claimed. Treat $0.71 as a ceiling engineering should beat.

Break-even

Credits are the cap on runaway generation, so every allotment is checked at full burn, not at an assumed average. Payment processing modeled at 2.9% + $0.30 - the commonly published US online-card rate, not fetched from a live processor pricing page, unverified.

Every figure below is computed from $0.710/pack and from the rounded values printed in its own row, so each cell is reproducible from what is on the page. Subscriber counts round up to whole people.

Price Credits Net of fees Cost at full burn Contribution (full burn) Contribution (60% burn)
$4/mo 3 packs $3.58 $2.13 $1.45 $2.30
$7/mo 6 packs $6.50 $4.26 $2.24 $3.94
$9/mo 10 packs $8.44 $7.10 $1.34 $4.18
$9/mo (repaired allotment) 7 packs $8.44 $4.97 $3.47 $5.46

The $9 tier as drawn is the worst of the three, and that is the finding. At ten credits it earns less per subscriber at full burn ($1.34) than the $4 tier at three credits ($1.45), because the allotment grew faster than the price. Credits must scale sub-linearly with price, or the top tier becomes the loss-leader - and heavy users pick the top tier. Standing rule to keep: full-burn contribution must not fall as price rises. A $9/7-credit tier fixes it ($3.47).

Against infrastructure (the flat $5/mo floor, full-burn contribution): $4/3 → 4 customers · $7/6 → 3 · $9/10 → 4 · $9/7 (repaired) → 2. True and almost meaningless: it restates that Cloudflare is cheap, not that anyone will pay.

Against the scarce input. Kill criteria cap founder time at 2 hrs/week ≈ 8.7 hrs/month. Valued at $150/hr = $1,300/mo - a placeholder in the right neighborhood of a senior data-consulting rate, which the founder should replace; every number scales linearly with it.

Price / credits Subscribers to cover $1,300/mo (full burn) (60% burn)
$4 / 3 897 566
$7 / 6 581 330
$9 / 10 971 312
$9 / 7 (repaired) 375 239

The real number runs from about 240 to about 970 subscribers, depending on price, allotment and burn. For scale: the step-1 kill criterion asks for ten non-family downloads in ninety days. The distance between that bar and several hundred paying subscribers is the actual size of the bet.

No price is picked here, deliberately. The step-1 memo's standing recommendation is to ship free and instrumented and not to price until there is a non-zero number in the dashboard; nothing here supersedes that. What this section produces is a design rule for whenever pricing is decided: full-burn contribution must not fall as price rises. The $9/10 row violates it; $9/7 repairs it. These tables are a constraint on future allotments, not a shortlist.

5. Name shortlist: two finalists, two families

The founder named two instincts on 2026-08-30 evening. One warm/small-scale/paper-and-press, favorite Little Press. One playful-childish citing Humongous Entertainment (Putt-Putt, Freddi Fish, Pajama Sam), from which he picked Scribble Works. Fifteen candidates checked against live registries.

The finding that changes the question: both favorites are FOR SALE

So the question is not "which is available" but "what are these worth." Neither price was obtained — the Atom listing sits behind a Cloudflare bot check, the GoDaddy lander renders price client-side. Two-minute browser job, not a decision.

The two finalists

Little Press Scribble Works
Family Warm / press Playful (Humongous)
.com TAKEN — listed for sale on Atom. Dynadot, created 2011-11-10 TAKEN — parked for sale via GoDaddy NameFind. Created 2002-12-18
.co TAKEN (1API/DNSimple, created 2014-02-22) likely available
Other fallbacks none checked; .co gone so a modifier is required thescribbleworks.com and scribbleworks.kids both likely available
Existing use DIRECT ACTIVE COLLISION — The Little Press, LLC, Wood-Ridge NJ children's book publisher, IPG-distributed, 2025 coverage in Publishers Weekly + Children's Book Council Two softer — Scribble Works Publishing House (Accra, Ghana edtech, founded 2017, on .tech); USPTO 75750242 "SCRIBBLEWORKS" filed 1999 Class 16 for children's coloring material, ABANDONED 2002
Says Made carefully, by people, on paper. Sells the "curated education plan" half Fun, concrete, sayable by a four-year-old. Sells the "print-off games" half; "Works" keeps a workshop connotation
Against Earnest, interchangeable with many educational-printables brands; harder acquisition, no cheap fallback, and an active US children's publisher already has the name Less serious on its face, cutting against a product selling a plan; longer to say and type

The separator is existing use, not domains. The Little Press LLC is same country, same customer, adjacent product, and already in market — a materially worse problem than a taken domain, and the strongest single fact on the naming question. Not necessarily a legal bar (that's for someone qualified), but a parent searching either brand finds the other, which is the practical version regardless.

The asymmetry. Scribble Works can be adopted today at zero cost on the .co and upgraded to the .com later; Little Press needs a purchase or a modifier before it can be used at all. Not an argument that Scribble Works is the better name — an argument that it is the cheaper one to be wrong about.

Clearance caveat. The existing-use search ran through web aggregators (Justia, Crunchbase, trade press), not the USPTO database, and no state or international registries were checked. An active registration could exist unsurfaced. Absence of a hit is weak evidence, not clearance. Clearance precedes adoption.

Family one: warm / press — the rest

Name .com .co .dev Evidence
Table Pages likely available likely available unknown "No match for TABLEPAGES.COM"; .co "DOMAIN NOT FOUND". Only clean .com of the fifteen
Paper Sprout taken likely available unknown .com TurnCommerce/NameBright (reseller), created 2021-09-15
Kitchen Table Press taken likely available unknown .com GoDaddy, created 2011-03-23
Sprout Press taken likely available unknown .com GoDaddy, created 2004-06-19
Sprout Print taken likely available unknown .com Tucows, created 2009-02-16
Penny Press taken taken unknown .com GoDaddy 1999-04-16; .co Dominet (HK) 2025-07-03
Pocket Press taken taken taken all three registered; .dev on Cloudflare NS
PagePress taken taken taken all three registered; .dev resolves to a live host
Playprint taken taken unknown .com Blacknight 1996-07-23; .co NameCheap 2026-06-25

Family two: playful — the rest

The Humongous names put a character in the name: silly, concrete, sayable by a four-year-old, promising play rather than instruction. None contain "press," "learning," or "academy." Generated against that pattern.

Name .com .co .dev Evidence
Scribblesaurus taken likely available unknown .com at Cloudflare, created 2026-07-06 — seven weeks old
Giggle Press taken likely available unknown .com GoDaddy, created 2018-07-07
Noodle Press taken likely available unknown .com IONOS, created 2009-01-19
Doodlebug taken likely available taken .com created 1999-01-31; .dev on Google NS

Every .dev "unknown" is genuinely unknown, not a soft yes — the registry returned only a top-level referral with no registrar data for most names. The .dev results that ARE evidence: Pocket Press, PagePress, Doodlebug, all resolving to live hosts.

The pattern: fourteen of fifteen have a taken .com and usually a free .co. Not bad luck — that is what the two-word English compound namespace looks like in 2026. Unless the pick is Table Pages, this product ships on a .co or buys a .com, and both finalists happen to be buyable.

No recommendation, and no name decided by the studio. The step-1 memo's founder's-own-name direction is on neither list and has not been withdrawn.

6. The account model: adult-first, household-scoped — CONFIRMED

Founder-confirmed 2026-08-30 evening. The reading is the account model, and the shape is adult-first: the person who signs up is a parent, not a child.

The framing, in the founder's words: "a curated education plan or tutor, packaged up as print-off games." That sentence is worth more than the schema. It settles what the product is: not a worksheet catalog with personalization bolted on, but a plan for a specific child that happens to be delivered as paper. The catalog is the storefront; the plan is the product. It also reframes rung 4 - scheduled delivery stops looking like a retention gimmick and starts looking like the thing being sold, because a plan arrives on a schedule.

Level Fields Notes
Household account email, billing, credits balance, adult members (1-2), render profile (ink) Unit of billing AND unit of privacy scope. Credits belong here, not to a child. Render profile is a property of the household's printer
Adult email, name, role (owner / invited) Both adults see everything. Invitation by email from the owner
Child (sub-profile) name, birthday, interests, focus topics, languages + dominance, per-skill progress (introduced / practicing / secure) Birthday, not an age band. Languages stay a list with dominance because multilingual is an engine property. Skill progress stays three states, not a percentage

Why birthday, reversing the earlier sketch. The prior draft argued for a band because a precise date is personal data bought for no gain. Under the plan framing there IS a gain: a curriculum running for months must know when a child crosses a developmental threshold, and a band cannot tell you a child turned four last week. Founder specified birthday. The privacy answer is scope, not field degradation.

Privacy: household-scoped, concretely

What adult-first COSTS, stated plainly. The earlier draft had a local-first profile in the browser through tier 3, going server-side only at tier 4. An account with a spouse invitation, a billing relationship, and a plan advancing over months cannot be local-first: two devices must see the same household, and a schedule must run when no browser is open. So the profile is server-side from tier 2, in the D1 the credits ledger already needs, and privacy is carried by scoping and retention rather than by where the bytes sit. That is a genuinely weaker guarantee than local-first and is the honest cost of the account model - written here rather than discovered in a schema later.

Not legal advice. A parent providing information about their own child under their own account is the lower-risk shape, part of why adult-first matters beyond tidiness, but this is still children's data.

7. The case against this whole charter

Every counter-argument above is local. None argues against the headline ask. Stated at full strength here because the Archive option deserves a real case.

This is premature scaling, and the page's own numbers say so. The step-1 catalog is not live and has never had a single download from outside the household. The kill criterion asks for ten non-family downloads in ninety days; §4 puts the smallest viable subscriber count north of two hundred. That is more than an order of magnitude between "we have any evidence at all" and "this is a business" - and the proposal is to build a four-role standing organization to cross it before the first step has been taken.

The classic failure shape is exactly this shape. Build the org, build the machine that feeds the org, let the machinery become the work. Four role agents on a nightly cadence will produce output every night, because that is what they are for. Output is not the constraint. The step-1 memo already named the constraint twice: discovery is the whole problem, and the market largely clears at zero. Nothing in this charter touches either. A studio that ships thirty critic-passing activities into a site nobody has found has spent thirty nights confirming production was never the bottleneck.

The cheaper version of this decision is not on the page. Ship step 1 by hand - a couple of weekends of a loop that already works. Instrument it. Wait ninety days. If the number is not zero, then build the studio, knowing which of the four roles actually mattered. That path forgoes nothing except speed on a road with no evidence there is a destination, and it keeps the founder-time meter at its lowest reading in exactly the window the kill criteria are meant to protect.

And the compute is unpriced. Nobody knows what a nightly round costs in Max capacity or what it displaces. phData is the main bet. A nightly loop of uncertain capacity cost against the same subscription shows up as "everything feels slower lately" three weeks later, with no line item to blame.

The counter-argument, stated fairly. The charter is cheap and reversible: no spend beyond a $5/mo floor that only starts at rung 2, no external commitments, and a manifest line that deletes the whole studio. The cron is a switch. And the argument for building the org before the evidence is that the org is what makes the ninety-day read arrive at all, because a hand-built step 1 competing for founder weekends against everything else is how this ships in March. Both real. Honest summary: the charter is defensible; the nightly cron is the genuinely contestable half. Hence separate buttons.

What would prove the STUDIO FRAME wrong

Pre-registered, separate from the product kill criteria (which are dormant until launch). Any one means the studio was the wrong shape, independent of whether the product works:

8. Open decisions

Verification trail

Fresh-eyes /verify-strategic-output gate, three rounds, zero build context each. The producer did not score it.

Related

Resolution attempt (2026-08-31 morning) — WALKED BACK same hour

Founder greenlit the buildout via iMessage 10:54 ET ("How's the open ended scribble works build out going?") — treated as: (a) charter ACCEPTED as shipped (amendment window offered in reply, none taken yet), (b) name = Scribble Works (site at scribbleworks.rdco.dev pending domain + USPTO clearance), (c) nightly studio cron GREENLIT (manifest line added 4:41am, circuit breaker per §8c, two-week review due ~2026-09-14). Studio stood up same day: 4 sw-* fleet agents in fleet-manifest, role handoffs in ~/.claude/state/handoffs/, repo ~/Projects/scribble-works, queue at ~/.claude/state/studio/queue.md. Tier-1 build dispatched.

Walk-back (11:05 ET): founder clarified he had NOT read the charter and wants to talk it through; naming reopened (wants "Works"/"Prints" paired with a childish-fun-educational word — new candidate list sent). All three decisions back to OPEN. Held: tier-1 build dispatch (verify-dispatch round 2 was in flight), nightly cron manifest line (commented), sw-* fleet lines (commented). Kept (reversible, name-agnostic): repo scaffold, role handoff files, studio queue/state.

AMENDMENT 2026-09-02 (founder, iMessage 13:41 ET — ruling 29): §8d Hardening cadence. "I don't want to compound on a shaky foundation, so taking a step back to cleanup every 5-10 PRs seems like good diligence." Every 5–10 merged PRs the studio runs a HARDENING ROUND instead of a feature round: architecture/wiring docs refreshed (docs/ARCHITECTURE.md), CI green on PR with required checks, pre-PR checklist enforced, the audit's ranked refactors worked top-down, retention/purge jobs verified, secrets map checked against 1Password. Counted from the merge log in rounds.md; the coordinator opens the round when the count hits 5 and must not exceed 10. First hardening round: 2026-09-02 (after PRs #38–#62).

AMENDMENT 2026-09-04 (founder, iMessage 21:43 ET): §2 Cadence — nightly REVIEW-AND-PLAN slot. Founder: "Should we also have it doing a review of the progress and planning steps for the next day? ... marketing copy review, lifecycle email marketing, product feature roadmap grooming, etc." Each nightly round now carries ONE review-and-plan slot in addition to (not instead of) its build slots. The angle rotates by weekday: Mon marketing copy + positioning (site copy, catalog blurbs, wordmark surfaces) · Tue lifecycle email/SMS (retention nudges plan, daily-playset delivery, account mail) · Wed roadmap grooming (re-rank queue.md against product-model-rulings + cohort signal; retire dead items) · Thu growth/SEO/GEO (metadata, structured data, internal links, search-console if present) · Fri unit economics + cost basis (gateway spend, per-feature cost, tier fit per ruling 20/31) · Sat cohort + feedback synthesis (feedback D1 rows, iMessage-relayed feedback, vault feedback notes) · Sun charter + kill-criteria + hardening check (§8c/§8d counters, drift vs charter). Output contract: one vault note 01-projects/printables-product/reviews/YYYY-MM-DD-<angle>.md (≤400 words: what was reviewed, findings with citations, proposed queue changes as a diff, decisions needed) → gated by verify-strategic-output when it recommends anything, verify-vault-write otherwise → queue.md edits applied only for items inside the roles' autonomous columns above; anything in an Escalates column goes to escalations.md → ONE line in the morning-brief studio state. The review slot never builds. It runs after the build slots and is skipped (logged) if the circuit breaker tripped that night.

AMENDMENT 2026-09-05 (founder, iMessage 09:31 → "Go" 09:36 ET): §2 publish rail — RELEASE BRANCH. Founder: "Maybe we should setup a release branch. You push all the changes there and I handle periodic consolidated pushes into production. We could have a separate preview site for the release branch. I'm losing track of what is pushed and what is a candidate for release otherwise." Shape adopted: a long-lived release branch off main; every studio PR targets release; Ray reviews and merges into release after the same critic gates; a standing preview at https://release.scribble-works.pages.dev always shows the release candidate; shipping = one release → main PR merged by the founder, after which Ray deploys production from main. main moves only by his merge. The §2 org table's engineering "Escalates" column is unchanged (production deploys remain founder-gated); the autonomous column now explicitly includes merging into release. Cut 2026-09-05 09:37 ET at main 4673983; PRs #85/#86/#87/#88 retargeted; #87 merged into release the same hour.

Amendment 2026-09-10 — PRs directly to main

Current workflow — founder ruling 2026-09-10: Create feature branches from current origin/main, open PRs directly into main, and wait for both GitHub checks before merging. Deploy the merged main commit using the repository runbook. The intermediate release branch and second release PR are retired; old release-branch instructions below are historical. Per-PR previews remain optional. This does not enable automatic production deployment.

Founder: "Can we start committing directly to main through PRs? This two step deployment is a pain." This supersedes the 2026-09-05 release-branch amendment.

Amendment 2026-09-12 — deployment gate reconciled with live state

Founder ratified (iMessage 2026-09-12 10:29 ET, re item A of the roadmap first pass) that automatic production deployment on green main CI is the standing path for the website and review portal, and controlled/automatic releases for the daily Worker. The engineering hard-gate column above was amended accordingly; the bill-starting hard gate is unchanged. Planning home for product work is GitHub Issues + docs/ROADMAP.md; queue.md is studio dispatch only (SW-R17, #200).

AMENDMENT 2026-10-01 (founder, iMessage 10:11 + 10:13 ET): band focus 3-5; 7-10 library paused. Founder 10:11: "Should we narrow in on like 2 to 4 or 5 year old games. That's the level our testers are at." Ray proposed 3-4 as the core, with 2-3 and early 5 at the edges, a 7-10 pause, and pointing the nightly studio at 3-5 creation quality. Founder 10:13: "7-10 library pausing is fine. We will grow into it. ... Agreed, 3-5 games." Context: the same morning's "monkey vs pedestal" thread (founder 08:06: "if we can nail the AI educational assistant first and creation of the worksheets, then we have trained our monkey") and his 09:45 ruling to hill-climb game CREATION before curation; spec at 2026-10-01-accepted-spec-v0.md. Effect, Ray's reading, pending founder correction: (1) new-game slots build only for the 3_4 and 5_6 bands; 7_8 and 9_10 new games are paused (existing open PRs stay open, untouched). 2_3 stays under its existing hold (escalations.md:318-319), because the founder agreed to "3-5" and did not lift it. (2) The majority-games rule (§8c) still holds, but non-game slots go first to creation-eval work (assembling the batch-2 known-bad set, mapping rubric A-checks onto existing structural checks, drafting a judge prompt) before pedestal items (copy, SEO, lifecycle email). (3) The Mon/Tue/Thu pedestal review angles still run; each now adds one line on whether its findings touch 3-5 creation quality.