mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-13 06:36:26 +03:00
8 lines
8.0 KiB
JSON
8 lines
8.0 KiB
JSON
{
|
||
"stdout": "{\n \"title\": \"Choose the visual world\",\n \"question\": \"The roll assigned Fillmore Handbill. Keep it, take an alternate, or re-roll.\",\n \"options\": [\n {\n \"id\": \"assigned\",\n \"label\": \"Fillmore Handbill\",\n \"kicker\": \"THE ROLL\",\n \"lineage\": \"1966-71 Fillmore psychedelic handbills\",\n \"thesis\": \"The gig poster that treats every release like a one-night stand.\",\n \"palette\": [\n \"#e8452c\",\n \"#f5d64c\",\n \"#1b2a52\",\n \"#f3ead8\"\n ],\n \"materials\": [\n \"letterpress\",\n \"split-fountain ink\"\n ],\n \"viewport\": \"A full-bleed dated bill with the product name in warped display type.\",\n \"risk\": \"Reads nostalgic when the type is set timidly.\",\n \"raised\": [\n {\n \"from\": \"challenger-microfiche\",\n \"raise\": \"The bill now owns its whole viewport as one continuous printed sheet.\"\n }\n ],\n \"comp\": \".impeccable/mocks/decision/assigned.webp\",\n \"hero\": \"https://impeccable.style/worlds/cards/posters-covers-sleeves-fillmore-handbill-hero.webp\",\n \"board\": \"https://impeccable.style/worlds/cards/posters-covers-sleeves-fillmore-handbill.webp\"\n },\n {\n \"id\": \"model-pick\",\n \"label\": \"The Broadside Ballad\",\n \"kicker\": \"IMPECCABLE’S PICK\",\n \"lineage\": \"street-sold ballad sheets\",\n \"thesis\": \"Every release printed as the day’s ballad sheet.\",\n \"palette\": [\n \"#1f1c18\",\n \"#efe5d0\",\n \"#a33327\"\n ],\n \"materials\": [\n \"woodcut\",\n \"rag paper\"\n ],\n \"viewport\": \"One tall sheet, the newest release as today’s ballad.\",\n \"risk\": \"Also the direction most runs in this category land on.\",\n \"comp\": \".impeccable/mocks/decision/model-pick.webp\"\n },\n {\n \"id\": \"challenger-teletext\",\n \"label\": \"Teletext Service\",\n \"verdict\": \"competitive\",\n \"lineage\": \"broadcast teletext magazines\",\n \"thesis\": \"The catalog as a broadcast index: pages, not sections.\",\n \"palette\": [\n \"#0000c0\",\n \"#ffff00\",\n \"#00c000\",\n \"#ffffff\"\n ],\n \"materials\": [\n \"block mosaic\",\n \"phosphor glow\"\n ],\n \"viewport\": \"P100 index page, releases as numbered rows.\",\n \"case\": \"Fuses cleanly: releases map to numbered pages; loses narrowly on clarity.\",\n \"risk\": \"Reads retro-novelty when the grid is not strict.\",\n \"comp\": \".impeccable/mocks/decision/challenger-teletext.webp\",\n \"hero\": \"https://impeccable.style/worlds/cards/broadcast-programming-teletext-service-hero.webp\"\n },\n {\n \"id\": \"challenger-microfiche\",\n \"label\": \"Microfiche Reader\",\n \"verdict\": \"declined\",\n \"lineage\": \"library microfiche stations\",\n \"palette\": [\n \"#101418\",\n \"#9fb4c0\"\n ],\n \"materials\": [\n \"film grain\",\n \"backlit glass\"\n ],\n \"case\": \"Fuses poorly: listeners do not identify with archival retrieval.\",\n \"kept\": \"Total environmental commitment.\",\n \"hero\": \"https://impeccable.style/worlds/cards/archives-microfiche-reader-hero.webp\"\n }\n ],\n \"reroll\": {\n \"registers\": [\n \"safer\",\n \"bolder\"\n ]\n },\n \"buildPath\": {\n \"value\": \"comp\",\n \"toggle\": true\n },\n \"canon\": true,\n \"canonCard\": {\n \"label\": \"The category standard\",\n \"thesis\": \"What this category ships, executed impeccably.\",\n \"palette\": [\n \"#ffffff\",\n \"#111827\",\n \"#2563eb\"\n ],\n \"materials\": [\n \"clean grid\",\n \"product photography\"\n ],\n \"viewport\": \"The arrangement a visitor expects, at full craft.\",\n \"risk\": \"Indistinguishable from the competition by design.\",\n \"comp\": \".impeccable/mocks/decision/canon.webp\"\n },\n \"steer\": true\n}\n\nOption ids return verbatim in ANSWER; \"reroll\" and \"canon\" are reserved. hero/board/comp accept URLs or local paths; comp slots may point at files that do not exist yet (serve first, generate after; the page polls until they land, so never block serving on generation). hero on a challenger is the inspiration it draws from and renders picture-in-picture beside the comp, never as the promise of the build. verdict routes rendering: \"wins\" and \"competitive\" challengers keep full cards, \"declined\" ones render demoted after them (narrow, quiet, art as a labeled thumb, \"Adopt anyway\"), with their kept line on the front; the page reorders declined cards to the end on its own. raised on the assigned card renders each donation as a named raise line. Salience parity: when the assigned card declares no comp (no image generation this round), catalog art on every card demotes to a labeled thumb, so what looks important is the verdict’s call, never rendering luck. canonCard renders the standing exit as a subordinate card with the same anatomy; without it, canon stays a quiet footer action. Include canon only for visual-direction rounds; never present it as your own recommendation. The pick card is a kicker convention, not a field: kicker \"IMPECCABLE’S PICK\" on your top-ranked grounded candidate, one at most, never in the lead slot. Every card gets the full anatomy, challengers, canon, and declined included: thesis, palette, materials, viewport, risk; the seed already hands you each challenger’s system rules, so a card with no palette chips is an authoring gap, not a data gap. Keep thesis and each fact to one short sentence: the card front shows thesis, identity, and a two-line risk, while first viewport and the case read on the card back behind the Details chip, so long facts cost the reader a flip, not the page its scanability. A card with no imagery at all has no back; its full read renders on the front, so a text-only round loses nothing. A card may instead declare \"wireframe\" ({\"cols\":12,\"rows\":10,\"regions\":[{\"label\":\"nav rail\",\"x\":0,\"y\":0,\"w\":3,\"h\":10,\"accent\":true}]}): the page draws it as a layout schematic in the media slot; surface-scope rounds use it on code-led builds, it never counts toward salience, and the card keeps its full read on the front. The comp slot carries the card’s full-fidelity direction comp (the legacy key \"sketch\" is accepted as an alias). Comp aspect follows the surface: portrait at device viewport for native or mobile-first surfaces, landscape otherwise; the page adapts its cards to either. reroll accepts true or { \"registers\": [\"safer\", \"bolder\"] }: the register buttons steer the next hand along the familiar-to-bold axis, the answer carries \"register\", and you re-run concept-seed with --register <value> for the next round; offer the registers on direction rounds, and never pre-select one. buildPath rides the payload as { \"value\": \"comp\"|\"code\", \"toggle\": true }: the value is the recorded default (.impeccable/config.json buildPath, or .impeccable/config.local.json where one machine differs) and the toggle renders a footer switch whose flip binds that session only; the ANSWER then carries buildPath plus buildPathFlipped. On a code-led round each card still declares its comp path as a flip reserve: wireframes render, and a flip to comp makes --wait return once with BUILD PATH FLIPPED so you generate the comps into the declared slots while the round stays open; a flip back to code is free, and a comp that already landed stays as the critique reference. The toggle may only be offered when image generation exists: a harness with no image tool and no API key never sets toggle: true, so the choice never renders where comps cannot be made, and code-led simply rides as the untoggleable value. followup: true keeps the table open after a pick for a second round via --update; send the next payload immediately, the page is waiting on it.\n",
|
||
"stderr": "",
|
||
"exit": 0,
|
||
"signal": null,
|
||
"files": {}
|
||
}
|