Files
pbakaus_impeccable/tests/oracle/golden/question-schema.json
T

8 lines
8.0 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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\": \"IMPECCABLES PICK\",\n \"lineage\": \"street-sold ballad sheets\",\n \"thesis\": \"Every release printed as the days 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 todays 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 verdicts 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 \"IMPECCABLES 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 challengers 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 cards 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": {}
}