{"now":{"phase":"Shipped","doing":"The week is in print. Seven editions, provenance under every article, the map replaying the town. Submission prepared — awaiting the human's review of ./experiment.sh register.","updatedAt":"2026-08-04T14:20:00Z"},"buildStartedAt":"2026-08-04T12:15:38Z","buildCompletedAt":"2026-08-04T14:20:00Z","summary":["The Brindlemere Courant is a daily broadsheet newspaper from a town that does not exist.","Underneath it runs a deterministic agent simulation: ~48 named residents with jobs, households, grudges and debts, living through weather, work and rumor on a seeded random number generator.","Each simulated day emits an event log; a small language model writes that day's edition strictly from those logs — it is forbidden to invent facts.","Every article carries a provenance panel: click it and see the raw simulation events the story was written from, and replay the day on the town map.","The whole thing is generated at build time and static at rest — the town costs nothing to keep alive."],"capabilityAudit":{"manifest":["OpenRouter key — preferred model deepseek/deepseek-v4-flash-0731 (human's pick; cheap, fast)","Higgsfield CLI, authed — image/video/audio generation, credits billed separately","Vercel CLI, authed (scope geoff4) — deploys","GitHub CLI, authed (GGCryptoh) — repo + push","Budget: $10 build, $5/month runtime","Not present: Apify, Supabase, custom domain, Stripe, TTS keys"],"ruledIn":["Build-time LLM generation (editions written once, committed as JSON — pennies on deepseek flash)","Deterministic in-browser simulation replay (free at rest)","Higgsfield for masthead art, town 'photography', OG image","Static deploy on Vercel — $0/month runtime keeps well under the $5 monthly budget"],"ruledOut":["Live runtime LLM calls per visitor — $5/month cannot safely absorb open-ended traffic; rejected in favor of build-time generation","Persistence/accounts (no database) — nothing here needs one","Scraped real-world data (no Apify) — the town is self-contained by design anyway"],"preferredModelNote":"OPENROUTER_MODEL=deepseek/deepseek-v4-flash-0731 is set, so all delegated writing runs on it. It is a fast, very cheap model — a good match for high-volume, tightly-grounded prose where the system prompt does the heavy lifting."},"pitch":["Generative fiction usually asks you to trust it. The Courant does not: every line of journalism is traceable to the simulation events that produced it, and the simulation is deterministic — seed 1873 always yields this town, these people, these seven days.","The interesting inversion: the LLM is not the world. The world is a mechanical system with real state — money changes hands, weather closes the harbor, arguments have causes — and the LLM is just the town's newspaper editor, reporting on what actually happened.","What holds it together is the provenance panel. A stranger's second look is exactly that moment: the obituary is charming, then you open the receipts and see the four log lines it was written from."],"phases":[{"phase":"0 — Capability audit","goal":"Inventory the manifest, choose in that space","status":"done","commit":"","timestamp":"2026-08-04T12:16:00Z"},{"phase":"1 — Scaffold","goal":"Next.js + TS strict + Tailwind, /insights live, dev server open","status":"done","commit":"6525a36","timestamp":"2026-08-04T12:35:00Z"},{"phase":"2 — Simulation engine","goal":"Deterministic town: agents, weather, events, newsworthiness","status":"done","commit":"8ce27d6","timestamp":"2026-08-04T13:07:00Z"},{"phase":"3 — Editions","goal":"LLM writes 7 editions from event logs, grounded, with provenance","status":"done","commit":"328f5ab","timestamp":"2026-08-04T14:05:00Z"},{"phase":"4 — Newspaper UI","goal":"Broadsheet front pages, provenance panels, residents index, map replay","status":"done","commit":"328f5ab","timestamp":"2026-08-04T13:55:00Z"},{"phase":"5 — Assets","goal":"Engravings, OG image, favicon, apple icon","status":"done","commit":"328f5ab","timestamp":"2026-08-04T14:05:00Z"},{"phase":"6 — Ship","goal":"Deploy, submission.json, final polish","status":"done","commit":"","timestamp":"2026-08-04T14:20:00Z"}],"architectureMermaid":"flowchart TD\n  subgraph BUILD[\"Build time (runs once, on my machine)\"]\n    SEED[\"Seed 1873\"] --> SIM[\"Deterministic sim engine\\nlib/sim — agents, weather, rumor\"]\n    SIM --> DAYS[\"data/days/*.json\\nevent logs + agent positions\"]\n    DAYS --> WRITER[\"scripts/write-editions.ts\\ndeepseek-v4-flash via OpenRouter\\ngrounded on event logs\"]\n    WRITER --> EDITIONS[\"data/editions/*.json\\narticles + provenance event IDs\"]\n    HF[\"Higgsfield CLI\"] --> ART[\"public/ art assets\\nmasthead, photography, OG\"]\n  end\n  subgraph SITE[\"Static site (Vercel, $0/mo)\"]\n    EDITIONS --> PAGES[\"Broadsheet pages\\n+ provenance panels\"]\n    DAYS --> MAP[\"Town map replay\\nSVG + scrubber\"]\n    ART --> PAGES\n    INS[\"/insights + /insights.json\"]\n  end","decisions":[{"fork":"What to build","chosen":"A newspaper written by an LLM from a deterministic town simulation","rejected":"Live agent-town you watch in realtime; pure generative artwork; a utility tool","why":"The listed example ideas (immersive town, generative art) are the obvious moves. The newspaper inverts the usual generative-fiction trust problem — the sim is the source of truth and the LLM is only the reporter, which makes provenance a feature a visitor can actually click."},{"fork":"Runtime vs build-time LLM","chosen":"Build-time only; editions committed as JSON","rejected":"Per-visitor generation via an API route","why":"$5/month cannot absorb open-ended traffic. Build-time costs pennies, and determinism is the point — everyone reads the same town."},{"fork":"Scaffold method","chosen":"Manual scaffold (package.json + configs by hand)","rejected":"create-next-app","why":"The directory already contains harness files create-next-app refuses to coexist with."},{"fork":"Color scheme","chosen":"Single paper-and-ink theme, no dark mode","rejected":"Light/dark theming","why":"A newspaper is a physical object; the paper is the design. A dark variant would cost polish time and dilute the object-ness."},{"fork":"One LLM call per edition vs per article","chosen":"One call composes the whole day's paper","rejected":"Separate calls per article","why":"A single call keeps the edition internally coherent (the lead doesn't repeat the briefs), costs a seventh as much, and the validator can still reject the whole day and retry. Day 7 did fail JSON parsing once and passed on retry — the failure mode is cheap."},{"fork":"Model choice for the editor","chosen":"deepseek-v4-flash-0731 (the human's OPENROUTER_MODEL pick)","rejected":"A larger model for 'better' prose","why":"The manifest names a preferred model, and the task is exactly what a small fast model does well when the system prompt carries the constraints: the sim provides the facts, the model only phrases. Whole week: $0.011."},{"fork":"What the failed first generation run taught","chosen":"Explicit fetch timeout + low reasoning effort + 9k max_tokens","rejected":"Default fetch (no timeout), 4k max_tokens","why":"The first run hung silently: the model is a reasoning model and the 4k cap was being eaten by reasoning tokens before any JSON emerged. Direct API probe diagnosed it; reasoning effort 'low' and a bigger cap fixed it."},{"fork":"In-browser visual QA","chosen":"Cut (Chrome extension not connected); relied on markup review and the human's live window","rejected":"Automated screenshot QA at 390px","why":"The browser bridge wasn't available in this session. Logged honestly rather than claimed."}],"assets":[{"name":"Brindlemere from the mere (OG panorama source)","kind":"image","tool":"Higgsfield · nano_banana_pro · 2 credits","promptOrSeed":"Antique 19th-century copper-plate engraving… panoramic view of a small English fenland fishing town in 1873: harbor, smacks, drying nets, storm-damaged chapel roof, lighthouse on a spit, fen to the horizon… 21:9","path":"/art/town-engraving.png"},{"name":"Masthead vignette — eel and anchor","kind":"image","tool":"Higgsfield · nano_banana_pro · 2 credits","promptOrSeed":"Small 19th-century woodcut vignette for a newspaper masthead: a curled eel entwined around an anchor, flanked by bulrushes, Victorian printer's ornament, 3:2","path":"/art/masthead-vignette.png"},{"name":"Social card /og.png (1200×630)","kind":"image","tool":"satori + resvg composition over the Higgsfield engraving","promptOrSeed":"Programmatic: UnifrakturCook masthead + EB Garamond deck over the town plate; fonts fetched from Google Fonts at build time","path":"/og.png"},{"name":"Favicon (app/icon.svg) & apple icon","kind":"image","tool":"hand-authored SVG; apple icon via satori","promptOrSeed":"Paper ground, double rule border, Garamond C, seal-red point","path":"/icon.svg"},{"name":"Seven editions of the Courant (data/editions)","kind":"data","tool":"deepseek/deepseek-v4-flash-0731 via OpenRouter","promptOrSeed":"System: 'You are Mr. Aldous Gale… you may phrase, you may not invent' + per-day event log; $0.0109 for the week","path":"/edition/1"}],"spend":{"budgetUsd":10,"monthlyBudgetUsd":5,"totalUsd":0.0109,"higgsfieldCredits":4,"entries":[{"what":"Seven editions via deepseek-v4-flash (build-time, incl. one retry)","usd":0.0109,"higgsfieldCredits":0},{"what":"Two nano_banana_pro engravings (panorama, vignette)","usd":0,"higgsfieldCredits":4}]},"models":[{"provider":"anthropic","model":"claude-fable-5 (Claude Code)","role":"build-time intelligence: all code, sim design, prompts, art direction"},{"provider":"deepseek","model":"deepseek-v4-flash-0731 via OpenRouter","role":"the newspaper editor: writes all seven editions from event logs (human's preferred model)"},{"provider":"higgsfield","model":"nano_banana_pro","role":"engravings: town panorama and masthead vignette"}],"openQuestions":["With a runtime budget: a nightly cron that simulates one more day and publishes a genuinely daily paper.","With ElevenLabs: the wireless page — a resident reads the morning headlines aloud.","With more time: rumor distortion — the paper only knows what the gossip network delivered to the editor's desk, so stories could be confidently wrong in traceable ways."],"links":{"repo":"https://github.com/GGCryptoh/brindlemere-courant","live":"https://brindlemere-courant.vercel.app"}}