mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-11 13:46:32 +03:00
Successful --reply was exit 0 with empty stdout, so agents could not tell delivery from a hang. Prepared with AI assistance. Co-authored-by: Cursor <cursoragent@cursor.com>
96 lines
19 KiB
JSON
96 lines
19 KiB
JSON
{
|
|
"steps": [
|
|
{
|
|
"stdout": "",
|
|
"stderr": "",
|
|
"exit": null,
|
|
"signal": null,
|
|
"daemon": true
|
|
},
|
|
{
|
|
"stdout": "",
|
|
"stderr": "Live server already running on port <PORT> (pid <PID>).\nStop it first with: <IMPECCABLE> live-server stop\n",
|
|
"exit": 1,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\n \"liveServer\": {\n \"status\": \"ok\",\n \"port\": <PORT>,\n \"connectedClients\": 0,\n \"agentPolling\": false,\n \"pendingEvents\": [\n {\n \"id\": \"ab12cd34\",\n \"type\": \"generate\",\n \"leased\": false,\n \"leaseUntil\": null\n }\n ]\n },\n \"activeSessions\": [\n {\n \"id\": \"ab12cd34\",\n \"phase\": \"generate_requested\",\n \"pageUrl\": \"/\",\n \"sourceFile\": null,\n \"previewFile\": null,\n \"previewMode\": null,\n \"expectedVariants\": 3,\n \"arrivedVariants\": 0,\n \"visibleVariant\": null,\n \"checkpointRevision\": 0,\n \"browserCheckpointRevision\": 0,\n \"publicationCheckpointRevision\": 0,\n \"paramValues\": {},\n \"generationPhase\": null,\n \"generationCompletedAt\": null,\n \"generationCanceled\": false,\n \"cancelReason\": null,\n \"mountedVariants\": [],\n \"mountFailures\": [],\n \"renderState\": null\n }\n ],\n \"render\": [\n {\n \"id\": \"ab12cd34\",\n \"renderState\": null,\n \"mountedVariants\": [],\n \"mountFailures\": []\n }\n ],\n \"recoveryHint\": \"Run <IMPECCABLE> live-poll to continue pending work, or <IMPECCABLE> live-complete --id <session> after manual cleanup.\"\n}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\"id\":\"ab12cd34\",\"type\":\"generate\",\"action\":\"bolder\",\"count\":3,\"pageUrl\":\"/\",\"element\":{\"tagName\":\"h1\",\"id\":\"hero\",\"classes\":[\"hero-title\"],\"textContent\":\"Oracle Fixture\",\"outerHTML\":\"<h1 id=\\\"hero\\\" class=\\\"hero-title\\\">Oracle Fixture</h1>\"},\"clientSentAt\":<EPOCH>,\"scaffoldAttempted\":true,\"scaffoldDurationMs\":<N>,\"scaffold\":{\"file\":\"index.html\",\"sourceWritten\":false,\"wrapperBlock\":\" <!-- impeccable-variants-start ab12cd34 -->\\n <div data-impeccable-variants=\\\"ab12cd34\\\" data-impeccable-variant-count=\\\"3\\\" style=\\\"display: contents\\\">\\n <!-- Original -->\\n <div data-impeccable-variant=\\\"original\\\">\\n <h1 id=\\\"hero\\\" class=\\\"hero-title\\\">Oracle Fixture</h1>\\n </div>\\n <!-- Variants: insert below this line -->\\n </div>\\n <!-- impeccable-variants-end ab12cd34 -->\",\"replaceStartLine\":13,\"replaceEndLine\":13,\"startLine\":13,\"endLine\":21,\"insertLine\":19,\"commentSyntax\":{\"open\":\"<!--\",\"close\":\"-->\"},\"styleMode\":\"scoped\",\"styleTag\":\"<style data-impeccable-css=\\\"SESSION_ID\\\">\",\"cssSelectorPrefixExamples\":[],\"cssAuthoring\":{\"mode\":\"scoped\",\"styleTag\":\"<style data-impeccable-css=\\\"SESSION_ID\\\">\",\"strategy\":\"scope-rule\",\"rulePattern\":\"@scope ([data-impeccable-variant=\\\"N\\\"]) { :scope > .variant-class { ... } }\",\"selectorExamples\":[\"@scope ([data-impeccable-variant=\\\"1\\\"]) { :scope > .variant-class { ... } }\",\"@scope ([data-impeccable-variant=\\\"2\\\"]) { :scope > .variant-class { ... } }\",\"@scope ([data-impeccable-variant=\\\"3\\\"]) { :scope > .variant-class { ... } }\"],\"requirements\":[\"Use @scope blocks keyed to each [data-impeccable-variant=\\\"N\\\"] wrapper.\",\"Inside each @scope block, make :scope rules step into the replacement element with a descendant combinator.\",\"Use the styleTag exactly; do not add framework-specific style attributes unless this object says to.\"],\"forbidden\":[\"Do not use global [data-impeccable-variant=\\\"N\\\"] selector prefixes for this styleMode.\",\"Do not add is:inline to the style tag for this styleMode.\"]},\"originalLineCount\":1},\"generationReadyAt\":<EPOCH>,\"_instructions\":\"1. No screenshot was sent (the user did not annotate); do not ask for one and do not screenshot the page. Work from element.outerHTML, the computed styles, and the prompt.\\n2. The wrapper is NOT in source yet. In ONE edit to index.html: splice preview CSS plus all 3 variants into scaffold.wrapperBlock at the \\\"Variants: insert below this line\\\" marker, then replace lines 13-13 with the result. Two separate writes reload the framework mid-publish and strand the browser at 0/N. Author CSS per the returned cssAuthoring contract; each variant div holds exactly ONE top-level element (same tag as the original); first visible, others display: none. On JSX/TSX wrap the <style> content in a template literal and use className / style={{...}}.\\n3. Action is \\\"bolder\\\": read reference/bolder.md before planning; its MUST params are non-negotiable. Plan per live.md section 4: extract the identity lock, pick default vs departure mode, commit each variant to a DIFFERENT primary axis, squint-test the trio. Size parameter knobs per section 7 budgets.\\n4. When all 3 variants are delivered: <IMPECCABLE> live-poll --reply ab12cd34 done --file <project-root-relative path you wrote>. Then poll again. If generation fails after the browser flipped to GENERATING, reply --reply ab12cd34 error \\\"Short reason\\\" so the bar resets (never live-accept --discard for this).\"}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\"ok\":true,\"id\":\"ab12cd34\",\"status\":\"done\",\"file\":\"index.html\",\"_instructions\":\"Poll again now.\"}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\"type\":\"timeout\",\"_instructions\":\"No event arrived; poll again immediately.\"}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "",
|
|
"stderr": "Reply failed: unknown_poll_reply_id\n",
|
|
"exit": 1,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\"ok\":true,\"id\":\"ab12cd34\",\"status\":\"steer_done\",\"_instructions\":\"Poll again now.\"}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\n \"active\": true,\n \"snapshot\": {\n \"id\": \"ab12cd34\",\n \"phase\": \"steer_done\",\n \"pageUrl\": \"/\",\n \"sourceFile\": \"index.html\",\n \"previewFile\": null,\n \"previewMode\": null,\n \"expectedVariants\": 3,\n \"arrivedVariants\": 3,\n \"visibleVariant\": null,\n \"paramValues\": {},\n \"pendingEventSeq\": null,\n \"pendingEvent\": null,\n \"deliveryLease\": null,\n \"checkpointRevision\": 0,\n \"browserCheckpointRevision\": 0,\n \"publicationCheckpointRevision\": 0,\n \"activeOwner\": null,\n \"sourceMarkers\": {},\n \"fallbackMode\": null,\n \"generationPhase\": \"generation_ready\",\n \"generationCompletedAt\": <EPOCH>,\n \"generationTimings\": {\n \"picked_up\": {\n \"at\": <EPOCH>,\n \"durationMs\": null\n },\n \"scaffolding\": {\n \"at\": <EPOCH>,\n \"durationMs\": null\n },\n \"source_ready\": {\n \"at\": <EPOCH>,\n \"durationMs\": <MS>\n },\n \"generation_ready\": {\n \"at\": <EPOCH>,\n \"durationMs\": null\n }\n },\n \"variantPlan\": null,\n \"generationCanceled\": false,\n \"generationCanceledAt\": null,\n \"cancelReason\": null,\n \"annotationArtifacts\": [],\n \"mountedVariants\": [],\n \"mountFailures\": [],\n \"renderState\": \"pending\",\n \"diagnostics\": [],\n \"updatedAt\": \"<ISO>\"\n },\n \"pendingEvent\": null,\n \"render\": {\n \"renderState\": \"pending\",\n \"mountedVariants\": [],\n \"mountFailures\": []\n },\n \"nextAction\": \"Inspect ab12cd34; no pending agent event is currently queued.\"\n}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\n \"ok\": true,\n \"id\": \"ab12cd34\",\n \"phase\": \"completed\",\n \"snapshot\": {\n \"id\": \"ab12cd34\",\n \"phase\": \"completed\",\n \"pageUrl\": \"/\",\n \"sourceFile\": \"index.html\",\n \"previewFile\": null,\n \"previewMode\": null,\n \"expectedVariants\": 3,\n \"arrivedVariants\": 3,\n \"visibleVariant\": null,\n \"paramValues\": {},\n \"pendingEventSeq\": null,\n \"pendingEvent\": null,\n \"deliveryLease\": null,\n \"checkpointRevision\": 0,\n \"browserCheckpointRevision\": 0,\n \"publicationCheckpointRevision\": 0,\n \"activeOwner\": null,\n \"sourceMarkers\": {},\n \"fallbackMode\": null,\n \"generationPhase\": \"generation_ready\",\n \"generationCompletedAt\": <EPOCH>,\n \"generationTimings\": {\n \"picked_up\": {\n \"at\": <EPOCH>,\n \"durationMs\": null\n },\n \"scaffolding\": {\n \"at\": <EPOCH>,\n \"durationMs\": null\n },\n \"source_ready\": {\n \"at\": <EPOCH>,\n \"durationMs\": <MS>\n },\n \"generation_ready\": {\n \"at\": <EPOCH>,\n \"durationMs\": null\n }\n },\n \"variantPlan\": null,\n \"generationCanceled\": false,\n \"generationCanceledAt\": null,\n \"cancelReason\": null,\n \"annotationArtifacts\": [],\n \"mountedVariants\": [],\n \"mountFailures\": [],\n \"renderState\": \"pending\",\n \"diagnostics\": [],\n \"updatedAt\": \"<ISO>\"\n }\n}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\n \"liveServer\": {\n \"status\": \"ok\",\n \"port\": <PORT>,\n \"connectedClients\": 0,\n \"agentPolling\": false,\n \"pendingEvents\": []\n },\n \"activeSessions\": [],\n \"render\": [],\n \"recoveryHint\": \"Run <IMPECCABLE> live-poll to continue pending work, or <IMPECCABLE> live-complete --id <session> after manual cleanup.\"\n}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "Stopped live server on port <PORT>.\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
},
|
|
{
|
|
"stdout": "{\n \"liveServer\": null,\n \"activeSessions\": [],\n \"render\": [],\n \"recoveryHint\": \"Start <IMPECCABLE> live-server to requeue pending durable events, then run <IMPECCABLE> live-poll.\"\n}\n",
|
|
"stderr": "",
|
|
"exit": 0,
|
|
"signal": null
|
|
}
|
|
],
|
|
"files": {
|
|
".impeccable/live/config.json": "{\n \"files\": [\"index.html\", \"public/**/*.html\"],\n \"insertBefore\": \"</body>\",\n \"commentSyntax\": \"html\"\n}\n",
|
|
".impeccable/live/sessions/ab12cd34.jsonl": "{\"seq\":1,\"id\":\"ab12cd34\",\"type\":\"generate\",\"ts\":\"<ISO>\",\"event\":{\"id\":\"ab12cd34\",\"type\":\"generate\",\"action\":\"bolder\",\"count\":3,\"pageUrl\":\"/\",\"element\":{\"tagName\":\"h1\",\"id\":\"hero\",\"classes\":[\"hero-title\"],\"textContent\":\"Oracle Fixture\",\"outerHTML\":\"<h1 id=\\\"hero\\\" class=\\\"hero-title\\\">Oracle Fixture</h1>\"},\"clientSentAt\":<EPOCH>}}\n{\"seq\":2,\"id\":\"ab12cd34\",\"type\":\"agent_phase\",\"ts\":\"<ISO>\",\"event\":{\"type\":\"agent_phase\",\"id\":\"ab12cd34\",\"phase\":\"picked_up\",\"at\": <EPOCH>}}\n{\"seq\":3,\"id\":\"ab12cd34\",\"type\":\"agent_phase\",\"ts\":\"<ISO>\",\"event\":{\"type\":\"agent_phase\",\"id\":\"ab12cd34\",\"phase\":\"scaffolding\",\"at\": <EPOCH>}}\n{\"seq\":4,\"id\":\"ab12cd34\",\"type\":\"generate\",\"ts\":\"<ISO>\",\"event\":{\"id\":\"ab12cd34\",\"type\":\"generate\",\"action\":\"bolder\",\"count\":3,\"pageUrl\":\"/\",\"element\":{\"tagName\":\"h1\",\"id\":\"hero\",\"classes\":[\"hero-title\"],\"textContent\":\"Oracle Fixture\",\"outerHTML\":\"<h1 id=\\\"hero\\\" class=\\\"hero-title\\\">Oracle Fixture</h1>\"},\"clientSentAt\":<EPOCH>,\"scaffoldAttempted\":true,\"scaffoldDurationMs\":<N>,\"scaffold\":{\"file\":\"index.html\",\"sourceWritten\":false,\"wrapperBlock\":\" <!-- impeccable-variants-start ab12cd34 -->\\n <div data-impeccable-variants=\\\"ab12cd34\\\" data-impeccable-variant-count=\\\"3\\\" style=\\\"display: contents\\\">\\n <!-- Original -->\\n <div data-impeccable-variant=\\\"original\\\">\\n <h1 id=\\\"hero\\\" class=\\\"hero-title\\\">Oracle Fixture</h1>\\n </div>\\n <!-- Variants: insert below this line -->\\n </div>\\n <!-- impeccable-variants-end ab12cd34 -->\",\"replaceStartLine\":13,\"replaceEndLine\":13,\"startLine\":13,\"endLine\":21,\"insertLine\":19,\"commentSyntax\":{\"open\":\"<!--\",\"close\":\"-->\"},\"styleMode\":\"scoped\",\"styleTag\":\"<style data-impeccable-css=\\\"SESSION_ID\\\">\",\"cssSelectorPrefixExamples\":[],\"cssAuthoring\":{\"mode\":\"scoped\",\"styleTag\":\"<style data-impeccable-css=\\\"SESSION_ID\\\">\",\"strategy\":\"scope-rule\",\"rulePattern\":\"@scope ([data-impeccable-variant=\\\"N\\\"]) { :scope > .variant-class { ... } }\",\"selectorExamples\":[\"@scope ([data-impeccable-variant=\\\"1\\\"]) { :scope > .variant-class { ... } }\",\"@scope ([data-impeccable-variant=\\\"2\\\"]) { :scope > .variant-class { ... } }\",\"@scope ([data-impeccable-variant=\\\"3\\\"]) { :scope > .variant-class { ... } }\"],\"requirements\":[\"Use @scope blocks keyed to each [data-impeccable-variant=\\\"N\\\"] wrapper.\",\"Inside each @scope block, make :scope rules step into the replacement element with a descendant combinator.\",\"Use the styleTag exactly; do not add framework-specific style attributes unless this object says to.\"],\"forbidden\":[\"Do not use global [data-impeccable-variant=\\\"N\\\"] selector prefixes for this styleMode.\",\"Do not add is:inline to the style tag for this styleMode.\"]},\"originalLineCount\":1}}}\n{\"seq\":5,\"id\":\"ab12cd34\",\"type\":\"agent_phase\",\"ts\":\"<ISO>\",\"event\":{\"type\":\"agent_phase\",\"id\":\"ab12cd34\",\"phase\":\"source_ready\",\"at\": <EPOCH>,\"durationMs\": <MS>,\"previewMode\":\"source\"}}\n{\"seq\":6,\"id\":\"ab12cd34\",\"type\":\"generate\",\"ts\":\"<ISO>\",\"event\":{\"id\":\"ab12cd34\",\"type\":\"generate\",\"action\":\"bolder\",\"count\":3,\"pageUrl\":\"/\",\"element\":{\"tagName\":\"h1\",\"id\":\"hero\",\"classes\":[\"hero-title\"],\"textContent\":\"Oracle Fixture\",\"outerHTML\":\"<h1 id=\\\"hero\\\" class=\\\"hero-title\\\">Oracle Fixture</h1>\"},\"clientSentAt\":<EPOCH>,\"scaffoldAttempted\":true,\"scaffoldDurationMs\":<N>,\"scaffold\":{\"file\":\"index.html\",\"sourceWritten\":false,\"wrapperBlock\":\" <!-- impeccable-variants-start ab12cd34 -->\\n <div data-impeccable-variants=\\\"ab12cd34\\\" data-impeccable-variant-count=\\\"3\\\" style=\\\"display: contents\\\">\\n <!-- Original -->\\n <div data-impeccable-variant=\\\"original\\\">\\n <h1 id=\\\"hero\\\" class=\\\"hero-title\\\">Oracle Fixture</h1>\\n </div>\\n <!-- Variants: insert below this line -->\\n </div>\\n <!-- impeccable-variants-end ab12cd34 -->\",\"replaceStartLine\":13,\"replaceEndLine\":13,\"startLine\":13,\"endLine\":21,\"insertLine\":19,\"commentSyntax\":{\"open\":\"<!--\",\"close\":\"-->\"},\"styleMode\":\"scoped\",\"styleTag\":\"<style data-impeccable-css=\\\"SESSION_ID\\\">\",\"cssSelectorPrefixExamples\":[],\"cssAuthoring\":{\"mode\":\"scoped\",\"styleTag\":\"<style data-impeccable-css=\\\"SESSION_ID\\\">\",\"strategy\":\"scope-rule\",\"rulePattern\":\"@scope ([data-impeccable-variant=\\\"N\\\"]) { :scope > .variant-class { ... } }\",\"selectorExamples\":[\"@scope ([data-impeccable-variant=\\\"1\\\"]) { :scope > .variant-class { ... } }\",\"@scope ([data-impeccable-variant=\\\"2\\\"]) { :scope > .variant-class { ... } }\",\"@scope ([data-impeccable-variant=\\\"3\\\"]) { :scope > .variant-class { ... } }\"],\"requirements\":[\"Use @scope blocks keyed to each [data-impeccable-variant=\\\"N\\\"] wrapper.\",\"Inside each @scope block, make :scope rules step into the replacement element with a descendant combinator.\",\"Use the styleTag exactly; do not add framework-specific style attributes unless this object says to.\"],\"forbidden\":[\"Do not use global [data-impeccable-variant=\\\"N\\\"] selector prefixes for this styleMode.\",\"Do not add is:inline to the style tag for this styleMode.\"]},\"originalLineCount\":1},\"generationReadyAt\":<EPOCH>}}\n{\"seq\":7,\"id\":\"ab12cd34\",\"type\":\"agent_phase\",\"ts\":\"<ISO>\",\"event\":{\"type\":\"agent_phase\",\"id\":\"ab12cd34\",\"phase\":\"generation_ready\",\"at\": <EPOCH>}}\n{\"seq\":8,\"id\":\"ab12cd34\",\"type\":\"agent_done\",\"ts\":\"<ISO>\",\"event\":{\"type\":\"agent_done\",\"id\":\"ab12cd34\",\"file\":\"index.html\",\"sourceEventType\":\"generate\",\"carbonize\":false}}\n{\"seq\":9,\"id\":\"ab12cd34\",\"type\":\"steer_done\",\"ts\":\"<ISO>\",\"event\":{\"type\":\"steer_done\",\"id\":\"ab12cd34\",\"carbonize\":false}}\n{\"seq\":10,\"id\":\"ab12cd34\",\"type\":\"complete\",\"ts\":\"<ISO>\",\"event\":{\"type\":\"complete\",\"id\":\"ab12cd34\",\"carbonize\":false}}\n",
|
|
".impeccable/live/sessions/ab12cd34.snapshot.json": "{\n \"id\": \"ab12cd34\",\n \"phase\": \"completed\",\n \"pageUrl\": \"/\",\n \"sourceFile\": \"index.html\",\n \"previewFile\": null,\n \"previewMode\": null,\n \"expectedVariants\": 3,\n \"arrivedVariants\": 3,\n \"visibleVariant\": null,\n \"paramValues\": {},\n \"pendingEventSeq\": null,\n \"pendingEvent\": null,\n \"deliveryLease\": null,\n \"checkpointRevision\": 0,\n \"browserCheckpointRevision\": 0,\n \"publicationCheckpointRevision\": 0,\n \"activeOwner\": null,\n \"sourceMarkers\": {},\n \"fallbackMode\": null,\n \"generationPhase\": \"generation_ready\",\n \"generationCompletedAt\": <EPOCH>,\n \"generationTimings\": {\n \"picked_up\": {\n \"at\": <EPOCH>,\n \"durationMs\": null\n },\n \"scaffolding\": {\n \"at\": <EPOCH>,\n \"durationMs\": null\n },\n \"source_ready\": {\n \"at\": <EPOCH>,\n \"durationMs\": <MS>\n },\n \"generation_ready\": {\n \"at\": <EPOCH>,\n \"durationMs\": null\n }\n },\n \"variantPlan\": null,\n \"generationCanceled\": false,\n \"generationCanceledAt\": null,\n \"cancelReason\": null,\n \"annotationArtifacts\": [],\n \"mountedVariants\": [],\n \"mountFailures\": [],\n \"renderState\": \"pending\",\n \"diagnostics\": [],\n \"updatedAt\": \"<ISO>\",\n \"__journalBytes\": <N>,\n \"__nextSeq\": 11\n}\n",
|
|
"index.html": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <title>Oracle Live HTML Fixture</title>\n <style>\n .hero-title { font-size: 2rem; }\n .hero-hook { color: #555; }\n </style>\n </head>\n <body>\n <main class=\"page\">\n <h1 id=\"hero\" class=\"hero-title\">Oracle Fixture</h1>\n <p class=\"hero-hook\">Minimal static page for oracle live-mode goldens.</p>\n <section id=\"features\" class=\"feature-grid\">\n <article class=\"feature-card\">One</article>\n <article class=\"feature-card\">Two</article>\n </section>\n <aside class=\"side-note\">\n <h2 class=\"note-title\">Aside</h2>\n <p>Nested content.</p>\n </aside>\n </main>\n </body>\n</html>\n"
|
|
},
|
|
"daemon": [
|
|
{
|
|
"stdout": "\nImpeccable live server running on http://localhost:<PORT>\nToken: <UUID>\n\nScript: http://localhost:<PORT>/live.js\nInject: managed by impeccable live-inject; Astro source tags use is:inline automatically.\nStop: impeccable live-server stop\n",
|
|
"stderr": ""
|
|
}
|
|
]
|
|
}
|