{"name":"Kepler's Harp","oneLiner":"Compose with gravity — a playable orbital music instrument.","phase":3,"status":"shipped","now":"Shipped after independent audio, orbit, and interface critics passed; production and cold-clone routes verified","updatedAt":"2026-08-06T04:40:50.000Z","benchmark":"Ableton Note","summary":["Kepler’s Harp turns a solar system into an ambient polyrhythmic instrument.","Every planet is a voice, every orbit is a clock, and every alignment makes a phrase.","Players can move worlds, change their timbres, set a scale, and hear the system react immediately.","The state is deterministic and shareable as a compact URL, with no server or metered service required at rest.","It is judged against Ableton Note for immediacy and tactile finish, while replacing the sequencer grid with spatial motion."],"capabilityAudit":{"manifest":[{"capability":"Build mode","value":"Advanced; subscription agent time unmetered"},{"capability":"Runtime AI","value":"OpenRouter available; no preferred model selected"},{"capability":"Visual + audio","value":"Higgsfield available; Canvas and Web Audio require no key"},{"capability":"Delivery","value":"GitHub and Vercel authenticated; domain deferred"},{"capability":"Budget","value":"$10 build budget; $5 monthly ceiling; $0 metered used"}],"budgetMath":"At current low-cost text rates, $10 could buy millions of tokens; image and audio generations would consume the budget much faster. The product instead spends subscription-covered build intelligence and browser-native APIs, leaving its runtime cost at zero.","noKeys":"The complete instrument—simulation, synthesis, rendering, local persistence, and sharing—works with no API keys. This ruled out a dependency on generative runtime content and ruled in a crafted deterministic system.","galleryGap":"The live gallery already contains SWORN (formal detective solver), The Brindlemere Courant (agent-town newspaper), and Drift (language evolution). It has no musical instrument, spatial sequencer, or Web Audio work."},"pitch":{"problem":"Most sequencers make time look like a spreadsheet. That is powerful for producers and forbidding for everyone else.","wedge":"Kepler’s Harp makes time visible as motion: rhythm is orbit, harmony is distance, and a loop is a small world you can touch.","whyNow":"Modern mobile browsers provide stable low-latency Web Audio and high-refresh Canvas, so the entire instrument can live at one link with no install and no account.","economics":"Static deployment costs $0 at rest. There is no runtime inference, database, or paid API. A commercial version could sell preset packs or a one-time pro export without degrading the free instrument."},"phases":[{"phase":"0 · Audit","goal":"Find the gallery gap and commit to one benchmark","status":"complete","commit":"eed1419","timestamp":"2026-08-06T04:07:00.000Z"},{"phase":"1 · System","goal":"Build audio, orbital math, and the playable shell","status":"complete","commit":"9275fdc","timestamp":"2026-08-06T04:18:00.000Z"},{"phase":"2 · Experience","goal":"Integrate, polish, and pass independent critics","status":"complete","commit":"e574eb3","timestamp":"2026-08-06T04:26:48.000Z"},{"phase":"3 · QA + ship","goal":"Verify every route, viewport, asset, and deployment","status":"complete","commit":"ccbede3","timestamp":"2026-08-06T04:40:50.000Z"}],"architecture":"flowchart LR\n  A[Touch / pointer / keys] --> B[Orbital state]\n  B --> C[Deterministic orbit engine]\n  C --> D[Crossing events]\n  D --> E[Web Audio voices + FX]\n  B --> F[Canvas renderer]\n  B --> G[Share URL codec]\n  H[Presets] --> B\n  I[Local preferences] --> B","decisions":[{"at":"12:05","chosen":"Build an instrument, not another narrative simulation","rejected":"A living civic simulation","why":"The gallery’s strongest entries already explore deterministic worlds and proof-heavy narratives. Music creates a distinct sensory and interaction signature."},{"at":"12:06","chosen":"Benchmark Ableton Note","rejected":"A loose ‘creative coding toy’ standard","why":"The relevant bar is first-touch sound, mobile tactility, clear controls, and graceful states—not feature count."},{"at":"12:07","chosen":"Browser-native synthesis","rejected":"Generated loops or a hosted audio model","why":"Web Audio makes every performance live and personal, keeps latency low, and costs nothing at rest."},{"at":"12:08","chosen":"Stable musical orbits","rejected":"Physically accurate n-body gravity","why":"Real orbital chaos makes a poor instrument. The visual metaphor should serve repeatable rhythm, not astrophysical purity."},{"at":"12:09","chosen":"One generated launch card; code-native product visuals","rejected":"A large asset pack","why":"The instrument’s identity comes from motion and sound. Generated art is reserved for the social preview where a still image must carry the idea."},{"at":"12:10","chosen":"Self-sustaining static runtime","rejected":"Use the available $5 monthly ceiling","why":"A recurring budget is permission, not an obligation. No feature here becomes better by depending on a server."},{"at":"12:18","chosen":"Fail the first audio critic pass","rejected":"Call a render-timed sequencer finished","why":"The critic found that React animation frames were firing notes late, hidden tabs could burst missed notes, and the engine had no voice ceiling. These were release blockers, not polish notes."},{"at":"12:22","chosen":"Move music onto the AudioContext clock","rejected":"Tune the RAF loop","why":"Orbit events now enter a 100ms lookahead scheduler; visuals read the audio transport. Backgrounding stops cleanly, polyphony is capped at 28, invalid parameters fail closed, and failed mobile resume becomes a visible error."},{"at":"12:23","chosen":"Fail the first mobile interaction pass","rejected":"Accept a beautiful desktop dashboard","why":"At 390px, tapping a world was silent, Space hijacked focused buttons, shared state claimed the wrong preset, and touch targets were undersized."},{"at":"12:26","chosen":"Make the orbit itself the immediate instrument","rejected":"Keep double-tap audition","why":"One tap, click, or Enter now selects and sounds a world. The modal isolates focus, shares report status, custom states say so, and every core mobile target reaches 44px."},{"at":"12:26","chosen":"Make sound meet the visible beam","rejected":"Use a constant local trigger angle","why":"Rotated eccentric ellipses now solve their own global beam intersection; geometry tests prove each crossing lands at x≈0 above the star."},{"at":"12:37","chosen":"Raise contrast and type size across the control surface","rejected":"Preserve the original ultra-muted editorial treatment","why":"Live review showed that restraint had crossed into low legibility. Labels, transport state, world readouts, buttons, and range handles now survive dim displays and smaller screens."},{"at":"12:39","chosen":"Replace the malformed reset arc","rejected":"Leave a technically labeled but visually ambiguous control","why":"The original SVG took its large arc outside the viewbox and resembled disconnected punctuation. A contained restart arrow now renders cleanly."},{"at":"12:40","chosen":"Set native menu colors globally","rejected":"Trust browser defaults","why":"Scale and Voice menus could combine a white native popup with inherited ivory text. Explicit dark option surfaces and high-contrast selected states remove that browser-dependent failure."}],"assets":[{"name":"Orbital launch card","path":"/og.png","type":"image","tool":"OpenAI built-in ImageGen","model":"OpenAI/imagegen","prompt":"Editorial Swiss astronomical diagram; near-black, ivory and acid; four orbital voices; exact text ‘KEPLER’S HARP’ and ‘COMPOSE WITH GRAVITY.’","seed":null},{"name":"Orbital launch card source","path":"/og-source.png","type":"image","tool":"OpenAI built-in ImageGen","model":"OpenAI/imagegen","prompt":"Original 1731×909 generation preserved before the exact 1200×630 delivery resize.","seed":null},{"name":"Orbit app icon","path":"/icon.svg","type":"icon","tool":"Code-native SVG","model":"OpenAI/GPT-5 Codex","prompt":"One ivory star, one acid orbit, one moving world in the product palette.","seed":null},{"name":"Apple touch icon","path":"/apple-icon.png","type":"icon","tool":"Local image crop","model":"sips","prompt":"Square 180×180 crop derived from the generated orbital launch artwork.","seed":null}],"spend":{"budgetUsd":10,"monthlyBudgetUsd":5,"totalUsd":0,"fiftyPercentUsd":5,"eightyPercentUsd":8,"higgsfieldCredits":0,"entries":[]},"modelsUsed":[{"provider":"OpenAI","model":"GPT-5 Codex","role":"concept, orchestration, implementation, and critique"},{"provider":"OpenAI","model":"imagegen (built-in)","role":"social preview artwork"}],"openQuestions":["Can orbital motion remain legible when a player deliberately makes the music dense?","Will quantized crossings preserve the visual illusion without audible timing drift?","Could a future pro version export stems without turning the instrument into a conventional DAW?"],"links":{"live":"https://experiment-20260806-1159.vercel.app","repo":"https://github.com/GGCryptoh/keplers-harp","insights":"https://experiment-20260806-1159.vercel.app/insights"}}