diff --git a/AGENTS.md b/AGENTS.md index b1e81fe9..eb50a240 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -117,7 +117,6 @@ npm run version:json Other important scripts: ```sh -bash dogfood/generate-week3-bundles.sh find dogfood -type f -name 'commands.sh' | sort ``` diff --git a/dogfood/20260319-lifecycle/01-create.json b/dogfood/20260319-lifecycle/01-create.json deleted file mode 100644 index 079b332e..00000000 --- a/dogfood/20260319-lifecycle/01-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-19T18:02:15.173Z", - "result": { - "sessionId": "01KM3M69V23RWMMDMS1EK3ZXB4" - } -} diff --git a/dogfood/20260319-lifecycle/02-list.json b/dogfood/20260319-lifecycle/02-list.json deleted file mode 100644 index 07146c71..00000000 --- a/dogfood/20260319-lifecycle/02-list.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "list", - "timestamp": "2026-03-19T18:02:15.471Z", - "result": { - "sessions": [ - { - "sessionId": "01KM3M69V23RWMMDMS1EK3ZXB4", - "status": "running", - "command": [ - "node", - "--import", - "tsx", - "../../test/fixtures/apps/hello-prompt/main.ts" - ], - "createdAt": "2026-03-19T18:02:14.759Z" - } - ] - } -} diff --git a/dogfood/20260319-lifecycle/03-inspect-live.json b/dogfood/20260319-lifecycle/03-inspect-live.json deleted file mode 100644 index 29e847c8..00000000 --- a/dogfood/20260319-lifecycle/03-inspect-live.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-19T18:02:15.861Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KM3M69V23RWMMDMS1EK3ZXB4", - "createdAt": "2026-03-19T18:02:14.759Z", - "updatedAt": "2026-03-19T18:02:15.078Z", - "status": "running", - "command": [ - "node", - "--import", - "tsx", - "../../test/fixtures/apps/hello-prompt/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_d1aeb26ed6/dogfood/20260319-lifecycle", - "cols": 80, - "rows": 24, - "hostPid": 278189, - "childPid": 278201, - "exitCode": null, - "exitSignal": null - } - } -} diff --git a/dogfood/20260319-lifecycle/04-type.json b/dogfood/20260319-lifecycle/04-type.json deleted file mode 100644 index bdda75aa..00000000 --- a/dogfood/20260319-lifecycle/04-type.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-19T18:02:16.162Z", - "result": {} -} diff --git a/dogfood/20260319-lifecycle/05-send-keys.json b/dogfood/20260319-lifecycle/05-send-keys.json deleted file mode 100644 index 35d1ccc5..00000000 --- a/dogfood/20260319-lifecycle/05-send-keys.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-19T18:02:16.456Z", - "result": {} -} diff --git a/dogfood/20260319-lifecycle/06-wait-idle.json b/dogfood/20260319-lifecycle/06-wait-idle.json deleted file mode 100644 index 16a1dd48..00000000 --- a/dogfood/20260319-lifecycle/06-wait-idle.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-19T18:02:16.977Z", - "result": { - "timedOut": false - } -} diff --git a/dogfood/20260319-lifecycle/07-paste.json b/dogfood/20260319-lifecycle/07-paste.json deleted file mode 100644 index 1f6f9e10..00000000 --- a/dogfood/20260319-lifecycle/07-paste.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "paste", - "timestamp": "2026-03-19T18:02:17.309Z", - "result": {} -} diff --git a/dogfood/20260319-lifecycle/08-send-keys-enter.json b/dogfood/20260319-lifecycle/08-send-keys-enter.json deleted file mode 100644 index 80deac5c..00000000 --- a/dogfood/20260319-lifecycle/08-send-keys-enter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-19T18:02:17.612Z", - "result": {} -} diff --git a/dogfood/20260319-lifecycle/09-wait-idle-2.json b/dogfood/20260319-lifecycle/09-wait-idle-2.json deleted file mode 100644 index bee47342..00000000 --- a/dogfood/20260319-lifecycle/09-wait-idle-2.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-19T18:02:18.211Z", - "result": { - "timedOut": false - } -} diff --git a/dogfood/20260319-lifecycle/10-resize.json b/dogfood/20260319-lifecycle/10-resize.json deleted file mode 100644 index d92df067..00000000 --- a/dogfood/20260319-lifecycle/10-resize.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "resize", - "timestamp": "2026-03-19T18:02:18.622Z", - "result": { - "cols": 120, - "rows": 40 - } -} diff --git a/dogfood/20260319-lifecycle/11-inspect-resized.json b/dogfood/20260319-lifecycle/11-inspect-resized.json deleted file mode 100644 index 40bded8f..00000000 --- a/dogfood/20260319-lifecycle/11-inspect-resized.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-19T18:02:19.035Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KM3M69V23RWMMDMS1EK3ZXB4", - "createdAt": "2026-03-19T18:02:14.759Z", - "updatedAt": "2026-03-19T18:02:18.619Z", - "status": "running", - "command": [ - "node", - "--import", - "tsx", - "../../test/fixtures/apps/hello-prompt/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_d1aeb26ed6/dogfood/20260319-lifecycle", - "cols": 120, - "rows": 40, - "hostPid": 278189, - "childPid": 278201, - "exitCode": null, - "exitSignal": null - } - } -} diff --git a/dogfood/20260319-lifecycle/12-signal.json b/dogfood/20260319-lifecycle/12-signal.json deleted file mode 100644 index 6c005f7c..00000000 --- a/dogfood/20260319-lifecycle/12-signal.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "signal", - "timestamp": "2026-03-19T18:02:19.371Z", - "result": { - "signal": "SIGINT", - "delivered": true - } -} diff --git a/dogfood/20260319-lifecycle/13-wait-exit.json b/dogfood/20260319-lifecycle/13-wait-exit.json deleted file mode 100644 index 521e24de..00000000 --- a/dogfood/20260319-lifecycle/13-wait-exit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-19T18:02:19.711Z", - "result": { - "timedOut": false, - "exitCode": 130 - } -} diff --git a/dogfood/20260319-lifecycle/14-inspect-exited.json b/dogfood/20260319-lifecycle/14-inspect-exited.json deleted file mode 100644 index 740e1890..00000000 --- a/dogfood/20260319-lifecycle/14-inspect-exited.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-19T18:02:20.056Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KM3M69V23RWMMDMS1EK3ZXB4", - "createdAt": "2026-03-19T18:02:14.759Z", - "updatedAt": "2026-03-19T18:02:19.379Z", - "status": "exited", - "command": [ - "node", - "--import", - "tsx", - "../../test/fixtures/apps/hello-prompt/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_d1aeb26ed6/dogfood/20260319-lifecycle", - "cols": 120, - "rows": 40, - "hostPid": 278189, - "childPid": 278201, - "exitCode": 130, - "exitSignal": null - } - } -} diff --git a/dogfood/20260319-lifecycle/15-destroy.json b/dogfood/20260319-lifecycle/15-destroy.json deleted file mode 100644 index 950f1f41..00000000 --- a/dogfood/20260319-lifecycle/15-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-19T18:02:20.328Z", - "result": { - "sessionId": "01KM3M69V23RWMMDMS1EK3ZXB4", - "destroyed": true - } -} diff --git a/dogfood/20260319-lifecycle/event-log.jsonl b/dogfood/20260319-lifecycle/event-log.jsonl deleted file mode 100644 index 4a246b1b..00000000 --- a/dogfood/20260319-lifecycle/event-log.jsonl +++ /dev/null @@ -1,14 +0,0 @@ -{"seq":0,"ts":"2026-03-19T18:02:15.194Z","type":"output","payload":{"data":"READY> "}} -{"seq":1,"ts":"2026-03-19T18:02:16.160Z","type":"input_text","payload":{"data":"hello world"}} -{"seq":2,"ts":"2026-03-19T18:02:16.160Z","type":"output","payload":{"data":"hello world"}} -{"seq":3,"ts":"2026-03-19T18:02:16.454Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":4,"ts":"2026-03-19T18:02:16.455Z","type":"output","payload":{"data":"\r\n"}} -{"seq":5,"ts":"2026-03-19T18:02:16.455Z","type":"output","payload":{"data":"ECHO: hello world\r\nREADY> "}} -{"seq":6,"ts":"2026-03-19T18:02:17.308Z","type":"input_paste","payload":{"data":"\u001b[200~pasted-content\u001b[201~"}} -{"seq":7,"ts":"2026-03-19T18:02:17.308Z","type":"output","payload":{"data":"^[[200~pasted-content^[[201~"}} -{"seq":8,"ts":"2026-03-19T18:02:17.610Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":9,"ts":"2026-03-19T18:02:17.610Z","type":"output","payload":{"data":"\r\nECHO: pasted-content\r\nREADY> "}} -{"seq":10,"ts":"2026-03-19T18:02:18.620Z","type":"resize","payload":{"cols":120,"rows":40}} -{"seq":11,"ts":"2026-03-19T18:02:19.369Z","type":"signal","payload":{"signal":"SIGINT"}} -{"seq":12,"ts":"2026-03-19T18:02:19.370Z","type":"output","payload":{"data":"INTERRUPTED\r\n"}} -{"seq":13,"ts":"2026-03-19T18:02:19.380Z","type":"exit","payload":{"exitCode":130,"exitSignal":null}} diff --git a/dogfood/20260319-lifecycle/manifest.json b/dogfood/20260319-lifecycle/manifest.json deleted file mode 100644 index 41688dd1..00000000 --- a/dogfood/20260319-lifecycle/manifest.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "scenario": "lifecycle-proof", - "date": "2026-03-19", - "sessionId": "01KM3M69V23RWMMDMS1EK3ZXB4", - "commands": [ - "create", - "list", - "inspect", - "type", - "send-keys", - "wait", - "paste", - "resize", - "signal", - "destroy" - ], - "fixture": "hello-prompt", - "result": "pass", - "knownGaps": ["renderer screenshots", "asciicast export", "gc command"] -} diff --git a/dogfood/20260319-lifecycle/notes.md b/dogfood/20260319-lifecycle/notes.md deleted file mode 100644 index 18df2544..00000000 --- a/dogfood/20260319-lifecycle/notes.md +++ /dev/null @@ -1,54 +0,0 @@ -# Lifecycle proof bundle - -- **Date:** 2026-03-19 -- **Scenario:** Full session lifecycle against the `hello-prompt` fixture -- **Fixture command:** `node --import tsx ../../test/fixtures/apps/hello-prompt/main.ts` -- **Session ID:** `01KM3M69V23RWMMDMS1EK3ZXB4` -- **Isolation:** run under a fresh `AGENT_TERMINAL_HOME=$(mktemp -d)` so only this scenario's state was present -- **Overall result:** pass; every JSON envelope in this directory has `ok: true` - -## What was run - -This scenario exercises the Week 1 control-plane lifecycle end to end: create, list, inspect, type, send Enter, wait for idle, paste, resize, signal, wait for exit, inspect the exited session, and destroy it. - -For the `create` step, the working invocation was `create --json -- node --import tsx ...` so the CLI parsed `--json` as a control-plane flag and `--import tsx ...` as the child command. - -## Step-by-step review guide - -| Step | File | What the command did | What the reviewer should observe | -| ---- | ------------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| 1 | `01-create.json` | Created a session running the `hello-prompt` fixture. | `ok: true`, `command: "create"`, and `result.sessionId == "01KM3M69V23RWMMDMS1EK3ZXB4"`. | -| 2 | `02-list.json` | Listed all sessions in the isolated home directory. | Exactly one session is present; its `sessionId` matches step 1, its `status` is `running`, and the command array points at the fixture. | -| 3 | `03-inspect-live.json` | Inspected the live session before any interaction. | `status: "running"`, `cols: 80`, `rows: 24`, and populated `hostPid` / `childPid`. `exitCode` and `exitSignal` are still `null`. | -| 4 | `04-type.json` | Sent literal text `hello world` to the PTY without pressing Enter. | Ack-only envelope: `ok: true` with an empty `result` object. The effect is visible in `event-log.jsonl` at seq 1-2. | -| 5 | `05-send-keys.json` | Sent the `Enter` key to submit the typed line. | Ack-only envelope. In the event log, seq 3-5 shows the Enter key, a newline, and the fixture response `ECHO: hello world` followed by `READY> `. | -| 6 | `06-wait-idle.json` | Waited for the session to go idle after the first prompt round-trip. | `timedOut: false`, proving the prompt settled within the 10s timeout. | -| 7 | `07-paste.json` | Sent a paste payload containing `pasted-content`. | Ack-only envelope. In the event log, seq 6 records `input_paste` with bracketed-paste wrappers and seq 7 shows the raw terminal echo. | -| 8 | `08-send-keys-enter.json` | Sent `Enter` so the pasted line would execute. | Ack-only envelope. Event-log seq 8-9 shows the Enter key and the fixture response `ECHO: pasted-content` followed by another prompt. | -| 9 | `09-wait-idle-2.json` | Waited for idle after the paste flow. | `timedOut: false`, confirming the second prompt cycle completed. | -| 10 | `10-resize.json` | Resized the PTY to 120x40. | `result.cols == 120` and `result.rows == 40`. | -| 11 | `11-inspect-resized.json` | Re-inspected the live session after resize. | Session is still `running`, and `cols` / `rows` now read `120` / `40`. | -| 12 | `12-signal.json` | Delivered `SIGINT` to the session. | `signal: "SIGINT"` and `delivered: true`. | -| 13 | `13-wait-exit.json` | Waited specifically for process exit. | `timedOut: false` and `exitCode: 130`, matching a Ctrl-C style termination. | -| 14 | `14-inspect-exited.json` | Inspected the terminated session before deletion. | `status: "exited"`, `exitCode: 130`, and the resized dimensions `120x40` are still preserved in metadata. | -| 15 | `15-destroy.json` | Deleted the session record from the isolated home directory. | `destroyed: true` and the same `sessionId` appears in the result. | - -## Event log observations - -- `event-log.jsonl` has 14 entries with monotonic sequence numbers `0` through `13`. -- The first entry is prompt output: `READY> `. -- The typed-text path is visible as `input_text` followed by echoed output. -- The paste path is distinct: seq 6 is `input_paste` and contains bracketed-paste control wrappers (`[200~` / `[201~`). -- The resize is recorded explicitly at seq 10 with `cols: 120` and `rows: 40`. -- The shutdown path is visible as `signal` -> `output` (`INTERRUPTED`) -> `exit` with `exitCode: 130`. - -## Known gaps - -- No renderer screenshots are included because the renderer path is not implemented yet. -- No asciicast export is available yet, so the proof is JSON/event-log based rather than video based. -- The `gc` command is not implemented yet, so garbage-collection behavior is out of scope for this bundle. - -## Additional notes - -- No command failed during this run, so there are no expected `ok: false` envelopes to explain. -- The bundle is intentionally self-contained for reviewer consumption: the JSON envelopes show command results, and `event-log.jsonl` shows the terminal-side evidence those commands produced. diff --git a/dogfood/20260319-lifecycle/screenshots/01-create.svg b/dogfood/20260319-lifecycle/screenshots/01-create.svg deleted file mode 100644 index 30035a8f..00000000 --- a/dogfood/20260319-lifecycle/screenshots/01-create.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - $ Create Session - - -
$ npx tsx src/cli/main.ts create -- node --import tsx test/fixtures/apps/hello-prompt/main.ts --json 2>/dev/null
-
-Session created: 01KM3MPTG735D2K160BW3S452H
-
-✓ Session successfully created and running
-  Process ID: 299338
-  Terminal: 80x24
-  Status: running
-
- - -
\ No newline at end of file diff --git a/dogfood/20260319-lifecycle/screenshots/02-list.svg b/dogfood/20260319-lifecycle/screenshots/02-list.svg deleted file mode 100644 index 39b95ede..00000000 --- a/dogfood/20260319-lifecycle/screenshots/02-list.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - $ List Sessions - - -
$ npx tsx src/cli/main.ts list --json 2>/dev/null
-
-{
-  "ok": true,
-  "command": "list",
-  "result": {
-    "sessions": [
-      {
-        "sessionId": "01KM3MPTG735D2K160BW3S452H",
-        "status": "running",
-        "createdAt": "2026-03-19T18:11:16.108Z"
-      }
-    ]
-  }
-}
-
-✓ One active session found
-
- - -
\ No newline at end of file diff --git a/dogfood/20260319-lifecycle/screenshots/03-after-input.svg b/dogfood/20260319-lifecycle/screenshots/03-after-input.svg deleted file mode 100644 index b112b2d0..00000000 --- a/dogfood/20260319-lifecycle/screenshots/03-after-input.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - $ Type and Send Input - - -
$ npx tsx src/cli/main.ts type SESSION_ID "hello world" --json 2>/dev/null
-{
-  "ok": true,
-  "command": "type"
-}
-
-$ npx tsx src/cli/main.ts send-keys SESSION_ID Enter --json 2>/dev/null
-{
-  "ok": true,
-  "command": "send-keys"
-}
-
-$ npx tsx src/cli/main.ts wait SESSION_ID --idle-ms 500 --timeout 10000 --json 2>/dev/null
-{
-  "ok": true,
-  "result": {
-    "timedOut": false
-  }
-}
-
-✓ Session processed input successfully
-
- - -
\ No newline at end of file diff --git a/dogfood/20260319-lifecycle/screenshots/04-inspect.svg b/dogfood/20260319-lifecycle/screenshots/04-inspect.svg deleted file mode 100644 index ba7cf399..00000000 --- a/dogfood/20260319-lifecycle/screenshots/04-inspect.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - $ Inspect Live Session - - -
$ npx tsx src/cli/main.ts inspect SESSION_ID --json 2>/dev/null
-
-{
-  "ok": true,
-  "command": "inspect",
-  "result": {
-    "session": {
-      "sessionId": "01KM3MPTG735D2K160BW3S452H",
-      "status": "running",
-      "cols": 80,
-      "rows": 24,
-      "hostPid": 299326,
-      "childPid": 299338
-    }
-  }
-}
-
-✓ Session details retrieved
-
- - -
\ No newline at end of file diff --git a/dogfood/20260319-lifecycle/screenshots/05-resize.svg b/dogfood/20260319-lifecycle/screenshots/05-resize.svg deleted file mode 100644 index 8e2f039f..00000000 --- a/dogfood/20260319-lifecycle/screenshots/05-resize.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - $ Resize Session - - -
$ npx tsx src/cli/main.ts resize SESSION_ID --cols 120 --rows 40 --json 2>/dev/null
-
-{
-  "ok": true,
-  "result": {
-    "cols": 120,
-    "rows": 40
-  }
-}
-
-$ npx tsx src/cli/main.ts inspect SESSION_ID --json 2>/dev/null
-{
-  "session": {
-    "cols": 120,
-    "rows": 40
-  }
-}
-
-✓ Session resized from 80x24 to 120x40
-
- - -
\ No newline at end of file diff --git a/dogfood/20260319-lifecycle/screenshots/06-destroy.svg b/dogfood/20260319-lifecycle/screenshots/06-destroy.svg deleted file mode 100644 index 40c1fc78..00000000 --- a/dogfood/20260319-lifecycle/screenshots/06-destroy.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - $ Destroy and Final State - - -
$ npx tsx src/cli/main.ts destroy SESSION_ID --force --json 2>/dev/null
-
-{
-  "ok": true,
-  "result": {
-    "sessionId": "01KM3MPTG735D2K160BW3S452H",
-    "destroyed": true
-  }
-}
-
-$ npx tsx src/cli/main.ts list --all --json 2>/dev/null
-
-{
-  "sessions": [
-    {
-      "sessionId": "01KM3MPTG735D2K160BW3S452H",
-      "status": "exited"
-    }
-  ]
-}
-
-✓ Session destroyed
-
- - -
\ No newline at end of file diff --git a/dogfood/20260319-nvim-demo/dogfood.md b/dogfood/20260319-nvim-demo/dogfood.md deleted file mode 100644 index 1416b050..00000000 --- a/dogfood/20260319-nvim-demo/dogfood.md +++ /dev/null @@ -1,6 +0,0 @@ -# Dogfood Demo - -This file was created by agent-terminal driving neovim. -All keystrokes were sent via the agent-terminal CLI. - -Session ID: 01KM3NDZK4TXG5C3SQJ811ZGVJ diff --git a/dogfood/20260319-nvim-demo/event-log.jsonl b/dogfood/20260319-nvim-demo/event-log.jsonl deleted file mode 100644 index dfac3ce9..00000000 --- a/dogfood/20260319-nvim-demo/event-log.jsonl +++ /dev/null @@ -1,65 +0,0 @@ -{"seq":0,"ts":"2026-03-19T18:23:55.324Z","type":"output","payload":{"data":"\u001b[?1049h\u001b[22;0;0t\u001b[22;0t\u001b[?1h\u001b=\u001b[H\u001b[2J\u001b]11;?\u0007\u001b[?2004h\u001b[?u\u001b[c\u001b[?25h"}} -{"seq":1,"ts":"2026-03-19T18:23:55.368Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\u001b[H\u001b[2J\u001b[96m\" ============================================================================\u001b(B\u001b[m\u001b[K\r\n\u001b[96m\" Netrw Directory Listing \u001b(B\u001b[0;1m\u001b[96m(netrw v171)\u001b(B\u001b[m\u001b[K\r\n\u001b[96m\" /home/coder/.mux/src/agent-terminal/planning-ws01\u001b(B\u001b[m\u001b[K\r\n\u001b[96m\" Sorted by\u001b(B\u001b[m\u001b[93m name\u001b(B\u001b[m\u001b[K\r\n\u001b[96m\" Sort sequence:\u001b(B\u001b[m\u001b[93m [\\/]$\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m\\\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m\\.h$\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m\\.c$\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m\\.cpp$\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m\\~\\=\\*$\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m*\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m\\.o$\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m\\.obj$\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m\\.info$\u001b(B\u001b[m\u001b[96m,\u001b(B\u001b[m\u001b[93m\\.swp$\r\n\u001b(B\u001b[m\u001b[96m\" Quick Help: \u001b(B\u001b[0;1m\u001b[96m\u001b(B\u001b[m\u001b[38;5;224m:\u001b(B\u001b[mhelp \u001b(B\u001b[0;1m\u001b[96m-\u001b(B\u001b[m\u001b[38;5;224m:\u001b(B\u001b[mgo up dir \u001b(B\u001b[0;1m\u001b[96mD\u001b(B\u001b[m\u001b[38;5;224m:\u001b(B\u001b[mdelete \u001b(B\u001b[0;1m\u001b[96mR\u001b(B\u001b[m\u001b[38;5;224m:\u001b(B\u001b[mrename \u001b(B\u001b[0;1m\u001b[96ms\u001b(B\u001b[m\u001b[38;5;224m:\u001b(B\u001b[msort-by \u001b(B\u001b[0;1m\u001b[96mx\u001b(B\u001b[m\u001b[38;5;224m:\u001b(B\u001b[mspecial\u001b[K\r\n\u001b[96m\" ==============================================================================\u001b(B\u001b[m\u001b[K\r\n\u001b(B\u001b[0;4m\u001b[38;5;159m..\u001b(B\u001b[0;1;4m\u001b[96m/\u001b(B\u001b[0;4m \r\n\u001b(B\u001b[m\u001b[38;5;159m.\u001b(B\u001b[0;1m\u001b[96m/\u001b(B\u001b[m\u001b[K\r\n\u001b[38;5;159m.github\u001b(B\u001b[0;1m\u001b[96m/\u001b(B\u001b[m\u001b[K\r\n\u001b[38;5;159m.mux\u001b(B\u001b[0;1m\u001b[96m/\u001b(B\u001b[m\u001b[K\r\n\u001b[38;5;159mdesign\u001b(B\u001b[0;1m\u001b[96m/\u001b(B\u001b[m\u001b[K\r\n\u001b[38;5;159mdist\u001b(B\u001b[0;1m\u001b[96m/\u001b(B\u001b[m\u001b[K\r\n\u001b[38;5;159mdogfood\u001b(B\u001b[0;1m\u001b[96m/\u001b(B\u001b[m\u001b[K\r\n\u001b[38;5;159mnode_modules\u001b(B\u001b[0;1m\u001b[96m/\u001b(B\u001b[m\u001b[K\r\n\u001b[38;5;159msrc\u001b(B\u001b[0;1m\u001b[96m/\u001b(B\u001b[m\u001b[K\r\n\u001b[38;5;159mtest\u001b(B\u001b[0;1m\u001b[96m/\u001b(B\u001b[m\u001b[K\r\n.editorconfig\u001b[K\r\n.git\u001b[K\r\n.gitignore\u001b[K\r\n.prettierignore\u001b[K\r\n.prettierrc.json\u001b[K\r\n.tsconfig.build.tsbuildinfo\u001b[K\r\n.tsconfig.tsbuildinfo\u001b[K\r\nREADME.md\u001b[K\r\neslint.config.mjs\u001b[K\r\nmise.toml\u001b[K\r\npackage-lock.json\u001b[K\r\n\u001b(B\u001b[0;1;7m[No Name] [RO] 8,1 Top\u001b]112\u0007\u001b[2 q\u001b]112\u0007\u001b[2 q\r\u001b[21A\u001b[?25h"}} -{"seq":2,"ts":"2026-03-19T18:23:55.408Z","type":"output","payload":{"data":"\u001b[?25l\u001b[?1004h\u001b[?25h"}} -{"seq":3,"ts":"2026-03-19T18:24:34.585Z","type":"input_keys","payload":{"keys":["Escape"]}} -{"seq":4,"ts":"2026-03-19T18:24:34.635Z","type":"output","payload":{"data":"\u001b[?25l\u001b[30;90H\u001b(B\u001b[m^[ \r\u001b[22A\u001b[?25h\u001b[?25l\u001b[30;90H \r\u001b[22A\u001b[?25h"}} -{"seq":5,"ts":"2026-03-19T18:24:35.206Z","type":"input_text","payload":{"data":":enew"}} -{"seq":6,"ts":"2026-03-19T18:24:35.207Z","type":"output","payload":{"data":"\u001b[?25l\u001b[22B\u001b[J:enew\u001b]112\u0007\u001b[2 q\u001b[?25h"}} -{"seq":7,"ts":"2026-03-19T18:24:35.840Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":8,"ts":"2026-03-19T18:24:35.840Z","type":"output","payload":{"data":"\u001b[?25l\r\u001b[30;1H\u001b[?25h"}} -{"seq":9,"ts":"2026-03-19T18:24:35.841Z","type":"output","payload":{"data":"\u001b[?25l\u001b[H\u001b[78X\n\u001b[94m~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\r\n~\u001b[K\u001b(B\u001b[0;1;7m\u001b[29;11H \u001b[68C0,0-1 All\u001b]112\u0007\u001b[2 q\u001b[H\u001b[?25h"}} -{"seq":10,"ts":"2026-03-19T18:24:37.175Z","type":"input_text","payload":{"data":":file dogfood"}} -{"seq":11,"ts":"2026-03-19T18:24:37.176Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\u001b[29B\u001b[5X:file\u001b[Cdogfood\u001b]112\u0007\u001b[2 q\u001b[?25h"}} -{"seq":12,"ts":"2026-03-19T18:24:37.751Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":13,"ts":"2026-03-19T18:24:37.751Z","type":"output","payload":{"data":"\u001b[?25l\r\u001b[30;1H\u001b[?25h"}} -{"seq":14,"ts":"2026-03-19T18:24:37.752Z","type":"output","payload":{"data":"\u001b[?25l\u001b[A\u001b(B\u001b[0;1;7mdogfood \u001b]112\u0007\u001b[2 q\u001b[H\u001b[?25h"}} -{"seq":15,"ts":"2026-03-19T18:24:55.669Z","type":"input_keys","payload":{"keys":["i"]}} -{"seq":16,"ts":"2026-03-19T18:24:55.670Z","type":"output","payload":{"data":"\u001b[?25l\u001b[30;90H\u001b(B\u001b[mi\u001b[H\u001b[?25h\u001b[?25l\u001b[30;90H \u001b]112\u0007\u001b[6 q\u001b[H\u001b[?25h\u001b[?25l\u001b[29B\u001b(B\u001b[0;1m-- INSERT --\u001b(B\u001b[m \b\u001b[?25h\u001b[?25l\u001b[29;85H\u001b(B\u001b[0;1;7m1 \u001b[H\u001b[?25h"}} -{"seq":17,"ts":"2026-03-19T18:24:56.319Z","type":"input_text","payload":{"data":"# Dogfood Demo"}} -{"seq":18,"ts":"2026-03-19T18:24:56.319Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m# Dogfood Demo\u001b[29;9H\u001b(B\u001b[0;1;7m[+]\u001b[71C1,15\u001b[1;15H\u001b[?25h"}} -{"seq":19,"ts":"2026-03-19T18:24:56.985Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":20,"ts":"2026-03-19T18:24:56.985Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\r\n\u001b[K\u001b[29;83H\u001b(B\u001b[0;1;7m2,1 \r\u001b[27A\u001b[?25h"}} -{"seq":21,"ts":"2026-03-19T18:24:57.575Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":22,"ts":"2026-03-19T18:24:57.575Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\n\u001b[K\u001b[29;83H\u001b(B\u001b[0;1;7m3\r\u001b[26A\u001b[?25h"}} -{"seq":23,"ts":"2026-03-19T18:24:58.228Z","type":"input_text","payload":{"data":"This file was created by agent-terminal driving neovim."}} -{"seq":24,"ts":"2026-03-19T18:24:58.229Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[mThis file was created by agent-terminal driving neovim.\u001b[29;85H\u001b(B\u001b[0;1;7m56\u001b[3;56H\u001b[?25h"}} -{"seq":25,"ts":"2026-03-19T18:24:58.852Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":26,"ts":"2026-03-19T18:24:58.853Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\r\n\u001b[K\u001b[29;83H\u001b(B\u001b[0;1;7m4,1 \r\u001b[25A\u001b[?25h"}} -{"seq":27,"ts":"2026-03-19T18:24:59.542Z","type":"input_text","payload":{"data":"All keystrokes were sent via the agent-terminal CLI."}} -{"seq":28,"ts":"2026-03-19T18:24:59.542Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[mAll keystrokes were sent via the agent-terminal CLI.\u001b[29;85H\u001b(B\u001b[0;1;7m53\u001b[4;53H\u001b[?25h"}} -{"seq":29,"ts":"2026-03-19T18:25:00.177Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":30,"ts":"2026-03-19T18:25:00.178Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\r\n\u001b[K\u001b[29;83H\u001b(B\u001b[0;1;7m5,1 \r\u001b[24A\u001b[?25h"}} -{"seq":31,"ts":"2026-03-19T18:25:00.797Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":32,"ts":"2026-03-19T18:25:00.798Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\n\u001b[K\u001b[29;83H\u001b(B\u001b[0;1;7m6\r\u001b[23A\u001b[?25h"}} -{"seq":33,"ts":"2026-03-19T18:25:01.417Z","type":"input_text","payload":{"data":"Session ID: 01KM3NDZK4TXG5C3SQJ811ZGVJ"}} -{"seq":34,"ts":"2026-03-19T18:25:01.418Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[mSession ID: 01KM3NDZK4TXG5C3SQJ811ZGVJ\u001b[29;85H\u001b(B\u001b[0;1;7m39\u001b[6;39H\u001b[?25h"}} -{"seq":35,"ts":"2026-03-19T18:25:15.048Z","type":"input_keys","payload":{"keys":["Escape"]}} -{"seq":36,"ts":"2026-03-19T18:25:15.099Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\r\u001b[24B\u001b[12X\u001b[29;86H\u001b(B\u001b[0;1;7m8\u001b]112\u0007\u001b[2 q\u001b[6;38H\u001b[?25h"}} -{"seq":37,"ts":"2026-03-19T18:25:16.377Z","type":"input_text","payload":{"data":":w"}} -{"seq":38,"ts":"2026-03-19T18:25:16.377Z","type":"output","payload":{"data":"\u001b[?25l\r\u001b[24B\u001b(B\u001b[m:w\u001b]112\u0007\u001b[2 q\u001b[?25h"}} -{"seq":39,"ts":"2026-03-19T18:25:16.987Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":40,"ts":"2026-03-19T18:25:16.987Z","type":"output","payload":{"data":"\u001b[?25l\r\u001b[30;1H\u001b[?25h"}} -{"seq":41,"ts":"2026-03-19T18:25:16.987Z","type":"output","payload":{"data":"\u001b[?25l\u001b[97m\u001b[41mE17: \"/home/coder/.mux/src/agent-terminal/planning-ws01/dogfood\" is a directory\u001b]112\u0007\u001b[2 q\u001b[6;38H\u001b[?25h"}} -{"seq":42,"ts":"2026-03-19T18:25:31.906Z","type":"input_text","payload":{"data":":file dogfood.md"}} -{"seq":43,"ts":"2026-03-19T18:25:31.906Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\r\u001b[24B\u001b[79X:file\u001b[Cdogfood.md\u001b]112\u0007\u001b[2 q\u001b[?25h"}} -{"seq":44,"ts":"2026-03-19T18:25:32.480Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":45,"ts":"2026-03-19T18:25:32.481Z","type":"output","payload":{"data":"\u001b[?25l\r\u001b[30;1H\u001b[?25h"}} -{"seq":46,"ts":"2026-03-19T18:25:32.481Z","type":"output","payload":{"data":"\u001b[?25l\u001b[29;8H\u001b(B\u001b[0;1;7m.md [+]\u001b]112\u0007\u001b[2 q\u001b[6;38H\u001b[?25h"}} -{"seq":47,"ts":"2026-03-19T18:25:33.779Z","type":"input_text","payload":{"data":":w"}} -{"seq":48,"ts":"2026-03-19T18:25:33.779Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\r\u001b[24B\u001b[16X:w\u001b]112\u0007\u001b[2 q\u001b[?25h"}} -{"seq":49,"ts":"2026-03-19T18:25:34.443Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":50,"ts":"2026-03-19T18:25:34.443Z","type":"output","payload":{"data":"\u001b[?25l\r\u001b[30;1H\u001b[?25h"}} -{"seq":51,"ts":"2026-03-19T18:25:34.443Z","type":"output","payload":{"data":"\u001b[?25l\"dogfood.md\"\u001b]112\u0007\u001b[2 q\u001b[?25h"}} -{"seq":52,"ts":"2026-03-19T18:25:34.444Z","type":"output","payload":{"data":"\u001b[?25l\u001b[C[New] 6L, 165B written\u001b(B\u001b[0;1;7m\u001b[29;12H \u001b[6;38H\u001b[?25h"}} -{"seq":53,"ts":"2026-03-19T18:25:48.912Z","type":"input_keys","payload":{"keys":["g"]}} -{"seq":54,"ts":"2026-03-19T18:25:48.912Z","type":"output","payload":{"data":"\u001b[?25l\u001b[30;90H\u001b(B\u001b[mg\u001b[6;38H\u001b[?25h"}} -{"seq":55,"ts":"2026-03-19T18:25:49.539Z","type":"input_keys","payload":{"keys":["g"]}} -{"seq":56,"ts":"2026-03-19T18:25:49.540Z","type":"output","payload":{"data":"\u001b[?25l\u001b[30;90H \u001b[6;38H\u001b[?25h\u001b[?25l\u001b[30;90Hgg\u001b[6;38H\u001b[?25h"}} -{"seq":57,"ts":"2026-03-19T18:25:49.540Z","type":"output","payload":{"data":"\u001b[?25l\u001b[30;90H \u001b[29;83H\u001b(B\u001b[0;1;7m1,14\u001b[1;14H\u001b[?25h"}} -{"seq":58,"ts":"2026-03-19T18:25:57.400Z","type":"input_text","payload":{"data":":q"}} -{"seq":59,"ts":"2026-03-19T18:25:57.400Z","type":"output","payload":{"data":"\u001b[?25l\u001b(B\u001b[m\r\u001b[29B\u001b[35X:q\u001b]112\u0007\u001b[2 q\u001b[?25h"}} -{"seq":60,"ts":"2026-03-19T18:25:58.055Z","type":"input_keys","payload":{"keys":["Enter"]}} -{"seq":61,"ts":"2026-03-19T18:25:58.055Z","type":"output","payload":{"data":"\u001b[?25l\r\u001b[30;1H\u001b[?25h"}} -{"seq":62,"ts":"2026-03-19T18:25:58.067Z","type":"output","payload":{"data":"\u001b[?25l\u001b]112\u0007\u001b[2 q\u001b[?25h"}} -{"seq":63,"ts":"2026-03-19T18:25:58.067Z","type":"output","payload":{"data":"\u001b[?25l\u001b]112\u0007\u001b[2 q\u001b(B\u001b[m\u001b[?25h\u001b[?1l\u001b>\u001b[?1049l\u001b[23;0;0t\u001b[23;0t\u001b[?2004l\u001b[?1004l\u001b[?25h"}} -{"seq":64,"ts":"2026-03-19T18:25:58.079Z","type":"exit","payload":{"exitCode":0,"exitSignal":null}} diff --git a/dogfood/20260319-nvim-demo/inspect-final.json b/dogfood/20260319-nvim-demo/inspect-final.json deleted file mode 100644 index 80a3205a..00000000 --- a/dogfood/20260319-nvim-demo/inspect-final.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-19T18:26:09.136Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KM3NDZK4TXG5C3SQJ811ZGVJ", - "createdAt": "2026-03-19T18:23:54.983Z", - "updatedAt": "2026-03-19T18:25:58.079Z", - "status": "exited", - "command": ["nvim", "."], - "cwd": "/home/coder/.mux/src/agent-terminal/planning-ws01", - "cols": 100, - "rows": 30, - "hostPid": 347474, - "childPid": 347584, - "exitCode": 0, - "exitSignal": null - } - } -} diff --git a/dogfood/20260319-nvim-demo/manifest.json b/dogfood/20260319-nvim-demo/manifest.json deleted file mode 100644 index 27cc7df8..00000000 --- a/dogfood/20260319-nvim-demo/manifest.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "scenario": "nvim-dogfood", - "date": "2026-03-19", - "sessionId": "01KM3NDZK4TXG5C3SQJ811ZGVJ", - "command": ["nvim", "."], - "dimensions": { "cols": 100, "rows": 30 }, - "cliCommandsUsed": ["create", "wait", "send-keys", "type", "inspect"], - "vimMotionsUsed": [ - ":enew", - ":file", - "i (insert mode)", - ":w (save)", - "gg (go to top)", - ":q (quit)", - "Escape" - ], - "result": "pass", - "exitCode": 0, - "eventCount": 65, - "fileCreated": "dogfood.md", - "knownGaps": [ - "renderer screenshots (text-only snapshots from event log)", - "asciicast export", - "gc command" - ] -} diff --git a/dogfood/20260319-nvim-demo/notes.md b/dogfood/20260319-nvim-demo/notes.md deleted file mode 100644 index a18e4673..00000000 --- a/dogfood/20260319-nvim-demo/notes.md +++ /dev/null @@ -1,87 +0,0 @@ -# Nvim Dogfood Demo — agent-terminal Week 1 - -- **Date:** 2026-03-19 -- **Scenario:** Driving `neovim` entirely through the `agent-terminal` CLI -- **Session ID:** `01KM3NDZK4TXG5C3SQJ811ZGVJ` -- **Command:** `nvim .` -- **Dimensions:** `100x30` -- **Created:** `2026-03-19T18:23:54.983Z` -- **Exited:** `2026-03-19T18:25:58.079Z` -- **Exit code:** `0` -- **Overall result:** pass - -## Scenario summary - -This proof bundle demonstrates that the Week 1 control plane can drive a complex, modal, full-screen terminal application rather than only narrow fixture programs. In this run, `agent-terminal` launched `neovim`, opened a new buffer, named it, entered insert mode, typed multi-line Markdown content, saved the file, navigated with a real Vim motion (`gg`), and exited cleanly. - -That combination matters because `nvim` exercises several properties at once: full-screen terminal rendering, modal input handling, command-line mode, text insertion, file saving, cursor movement, and orderly process exit. The run therefore acts as a stronger dogfood demo than a simple line-oriented prompt loop. - -## Session metadata - -| Field | Value | -| ----------- | ---------------------------- | -| Session ID | `01KM3NDZK4TXG5C3SQJ811ZGVJ` | -| Command | `nvim .` | -| Dimensions | `100 cols x 30 rows` | -| Created | `2026-03-19T18:23:54.983Z` | -| Exited | `2026-03-19T18:25:58.079Z` | -| Exit status | `exited` | -| Exit code | `0` | - -`inspect-final.json` is the final machine-readable confirmation that the session exited normally with code `0`. - -## Step-by-step walkthrough - -| Step | CLI action | What it did | Expected evidence | -| ---- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- | -| 1 | `create --cols 100 --rows 30 -- nvim .` | Started a new session and launched `nvim` against the current directory. | `01-nvim-launched.txt` should show the initial netrw directory listing inside Neovim. | -| 2 | `send-keys Escape` | Forced normal mode before issuing editor commands. | The session remains in Neovim and is ready for command-mode input. | -| 3 | `type ":enew"` + `send-keys Enter` | Created a fresh empty buffer. | `02-new-buffer.txt` should show an empty buffer named `dogfood`. | -| 4 | `type ":file dogfood"` + `send-keys Enter` | Assigned the new buffer an initial name. | The buffer name changes to `dogfood`, but this later proves ambiguous because a `dogfood/` directory already exists. | -| 5 | `send-keys i` | Entered INSERT mode. | Neovim is ready to accept literal text input. | -| 6 | `type "# Dogfood Demo"` + `send-keys Enter` | Wrote the Markdown heading. | The first line of the document is populated. | -| 7 | `type "This file was created by agent-terminal driving neovim."` + `send-keys Enter` | Added the first explanatory sentence. | The second line appears beneath the heading. | -| 8 | `type "All keystrokes were sent via the agent-terminal CLI."` + `send-keys Enter` | Added the second explanatory sentence. | The third line appears in the buffer. | -| 9 | `type "Session ID: 01KM3NDZK4TXG5C3SQJ811ZGVJ"` | Added the run-specific session identifier to the file contents. | The fourth content line includes the exact session ID used for the demo. | -| 10 | `send-keys Escape` | Returned to normal mode. | Insert mode ends so Ex commands can be issued again. | -| 11 | `type ":file dogfood.md"` + `send-keys Enter` | Renamed the buffer to `dogfood.md`. | This is the real-world correction after discovering that `dogfood` conflicts with an existing directory name. | -| 12 | `type ":w"` + `send-keys Enter` | Saved the file to disk. | `04-file-saved.txt` should show the successful write message: `"dogfood.md" [New] 6L, 165B written`. | -| 13 | `send-keys g` + `send-keys g` | Executed the Vim motion `gg` to jump to the top of the file. | `05-gg-top.txt` should show the cursor positioned back at line 1. | -| 14 | `type ":q"` + `send-keys Enter` | Quit Neovim. | `06-nvim-quit.txt` should show the post-exit terminal state. | -| 15 | `wait --exit` | Waited for process termination. | The session exits cleanly without timing out. | -| 16 | `inspect` | Collected final session state. | `inspect-final.json` should report `status: "exited"` and `exitCode: 0`. | - -## Screenshot review guide - -The screenshot artifacts for this bundle are text snapshots captured from the event log rather than renderer-produced terminal frames. - -| File | What the reviewer should observe | -| ---------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `screenshots/01-nvim-launched.txt` | Neovim has launched successfully and is showing the netrw directory browser for the current working directory. | -| `screenshots/02-new-buffer.txt` | An empty buffer is open after `:enew`, with the provisional name `dogfood`. | -| `screenshots/03-content-typed.txt` | The Markdown content has been typed into the buffer while in INSERT mode. | -| `screenshots/04-file-saved.txt` | The status area confirms the save succeeded as `dogfood.md` with `6L, 165B written`. | -| `screenshots/05-gg-top.txt` | The `gg` motion has moved the cursor to the top of the file. | -| `screenshots/06-nvim-quit.txt` | Neovim has exited, demonstrating clean control handoff back to the terminal session. | - -## Event log observations - -- `event-log.jsonl` contains **65 events** for this run. -- The log spans the important interaction categories for an editor demo: terminal `output`, typed text via `input_text`, individual keypresses via `input_keys`, and the final `exit` record. -- That coverage is important because it shows the control plane is not faking a one-shot file write; it is actually driving the interactive program through the same primitives exposed by the CLI. -- The final session result is corroborated by `inspect-final.json`, which records an exited session with exit code `0`. - -## Real-world debugging note: `dogfood` -> `dogfood.md` - -One useful detail from this run is that the first filename choice (`dogfood`) had to be corrected to `dogfood.md` because the repository already contains a `dogfood/` directory. That small rename is worth preserving in the notes because it shows the demo was interactive and realistic: the operator hit an ordinary naming conflict, adjusted the buffer name, and continued successfully. - -## Known gaps - -- The screenshot artifacts are **text snapshots derived from the event log**, not rendered terminal frames. -- A renderer-backed screenshot path is not implemented yet, so this bundle does not include pixel-faithful terminal captures. -- No asciicast export is included yet. -- The `gc` command is still out of scope for this bundle. - -## Conclusion - -This demo proves that the Week 1 `agent-terminal` control plane can drive a sophisticated interactive terminal program like Neovim end to end: launch it, switch modes, enter text, issue editor commands, save a file, navigate with Vim motions, and exit cleanly. Even without a renderer-backed screenshot pipeline, the combination of the session metadata, event log, final inspection output, and text-based screenshots is strong evidence that the control plane works on real terminal software rather than only on purpose-built fixtures. diff --git a/dogfood/20260319-nvim-demo/screenshots/01-nvim-launched.txt b/dogfood/20260319-nvim-demo/screenshots/01-nvim-launched.txt deleted file mode 100644 index f990a56b..00000000 --- a/dogfood/20260319-nvim-demo/screenshots/01-nvim-launched.txt +++ /dev/null @@ -1,30 +0,0 @@ -=== Step 1: nvim launched with netrw directory listing === -" ============================================================================ -" Netrw Directory Listing (netrw v171) -" /home/coder/.mux/src/agent-terminal/planning-ws01 -" Sorted by name -" Sort sequence: [\/]$,\,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$ -" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:special -" ============================================================================== -../ -./ -.github/ -.mux/ -design/ -dist/ -dogfood/ -node_modules/ -src/ -test/ -.editorconfig -.git -.gitignore -.prettierignore -.prettierrc.json -.tsconfig.build.tsbuildinfo -.tsconfig.tsbuildinfo -README.md -eslint.config.mjs -mise.toml -package-lock.json -[No Name] [RO] 8,1 Top diff --git a/dogfood/20260319-nvim-demo/screenshots/02-new-buffer.txt b/dogfood/20260319-nvim-demo/screenshots/02-new-buffer.txt deleted file mode 100644 index f9aaa4b8..00000000 --- a/dogfood/20260319-nvim-demo/screenshots/02-new-buffer.txt +++ /dev/null @@ -1,57 +0,0 @@ -=== Step 2: New empty buffer named 'dogfood' === -" ============================================================================ -" Netrw Directory Listing (netrw v171) -" /home/coder/.mux/src/agent-terminal/planning-ws01 -" Sorted by name -" Sort sequence: [\/]$,\,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$ -" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:special -" ============================================================================== -../ -./ -.github/ -.mux/ -design/ -dist/ -dogfood/ -node_modules/ -src/ -test/ -.editorconfig -.git -.gitignore -.prettierignore -.prettierrc.json -.tsconfig.build.tsbuildinfo -.tsconfig.tsbuildinfo -README.md -eslint.config.mjs -mise.toml -package-lock.json -[No Name] [RO] 8,1 Top ^[ :enew -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ 0,0-1 All:filedogfood dogfood diff --git a/dogfood/20260319-nvim-demo/screenshots/03-content-typed.txt b/dogfood/20260319-nvim-demo/screenshots/03-content-typed.txt deleted file mode 100644 index e464ff88..00000000 --- a/dogfood/20260319-nvim-demo/screenshots/03-content-typed.txt +++ /dev/null @@ -1,62 +0,0 @@ -=== Step 3: Content typed in insert mode === -" ============================================================================ -" Netrw Directory Listing (netrw v171) -" /home/coder/.mux/src/agent-terminal/planning-ws01 -" Sorted by name -" Sort sequence: [\/]$,\,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$ -" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:special -" ============================================================================== -../ -./ -.github/ -.mux/ -design/ -dist/ -dogfood/ -node_modules/ -src/ -test/ -.editorconfig -.git -.gitignore -.prettierignore -.prettierrc.json -.tsconfig.build.tsbuildinfo -.tsconfig.tsbuildinfo -README.md -eslint.config.mjs -mise.toml -package-lock.json -[No Name] [RO] 8,1 Top ^[ :enew -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ 0,0-1 All:filedogfood dogfood i -- INSERT -- 1 # Dogfood Demo[+]1,15 -2,1 -3 This file was created by agent-terminal driving neovim.56 -4,1 All keystrokes were sent via the agent-terminal CLI.53 -5,1 -6 Session ID: 01KM3NDZK4TXG5C3SQJ811ZGVJ39 diff --git a/dogfood/20260319-nvim-demo/screenshots/04-file-saved.txt b/dogfood/20260319-nvim-demo/screenshots/04-file-saved.txt deleted file mode 100644 index f52ad045..00000000 --- a/dogfood/20260319-nvim-demo/screenshots/04-file-saved.txt +++ /dev/null @@ -1,62 +0,0 @@ -=== Step 4: File saved as dogfood.md with :w === -" ============================================================================ -" Netrw Directory Listing (netrw v171) -" /home/coder/.mux/src/agent-terminal/planning-ws01 -" Sorted by name -" Sort sequence: [\/]$,\,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$ -" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:special -" ============================================================================== -../ -./ -.github/ -.mux/ -design/ -dist/ -dogfood/ -node_modules/ -src/ -test/ -.editorconfig -.git -.gitignore -.prettierignore -.prettierrc.json -.tsconfig.build.tsbuildinfo -.tsconfig.tsbuildinfo -README.md -eslint.config.mjs -mise.toml -package-lock.json -[No Name] [RO] 8,1 Top ^[ :enew -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ 0,0-1 All:filedogfood dogfood i -- INSERT -- 1 # Dogfood Demo[+]1,15 -2,1 -3 This file was created by agent-terminal driving neovim.56 -4,1 All keystrokes were sent via the agent-terminal CLI.53 -5,1 -6 Session ID: 01KM3NDZK4TXG5C3SQJ811ZGVJ39 8 :w E17: "/home/coder/.mux/src/agent-terminal/planning-ws01/dogfood" is a directory :filedogfood.md .md [+] :w "dogfood.md"[New] 6L, 165B written diff --git a/dogfood/20260319-nvim-demo/screenshots/05-gg-top.txt b/dogfood/20260319-nvim-demo/screenshots/05-gg-top.txt deleted file mode 100644 index b18e4aad..00000000 --- a/dogfood/20260319-nvim-demo/screenshots/05-gg-top.txt +++ /dev/null @@ -1,62 +0,0 @@ -=== Step 5: Cursor at top of file (gg motion) === -" ============================================================================ -" Netrw Directory Listing (netrw v171) -" /home/coder/.mux/src/agent-terminal/planning-ws01 -" Sorted by name -" Sort sequence: [\/]$,\,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$ -" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:special -" ============================================================================== -../ -./ -.github/ -.mux/ -design/ -dist/ -dogfood/ -node_modules/ -src/ -test/ -.editorconfig -.git -.gitignore -.prettierignore -.prettierrc.json -.tsconfig.build.tsbuildinfo -.tsconfig.tsbuildinfo -README.md -eslint.config.mjs -mise.toml -package-lock.json -[No Name] [RO] 8,1 Top ^[ :enew -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ 0,0-1 All:filedogfood dogfood i -- INSERT -- 1 # Dogfood Demo[+]1,15 -2,1 -3 This file was created by agent-terminal driving neovim.56 -4,1 All keystrokes were sent via the agent-terminal CLI.53 -5,1 -6 Session ID: 01KM3NDZK4TXG5C3SQJ811ZGVJ39 8 :w E17: "/home/coder/.mux/src/agent-terminal/planning-ws01/dogfood" is a directory :filedogfood.md .md [+] :w "dogfood.md"[New] 6L, 165B written g gg 1,14 diff --git a/dogfood/20260319-nvim-demo/screenshots/06-nvim-quit.txt b/dogfood/20260319-nvim-demo/screenshots/06-nvim-quit.txt deleted file mode 100644 index a4348798..00000000 --- a/dogfood/20260319-nvim-demo/screenshots/06-nvim-quit.txt +++ /dev/null @@ -1,62 +0,0 @@ -=== Step 6: nvim exited cleanly (exit code 0) === -" ============================================================================ -" Netrw Directory Listing (netrw v171) -" /home/coder/.mux/src/agent-terminal/planning-ws01 -" Sorted by name -" Sort sequence: [\/]$,\,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$ -" Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:special -" ============================================================================== -../ -./ -.github/ -.mux/ -design/ -dist/ -dogfood/ -node_modules/ -src/ -test/ -.editorconfig -.git -.gitignore -.prettierignore -.prettierrc.json -.tsconfig.build.tsbuildinfo -.tsconfig.tsbuildinfo -README.md -eslint.config.mjs -mise.toml -package-lock.json -[No Name] [RO] 8,1 Top ^[ :enew -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ -~ 0,0-1 All:filedogfood dogfood i -- INSERT -- 1 # Dogfood Demo[+]1,15 -2,1 -3 This file was created by agent-terminal driving neovim.56 -4,1 All keystrokes were sent via the agent-terminal CLI.53 -5,1 -6 Session ID: 01KM3NDZK4TXG5C3SQJ811ZGVJ39 8 :w E17: "/home/coder/.mux/src/agent-terminal/planning-ws01/dogfood" is a directory :filedogfood.md .md [+] :w "dogfood.md"[New] 6L, 165B written g gg 1,14 :q diff --git a/dogfood/20260319-resize-demo/01-create.json b/dogfood/20260319-resize-demo/01-create.json deleted file mode 100644 index d90eb103..00000000 --- a/dogfood/20260319-resize-demo/01-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-19T18:02:30.052Z", - "result": { - "sessionId": "01KM3M6RF40VCPP4WR580KDBE0" - } -} diff --git a/dogfood/20260319-resize-demo/02-wait-idle.json b/dogfood/20260319-resize-demo/02-wait-idle.json deleted file mode 100644 index 1356069e..00000000 --- a/dogfood/20260319-resize-demo/02-wait-idle.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-19T18:02:30.640Z", - "result": { - "timedOut": false - } -} diff --git a/dogfood/20260319-resize-demo/03-resize.json b/dogfood/20260319-resize-demo/03-resize.json deleted file mode 100644 index 22cf70ca..00000000 --- a/dogfood/20260319-resize-demo/03-resize.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "resize", - "timestamp": "2026-03-19T18:02:30.975Z", - "result": { - "cols": 120, - "rows": 40 - } -} diff --git a/dogfood/20260319-resize-demo/04-wait-idle-2.json b/dogfood/20260319-resize-demo/04-wait-idle-2.json deleted file mode 100644 index da9474b1..00000000 --- a/dogfood/20260319-resize-demo/04-wait-idle-2.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-19T18:02:31.572Z", - "result": { - "timedOut": false - } -} diff --git a/dogfood/20260319-resize-demo/05-inspect.json b/dogfood/20260319-resize-demo/05-inspect.json deleted file mode 100644 index c0823667..00000000 --- a/dogfood/20260319-resize-demo/05-inspect.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-19T18:02:31.966Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KM3M6RF40VCPP4WR580KDBE0", - "createdAt": "2026-03-19T18:02:29.736Z", - "updatedAt": "2026-03-19T18:02:30.973Z", - "status": "running", - "command": [ - "node", - "--import", - "tsx", - "../../test/fixtures/apps/resize-demo/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_d1aeb26ed6/dogfood/20260319-resize-demo", - "cols": 120, - "rows": 40, - "hostPid": 280102, - "childPid": 280114, - "exitCode": null, - "exitSignal": null - } - } -} diff --git a/dogfood/20260319-resize-demo/06-destroy.json b/dogfood/20260319-resize-demo/06-destroy.json deleted file mode 100644 index b926bc15..00000000 --- a/dogfood/20260319-resize-demo/06-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-19T18:02:37.224Z", - "result": { - "sessionId": "01KM3M6RF40VCPP4WR580KDBE0", - "destroyed": true - } -} diff --git a/dogfood/20260319-resize-demo/event-log.jsonl b/dogfood/20260319-resize-demo/event-log.jsonl deleted file mode 100644 index 5fb8274e..00000000 --- a/dogfood/20260319-resize-demo/event-log.jsonl +++ /dev/null @@ -1,3 +0,0 @@ -{"seq":0,"ts":"2026-03-19T18:02:30.129Z","type":"output","payload":{"data":"SIZE: 80x24\r\n"}} -{"seq":1,"ts":"2026-03-19T18:02:30.973Z","type":"output","payload":{"data":"SIZE: 120x40\r\n"}} -{"seq":2,"ts":"2026-03-19T18:02:30.974Z","type":"resize","payload":{"cols":120,"rows":40}} diff --git a/dogfood/20260319-resize-demo/manifest.json b/dogfood/20260319-resize-demo/manifest.json deleted file mode 100644 index d1a17cdc..00000000 --- a/dogfood/20260319-resize-demo/manifest.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "scenario": "resize-demo", - "date": "2026-03-19", - "sessionId": "01KM3M6RF40VCPP4WR580KDBE0", - "commands": ["create", "wait", "resize", "inspect", "destroy"], - "fixture": "resize-demo", - "result": "pass", - "knownGaps": ["renderer screenshots", "asciicast export", "gc command"] -} diff --git a/dogfood/20260319-resize-demo/notes.md b/dogfood/20260319-resize-demo/notes.md deleted file mode 100644 index 31702c3a..00000000 --- a/dogfood/20260319-resize-demo/notes.md +++ /dev/null @@ -1,44 +0,0 @@ -# Resize demo proof bundle - -- **Date:** 2026-03-19 -- **Scenario:** Resize behavior against the `resize-demo` fixture -- **Fixture command:** `node --import tsx ../../test/fixtures/apps/resize-demo/main.ts` -- **Session ID:** `01KM3M6RF40VCPP4WR580KDBE0` -- **Isolation:** run under a fresh `AGENT_TERMINAL_HOME=$(mktemp -d)` so only this scenario's state was present -- **Overall result:** pass; every JSON envelope in this directory has `ok: true` - -## What was run - -This scenario focuses on PTY size propagation. The fixture prints its current size on startup and again after resize, which makes it a compact proof that the control plane can create, wait, resize, observe the new size, inspect metadata, and destroy the session. - -For the `create` step, the working invocation was `create --json --cols 80 --rows 24 -- node --import tsx ...` so the size flags were consumed by the control plane and the remainder was passed to the child process. - -## Step-by-step review guide - -| Step | File | What the command did | What the reviewer should observe | -| ---- | --------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| 1 | `01-create.json` | Created a session with explicit initial dimensions `80x24`. | `ok: true`, `command: "create"`, and `result.sessionId == "01KM3M6RF40VCPP4WR580KDBE0"`. | -| 2 | `02-wait-idle.json` | Waited for the fixture's initial size print to complete. | `timedOut: false`. The corresponding event-log output at seq 0 is `SIZE: 80x24`. | -| 3 | `03-resize.json` | Resized the PTY to `120x40`. | `result.cols == 120` and `result.rows == 40`. | -| 4 | `04-wait-idle-2.json` | Waited for the fixture to emit its post-resize size message. | `timedOut: false`. The event log records the new output `SIZE: 120x40`. | -| 5 | `05-inspect.json` | Inspected the still-running session after the resize. | `status: "running"`, `cols: 120`, `rows: 40`, and the command array points at the resize-demo fixture. | -| 6 | `06-destroy.json` | Force-destroyed the session after collecting evidence. | `destroyed: true` with the matching `sessionId`. | - -## Event log observations - -- `event-log.jsonl` has 3 entries with monotonic sequence numbers `0` through `2`. -- Seq 0 shows the initial size report `SIZE: 80x24`. -- Seq 1 shows the updated size report `SIZE: 120x40` after the resize command. -- Seq 2 records the explicit `resize` event with `cols: 120` and `rows: 40`. -- Notably, the fixture's output for the new size lands just before the explicit resize event entry in this run, so reviewers should treat both lines together as the resize proof rather than assuming a stricter output-before/after ordering contract. - -## Known gaps - -- No renderer screenshots are included because the renderer path is not implemented yet. -- No asciicast export is available yet, so the proof is JSON/event-log based rather than video based. -- The `gc` command is not implemented yet, so garbage-collection behavior is out of scope for this bundle. - -## Additional notes - -- No command failed during this run, so there are no expected `ok: false` envelopes to explain. -- This fixture is intentionally narrow: it exists to prove resize propagation rather than interactive input handling. diff --git a/dogfood/20260320-renderer-complete/artifacts/screenshot-4-reference-dark.png b/dogfood/20260320-renderer-complete/artifacts/screenshot-4-reference-dark.png deleted file mode 100644 index fa262ff0..00000000 Binary files a/dogfood/20260320-renderer-complete/artifacts/screenshot-4-reference-dark.png and /dev/null differ diff --git a/dogfood/20260320-renderer-complete/artifacts/screenshot-4-reference-light.png b/dogfood/20260320-renderer-complete/artifacts/screenshot-4-reference-light.png deleted file mode 100644 index c6feccb6..00000000 Binary files a/dogfood/20260320-renderer-complete/artifacts/screenshot-4-reference-light.png and /dev/null differ diff --git a/dogfood/20260320-renderer-complete/commands.sh b/dogfood/20260320-renderer-complete/commands.sh deleted file mode 100644 index 28874f63..00000000 --- a/dogfood/20260320-renderer-complete/commands.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash -# Reference only: exact command sequence used to produce this bundle. -# This is intentionally documentation, not an executable harness. - -set -euo pipefail - -export AGENT_TERMINAL_HOME="$(mktemp -d)" -CLI=(node --import tsx ./src/cli/main.ts) -BUNDLE="dogfood/20260320-renderer-complete" -SCENARIO_SCRIPT='printf "Loading\n"; sleep 1; printf "3 items\n"; sleep 1; printf "Ready\n"; exec cat' - -CREATE_OUTPUT="$(${CLI[@]} create --json -- /bin/sh -c "$SCENARIO_SCRIPT")" -printf '%s\n' "$CREATE_OUTPUT" > "$BUNDLE/create-output.json" - -SESSION_ID="$({ printf '%s' "$CREATE_OUTPUT" | node -e 'let data=""; process.stdin.on("data", (chunk) => { data += chunk; }); process.stdin.on("end", () => { process.stdout.write(JSON.parse(data).result.sessionId); });'; })" - -${CLI[@]} wait "$SESSION_ID" --text Ready --timeout 15000 --json > "$BUNDLE/wait-text.json" -${CLI[@]} type "$SESSION_ID" "typed from dogfood" --json > "$BUNDLE/type-output.json" -${CLI[@]} wait "$SESSION_ID" --regex 'typed.+dogfood' --timeout 15000 --json > "$BUNDLE/wait-regex.json" -${CLI[@]} snapshot "$SESSION_ID" --format structured --json > "$BUNDLE/snapshot-structured.json" -${CLI[@]} snapshot "$SESSION_ID" --format text --json > "$BUNDLE/snapshot-text.json" -${CLI[@]} screenshot "$SESSION_ID" --json > "$BUNDLE/screenshot-dark.json" -${CLI[@]} screenshot "$SESSION_ID" --profile reference-light --json > "$BUNDLE/screenshot-light.json" -${CLI[@]} doctor --json > "$BUNDLE/doctor.json" - -# Read the generated artifact manifest from: -# "$AGENT_TERMINAL_HOME/sessions/$SESSION_ID/artifacts/manifest.json" -# and save the tracked-artifact excerpt as: -# "$BUNDLE/manifest-excerpt.json" - -${CLI[@]} destroy "$SESSION_ID" --force --json > "$BUNDLE/destroy-output.json" diff --git a/dogfood/20260320-renderer-complete/create-output.json b/dogfood/20260320-renderer-complete/create-output.json deleted file mode 100644 index df69ee67..00000000 --- a/dogfood/20260320-renderer-complete/create-output.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-20T17:08:20.128Z", - "result": { - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG" - } -} diff --git a/dogfood/20260320-renderer-complete/destroy-output.json b/dogfood/20260320-renderer-complete/destroy-output.json deleted file mode 100644 index 39e4b565..00000000 --- a/dogfood/20260320-renderer-complete/destroy-output.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-20T17:08:31.324Z", - "result": { - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "destroyed": true - } -} diff --git a/dogfood/20260320-renderer-complete/doctor.json b/dogfood/20260320-renderer-complete/doctor.json deleted file mode 100644 index adf509a2..00000000 --- a/dogfood/20260320-renderer-complete/doctor.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "ok": true, - "command": "doctor", - "timestamp": "2026-03-20T17:08:25.977Z", - "result": { - "ok": true, - "checks": { - "environment": [ - { - "name": "node-runtime", - "status": "pass", - "message": "Node 24.14.0 ok", - "durationMs": 0 - }, - { - "name": "cwd-access", - "status": "pass", - "message": "cwd read/write: /home/coder/.mux/src/agent-terminal/agent_exec_e6d1af2e37", - "durationMs": 1 - }, - { - "name": "temp-dir", - "status": "pass", - "message": "temp dir ok: /tmp", - "durationMs": 1 - } - ], - "renderer": [ - { - "name": "playwright_available", - "status": "pass", - "message": "available", - "durationMs": 296 - }, - { - "name": "browser_launch", - "status": "pass", - "message": "chromium launches", - "durationMs": 246 - }, - { - "name": "ghostty_web_available", - "status": "pass", - "message": "WASM available", - "durationMs": 114 - }, - { - "name": "screenshot_viable", - "status": "pass", - "message": "viable", - "durationMs": 324 - } - ] - } - } -} diff --git a/dogfood/20260320-renderer-complete/index.md b/dogfood/20260320-renderer-complete/index.md deleted file mode 100644 index 24feaae1..00000000 --- a/dogfood/20260320-renderer-complete/index.md +++ /dev/null @@ -1,36 +0,0 @@ -# Renderer completion proof bundle index - -This bundle captures the final Week 2 renderer smoke story for 2026-03-20. - -## Primary evidence - -| File | What it proves | -| -------------------------- | ------------------------------------------------------------------------------------------------------------------ | -| `notes.md` | Narrative summary of the scenario, renderer checks, and what to review. | -| `commands.sh` | Exact command sequence used to reproduce the create → wait → type → snapshot → screenshot → doctor → destroy flow. | -| `create-output.json` | Session creation succeeded and returned session ID `01KM63G9DJ4DZD5RCXFJG547XG`. | -| `wait-text.json` | Renderer-backed `wait --text` matched `Ready`. | -| `type-output.json` | Text input was accepted by the live session. | -| `wait-regex.json` | Renderer-backed `wait --regex` matched the echoed typed text. | -| `snapshot-structured.json` | Structured renderer snapshot includes viewport metadata and visible lines. | -| `snapshot-text.json` | Text renderer snapshot includes the visible transcript in lightweight form. | -| `screenshot-dark.json` | Screenshot capture succeeded with `reference-dark`. | -| `screenshot-light.json` | Screenshot capture succeeded with `reference-light`. | -| `manifest-excerpt.json` | Artifact manifest recorded both snapshot outputs and both screenshot outputs. | -| `doctor.json` | Doctor passed renderer checks for Playwright, browser launch, ghostty-web, and screenshot viability. | -| `destroy-output.json` | Session cleanup/destroy completed after artifact capture. | - -## Supplemental artifacts - -| File | What it shows | -| -------------------------------------------- | -------------------------------------------------------------------- | -| `artifacts/screenshot-4-reference-dark.png` | Copied dark-profile screenshot PNG from the temporary session home. | -| `artifacts/screenshot-4-reference-light.png` | Copied light-profile screenshot PNG from the temporary session home. | - -## Reviewer checklist - -1. Open `notes.md` for the scenario summary. -2. Confirm `wait-text.json` and `wait-regex.json` both report `matched: true`. -3. Compare `snapshot-text.json` against the copied PNGs in `artifacts/`. -4. Confirm `manifest-excerpt.json` lists two snapshots and two screenshots. -5. Confirm `doctor.json` reports all renderer checks as passing. diff --git a/dogfood/20260320-renderer-complete/manifest-excerpt.json b/dogfood/20260320-renderer-complete/manifest-excerpt.json deleted file mode 100644 index 738828bf..00000000 --- a/dogfood/20260320-renderer-complete/manifest-excerpt.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "version": 1, - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "artifacts": [ - { - "id": "01KM63GD7FE4XZE4W4W45AJSSY", - "kind": "snapshot", - "filename": "snapshot-4-structured.json", - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "capturedAtSeq": 4, - "createdAt": "2026-03-20T17:08:23.408Z", - "metadata": { - "format": "structured", - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 18 - } - }, - { - "id": "01KM63GDFY9CCE1GGTV974QVE9", - "kind": "snapshot", - "filename": "snapshot-4-text.json", - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "capturedAtSeq": 4, - "createdAt": "2026-03-20T17:08:23.678Z", - "metadata": { - "format": "text", - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 18 - } - }, - { - "id": "01KM63GDW2A3ZV0461EKXAVA82", - "kind": "screenshot", - "filename": "screenshot-4-reference-dark.png", - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "capturedAtSeq": 4, - "createdAt": "2026-03-20T17:08:24.066Z", - "metadata": { - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "pngSizeBytes": 5693 - } - }, - { - "id": "01KM63GEGXPG3QDS07MMJN1S2W", - "kind": "screenshot", - "filename": "screenshot-4-reference-light.png", - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "capturedAtSeq": 4, - "createdAt": "2026-03-20T17:08:24.733Z", - "metadata": { - "profileName": "reference-light", - "cols": 80, - "rows": 24, - "pngSizeBytes": 5689 - } - } - ] -} diff --git a/dogfood/20260320-renderer-complete/notes.md b/dogfood/20260320-renderer-complete/notes.md deleted file mode 100644 index 38f84df1..00000000 --- a/dogfood/20260320-renderer-complete/notes.md +++ /dev/null @@ -1,68 +0,0 @@ -# Renderer completion dogfood notes - -- **Date:** 2026-03-20 -- **Bundle:** `dogfood/20260320-renderer-complete/` -- **Session ID:** `01KM63G9DJ4DZD5RCXFJG547XG` -- **Scenario command:** `/bin/sh -c "printf \"Loading\\n\"; sleep 1; printf \"3 items\\n\"; sleep 1; printf \"Ready\\n\"; exec cat"` -- **Isolation:** all commands ran under a fresh `AGENT_TERMINAL_HOME=$(mktemp -d)` and the bundle captures the resulting JSON envelopes plus copied screenshot artifacts. -- **Environment note:** this was collected in a headless environment, so the proof relies on CLI JSON outputs, renderer-generated PNGs, and passing automated checks rather than interactive screen recording. - -## What was exercised - -This run covered the expected renderer-backed Week 2 inspection flow end to end: - -1. **Create** a session that visibly transitions through `Loading`, `3 items`, and `Ready` before handing control to `cat`. -2. **Wait --text** for `Ready` to appear in renderer-visible output. -3. **Type** `typed from dogfood` into the live session. -4. **Wait --regex** for the echoed typed text to appear using the renderer path. -5. **Snapshot** the session in both structured and text formats. -6. **Screenshot** the session with both built-in renderer profiles (`reference-dark` and `reference-light`). -7. **Inspect artifact tracking** by reading the generated artifact manifest. -8. **Doctor** the environment and renderer stack. -9. **Destroy** the session cleanly after collecting artifacts. - -## What was verified - -### Session lifecycle - -- `create-output.json` shows session creation succeeded and returned session ID `01KM63G9DJ4DZD5RCXFJG547XG`. -- `type-output.json` shows the typed-text control path acknowledged successfully. -- `destroy-output.json` shows the session was destroyed after evidence collection. - -### Renderer-backed waits - -- `wait-text.json` shows `wait --text Ready` matched successfully at `capturedAtSeq: 2`. -- `wait-regex.json` shows `wait --regex 'typed.+dogfood'` matched successfully at `capturedAtSeq: 4`. - -### Snapshot coverage - -- `snapshot-structured.json` contains renderer-structured viewport data, cursor position, and visible lines. -- `snapshot-text.json` flattens the same viewport into text and includes the expected visible transcript: - - `Loading` - - `3 items` - - `Ready` - - `typed from dogfood` - -### Screenshot coverage - -- `screenshot-dark.json` proves screenshot capture succeeded with the default `reference-dark` profile. -- `screenshot-light.json` proves screenshot capture succeeded with the `reference-light` profile. -- The actual PNG outputs were copied into `artifacts/screenshot-4-reference-dark.png` and `artifacts/screenshot-4-reference-light.png` so the bundle remains reviewable even though the original session home was temporary. - -### Artifact tracking - -- `manifest-excerpt.json` shows four tracked artifacts for the session: - - structured snapshot JSON - - text snapshot JSON - - dark-profile screenshot PNG - - light-profile screenshot PNG -- The tracked filenames line up with the copied bundle artifacts and with the JSON command envelopes. - -### Doctor coverage - -- `doctor.json` reports `ok: true`. -- All renderer checks passed: `playwright_available`, `browser_launch`, `ghostty_web_available`, and `screenshot_viable`. - -## Review guidance - -A reviewer can validate the Week 2 renderer slice offline by opening the JSON files in this directory, confirming the manifest artifact list, and comparing the copied PNGs in `artifacts/` against the visible text reported by the snapshot outputs. diff --git a/dogfood/20260320-renderer-complete/screenshot-dark.json b/dogfood/20260320-renderer-complete/screenshot-dark.json deleted file mode 100644 index 97d5f4d0..00000000 --- a/dogfood/20260320-renderer-complete/screenshot-dark.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-20T17:08:24.070Z", - "result": { - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "capturedAtSeq": 4, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.7gryzxE6RZ/sessions/01KM63G9DJ4DZD5RCXFJG547XG/artifacts/screenshot-4-reference-dark.png", - "pngSizeBytes": 5693 - } -} diff --git a/dogfood/20260320-renderer-complete/screenshot-light.json b/dogfood/20260320-renderer-complete/screenshot-light.json deleted file mode 100644 index 1e6a3236..00000000 --- a/dogfood/20260320-renderer-complete/screenshot-light.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-20T17:08:24.736Z", - "result": { - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "capturedAtSeq": 4, - "profileName": "reference-light", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.7gryzxE6RZ/sessions/01KM63G9DJ4DZD5RCXFJG547XG/artifacts/screenshot-4-reference-light.png", - "pngSizeBytes": 5689 - } -} diff --git a/dogfood/20260320-renderer-complete/snapshot-structured.json b/dogfood/20260320-renderer-complete/snapshot-structured.json deleted file mode 100644 index 446592a9..00000000 --- a/dogfood/20260320-renderer-complete/snapshot-structured.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-20T17:08:23.412Z", - "result": { - "format": "structured", - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 18, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "Loading" - }, - { - "row": 1, - "text": "3 items" - }, - { - "row": 2, - "text": "Ready" - }, - { - "row": 3, - "text": "typed from dogfood" - }, - { - "row": 4, - "text": "" - }, - { - "row": 5, - "text": "" - }, - { - "row": 6, - "text": "" - }, - { - "row": 7, - "text": "" - }, - { - "row": 8, - "text": "" - }, - { - "row": 9, - "text": "" - }, - { - "row": 10, - "text": "" - }, - { - "row": 11, - "text": "" - }, - { - "row": 12, - "text": "" - }, - { - "row": 13, - "text": "" - }, - { - "row": 14, - "text": "" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ] - } -} diff --git a/dogfood/20260320-renderer-complete/snapshot-text.json b/dogfood/20260320-renderer-complete/snapshot-text.json deleted file mode 100644 index 16627bc6..00000000 --- a/dogfood/20260320-renderer-complete/snapshot-text.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-20T17:08:23.681Z", - "result": { - "format": "text", - "sessionId": "01KM63G9DJ4DZD5RCXFJG547XG", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 18, - "text": "Loading\n3 items\nReady\ntyped from dogfood\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - } -} diff --git a/dogfood/20260320-renderer-complete/type-output.json b/dogfood/20260320-renderer-complete/type-output.json deleted file mode 100644 index c27f0ce0..00000000 --- a/dogfood/20260320-renderer-complete/type-output.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-20T17:08:22.577Z", - "result": {} -} diff --git a/dogfood/20260320-renderer-complete/wait-regex.json b/dogfood/20260320-renderer-complete/wait-regex.json deleted file mode 100644 index 2b8eb080..00000000 --- a/dogfood/20260320-renderer-complete/wait-regex.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-20T17:08:23.079Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "typed from dogfood", - "capturedAtSeq": 4 - } -} diff --git a/dogfood/20260320-renderer-complete/wait-text.json b/dogfood/20260320-renderer-complete/wait-text.json deleted file mode 100644 index 957a86f3..00000000 --- a/dogfood/20260320-renderer-complete/wait-text.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-20T17:08:22.292Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "Ready", - "capturedAtSeq": 2 - } -} diff --git a/dogfood/20260321-post-hardening-smoke/agent-terminal-home.txt b/dogfood/20260321-post-hardening-smoke/agent-terminal-home.txt deleted file mode 100644 index dc1e7114..00000000 --- a/dogfood/20260321-post-hardening-smoke/agent-terminal-home.txt +++ /dev/null @@ -1 +0,0 @@ -/tmp/agent-terminal-dogfood-prvAiK diff --git a/dogfood/20260321-post-hardening-smoke/artifacts/screenshot-4-reference-dark.png b/dogfood/20260321-post-hardening-smoke/artifacts/screenshot-4-reference-dark.png deleted file mode 100644 index af0c88aa..00000000 Binary files a/dogfood/20260321-post-hardening-smoke/artifacts/screenshot-4-reference-dark.png and /dev/null differ diff --git a/dogfood/20260321-post-hardening-smoke/artifacts/screenshot-4-reference-light.png b/dogfood/20260321-post-hardening-smoke/artifacts/screenshot-4-reference-light.png deleted file mode 100644 index 794a8d43..00000000 Binary files a/dogfood/20260321-post-hardening-smoke/artifacts/screenshot-4-reference-light.png and /dev/null differ diff --git a/dogfood/20260321-post-hardening-smoke/commands.sh b/dogfood/20260321-post-hardening-smoke/commands.sh deleted file mode 100755 index eff76b3b..00000000 --- a/dogfood/20260321-post-hardening-smoke/commands.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export AGENT_TERMINAL_HOME="$(mktemp -d)" -CLI=(node --import tsx ./src/cli/main.ts) -SCENARIO_SCRIPT='printf "Loading\n"; sleep 1; printf "3 items\n"; sleep 1; printf "Ready\n"; exec cat' -CREATE_OUTPUT="$(${CLI[@]} create --json -- /bin/sh -c "$SCENARIO_SCRIPT")" -SESSION_ID="$({ printf '%s' "$CREATE_OUTPUT" | node -e 'let data=""; process.stdin.on("data", (chunk) => data += chunk); process.stdin.on("end", () => process.stdout.write(JSON.parse(data).result.sessionId));'; })" -${CLI[@]} inspect "$SESSION_ID" --json -${CLI[@]} wait "$SESSION_ID" --text Ready --screen-stable-ms 500 --timeout 20000 --json -${CLI[@]} type "$SESSION_ID" "typed from post-hardening dogfood" --json -${CLI[@]} wait "$SESSION_ID" --regex 'typed.+dogfood' --timeout 20000 --json -${CLI[@]} snapshot "$SESSION_ID" --format structured --json -${CLI[@]} snapshot "$SESSION_ID" --format text --json -${CLI[@]} screenshot "$SESSION_ID" --json -${CLI[@]} screenshot "$SESSION_ID" --profile reference-light --json -${CLI[@]} doctor --json -${CLI[@]} destroy "$SESSION_ID" --force --json diff --git a/dogfood/20260321-post-hardening-smoke/create-output.json b/dogfood/20260321-post-hardening-smoke/create-output.json deleted file mode 100644 index e1fc0af4..00000000 --- a/dogfood/20260321-post-hardening-smoke/create-output.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-21T14:50:44.830Z", - "result": { - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY" - } -} diff --git a/dogfood/20260321-post-hardening-smoke/destroy-output.json b/dogfood/20260321-post-hardening-smoke/destroy-output.json deleted file mode 100644 index f9aa0acc..00000000 --- a/dogfood/20260321-post-hardening-smoke/destroy-output.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-21T14:51:30.447Z", - "result": { - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "destroyed": true - } -} diff --git a/dogfood/20260321-post-hardening-smoke/doctor.json b/dogfood/20260321-post-hardening-smoke/doctor.json deleted file mode 100644 index 0113d680..00000000 --- a/dogfood/20260321-post-hardening-smoke/doctor.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "ok": true, - "command": "doctor", - "timestamp": "2026-03-21T14:50:51.203Z", - "result": { - "ok": false, - "checks": { - "environment": [ - { - "name": "node-runtime", - "status": "fail", - "message": "Node 22.19.0 requires 24+", - "durationMs": 1 - }, - { - "name": "cwd-access", - "status": "pass", - "message": "cwd read/write: /home/coder/.mux/src/agent-terminal/design-verification-2ckn", - "durationMs": 1 - }, - { - "name": "temp-dir", - "status": "pass", - "message": "temp dir ok: /tmp", - "durationMs": 1 - } - ], - "renderer": [ - { - "name": "playwright_available", - "status": "pass", - "message": "available", - "durationMs": 307 - }, - { - "name": "browser_launch", - "status": "pass", - "message": "chromium launches", - "durationMs": 139 - }, - { - "name": "ghostty_web_available", - "status": "pass", - "message": "WASM available", - "durationMs": 86 - }, - { - "name": "screenshot_viable", - "status": "pass", - "message": "viable", - "durationMs": 163 - } - ] - } - } -} diff --git a/dogfood/20260321-post-hardening-smoke/index.md b/dogfood/20260321-post-hardening-smoke/index.md deleted file mode 100644 index b8ff75da..00000000 --- a/dogfood/20260321-post-hardening-smoke/index.md +++ /dev/null @@ -1,22 +0,0 @@ -# Post-hardening smoke bundle - -Session ID: 01KM8E12G4CCE32NE70RFTS6VY - -Artifacts and outputs: - -- create-output.json -- inspect-live.json -- wait-text-stable.json -- type-output.json -- wait-regex.json -- snapshot-structured.json -- snapshot-text.json -- screenshot-dark.json -- screenshot-light.json -- doctor.json -- manifest-excerpt.json -- destroy-output.json -- artifacts/screenshot-4-reference-dark.png -- artifacts/screenshot-4-reference-light.png -- notes.md -- commands.sh diff --git a/dogfood/20260321-post-hardening-smoke/inspect-live.json b/dogfood/20260321-post-hardening-smoke/inspect-live.json deleted file mode 100644 index fe8cbece..00000000 --- a/dogfood/20260321-post-hardening-smoke/inspect-live.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-21T14:50:45.119Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "createdAt": "2026-03-21T14:50:44.104Z", - "updatedAt": "2026-03-21T14:50:44.793Z", - "status": "running", - "command": [ - "/bin/sh", - "-c", - "printf \"Loading\\n\"; sleep 1; printf \"3 items\\n\"; sleep 1; printf \"Ready\\n\"; exec cat" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/design-verification-2ckn", - "cols": 80, - "rows": 24, - "hostPid": 221127, - "childPid": 221167, - "exitCode": null, - "exitSignal": null - } - } -} diff --git a/dogfood/20260321-post-hardening-smoke/manifest-excerpt.json b/dogfood/20260321-post-hardening-smoke/manifest-excerpt.json deleted file mode 100644 index 44fa9491..00000000 --- a/dogfood/20260321-post-hardening-smoke/manifest-excerpt.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "version": 1, - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "artifacts": [ - { - "id": "01KM8E16YZKQS95MCFQQ352MQ3", - "kind": "snapshot", - "filename": "snapshot-4-structured.json", - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "capturedAtSeq": 4, - "createdAt": "2026-03-21T14:50:48.674Z", - "metadata": { - "format": "structured", - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 33 - } - }, - { - "id": "01KM8E1795JAF2ANV03XA9T53Y", - "kind": "snapshot", - "filename": "snapshot-4-text.json", - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "capturedAtSeq": 4, - "createdAt": "2026-03-21T14:50:48.997Z", - "metadata": { - "format": "text", - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 33 - } - }, - { - "id": "01KM8E17Q9EH1YCR1FDWGPS0AV", - "kind": "screenshot", - "filename": "screenshot-4-reference-dark.png", - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "capturedAtSeq": 4, - "createdAt": "2026-03-21T14:50:49.449Z", - "metadata": { - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "pngSizeBytes": 6517 - } - }, - { - "id": "01KM8E18F3M7M72HPNCZR7PFYT", - "kind": "screenshot", - "filename": "screenshot-4-reference-light.png", - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "capturedAtSeq": 4, - "createdAt": "2026-03-21T14:50:50.211Z", - "metadata": { - "profileName": "reference-light", - "cols": 80, - "rows": 24, - "pngSizeBytes": 6497 - } - } - ] -} diff --git a/dogfood/20260321-post-hardening-smoke/notes.md b/dogfood/20260321-post-hardening-smoke/notes.md deleted file mode 100644 index 79447c03..00000000 --- a/dogfood/20260321-post-hardening-smoke/notes.md +++ /dev/null @@ -1,19 +0,0 @@ -# 2026-03-21 post-hardening smoke - -This smoke run revalidated the Week 2 plan goals after the latest hardening changes. - -Verified end-to-end: - -- full quality gates via `npm run verify` -- live `inspect` against a running session -- combined renderer wait: `wait --text Ready --screen-stable-ms 500` -- renderer regex wait after live `type` -- `snapshot --format structured` and `snapshot --format text` -- `screenshot` with both built-in profiles -- `doctor --json` renderer checks -- artifact manifest and copied PNG artifacts - -Environment: - -- AGENT_TERMINAL_HOME: /tmp/agent-terminal-dogfood-prvAiK -- Session ID: 01KM8E12G4CCE32NE70RFTS6VY diff --git a/dogfood/20260321-post-hardening-smoke/screenshot-dark.json b/dogfood/20260321-post-hardening-smoke/screenshot-dark.json deleted file mode 100644 index 5017960f..00000000 --- a/dogfood/20260321-post-hardening-smoke/screenshot-dark.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-21T14:50:49.454Z", - "result": { - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "capturedAtSeq": 4, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/agent-terminal-dogfood-prvAiK/sessions/01KM8E12G4CCE32NE70RFTS6VY/artifacts/screenshot-4-reference-dark.png", - "pngSizeBytes": 6517 - } -} diff --git a/dogfood/20260321-post-hardening-smoke/screenshot-light.json b/dogfood/20260321-post-hardening-smoke/screenshot-light.json deleted file mode 100644 index 2549d353..00000000 --- a/dogfood/20260321-post-hardening-smoke/screenshot-light.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-21T14:50:50.215Z", - "result": { - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "capturedAtSeq": 4, - "profileName": "reference-light", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/agent-terminal-dogfood-prvAiK/sessions/01KM8E12G4CCE32NE70RFTS6VY/artifacts/screenshot-4-reference-light.png", - "pngSizeBytes": 6497 - } -} diff --git a/dogfood/20260321-post-hardening-smoke/session-id.txt b/dogfood/20260321-post-hardening-smoke/session-id.txt deleted file mode 100644 index 555e664b..00000000 --- a/dogfood/20260321-post-hardening-smoke/session-id.txt +++ /dev/null @@ -1 +0,0 @@ -01KM8E12G4CCE32NE70RFTS6VY diff --git a/dogfood/20260321-post-hardening-smoke/snapshot-structured.json b/dogfood/20260321-post-hardening-smoke/snapshot-structured.json deleted file mode 100644 index 26c33101..00000000 --- a/dogfood/20260321-post-hardening-smoke/snapshot-structured.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-21T14:50:48.680Z", - "result": { - "format": "structured", - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 33, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "Loading" - }, - { - "row": 1, - "text": "3 items" - }, - { - "row": 2, - "text": "Ready" - }, - { - "row": 3, - "text": "typed from post-hardening dogfood" - }, - { - "row": 4, - "text": "" - }, - { - "row": 5, - "text": "" - }, - { - "row": 6, - "text": "" - }, - { - "row": 7, - "text": "" - }, - { - "row": 8, - "text": "" - }, - { - "row": 9, - "text": "" - }, - { - "row": 10, - "text": "" - }, - { - "row": 11, - "text": "" - }, - { - "row": 12, - "text": "" - }, - { - "row": 13, - "text": "" - }, - { - "row": 14, - "text": "" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ] - } -} diff --git a/dogfood/20260321-post-hardening-smoke/snapshot-text.json b/dogfood/20260321-post-hardening-smoke/snapshot-text.json deleted file mode 100644 index aed1c1b6..00000000 --- a/dogfood/20260321-post-hardening-smoke/snapshot-text.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-21T14:50:49.002Z", - "result": { - "format": "text", - "sessionId": "01KM8E12G4CCE32NE70RFTS6VY", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 33, - "text": "Loading\n3 items\nReady\ntyped from post-hardening dogfood\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - } -} diff --git a/dogfood/20260321-post-hardening-smoke/type-output.json b/dogfood/20260321-post-hardening-smoke/type-output.json deleted file mode 100644 index 3f670749..00000000 --- a/dogfood/20260321-post-hardening-smoke/type-output.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-21T14:50:47.862Z", - "result": {} -} diff --git a/dogfood/20260321-post-hardening-smoke/wait-regex.json b/dogfood/20260321-post-hardening-smoke/wait-regex.json deleted file mode 100644 index c77d119a..00000000 --- a/dogfood/20260321-post-hardening-smoke/wait-regex.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-21T14:50:48.389Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "typed from post-hardening dogfood", - "capturedAtSeq": 4 - } -} diff --git a/dogfood/20260321-post-hardening-smoke/wait-text-stable.json b/dogfood/20260321-post-hardening-smoke/wait-text-stable.json deleted file mode 100644 index c5d0598f..00000000 --- a/dogfood/20260321-post-hardening-smoke/wait-text-stable.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-21T14:50:47.592Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "Ready", - "capturedAtSeq": 2 - } -} diff --git a/dogfood/20260321-week3-crash-retention/NOTES.md b/dogfood/20260321-week3-crash-retention/NOTES.md deleted file mode 100644 index ead0250d..00000000 --- a/dogfood/20260321-week3-crash-retention/NOTES.md +++ /dev/null @@ -1,45 +0,0 @@ -# Week 3 crash-retention dogfood proof bundle - -- **Date:** 2026-03-21T21:48:34Z -- **Bundle:** `dogfood/20260321-week3-crash-retention/` -- **Crash session ID:** `01KM95Z3QSQKN28SVD03BP28Z2` -- **AGENT_TERMINAL_HOME:** `/tmp/agent-terminal-week3-bundles.Bo0MbU/home.KGOAC6` -- **Environment:** Node `v24.14.0` on `Linux 6.8.0-94-generic x86_64 GNU/Linux` -- **Headless note:** Review this bundle via the JSON envelopes plus the copied snapshot/screenshot/recording/video artifacts. - -## Artifacts - -| File | Description | -| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | -| `commands.sh` | Exact shell commands used to generate the crash-retention bundle. | -| `agent-terminal-home.txt` | The isolated home used for the crash-retention scenario. | -| `session-id.txt` | Session ID for the crash-retention scenario. | -| `doctor.json` | `doctor --json` output proving the environment and renderer checks passed before running the crash scenario. | -| `create-output.json` | Session creation result for the crashing command. | -| `wait-exit.json` | `wait --exit --json` result capturing the crash exit code. | -| `inspect-post-crash.json` | `inspect --json` result showing the session remains persisted after the abnormal exit. | -| `snapshot-post-crash.json` | Offline replay snapshot taken after the crash. | -| `screenshot-post-crash.json` | Offline replay screenshot taken after the crash. | -| `record-asciicast-post-crash.json` | Asciicast export JSON envelope from the crashed session. | -| `record-webm-post-crash.json` | WebM export JSON envelope from the crashed session. | -| `manifest.json` | Final copied artifact manifest from the crash session home. | -| `session-manifest.json` | Copied session manifest showing the persisted exited state and crash metadata. | -| `event-log.jsonl` | Raw event log copied from the crash session home. | -| `artifacts/post-crash-snapshot-structured-artifact.json` | Snapshot artifact copied after offline replay. | -| `artifacts/post-crash-reference-dark.png` | Screenshot PNG copied after offline replay. | -| `artifacts/session-post-crash.cast` | Asciicast exported from the crashed session. | -| `artifacts/session-post-crash.webm` | WebM exported from the crashed session. | - -## Verification claims - -- `doctor.json` reports `ok: true` and all checks passed before the crash scenario ran. -- `wait-exit.json` captured exit code `42`, demonstrating non-zero exit retention. -- `inspect-post-crash.json` shows the session persisted in `exited` state after the abnormal termination rather than disappearing. -- `snapshot-post-crash.json` and `screenshot-post-crash.json` prove offline replay remained available after the crash. -- `record-asciicast-post-crash.json` and `record-webm-post-crash.json` prove recording export also remained available after the crash. -- `manifest.json`, `session-manifest.json`, and `event-log.jsonl` preserve the evidence that remained after the process exited non-zero. - -## Issues encountered - -- No blocking issues were encountered during bundle generation. -- As with the renderer bundle, the generator retries WebM export once before failing because video export is the slowest step. diff --git a/dogfood/20260321-week3-crash-retention/agent-terminal-home.txt b/dogfood/20260321-week3-crash-retention/agent-terminal-home.txt deleted file mode 100644 index bfe41e2b..00000000 --- a/dogfood/20260321-week3-crash-retention/agent-terminal-home.txt +++ /dev/null @@ -1 +0,0 @@ -/tmp/agent-terminal-week3-bundles.Bo0MbU/home.KGOAC6 diff --git a/dogfood/20260321-week3-crash-retention/artifacts/post-crash-reference-dark.png b/dogfood/20260321-week3-crash-retention/artifacts/post-crash-reference-dark.png deleted file mode 100644 index 8c5d48a5..00000000 Binary files a/dogfood/20260321-week3-crash-retention/artifacts/post-crash-reference-dark.png and /dev/null differ diff --git a/dogfood/20260321-week3-crash-retention/artifacts/post-crash-snapshot-structured-artifact.json b/dogfood/20260321-week3-crash-retention/artifacts/post-crash-snapshot-structured-artifact.json deleted file mode 100644 index cc66a5a0..00000000 --- a/dogfood/20260321-week3-crash-retention/artifacts/post-crash-snapshot-structured-artifact.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "format": "structured", - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "capturedAtSeq": 1, - "cols": 80, - "rows": 24, - "cursorRow": 1, - "cursorCol": 0, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "crash-test-output" - }, - { - "row": 1, - "text": "" - }, - { - "row": 2, - "text": "" - }, - { - "row": 3, - "text": "" - }, - { - "row": 4, - "text": "" - }, - { - "row": 5, - "text": "" - }, - { - "row": 6, - "text": "" - }, - { - "row": 7, - "text": "" - }, - { - "row": 8, - "text": "" - }, - { - "row": 9, - "text": "" - }, - { - "row": 10, - "text": "" - }, - { - "row": 11, - "text": "" - }, - { - "row": 12, - "text": "" - }, - { - "row": 13, - "text": "" - }, - { - "row": 14, - "text": "" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ] -} diff --git a/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.cast b/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.cast deleted file mode 100644 index 5159f9fd..00000000 --- a/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.cast +++ /dev/null @@ -1,2 +0,0 @@ -{"version":2,"width":80,"height":24,"timestamp":1774129746,"title":"01KM95Z3QSQKN28SVD03BP28Z2","env":{"TERM":"xterm-256color"}} -[0,"o","crash-test-output\r\n"] diff --git a/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.webm b/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.webm deleted file mode 100644 index 49d60b11..00000000 Binary files a/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.webm and /dev/null differ diff --git a/dogfood/20260321-week3-crash-retention/commands.sh b/dogfood/20260321-week3-crash-retention/commands.sh deleted file mode 100644 index 9c311e20..00000000 --- a/dogfood/20260321-week3-crash-retention/commands.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export PATH="$HOME/.local/bin:$PATH" -if command -v mise >/dev/null 2>&1; then - mise_shell_env="$(mise activate bash 2>/dev/null || true)" - if [[ -n "$mise_shell_env" ]]; then - eval "$mise_shell_env" - fi - mise_node="$(mise which node 2>/dev/null || true)" - if [[ -n "$mise_node" ]]; then - export PATH="$(dirname "$mise_node"):$PATH" - fi -fi -cd /home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166 -export PATH="/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/node_modules/.bin:$PATH" -export AGENT_TERMINAL_HOME=/tmp/agent-terminal-week3-bundles.Bo0MbU/home.KGOAC6 - -tsx src/cli/main.ts doctor --json -tsx src/cli/main.ts create --json -- /bin/bash -lc echo\ crash-test-output\ \&\&\ exit\ 42 -tsx src/cli/main.ts wait 01KM95Z3QSQKN28SVD03BP28Z2 --exit --timeout 20000 --json -tsx src/cli/main.ts inspect 01KM95Z3QSQKN28SVD03BP28Z2 --json -tsx src/cli/main.ts snapshot 01KM95Z3QSQKN28SVD03BP28Z2 --json -tsx src/cli/main.ts screenshot 01KM95Z3QSQKN28SVD03BP28Z2 --json -tsx src/cli/main.ts record export 01KM95Z3QSQKN28SVD03BP28Z2 --format asciicast --out dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.cast --json -tsx src/cli/main.ts record export 01KM95Z3QSQKN28SVD03BP28Z2 --format webm --out dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.webm --json diff --git a/dogfood/20260321-week3-crash-retention/create-output.json b/dogfood/20260321-week3-crash-retention/create-output.json deleted file mode 100644 index ebef5219..00000000 --- a/dogfood/20260321-week3-crash-retention/create-output.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-21T21:49:06.387Z", - "result": { - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2" - } -} diff --git a/dogfood/20260321-week3-crash-retention/doctor.json b/dogfood/20260321-week3-crash-retention/doctor.json deleted file mode 100644 index 903b7988..00000000 --- a/dogfood/20260321-week3-crash-retention/doctor.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "ok": true, - "command": "doctor", - "timestamp": "2026-03-21T21:49:04.852Z", - "result": { - "ok": true, - "checks": { - "environment": [ - { - "name": "node-runtime", - "status": "pass", - "message": "Node 24.14.0 ok", - "durationMs": 0 - }, - { - "name": "cwd-access", - "status": "pass", - "message": "cwd read/write: /home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166", - "durationMs": 1 - }, - { - "name": "temp-dir", - "status": "pass", - "message": "temp dir ok: /tmp", - "durationMs": 8 - }, - { - "name": "home-writable", - "status": "pass", - "message": "home writable: /tmp/agent-terminal-week3-bundles.Bo0MbU/home.KGOAC6", - "durationMs": 2 - }, - { - "name": "pty-spawn", - "status": "pass", - "message": "spawned /home/coder/.local/share/mise/installs/node/24.14.0/bin/node", - "durationMs": 36 - }, - { - "name": "socket-viable", - "status": "pass", - "message": "socket ok: /tmp/agent-terminal-week3-bundles.Bo0MbU/home.KGOAC6/sessions/doctor-833752-mn0v1jxt-2/host.sock", - "durationMs": 3 - }, - { - "name": "artifact-atomicity", - "status": "pass", - "message": "atomic rename ok: /tmp/agent-terminal-week3-bundles.Bo0MbU/home.KGOAC6/sessions/doctor-833752-mn0v1jxw-3/artifacts", - "durationMs": 2 - }, - { - "name": "event-log-writable", - "status": "pass", - "message": "append ok: /tmp/agent-terminal-week3-bundles.Bo0MbU/home.KGOAC6/sessions/doctor-833752-mn0v1jxy-5/events.jsonl", - "durationMs": 1 - } - ], - "renderer": [ - { - "name": "playwright_available", - "status": "pass", - "message": "available", - "durationMs": 1 - }, - { - "name": "browser_launch", - "status": "pass", - "message": "chromium launches", - "durationMs": 120 - }, - { - "name": "ghostty_web_available", - "status": "pass", - "message": "WASM available", - "durationMs": 130 - }, - { - "name": "screenshot_viable", - "status": "pass", - "message": "viable", - "durationMs": 162 - } - ] - } - } -} diff --git a/dogfood/20260321-week3-crash-retention/event-log.jsonl b/dogfood/20260321-week3-crash-retention/event-log.jsonl deleted file mode 100644 index 958da7b3..00000000 --- a/dogfood/20260321-week3-crash-retention/event-log.jsonl +++ /dev/null @@ -1,2 +0,0 @@ -{"seq":0,"ts":"2026-03-21T21:49:06.407Z","type":"output","payload":{"data":"crash-test-output\r\n"}} -{"seq":1,"ts":"2026-03-21T21:49:06.408Z","type":"exit","payload":{"exitCode":42,"exitSignal":null}} diff --git a/dogfood/20260321-week3-crash-retention/index.md b/dogfood/20260321-week3-crash-retention/index.md deleted file mode 100644 index 23de57d3..00000000 --- a/dogfood/20260321-week3-crash-retention/index.md +++ /dev/null @@ -1,26 +0,0 @@ -# Bundle file index - -Generated at `2026-03-21T21:48:34Z`. - -```text -NOTES.md -agent-terminal-home.txt -artifacts/post-crash-reference-dark.png -artifacts/post-crash-snapshot-structured-artifact.json -artifacts/session-post-crash.cast -artifacts/session-post-crash.webm -commands.sh -create-output.json -doctor.json -event-log.jsonl -index.md -inspect-post-crash.json -manifest.json -record-asciicast-post-crash.json -record-webm-post-crash.json -screenshot-post-crash.json -session-id.txt -session-manifest.json -snapshot-post-crash.json -wait-exit.json -``` diff --git a/dogfood/20260321-week3-crash-retention/inspect-post-crash.json b/dogfood/20260321-week3-crash-retention/inspect-post-crash.json deleted file mode 100644 index c4be3f34..00000000 --- a/dogfood/20260321-week3-crash-retention/inspect-post-crash.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-21T21:49:08.108Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "createdAt": "2026-03-21T21:49:05.666Z", - "updatedAt": "2026-03-21T21:49:06.407Z", - "status": "exited", - "command": ["/bin/bash", "-lc", "echo crash-test-output && exit 42"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166", - "cols": 80, - "rows": 24, - "hostPid": 833995, - "childPid": 834008, - "exitCode": 42, - "exitSignal": null - } - } -} diff --git a/dogfood/20260321-week3-crash-retention/manifest.json b/dogfood/20260321-week3-crash-retention/manifest.json deleted file mode 100644 index de99ab92..00000000 --- a/dogfood/20260321-week3-crash-retention/manifest.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "version": 1, - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "artifacts": [ - { - "id": "01KM95Z76K3YPVYSGVJADV9GY0", - "kind": "snapshot", - "filename": "snapshot-1-structured.json", - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "capturedAtSeq": 1, - "createdAt": "2026-03-21T21:49:09.205Z", - "metadata": { - "format": "structured", - "cols": 80, - "rows": 24, - "cursorRow": 1, - "cursorCol": 0 - } - }, - { - "id": "01KM95Z8MRPBB6DVH45FC3YXYH", - "kind": "screenshot", - "filename": "screenshot-1-reference-dark.png", - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "capturedAtSeq": 1, - "createdAt": "2026-03-21T21:49:10.681Z", - "metadata": { - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "pngSizeBytes": 3312 - } - }, - { - "id": "01KM95ZE77WYE5JMZ1GPCZN7NP", - "kind": "recording", - "filename": "session-post-crash.cast", - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "capturedAtSeq": 1, - "createdAt": "2026-03-21T21:49:16.392Z", - "sha256": "98f07bd6a90cbe54191687409ec21532d16c5bf0956e00630ccc04f915b5b2b5", - "bytes": 161, - "metadata": { - "format": "asciicast", - "outputPath": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.cast", - "width": 80, - "height": 24, - "title": "01KM95Z3QSQKN28SVD03BP28Z2", - "timestamp": 1774129746, - "outputEventCount": 1, - "resizeEventCount": 0 - } - }, - { - "id": "01KM95ZGKDJ8T2KP42DRSCEXTY", - "kind": "video", - "filename": "session-post-crash.webm", - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "capturedAtSeq": 1, - "createdAt": "2026-03-21T21:49:18.830Z", - "sha256": "e745cf2d4ac530c37f3d62457ac55155f8ab8548dc037066c6e735892088646e", - "bytes": 9851, - "metadata": { - "format": "webm", - "outputPath": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.webm", - "width": 80, - "height": 24, - "profileName": "reference-dark", - "timingMode": "accelerated", - "outputEventCount": 1, - "resizeEventCount": 0 - } - } - ] -} diff --git a/dogfood/20260321-week3-crash-retention/record-asciicast-post-crash.json b/dogfood/20260321-week3-crash-retention/record-asciicast-post-crash.json deleted file mode 100644 index 4d5ad16e..00000000 --- a/dogfood/20260321-week3-crash-retention/record-asciicast-post-crash.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-21T21:49:16.395Z", - "result": { - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "format": "asciicast", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.cast", - "bytes": 161, - "sha256": "98f07bd6a90cbe54191687409ec21532d16c5bf0956e00630ccc04f915b5b2b5", - "capturedAtSeq": 1, - "durationMs": 1, - "metadata": { - "width": 80, - "height": 24, - "title": "01KM95Z3QSQKN28SVD03BP28Z2", - "timestamp": 1774129746, - "outputEventCount": 1, - "resizeEventCount": 0 - } - } -} diff --git a/dogfood/20260321-week3-crash-retention/record-webm-post-crash.json b/dogfood/20260321-week3-crash-retention/record-webm-post-crash.json deleted file mode 100644 index 33027aec..00000000 --- a/dogfood/20260321-week3-crash-retention/record-webm-post-crash.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-21T21:49:18.837Z", - "result": { - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "format": "webm", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/dogfood/20260321-week3-crash-retention/artifacts/session-post-crash.webm", - "bytes": 9851, - "sha256": "e745cf2d4ac530c37f3d62457ac55155f8ab8548dc037066c6e735892088646e", - "capturedAtSeq": 1, - "durationMs": 1, - "metadata": { - "width": 80, - "height": 24, - "profileName": "reference-dark", - "timingMode": "accelerated", - "outputEventCount": 1, - "resizeEventCount": 0 - } - } -} diff --git a/dogfood/20260321-week3-crash-retention/screenshot-post-crash.json b/dogfood/20260321-week3-crash-retention/screenshot-post-crash.json deleted file mode 100644 index b77cf326..00000000 --- a/dogfood/20260321-week3-crash-retention/screenshot-post-crash.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-21T21:49:10.726Z", - "result": { - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "capturedAtSeq": 1, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/agent-terminal-week3-bundles.Bo0MbU/home.KGOAC6/sessions/01KM95Z3QSQKN28SVD03BP28Z2/artifacts/screenshot-1-reference-dark.png", - "pngSizeBytes": 3312 - } -} diff --git a/dogfood/20260321-week3-crash-retention/session-id.txt b/dogfood/20260321-week3-crash-retention/session-id.txt deleted file mode 100644 index a7889084..00000000 --- a/dogfood/20260321-week3-crash-retention/session-id.txt +++ /dev/null @@ -1 +0,0 @@ -01KM95Z3QSQKN28SVD03BP28Z2 diff --git a/dogfood/20260321-week3-crash-retention/session-manifest.json b/dogfood/20260321-week3-crash-retention/session-manifest.json deleted file mode 100644 index fbd62868..00000000 --- a/dogfood/20260321-week3-crash-retention/session-manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": 1, - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "createdAt": "2026-03-21T21:49:05.666Z", - "updatedAt": "2026-03-21T21:49:06.407Z", - "status": "exited", - "command": ["/bin/bash", "-lc", "echo crash-test-output && exit 42"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166", - "cols": 80, - "rows": 24, - "hostPid": 833995, - "childPid": 834008, - "exitCode": 42, - "exitSignal": null -} diff --git a/dogfood/20260321-week3-crash-retention/snapshot-post-crash.json b/dogfood/20260321-week3-crash-retention/snapshot-post-crash.json deleted file mode 100644 index 5bc85afd..00000000 --- a/dogfood/20260321-week3-crash-retention/snapshot-post-crash.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-21T21:49:09.245Z", - "result": { - "format": "structured", - "sessionId": "01KM95Z3QSQKN28SVD03BP28Z2", - "capturedAtSeq": 1, - "cols": 80, - "rows": 24, - "cursorRow": 1, - "cursorCol": 0, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "crash-test-output" - }, - { - "row": 1, - "text": "" - }, - { - "row": 2, - "text": "" - }, - { - "row": 3, - "text": "" - }, - { - "row": 4, - "text": "" - }, - { - "row": 5, - "text": "" - }, - { - "row": 6, - "text": "" - }, - { - "row": 7, - "text": "" - }, - { - "row": 8, - "text": "" - }, - { - "row": 9, - "text": "" - }, - { - "row": 10, - "text": "" - }, - { - "row": 11, - "text": "" - }, - { - "row": 12, - "text": "" - }, - { - "row": 13, - "text": "" - }, - { - "row": 14, - "text": "" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ] - } -} diff --git a/dogfood/20260321-week3-crash-retention/wait-exit.json b/dogfood/20260321-week3-crash-retention/wait-exit.json deleted file mode 100644 index 6aa9cac2..00000000 --- a/dogfood/20260321-week3-crash-retention/wait-exit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-21T21:49:07.282Z", - "result": { - "timedOut": false, - "exitCode": 42 - } -} diff --git a/dogfood/20260321-week3-renderer-complete/NOTES.md b/dogfood/20260321-week3-renderer-complete/NOTES.md deleted file mode 100644 index 79e0f76f..00000000 --- a/dogfood/20260321-week3-renderer-complete/NOTES.md +++ /dev/null @@ -1,66 +0,0 @@ -# Week 3 renderer-complete dogfood proof bundle - -- **Date:** 2026-03-21T21:48:34Z -- **Bundle:** `dogfood/20260321-week3-renderer-complete/` -- **Renderer session ID:** `01KM95Y7RFQZ11N60DR204NK1T` -- **Renderer AGENT_TERMINAL_HOME:** `/tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs` -- **GC demo AGENT_TERMINAL_HOME:** `/tmp/agent-terminal-week3-bundles.Bo0MbU/home.Ubuxel` -- **Environment:** Node `v24.14.0` on `Linux 6.8.0-94-generic x86_64 GNU/Linux` -- **Headless note:** This bundle was collected in a headless environment, so the reviewer evidence is the CLI JSON envelopes, copied PNG screenshots, copied snapshot artifacts, exported asciicast/WebM recordings, and copied session manifests/event logs. - -## Artifacts - -| File | Description | -| ------------------------------------------------------- | ------------------------------------------------------------------------------- | -| `commands.sh` | Exact shell commands used to generate the renderer-complete bundle. | -| `agent-terminal-home.txt` | The isolated home used for the renderer-complete scenario. | -| `session-id.txt` | Session ID for the main renderer scenario. | -| `doctor.json` | `doctor --json` output proving all environment and renderer checks passed. | -| `create-output.json` | Session creation result for the live renderer session. | -| `wait-text.json` | `wait --text 'Ready'` result proving renderer-visible content appeared. | -| `type-output.json` | `type` result for the live interaction. | -| `wait-regex.json` | Renderer regex wait proving the typed text became visible in the live terminal. | -| `snapshot-structured-live.json` | Live structured snapshot JSON envelope. | -| `snapshot-text-live.json` | Live text snapshot JSON envelope. | -| `screenshot-dark-live.json` | Live dark-profile screenshot JSON envelope. | -| `screenshot-light-live.json` | Live light-profile screenshot JSON envelope. | -| `record-asciicast-live.json` | Live asciicast export JSON envelope. | -| `destroy-output.json` | Session destroy result. | -| `snapshot-structured-post-exit.json` | Post-exit structured snapshot JSON envelope proving offline replay. | -| `screenshot-dark-post-exit.json` | Post-exit dark screenshot JSON envelope proving offline replay. | -| `record-webm-post-exit.json` | Post-exit WebM export JSON envelope proving video export on an exited session. | -| `manifest.json` | Final copied artifact manifest from the session home. | -| `session-manifest.json` | Final copied session manifest showing the exited session state. | -| `event-log.jsonl` | Raw event log copied from the isolated session home. | -| `artifacts/live-snapshot-structured-artifact.json` | Snapshot artifact file copied immediately after the live structured snapshot. | -| `artifacts/live-snapshot-text-artifact.json` | Snapshot artifact file copied immediately after the live text snapshot. | -| `artifacts/post-exit-snapshot-structured-artifact.json` | Snapshot artifact file copied after post-exit offline replay. | -| `artifacts/live-reference-dark.png` | Live screenshot PNG copied from the session artifact path. | -| `artifacts/live-reference-light.png` | Live light-theme screenshot PNG copied from the session artifact path. | -| `artifacts/post-exit-reference-dark.png` | Post-exit screenshot PNG copied from the offline replay artifact path. | -| `artifacts/session-live.cast` | Asciicast exported from the still-running session. | -| `artifacts/session-post-exit.webm` | WebM exported after the session had already been destroyed. | -| `gc/commands.sh` | Exact shell commands used for the GC sub-demo. | -| `gc/agent-terminal-home.txt` | Isolated home used only for the GC demo. | -| `gc/session-id.txt` | Temporary session ID used for the GC demo. | -| `gc/create-output.json` | GC demo session creation result. | -| `gc/destroy-output.json` | GC demo destroy result. | -| `gc/gc-dry-run.json` | `gc --dry-run --json` output showing what would be removed. | -| `gc/gc.json` | `gc --json` output showing the session was actually removed. | -| `gc/list-all.json` | `list --all --json` output proving the removed GC session no longer appears. | - -## Verification claims - -- `doctor.json` reports `ok: true` and every environment/renderer check has `status: pass`. -- `wait-text.json` matched the live `Ready` line before evidence capture began. -- `wait-regex.json` matched the visible `week3 renderer bundle` text, so the live recording contains interaction beyond the initial prompt. -- The live text snapshot and the post-exit structured snapshot both capture the same terminal text at sequence `4`, and the post-exit structured snapshot remained at sequence `5` after destroy. -- The live dark screenshot SHA256 is `b04565d5ba4c63044469f42ee468ae1900c4274c7ce5704ce0493367becc0967` and the post-exit dark screenshot SHA256 is `b04565d5ba4c63044469f42ee468ae1900c4274c7ce5704ce0493367becc0967`; the files were identical, which helps reviewers judge whether offline replay reproduced the exact same frame bytes. -- `record-asciicast-live.json` proves asciicast export works on a running session, and `record-webm-post-exit.json` proves WebM export works after the session has exited. -- `manifest.json` shows the copied snapshot, screenshot, recording, and video artifacts recorded against the renderer session. -- GC dry-run reported `1` removable session(s), the actual GC run removed the temporary session `01KM95YX5WZBJ570QW3AMD1RJT`, and `gc/list-all.json` shows `0` remaining session(s) in the isolated GC home. - -## Issues encountered - -- No blocking issues were encountered during bundle generation. -- WebM export can take longer than the other commands, so the generator script retries WebM export once before failing in order to reduce flake risk. diff --git a/dogfood/20260321-week3-renderer-complete/agent-terminal-home.txt b/dogfood/20260321-week3-renderer-complete/agent-terminal-home.txt deleted file mode 100644 index 15fad95f..00000000 --- a/dogfood/20260321-week3-renderer-complete/agent-terminal-home.txt +++ /dev/null @@ -1 +0,0 @@ -/tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs diff --git a/dogfood/20260321-week3-renderer-complete/artifacts/live-reference-dark.png b/dogfood/20260321-week3-renderer-complete/artifacts/live-reference-dark.png deleted file mode 100644 index bb62401c..00000000 Binary files a/dogfood/20260321-week3-renderer-complete/artifacts/live-reference-dark.png and /dev/null differ diff --git a/dogfood/20260321-week3-renderer-complete/artifacts/live-reference-light.png b/dogfood/20260321-week3-renderer-complete/artifacts/live-reference-light.png deleted file mode 100644 index bb0911c7..00000000 Binary files a/dogfood/20260321-week3-renderer-complete/artifacts/live-reference-light.png and /dev/null differ diff --git a/dogfood/20260321-week3-renderer-complete/artifacts/live-snapshot-structured-artifact.json b/dogfood/20260321-week3-renderer-complete/artifacts/live-snapshot-structured-artifact.json deleted file mode 100644 index cbba4b83..00000000 --- a/dogfood/20260321-week3-renderer-complete/artifacts/live-snapshot-structured-artifact.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "format": "structured", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 21, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "Loading" - }, - { - "row": 1, - "text": "3 items" - }, - { - "row": 2, - "text": "Ready" - }, - { - "row": 3, - "text": "week3 renderer bundle" - }, - { - "row": 4, - "text": "" - }, - { - "row": 5, - "text": "" - }, - { - "row": 6, - "text": "" - }, - { - "row": 7, - "text": "" - }, - { - "row": 8, - "text": "" - }, - { - "row": 9, - "text": "" - }, - { - "row": 10, - "text": "" - }, - { - "row": 11, - "text": "" - }, - { - "row": 12, - "text": "" - }, - { - "row": 13, - "text": "" - }, - { - "row": 14, - "text": "" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ] -} diff --git a/dogfood/20260321-week3-renderer-complete/artifacts/live-snapshot-text-artifact.json b/dogfood/20260321-week3-renderer-complete/artifacts/live-snapshot-text-artifact.json deleted file mode 100644 index d48cd7a0..00000000 --- a/dogfood/20260321-week3-renderer-complete/artifacts/live-snapshot-text-artifact.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "format": "text", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 21, - "text": "Loading\n3 items\nReady\nweek3 renderer bundle\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" -} diff --git a/dogfood/20260321-week3-renderer-complete/artifacts/post-exit-reference-dark.png b/dogfood/20260321-week3-renderer-complete/artifacts/post-exit-reference-dark.png deleted file mode 100644 index bb62401c..00000000 Binary files a/dogfood/20260321-week3-renderer-complete/artifacts/post-exit-reference-dark.png and /dev/null differ diff --git a/dogfood/20260321-week3-renderer-complete/artifacts/post-exit-snapshot-structured-artifact.json b/dogfood/20260321-week3-renderer-complete/artifacts/post-exit-snapshot-structured-artifact.json deleted file mode 100644 index 5d1d2300..00000000 --- a/dogfood/20260321-week3-renderer-complete/artifacts/post-exit-snapshot-structured-artifact.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "format": "structured", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 5, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 21, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "Loading" - }, - { - "row": 1, - "text": "3 items" - }, - { - "row": 2, - "text": "Ready" - }, - { - "row": 3, - "text": "week3 renderer bundle" - }, - { - "row": 4, - "text": "" - }, - { - "row": 5, - "text": "" - }, - { - "row": 6, - "text": "" - }, - { - "row": 7, - "text": "" - }, - { - "row": 8, - "text": "" - }, - { - "row": 9, - "text": "" - }, - { - "row": 10, - "text": "" - }, - { - "row": 11, - "text": "" - }, - { - "row": 12, - "text": "" - }, - { - "row": 13, - "text": "" - }, - { - "row": 14, - "text": "" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ] -} diff --git a/dogfood/20260321-week3-renderer-complete/artifacts/session-live.cast b/dogfood/20260321-week3-renderer-complete/artifacts/session-live.cast deleted file mode 100644 index 8c4c51e6..00000000 --- a/dogfood/20260321-week3-renderer-complete/artifacts/session-live.cast +++ /dev/null @@ -1,5 +0,0 @@ -{"version":2,"width":80,"height":24,"timestamp":1774129717,"title":"01KM95Y7RFQZ11N60DR204NK1T","env":{"TERM":"xterm-256color"}} -[0,"o","Loading\r\n"] -[1.002,"o","3 items\r\n"] -[2.003,"o","Ready\r\n"] -[2.953,"o","week3 renderer bundle"] diff --git a/dogfood/20260321-week3-renderer-complete/artifacts/session-post-exit.webm b/dogfood/20260321-week3-renderer-complete/artifacts/session-post-exit.webm deleted file mode 100644 index e4c139d4..00000000 Binary files a/dogfood/20260321-week3-renderer-complete/artifacts/session-post-exit.webm and /dev/null differ diff --git a/dogfood/20260321-week3-renderer-complete/commands.sh b/dogfood/20260321-week3-renderer-complete/commands.sh deleted file mode 100644 index 2700aca5..00000000 --- a/dogfood/20260321-week3-renderer-complete/commands.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export PATH="$HOME/.local/bin:$PATH" -if command -v mise >/dev/null 2>&1; then - mise_shell_env="$(mise activate bash 2>/dev/null || true)" - if [[ -n "$mise_shell_env" ]]; then - eval "$mise_shell_env" - fi - mise_node="$(mise which node 2>/dev/null || true)" - if [[ -n "$mise_node" ]]; then - export PATH="$(dirname "$mise_node"):$PATH" - fi -fi -cd /home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166 -export PATH="/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/node_modules/.bin:$PATH" -export AGENT_TERMINAL_HOME=/tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs - -tsx src/cli/main.ts doctor --json -tsx src/cli/main.ts create --json -- /bin/sh -lc printf\ \"Loading\\n\"\;\ sleep\ 1\;\ printf\ \"3\ items\\n\"\;\ sleep\ 1\;\ printf\ \"Ready\\n\"\;\ exec\ cat -tsx src/cli/main.ts wait 01KM95Y7RFQZ11N60DR204NK1T --text Ready --timeout 20000 --json -tsx src/cli/main.ts type 01KM95Y7RFQZ11N60DR204NK1T week3\ renderer\ bundle --json -tsx src/cli/main.ts wait 01KM95Y7RFQZ11N60DR204NK1T --regex week3\ renderer\ bundle --timeout 20000 --json -tsx src/cli/main.ts snapshot 01KM95Y7RFQZ11N60DR204NK1T --json -tsx src/cli/main.ts snapshot 01KM95Y7RFQZ11N60DR204NK1T --format text --json -tsx src/cli/main.ts screenshot 01KM95Y7RFQZ11N60DR204NK1T --json -tsx src/cli/main.ts screenshot 01KM95Y7RFQZ11N60DR204NK1T --profile reference-light --json -tsx src/cli/main.ts record export 01KM95Y7RFQZ11N60DR204NK1T --format asciicast --out dogfood/20260321-week3-renderer-complete/artifacts/session-live.cast --json -tsx src/cli/main.ts destroy 01KM95Y7RFQZ11N60DR204NK1T --json -tsx src/cli/main.ts snapshot 01KM95Y7RFQZ11N60DR204NK1T --json -tsx src/cli/main.ts screenshot 01KM95Y7RFQZ11N60DR204NK1T --json -tsx src/cli/main.ts record export 01KM95Y7RFQZ11N60DR204NK1T --format webm --out dogfood/20260321-week3-renderer-complete/artifacts/session-post-exit.webm --json diff --git a/dogfood/20260321-week3-renderer-complete/create-output.json b/dogfood/20260321-week3-renderer-complete/create-output.json deleted file mode 100644 index 9f0c9624..00000000 --- a/dogfood/20260321-week3-renderer-complete/create-output.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-21T21:48:37.839Z", - "result": { - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T" - } -} diff --git a/dogfood/20260321-week3-renderer-complete/destroy-output.json b/dogfood/20260321-week3-renderer-complete/destroy-output.json deleted file mode 100644 index 99352039..00000000 --- a/dogfood/20260321-week3-renderer-complete/destroy-output.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-21T21:48:47.719Z", - "result": { - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "destroyed": true - } -} diff --git a/dogfood/20260321-week3-renderer-complete/doctor.json b/dogfood/20260321-week3-renderer-complete/doctor.json deleted file mode 100644 index 6df63ead..00000000 --- a/dogfood/20260321-week3-renderer-complete/doctor.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "ok": true, - "command": "doctor", - "timestamp": "2026-03-21T21:48:36.128Z", - "result": { - "ok": true, - "checks": { - "environment": [ - { - "name": "node-runtime", - "status": "pass", - "message": "Node 24.14.0 ok", - "durationMs": 0 - }, - { - "name": "cwd-access", - "status": "pass", - "message": "cwd read/write: /home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166", - "durationMs": 1 - }, - { - "name": "temp-dir", - "status": "pass", - "message": "temp dir ok: /tmp", - "durationMs": 7 - }, - { - "name": "home-writable", - "status": "pass", - "message": "home writable: /tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs", - "durationMs": 2 - }, - { - "name": "pty-spawn", - "status": "pass", - "message": "spawned /home/coder/.local/share/mise/installs/node/24.14.0/bin/node", - "durationMs": 38 - }, - { - "name": "socket-viable", - "status": "pass", - "message": "socket ok: /tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs/sessions/doctor-831372-mn0v0xrb-2/host.sock", - "durationMs": 3 - }, - { - "name": "artifact-atomicity", - "status": "pass", - "message": "atomic rename ok: /tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs/sessions/doctor-831372-mn0v0xre-3/artifacts", - "durationMs": 2 - }, - { - "name": "event-log-writable", - "status": "pass", - "message": "append ok: /tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs/sessions/doctor-831372-mn0v0xrg-5/events.jsonl", - "durationMs": 1 - } - ], - "renderer": [ - { - "name": "playwright_available", - "status": "pass", - "message": "available", - "durationMs": 1 - }, - { - "name": "browser_launch", - "status": "pass", - "message": "chromium launches", - "durationMs": 148 - }, - { - "name": "ghostty_web_available", - "status": "pass", - "message": "WASM available", - "durationMs": 105 - }, - { - "name": "screenshot_viable", - "status": "pass", - "message": "viable", - "durationMs": 180 - } - ] - } - } -} diff --git a/dogfood/20260321-week3-renderer-complete/event-log.jsonl b/dogfood/20260321-week3-renderer-complete/event-log.jsonl deleted file mode 100644 index 16f776e3..00000000 --- a/dogfood/20260321-week3-renderer-complete/event-log.jsonl +++ /dev/null @@ -1,6 +0,0 @@ -{"seq":0,"ts":"2026-03-21T21:48:37.894Z","type":"output","payload":{"data":"Loading\r\n"}} -{"seq":1,"ts":"2026-03-21T21:48:38.896Z","type":"output","payload":{"data":"3 items\r\n"}} -{"seq":2,"ts":"2026-03-21T21:48:39.897Z","type":"output","payload":{"data":"Ready\r\n"}} -{"seq":3,"ts":"2026-03-21T21:48:40.846Z","type":"input_text","payload":{"data":"week3 renderer bundle"}} -{"seq":4,"ts":"2026-03-21T21:48:40.847Z","type":"output","payload":{"data":"week3 renderer bundle"}} -{"seq":5,"ts":"2026-03-21T21:48:47.618Z","type":"exit","payload":{"exitCode":0,"exitSignal":"1"}} diff --git a/dogfood/20260321-week3-renderer-complete/gc/agent-terminal-home.txt b/dogfood/20260321-week3-renderer-complete/gc/agent-terminal-home.txt deleted file mode 100644 index 45a7b6f2..00000000 --- a/dogfood/20260321-week3-renderer-complete/gc/agent-terminal-home.txt +++ /dev/null @@ -1 +0,0 @@ -/tmp/agent-terminal-week3-bundles.Bo0MbU/home.Ubuxel diff --git a/dogfood/20260321-week3-renderer-complete/gc/commands.sh b/dogfood/20260321-week3-renderer-complete/gc/commands.sh deleted file mode 100644 index ab3211d7..00000000 --- a/dogfood/20260321-week3-renderer-complete/gc/commands.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export PATH="$HOME/.local/bin:$PATH" -if command -v mise >/dev/null 2>&1; then - mise_shell_env="$(mise activate bash 2>/dev/null || true)" - if [[ -n "$mise_shell_env" ]]; then - eval "$mise_shell_env" - fi - mise_node="$(mise which node 2>/dev/null || true)" - if [[ -n "$mise_node" ]]; then - export PATH="$(dirname "$mise_node"):$PATH" - fi -fi -cd /home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166 -export PATH="/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/node_modules/.bin:$PATH" -export AGENT_TERMINAL_HOME=/tmp/agent-terminal-week3-bundles.Bo0MbU/home.Ubuxel - -tsx src/cli/main.ts create --json -- /bin/sh -lc printf\ \"gc-temp\\n\"\;\ exec\ cat -tsx src/cli/main.ts destroy 01KM95YX5WZBJ570QW3AMD1RJT --json -tsx src/cli/main.ts gc --dry-run --json -tsx src/cli/main.ts gc --json -tsx src/cli/main.ts list --all --json diff --git a/dogfood/20260321-week3-renderer-complete/gc/create-output.json b/dogfood/20260321-week3-renderer-complete/gc/create-output.json deleted file mode 100644 index 90b3b6da..00000000 --- a/dogfood/20260321-week3-renderer-complete/gc/create-output.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-21T21:48:59.772Z", - "result": { - "sessionId": "01KM95YX5WZBJ570QW3AMD1RJT" - } -} diff --git a/dogfood/20260321-week3-renderer-complete/gc/destroy-output.json b/dogfood/20260321-week3-renderer-complete/gc/destroy-output.json deleted file mode 100644 index e0d81139..00000000 --- a/dogfood/20260321-week3-renderer-complete/gc/destroy-output.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-21T21:49:00.753Z", - "result": { - "sessionId": "01KM95YX5WZBJ570QW3AMD1RJT", - "destroyed": true - } -} diff --git a/dogfood/20260321-week3-renderer-complete/gc/gc-dry-run.json b/dogfood/20260321-week3-renderer-complete/gc/gc-dry-run.json deleted file mode 100644 index 527ad0a9..00000000 --- a/dogfood/20260321-week3-renderer-complete/gc/gc-dry-run.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ok": true, - "command": "gc", - "timestamp": "2026-03-21T21:49:01.656Z", - "result": { - "removedSessions": ["01KM95YX5WZBJ570QW3AMD1RJT"], - "skippedSessions": [], - "dryRun": true, - "totalBytesFreed": 4720 - } -} diff --git a/dogfood/20260321-week3-renderer-complete/gc/gc.json b/dogfood/20260321-week3-renderer-complete/gc/gc.json deleted file mode 100644 index 8a569b6d..00000000 --- a/dogfood/20260321-week3-renderer-complete/gc/gc.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ok": true, - "command": "gc", - "timestamp": "2026-03-21T21:49:02.558Z", - "result": { - "removedSessions": ["01KM95YX5WZBJ570QW3AMD1RJT"], - "skippedSessions": [], - "dryRun": false, - "totalBytesFreed": 4720 - } -} diff --git a/dogfood/20260321-week3-renderer-complete/gc/list-all.json b/dogfood/20260321-week3-renderer-complete/gc/list-all.json deleted file mode 100644 index 897ba64f..00000000 --- a/dogfood/20260321-week3-renderer-complete/gc/list-all.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "list", - "timestamp": "2026-03-21T21:49:03.359Z", - "result": { - "sessions": [] - } -} diff --git a/dogfood/20260321-week3-renderer-complete/gc/session-id.txt b/dogfood/20260321-week3-renderer-complete/gc/session-id.txt deleted file mode 100644 index d888339c..00000000 --- a/dogfood/20260321-week3-renderer-complete/gc/session-id.txt +++ /dev/null @@ -1 +0,0 @@ -01KM95YX5WZBJ570QW3AMD1RJT diff --git a/dogfood/20260321-week3-renderer-complete/index.md b/dogfood/20260321-week3-renderer-complete/index.md deleted file mode 100644 index 62d9366f..00000000 --- a/dogfood/20260321-week3-renderer-complete/index.md +++ /dev/null @@ -1,44 +0,0 @@ -# Bundle file index - -Generated at `2026-03-21T21:48:34Z`. - -```text -NOTES.md -agent-terminal-home.txt -artifacts/live-reference-dark.png -artifacts/live-reference-light.png -artifacts/live-snapshot-structured-artifact.json -artifacts/live-snapshot-text-artifact.json -artifacts/post-exit-reference-dark.png -artifacts/post-exit-snapshot-structured-artifact.json -artifacts/session-live.cast -artifacts/session-post-exit.webm -commands.sh -create-output.json -destroy-output.json -doctor.json -event-log.jsonl -gc/agent-terminal-home.txt -gc/commands.sh -gc/create-output.json -gc/destroy-output.json -gc/gc-dry-run.json -gc/gc.json -gc/list-all.json -gc/session-id.txt -index.md -manifest.json -record-asciicast-live.json -record-webm-post-exit.json -screenshot-dark-live.json -screenshot-dark-post-exit.json -screenshot-light-live.json -session-id.txt -session-manifest.json -snapshot-structured-live.json -snapshot-structured-post-exit.json -snapshot-text-live.json -type-output.json -wait-regex.json -wait-text.json -``` diff --git a/dogfood/20260321-week3-renderer-complete/manifest.json b/dogfood/20260321-week3-renderer-complete/manifest.json deleted file mode 100644 index 4408a103..00000000 --- a/dogfood/20260321-week3-renderer-complete/manifest.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "version": 1, - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "artifacts": [ - { - "id": "01KM95YDDCWMZ9X8ZXCAC6KNE2", - "kind": "snapshot", - "filename": "snapshot-4-structured.json", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "createdAt": "2026-03-21T21:48:42.797Z", - "metadata": { - "format": "structured", - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 21 - } - }, - { - "id": "01KM95YEA07BZRMSPTENZSW1FX", - "kind": "snapshot", - "filename": "snapshot-4-text.json", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "createdAt": "2026-03-21T21:48:43.712Z", - "metadata": { - "format": "text", - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 21 - } - }, - { - "id": "01KM95YFA32Y91CX7V33904AB6", - "kind": "screenshot", - "filename": "screenshot-4-reference-dark.png", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "createdAt": "2026-03-21T21:48:44.739Z", - "metadata": { - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "pngSizeBytes": 5928 - } - }, - { - "id": "01KM95YGGRHW8FJ7T3KRQDM6FC", - "kind": "screenshot", - "filename": "screenshot-4-reference-light.png", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "createdAt": "2026-03-21T21:48:45.976Z", - "metadata": { - "profileName": "reference-light", - "cols": 80, - "rows": 24, - "pngSizeBytes": 5906 - } - }, - { - "id": "01KM95YHA9GJ4A5Y8Y3KD7142Q", - "kind": "recording", - "filename": "session-live.cast", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "createdAt": "2026-03-21T21:48:46.794Z", - "sha256": "f21470a1ec17ee883290941931a029ee1d48ac85bb29c8e05a30b73548e8be21", - "bytes": 237, - "metadata": { - "format": "asciicast", - "outputPath": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/dogfood/20260321-week3-renderer-complete/artifacts/session-live.cast", - "width": 80, - "height": 24, - "title": "01KM95Y7RFQZ11N60DR204NK1T", - "timestamp": 1774129717, - "outputEventCount": 4, - "resizeEventCount": 0 - } - }, - { - "id": "01KM95YKBYHT1FRSAXSPQE2NVN", - "kind": "snapshot", - "filename": "snapshot-5-structured.json", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 5, - "createdAt": "2026-03-21T21:48:48.895Z", - "metadata": { - "format": "structured", - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 21 - } - }, - { - "id": "01KM95YMPNJZVDGJ07SGZFRXRC", - "kind": "screenshot", - "filename": "screenshot-5-reference-dark.png", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 5, - "createdAt": "2026-03-21T21:48:50.261Z", - "metadata": { - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "pngSizeBytes": 5928 - } - }, - { - "id": "01KM95YW74W2R4PSG7FAVRYG5E", - "kind": "video", - "filename": "session-post-exit.webm", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 5, - "createdAt": "2026-03-21T21:48:57.957Z", - "sha256": "7c23a640ba7a5d71c7f1feb8b3d706a2bef39fd1df9354a71373a64a83073e13", - "bytes": 14862, - "metadata": { - "format": "webm", - "outputPath": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/dogfood/20260321-week3-renderer-complete/artifacts/session-post-exit.webm", - "width": 80, - "height": 24, - "profileName": "reference-dark", - "timingMode": "accelerated", - "outputEventCount": 4, - "resizeEventCount": 0 - } - } - ] -} diff --git a/dogfood/20260321-week3-renderer-complete/record-asciicast-live.json b/dogfood/20260321-week3-renderer-complete/record-asciicast-live.json deleted file mode 100644 index 88dd2a2f..00000000 --- a/dogfood/20260321-week3-renderer-complete/record-asciicast-live.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-21T21:48:46.798Z", - "result": { - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "format": "asciicast", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/dogfood/20260321-week3-renderer-complete/artifacts/session-live.cast", - "bytes": 237, - "sha256": "f21470a1ec17ee883290941931a029ee1d48ac85bb29c8e05a30b73548e8be21", - "capturedAtSeq": 4, - "durationMs": 2953, - "metadata": { - "width": 80, - "height": 24, - "title": "01KM95Y7RFQZ11N60DR204NK1T", - "timestamp": 1774129717, - "outputEventCount": 4, - "resizeEventCount": 0 - } - } -} diff --git a/dogfood/20260321-week3-renderer-complete/record-webm-post-exit.json b/dogfood/20260321-week3-renderer-complete/record-webm-post-exit.json deleted file mode 100644 index 2f048531..00000000 --- a/dogfood/20260321-week3-renderer-complete/record-webm-post-exit.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-21T21:48:57.961Z", - "result": { - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "format": "webm", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166/dogfood/20260321-week3-renderer-complete/artifacts/session-post-exit.webm", - "bytes": 14862, - "sha256": "7c23a640ba7a5d71c7f1feb8b3d706a2bef39fd1df9354a71373a64a83073e13", - "capturedAtSeq": 5, - "durationMs": 9724, - "metadata": { - "width": 80, - "height": 24, - "profileName": "reference-dark", - "timingMode": "accelerated", - "outputEventCount": 4, - "resizeEventCount": 0 - } - } -} diff --git a/dogfood/20260321-week3-renderer-complete/screenshot-dark-live.json b/dogfood/20260321-week3-renderer-complete/screenshot-dark-live.json deleted file mode 100644 index 1d4fe1f1..00000000 --- a/dogfood/20260321-week3-renderer-complete/screenshot-dark-live.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-21T21:48:44.743Z", - "result": { - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs/sessions/01KM95Y7RFQZ11N60DR204NK1T/artifacts/screenshot-4-reference-dark.png", - "pngSizeBytes": 5928 - } -} diff --git a/dogfood/20260321-week3-renderer-complete/screenshot-dark-post-exit.json b/dogfood/20260321-week3-renderer-complete/screenshot-dark-post-exit.json deleted file mode 100644 index ca6f5b2a..00000000 --- a/dogfood/20260321-week3-renderer-complete/screenshot-dark-post-exit.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-21T21:48:50.308Z", - "result": { - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 5, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs/sessions/01KM95Y7RFQZ11N60DR204NK1T/artifacts/screenshot-5-reference-dark.png", - "pngSizeBytes": 5928 - } -} diff --git a/dogfood/20260321-week3-renderer-complete/screenshot-light-live.json b/dogfood/20260321-week3-renderer-complete/screenshot-light-live.json deleted file mode 100644 index 328b05f1..00000000 --- a/dogfood/20260321-week3-renderer-complete/screenshot-light-live.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-21T21:48:45.979Z", - "result": { - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "profileName": "reference-light", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/agent-terminal-week3-bundles.Bo0MbU/home.8BRlbs/sessions/01KM95Y7RFQZ11N60DR204NK1T/artifacts/screenshot-4-reference-light.png", - "pngSizeBytes": 5906 - } -} diff --git a/dogfood/20260321-week3-renderer-complete/session-id.txt b/dogfood/20260321-week3-renderer-complete/session-id.txt deleted file mode 100644 index 475229c9..00000000 --- a/dogfood/20260321-week3-renderer-complete/session-id.txt +++ /dev/null @@ -1 +0,0 @@ -01KM95Y7RFQZ11N60DR204NK1T diff --git a/dogfood/20260321-week3-renderer-complete/session-manifest.json b/dogfood/20260321-week3-renderer-complete/session-manifest.json deleted file mode 100644 index 6e3f1648..00000000 --- a/dogfood/20260321-week3-renderer-complete/session-manifest.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "version": 1, - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "createdAt": "2026-03-21T21:48:37.015Z", - "updatedAt": "2026-03-21T21:48:47.618Z", - "status": "exited", - "command": [ - "/bin/sh", - "-lc", - "printf \"Loading\\n\"; sleep 1; printf \"3 items\\n\"; sleep 1; printf \"Ready\\n\"; exec cat" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_7c2a453166", - "cols": 80, - "rows": 24, - "hostPid": 831613, - "childPid": 831626, - "exitCode": 0, - "exitSignal": "1" -} diff --git a/dogfood/20260321-week3-renderer-complete/snapshot-structured-live.json b/dogfood/20260321-week3-renderer-complete/snapshot-structured-live.json deleted file mode 100644 index 83569c91..00000000 --- a/dogfood/20260321-week3-renderer-complete/snapshot-structured-live.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-21T21:48:42.802Z", - "result": { - "format": "structured", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 21, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "Loading" - }, - { - "row": 1, - "text": "3 items" - }, - { - "row": 2, - "text": "Ready" - }, - { - "row": 3, - "text": "week3 renderer bundle" - }, - { - "row": 4, - "text": "" - }, - { - "row": 5, - "text": "" - }, - { - "row": 6, - "text": "" - }, - { - "row": 7, - "text": "" - }, - { - "row": 8, - "text": "" - }, - { - "row": 9, - "text": "" - }, - { - "row": 10, - "text": "" - }, - { - "row": 11, - "text": "" - }, - { - "row": 12, - "text": "" - }, - { - "row": 13, - "text": "" - }, - { - "row": 14, - "text": "" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ] - } -} diff --git a/dogfood/20260321-week3-renderer-complete/snapshot-structured-post-exit.json b/dogfood/20260321-week3-renderer-complete/snapshot-structured-post-exit.json deleted file mode 100644 index 54667969..00000000 --- a/dogfood/20260321-week3-renderer-complete/snapshot-structured-post-exit.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-21T21:48:48.939Z", - "result": { - "format": "structured", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 5, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 21, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "Loading" - }, - { - "row": 1, - "text": "3 items" - }, - { - "row": 2, - "text": "Ready" - }, - { - "row": 3, - "text": "week3 renderer bundle" - }, - { - "row": 4, - "text": "" - }, - { - "row": 5, - "text": "" - }, - { - "row": 6, - "text": "" - }, - { - "row": 7, - "text": "" - }, - { - "row": 8, - "text": "" - }, - { - "row": 9, - "text": "" - }, - { - "row": 10, - "text": "" - }, - { - "row": 11, - "text": "" - }, - { - "row": 12, - "text": "" - }, - { - "row": 13, - "text": "" - }, - { - "row": 14, - "text": "" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ] - } -} diff --git a/dogfood/20260321-week3-renderer-complete/snapshot-text-live.json b/dogfood/20260321-week3-renderer-complete/snapshot-text-live.json deleted file mode 100644 index 1b0b0f6f..00000000 --- a/dogfood/20260321-week3-renderer-complete/snapshot-text-live.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-21T21:48:43.715Z", - "result": { - "format": "text", - "sessionId": "01KM95Y7RFQZ11N60DR204NK1T", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 3, - "cursorCol": 21, - "text": "Loading\n3 items\nReady\nweek3 renderer bundle\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - } -} diff --git a/dogfood/20260321-week3-renderer-complete/type-output.json b/dogfood/20260321-week3-renderer-complete/type-output.json deleted file mode 100644 index a8dbaaa7..00000000 --- a/dogfood/20260321-week3-renderer-complete/type-output.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-21T21:48:40.848Z", - "result": {} -} diff --git a/dogfood/20260321-week3-renderer-complete/wait-regex.json b/dogfood/20260321-week3-renderer-complete/wait-regex.json deleted file mode 100644 index 28df4686..00000000 --- a/dogfood/20260321-week3-renderer-complete/wait-regex.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-21T21:48:41.982Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "week3 renderer bundle", - "capturedAtSeq": 4 - } -} diff --git a/dogfood/20260321-week3-renderer-complete/wait-text.json b/dogfood/20260321-week3-renderer-complete/wait-text.json deleted file mode 100644 index 776c145d..00000000 --- a/dogfood/20260321-week3-renderer-complete/wait-text.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-21T21:48:39.986Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "Ready", - "capturedAtSeq": 2 - } -} diff --git a/dogfood/20260322-dogfood-week4-features/01-home-create.json b/dogfood/20260322-dogfood-week4-features/01-home-create.json deleted file mode 100644 index 035838f0..00000000 --- a/dogfood/20260322-dogfood-week4-features/01-home-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T22:33:07.016Z", - "result": { - "sessionId": "01KMBTWDCCX4PKCK4FVQ5DN7T2" - } -} diff --git a/dogfood/20260322-dogfood-week4-features/02-home-tree.txt b/dogfood/20260322-dogfood-week4-features/02-home-tree.txt deleted file mode 100644 index 52d4758d..00000000 --- a/dogfood/20260322-dogfood-week4-features/02-home-tree.txt +++ /dev/null @@ -1,6 +0,0 @@ -/tmp/tmp.gHWn0YVbwd -/tmp/tmp.gHWn0YVbwd/sessions -/tmp/tmp.gHWn0YVbwd/sessions/01KMBTWDCCX4PKCK4FVQ5DN7T2 -/tmp/tmp.gHWn0YVbwd/sessions/01KMBTWDCCX4PKCK4FVQ5DN7T2/events.jsonl -/tmp/tmp.gHWn0YVbwd/sessions/01KMBTWDCCX4PKCK4FVQ5DN7T2/session.json -/tmp/tmp.gHWn0YVbwd/sessions/01KMBTWDCCX4PKCK4FVQ5DN7T2/host.sock diff --git a/dogfood/20260322-dogfood-week4-features/03-home-list.json b/dogfood/20260322-dogfood-week4-features/03-home-list.json deleted file mode 100644 index 1d3c3c6c..00000000 --- a/dogfood/20260322-dogfood-week4-features/03-home-list.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "list", - "timestamp": "2026-03-22T22:33:08.027Z", - "result": { - "sessions": [ - { - "sessionId": "01KMBTWDCCX4PKCK4FVQ5DN7T2", - "status": "running", - "command": ["npx", "tsx", "test/fixtures/apps/hello-prompt/main.ts"], - "createdAt": "2026-03-22T22:33:06.193Z" - } - ] - } -} diff --git a/dogfood/20260322-dogfood-week4-features/04-home-type-exit.json b/dogfood/20260322-dogfood-week4-features/04-home-type-exit.json deleted file mode 100644 index 45775cc8..00000000 --- a/dogfood/20260322-dogfood-week4-features/04-home-type-exit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-22T22:33:09.250Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/05-home-send-enter.json b/dogfood/20260322-dogfood-week4-features/05-home-send-enter.json deleted file mode 100644 index 571a0548..00000000 --- a/dogfood/20260322-dogfood-week4-features/05-home-send-enter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-22T22:33:10.277Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/06-home-wait-exit.txt b/dogfood/20260322-dogfood-week4-features/06-home-wait-exit.txt deleted file mode 100644 index 21044dc6..00000000 --- a/dogfood/20260322-dogfood-week4-features/06-home-wait-exit.txt +++ /dev/null @@ -1 +0,0 @@ -Process exited with code 0. diff --git a/dogfood/20260322-dogfood-week4-features/07-home-destroy.json b/dogfood/20260322-dogfood-week4-features/07-home-destroy.json deleted file mode 100644 index b7c3b135..00000000 --- a/dogfood/20260322-dogfood-week4-features/07-home-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-22T22:33:12.473Z", - "result": { - "sessionId": "01KMBTWDCCX4PKCK4FVQ5DN7T2", - "destroyed": true - } -} diff --git a/dogfood/20260322-dogfood-week4-features/08-named-create.json b/dogfood/20260322-dogfood-week4-features/08-named-create.json deleted file mode 100644 index b50d61cc..00000000 --- a/dogfood/20260322-dogfood-week4-features/08-named-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T22:33:14.313Z", - "result": { - "sessionId": "01KMBTWMKH1NFA0BJ8E6X0WC54" - } -} diff --git a/dogfood/20260322-dogfood-week4-features/09-named-inspect.json b/dogfood/20260322-dogfood-week4-features/09-named-inspect.json deleted file mode 100644 index 0749e69f..00000000 --- a/dogfood/20260322-dogfood-week4-features/09-named-inspect.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-22T22:33:15.546Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMBTWMKH1NFA0BJ8E6X0WC54", - "createdAt": "2026-03-22T22:33:13.590Z", - "updatedAt": "2026-03-22T22:33:14.210Z", - "status": "running", - "command": ["npx", "tsx", "test/fixtures/apps/hello-prompt/main.ts"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_06577c86a1", - "name": "test-session", - "env": { - "FOO": "bar", - "BAZ": "qux" - }, - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "hostPid": 1857009, - "childPid": 1857022, - "exitCode": null, - "exitSignal": null - } - } -} diff --git a/dogfood/20260322-dogfood-week4-features/10-named-type-exit.json b/dogfood/20260322-dogfood-week4-features/10-named-type-exit.json deleted file mode 100644 index d3c8c862..00000000 --- a/dogfood/20260322-dogfood-week4-features/10-named-type-exit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-22T22:33:16.727Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/11-named-send-enter.json b/dogfood/20260322-dogfood-week4-features/11-named-send-enter.json deleted file mode 100644 index 73e94e3a..00000000 --- a/dogfood/20260322-dogfood-week4-features/11-named-send-enter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-22T22:33:17.922Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/12-named-wait-exit.txt b/dogfood/20260322-dogfood-week4-features/12-named-wait-exit.txt deleted file mode 100644 index 21044dc6..00000000 --- a/dogfood/20260322-dogfood-week4-features/12-named-wait-exit.txt +++ /dev/null @@ -1 +0,0 @@ -Process exited with code 0. diff --git a/dogfood/20260322-dogfood-week4-features/13-named-destroy.json b/dogfood/20260322-dogfood-week4-features/13-named-destroy.json deleted file mode 100644 index c12677a7..00000000 --- a/dogfood/20260322-dogfood-week4-features/13-named-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-22T22:33:20.150Z", - "result": { - "sessionId": "01KMBTWMKH1NFA0BJ8E6X0WC54", - "destroyed": true - } -} diff --git a/dogfood/20260322-dogfood-week4-features/14-file-create.json b/dogfood/20260322-dogfood-week4-features/14-file-create.json deleted file mode 100644 index b6167e7a..00000000 --- a/dogfood/20260322-dogfood-week4-features/14-file-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T22:33:22.045Z", - "result": { - "sessionId": "01KMBTWW202S16N3WQJXXFBZ0H" - } -} diff --git a/dogfood/20260322-dogfood-week4-features/15-file-wait-ready.txt b/dogfood/20260322-dogfood-week4-features/15-file-wait-ready.txt deleted file mode 100644 index 78d6ae3d..00000000 --- a/dogfood/20260322-dogfood-week4-features/15-file-wait-ready.txt +++ /dev/null @@ -1,3 +0,0 @@ -Matched: READY> -Cursor: row 0, col 7 -capturedAtSeq: 0 diff --git a/dogfood/20260322-dogfood-week4-features/16-file-type.json b/dogfood/20260322-dogfood-week4-features/16-file-type.json deleted file mode 100644 index a022bc74..00000000 --- a/dogfood/20260322-dogfood-week4-features/16-file-type.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-22T22:33:24.867Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/17-file-send-enter.json b/dogfood/20260322-dogfood-week4-features/17-file-send-enter.json deleted file mode 100644 index 922b0a7c..00000000 --- a/dogfood/20260322-dogfood-week4-features/17-file-send-enter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-22T22:33:26.066Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/18-file-wait-echo.txt b/dogfood/20260322-dogfood-week4-features/18-file-wait-echo.txt deleted file mode 100644 index 796b3746..00000000 --- a/dogfood/20260322-dogfood-week4-features/18-file-wait-echo.txt +++ /dev/null @@ -1,3 +0,0 @@ -Matched: ECHO: hello from file -Cursor: row 4, col 7 -capturedAtSeq: 6 diff --git a/dogfood/20260322-dogfood-week4-features/19-file-screenshot.json b/dogfood/20260322-dogfood-week4-features/19-file-screenshot.json deleted file mode 100644 index de833999..00000000 --- a/dogfood/20260322-dogfood-week4-features/19-file-screenshot.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-22T22:33:28.805Z", - "result": { - "sessionId": "01KMBTWW202S16N3WQJXXFBZ0H", - "capturedAtSeq": 6, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWW202S16N3WQJXXFBZ0H/artifacts/screenshot-6-reference-dark.png", - "pngSizeBytes": 6870 - } -} diff --git a/dogfood/20260322-dogfood-week4-features/20-file-type-exit.json b/dogfood/20260322-dogfood-week4-features/20-file-type-exit.json deleted file mode 100644 index f006458d..00000000 --- a/dogfood/20260322-dogfood-week4-features/20-file-type-exit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-22T22:33:29.960Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/21-file-send-enter-exit.json b/dogfood/20260322-dogfood-week4-features/21-file-send-enter-exit.json deleted file mode 100644 index 9d68299d..00000000 --- a/dogfood/20260322-dogfood-week4-features/21-file-send-enter-exit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-22T22:33:31.078Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/22-file-wait-exit.txt b/dogfood/20260322-dogfood-week4-features/22-file-wait-exit.txt deleted file mode 100644 index 21044dc6..00000000 --- a/dogfood/20260322-dogfood-week4-features/22-file-wait-exit.txt +++ /dev/null @@ -1 +0,0 @@ -Process exited with code 0. diff --git a/dogfood/20260322-dogfood-week4-features/23-file-destroy.json b/dogfood/20260322-dogfood-week4-features/23-file-destroy.json deleted file mode 100644 index d8955f0d..00000000 --- a/dogfood/20260322-dogfood-week4-features/23-file-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-22T22:33:33.408Z", - "result": { - "sessionId": "01KMBTWW202S16N3WQJXXFBZ0H", - "destroyed": true - } -} diff --git a/dogfood/20260322-dogfood-week4-features/24-cursor-create.json b/dogfood/20260322-dogfood-week4-features/24-cursor-create.json deleted file mode 100644 index 69588489..00000000 --- a/dogfood/20260322-dogfood-week4-features/24-cursor-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T22:33:35.551Z", - "result": { - "sessionId": "01KMBTX94V40WK8FE3SHE5M8ND" - } -} diff --git a/dogfood/20260322-dogfood-week4-features/25-cursor-wait-ready.txt b/dogfood/20260322-dogfood-week4-features/25-cursor-wait-ready.txt deleted file mode 100644 index 78d6ae3d..00000000 --- a/dogfood/20260322-dogfood-week4-features/25-cursor-wait-ready.txt +++ /dev/null @@ -1,3 +0,0 @@ -Matched: READY> -Cursor: row 0, col 7 -capturedAtSeq: 0 diff --git a/dogfood/20260322-dogfood-week4-features/26-cursor-wait-row.json b/dogfood/20260322-dogfood-week4-features/26-cursor-wait-row.json deleted file mode 100644 index 11d5a55d..00000000 --- a/dogfood/20260322-dogfood-week4-features/26-cursor-wait-row.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-22T22:33:38.619Z", - "result": { - "matched": true, - "timedOut": false, - "cursorRow": 0, - "cursorCol": 7, - "capturedAtSeq": 0 - } -} diff --git a/dogfood/20260322-dogfood-week4-features/27-cursor-type-exit.json b/dogfood/20260322-dogfood-week4-features/27-cursor-type-exit.json deleted file mode 100644 index 0f7e4181..00000000 --- a/dogfood/20260322-dogfood-week4-features/27-cursor-type-exit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-22T22:33:39.705Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/28-cursor-send-enter.json b/dogfood/20260322-dogfood-week4-features/28-cursor-send-enter.json deleted file mode 100644 index c0b68477..00000000 --- a/dogfood/20260322-dogfood-week4-features/28-cursor-send-enter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-22T22:33:40.946Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/29-cursor-wait-exit.txt b/dogfood/20260322-dogfood-week4-features/29-cursor-wait-exit.txt deleted file mode 100644 index 21044dc6..00000000 --- a/dogfood/20260322-dogfood-week4-features/29-cursor-wait-exit.txt +++ /dev/null @@ -1 +0,0 @@ -Process exited with code 0. diff --git a/dogfood/20260322-dogfood-week4-features/30-cursor-destroy.json b/dogfood/20260322-dogfood-week4-features/30-cursor-destroy.json deleted file mode 100644 index 309233c5..00000000 --- a/dogfood/20260322-dogfood-week4-features/30-cursor-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-22T22:33:43.227Z", - "result": { - "sessionId": "01KMBTX94V40WK8FE3SHE5M8ND", - "destroyed": true - } -} diff --git a/dogfood/20260322-dogfood-week4-features/31-inspect-missing.json b/dogfood/20260322-dogfood-week4-features/31-inspect-missing.json deleted file mode 100644 index 5b6b4c2a..00000000 --- a/dogfood/20260322-dogfood-week4-features/31-inspect-missing.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ok": false, - "command": "inspect", - "timestamp": "2026-03-22T22:33:44.362Z", - "error": { - "code": "SESSION_NOT_FOUND", - "message": "Session \"nonexistent-session-id\" was not found.", - "retryable": false, - "details": { - "sessionId": "nonexistent-session-id", - "manifestPath": "/tmp/tmp.CUFRxNmZtF/sessions/nonexistent-session-id/session.json" - } - } -} diff --git a/dogfood/20260322-dogfood-week4-features/32-wait-missing-id.txt b/dogfood/20260322-dogfood-week4-features/32-wait-missing-id.txt deleted file mode 100644 index 07b6e9bf..00000000 --- a/dogfood/20260322-dogfood-week4-features/32-wait-missing-id.txt +++ /dev/null @@ -1,17 +0,0 @@ -error: missing required argument 'session-id' - -Usage: agent-terminal wait [options] - -Wait for a session condition - -Options: - --exit Wait for process exit (default: false) - --idle-ms Wait for output idle period - --timeout Maximum wait time in milliseconds (0 for infinite) - --json Emit a JSON command envelope (default: false) - --text Wait for text to appear in rendered output - --regex Wait for regex match in rendered output - --screen-stable-ms Wait for screen to be stable for given ms - --cursor-row Wait for cursor row in rendered output (0-based) - --cursor-col Wait for cursor column in rendered output (0-based) - -h, --help display help for command diff --git a/dogfood/20260322-dogfood-week4-features/33-week4-home-tree.txt b/dogfood/20260322-dogfood-week4-features/33-week4-home-tree.txt deleted file mode 100644 index 0e7cedb1..00000000 --- a/dogfood/20260322-dogfood-week4-features/33-week4-home-tree.txt +++ /dev/null @@ -1,14 +0,0 @@ -/tmp/tmp.CUFRxNmZtF -/tmp/tmp.CUFRxNmZtF/sessions -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTX94V40WK8FE3SHE5M8ND -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTX94V40WK8FE3SHE5M8ND/events.jsonl -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTX94V40WK8FE3SHE5M8ND/session.json -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWMKH1NFA0BJ8E6X0WC54 -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWMKH1NFA0BJ8E6X0WC54/events.jsonl -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWMKH1NFA0BJ8E6X0WC54/session.json -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWW202S16N3WQJXXFBZ0H -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWW202S16N3WQJXXFBZ0H/events.jsonl -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWW202S16N3WQJXXFBZ0H/session.json -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWW202S16N3WQJXXFBZ0H/artifacts -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWW202S16N3WQJXXFBZ0H/artifacts/screenshot-6-reference-dark.png -/tmp/tmp.CUFRxNmZtF/sessions/01KMBTWW202S16N3WQJXXFBZ0H/artifacts/manifest.json diff --git a/dogfood/20260322-dogfood-week4-features/34-cursor-col-create.json b/dogfood/20260322-dogfood-week4-features/34-cursor-col-create.json deleted file mode 100644 index 74468f2a..00000000 --- a/dogfood/20260322-dogfood-week4-features/34-cursor-col-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T22:34:49.820Z", - "result": { - "sessionId": "01KMBTZHW4XD4PWSFTE2KPMF2Q" - } -} diff --git a/dogfood/20260322-dogfood-week4-features/35-cursor-col-wait-ready.txt b/dogfood/20260322-dogfood-week4-features/35-cursor-col-wait-ready.txt deleted file mode 100644 index 78d6ae3d..00000000 --- a/dogfood/20260322-dogfood-week4-features/35-cursor-col-wait-ready.txt +++ /dev/null @@ -1,3 +0,0 @@ -Matched: READY> -Cursor: row 0, col 7 -capturedAtSeq: 0 diff --git a/dogfood/20260322-dogfood-week4-features/36-cursor-col-wait.json b/dogfood/20260322-dogfood-week4-features/36-cursor-col-wait.json deleted file mode 100644 index 2a9ad761..00000000 --- a/dogfood/20260322-dogfood-week4-features/36-cursor-col-wait.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-22T22:34:52.779Z", - "result": { - "matched": true, - "timedOut": false, - "cursorRow": 0, - "cursorCol": 7, - "capturedAtSeq": 0 - } -} diff --git a/dogfood/20260322-dogfood-week4-features/37-cursor-col-type-exit.json b/dogfood/20260322-dogfood-week4-features/37-cursor-col-type-exit.json deleted file mode 100644 index 04ed7341..00000000 --- a/dogfood/20260322-dogfood-week4-features/37-cursor-col-type-exit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-22T22:34:53.958Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/38-cursor-col-send-enter.json b/dogfood/20260322-dogfood-week4-features/38-cursor-col-send-enter.json deleted file mode 100644 index a6f64df7..00000000 --- a/dogfood/20260322-dogfood-week4-features/38-cursor-col-send-enter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-22T22:34:55.169Z", - "result": {} -} diff --git a/dogfood/20260322-dogfood-week4-features/39-cursor-col-wait-exit.txt b/dogfood/20260322-dogfood-week4-features/39-cursor-col-wait-exit.txt deleted file mode 100644 index 21044dc6..00000000 --- a/dogfood/20260322-dogfood-week4-features/39-cursor-col-wait-exit.txt +++ /dev/null @@ -1 +0,0 @@ -Process exited with code 0. diff --git a/dogfood/20260322-dogfood-week4-features/40-cursor-col-destroy.json b/dogfood/20260322-dogfood-week4-features/40-cursor-col-destroy.json deleted file mode 100644 index 7fcf93f1..00000000 --- a/dogfood/20260322-dogfood-week4-features/40-cursor-col-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-22T22:34:57.474Z", - "result": { - "sessionId": "01KMBTZHW4XD4PWSFTE2KPMF2Q", - "destroyed": true - } -} diff --git a/dogfood/20260322-dogfood-week4-features/artifacts/file-input-screenshot.png b/dogfood/20260322-dogfood-week4-features/artifacts/file-input-screenshot.png deleted file mode 100644 index f44bee1a..00000000 Binary files a/dogfood/20260322-dogfood-week4-features/artifacts/file-input-screenshot.png and /dev/null differ diff --git a/dogfood/20260322-dogfood-week4-features/commands.tsv b/dogfood/20260322-dogfood-week4-features/commands.tsv deleted file mode 100644 index 5c9ac9eb..00000000 --- a/dogfood/20260322-dogfood-week4-features/commands.tsv +++ /dev/null @@ -1,41 +0,0 @@ -label exit_code output_file command -home_create 0 01-home-create.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd create --json npx tsx test/fixtures/apps/hello-prompt/main.ts -home_tree 0 02-home-tree.txt find /tmp/tmp.gHWn0YVbwd -maxdepth 4 -print -home_list 0 03-home-list.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd list --json -home_type_exit 0 04-home-type-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd type 01KMBTWDCCX4PKCK4FVQ5DN7T2 exit --json -home_send_enter 0 05-home-send-enter.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd send-keys 01KMBTWDCCX4PKCK4FVQ5DN7T2 Enter --json -home_wait_exit 0 06-home-wait-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd wait 01KMBTWDCCX4PKCK4FVQ5DN7T2 --exit -home_destroy 0 07-home-destroy.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd destroy 01KMBTWDCCX4PKCK4FVQ5DN7T2 --json -named_create 0 08-named-create.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts create --name test-session --env FOO=bar --env BAZ=qux --term xterm-256color --json npx tsx test/fixtures/apps/hello-prompt/main.ts -named_inspect 0 09-named-inspect.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts inspect 01KMBTWMKH1NFA0BJ8E6X0WC54 --json -named_type_exit 0 10-named-type-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTWMKH1NFA0BJ8E6X0WC54 exit --json -named_send_enter 0 11-named-send-enter.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTWMKH1NFA0BJ8E6X0WC54 Enter --json -named_wait_exit 0 12-named-wait-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTWMKH1NFA0BJ8E6X0WC54 --exit -named_destroy 0 13-named-destroy.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts destroy 01KMBTWMKH1NFA0BJ8E6X0WC54 --json -file_create 0 14-file-create.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts create --json npx tsx test/fixtures/apps/hello-prompt/main.ts -file_wait_ready 0 15-file-wait-ready.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTWW202S16N3WQJXXFBZ0H --text READY\> -file_type 0 16-file-type.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTWW202S16N3WQJXXFBZ0H --file /tmp/dogfood-input.txt --json -file_send_enter 0 17-file-send-enter.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTWW202S16N3WQJXXFBZ0H Enter --json -file_wait_echo 0 18-file-wait-echo.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTWW202S16N3WQJXXFBZ0H --text ECHO:\ hello\ from\ file -file_screenshot 0 19-file-screenshot.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts screenshot 01KMBTWW202S16N3WQJXXFBZ0H --json -file_type_exit 0 20-file-type-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTWW202S16N3WQJXXFBZ0H exit --json -file_send_enter_exit 0 21-file-send-enter-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTWW202S16N3WQJXXFBZ0H Enter --json -file_wait_exit 0 22-file-wait-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTWW202S16N3WQJXXFBZ0H --exit -file_destroy 0 23-file-destroy.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts destroy 01KMBTWW202S16N3WQJXXFBZ0H --json -cursor_create 0 24-cursor-create.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts create --json npx tsx test/fixtures/apps/hello-prompt/main.ts -cursor_wait_ready 0 25-cursor-wait-ready.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTX94V40WK8FE3SHE5M8ND --text READY\> -cursor_wait_row 0 26-cursor-wait-row.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTX94V40WK8FE3SHE5M8ND --cursor-row 0 --timeout 5000 --json -cursor_type_exit 0 27-cursor-type-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTX94V40WK8FE3SHE5M8ND exit --json -cursor_send_enter 0 28-cursor-send-enter.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTX94V40WK8FE3SHE5M8ND Enter --json -cursor_wait_exit 0 29-cursor-wait-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTX94V40WK8FE3SHE5M8ND --exit -cursor_destroy 0 30-cursor-destroy.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts destroy 01KMBTX94V40WK8FE3SHE5M8ND --json -inspect_missing 3 31-inspect-missing.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts inspect nonexistent-session-id --json -wait_missing_id 2 32-wait-missing-id.txt env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait --json -week4_home_tree 0 33-week4-home-tree.txt find /tmp/tmp.CUFRxNmZtF -maxdepth 4 -print -cursor_col_create 0 34-cursor-col-create.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts create --json npx tsx test/fixtures/apps/hello-prompt/main.ts -cursor_col_wait_ready 0 35-cursor-col-wait-ready.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTZHW4XD4PWSFTE2KPMF2Q --text READY\> -cursor_col_wait 0 36-cursor-col-wait.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTZHW4XD4PWSFTE2KPMF2Q --cursor-row 0 --cursor-col 7 --timeout 5000 --json -cursor_col_type_exit 0 37-cursor-col-type-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTZHW4XD4PWSFTE2KPMF2Q exit --json -cursor_col_send_enter 0 38-cursor-col-send-enter.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTZHW4XD4PWSFTE2KPMF2Q Enter --json -cursor_col_wait_exit 0 39-cursor-col-wait-exit.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTZHW4XD4PWSFTE2KPMF2Q --exit -cursor_col_destroy 0 40-cursor-col-destroy.json env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts destroy 01KMBTZHW4XD4PWSFTE2KPMF2Q --json diff --git a/dogfood/20260322-dogfood-week4-features/env.txt b/dogfood/20260322-dogfood-week4-features/env.txt deleted file mode 100644 index 11627b3b..00000000 --- a/dogfood/20260322-dogfood-week4-features/env.txt +++ /dev/null @@ -1,11 +0,0 @@ -week4_home=/tmp/tmp.CUFRxNmZtF -custom_home=/tmp/tmp.gHWn0YVbwd -input_file=/tmp/dogfood-input.txt -pwd=/home/coder/.mux/src/agent-terminal/agent_exec_06577c86a1 -node=v22.19.0 -npm=10.9.3 -home_session_id=01KMBTWDCCX4PKCK4FVQ5DN7T2 -named_session_id=01KMBTWMKH1NFA0BJ8E6X0WC54 -file_session_id=01KMBTWW202S16N3WQJXXFBZ0H -cursor_session_id=01KMBTX94V40WK8FE3SHE5M8ND -cursor_col_session_id=01KMBTZHW4XD4PWSFTE2KPMF2Q diff --git a/dogfood/20260322-dogfood-week4-features/notes.md b/dogfood/20260322-dogfood-week4-features/notes.md deleted file mode 100644 index 146c3e89..00000000 --- a/dogfood/20260322-dogfood-week4-features/notes.md +++ /dev/null @@ -1,67 +0,0 @@ -# Week 4 CLI features dogfood - -## Outcome - -- `--home` worked: the created session appeared under the custom home and `list --json` returned it. -- `--env` and `--name` worked: `inspect --json` showed `name=test-session`, env keys `FOO` and `BAZ`, and `term=xterm-256color`. -- `type --file` worked and `wait --text 'ECHO: hello from file'` matched. -- `wait --cursor-row` worked with `cursorRow=0` and `cursorCol=7`. -- Follow-up `wait --cursor-row 0 --cursor-col 7` also matched successfully. -- Exit codes matched expectations: `inspect nonexistent-session-id` exited 3 and `wait --json` without a session id exited 2. - -## Specific findings - -1. **`--home`**: Passed. The isolated custom home contained `sessions/01KMBTWDCCX4PKCK4FVQ5DN7T2/session.json` and `events.jsonl`. -2. **`--env` / `--name`**: Passed. Manifest fields persisted in `inspect` output. -3. **`--file`**: Passed. The screenshot shows the typed file text echoed back. Note: because the file was created with `echo`, it included a trailing newline; the fixture therefore processed an extra blank line after the explicit `Enter` key. -4. **`--cursor-row` / `--cursor-col`**: Passed. `cursor-row` matched row 0; follow-up `cursor-row + cursor-col` matched row 0 / col 7. -5. **Exit codes**: Passed. Missing session returned `SESSION_NOT_FOUND` with process exit 3; missing required arg returned usage text and process exit 2. - -## Notable non-blocking issue - -- `npm ci` succeeded but emitted an `EBADENGINE` warning because the workspace runtime was Node 22.19.0 while `package.json` requires Node >=24 <25. This did not block the CLI dogfood runs. - -## Commands - -| Label | Exit | Output | Command | -| ----------------------- | ---: | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `home_create` | 0 | `01-home-create.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd create --json npx tsx test/fixtures/apps/hello-prompt/main.ts` | -| `home_tree` | 0 | `02-home-tree.txt` | `find /tmp/tmp.gHWn0YVbwd -maxdepth 4 -print` | -| `home_list` | 0 | `03-home-list.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd list --json` | -| `home_type_exit` | 0 | `04-home-type-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd type 01KMBTWDCCX4PKCK4FVQ5DN7T2 exit --json` | -| `home_send_enter` | 0 | `05-home-send-enter.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd send-keys 01KMBTWDCCX4PKCK4FVQ5DN7T2 Enter --json` | -| `home_wait_exit` | 0 | `06-home-wait-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd wait 01KMBTWDCCX4PKCK4FVQ5DN7T2 --exit` | -| `home_destroy` | 0 | `07-home-destroy.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts --home /tmp/tmp.gHWn0YVbwd destroy 01KMBTWDCCX4PKCK4FVQ5DN7T2 --json` | -| `named_create` | 0 | `08-named-create.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts create --name test-session --env FOO=bar --env BAZ=qux --term xterm-256color --json npx tsx test/fixtures/apps/hello-prompt/main.ts` | -| `named_inspect` | 0 | `09-named-inspect.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts inspect 01KMBTWMKH1NFA0BJ8E6X0WC54 --json` | -| `named_type_exit` | 0 | `10-named-type-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTWMKH1NFA0BJ8E6X0WC54 exit --json` | -| `named_send_enter` | 0 | `11-named-send-enter.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTWMKH1NFA0BJ8E6X0WC54 Enter --json` | -| `named_wait_exit` | 0 | `12-named-wait-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTWMKH1NFA0BJ8E6X0WC54 --exit` | -| `named_destroy` | 0 | `13-named-destroy.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts destroy 01KMBTWMKH1NFA0BJ8E6X0WC54 --json` | -| `file_create` | 0 | `14-file-create.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts create --json npx tsx test/fixtures/apps/hello-prompt/main.ts` | -| `file_wait_ready` | 0 | `15-file-wait-ready.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTWW202S16N3WQJXXFBZ0H --text READY\>` | -| `file_type` | 0 | `16-file-type.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTWW202S16N3WQJXXFBZ0H --file /tmp/dogfood-input.txt --json` | -| `file_send_enter` | 0 | `17-file-send-enter.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTWW202S16N3WQJXXFBZ0H Enter --json` | -| `file_wait_echo` | 0 | `18-file-wait-echo.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTWW202S16N3WQJXXFBZ0H --text ECHO:\ hello\ from\ file` | -| `file_screenshot` | 0 | `19-file-screenshot.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts screenshot 01KMBTWW202S16N3WQJXXFBZ0H --json` | -| `file_type_exit` | 0 | `20-file-type-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTWW202S16N3WQJXXFBZ0H exit --json` | -| `file_send_enter_exit` | 0 | `21-file-send-enter-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTWW202S16N3WQJXXFBZ0H Enter --json` | -| `file_wait_exit` | 0 | `22-file-wait-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTWW202S16N3WQJXXFBZ0H --exit` | -| `file_destroy` | 0 | `23-file-destroy.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts destroy 01KMBTWW202S16N3WQJXXFBZ0H --json` | -| `cursor_create` | 0 | `24-cursor-create.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts create --json npx tsx test/fixtures/apps/hello-prompt/main.ts` | -| `cursor_wait_ready` | 0 | `25-cursor-wait-ready.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTX94V40WK8FE3SHE5M8ND --text READY\>` | -| `cursor_wait_row` | 0 | `26-cursor-wait-row.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTX94V40WK8FE3SHE5M8ND --cursor-row 0 --timeout 5000 --json` | -| `cursor_type_exit` | 0 | `27-cursor-type-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTX94V40WK8FE3SHE5M8ND exit --json` | -| `cursor_send_enter` | 0 | `28-cursor-send-enter.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTX94V40WK8FE3SHE5M8ND Enter --json` | -| `cursor_wait_exit` | 0 | `29-cursor-wait-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTX94V40WK8FE3SHE5M8ND --exit` | -| `cursor_destroy` | 0 | `30-cursor-destroy.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts destroy 01KMBTX94V40WK8FE3SHE5M8ND --json` | -| `inspect_missing` | 3 | `31-inspect-missing.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts inspect nonexistent-session-id --json` | -| `wait_missing_id` | 2 | `32-wait-missing-id.txt` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait --json` | -| `week4_home_tree` | 0 | `33-week4-home-tree.txt` | `find /tmp/tmp.CUFRxNmZtF -maxdepth 4 -print` | -| `cursor_col_create` | 0 | `34-cursor-col-create.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts create --json npx tsx test/fixtures/apps/hello-prompt/main.ts` | -| `cursor_col_wait_ready` | 0 | `35-cursor-col-wait-ready.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTZHW4XD4PWSFTE2KPMF2Q --text READY\>` | -| `cursor_col_wait` | 0 | `36-cursor-col-wait.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTZHW4XD4PWSFTE2KPMF2Q --cursor-row 0 --cursor-col 7 --timeout 5000 --json` | -| `cursor_col_type_exit` | 0 | `37-cursor-col-type-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts type 01KMBTZHW4XD4PWSFTE2KPMF2Q exit --json` | -| `cursor_col_send_enter` | 0 | `38-cursor-col-send-enter.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts send-keys 01KMBTZHW4XD4PWSFTE2KPMF2Q Enter --json` | -| `cursor_col_wait_exit` | 0 | `39-cursor-col-wait-exit.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts wait 01KMBTZHW4XD4PWSFTE2KPMF2Q --exit` | -| `cursor_col_destroy` | 0 | `40-cursor-col-destroy.json` | `env AGENT_TERMINAL_HOME=/tmp/tmp.CUFRxNmZtF npx tsx src/cli/main.ts destroy 01KMBTZHW4XD4PWSFTE2KPMF2Q --json` | diff --git a/dogfood/20260322-global-cli-context/create.json b/dogfood/20260322-global-cli-context/create.json deleted file mode 100644 index 8a4c53d0..00000000 --- a/dogfood/20260322-global-cli-context/create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T18:43:55.196Z", - "result": { - "sessionId": "01KMBDRQZ7V2JSGYSB1HJZHYP0" - } -} diff --git a/dogfood/20260322-global-cli-context/notes.md b/dogfood/20260322-global-cli-context/notes.md deleted file mode 100644 index 821b3edd..00000000 --- a/dogfood/20260322-global-cli-context/notes.md +++ /dev/null @@ -1,24 +0,0 @@ -# CLI context / exit code smoke test - -Commands exercised in a replayable terminal capture (`transcript.log` + `timing.log`): - -1. `node --import tsx ./src/cli/main.ts --no-color version` -2. `AGENT_TERMINAL_HOME= node --import tsx ./src/cli/main.ts --home create --json -- /bin/sh -c 'exec cat'` -3. `AGENT_TERMINAL_HOME= node --import tsx ./src/cli/main.ts --home inspect ` -4. `AGENT_TERMINAL_HOME= node --import tsx ./src/cli/main.ts --home list` -5. `AGENT_TERMINAL_HOME= node --import tsx ./src/cli/main.ts inspect missing-session --json` -6. `AGENT_TERMINAL_HOME= node --import tsx ./src/cli/main.ts --home destroy --force --json` - -Observed results: - -- `--no-color version` emitted plain human-readable text with no ANSI escapes. -- `--home` created and inspected a session under the override home, despite `AGENT_TERMINAL_HOME` pointing elsewhere. -- `inspect missing-session --json` returned `SESSION_NOT_FOUND` with process exit code `3`. - -Reviewer artifacts: - -- `smoke-1-version-create.svg` -- `smoke-2-inspect-list.svg` -- `smoke-3-error-exitcode.svg` -- `transcript.log` -- `timing.log` diff --git a/dogfood/20260322-global-cli-context/run-smoke.sh b/dogfood/20260322-global-cli-context/run-smoke.sh deleted file mode 100755 index 0da606b5..00000000 --- a/dogfood/20260322-global-cli-context/run-smoke.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -DOGFOOD_DIR=${DOGFOOD_DIR:?} -CLI=(node --import tsx ./src/cli/main.ts) -ENV_HOME=$(mktemp -d) -OVERRIDE_HOME=$(mktemp -d) -SESSION_ID='' -trap 'if [ -n "$SESSION_ID" ]; then AGENT_TERMINAL_HOME="$OVERRIDE_HOME" "${CLI[@]}" destroy "$SESSION_ID" --force --json >/dev/null 2>&1 || true; fi; rm -rf "$ENV_HOME" "$OVERRIDE_HOME"' EXIT - -printf '$ %q ' "${CLI[@]}" -printf -- '--no-color version\n' -"${CLI[@]}" --no-color version -printf '\n' - -printf '$ AGENT_TERMINAL_HOME=%q ' "$ENV_HOME" -printf '%q ' "${CLI[@]}" -printf -- '--home %q create --json -- /bin/sh -c %q\n' "$OVERRIDE_HOME" 'exec cat' -AGENT_TERMINAL_HOME="$ENV_HOME" "${CLI[@]}" --home "$OVERRIDE_HOME" create --json -- /bin/sh -c 'exec cat' | tee "$DOGFOOD_DIR/create.json" -SESSION_ID=$(node -e "const fs=require('fs');process.stdout.write(JSON.parse(fs.readFileSync(process.argv[1],'utf8')).result.sessionId)" "$DOGFOOD_DIR/create.json") -printf 'Created session: %s\n\n' "$SESSION_ID" - -printf '$ AGENT_TERMINAL_HOME=%q ' "$ENV_HOME" -printf '%q ' "${CLI[@]}" -printf -- '--home %q inspect %q\n' "$OVERRIDE_HOME" "$SESSION_ID" -AGENT_TERMINAL_HOME="$ENV_HOME" "${CLI[@]}" --home "$OVERRIDE_HOME" inspect "$SESSION_ID" -printf '\n' - -printf '$ AGENT_TERMINAL_HOME=%q ' "$ENV_HOME" -printf '%q ' "${CLI[@]}" -printf -- '--home %q list\n' "$OVERRIDE_HOME" -AGENT_TERMINAL_HOME="$ENV_HOME" "${CLI[@]}" --home "$OVERRIDE_HOME" list -printf '\n' - -printf '$ AGENT_TERMINAL_HOME=%q ' "$ENV_HOME" -printf '%q ' "${CLI[@]}" -printf -- 'inspect missing-session --json; echo EXIT:$?\n' -set +e -AGENT_TERMINAL_HOME="$ENV_HOME" "${CLI[@]}" inspect missing-session --json -STATUS=$? -set -e -printf 'EXIT:%s\n\n' "$STATUS" - -printf '$ AGENT_TERMINAL_HOME=%q ' "$ENV_HOME" -printf '%q ' "${CLI[@]}" -printf -- '--home %q destroy %q --force --json\n' "$OVERRIDE_HOME" "$SESSION_ID" -AGENT_TERMINAL_HOME="$ENV_HOME" "${CLI[@]}" --home "$OVERRIDE_HOME" destroy "$SESSION_ID" --force --json -printf '\n' - -cat < "$DOGFOOD_DIR/summary.txt" -version: ok -create_home_override: $OVERRIDE_HOME -create_env_home: $ENV_HOME -session_id: $SESSION_ID -missing_session_exit: $STATUS -SUMMARY diff --git a/dogfood/20260322-global-cli-context/smoke-1-version-create.svg b/dogfood/20260322-global-cli-context/smoke-1-version-create.svg deleted file mode 100644 index 18b174bd..00000000 --- a/dogfood/20260322-global-cli-context/smoke-1-version-create.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -agent-terminal smoke test -$ node $ --import $ tsx $ ./src/cli/main.ts --no-color version -agent-terminal 0.1.0 -protocol 0.1.0 -runtime v22.19.0 (linux/x64) - -$ AGENT_TERMINAL_HOME=/tmp/tmp.EOiERdKuQW node --import tsx ./src/cli/main.ts --home /tmp/tmp.i1eOhh8iQ2 create --json -- /bin/sh -c exec\ cat -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T18:43:55.196Z", - "result": { - "sessionId": "01KMBDRQZ7V2JSGYSB1HJZHYP0" - } -} -Created session: 01KMBDRQZ7V2JSGYSB1HJZHYP0 - \ No newline at end of file diff --git a/dogfood/20260322-global-cli-context/smoke-2-inspect-list.svg b/dogfood/20260322-global-cli-context/smoke-2-inspect-list.svg deleted file mode 100644 index 4a37189b..00000000 --- a/dogfood/20260322-global-cli-context/smoke-2-inspect-list.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -agent-terminal smoke test -$ AGENT_TERMINAL_HOME=/tmp/tmp.EOiERdKuQW node --import tsx ./src/cli/main.ts --home /tmp/tmp.i1eOhh8iQ2 inspect 01KMBDRQZ7V2JSGYSB1HJZHYP0 -Session ID: 01KMBDRQZ7V2JSGYSB1HJZHYP0 -Status: running -Command: /bin/sh -c exec cat -Working Directory: /home/coder/.mux/src/agent-terminal/agent_plan_45b0e74e24 -Size: 80x24 -Created At: 2026-03-22T18:43:54.473Z -Updated At: 2026-03-22T18:43:55.116Z -Host PID: 1198712 -Child PID: 1198738 -Exit Code: - -Exit Signal: - - -$ AGENT_TERMINAL_HOME=/tmp/tmp.EOiERdKuQW node --import tsx ./src/cli/main.ts --home /tmp/tmp.i1eOhh8iQ2 list -01KMBDRQZ7V2JSGYSB1HJZHYP0 running /bin/sh -c exec cat - - \ No newline at end of file diff --git a/dogfood/20260322-global-cli-context/smoke-3-error-exitcode.svg b/dogfood/20260322-global-cli-context/smoke-3-error-exitcode.svg deleted file mode 100644 index 466ade78..00000000 --- a/dogfood/20260322-global-cli-context/smoke-3-error-exitcode.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - -agent-terminal smoke test -$ AGENT_TERMINAL_HOME=/tmp/tmp.EOiERdKuQW node --import tsx ./src/cli/main.ts inspect missing-session --json; echo EXIT:$? -{ - "ok": false, - "command": "inspect", - "timestamp": "2026-03-22T18:43:57.206Z", - "error": { - "code": "SESSION_NOT_FOUND", - "message": "Session \"missing-session\" was not found.", - "retryable": false, - "details": { - "sessionId": "missing-session", - "manifestPath": "/tmp/tmp.EOiERdKuQW/sessions/missing-session/session.json" - } - } -} -EXIT:3 - \ No newline at end of file diff --git a/dogfood/20260322-global-cli-context/summary.txt b/dogfood/20260322-global-cli-context/summary.txt deleted file mode 100644 index 1e1bdac7..00000000 --- a/dogfood/20260322-global-cli-context/summary.txt +++ /dev/null @@ -1,5 +0,0 @@ -version: ok -create_home_override: /tmp/tmp.i1eOhh8iQ2 -create_env_home: /tmp/tmp.EOiERdKuQW -session_id: 01KMBDRQZ7V2JSGYSB1HJZHYP0 -missing_session_exit: 3 diff --git a/dogfood/20260322-week4-cli-parity/00-list-empty.json b/dogfood/20260322-week4-cli-parity/00-list-empty.json deleted file mode 100644 index 124de737..00000000 --- a/dogfood/20260322-week4-cli-parity/00-list-empty.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "list", - "timestamp": "2026-03-22T20:38:24.043Z", - "result": { - "sessions": [] - } -} diff --git a/dogfood/20260322-week4-cli-parity/01-create.json b/dogfood/20260322-week4-cli-parity/01-create.json deleted file mode 100644 index 7ebe9201..00000000 --- a/dogfood/20260322-week4-cli-parity/01-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T20:38:25.609Z", - "result": { - "sessionId": "01KMBMAD8A2SVYXCAZR7MW8RT7" - } -} diff --git a/dogfood/20260322-week4-cli-parity/02-inspect.json b/dogfood/20260322-week4-cli-parity/02-inspect.json deleted file mode 100644 index 67b7db81..00000000 --- a/dogfood/20260322-week4-cli-parity/02-inspect.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-22T20:38:26.264Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMBMAD8A2SVYXCAZR7MW8RT7", - "createdAt": "2026-03-22T20:38:24.781Z", - "updatedAt": "2026-03-22T20:38:25.545Z", - "status": "running", - "command": [ - "node", - "--import", - "tsx", - "test/fixtures/apps/hello-prompt/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_6ff11409cb", - "name": "cli-parity-test", - "env": { - "FOO": "bar", - "BAZ": "qux" - }, - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "hostPid": 1697349, - "childPid": 1697383, - "exitCode": null, - "exitSignal": null - } - } -} diff --git a/dogfood/20260322-week4-cli-parity/03-list.json b/dogfood/20260322-week4-cli-parity/03-list.json deleted file mode 100644 index 709bf325..00000000 --- a/dogfood/20260322-week4-cli-parity/03-list.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "list", - "timestamp": "2026-03-22T20:38:26.969Z", - "result": { - "sessions": [ - { - "sessionId": "01KMBMAD8A2SVYXCAZR7MW8RT7", - "status": "running", - "command": [ - "node", - "--import", - "tsx", - "test/fixtures/apps/hello-prompt/main.ts" - ], - "createdAt": "2026-03-22T20:38:24.781Z" - } - ] - } -} diff --git a/dogfood/20260322-week4-cli-parity/04-wait-idle.json b/dogfood/20260322-week4-cli-parity/04-wait-idle.json deleted file mode 100644 index 40503d19..00000000 --- a/dogfood/20260322-week4-cli-parity/04-wait-idle.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-22T20:38:28.174Z", - "result": { - "timedOut": false - } -} diff --git a/dogfood/20260322-week4-cli-parity/05-type-file.json b/dogfood/20260322-week4-cli-parity/05-type-file.json deleted file mode 100644 index 223e3885..00000000 --- a/dogfood/20260322-week4-cli-parity/05-type-file.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-22T20:38:28.818Z", - "result": {} -} diff --git a/dogfood/20260322-week4-cli-parity/06-send-enter.json b/dogfood/20260322-week4-cli-parity/06-send-enter.json deleted file mode 100644 index 86368705..00000000 --- a/dogfood/20260322-week4-cli-parity/06-send-enter.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-22T20:38:29.515Z", - "result": {} -} diff --git a/dogfood/20260322-week4-cli-parity/07-wait-echo.json b/dogfood/20260322-week4-cli-parity/07-wait-echo.json deleted file mode 100644 index 26991003..00000000 --- a/dogfood/20260322-week4-cli-parity/07-wait-echo.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-22T20:38:30.760Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "hello from file", - "cursorRow": 4, - "cursorCol": 7, - "capturedAtSeq": 5 - } -} diff --git a/dogfood/20260322-week4-cli-parity/08-snapshot.json b/dogfood/20260322-week4-cli-parity/08-snapshot.json deleted file mode 100644 index 5982814c..00000000 --- a/dogfood/20260322-week4-cli-parity/08-snapshot.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-22T20:38:31.486Z", - "result": { - "format": "text", - "sessionId": "01KMBMAD8A2SVYXCAZR7MW8RT7", - "capturedAtSeq": 5, - "cols": 80, - "rows": 24, - "cursorRow": 4, - "cursorCol": 7, - "text": "READY> hello from file\nECHO: hello from file\nREADY>\nECHO:\nREADY>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - } -} diff --git a/dogfood/20260322-week4-cli-parity/09-wait-cursor.json b/dogfood/20260322-week4-cli-parity/09-wait-cursor.json deleted file mode 100644 index 48135194..00000000 --- a/dogfood/20260322-week4-cli-parity/09-wait-cursor.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-22T20:38:32.415Z", - "result": { - "matched": true, - "timedOut": false, - "cursorRow": 4, - "cursorCol": 7, - "capturedAtSeq": 5 - } -} diff --git a/dogfood/20260322-week4-cli-parity/10-destroy.json b/dogfood/20260322-week4-cli-parity/10-destroy.json deleted file mode 100644 index a73a6ac6..00000000 --- a/dogfood/20260322-week4-cli-parity/10-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-22T20:38:38.061Z", - "result": { - "sessionId": "01KMBMAD8A2SVYXCAZR7MW8RT7", - "destroyed": true - } -} diff --git a/dogfood/20260322-week4-cli-parity/index.md b/dogfood/20260322-week4-cli-parity/index.md deleted file mode 100644 index 4d7c5dbc..00000000 --- a/dogfood/20260322-week4-cli-parity/index.md +++ /dev/null @@ -1,27 +0,0 @@ -# Week 4 CLI parity proof bundle index - -This directory contains the 2026-03-22 CLI parity proof bundle for `dogfood/20260322-week4-cli-parity/`. - -## File inventory - -- `00-list-empty.json` -- `01-create.json` -- `02-inspect.json` -- `03-list.json` -- `04-wait-idle.json` -- `05-type-file.json` -- `06-send-enter.json` -- `07-wait-echo.json` -- `08-snapshot.json` -- `09-wait-cursor.json` -- `10-destroy.json` -- `index.md` -- `notes.md` - -## Quick review order - -1. Read `notes.md` for the scenario summary and limitations. -2. Confirm `00-list-empty.json` shows an empty isolated home. -3. Confirm `01-create.json`, `02-inspect.json`, and `03-list.json` cover create-time options plus isolated-home session discovery. -4. Confirm `05-type-file.json`, `07-wait-echo.json`, `08-snapshot.json`, and `09-wait-cursor.json` cover file input plus cursor-aware waiting. -5. Confirm `10-destroy.json` shows cleanup completed. diff --git a/dogfood/20260322-week4-cli-parity/notes.md b/dogfood/20260322-week4-cli-parity/notes.md deleted file mode 100644 index 71e46b30..00000000 --- a/dogfood/20260322-week4-cli-parity/notes.md +++ /dev/null @@ -1,73 +0,0 @@ -# Week 4 CLI parity dogfood notes - -- **Date:** 2026-03-22 -- **Bundle:** `dogfood/20260322-week4-cli-parity/` -- **CLI entrypoint:** `node --import tsx ./src/cli/main.ts` -- **Fixture:** `test/fixtures/apps/hello-prompt/main.ts` -- **Session ID:** `01KMBMAD8A2SVYXCAZR7MW8RT7` -- **Isolated home:** `/tmp/agent-terminal-week4-cli-parity-CsrjVz` -- **Runtime:** Node `v22.19.0`, npm `10.9.3`, shell flag exercised as `--shell /bin/bash` -- **Install prerequisite used:** `npm ci --ignore-scripts` - -## Scenario summary - -This bundle captures an end-to-end CLI parity run for the Week 4 feature slice: - -- explicit `--home` isolation for every CLI command -- `create` with `--name`, `--term`, `--env`, and `--shell` -- file-based input via `type --file` -- readiness via `wait --idle-ms` -- text wait via `wait --text` -- cursor wait via `wait --cursor-row` and `--cursor-col` -- cleanup via `destroy --force` - -I checked CLI help before the run to confirm the relevant flags exist: - -- top-level help exposes `--home` -- `create --help` exposes `--shell`, `--env`, `--term`, and `--name` -- `type --help` exposes `--file` -- `wait --help` exposes `--cursor-row` and `--cursor-col` - -Because the feature under test is the explicit `--home` flag, I used `--home ` on every command rather than relying only on `AGENT_TERMINAL_HOME`. - -## Reviewer guide - -| File | Proof provided | -| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `00-list-empty.json` | The fresh `--home` directory starts empty (`sessions: []`), proving isolation from any pre-existing default home state. | -| `01-create.json` | Session creation succeeded while explicitly passing `--name cli-parity-test`, `--term xterm-256color`, `--env FOO=bar`, `--env BAZ=qux`, `--shell /bin/bash`, and `--home `. | -| `02-inspect.json` | The live session manifest records the expected fixture command plus `name`, `env`, and `term` values. | -| `03-list.json` | Listing against the same isolated home returns exactly one live session, matching the created session ID. | -| `04-wait-idle.json` | `wait --idle-ms 500 --timeout 10000` completed without timing out, showing the `hello-prompt` fixture reached an idle ready state. | -| `05-type-file.json` | `type --file` accepted file-based input from a temp file containing `hello from file\n`. | -| `06-send-enter.json` | `send-keys Enter` succeeded against the live session. | -| `07-wait-echo.json` | `wait --text "hello from file"` matched in rendered output at sequence 5. | -| `08-snapshot.json` | The text snapshot captures the visible transcript and reports cursor position `row 4`, `col 7`. | -| `09-wait-cursor.json` | `wait --cursor-row 4 --cursor-col 7` matched successfully, proving cursor-based waits work against rendered output. | -| `10-destroy.json` | The session was destroyed cleanly after evidence capture. | - -## Verification claims - -1. **`--home` isolation worked end-to-end.** `00-list-empty.json` begins with zero sessions, while `03-list.json` shows the created session under the same isolated home, demonstrating the run was scoped to a dedicated temp home. -2. **Create options were exercised successfully.** `01-create.json` shows create succeeded, and `02-inspect.json` confirms the resulting session manifest preserved the requested `name`, `env`, and `term` values while launching the `hello-prompt` fixture. -3. **File-based input worked through the CLI.** `05-type-file.json` succeeded and `07-wait-echo.json` later matched `hello from file`, proving the file-backed typed input reached the child process. -4. **Cursor waits worked with actual rendered state.** `08-snapshot.json` reported cursor position `(4, 7)`, and `09-wait-cursor.json` matched that exact row/column tuple. -5. **Lifecycle cleanup completed.** `10-destroy.json` reports the session was destroyed after the proof sequence finished. - -## Issues / limitations encountered - -- Running the task-mandated `npm ci --ignore-scripts` left `node-pty` without a built native addon in this workspace, so the CLI could not start until I manually rebuilt `node_modules/node-pty` with `node-gyp`. -- The workspace runtime was Node `v22.19.0`, while `package.json` declares `>=24.0.0 <25`. After rebuilding `node-pty` for the active runtime, the CLI commands in this bundle executed successfully. -- The requested temp input file intentionally contained a trailing newline (`hello from file\n`). As a result, `type --file` submitted one completed line before `06-send-enter.json` added an extra Enter; the snapshot therefore shows both `ECHO: hello from file` and a later blank `ECHO:` line. This does not affect the proof that file-based typing and `send-keys` both worked. -- `create --help` confirms that `--shell` is a real flag and `01-create.json` proves the command accepted it, but `inspect` does not persist the shell path when a direct command array is provided. In this scenario the stronger persisted evidence is `name`/`env`/`term`, while shell-path proof is acceptance-by-success plus the preflight help check. - -## Live capture ideas - -This bundle is JSON-only because the task asked specifically for CLI envelopes. In a GUI-capable environment, the same scenario could also capture: - -- a short terminal video from create through destroy -- a screenshot immediately after `07-wait-echo.json` showing the echoed text -- a screenshot immediately after `09-wait-cursor.json` highlighting the cursor resting at row 4, column 7 -- an exported structured snapshot artifact alongside the text snapshot for easier visual diffing - -Those extra artifacts would make review more visual, but the JSON files here are already sufficient to verify the requested CLI parity behavior. diff --git a/dogfood/20260322-week4-failure-recovery/01-create.json b/dogfood/20260322-week4-failure-recovery/01-create.json deleted file mode 100644 index 53461f30..00000000 --- a/dogfood/20260322-week4-failure-recovery/01-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T20:39:09.217Z", - "result": { - "sessionId": "01KMBMBQR0QJ0P5QP9S4NYT8KY" - } -} diff --git a/dogfood/20260322-week4-failure-recovery/02-wait-exit.json b/dogfood/20260322-week4-failure-recovery/02-wait-exit.json deleted file mode 100644 index 12f4bd96..00000000 --- a/dogfood/20260322-week4-failure-recovery/02-wait-exit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-22T20:39:10.069Z", - "result": { - "exitCode": 1, - "timedOut": false - } -} diff --git a/dogfood/20260322-week4-failure-recovery/03-inspect-failed.json b/dogfood/20260322-week4-failure-recovery/03-inspect-failed.json deleted file mode 100644 index 0488bbad..00000000 --- a/dogfood/20260322-week4-failure-recovery/03-inspect-failed.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-22T20:39:10.882Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMBMBQR0QJ0P5QP9S4NYT8KY", - "createdAt": "2026-03-22T20:39:08.292Z", - "updatedAt": "2026-03-22T20:39:10.066Z", - "status": "exited", - "command": [ - "node", - "--import", - "tsx", - "test/fixtures/apps/crash-demo/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_d5eb9348d0", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "hostPid": 1699561, - "childPid": 1699574, - "exitCode": 1, - "exitSignal": null - } - } -} diff --git a/dogfood/20260322-week4-failure-recovery/04-snapshot-post-crash.json b/dogfood/20260322-week4-failure-recovery/04-snapshot-post-crash.json deleted file mode 100644 index 7f34ce7a..00000000 --- a/dogfood/20260322-week4-failure-recovery/04-snapshot-post-crash.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-22T20:39:11.951Z", - "result": { - "format": "text", - "sessionId": "01KMBMBQR0QJ0P5QP9S4NYT8KY", - "capturedAtSeq": 3, - "cols": 80, - "rows": 24, - "cursorRow": 4, - "cursorCol": 0, - "text": "CRASH DEMO START\nPersist this line for post-mortem replay.\nCrash demo will exit with code 1.\nCRASH DEMO EXITING\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - } -} diff --git a/dogfood/20260322-week4-failure-recovery/05-screenshot-post-crash.json b/dogfood/20260322-week4-failure-recovery/05-screenshot-post-crash.json deleted file mode 100644 index 1ecee38d..00000000 --- a/dogfood/20260322-week4-failure-recovery/05-screenshot-post-crash.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-22T20:39:13.333Z", - "result": { - "sessionId": "01KMBMBQR0QJ0P5QP9S4NYT8KY", - "capturedAtSeq": 3, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/agent-terminal-week4-failure-recovery.L38bis/sessions/01KMBMBQR0QJ0P5QP9S4NYT8KY/artifacts/screenshot-3-reference-dark.png", - "pngSizeBytes": 9373, - "rendererBackend": "ghostty-web", - "pixelWidth": 720, - "pixelHeight": 360, - "sha256": "b2c189b253a8ac783c7018ffe588a376f5f8ec19913061cffadf8f96c001363a", - "renderProfileHash": "8d0a5a88a43edf8d21f890f688fa1d09d2c553f34cc1d55141ba973471f95091" - } -} diff --git a/dogfood/20260322-week4-failure-recovery/06-record-asciicast.json b/dogfood/20260322-week4-failure-recovery/06-record-asciicast.json deleted file mode 100644 index f386e4b5..00000000 --- a/dogfood/20260322-week4-failure-recovery/06-record-asciicast.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-22T20:39:18.939Z", - "result": { - "sessionId": "01KMBMBQR0QJ0P5QP9S4NYT8KY", - "format": "asciicast", - "artifactPath": "/tmp/agent-terminal-week4-failure-recovery.L38bis/sessions/01KMBMBQR0QJ0P5QP9S4NYT8KY/artifacts/recording-3-asciicast.cast", - "bytes": 357, - "sha256": "fa6fd80363fdf11ac13dd82672667f2b304ce125f92c8621e72903d82f70f413", - "capturedAtSeq": 3, - "durationMs": 817, - "metadata": { - "width": 80, - "height": 24, - "title": "01KMBMBQR0QJ0P5QP9S4NYT8KY", - "timestamp": 1774211949, - "outputEventCount": 3, - "resizeEventCount": 0, - "markerCount": 0 - } - } -} diff --git a/dogfood/20260322-week4-failure-recovery/07-destroy.json b/dogfood/20260322-week4-failure-recovery/07-destroy.json deleted file mode 100644 index 6a5c9760..00000000 --- a/dogfood/20260322-week4-failure-recovery/07-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-22T20:39:19.732Z", - "result": { - "sessionId": "01KMBMBQR0QJ0P5QP9S4NYT8KY", - "destroyed": true - } -} diff --git a/dogfood/20260322-week4-failure-recovery/index.md b/dogfood/20260322-week4-failure-recovery/index.md deleted file mode 100644 index 1ab8a19b..00000000 --- a/dogfood/20260322-week4-failure-recovery/index.md +++ /dev/null @@ -1,15 +0,0 @@ -# Week 4 failure-recovery bundle index - -Inventory for `dogfood/20260322-week4-failure-recovery/`. - -| File | Description | -| ------------------------------- | --------------------------------------------------------------------------------- | -| `01-create.json` | JSON envelope from session creation against the `crash-demo` fixture. | -| `02-wait-exit.json` | JSON envelope from waiting for the fixture to exit with code `1`. | -| `03-inspect-failed.json` | JSON envelope proving the crashed session persisted in `exited` state. | -| `04-snapshot-post-crash.json` | JSON envelope for the post-crash text snapshot. | -| `05-screenshot-post-crash.json` | JSON envelope for the post-crash screenshot capture. | -| `06-record-asciicast.json` | JSON envelope for the post-crash asciicast export. | -| `07-destroy.json` | JSON envelope for session destruction. | -| `notes.md` | Scenario summary, reviewer guide, verification claims, and live capture commands. | -| `index.md` | File inventory for this proof bundle. | diff --git a/dogfood/20260322-week4-failure-recovery/notes.md b/dogfood/20260322-week4-failure-recovery/notes.md deleted file mode 100644 index b99fb21c..00000000 --- a/dogfood/20260322-week4-failure-recovery/notes.md +++ /dev/null @@ -1,53 +0,0 @@ -# Week 4 failure-recovery proof bundle - -- **Date:** 2026-03-22 -- **Bundle:** `dogfood/20260322-week4-failure-recovery/` -- **Session ID:** `01KMBMBQR0QJ0P5QP9S4NYT8KY` -- **AGENT_TERMINAL_HOME:** `/tmp/agent-terminal-week4-failure-recovery.L38bis` -- **Environment:** Node `v24.14.0` on `Linux 6.8.0-94-generic x86_64 GNU/Linux` - -## Scenario summary - -This bundle proves crash/failure recovery using the `test/fixtures/apps/crash-demo/main.ts` fixture, which prints crash-demo output and exits with code `1` after roughly 800 ms. The captured JSON envelopes show that the session persisted in an `exited` state after the crash, offline replay remained available after the process had already failed, and `destroy --force --json` completed the session lifecycle. - -## Reviewer guide - -| File | Proof | -| ------------------------------- | ---------------------------------------------------------------------------------------- | -| `01-create.json` | Crash session creation succeeded. | -| `02-wait-exit.json` | Captured the crash exit with `exitCode: 1`. | -| `03-inspect-failed.json` | Session persisted in `exited` state with `exitCode: 1`. | -| `04-snapshot-post-crash.json` | Offline replay text snapshot preserved the crash-demo terminal output after failure. | -| `05-screenshot-post-crash.json` | Offline replay screenshot succeeded and recorded a PNG artifact for the crashed session. | -| `06-record-asciicast.json` | Asciicast export preserved the crashed session history after failure. | -| `07-destroy.json` | Destroy completed the lifecycle with `destroyed: true`. | - -## Verification claims - -- The session persisted in `exited` state after the crash rather than disappearing; see `03-inspect-failed.json`. -- Offline replay remained available after the crash; `04-snapshot-post-crash.json` contains the crash-demo text transcript and `05-screenshot-post-crash.json` reports a PNG artifact with `pngSizeBytes: 9373`. -- Recording export remained available after the crash; `06-record-asciicast.json` reports an asciicast artifact path, `bytes: 357`, `durationMs: 817`, and SHA-256 `fa6fd80363fdf11ac13dd82672667f2b304ce125f92c8621e72903d82f70f413`. -- Destroy completed successfully; `07-destroy.json` reports `destroyed: true`. -- No deterministic capture of an intermediate `destroying` state is included here because that state is transient; this bundle documents the successful terminal state instead. - -## Live capture - -Dependency prep before the live run: - -`npm ci --ignore-scripts` - -Commands executed against the crash-demo fixture: - -`AGENT_TERMINAL_HOME=/tmp/agent-terminal-week4-failure-recovery.L38bis node --import tsx ./src/cli/main.ts create --json -- node --import tsx test/fixtures/apps/crash-demo/main.ts` - -`AGENT_TERMINAL_HOME=/tmp/agent-terminal-week4-failure-recovery.L38bis node --import tsx ./src/cli/main.ts wait 01KMBMBQR0QJ0P5QP9S4NYT8KY --exit --timeout 10000 --json` - -`AGENT_TERMINAL_HOME=/tmp/agent-terminal-week4-failure-recovery.L38bis node --import tsx ./src/cli/main.ts inspect 01KMBMBQR0QJ0P5QP9S4NYT8KY --json` - -`AGENT_TERMINAL_HOME=/tmp/agent-terminal-week4-failure-recovery.L38bis node --import tsx ./src/cli/main.ts snapshot 01KMBMBQR0QJ0P5QP9S4NYT8KY --format text --json` - -`AGENT_TERMINAL_HOME=/tmp/agent-terminal-week4-failure-recovery.L38bis node --import tsx ./src/cli/main.ts screenshot 01KMBMBQR0QJ0P5QP9S4NYT8KY --json` - -`AGENT_TERMINAL_HOME=/tmp/agent-terminal-week4-failure-recovery.L38bis node --import tsx ./src/cli/main.ts record export 01KMBMBQR0QJ0P5QP9S4NYT8KY --format asciicast --json` - -`AGENT_TERMINAL_HOME=/tmp/agent-terminal-week4-failure-recovery.L38bis node --import tsx ./src/cli/main.ts destroy 01KMBMBQR0QJ0P5QP9S4NYT8KY --force --json` diff --git a/dogfood/20260322-week4-scrollback-review/01-create.json b/dogfood/20260322-week4-scrollback-review/01-create.json deleted file mode 100644 index 485db50f..00000000 --- a/dogfood/20260322-week4-scrollback-review/01-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T20:37:46.856Z", - "result": { - "sessionId": "01KMBM97GGVVAKKQEJ4ZMYV67J" - } -} diff --git a/dogfood/20260322-week4-scrollback-review/02-wait-exit.json b/dogfood/20260322-week4-scrollback-review/02-wait-exit.json deleted file mode 100644 index 59edd61c..00000000 --- a/dogfood/20260322-week4-scrollback-review/02-wait-exit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-22T20:37:48.217Z", - "result": { - "exitCode": 0, - "timedOut": false - } -} diff --git a/dogfood/20260322-week4-scrollback-review/03-snapshot-viewport.json b/dogfood/20260322-week4-scrollback-review/03-snapshot-viewport.json deleted file mode 100644 index 9b386b85..00000000 --- a/dogfood/20260322-week4-scrollback-review/03-snapshot-viewport.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-22T20:37:49.149Z", - "result": { - "format": "text", - "sessionId": "01KMBM97GGVVAKKQEJ4ZMYV67J", - "capturedAtSeq": 1, - "cols": 80, - "rows": 10, - "cursorRow": 9, - "cursorCol": 0, - "text": "SCROLLBACK DEMO START\nLINE 001 | abcdefghijklmnopqrstuvwxyz\nLINE 002 | abcdefghijklmnopqrstuvwxyz\nLINE 003 | abcdefghijklmnopqrstuvwxyz\nLINE 004 | abcdefghijklmnopqrstuvwxyz\nLINE 005 | abcdefghijklmnopqrstuvwxyz\nLINE 006 | abcdefghijklmnopqrstuvwxyz\nLINE 007 | abcdefghijklmnopqrstuvwxyz\nLINE 008 | abcdefghijklmnopqrstuvwxyz\nLINE 009 | abcdefghijklmnopqrstuvwxyz" - } -} diff --git a/dogfood/20260322-week4-scrollback-review/04-snapshot-scrollback.json b/dogfood/20260322-week4-scrollback-review/04-snapshot-scrollback.json deleted file mode 100644 index 069c07ce..00000000 --- a/dogfood/20260322-week4-scrollback-review/04-snapshot-scrollback.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-22T20:37:50.138Z", - "result": { - "format": "structured", - "sessionId": "01KMBM97GGVVAKKQEJ4ZMYV67J", - "capturedAtSeq": 1, - "cols": 80, - "rows": 10, - "cursorRow": 9, - "cursorCol": 0, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "SCROLLBACK DEMO START" - }, - { - "row": 1, - "text": "LINE 001 | abcdefghijklmnopqrstuvwxyz" - }, - { - "row": 2, - "text": "LINE 002 | abcdefghijklmnopqrstuvwxyz" - }, - { - "row": 3, - "text": "LINE 003 | abcdefghijklmnopqrstuvwxyz" - }, - { - "row": 4, - "text": "LINE 004 | abcdefghijklmnopqrstuvwxyz" - }, - { - "row": 5, - "text": "LINE 005 | abcdefghijklmnopqrstuvwxyz" - }, - { - "row": 6, - "text": "LINE 006 | abcdefghijklmnopqrstuvwxyz" - }, - { - "row": 7, - "text": "LINE 007 | abcdefghijklmnopqrstuvwxyz" - }, - { - "row": 8, - "text": "LINE 008 | abcdefghijklmnopqrstuvwxyz" - }, - { - "row": 9, - "text": "LINE 009 | abcdefghijklmnopqrstuvwxyz" - } - ] - } -} diff --git a/dogfood/20260322-week4-scrollback-review/05-record-asciicast.json b/dogfood/20260322-week4-scrollback-review/05-record-asciicast.json deleted file mode 100644 index 339e1801..00000000 --- a/dogfood/20260322-week4-scrollback-review/05-record-asciicast.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-22T20:37:50.826Z", - "result": { - "sessionId": "01KMBM97GGVVAKKQEJ4ZMYV67J", - "format": "asciicast", - "artifactPath": "/tmp/tmp.IaQz2Y0DK9/sessions/01KMBM97GGVVAKKQEJ4ZMYV67J/artifacts/recording-1-asciicast.cast", - "bytes": 3531, - "sha256": "3790462c5fcfa82646ea2b77d02ee3ca7a3b2fbdac9b3577dd67b58c5353f2cb", - "capturedAtSeq": 1, - "durationMs": 1211, - "metadata": { - "width": 80, - "height": 10, - "title": "01KMBM97GGVVAKKQEJ4ZMYV67J", - "timestamp": 1774211867, - "outputEventCount": 1, - "resizeEventCount": 0, - "markerCount": 0 - } - } -} diff --git a/dogfood/20260322-week4-scrollback-review/06-screenshot.json b/dogfood/20260322-week4-scrollback-review/06-screenshot.json deleted file mode 100644 index c75906d4..00000000 --- a/dogfood/20260322-week4-scrollback-review/06-screenshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-22T20:37:52.001Z", - "result": { - "sessionId": "01KMBM97GGVVAKKQEJ4ZMYV67J", - "capturedAtSeq": 1, - "profileName": "reference-dark", - "cols": 80, - "rows": 10, - "artifactPath": "/tmp/tmp.IaQz2Y0DK9/sessions/01KMBM97GGVVAKKQEJ4ZMYV67J/artifacts/screenshot-1-reference-dark.png", - "pngSizeBytes": 9248, - "rendererBackend": "ghostty-web", - "pixelWidth": 720, - "pixelHeight": 150, - "sha256": "d0a9909416d4db2cc9aeecd1ddd9841da2b3b29d5cd412614f6c87414602b6b0", - "renderProfileHash": "8d0a5a88a43edf8d21f890f688fa1d09d2c553f34cc1d55141ba973471f95091" - } -} diff --git a/dogfood/20260322-week4-scrollback-review/07-destroy.json b/dogfood/20260322-week4-scrollback-review/07-destroy.json deleted file mode 100644 index e4a56425..00000000 --- a/dogfood/20260322-week4-scrollback-review/07-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-22T20:37:57.495Z", - "result": { - "sessionId": "01KMBM97GGVVAKKQEJ4ZMYV67J", - "destroyed": true - } -} diff --git a/dogfood/20260322-week4-scrollback-review/artifacts/recording-1-asciicast.cast b/dogfood/20260322-week4-scrollback-review/artifacts/recording-1-asciicast.cast deleted file mode 100644 index 73c28244..00000000 --- a/dogfood/20260322-week4-scrollback-review/artifacts/recording-1-asciicast.cast +++ /dev/null @@ -1,2 +0,0 @@ -{"version":2,"width":80,"height":10,"timestamp":1774211867,"title":"01KMBM97GGVVAKKQEJ4ZMYV67J","sessionId":"01KMBM97GGVVAKKQEJ4ZMYV67J","env":{"TERM":"xterm-256color"},"toolVersion":"0.1.0"} -[0,"o","SCROLLBACK DEMO START\r\nLINE 001 | abcdefghijklmnopqrstuvwxyz\r\nLINE 002 | abcdefghijklmnopqrstuvwxyz\r\nLINE 003 | abcdefghijklmnopqrstuvwxyz\r\nLINE 004 | abcdefghijklmnopqrstuvwxyz\r\nLINE 005 | abcdefghijklmnopqrstuvwxyz\r\nLINE 006 | abcdefghijklmnopqrstuvwxyz\r\nLINE 007 | abcdefghijklmnopqrstuvwxyz\r\nLINE 008 | abcdefghijklmnopqrstuvwxyz\r\nLINE 009 | abcdefghijklmnopqrstuvwxyz\r\nLINE 010 | abcdefghijklmnopqrstuvwxyz\r\nLINE 011 | abcdefghijklmnopqrstuvwxyz\r\nLINE 012 | abcdefghijklmnopqrstuvwxyz\r\nLINE 013 | abcdefghijklmnopqrstuvwxyz\r\nLINE 014 | abcdefghijklmnopqrstuvwxyz\r\nLINE 015 | abcdefghijklmnopqrstuvwxyz\r\nLINE 016 | abcdefghijklmnopqrstuvwxyz\r\nLINE 017 | abcdefghijklmnopqrstuvwxyz\r\nLINE 018 | abcdefghijklmnopqrstuvwxyz\r\nLINE 019 | abcdefghijklmnopqrstuvwxyz\r\nLINE 020 | abcdefghijklmnopqrstuvwxyz\r\nLINE 021 | abcdefghijklmnopqrstuvwxyz\r\nLINE 022 | abcdefghijklmnopqrstuvwxyz\r\nLINE 023 | abcdefghijklmnopqrstuvwxyz\r\nLINE 024 | abcdefghijklmnopqrstuvwxyz\r\nLINE 025 | abcdefghijklmnopqrstuvwxyz\r\nLINE 026 | abcdefghijklmnopqrstuvwxyz\r\nLINE 027 | abcdefghijklmnopqrstuvwxyz\r\nLINE 028 | abcdefghijklmnopqrstuvwxyz\r\nLINE 029 | abcdefghijklmnopqrstuvwxyz\r\nLINE 030 | abcdefghijklmnopqrstuvwxyz\r\nLINE 031 | abcdefghijklmnopqrstuvwxyz\r\nLINE 032 | abcdefghijklmnopqrstuvwxyz\r\nLINE 033 | abcdefghijklmnopqrstuvwxyz\r\nLINE 034 | abcdefghijklmnopqrstuvwxyz\r\nLINE 035 | abcdefghijklmnopqrstuvwxyz\r\nLINE 036 | abcdefghijklmnopqrstuvwxyz\r\nLINE 037 | abcdefghijklmnopqrstuvwxyz\r\nLINE 038 | abcdefghijklmnopqrstuvwxyz\r\nLINE 039 | abcdefghijklmnopqrstuvwxyz\r\nLINE 040 | abcdefghijklmnopqrstuvwxyz\r\nLINE 041 | abcdefghijklmnopqrstuvwxyz\r\nLINE 042 | abcdefghijklmnopqrstuvwxyz\r\nLINE 043 | abcdefghijklmnopqrstuvwxyz\r\nLINE 044 | abcdefghijklmnopqrstuvwxyz\r\nLINE 045 | abcdefghijklmnopqrstuvwxyz\r\nLINE 046 | abcdefghijklmnopqrstuvwxyz\r\nLINE 047 | abcdefghijklmnopqrstuvwxyz\r\nLINE 048 | abcdefghijklmnopqrstuvwxyz\r\nLINE 049 | abcdefghijklmnopqrstuvwxyz\r\nLINE 050 | abcdefghijklmnopqrstuvwxyz\r\nLINE 051 | abcdefghijklmnopqrstuvwxyz\r\nLINE 052 | abcdefghijklmnopqrstuvwxyz\r\nLINE 053 | abcdefghijklmnopqrstuvwxyz\r\nLINE 054 | abcdefghijklmnopqrstuvwxyz\r\nLINE 055 | abcdefghijklmnopqrstuvwxyz\r\nLINE 056 | abcdefghijklmnopqrstuvwxyz\r\nLINE 057 | abcdefghijklmnopqrstuvwxyz\r\nLINE 058 | abcdefghijklmnopqrstuvwxyz\r\nLINE 059 | abcdefghijklmnopqrstuvwxyz\r\nLINE 060 | abcdefghijklmnopqrstuvwxyz\r\nLINE 061 | abcdefghijklmnopqrstuvwxyz\r\nLINE 062 | abcdefghijklmnopqrstuvwxyz\r\nLINE 063 | abcdefghijklmnopqrstuvwxyz\r\nLINE 064 | abcdefghijklmnopqrstuvwxyz\r\nLINE 065 | abcdefghijklmnopqrstuvwxyz\r\nLINE 066 | abcdefghijklmnopqrstuvwxyz\r\nLINE 067 | abcdefghijklmnopqrstuvwxyz\r\nLINE 068 | abcdefghijklmnopqrstuvwxyz\r\nLINE 069 | abcdefghijklmnopqrstuvwxyz\r\nLINE 070 | abcdefghijklmnopqrstuvwxyz\r\nLINE 071 | abcdefghijklmnopqrstuvwxyz\r\nLINE 072 | abcdefghijklmnopqrstuvwxyz\r\nLINE 073 | abcdefghijklmnopqrstuvwxyz\r\nLINE 074 | abcdefghijklmnopqrstuvwxyz\r\nLINE 075 | abcdefghijklmnopqrstuvwxyz\r\nLINE 076 | abcdefghijklmnopqrstuvwxyz\r\nLINE 077 | abcdefghijklmnopqrstuvwxyz\r\nLINE 078 | abcdefghijklmnopqrstuvwxyz\r\nLINE 079 | abcdefghijklmnopqrstuvwxyz\r\nLINE 080 | abcdefghijklmnopqrstuvwxyz\r\nSCROLLBACK COMPLETE\r\n"] diff --git a/dogfood/20260322-week4-scrollback-review/artifacts/screenshot-1-reference-dark.png b/dogfood/20260322-week4-scrollback-review/artifacts/screenshot-1-reference-dark.png deleted file mode 100644 index 9b5b1d5d..00000000 Binary files a/dogfood/20260322-week4-scrollback-review/artifacts/screenshot-1-reference-dark.png and /dev/null differ diff --git a/dogfood/20260322-week4-scrollback-review/index.md b/dogfood/20260322-week4-scrollback-review/index.md deleted file mode 100644 index 6423e032..00000000 --- a/dogfood/20260322-week4-scrollback-review/index.md +++ /dev/null @@ -1,17 +0,0 @@ -# Week 4 scrollback review bundle index - -This bundle captures the 2026-03-22 live scrollback demo review artifacts. - -## File inventory - -- `01-create.json` -- `02-wait-exit.json` -- `03-snapshot-viewport.json` -- `04-snapshot-scrollback.json` -- `05-record-asciicast.json` -- `06-screenshot.json` -- `07-destroy.json` -- `artifacts/recording-1-asciicast.cast` -- `artifacts/screenshot-1-reference-dark.png` -- `index.md` -- `notes.md` diff --git a/dogfood/20260322-week4-scrollback-review/notes.md b/dogfood/20260322-week4-scrollback-review/notes.md deleted file mode 100644 index 1651d318..00000000 --- a/dogfood/20260322-week4-scrollback-review/notes.md +++ /dev/null @@ -1,64 +0,0 @@ -# 2026-03-22 week4 scrollback review - -## Bundle metadata - -- Date: 2026-03-22 -- Bundle path: `dogfood/20260322-week4-scrollback-review/` -- Workspace: `/home/coder/.mux/src/agent-terminal/agent_exec_1ce545e4ca` -- CLI executable: `node --import tsx ./src/cli/main.ts` -- Fixture: `test/fixtures/apps/scrollback-demo/main.ts` -- Environment: Node v22.19.0, npm 10.9.3, `AGENT_TERMINAL_HOME=/tmp/tmp.IaQz2Y0DK9` -- Session ID: `01KMBM97GGVVAKKQEJ4ZMYV67J` - -## Scenario summary - -This live capture exercises the `scrollback-demo` fixture in a 10-row by 80-column terminal to compare the default viewport-only snapshot path with `--include-scrollback` and to export an asciicast recording. The fixture emits 80 numbered lines (`LINE 001` through `LINE 080`) followed by `SCROLLBACK COMPLETE`, so early lines should have moved into scrollback once the process finishes. - -## Reviewer guide - -| File | What it proves | -| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `01-create.json` | The create command succeeded and returned session `01KMBM97GGVVAKKQEJ4ZMYV67J` for the requested small-viewport run. | -| `02-wait-exit.json` | The fixture exited successfully with `exitCode: 0` and `timedOut: false`. | -| `03-snapshot-viewport.json` | The default text snapshot captured the same first 10 lines of transcript (`SCROLLBACK DEMO START` plus `LINE 001` through `LINE 009`); it did not expose `LINE 080`. | -| `04-snapshot-scrollback.json` | The structured snapshot with `--include-scrollback` returned `visibleLines` only and did not include a populated `scrollbackLines` array. | -| `05-record-asciicast.json` | The asciicast export succeeded, produced a 3531-byte recording, and points at a copied companion cast file under `artifacts/recording-1-asciicast.cast`. | -| `06-screenshot.json` | Screenshot capture succeeded with the `reference-dark` profile; the copied PNG is at `artifacts/screenshot-1-reference-dark.png`. | -| `07-destroy.json` | Session lifecycle cleanup completed with `destroyed: true`. | - -## Example line checks - -Expected for this scenario: - -- `LINE 001` should be historical output once the 80-line fixture completes. -- `LINE 080` should be part of the final viewport. - -Observed in this capture: - -| Line | Expected proof path | Observed result | -| --------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | -| `LINE 001` | scrollback or full-session recording only | Present in `03-snapshot-viewport.json`, `04-snapshot-scrollback.json`, and the asciicast export. | -| `LINE 080` | final viewport plus full-session recording | Confirmed in `artifacts/recording-1-asciicast.cast`, but not present in `03-snapshot-viewport.json` or `04-snapshot-scrollback.json`. | -| `SCROLLBACK COMPLETE` | final output sentinel | Confirmed in `artifacts/recording-1-asciicast.cast`, but not present in the two snapshot JSON outputs. | - -## Verification claims - -- The fixture completed normally: `02-wait-exit.json` reports `exitCode: 0` without timeout. -- Small-terminal geometry is preserved through the proof artifacts: `03-snapshot-viewport.json`, `04-snapshot-scrollback.json`, and `06-screenshot.json` all report `rows: 10` and `cols: 80`. -- The default text snapshot and the structured snapshot with `--include-scrollback` both capture the same initial 10 lines rather than a final scrolled viewport. -- The exported asciicast preserves the full session history, including `LINE 001`, `LINE 080`, and `SCROLLBACK COMPLETE`. -- The copied screenshot PNG and copied asciicast file make the bundle reviewable without depending on the temporary `AGENT_TERMINAL_HOME` path embedded in the raw JSON. - -## Limitations - -- `04-snapshot-scrollback.json` does not contain a `scrollbackLines` field. In this run, the current structured snapshot path did not expose additional scrollback data even when invoked with `--include-scrollback`. -- The two snapshot JSON outputs show the beginning of the transcript instead of a final viewport containing `LINE 080`. This means the current implementation does not yet demonstrate the intended viewport-versus-scrollback distinction for this fixture through the snapshot commands alone. -- `01-create.json` confirms successful session creation but does not echo the requested geometry directly; the 10x80 viewport is verified by the later snapshot and screenshot outputs. -- Because `05-record-asciicast.json` and `06-screenshot.json` store absolute artifact paths under a temporary home directory, this bundle includes copied companion artifacts under `artifacts/` for durable review. - -## Live capture - -1. Installed dependencies with `npm ci --ignore-scripts`. -2. Manually rebuilt `node-pty` for the local Node v22.19.0 runtime after the ignored install scripts left the native module unavailable. -3. Ran the requested `create`, `wait`, `snapshot`, `record export`, `screenshot`, and `destroy` commands against the live `scrollback-demo` fixture using `AGENT_TERMINAL_HOME=/tmp/tmp.IaQz2Y0DK9`. -4. Copied the exported asciicast and screenshot artifacts into `artifacts/` so reviewers can inspect the recording and PNG directly from the repository bundle. diff --git a/dogfood/20260322-week4-unicode-review/01-create.json b/dogfood/20260322-week4-unicode-review/01-create.json deleted file mode 100644 index b3074529..00000000 --- a/dogfood/20260322-week4-unicode-review/01-create.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-22T20:37:55.343Z", - "result": { - "sessionId": "01KMBM9FPEBYVSBBFA0QXG8PNW" - } -} diff --git a/dogfood/20260322-week4-unicode-review/02-wait-ready.json b/dogfood/20260322-week4-unicode-review/02-wait-ready.json deleted file mode 100644 index b13731f7..00000000 --- a/dogfood/20260322-week4-unicode-review/02-wait-ready.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-22T20:37:56.567Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "UNICODE GRID COMPLETE", - "cursorRow": 10, - "cursorCol": 0, - "capturedAtSeq": 0 - } -} diff --git a/dogfood/20260322-week4-unicode-review/03-snapshot.json b/dogfood/20260322-week4-unicode-review/03-snapshot.json deleted file mode 100644 index 6aee3dd2..00000000 --- a/dogfood/20260322-week4-unicode-review/03-snapshot.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-22T20:37:57.531Z", - "result": { - "format": "text", - "sessionId": "01KMBM9FPEBYVSBBFA0QXG8PNW", - "capturedAtSeq": 1, - "cols": 80, - "rows": 24, - "cursorRow": 10, - "cursorCol": 0, - "text": "UNICODE GRID FIXTURE\n\n| LABEL | SAMPLE |\n| ASCII | Hello, World! 0123456789 |\n| BOX | ┌─┐│└┘├┤┬┴┼═║╔╗╚╝ |\n| CJK | 漢字テスト中文日本 |\n| EMOJI | ✓✗★♠♣♥♦⚡☀☁ |\n| AMBIG | αβγδ∑∏∫∂√∞ |\n\nUNICODE GRID COMPLETE\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - } -} diff --git a/dogfood/20260322-week4-unicode-review/04-screenshot.json b/dogfood/20260322-week4-unicode-review/04-screenshot.json deleted file mode 100644 index 0e3ee642..00000000 --- a/dogfood/20260322-week4-unicode-review/04-screenshot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-22T20:37:58.727Z", - "result": { - "sessionId": "01KMBM9FPEBYVSBBFA0QXG8PNW", - "capturedAtSeq": 1, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.a1FNvTyErY/sessions/01KMBM9FPEBYVSBBFA0QXG8PNW/artifacts/screenshot-1-reference-dark.png", - "pngSizeBytes": 18742, - "rendererBackend": "ghostty-web", - "pixelWidth": 720, - "pixelHeight": 360, - "sha256": "7654c1ab784d7daffff5a89b8c81cfd0b3572fd52131c52fa7dab3c397604a69", - "renderProfileHash": "8d0a5a88a43edf8d21f890f688fa1d09d2c553f34cc1d55141ba973471f95091" - } -} diff --git a/dogfood/20260322-week4-unicode-review/05-inspect.json b/dogfood/20260322-week4-unicode-review/05-inspect.json deleted file mode 100644 index 08ca1eb6..00000000 --- a/dogfood/20260322-week4-unicode-review/05-inspect.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-22T20:38:04.368Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMBM9FPEBYVSBBFA0QXG8PNW", - "createdAt": "2026-03-22T20:37:54.514Z", - "updatedAt": "2026-03-22T20:37:56.695Z", - "status": "exited", - "command": [ - "node", - "--import", - "tsx", - "test/fixtures/apps/unicode-grid/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_d0d116ece6", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "hostPid": 1694545, - "childPid": 1694965, - "exitCode": 0, - "exitSignal": null - } - } -} diff --git a/dogfood/20260322-week4-unicode-review/06-destroy.json b/dogfood/20260322-week4-unicode-review/06-destroy.json deleted file mode 100644 index 4cabaa5c..00000000 --- a/dogfood/20260322-week4-unicode-review/06-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-22T20:38:05.026Z", - "result": { - "sessionId": "01KMBM9FPEBYVSBBFA0QXG8PNW", - "destroyed": true - } -} diff --git a/dogfood/20260322-week4-unicode-review/index.md b/dogfood/20260322-week4-unicode-review/index.md deleted file mode 100644 index 08b99417..00000000 --- a/dogfood/20260322-week4-unicode-review/index.md +++ /dev/null @@ -1,10 +0,0 @@ -# 2026-03-22 week4 unicode review bundle inventory - -- `01-create.json` -- `02-wait-ready.json` -- `03-snapshot.json` -- `04-screenshot.json` -- `05-inspect.json` -- `06-destroy.json` -- `index.md` -- `notes.md` diff --git a/dogfood/20260322-week4-unicode-review/notes.md b/dogfood/20260322-week4-unicode-review/notes.md deleted file mode 100644 index 079c1600..00000000 --- a/dogfood/20260322-week4-unicode-review/notes.md +++ /dev/null @@ -1,45 +0,0 @@ -# 2026-03-22 week4 unicode review - -## Bundle metadata - -- **Date:** 2026-03-22 -- **Bundle path:** `dogfood/20260322-week4-unicode-review/` -- **Environment:** Linux x86_64, agent-terminal v0.1.0, CLI runtime Node v24.14.0 -- **AGENT_TERMINAL_HOME:** `/tmp/tmp.a1FNvTyErY` -- **Session ID:** `01KMBM9FPEBYVSBBFA0QXG8PNW` - -## Scenario summary - -This proof bundle captures a live `unicode-grid` fixture run to verify Unicode rendering coverage across: - -- box-drawing glyphs -- CJK text -- emoji/symbol rows -- ambiguous-width mathematical/Greek characters - -The fixture renders labeled rows `ASCII`, `BOX`, `CJK`, `EMOJI`, and `AMBIG`, then emits the sentinel `UNICODE GRID COMPLETE`. - -## Reviewer guide - -| File | Proof | -| -------------------- | ------------------------------------------------------------------------------------- | -| `01-create.json` | Session creation for the `unicode-grid` fixture | -| `02-wait-ready.json` | Sentinel wait succeeded, proving the fixture rendered completely | -| `03-snapshot.json` | Text snapshot containing all five row labels: `ASCII`, `BOX`, `CJK`, `EMOJI`, `AMBIG` | -| `04-screenshot.json` | PNG screenshot capture metadata for visual alignment review | -| `05-inspect.json` | Session metadata, command, terminal geometry, and exited status | -| `06-destroy.json` | Clean lifecycle completion via forced destroy | - -## Verification claims - -1. `02-wait-ready.json` shows `matched: true`, `timedOut: false`, and `matchedText: "UNICODE GRID COMPLETE"`. -2. `03-snapshot.json` contains all five labeled rows: `ASCII`, `BOX`, `CJK`, `EMOJI`, and `AMBIG`. -3. `04-screenshot.json` proves a screenshot PNG was produced for human alignment review at `/tmp/tmp.a1FNvTyErY/sessions/01KMBM9FPEBYVSBBFA0QXG8PNW/artifacts/screenshot-1-reference-dark.png`. -4. `05-inspect.json` shows the fixture command exited with `exitCode: 0`. -5. `06-destroy.json` shows `destroyed: true` for clean teardown. - -The screenshot is the primary human proof for alignment-sensitive rendering because it preserves the rendered grid layout, glyph spacing, and terminal cell alignment in a way text JSON alone cannot. - -## Live capture - -In a GUI-enabled review environment, inspect the PNG referenced by `04-screenshot.json` directly to verify alignment of box-drawing characters, CJK glyph spacing, emoji/symbol cells, and ambiguous-width characters against the surrounding table borders. diff --git a/dogfood/20260323-week5-platform-closure/ci-workflow.png b/dogfood/20260323-week5-platform-closure/ci-workflow.png deleted file mode 100644 index 368f92e8..00000000 Binary files a/dogfood/20260323-week5-platform-closure/ci-workflow.png and /dev/null differ diff --git a/dogfood/20260323-week5-platform-closure/design-index-update.png b/dogfood/20260323-week5-platform-closure/design-index-update.png deleted file mode 100644 index e585f206..00000000 Binary files a/dogfood/20260323-week5-platform-closure/design-index-update.png and /dev/null differ diff --git a/dogfood/20260323-week5-platform-closure/evidence-walkthrough.webm b/dogfood/20260323-week5-platform-closure/evidence-walkthrough.webm deleted file mode 100644 index eb9d1373..00000000 Binary files a/dogfood/20260323-week5-platform-closure/evidence-walkthrough.webm and /dev/null differ diff --git a/dogfood/20260323-week5-platform-closure/notes.md b/dogfood/20260323-week5-platform-closure/notes.md deleted file mode 100644 index 0751ba44..00000000 --- a/dogfood/20260323-week5-platform-closure/notes.md +++ /dev/null @@ -1,80 +0,0 @@ -# Week 5 platform/documentation closure proof bundle - -## Summary - -Lane D completed the Week 5 platform/documentation closeout on 2026-03-23. This proof bundle captures reviewer-facing evidence that the repository now documents its platform tiers, runs tier-1 CI on both Ubuntu and macOS, records the Week 5 outcome in design docs, and honestly reclassifies the remaining gap tracker into shipped vs scaffolded vs future work. - -## Platform tiers - -- **Linux** — Tier-1, CI-tested on `ubuntu-latest` -- **macOS** — Tier-1, CI-tested on `macos-latest` -- **Windows** — Tier-2, not CI-tested - -## CI changes - -- Added a `quality-gates-macos` GitHub Actions job in `.github/workflows/ci.yml`. -- The macOS job mirrors the Ubuntu quality gates: checkout, mise setup, CI bootstrap, Playwright Chromium install, format check, lint, typecheck, test, and build. -- The workflow now reflects the intended Linux/macOS tier-1 support story directly in repo automation. - -## Documentation changes - -- `README.md` now includes a `## Platform Support` section that spells out Linux tier-1, macOS tier-1, and Windows tier-2. -- `design/ARCHITECTURE.md` updates the design entrypoint to the 2026-03-23 shipped status and calls out Week 5 foundational scaffolding plus macOS CI validation. -- `design/archive/12-week-5-status.md` records the actual Week 5 outcome and marks Workstream D as completed. -- `design/archive/11-week-5-plan.md` now includes a status update pointing readers to the Week 5 outcome. -- `ROADMAP.md` is reclassified as the post-Week-5 remaining-gap tracker with explicit shipped / scaffolded / future annotations. - -## Validation results - -All requested validation gates passed for the platform/documentation closeout: - -- format ✅ -- lint ✅ -- typecheck ✅ -- tests 5/5 ✅ -- build ✅ - -## Exact commands run - -```bash -npm run verify (runs format:check, lint, typecheck, test, build) -npx prettier --check .github/workflows/ci.yml -npx prettier --check README.md -npx prettier --check ROADMAP.md -npx prettier --check design/ARCHITECTURE.md -npx prettier --check design/archive/12-week-5-status.md -npx prettier --check design/archive/11-week-5-plan.md -``` - -## Files changed - -1. `.github/workflows/ci.yml` — added the `quality-gates-macos` tier-1 validation job alongside the existing Ubuntu job. -2. `README.md` — added the top-level `## Platform Support` section describing Linux tier-1, macOS tier-1, and Windows tier-2. -3. `design/ARCHITECTURE.md` — updated the design entrypoint shipped-status section to 2026-03-23 and linked Week 5 status/current gaps. -4. `design/archive/12-week-5-status.md` — added the dedicated Week 5 status record documenting what shipped vs what remains future scope. -5. `design/archive/11-week-5-plan.md` — updated the status section near the top to reflect the Week 5 outcome and cross-link the status doc. -6. `ROADMAP.md` — reclassified the tracker into the post-Week-5 gap list with shipped, scaffolded, and future-scope labels. - -## What this proves - -- macOS CI is configured in the maintained GitHub Actions workflow. -- Platform support tiers are documented in the top-level README. -- The design/docs entrypoints reflect the actual Week 5 state as of 2026-03-23. -- The remaining-gap tracker distinguishes shipped closures from scaffolded work and future scope instead of overstating completeness. - -## Evidence files in this bundle - -- `./ci-workflow.png` -- `./readme-platform-support.png` -- `./week5-status-summary.png` -- `./design-index-update.png` -- `./evidence-walkthrough.webm` - -## Links to key docs - -- `../../.github/workflows/ci.yml` -- `../../README.md` -- `../../design/ARCHITECTURE.md` -- `../../design/archive/12-week-5-status.md` -- `../../design/archive/11-week-5-plan.md` -- `../../ROADMAP.md` diff --git a/dogfood/20260323-week5-platform-closure/readme-platform-support.png b/dogfood/20260323-week5-platform-closure/readme-platform-support.png deleted file mode 100644 index f262ad66..00000000 Binary files a/dogfood/20260323-week5-platform-closure/readme-platform-support.png and /dev/null differ diff --git a/dogfood/20260323-week5-platform-closure/week5-status-summary.png b/dogfood/20260323-week5-platform-closure/week5-status-summary.png deleted file mode 100644 index 4b9bf273..00000000 Binary files a/dogfood/20260323-week5-platform-closure/week5-status-summary.png and /dev/null differ diff --git a/dogfood/20260323-week5-render-cells/01-snapshot-include-cells.json b/dogfood/20260323-week5-render-cells/01-snapshot-include-cells.json deleted file mode 100644 index 3a123214..00000000 --- a/dogfood/20260323-week5-render-cells/01-snapshot-include-cells.json +++ /dev/null @@ -1,9835 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-23T16:31:56.980Z", - "result": { - "format": "structured", - "sessionId": "01W5CELLS1774283515", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 15, - "cursorCol": 0, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "COLOR GRID FIXTURE" - }, - { - "row": 1, - "text": "Basic background colors:" - }, - { - "row": 2, - "text": " BG-40 BG-41 BG-42 BG-43 BG-44 BG-45 BG-46 BG" - }, - { - "row": 3, - "text": "-47" - }, - { - "row": 4, - "text": "Bright background colors:" - }, - { - "row": 5, - "text": " BG-100 BG-101 BG-102 BG-103 BG-104 BG-105 BG-106 BG" - }, - { - "row": 6, - "text": "-107" - }, - { - "row": 7, - "text": "256-color sample backgrounds:" - }, - { - "row": 8, - "text": " IDX-016 IDX-022 IDX-028 IDX-034 IDX-040 IDX-046 IDX-082 ID" - }, - { - "row": 9, - "text": "X-118 IDX-154 IDX-190 IDX-196 IDX-202" - }, - { - "row": 10, - "text": "Truecolor sample backgrounds:" - }, - { - "row": 11, - "text": " TC-RED TC-GRN TC-BLU TC-GLD" - }, - { - "row": 12, - "text": "Foreground sample labels:" - }, - { - "row": 13, - "text": "FG-31 FG-92 FG5-45 FG5-201 FG2-ORANGE FG2-CYAN" - }, - { - "row": 14, - "text": "COLOR GRID COMPLETE" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ], - "cells": [ - { - "lineNumber": 0, - "cells": [ - { - "char": "C", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "O", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "L", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "O", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "R", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "G", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "R", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "I", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "D", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "F", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "I", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "X", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "T", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "U", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "R", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "E", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 1, - "cells": [ - { - "char": "B", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "a", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "s", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "i", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "c", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "b", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "a", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "c", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "k", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "g", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "u", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "n", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "d", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "c", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "l", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "s", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": ":", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 2, - "cells": [ - { - "char": " ", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": "1", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#cc6666" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": "2", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b5bd68" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": "3", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#f0c674" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#81a2be" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": "5", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b294bb" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": "6", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#8abeb7" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#c5c8c6" - }, - { - "char": "B", - "fg": "#1d1f21", - "bg": "#c5c8c6" - }, - { - "char": "G", - "fg": "#1d1f21", - "bg": "#c5c8c6" - } - ] - }, - { - "lineNumber": 3, - "cells": [ - { - "char": "-", - "fg": "#1d1f21", - "bg": "#c5c8c6" - }, - { - "char": "4", - "fg": "#1d1f21", - "bg": "#c5c8c6" - }, - { - "char": "7", - "fg": "#1d1f21", - "bg": "#c5c8c6" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#c5c8c6" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#c5c8c6" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#c5c8c6" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#c5c8c6" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 4, - "cells": [ - { - "char": "B", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "i", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "g", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "h", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "t", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "b", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "a", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "c", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "k", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "g", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "u", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "n", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "d", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "c", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "l", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "s", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": ":", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 5, - "cells": [ - { - "char": " ", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": "1", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#666666" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": "1", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": "1", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#d54e53" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": "G", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": "1", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": "2", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#b9ca4a" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": "B", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": "G", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": "0", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": "3", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#e7c547" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": "B", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": "G", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": "0", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": "4", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#7aa6da" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": "B", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": "G", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": "0", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": "5", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#c397d8" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": "B", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": "G", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": "0", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": "6", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#70c0b1" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#eaeaea" - }, - { - "char": "B", - "fg": "#1d1f21", - "bg": "#eaeaea" - }, - { - "char": "G", - "fg": "#1d1f21", - "bg": "#eaeaea" - } - ] - }, - { - "lineNumber": 6, - "cells": [ - { - "char": "-", - "fg": "#1d1f21", - "bg": "#eaeaea" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#eaeaea" - }, - { - "char": "0", - "fg": "#1d1f21", - "bg": "#eaeaea" - }, - { - "char": "7", - "fg": "#1d1f21", - "bg": "#eaeaea" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#eaeaea" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#eaeaea" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#eaeaea" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 7, - "cells": [ - { - "char": "2", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "5", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "6", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "-", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "c", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "l", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "s", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "a", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "m", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "p", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "l", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "e", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "b", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "a", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "c", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "k", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "g", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "u", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "n", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "d", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "s", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": ":", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 8, - "cells": [ - { - "char": " ", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": "I", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": "D", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": "X", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": "1", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": "6", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#000000" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": "I", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": "D", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": "X", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": "2", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": "2", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#005f00" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": "I", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": "D", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": "X", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": "2", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": "8", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#008700" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": "I", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": "D", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": "X", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": "3", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#00af00" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": "I", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": "D", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": "X", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#00d700" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": "I", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": "D", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": "X", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": "4", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": "6", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#00ff00" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": "I", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": "D", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": "X", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": "0", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": "8", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": "2", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#5fff00" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#87ff00" - }, - { - "char": "I", - "fg": "#1d1f21", - "bg": "#87ff00" - }, - { - "char": "D", - "fg": "#1d1f21", - "bg": "#87ff00" - } - ] - }, - { - "lineNumber": 9, - "cells": [ - { - "char": "X", - "fg": "#1d1f21", - "bg": "#87ff00" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#87ff00" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#87ff00" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#87ff00" - }, - { - "char": "8", - "fg": "#1d1f21", - "bg": "#87ff00" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#87ff00" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#87ff00" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": "I", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": "D", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": "X", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": "5", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": "4", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#afff00" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": "I", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": "D", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": "X", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": "9", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": "0", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#d7ff00" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": "I", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": "D", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": "X", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": "1", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": "9", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": "6", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff0000" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": "I", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": "D", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": "X", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": "2", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": "0", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": "2", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff5f00" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 10, - "cells": [ - { - "char": "T", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "u", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "e", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "c", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "l", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "s", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "a", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "m", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "p", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "l", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "e", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "b", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "a", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "c", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "k", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "g", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "u", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "n", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "d", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "s", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": ":", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 11, - "cells": [ - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": "T", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": "C", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": "R", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": "E", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": "D", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ff5a5a" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": "T", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": "C", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": "G", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": "R", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": "N", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#50dc78" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": "T", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": "C", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": "-", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": "B", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": "L", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": "U", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": " ", - "fg": "#eaeaea", - "bg": "#5a8cff" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": "T", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": "C", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": "-", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": "G", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": "L", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": "D", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": " ", - "fg": "#1d1f21", - "bg": "#ffbe40" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 12, - "cells": [ - { - "char": "F", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "e", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "g", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "r", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "o", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "u", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "n", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "d", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "s", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "a", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "m", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "p", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "l", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "e", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "l", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "a", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "b", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "e", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "l", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "s", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": ":", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 13, - "cells": [ - { - "char": "F", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": "G", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": "-", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": "3", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": "1", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cc6666", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "F", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": "G", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": "-", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": "9", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": "2", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#b9ca4a", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "F", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": "G", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": "5", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": "-", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": "4", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": "5", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#00d7ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "F", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": "G", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": "5", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": "-", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": "2", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": "0", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": "1", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#ff00ff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "F", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": "G", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": "2", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": "-", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": "O", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": "R", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": "A", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": "N", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": "G", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": "E", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#ff8c28", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "F", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": "G", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": "2", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": "-", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": "C", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": "Y", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": "A", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": "N", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#50dcff", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 14, - "cells": [ - { - "char": "C", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "O", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "L", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "O", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "R", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "G", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "R", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "I", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "D", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": " ", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "C", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "O", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "M", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "P", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "L", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "E", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "T", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "E", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 15, - "cells": [ - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 16, - "cells": [ - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 17, - "cells": [ - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 18, - "cells": [ - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 19, - "cells": [ - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 20, - "cells": [ - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 21, - "cells": [ - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 22, - "cells": [ - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - }, - { - "lineNumber": 23, - "cells": [ - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - }, - { - "char": "", - "fg": "#cdd6f4", - "bg": "#1e1e2e" - } - ] - } - ] - } -} diff --git a/dogfood/20260323-week5-render-cells/02-snapshot-default.json b/dogfood/20260323-week5-render-cells/02-snapshot-default.json deleted file mode 100644 index e4a95b46..00000000 --- a/dogfood/20260323-week5-render-cells/02-snapshot-default.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-23T16:31:58.430Z", - "result": { - "format": "structured", - "sessionId": "01W5CELLS1774283515", - "capturedAtSeq": 4, - "cols": 80, - "rows": 24, - "cursorRow": 15, - "cursorCol": 0, - "isAltScreen": false, - "visibleLines": [ - { - "row": 0, - "text": "COLOR GRID FIXTURE" - }, - { - "row": 1, - "text": "Basic background colors:" - }, - { - "row": 2, - "text": " BG-40 BG-41 BG-42 BG-43 BG-44 BG-45 BG-46 BG" - }, - { - "row": 3, - "text": "-47" - }, - { - "row": 4, - "text": "Bright background colors:" - }, - { - "row": 5, - "text": " BG-100 BG-101 BG-102 BG-103 BG-104 BG-105 BG-106 BG" - }, - { - "row": 6, - "text": "-107" - }, - { - "row": 7, - "text": "256-color sample backgrounds:" - }, - { - "row": 8, - "text": " IDX-016 IDX-022 IDX-028 IDX-034 IDX-040 IDX-046 IDX-082 ID" - }, - { - "row": 9, - "text": "X-118 IDX-154 IDX-190 IDX-196 IDX-202" - }, - { - "row": 10, - "text": "Truecolor sample backgrounds:" - }, - { - "row": 11, - "text": " TC-RED TC-GRN TC-BLU TC-GLD" - }, - { - "row": 12, - "text": "Foreground sample labels:" - }, - { - "row": 13, - "text": "FG-31 FG-92 FG5-45 FG5-201 FG2-ORANGE FG2-CYAN" - }, - { - "row": 14, - "text": "COLOR GRID COMPLETE" - }, - { - "row": 15, - "text": "" - }, - { - "row": 16, - "text": "" - }, - { - "row": 17, - "text": "" - }, - { - "row": 18, - "text": "" - }, - { - "row": 19, - "text": "" - }, - { - "row": 20, - "text": "" - }, - { - "row": 21, - "text": "" - }, - { - "row": 22, - "text": "" - }, - { - "row": 23, - "text": "" - } - ] - } -} diff --git a/dogfood/20260323-week5-render-cells/cells-sample.json b/dogfood/20260323-week5-render-cells/cells-sample.json deleted file mode 100644 index 379ffcf1..00000000 --- a/dogfood/20260323-week5-render-cells/cells-sample.json +++ /dev/null @@ -1,44 +0,0 @@ -[ - { - "lineNumber": 2, - "cellIndex": 1, - "char": "B", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 2, - "char": "G", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 3, - "char": "-", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 4, - "char": "4", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 5, - "char": "0", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 12, - "char": "B", - "fg": "#eaeaea", - "bg": "#cc6666" - } -] diff --git a/dogfood/20260323-week5-render-cells/command-status.tsv b/dogfood/20260323-week5-render-cells/command-status.tsv deleted file mode 100644 index c2cf8fa5..00000000 --- a/dogfood/20260323-week5-render-cells/command-status.tsv +++ /dev/null @@ -1,3 +0,0 @@ -step exit_code stdout stderr command -01-snapshot-include-cells.json 0 dogfood/20260323-week5-render-cells/01-snapshot-include-cells.json.out dogfood/20260323-week5-render-cells/logs/01-snapshot-include-cells.json.stderr.txt npx tsx src/cli/main.ts snapshot 01W5CELLS1774283515 --include-cells --json -02-snapshot-default.json 0 dogfood/20260323-week5-render-cells/02-snapshot-default.json.out dogfood/20260323-week5-render-cells/logs/02-snapshot-default.json.stderr.txt npx tsx src/cli/main.ts snapshot 01W5CELLS1774283515 --json diff --git a/dogfood/20260323-week5-render-cells/commands.sh b/dogfood/20260323-week5-render-cells/commands.sh deleted file mode 100755 index a43b5baa..00000000 --- a/dogfood/20260323-week5-render-cells/commands.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -SESSION_ID="01W5CELLS1774283515" -npx tsx src/cli/main.ts snapshot 01W5CELLS1774283515 --include-cells --json -npx tsx src/cli/main.ts snapshot 01W5CELLS1774283515 --json diff --git a/dogfood/20260323-week5-render-cells/events.jsonl b/dogfood/20260323-week5-render-cells/events.jsonl deleted file mode 100644 index c7ff3057..00000000 --- a/dogfood/20260323-week5-render-cells/events.jsonl +++ /dev/null @@ -1,5 +0,0 @@ -{"seq":0,"ts":"2026-03-22T22:31:37.799Z","type":"output","payload":{"data":"COLOR GRID FIXTURE\r\nBasic background colors:\r\n\u001b[97m\u001b[40m BG-40 \u001b[0m \u001b[97m\u001b[41m BG-41 \u001b[0m \u001b[97m\u001b[42m BG-42 \u001b[0m \u001b[97m\u001b[43m BG-43 \u001b[0m \u001b[97m\u001b[44m BG-44 \u001b[0m \u001b[97m\u001b[45m BG-45 \u001b[0m \u001b[97m\u001b[46m BG-46 \u001b[0m \u001b[30m\u001b[47m BG-47 \u001b[0m\r\nBright background colors:\r\n\u001b[97m\u001b[100m BG-100 \u001b[0m \u001b[97m\u001b[101m BG-101 \u001b[0m \u001b[97m\u001b[102m BG-102 \u001b[0m \u001b[30m\u001b[103m BG-103 \u001b[0m \u001b[30m\u001b[104m BG-104 \u001b[0m \u001b[30m\u001b[105m BG-105 \u001b[0m \u001b[30m\u001b[106m BG-106 \u001b[0m \u001b[30m\u001b[107m BG-107 \u001b[0m\r\n256-color sample backgrounds:\r\n\u001b[97m\u001b[48;5;16m IDX-016 \u001b[0m \u001b[97m\u001b[48;5;22m IDX-022 \u001b[0m \u001b[97m\u001b[48;5;28m IDX-028 \u001b[0m \u001b[97m\u001b[48;5;34m IDX-034 \u001b[0m \u001b[97m\u001b[48;5;40m IDX-040 \u001b[0m \u001b[97m\u001b[48;5;46m IDX-046 \u001b[0m \u001b[97m\u001b[48;5;82m IDX-082 \u001b[0m \u001b[30m\u001b[48;5;118m IDX-118 \u001b[0m \u001b[30m\u001b[48;5;154m IDX-154 \u001b[0m \u001b[30m\u001b[48;5;190m IDX-190 \u001b[0m \u001b[30m\u001b[48;5;196m IDX-196 \u001b[0m \u001b[30m\u001b[48;5;202m IDX-202 \u001b[0m\r\nTruecolor sample backgrounds:\r\n\u001b[30m\u001b[48;2;255;90;90m TC-RED \u001b[0m \u001b[30m\u001b[48;2;80;220;120m TC-GRN \u001b[0m \u001b[97m\u001b[48;2;90;140;255m TC-BLU \u001b[0m \u001b[30m\u001b[48;2;255;190;64m TC-GLD \u001b[0m\r\nForeground sample labels:\r\n\u001b[31mFG-31 \u001b[0m \u001b[92mFG-92 \u001b[0m \u001b[38;5;45mFG5-45 \u001b[0m \u001b[38;5;201mFG5-201 \u001b[0m \u001b[38;2;255;140;40mFG2-ORANGE \u001b[0m \u001b[38;2;80;220;255mFG2-CYAN \u001b[0m\r\n\u001b[0mCOLOR GRID COMPLETE\r\n"}} -{"seq":1,"ts":"2026-03-22T22:31:39.022Z","type":"output","payload":{"data":"\\"}} -{"seq":2,"ts":"2026-03-22T22:31:39.023Z","type":"output","payload":{"data":"\u001b[1G"}} -{"seq":3,"ts":"2026-03-22T22:31:39.023Z","type":"output","payload":{"data":"\u001b[0K"}} -{"seq":4,"ts":"2026-03-22T22:31:39.032Z","type":"exit","payload":{"exitCode":0,"exitSignal":null}} diff --git a/dogfood/20260323-week5-render-cells/logs/01-snapshot-include-cells.json.exitcode b/dogfood/20260323-week5-render-cells/logs/01-snapshot-include-cells.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-cells/logs/01-snapshot-include-cells.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-cells/logs/01-snapshot-include-cells.json.stderr.txt b/dogfood/20260323-week5-render-cells/logs/01-snapshot-include-cells.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-cells/logs/02-snapshot-default.json.exitcode b/dogfood/20260323-week5-render-cells/logs/02-snapshot-default.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-cells/logs/02-snapshot-default.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-cells/logs/02-snapshot-default.json.stderr.txt b/dogfood/20260323-week5-render-cells/logs/02-snapshot-default.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-cells/manifest.json b/dogfood/20260323-week5-render-cells/manifest.json deleted file mode 100644 index 5df60a31..00000000 --- a/dogfood/20260323-week5-render-cells/manifest.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "bundle": "20260323-week5-render-cells", - "artifacts": [ - { - "path": "01-snapshot-include-cells.json", - "sha256": "a47958a835be69e75ebc950df4ad28adf21e1eddd990578dce0123cd56f54da6", - "size": 208028 - }, - { - "path": "02-snapshot-default.json", - "sha256": "d2d20853ec8feceefd43a1ccd134a58ff833204b605a08596a63f749e251a4dc", - "size": 2205 - }, - { - "path": "cells-sample.json", - "sha256": "2411c6802e7464762340ce2d934c043885d7f0f34129170d30ffe601b0be50c0", - "size": 652 - }, - { - "path": "command-status.tsv", - "sha256": "eb43d5b13fcebbdde9a141ccb49fef0a820c0217967f74b285abadd799c10636", - "size": 529 - }, - { - "path": "commands.sh", - "sha256": "955dddbaaf5cbc9bbb84e87c68d597a0a454a5465a74ec806de56390b7c732b1", - "size": 207 - }, - { - "path": "events.jsonl", - "sha256": "e2ad6af021b8f7e262c8fa202ed9f305cabf1a93ce8d8f3d3760502c067b0abc", - "size": 2287 - }, - { - "path": "logs/01-snapshot-include-cells.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/01-snapshot-include-cells.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "logs/02-snapshot-default.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/02-snapshot-default.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "notes.md", - "sha256": "8e2a271b18f17545f3d0225fffdf936262cb9d99c72496efcc53bee413646fa2", - "size": 2211 - }, - { - "path": "run-scenario.sh", - "sha256": "db4e6ce650683c128f95bce085d740de4a1cb2d360557be9af30b4d2a78a2dda", - "size": 6157 - }, - { - "path": "session.json", - "sha256": "d3b771a160cdb9da80066298891c92bcaaa00748f42b2bddb3ab055f90a55a9c", - "size": 338 - } - ] -} diff --git a/dogfood/20260323-week5-render-cells/notes.md b/dogfood/20260323-week5-render-cells/notes.md deleted file mode 100644 index a6a2ad9f..00000000 --- a/dogfood/20260323-week5-render-cells/notes.md +++ /dev/null @@ -1,74 +0,0 @@ -# 2026-03-23 dogfood — Week 5 Lane B per-cell snapshots - -## Bundle metadata - -- **Bundle path:** `dogfood/20260323-week5-render-cells/` -- **Fixture events:** `dogfood/20260322-dogfood-color/events.jsonl` -- **Replay mode:** offline replay against a synthetic exited session (`session.json`) -- **Session ID:** `01W5CELLS1774283515` - -## Scenario summary - -This bundle captures the same exited session twice via `snapshot`: once with `--include-cells` and once with the default structured output. Reviewers can diff the JSON files directly. - -## Reviewer highlights - -- `01-snapshot-include-cells.json` contains a top-level `cells` array with `24` rendered lines of per-cell metadata. -- `02-snapshot-default.json` omits the `cells` key entirely, confirming that per-cell payloads are opt-in. -- Both snapshots agree on the viewport (`80x24`), cursor position (`row 15, col 0`), and captured sequence (`4`). - -## Representative cell entries - -`cells-sample.json` extracts the first styled cells discovered in the snapshot so reviewers do not have to hunt through the full payload. These sample entries show foreground/background colors from the replayed ANSI output; this copied color-grid fixture does not emit bold or underline escapes, so the optional style-flag booleans are absent in this specific sample: - -```json -[ - { - "lineNumber": 2, - "cellIndex": 1, - "char": "B", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 2, - "char": "G", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 3, - "char": "-", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 4, - "char": "4", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 5, - "char": "0", - "fg": "#eaeaea", - "bg": "#1d1f21" - }, - { - "lineNumber": 2, - "cellIndex": 12, - "char": "B", - "fg": "#eaeaea", - "bg": "#cc6666" - } -] -``` - -## Comparison guidance - -- Open `01-snapshot-include-cells.json` and search for `"cells"` to inspect the full per-cell payload. -- Open `02-snapshot-default.json` and confirm the same visible text is present without the additional cell metadata. diff --git a/dogfood/20260323-week5-render-cells/run-scenario.sh b/dogfood/20260323-week5-render-cells/run-scenario.sh deleted file mode 100755 index 25c877b7..00000000 --- a/dogfood/20260323-week5-render-cells/run-scenario.sh +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -export MISE_TRUSTED_CONFIG_PATHS="${PWD}" -CLI=(npx tsx src/cli/main.ts) -BUNDLE="dogfood/20260323-week5-render-cells" -FIXTURE_EVENTS="dogfood/20260322-dogfood-color/events.jsonl" -STATUS_TSV="$BUNDLE/command-status.tsv" -COMMANDS_SH="$BUNDLE/commands.sh" -LOG_DIR="$BUNDLE/logs" - -mkdir -p "$LOG_DIR" -rm -f "$STATUS_TSV" "$COMMANDS_SH" "$BUNDLE/manifest.json" -printf 'step\texit_code\tstdout\tstderr\tcommand\n' > "$STATUS_TSV" -cat > "$COMMANDS_SH" <<'COMMANDS' -#!/usr/bin/env bash -set -euo pipefail -SESSION_ID="REPLACED_BY_RUN_SCENARIO" -COMMANDS -chmod +x "$COMMANDS_SH" - -AGENT_TERMINAL_HOME="" -SESSION_ID="" -SESSION_DIR="" -cleanup() { - local status=$? - if [[ -n "$AGENT_TERMINAL_HOME" && -d "$AGENT_TERMINAL_HOME" ]]; then - rm -rf "$AGENT_TERMINAL_HOME" - fi - exit "$status" -} -trap cleanup EXIT - -log_cmd() { - local rendered="" - printf -v rendered '%q ' "$@" - printf '%s\n' "${rendered% }" >> "$COMMANDS_SH" -} - -run_cmd() { - local step="$1" - shift - local stdout="$BUNDLE/${step}.out" - local stderr="$LOG_DIR/${step}.stderr.txt" - log_cmd "$@" - set +e - "$@" >"$stdout" 2>"$stderr" - local code=$? - set -e - printf '%s\n' "$code" > "$LOG_DIR/${step}.exitcode" - printf '%s\t%s\t%s\t%s\t' "$step" "$code" "$stdout" "$stderr" >> "$STATUS_TSV" - local rendered="" - printf -v rendered '%q ' "$@" - printf '%s\n' "${rendered% }" >> "$STATUS_TSV" - if [[ "$code" -eq 0 ]]; then - mv "$stdout" "$BUNDLE/${step}" - fi - return 0 -} - -AGENT_TERMINAL_HOME="$(mktemp -d)" -export AGENT_TERMINAL_HOME -SESSION_ID="01W5CELLS$(date +%s)" -SESSION_DIR="$AGENT_TERMINAL_HOME/sessions/$SESSION_ID" -mkdir -p "$SESSION_DIR/artifacts" -python3 - "$SESSION_DIR/session.json" "$SESSION_ID" <<'PY' -import json -import sys -payload = { - 'version': 1, - 'sessionId': sys.argv[2], - 'createdAt': '2026-03-23T16:00:00.000Z', - 'updatedAt': '2026-03-23T16:00:05.000Z', - 'status': 'exited', - 'command': ['echo', 'week5-cells'], - 'cwd': '/tmp', - 'cols': 80, - 'rows': 24, - 'hostPid': None, - 'childPid': None, - 'exitCode': 0, - 'exitSignal': None, -} -with open(sys.argv[1], 'w', encoding='utf-8') as fh: - json.dump(payload, fh, indent=2) - fh.write('\n') -PY -cp "$FIXTURE_EVENTS" "$SESSION_DIR/events.jsonl" -python3 - "$COMMANDS_SH" "$SESSION_ID" <<'PY' -from pathlib import Path -import sys -path = Path(sys.argv[1]) -path.write_text(path.read_text().replace('REPLACED_BY_RUN_SCENARIO', sys.argv[2])) -PY - -run_cmd 01-snapshot-include-cells.json "${CLI[@]}" snapshot "$SESSION_ID" --include-cells --json -run_cmd 02-snapshot-default.json "${CLI[@]}" snapshot "$SESSION_ID" --json -cp "$SESSION_DIR/events.jsonl" "$BUNDLE/events.jsonl" -cp "$SESSION_DIR/session.json" "$BUNDLE/session.json" - -python3 - "$BUNDLE" <<'PY' -import json -import sys -from pathlib import Path -bundle = Path(sys.argv[1]) -with_cells = json.loads((bundle / '01-snapshot-include-cells.json').read_text())['result'] -without_cells = json.loads((bundle / '02-snapshot-default.json').read_text())['result'] -samples = [] -default_fg = '#cdd6f4' -default_bg = '#1e1e2e' -for line in with_cells.get('cells', []): - line_number = line.get('lineNumber') - for cell_index, cell in enumerate(line.get('cells', [])): - if cell.get('char', ' ') == ' ': - continue - interesting = ( - cell.get('bg') not in (None, default_bg) - or cell.get('fg') not in (None, default_fg) - or cell.get('bold') - or cell.get('italic') - or cell.get('underline') - or cell.get('strikethrough') - ) - if interesting: - samples.append({ - 'lineNumber': line_number, - 'cellIndex': cell_index, - **cell, - }) - if len(samples) >= 6: - break - if len(samples) >= 6: - break -(bundle / 'cells-sample.json').write_text(json.dumps(samples, indent=2) + '\n') -notes = f'''# 2026-03-23 dogfood — Week 5 Lane B per-cell snapshots - -## Bundle metadata - -- **Bundle path:** `{bundle.as_posix()}/` -- **Fixture events:** `dogfood/20260322-dogfood-color/events.jsonl` -- **Replay mode:** offline replay against a synthetic exited session (`session.json`) -- **Session ID:** `{with_cells['sessionId']}` - -## Scenario summary - -This bundle captures the same exited session twice via `snapshot`: once with `--include-cells` and once with the default structured output. Reviewers can diff the JSON files directly. - -## Reviewer highlights - -- `01-snapshot-include-cells.json` contains a top-level `cells` array with `{len(with_cells.get('cells', []))}` rendered lines of per-cell metadata. -- `02-snapshot-default.json` omits the `cells` key entirely, confirming that per-cell payloads are opt-in. -- Both snapshots agree on the viewport (`{with_cells['cols']}x{with_cells['rows']}`), cursor position (`row {with_cells['cursorRow']}, col {with_cells['cursorCol']}`), and captured sequence (`{with_cells['capturedAtSeq']}`). - -## Representative cell entries - -`cells-sample.json` extracts the first styled cells discovered in the snapshot so reviewers do not have to hunt through the full payload. These sample entries show foreground/background colors from the replayed ANSI output; this copied color-grid fixture does not emit bold or underline escapes, so the optional style-flag booleans are absent in this specific sample: - -```json -{json.dumps(samples, indent=2)} -``` - -## Comparison guidance - -- Open `01-snapshot-include-cells.json` and search for `"cells"` to inspect the full per-cell payload. -- Open `02-snapshot-default.json` and confirm the same visible text is present without the additional cell metadata. -''' -(bundle / 'notes.md').write_text(notes) -manifest_entries = [] -for path in sorted(bundle.rglob('*')): - if path.is_file() and path.name != 'manifest.json': - manifest_entries.append({ - 'path': path.relative_to(bundle).as_posix(), - 'sha256': __import__('hashlib').sha256(path.read_bytes()).hexdigest(), - 'size': path.stat().st_size, - }) -(bundle / 'manifest.json').write_text(json.dumps({'bundle': bundle.name, 'artifacts': manifest_entries}, indent=2) + '\n') -PY diff --git a/dogfood/20260323-week5-render-cells/session.json b/dogfood/20260323-week5-render-cells/session.json deleted file mode 100644 index a3129e87..00000000 --- a/dogfood/20260323-week5-render-cells/session.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": 1, - "sessionId": "01W5CELLS1774283515", - "createdAt": "2026-03-23T16:00:00.000Z", - "updatedAt": "2026-03-23T16:00:05.000Z", - "status": "exited", - "command": ["echo", "week5-cells"], - "cwd": "/tmp", - "cols": 80, - "rows": 24, - "hostPid": null, - "childPid": null, - "exitCode": 0, - "exitSignal": null -} diff --git a/dogfood/20260323-week5-render-cursor/01-screenshot-show-cursor.json b/dogfood/20260323-week5-render-cursor/01-screenshot-show-cursor.json deleted file mode 100644 index 4259281c..00000000 --- a/dogfood/20260323-week5-render-cursor/01-screenshot-show-cursor.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-23T16:30:30.801Z", - "result": { - "sessionId": "01W5CURSR1774283429", - "capturedAtSeq": 4, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.D0HjE40QHG/sessions/01W5CURSR1774283429/artifacts/screenshot-4-reference-dark.png", - "pngSizeBytes": 48895, - "cursorVisible": true, - "rendererBackend": "ghostty-web", - "pixelWidth": 640, - "pixelHeight": 384, - "sha256": "8d62ca0c2ce4c8b4b3c99c7374db8ef5b5896f5751b4e24758c9a1c8ddf410c9", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8" - } -} diff --git a/dogfood/20260323-week5-render-cursor/02-screenshot-hide-cursor.json b/dogfood/20260323-week5-render-cursor/02-screenshot-hide-cursor.json deleted file mode 100644 index 0a33ed1a..00000000 --- a/dogfood/20260323-week5-render-cursor/02-screenshot-hide-cursor.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-23T16:30:37.342Z", - "result": { - "sessionId": "01W5CURSR1774283429", - "capturedAtSeq": 4, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.D0HjE40QHG/sessions/01W5CURSR1774283429/artifacts/screenshot-4-reference-dark.png", - "pngSizeBytes": 48882, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 640, - "pixelHeight": 384, - "sha256": "55c7d357604a5c7bd200680d61b98d3e4dfd27a139a4c0dad6ee1df800a51c87", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8" - } -} diff --git a/dogfood/20260323-week5-render-cursor/03-screenshot-default.json b/dogfood/20260323-week5-render-cursor/03-screenshot-default.json deleted file mode 100644 index 824ea960..00000000 --- a/dogfood/20260323-week5-render-cursor/03-screenshot-default.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-23T16:30:43.781Z", - "result": { - "sessionId": "01W5CURSR1774283429", - "capturedAtSeq": 4, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.D0HjE40QHG/sessions/01W5CURSR1774283429/artifacts/screenshot-4-reference-dark.png", - "pngSizeBytes": 48882, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 640, - "pixelHeight": 384, - "sha256": "55c7d357604a5c7bd200680d61b98d3e4dfd27a139a4c0dad6ee1df800a51c87", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8" - } -} diff --git a/dogfood/20260323-week5-render-cursor/command-status.tsv b/dogfood/20260323-week5-render-cursor/command-status.tsv deleted file mode 100644 index d8b1ec48..00000000 --- a/dogfood/20260323-week5-render-cursor/command-status.tsv +++ /dev/null @@ -1,4 +0,0 @@ -step exit_code stdout stderr command -01-screenshot-show-cursor.json 0 dogfood/20260323-week5-render-cursor/01-screenshot-show-cursor.json.out dogfood/20260323-week5-render-cursor/logs/01-screenshot-show-cursor.json.stderr.txt npx tsx src/cli/main.ts screenshot 01W5CURSR1774283429 --show-cursor --json -02-screenshot-hide-cursor.json 0 dogfood/20260323-week5-render-cursor/02-screenshot-hide-cursor.json.out dogfood/20260323-week5-render-cursor/logs/02-screenshot-hide-cursor.json.stderr.txt npx tsx src/cli/main.ts screenshot 01W5CURSR1774283429 --hide-cursor --json -03-screenshot-default.json 0 dogfood/20260323-week5-render-cursor/03-screenshot-default.json.out dogfood/20260323-week5-render-cursor/logs/03-screenshot-default.json.stderr.txt npx tsx src/cli/main.ts screenshot 01W5CURSR1774283429 --json diff --git a/dogfood/20260323-week5-render-cursor/commands.sh b/dogfood/20260323-week5-render-cursor/commands.sh deleted file mode 100755 index d832f0d6..00000000 --- a/dogfood/20260323-week5-render-cursor/commands.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -SESSION_ID="01W5CURSR1774283429" -npx tsx src/cli/main.ts screenshot 01W5CURSR1774283429 --show-cursor --json -npx tsx src/cli/main.ts screenshot 01W5CURSR1774283429 --hide-cursor --json -npx tsx src/cli/main.ts screenshot 01W5CURSR1774283429 --json diff --git a/dogfood/20260323-week5-render-cursor/events.jsonl b/dogfood/20260323-week5-render-cursor/events.jsonl deleted file mode 100644 index c7ff3057..00000000 --- a/dogfood/20260323-week5-render-cursor/events.jsonl +++ /dev/null @@ -1,5 +0,0 @@ -{"seq":0,"ts":"2026-03-22T22:31:37.799Z","type":"output","payload":{"data":"COLOR GRID FIXTURE\r\nBasic background colors:\r\n\u001b[97m\u001b[40m BG-40 \u001b[0m \u001b[97m\u001b[41m BG-41 \u001b[0m \u001b[97m\u001b[42m BG-42 \u001b[0m \u001b[97m\u001b[43m BG-43 \u001b[0m \u001b[97m\u001b[44m BG-44 \u001b[0m \u001b[97m\u001b[45m BG-45 \u001b[0m \u001b[97m\u001b[46m BG-46 \u001b[0m \u001b[30m\u001b[47m BG-47 \u001b[0m\r\nBright background colors:\r\n\u001b[97m\u001b[100m BG-100 \u001b[0m \u001b[97m\u001b[101m BG-101 \u001b[0m \u001b[97m\u001b[102m BG-102 \u001b[0m \u001b[30m\u001b[103m BG-103 \u001b[0m \u001b[30m\u001b[104m BG-104 \u001b[0m \u001b[30m\u001b[105m BG-105 \u001b[0m \u001b[30m\u001b[106m BG-106 \u001b[0m \u001b[30m\u001b[107m BG-107 \u001b[0m\r\n256-color sample backgrounds:\r\n\u001b[97m\u001b[48;5;16m IDX-016 \u001b[0m \u001b[97m\u001b[48;5;22m IDX-022 \u001b[0m \u001b[97m\u001b[48;5;28m IDX-028 \u001b[0m \u001b[97m\u001b[48;5;34m IDX-034 \u001b[0m \u001b[97m\u001b[48;5;40m IDX-040 \u001b[0m \u001b[97m\u001b[48;5;46m IDX-046 \u001b[0m \u001b[97m\u001b[48;5;82m IDX-082 \u001b[0m \u001b[30m\u001b[48;5;118m IDX-118 \u001b[0m \u001b[30m\u001b[48;5;154m IDX-154 \u001b[0m \u001b[30m\u001b[48;5;190m IDX-190 \u001b[0m \u001b[30m\u001b[48;5;196m IDX-196 \u001b[0m \u001b[30m\u001b[48;5;202m IDX-202 \u001b[0m\r\nTruecolor sample backgrounds:\r\n\u001b[30m\u001b[48;2;255;90;90m TC-RED \u001b[0m \u001b[30m\u001b[48;2;80;220;120m TC-GRN \u001b[0m \u001b[97m\u001b[48;2;90;140;255m TC-BLU \u001b[0m \u001b[30m\u001b[48;2;255;190;64m TC-GLD \u001b[0m\r\nForeground sample labels:\r\n\u001b[31mFG-31 \u001b[0m \u001b[92mFG-92 \u001b[0m \u001b[38;5;45mFG5-45 \u001b[0m \u001b[38;5;201mFG5-201 \u001b[0m \u001b[38;2;255;140;40mFG2-ORANGE \u001b[0m \u001b[38;2;80;220;255mFG2-CYAN \u001b[0m\r\n\u001b[0mCOLOR GRID COMPLETE\r\n"}} -{"seq":1,"ts":"2026-03-22T22:31:39.022Z","type":"output","payload":{"data":"\\"}} -{"seq":2,"ts":"2026-03-22T22:31:39.023Z","type":"output","payload":{"data":"\u001b[1G"}} -{"seq":3,"ts":"2026-03-22T22:31:39.023Z","type":"output","payload":{"data":"\u001b[0K"}} -{"seq":4,"ts":"2026-03-22T22:31:39.032Z","type":"exit","payload":{"exitCode":0,"exitSignal":null}} diff --git a/dogfood/20260323-week5-render-cursor/logs/01-screenshot-show-cursor.json.exitcode b/dogfood/20260323-week5-render-cursor/logs/01-screenshot-show-cursor.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-cursor/logs/01-screenshot-show-cursor.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-cursor/logs/01-screenshot-show-cursor.json.stderr.txt b/dogfood/20260323-week5-render-cursor/logs/01-screenshot-show-cursor.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-cursor/logs/02-screenshot-hide-cursor.json.exitcode b/dogfood/20260323-week5-render-cursor/logs/02-screenshot-hide-cursor.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-cursor/logs/02-screenshot-hide-cursor.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-cursor/logs/02-screenshot-hide-cursor.json.stderr.txt b/dogfood/20260323-week5-render-cursor/logs/02-screenshot-hide-cursor.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-cursor/logs/03-screenshot-default.json.exitcode b/dogfood/20260323-week5-render-cursor/logs/03-screenshot-default.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-cursor/logs/03-screenshot-default.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-cursor/logs/03-screenshot-default.json.stderr.txt b/dogfood/20260323-week5-render-cursor/logs/03-screenshot-default.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-cursor/manifest.json b/dogfood/20260323-week5-render-cursor/manifest.json deleted file mode 100644 index 1b1ce458..00000000 --- a/dogfood/20260323-week5-render-cursor/manifest.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "bundle": "20260323-week5-render-cursor", - "artifacts": [ - { - "path": "01-screenshot-show-cursor.json", - "sha256": "3587fb33cefd80ec3c5b26ff5cb21a96070cd07ff233a91e14588c10367f3e2a", - "size": 666 - }, - { - "path": "02-screenshot-hide-cursor.json", - "sha256": "6bc5274d6769ae841b32ff81dbfb64a930009be840a47c4e8886e8f583f0b1d2", - "size": 667 - }, - { - "path": "03-screenshot-default.json", - "sha256": "f22f7181090fdce5738fb583c5cb937fefa07c913f52b0e83ec881e2ded6cc40", - "size": 667 - }, - { - "path": "command-status.tsv", - "sha256": "253d39e9e74be4f95bef040fd97cc308394e300d0b97983262f5a5e651712dc3", - "size": 806 - }, - { - "path": "commands.sh", - "sha256": "1f7475156c1210f77bd359345ed36ab5f0659be170d3cfb9088a4ccd937162da", - "size": 285 - }, - { - "path": "events.jsonl", - "sha256": "e2ad6af021b8f7e262c8fa202ed9f305cabf1a93ce8d8f3d3760502c067b0abc", - "size": 2287 - }, - { - "path": "logs/01-screenshot-show-cursor.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/01-screenshot-show-cursor.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "logs/02-screenshot-hide-cursor.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/02-screenshot-hide-cursor.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "logs/03-screenshot-default.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/03-screenshot-default.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "notes.md", - "sha256": "198ac82c4f9e1318c16d1438ccd5c7de9280da8ba626da354a53f105dfb5227f", - "size": 1608 - }, - { - "path": "run-scenario.sh", - "sha256": "b73a291757e065f00ba2ff586fbb98fc0fa57215f2ad201e6174432342e668b0", - "size": 7661 - }, - { - "path": "screenshots/default.png", - "sha256": "55c7d357604a5c7bd200680d61b98d3e4dfd27a139a4c0dad6ee1df800a51c87", - "size": 48882 - }, - { - "path": "screenshots/hide-cursor.png", - "sha256": "55c7d357604a5c7bd200680d61b98d3e4dfd27a139a4c0dad6ee1df800a51c87", - "size": 48882 - }, - { - "path": "screenshots/show-cursor.png", - "sha256": "8d62ca0c2ce4c8b4b3c99c7374db8ef5b5896f5751b4e24758c9a1c8ddf410c9", - "size": 48895 - }, - { - "path": "session.json", - "sha256": "085bf905b2a2e84b4ef39339ee4af7bc6216e30998c68b81a3ae746eb00a2ee8", - "size": 339 - } - ] -} diff --git a/dogfood/20260323-week5-render-cursor/notes.md b/dogfood/20260323-week5-render-cursor/notes.md deleted file mode 100644 index 580b70c1..00000000 --- a/dogfood/20260323-week5-render-cursor/notes.md +++ /dev/null @@ -1,27 +0,0 @@ -# 2026-03-23 dogfood — Week 5 Lane B cursor visibility screenshots - -## Bundle metadata - -- **Bundle path:** `dogfood/20260323-week5-render-cursor/` -- **Fixture events:** `dogfood/20260322-dogfood-color/events.jsonl` -- **Replay mode:** offline replay against a synthetic exited session (`session.json`) -- **Session ID:** `01W5CURSR1774283429` - -## Scenario summary - -This bundle runs `screenshot` three ways against the same exited session: explicit `--show-cursor`, explicit `--hide-cursor`, and the default invocation with no flag. - -## Reviewer highlights - -- `01-screenshot-show-cursor.json` reports `cursorVisible=true` and produced `screenshots/show-cursor.png`. -- `02-screenshot-hide-cursor.json` reports `cursorVisible=false` and produced `screenshots/hide-cursor.png`. -- `03-screenshot-default.json` also reports `cursorVisible=false`, confirming the default behavior matches `--hide-cursor`. -- PNG digests make the pairing easy to verify: show `8d62ca0c2ce4c8b4b3c99c7374db8ef5b5896f5751b4e24758c9a1c8ddf410c9`, hide `55c7d357604a5c7bd200680d61b98d3e4dfd27a139a4c0dad6ee1df800a51c87`, default `55c7d357604a5c7bd200680d61b98d3e4dfd27a139a4c0dad6ee1df800a51c87`. -- The default and explicit hide renders match exactly, which is the key reviewer check for the default-hidden contract. - -## Artifact details - -- `screenshots/show-cursor.png` — 48895 bytes -- `screenshots/hide-cursor.png` — 48882 bytes -- `screenshots/default.png` — 48882 bytes -- All three JSON outputs include `renderProfileHash=908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8` for the shared `reference-dark` profile. diff --git a/dogfood/20260323-week5-render-cursor/run-scenario.sh b/dogfood/20260323-week5-render-cursor/run-scenario.sh deleted file mode 100755 index 2e7b5f4e..00000000 --- a/dogfood/20260323-week5-render-cursor/run-scenario.sh +++ /dev/null @@ -1,214 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -export MISE_TRUSTED_CONFIG_PATHS="${PWD}" -CLI=(npx tsx src/cli/main.ts) -BUNDLE="dogfood/20260323-week5-render-cursor" -FIXTURE_EVENTS="dogfood/20260322-dogfood-color/events.jsonl" -STATUS_TSV="$BUNDLE/command-status.tsv" -COMMANDS_SH="$BUNDLE/commands.sh" -LOG_DIR="$BUNDLE/logs" -SCREENSHOT_DIR="$BUNDLE/screenshots" -GHOSTTY_JS="node_modules/ghostty-web/dist/ghostty-web.js" -GHOSTTY_BACKUP="${GHOSTTY_JS}.week5-cursor.bak" -PATCH_MARKER="IA.prototype.requestRender = function()" - -mkdir -p "$LOG_DIR" "$SCREENSHOT_DIR" -rm -f "$STATUS_TSV" "$COMMANDS_SH" "$BUNDLE/manifest.json" -printf 'step\texit_code\tstdout\tstderr\tcommand\n' > "$STATUS_TSV" -cat > "$COMMANDS_SH" <<'COMMANDS' -#!/usr/bin/env bash -set -euo pipefail -SESSION_ID="REPLACED_BY_RUN_SCENARIO" -COMMANDS -chmod +x "$COMMANDS_SH" - -AGENT_TERMINAL_HOME="" -SESSION_ID="" -SESSION_DIR="" -cleanup() { - local status=$? - if [[ -f "$GHOSTTY_BACKUP" ]]; then - mv "$GHOSTTY_BACKUP" "$GHOSTTY_JS" - fi - if [[ -n "$AGENT_TERMINAL_HOME" && -d "$AGENT_TERMINAL_HOME" ]]; then - rm -rf "$AGENT_TERMINAL_HOME" - fi - exit "$status" -} -trap cleanup EXIT - -patch_request_render() { - python3 - "$GHOSTTY_JS" "$PATCH_MARKER" <<'PY' -from pathlib import Path -import shutil -import sys -path = Path(sys.argv[1]) -marker = sys.argv[2] -text = path.read_text() -if marker in text: - raise SystemExit(0) -backup = Path(f"{path}.week5-cursor.bak") -if not backup.exists(): - shutil.copy2(path, backup) -patch = "\nif (typeof IA !== 'undefined' && typeof IA.prototype.requestRender !== 'function') {\n IA.prototype.requestRender = function() {\n if (this.renderer && this.wasmTerm) {\n this.renderer.render(this.wasmTerm, !0, this.viewportY, this, this.scrollbarOpacity);\n }\n };\n}\n" -marker_text = "\nexport {" -idx = text.rfind(marker_text) -if idx == -1: - raise SystemExit('export marker not found in ghostty-web bundle') -path.write_text(text[:idx] + patch + text[idx:]) -PY -} - -log_cmd() { - local rendered="" - printf -v rendered '%q ' "$@" - printf '%s\n' "${rendered% }" >> "$COMMANDS_SH" -} - -run_cmd() { - local step="$1" - shift - local stdout="$BUNDLE/${step}.out" - local stderr="$LOG_DIR/${step}.stderr.txt" - log_cmd "$@" - set +e - "$@" >"$stdout" 2>"$stderr" - local code=$? - set -e - printf '%s\n' "$code" > "$LOG_DIR/${step}.exitcode" - printf '%s\t%s\t%s\t%s\t' "$step" "$code" "$stdout" "$stderr" >> "$STATUS_TSV" - local rendered="" - printf -v rendered '%q ' "$@" - printf '%s\n' "${rendered% }" >> "$STATUS_TSV" - if [[ "$code" -eq 0 ]]; then - mv "$stdout" "$BUNDLE/${step}" - fi - return 0 -} - -json_field() { - local file="$1" - local expr="$2" - python3 - "$file" "$expr" <<'PY' -import json -import sys -value = json.loads(open(sys.argv[1], 'r', encoding='utf-8').read()) -for part in sys.argv[2].split('.'): - if not part: - continue - value = value[part] -if isinstance(value, (dict, list)): - print(json.dumps(value)) -else: - print(value) -PY -} - -copy_if_exists() { - local src="$1" - local dest="$2" - if [[ -n "$src" && -f "$src" ]]; then - cp "$src" "$dest" - fi -} - -patch_request_render -AGENT_TERMINAL_HOME="$(mktemp -d)" -export AGENT_TERMINAL_HOME -SESSION_ID="01W5CURSR$(date +%s)" -SESSION_DIR="$AGENT_TERMINAL_HOME/sessions/$SESSION_ID" -mkdir -p "$SESSION_DIR/artifacts" -python3 - "$SESSION_DIR/session.json" "$SESSION_ID" <<'PY' -import json -import sys -payload = { - 'version': 1, - 'sessionId': sys.argv[2], - 'createdAt': '2026-03-23T16:00:00.000Z', - 'updatedAt': '2026-03-23T16:00:05.000Z', - 'status': 'exited', - 'command': ['echo', 'week5-cursor'], - 'cwd': '/tmp', - 'cols': 80, - 'rows': 24, - 'hostPid': None, - 'childPid': None, - 'exitCode': 0, - 'exitSignal': None, -} -with open(sys.argv[1], 'w', encoding='utf-8') as fh: - json.dump(payload, fh, indent=2) - fh.write('\n') -PY -cp "$FIXTURE_EVENTS" "$SESSION_DIR/events.jsonl" -python3 - "$COMMANDS_SH" "$SESSION_ID" <<'PY' -from pathlib import Path -import sys -path = Path(sys.argv[1]) -path.write_text(path.read_text().replace('REPLACED_BY_RUN_SCENARIO', sys.argv[2])) -PY - -run_cmd 01-screenshot-show-cursor.json "${CLI[@]}" screenshot "$SESSION_ID" --show-cursor --json -copy_if_exists "$(json_field "$BUNDLE/01-screenshot-show-cursor.json" result.artifactPath 2>/dev/null || true)" "$SCREENSHOT_DIR/show-cursor.png" -run_cmd 02-screenshot-hide-cursor.json "${CLI[@]}" screenshot "$SESSION_ID" --hide-cursor --json -copy_if_exists "$(json_field "$BUNDLE/02-screenshot-hide-cursor.json" result.artifactPath 2>/dev/null || true)" "$SCREENSHOT_DIR/hide-cursor.png" -run_cmd 03-screenshot-default.json "${CLI[@]}" screenshot "$SESSION_ID" --json -copy_if_exists "$(json_field "$BUNDLE/03-screenshot-default.json" result.artifactPath 2>/dev/null || true)" "$SCREENSHOT_DIR/default.png" -cp "$SESSION_DIR/events.jsonl" "$BUNDLE/events.jsonl" -cp "$SESSION_DIR/session.json" "$BUNDLE/session.json" - -python3 - "$BUNDLE" <<'PY' -import hashlib -import json -import sys -from pathlib import Path -bundle = Path(sys.argv[1]) -show = json.loads((bundle / '01-screenshot-show-cursor.json').read_text())['result'] -hide = json.loads((bundle / '02-screenshot-hide-cursor.json').read_text())['result'] -default = json.loads((bundle / '03-screenshot-default.json').read_text())['result'] -show_png = bundle / 'screenshots' / 'show-cursor.png' -hide_png = bundle / 'screenshots' / 'hide-cursor.png' -default_png = bundle / 'screenshots' / 'default.png' -show_sha = hashlib.sha256(show_png.read_bytes()).hexdigest() -hide_sha = hashlib.sha256(hide_png.read_bytes()).hexdigest() -default_sha = hashlib.sha256(default_png.read_bytes()).hexdigest() -notes = f'''# 2026-03-23 dogfood — Week 5 Lane B cursor visibility screenshots - -## Bundle metadata - -- **Bundle path:** `{bundle.as_posix()}/` -- **Fixture events:** `dogfood/20260322-dogfood-color/events.jsonl` -- **Replay mode:** offline replay against a synthetic exited session (`session.json`) -- **Session ID:** `{show['sessionId']}` - -## Scenario summary - -This bundle runs `screenshot` three ways against the same exited session: explicit `--show-cursor`, explicit `--hide-cursor`, and the default invocation with no flag. - -## Reviewer highlights - -- `01-screenshot-show-cursor.json` reports `cursorVisible=true` and produced `screenshots/show-cursor.png`. -- `02-screenshot-hide-cursor.json` reports `cursorVisible=false` and produced `screenshots/hide-cursor.png`. -- `03-screenshot-default.json` also reports `cursorVisible=false`, confirming the default behavior matches `--hide-cursor`. -- PNG digests make the pairing easy to verify: show `{show_sha}`, hide `{hide_sha}`, default `{default_sha}`. -- The default and explicit hide renders {'match exactly' if hide_sha == default_sha else 'do not byte-match in this run'}, which is the key reviewer check for the default-hidden contract. - -## Artifact details - -- `screenshots/show-cursor.png` — {show['pngSizeBytes']} bytes -- `screenshots/hide-cursor.png` — {hide['pngSizeBytes']} bytes -- `screenshots/default.png` — {default['pngSizeBytes']} bytes -- All three JSON outputs include `renderProfileHash={show['renderProfileHash']}` for the shared `reference-dark` profile. -''' -(bundle / 'notes.md').write_text(notes) -manifest_entries = [] -for path in sorted(bundle.rglob('*')): - if path.is_file() and path.name != 'manifest.json': - manifest_entries.append({ - 'path': path.relative_to(bundle).as_posix(), - 'sha256': __import__('hashlib').sha256(path.read_bytes()).hexdigest(), - 'size': path.stat().st_size, - }) -(bundle / 'manifest.json').write_text(json.dumps({'bundle': bundle.name, 'artifacts': manifest_entries}, indent=2) + '\n') -PY diff --git a/dogfood/20260323-week5-render-cursor/screenshots/default.png b/dogfood/20260323-week5-render-cursor/screenshots/default.png deleted file mode 100644 index 70d90921..00000000 Binary files a/dogfood/20260323-week5-render-cursor/screenshots/default.png and /dev/null differ diff --git a/dogfood/20260323-week5-render-cursor/screenshots/hide-cursor.png b/dogfood/20260323-week5-render-cursor/screenshots/hide-cursor.png deleted file mode 100644 index 70d90921..00000000 Binary files a/dogfood/20260323-week5-render-cursor/screenshots/hide-cursor.png and /dev/null differ diff --git a/dogfood/20260323-week5-render-cursor/screenshots/show-cursor.png b/dogfood/20260323-week5-render-cursor/screenshots/show-cursor.png deleted file mode 100644 index 1496fdab..00000000 Binary files a/dogfood/20260323-week5-render-cursor/screenshots/show-cursor.png and /dev/null differ diff --git a/dogfood/20260323-week5-render-cursor/session.json b/dogfood/20260323-week5-render-cursor/session.json deleted file mode 100644 index e7617f23..00000000 --- a/dogfood/20260323-week5-render-cursor/session.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": 1, - "sessionId": "01W5CURSR1774283429", - "createdAt": "2026-03-23T16:00:00.000Z", - "updatedAt": "2026-03-23T16:00:05.000Z", - "status": "exited", - "command": ["echo", "week5-cursor"], - "cwd": "/tmp", - "cols": 80, - "rows": 24, - "hostPid": null, - "childPid": null, - "exitCode": 0, - "exitSignal": null -} diff --git a/dogfood/20260323-week5-render-fonts/01-screenshot-reference-dark.json b/dogfood/20260323-week5-render-fonts/01-screenshot-reference-dark.json deleted file mode 100644 index ee54be5e..00000000 --- a/dogfood/20260323-week5-render-fonts/01-screenshot-reference-dark.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-23T16:30:14.882Z", - "result": { - "sessionId": "01W5FONTS1774283413", - "capturedAtSeq": 4, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.PZjAR98QO0/sessions/01W5FONTS1774283413/artifacts/screenshot-4-reference-dark.png", - "pngSizeBytes": 48882, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 640, - "pixelHeight": 384, - "sha256": "55c7d357604a5c7bd200680d61b98d3e4dfd27a139a4c0dad6ee1df800a51c87", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8" - } -} diff --git a/dogfood/20260323-week5-render-fonts/02-screenshot-reference-light.json b/dogfood/20260323-week5-render-fonts/02-screenshot-reference-light.json deleted file mode 100644 index 07644b79..00000000 --- a/dogfood/20260323-week5-render-fonts/02-screenshot-reference-light.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-23T16:30:21.332Z", - "result": { - "sessionId": "01W5FONTS1774283413", - "capturedAtSeq": 4, - "profileName": "reference-light", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.PZjAR98QO0/sessions/01W5FONTS1774283413/artifacts/screenshot-4-reference-light.png", - "pngSizeBytes": 48153, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 640, - "pixelHeight": 384, - "sha256": "f48f2bf87f4bbc5b051caa4b70585e3d44ba632263a11938b19df9b65b1de74d", - "renderProfileHash": "edc8d16eecb0904138aef5a119c6d2888529b16f16172971add3cf9f43368d6f" - } -} diff --git a/dogfood/20260323-week5-render-fonts/command-status.tsv b/dogfood/20260323-week5-render-fonts/command-status.tsv deleted file mode 100644 index 55c0bd5b..00000000 --- a/dogfood/20260323-week5-render-fonts/command-status.tsv +++ /dev/null @@ -1,3 +0,0 @@ -step exit_code stdout stderr command -01-screenshot-reference-dark.json 0 dogfood/20260323-week5-render-fonts/01-screenshot-reference-dark.json.out dogfood/20260323-week5-render-fonts/logs/01-screenshot-reference-dark.json.stderr.txt npx tsx src/cli/main.ts screenshot 01W5FONTS1774283413 --json --profile reference-dark -02-screenshot-reference-light.json 0 dogfood/20260323-week5-render-fonts/02-screenshot-reference-light.json.out dogfood/20260323-week5-render-fonts/logs/02-screenshot-reference-light.json.stderr.txt npx tsx src/cli/main.ts screenshot 01W5FONTS1774283413 --json --profile reference-light diff --git a/dogfood/20260323-week5-render-fonts/commands.sh b/dogfood/20260323-week5-render-fonts/commands.sh deleted file mode 100755 index 81347860..00000000 --- a/dogfood/20260323-week5-render-fonts/commands.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -SESSION_ID="01W5FONTS1774283413" -npx tsx src/cli/main.ts screenshot 01W5FONTS1774283413 --json --profile reference-dark -npx tsx src/cli/main.ts screenshot 01W5FONTS1774283413 --json --profile reference-light diff --git a/dogfood/20260323-week5-render-fonts/events.jsonl b/dogfood/20260323-week5-render-fonts/events.jsonl deleted file mode 100644 index c7ff3057..00000000 --- a/dogfood/20260323-week5-render-fonts/events.jsonl +++ /dev/null @@ -1,5 +0,0 @@ -{"seq":0,"ts":"2026-03-22T22:31:37.799Z","type":"output","payload":{"data":"COLOR GRID FIXTURE\r\nBasic background colors:\r\n\u001b[97m\u001b[40m BG-40 \u001b[0m \u001b[97m\u001b[41m BG-41 \u001b[0m \u001b[97m\u001b[42m BG-42 \u001b[0m \u001b[97m\u001b[43m BG-43 \u001b[0m \u001b[97m\u001b[44m BG-44 \u001b[0m \u001b[97m\u001b[45m BG-45 \u001b[0m \u001b[97m\u001b[46m BG-46 \u001b[0m \u001b[30m\u001b[47m BG-47 \u001b[0m\r\nBright background colors:\r\n\u001b[97m\u001b[100m BG-100 \u001b[0m \u001b[97m\u001b[101m BG-101 \u001b[0m \u001b[97m\u001b[102m BG-102 \u001b[0m \u001b[30m\u001b[103m BG-103 \u001b[0m \u001b[30m\u001b[104m BG-104 \u001b[0m \u001b[30m\u001b[105m BG-105 \u001b[0m \u001b[30m\u001b[106m BG-106 \u001b[0m \u001b[30m\u001b[107m BG-107 \u001b[0m\r\n256-color sample backgrounds:\r\n\u001b[97m\u001b[48;5;16m IDX-016 \u001b[0m \u001b[97m\u001b[48;5;22m IDX-022 \u001b[0m \u001b[97m\u001b[48;5;28m IDX-028 \u001b[0m \u001b[97m\u001b[48;5;34m IDX-034 \u001b[0m \u001b[97m\u001b[48;5;40m IDX-040 \u001b[0m \u001b[97m\u001b[48;5;46m IDX-046 \u001b[0m \u001b[97m\u001b[48;5;82m IDX-082 \u001b[0m \u001b[30m\u001b[48;5;118m IDX-118 \u001b[0m \u001b[30m\u001b[48;5;154m IDX-154 \u001b[0m \u001b[30m\u001b[48;5;190m IDX-190 \u001b[0m \u001b[30m\u001b[48;5;196m IDX-196 \u001b[0m \u001b[30m\u001b[48;5;202m IDX-202 \u001b[0m\r\nTruecolor sample backgrounds:\r\n\u001b[30m\u001b[48;2;255;90;90m TC-RED \u001b[0m \u001b[30m\u001b[48;2;80;220;120m TC-GRN \u001b[0m \u001b[97m\u001b[48;2;90;140;255m TC-BLU \u001b[0m \u001b[30m\u001b[48;2;255;190;64m TC-GLD \u001b[0m\r\nForeground sample labels:\r\n\u001b[31mFG-31 \u001b[0m \u001b[92mFG-92 \u001b[0m \u001b[38;5;45mFG5-45 \u001b[0m \u001b[38;5;201mFG5-201 \u001b[0m \u001b[38;2;255;140;40mFG2-ORANGE \u001b[0m \u001b[38;2;80;220;255mFG2-CYAN \u001b[0m\r\n\u001b[0mCOLOR GRID COMPLETE\r\n"}} -{"seq":1,"ts":"2026-03-22T22:31:39.022Z","type":"output","payload":{"data":"\\"}} -{"seq":2,"ts":"2026-03-22T22:31:39.023Z","type":"output","payload":{"data":"\u001b[1G"}} -{"seq":3,"ts":"2026-03-22T22:31:39.023Z","type":"output","payload":{"data":"\u001b[0K"}} -{"seq":4,"ts":"2026-03-22T22:31:39.032Z","type":"exit","payload":{"exitCode":0,"exitSignal":null}} diff --git a/dogfood/20260323-week5-render-fonts/logs/01-screenshot-reference-dark.json.exitcode b/dogfood/20260323-week5-render-fonts/logs/01-screenshot-reference-dark.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-fonts/logs/01-screenshot-reference-dark.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-fonts/logs/01-screenshot-reference-dark.json.stderr.txt b/dogfood/20260323-week5-render-fonts/logs/01-screenshot-reference-dark.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-fonts/logs/02-screenshot-reference-light.json.exitcode b/dogfood/20260323-week5-render-fonts/logs/02-screenshot-reference-light.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-fonts/logs/02-screenshot-reference-light.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-fonts/logs/02-screenshot-reference-light.json.stderr.txt b/dogfood/20260323-week5-render-fonts/logs/02-screenshot-reference-light.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-fonts/manifest.json b/dogfood/20260323-week5-render-fonts/manifest.json deleted file mode 100644 index 11fa3e83..00000000 --- a/dogfood/20260323-week5-render-fonts/manifest.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "bundle": "20260323-week5-render-fonts", - "artifacts": [ - { - "path": "01-screenshot-reference-dark.json", - "sha256": "51af1332da8838e27e248f40a868c1a19ea22f5265bc6d2079d40d4eb66f4731", - "size": 667 - }, - { - "path": "02-screenshot-reference-light.json", - "sha256": "b24753969c2a89c4e679b1555d23b334bfe045517fae99b338588bc82cecda12", - "size": 669 - }, - { - "path": "command-status.tsv", - "sha256": "75dfd042eded2af131e3bee2a7beca66a9cf59e7c6f1a6e85c1183359ce809a8", - "size": 607 - }, - { - "path": "commands.sh", - "sha256": "b22f7a6f70f9afcff3daa7bcbc2b9802fa238bd7e8c26500f79f0c15e0137fdf", - "size": 246 - }, - { - "path": "events.jsonl", - "sha256": "e2ad6af021b8f7e262c8fa202ed9f305cabf1a93ce8d8f3d3760502c067b0abc", - "size": 2287 - }, - { - "path": "logs/01-screenshot-reference-dark.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/01-screenshot-reference-dark.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "logs/02-screenshot-reference-light.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/02-screenshot-reference-light.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "notes.md", - "sha256": "367916eab84c2df8e112e70d17655e5822c7959a4d0ec1776bb8ce8af10acccb", - "size": 1892 - }, - { - "path": "run-scenario.sh", - "sha256": "52a4143028f4ed18736c01ad183972167db3b85dabd79aec5bd4e281a14b5fd2", - "size": 7384 - }, - { - "path": "screenshots/reference-dark.png", - "sha256": "55c7d357604a5c7bd200680d61b98d3e4dfd27a139a4c0dad6ee1df800a51c87", - "size": 48882 - }, - { - "path": "screenshots/reference-light.png", - "sha256": "f48f2bf87f4bbc5b051caa4b70585e3d44ba632263a11938b19df9b65b1de74d", - "size": 48153 - }, - { - "path": "session.json", - "sha256": "e237598783b20d0125518428d835b77cca0fe457e16cd4ea2b5331b5551b6776", - "size": 338 - } - ] -} diff --git a/dogfood/20260323-week5-render-fonts/notes.md b/dogfood/20260323-week5-render-fonts/notes.md deleted file mode 100644 index 2528571c..00000000 --- a/dogfood/20260323-week5-render-fonts/notes.md +++ /dev/null @@ -1,25 +0,0 @@ -# 2026-03-23 dogfood — Week 5 Lane B bundled font rendering - -## Bundle metadata - -- **Bundle path:** `dogfood/20260323-week5-render-fonts/` -- **Fixture events:** `dogfood/20260323-week5-render-fonts/events.jsonl` copied from `dogfood/20260322-dogfood-color/events.jsonl` -- **Replay mode:** offline replay against a synthetic exited session (`session.json`) -- **Session ID:** `01W5FONTS1774283413` - -## Scenario summary - -This bundle replays the color-grid fixture twice through `screenshot`, once with `reference-dark` and once with `reference-light`, to prove the built-in render profiles can render reviewer-facing PNGs from the bundled JetBrains Mono font path. - -## Reviewer highlights - -- `01-screenshot-reference-dark.json` reported `renderProfileHash=908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8` and produced `screenshots/reference-dark.png`. -- `02-screenshot-reference-light.json` reported `renderProfileHash=edc8d16eecb0904138aef5a119c6d2888529b16f16172971add3cf9f43368d6f` and produced `screenshots/reference-light.png`. -- Both built-in profiles use the bundled **JetBrains Mono** family with a baked-in `fontAssetIdentity`; the hashes differ here because the full render profile also includes theme/background/foreground fields, but each hash is deterministic for its exact built-in profile definition. -- Both screenshots replayed the same 80×24 exited session at `capturedAtSeq=4`, so reviewers can compare just the profile/rendering differences. - -## Artifact details - -- `screenshots/reference-dark.png` — 48882 bytes, SHA-256 `55c7d357604a5c7bd200680d61b98d3e4dfd27a139a4c0dad6ee1df800a51c87` -- `screenshots/reference-light.png` — 48153 bytes, SHA-256 `f48f2bf87f4bbc5b051caa4b70585e3d44ba632263a11938b19df9b65b1de74d` -- Both JSON outputs include `rendererBackend: "ghostty-web"`, pixel dimensions, and the emitted `renderProfileHash` for reproducibility. diff --git a/dogfood/20260323-week5-render-fonts/run-scenario.sh b/dogfood/20260323-week5-render-fonts/run-scenario.sh deleted file mode 100755 index f74c0b31..00000000 --- a/dogfood/20260323-week5-render-fonts/run-scenario.sh +++ /dev/null @@ -1,207 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -export MISE_TRUSTED_CONFIG_PATHS="${PWD}" -CLI=(npx tsx src/cli/main.ts) -BUNDLE="dogfood/20260323-week5-render-fonts" -FIXTURE_EVENTS="dogfood/20260322-dogfood-color/events.jsonl" -STATUS_TSV="$BUNDLE/command-status.tsv" -COMMANDS_SH="$BUNDLE/commands.sh" -LOG_DIR="$BUNDLE/logs" -SCREENSHOT_DIR="$BUNDLE/screenshots" -GHOSTTY_JS="node_modules/ghostty-web/dist/ghostty-web.js" -GHOSTTY_BACKUP="${GHOSTTY_JS}.week5-fonts.bak" -PATCH_MARKER="IA.prototype.requestRender = function()" - -mkdir -p "$LOG_DIR" "$SCREENSHOT_DIR" -rm -f "$STATUS_TSV" "$COMMANDS_SH" "$BUNDLE/manifest.json" -printf 'step\texit_code\tstdout\tstderr\tcommand\n' > "$STATUS_TSV" -cat > "$COMMANDS_SH" <<'COMMANDS' -#!/usr/bin/env bash -set -euo pipefail -SESSION_ID="REPLACED_BY_RUN_SCENARIO" -COMMANDS -chmod +x "$COMMANDS_SH" - -AGENT_TERMINAL_HOME="" -SESSION_ID="" -SESSION_DIR="" - -cleanup() { - local status=$? - if [[ -f "$GHOSTTY_BACKUP" ]]; then - mv "$GHOSTTY_BACKUP" "$GHOSTTY_JS" - fi - if [[ -n "$AGENT_TERMINAL_HOME" && -d "$AGENT_TERMINAL_HOME" ]]; then - rm -rf "$AGENT_TERMINAL_HOME" - fi - exit "$status" -} -trap cleanup EXIT - -patch_request_render() { - python3 - "$GHOSTTY_JS" "$PATCH_MARKER" <<'PY' -from pathlib import Path -import shutil -import sys -path = Path(sys.argv[1]) -marker = sys.argv[2] -text = path.read_text() -if marker in text: - raise SystemExit(0) -backup = Path(f"{path}.week5-fonts.bak") -if not backup.exists(): - shutil.copy2(path, backup) -patch = "\nif (typeof IA !== 'undefined' && typeof IA.prototype.requestRender !== 'function') {\n IA.prototype.requestRender = function() {\n if (this.renderer && this.wasmTerm) {\n this.renderer.render(this.wasmTerm, !0, this.viewportY, this, this.scrollbarOpacity);\n }\n };\n}\n" -marker_text = "\nexport {" -idx = text.rfind(marker_text) -if idx == -1: - raise SystemExit('export marker not found in ghostty-web bundle') -path.write_text(text[:idx] + patch + text[idx:]) -PY -} - -log_cmd() { - local rendered="" - printf -v rendered '%q ' "$@" - printf '%s\n' "${rendered% }" >> "$COMMANDS_SH" -} - -run_cmd() { - local step="$1" - shift - local stdout="$BUNDLE/${step}.out" - local stderr="$LOG_DIR/${step}.stderr.txt" - log_cmd "$@" - set +e - "$@" >"$stdout" 2>"$stderr" - local code=$? - set -e - printf '%s\n' "$code" > "$LOG_DIR/${step}.exitcode" - printf '%s\t%s\t%s\t%s\t' "$step" "$code" "$stdout" "$stderr" >> "$STATUS_TSV" - local rendered="" - printf -v rendered '%q ' "$@" - printf '%s\n' "${rendered% }" >> "$STATUS_TSV" - if [[ "$code" -eq 0 ]]; then - mv "$stdout" "$BUNDLE/${step}" - fi - return 0 -} - -json_field() { - local file="$1" - local expr="$2" - python3 - "$file" "$expr" <<'PY' -import json -import sys -value = json.loads(open(sys.argv[1], 'r', encoding='utf-8').read()) -for part in sys.argv[2].split('.'): - if not part: - continue - value = value[part] -if isinstance(value, (dict, list)): - print(json.dumps(value)) -else: - print(value) -PY -} - -copy_if_exists() { - local src="$1" - local dest="$2" - if [[ -n "$src" && -f "$src" ]]; then - cp "$src" "$dest" - fi -} - -patch_request_render -AGENT_TERMINAL_HOME="$(mktemp -d)" -export AGENT_TERMINAL_HOME -SESSION_ID="01W5FONTS$(date +%s)" -SESSION_DIR="$AGENT_TERMINAL_HOME/sessions/$SESSION_ID" -mkdir -p "$SESSION_DIR/artifacts" -python3 - "$SESSION_DIR/session.json" "$SESSION_ID" <<'PY' -import json -import sys -payload = { - 'version': 1, - 'sessionId': sys.argv[2], - 'createdAt': '2026-03-23T16:00:00.000Z', - 'updatedAt': '2026-03-23T16:00:05.000Z', - 'status': 'exited', - 'command': ['echo', 'week5-fonts'], - 'cwd': '/tmp', - 'cols': 80, - 'rows': 24, - 'hostPid': None, - 'childPid': None, - 'exitCode': 0, - 'exitSignal': None, -} -with open(sys.argv[1], 'w', encoding='utf-8') as fh: - json.dump(payload, fh, indent=2) - fh.write('\n') -PY -cp "$FIXTURE_EVENTS" "$SESSION_DIR/events.jsonl" -python3 - "$COMMANDS_SH" "$SESSION_ID" <<'PY' -from pathlib import Path -import sys -path = Path(sys.argv[1]) -path.write_text(path.read_text().replace('REPLACED_BY_RUN_SCENARIO', sys.argv[2])) -PY - -run_cmd 01-screenshot-reference-dark.json "${CLI[@]}" screenshot "$SESSION_ID" --json --profile reference-dark -run_cmd 02-screenshot-reference-light.json "${CLI[@]}" screenshot "$SESSION_ID" --json --profile reference-light - -copy_if_exists "$(json_field "$BUNDLE/01-screenshot-reference-dark.json" result.artifactPath 2>/dev/null || true)" "$SCREENSHOT_DIR/reference-dark.png" -copy_if_exists "$(json_field "$BUNDLE/02-screenshot-reference-light.json" result.artifactPath 2>/dev/null || true)" "$SCREENSHOT_DIR/reference-light.png" -copy_if_exists "$SESSION_DIR/events.jsonl" "$BUNDLE/events.jsonl" -copy_if_exists "$SESSION_DIR/session.json" "$BUNDLE/session.json" - -python3 - "$BUNDLE" <<'PY' -import json -import os -import sys -from pathlib import Path -bundle = Path(sys.argv[1]) -dark = json.loads((bundle / '01-screenshot-reference-dark.json').read_text()) -light = json.loads((bundle / '02-screenshot-reference-light.json').read_text()) -dark_result = dark['result'] -light_result = light['result'] -notes = f'''# 2026-03-23 dogfood — Week 5 Lane B bundled font rendering - -## Bundle metadata - -- **Bundle path:** `{bundle.as_posix()}/` -- **Fixture events:** `{(bundle / 'events.jsonl').as_posix()}` copied from `dogfood/20260322-dogfood-color/events.jsonl` -- **Replay mode:** offline replay against a synthetic exited session (`session.json`) -- **Session ID:** `{dark_result['sessionId']}` - -## Scenario summary - -This bundle replays the color-grid fixture twice through `screenshot`, once with `reference-dark` and once with `reference-light`, to prove the built-in render profiles can render reviewer-facing PNGs from the bundled JetBrains Mono font path. - -## Reviewer highlights - -- `01-screenshot-reference-dark.json` reported `renderProfileHash={dark_result['renderProfileHash']}` and produced `screenshots/reference-dark.png`. -- `02-screenshot-reference-light.json` reported `renderProfileHash={light_result['renderProfileHash']}` and produced `screenshots/reference-light.png`. -- Both built-in profiles use the bundled **JetBrains Mono** family with a baked-in `fontAssetIdentity`; the hashes differ here because the full render profile also includes theme/background/foreground fields, but each hash is deterministic for its exact built-in profile definition. -- Both screenshots replayed the same 80×24 exited session at `capturedAtSeq=4`, so reviewers can compare just the profile/rendering differences. - -## Artifact details - -- `screenshots/reference-dark.png` — {dark_result['pngSizeBytes']} bytes, SHA-256 `{dark_result['sha256']}` -- `screenshots/reference-light.png` — {light_result['pngSizeBytes']} bytes, SHA-256 `{light_result['sha256']}` -- Both JSON outputs include `rendererBackend: "ghostty-web"`, pixel dimensions, and the emitted `renderProfileHash` for reproducibility. -''' -(bundle / 'notes.md').write_text(notes) -manifest_entries = [] -for path in sorted(bundle.rglob('*')): - if path.is_file() and path.name != 'manifest.json': - manifest_entries.append({ - 'path': path.relative_to(bundle).as_posix(), - 'sha256': __import__('hashlib').sha256(path.read_bytes()).hexdigest(), - 'size': path.stat().st_size, - }) -(bundle / 'manifest.json').write_text(json.dumps({'bundle': bundle.name, 'artifacts': manifest_entries}, indent=2) + '\n') -PY diff --git a/dogfood/20260323-week5-render-fonts/screenshots/reference-dark.png b/dogfood/20260323-week5-render-fonts/screenshots/reference-dark.png deleted file mode 100644 index 70d90921..00000000 Binary files a/dogfood/20260323-week5-render-fonts/screenshots/reference-dark.png and /dev/null differ diff --git a/dogfood/20260323-week5-render-fonts/screenshots/reference-light.png b/dogfood/20260323-week5-render-fonts/screenshots/reference-light.png deleted file mode 100644 index ed475dac..00000000 Binary files a/dogfood/20260323-week5-render-fonts/screenshots/reference-light.png and /dev/null differ diff --git a/dogfood/20260323-week5-render-fonts/session.json b/dogfood/20260323-week5-render-fonts/session.json deleted file mode 100644 index 1986a253..00000000 --- a/dogfood/20260323-week5-render-fonts/session.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": 1, - "sessionId": "01W5FONTS1774283413", - "createdAt": "2026-03-23T16:00:00.000Z", - "updatedAt": "2026-03-23T16:00:05.000Z", - "status": "exited", - "command": ["echo", "week5-fonts"], - "cwd": "/tmp", - "cols": 80, - "rows": 24, - "hostPid": null, - "childPid": null, - "exitCode": 0, - "exitSignal": null -} diff --git a/dogfood/20260323-week5-render-timing/01-record-export-recorded.json b/dogfood/20260323-week5-render-timing/01-record-export-recorded.json deleted file mode 100644 index 9cd0d94a..00000000 --- a/dogfood/20260323-week5-render-timing/01-record-export-recorded.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-23T16:30:52.482Z", - "result": { - "sessionId": "01W5TIMNG1774283448", - "format": "webm", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_1fd95a244c/dogfood/20260323-week5-render-timing/recordings/recorded.webm", - "bytes": 91218, - "sha256": "9df78f24e3d6768f49773c51f57cdd231f9739f2cf94a9cd04954f5a1db25ae2", - "capturedAtSeq": 4, - "durationMs": 1233, - "metadata": { - "width": 80, - "height": 24, - "profileName": "reference-dark", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8", - "timingMode": "recorded", - "outputEventCount": 4, - "resizeEventCount": 0 - } - } -} diff --git a/dogfood/20260323-week5-render-timing/02-record-export-accelerated.json b/dogfood/20260323-week5-render-timing/02-record-export-accelerated.json deleted file mode 100644 index 7e8b05ee..00000000 --- a/dogfood/20260323-week5-render-timing/02-record-export-accelerated.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-23T16:30:55.288Z", - "result": { - "sessionId": "01W5TIMNG1774283448", - "format": "webm", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_1fd95a244c/dogfood/20260323-week5-render-timing/recordings/accelerated.webm", - "bytes": 112431, - "sha256": "9ee75f278e14c3b22a30c50b1be95c0f582f831a1d8721e857301e5d29fafe63", - "capturedAtSeq": 4, - "durationMs": 1233, - "metadata": { - "width": 80, - "height": 24, - "profileName": "reference-dark", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8", - "timingMode": "accelerated", - "outputEventCount": 4, - "resizeEventCount": 0 - } - } -} diff --git a/dogfood/20260323-week5-render-timing/03-record-export-max-speed.json b/dogfood/20260323-week5-render-timing/03-record-export-max-speed.json deleted file mode 100644 index 2f0ea3d9..00000000 --- a/dogfood/20260323-week5-render-timing/03-record-export-max-speed.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-23T16:30:57.426Z", - "result": { - "sessionId": "01W5TIMNG1774283448", - "format": "webm", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_1fd95a244c/dogfood/20260323-week5-render-timing/recordings/max-speed.webm", - "bytes": 109662, - "sha256": "04492594438343dc7ea276f41e30d515447f6c3e7f14a7ec22b5113b45a9abce", - "capturedAtSeq": 4, - "durationMs": 1233, - "metadata": { - "width": 80, - "height": 24, - "profileName": "reference-dark", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8", - "timingMode": "max-speed", - "outputEventCount": 4, - "resizeEventCount": 0 - } - } -} diff --git a/dogfood/20260323-week5-render-timing/command-status.tsv b/dogfood/20260323-week5-render-timing/command-status.tsv deleted file mode 100644 index e5a24fd8..00000000 --- a/dogfood/20260323-week5-render-timing/command-status.tsv +++ /dev/null @@ -1,4 +0,0 @@ -step exit_code stdout stderr command -01-record-export-recorded.json 0 dogfood/20260323-week5-render-timing/01-record-export-recorded.json.out dogfood/20260323-week5-render-timing/logs/01-record-export-recorded.json.stderr.txt npx tsx src/cli/main.ts record export 01W5TIMNG1774283448 --format webm --timing recorded --out dogfood/20260323-week5-render-timing/recordings/recorded.webm --json -02-record-export-accelerated.json 0 dogfood/20260323-week5-render-timing/02-record-export-accelerated.json.out dogfood/20260323-week5-render-timing/logs/02-record-export-accelerated.json.stderr.txt npx tsx src/cli/main.ts record export 01W5TIMNG1774283448 --format webm --timing accelerated --out dogfood/20260323-week5-render-timing/recordings/accelerated.webm --json -03-record-export-max-speed.json 0 dogfood/20260323-week5-render-timing/03-record-export-max-speed.json.out dogfood/20260323-week5-render-timing/logs/03-record-export-max-speed.json.stderr.txt npx tsx src/cli/main.ts record export 01W5TIMNG1774283448 --format webm --timing max-speed --out dogfood/20260323-week5-render-timing/recordings/max-speed.webm --json diff --git a/dogfood/20260323-week5-render-timing/commands.sh b/dogfood/20260323-week5-render-timing/commands.sh deleted file mode 100755 index b06f7237..00000000 --- a/dogfood/20260323-week5-render-timing/commands.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -SESSION_ID="01W5TIMNG1774283448" -npx tsx src/cli/main.ts record export 01W5TIMNG1774283448 --format webm --timing recorded --out dogfood/20260323-week5-render-timing/recordings/recorded.webm --json -npx tsx src/cli/main.ts record export 01W5TIMNG1774283448 --format webm --timing accelerated --out dogfood/20260323-week5-render-timing/recordings/accelerated.webm --json -npx tsx src/cli/main.ts record export 01W5TIMNG1774283448 --format webm --timing max-speed --out dogfood/20260323-week5-render-timing/recordings/max-speed.webm --json diff --git a/dogfood/20260323-week5-render-timing/events.jsonl b/dogfood/20260323-week5-render-timing/events.jsonl deleted file mode 100644 index c7ff3057..00000000 --- a/dogfood/20260323-week5-render-timing/events.jsonl +++ /dev/null @@ -1,5 +0,0 @@ -{"seq":0,"ts":"2026-03-22T22:31:37.799Z","type":"output","payload":{"data":"COLOR GRID FIXTURE\r\nBasic background colors:\r\n\u001b[97m\u001b[40m BG-40 \u001b[0m \u001b[97m\u001b[41m BG-41 \u001b[0m \u001b[97m\u001b[42m BG-42 \u001b[0m \u001b[97m\u001b[43m BG-43 \u001b[0m \u001b[97m\u001b[44m BG-44 \u001b[0m \u001b[97m\u001b[45m BG-45 \u001b[0m \u001b[97m\u001b[46m BG-46 \u001b[0m \u001b[30m\u001b[47m BG-47 \u001b[0m\r\nBright background colors:\r\n\u001b[97m\u001b[100m BG-100 \u001b[0m \u001b[97m\u001b[101m BG-101 \u001b[0m \u001b[97m\u001b[102m BG-102 \u001b[0m \u001b[30m\u001b[103m BG-103 \u001b[0m \u001b[30m\u001b[104m BG-104 \u001b[0m \u001b[30m\u001b[105m BG-105 \u001b[0m \u001b[30m\u001b[106m BG-106 \u001b[0m \u001b[30m\u001b[107m BG-107 \u001b[0m\r\n256-color sample backgrounds:\r\n\u001b[97m\u001b[48;5;16m IDX-016 \u001b[0m \u001b[97m\u001b[48;5;22m IDX-022 \u001b[0m \u001b[97m\u001b[48;5;28m IDX-028 \u001b[0m \u001b[97m\u001b[48;5;34m IDX-034 \u001b[0m \u001b[97m\u001b[48;5;40m IDX-040 \u001b[0m \u001b[97m\u001b[48;5;46m IDX-046 \u001b[0m \u001b[97m\u001b[48;5;82m IDX-082 \u001b[0m \u001b[30m\u001b[48;5;118m IDX-118 \u001b[0m \u001b[30m\u001b[48;5;154m IDX-154 \u001b[0m \u001b[30m\u001b[48;5;190m IDX-190 \u001b[0m \u001b[30m\u001b[48;5;196m IDX-196 \u001b[0m \u001b[30m\u001b[48;5;202m IDX-202 \u001b[0m\r\nTruecolor sample backgrounds:\r\n\u001b[30m\u001b[48;2;255;90;90m TC-RED \u001b[0m \u001b[30m\u001b[48;2;80;220;120m TC-GRN \u001b[0m \u001b[97m\u001b[48;2;90;140;255m TC-BLU \u001b[0m \u001b[30m\u001b[48;2;255;190;64m TC-GLD \u001b[0m\r\nForeground sample labels:\r\n\u001b[31mFG-31 \u001b[0m \u001b[92mFG-92 \u001b[0m \u001b[38;5;45mFG5-45 \u001b[0m \u001b[38;5;201mFG5-201 \u001b[0m \u001b[38;2;255;140;40mFG2-ORANGE \u001b[0m \u001b[38;2;80;220;255mFG2-CYAN \u001b[0m\r\n\u001b[0mCOLOR GRID COMPLETE\r\n"}} -{"seq":1,"ts":"2026-03-22T22:31:39.022Z","type":"output","payload":{"data":"\\"}} -{"seq":2,"ts":"2026-03-22T22:31:39.023Z","type":"output","payload":{"data":"\u001b[1G"}} -{"seq":3,"ts":"2026-03-22T22:31:39.023Z","type":"output","payload":{"data":"\u001b[0K"}} -{"seq":4,"ts":"2026-03-22T22:31:39.032Z","type":"exit","payload":{"exitCode":0,"exitSignal":null}} diff --git a/dogfood/20260323-week5-render-timing/logs/01-record-export-recorded.json.exitcode b/dogfood/20260323-week5-render-timing/logs/01-record-export-recorded.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-timing/logs/01-record-export-recorded.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-timing/logs/01-record-export-recorded.json.stderr.txt b/dogfood/20260323-week5-render-timing/logs/01-record-export-recorded.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-timing/logs/02-record-export-accelerated.json.exitcode b/dogfood/20260323-week5-render-timing/logs/02-record-export-accelerated.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-timing/logs/02-record-export-accelerated.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-timing/logs/02-record-export-accelerated.json.stderr.txt b/dogfood/20260323-week5-render-timing/logs/02-record-export-accelerated.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-timing/logs/03-record-export-max-speed.json.exitcode b/dogfood/20260323-week5-render-timing/logs/03-record-export-max-speed.json.exitcode deleted file mode 100644 index 573541ac..00000000 --- a/dogfood/20260323-week5-render-timing/logs/03-record-export-max-speed.json.exitcode +++ /dev/null @@ -1 +0,0 @@ -0 diff --git a/dogfood/20260323-week5-render-timing/logs/03-record-export-max-speed.json.stderr.txt b/dogfood/20260323-week5-render-timing/logs/03-record-export-max-speed.json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-render-timing/manifest.json b/dogfood/20260323-week5-render-timing/manifest.json deleted file mode 100644 index df40dacb..00000000 --- a/dogfood/20260323-week5-render-timing/manifest.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "bundle": "20260323-week5-render-timing", - "artifacts": [ - { - "path": "01-record-export-recorded.json", - "sha256": "0dbb3bc8f0c2467cb4710b1ac2f6d4a5dd3f72406bee2a423644d677b0040ae2", - "size": 750 - }, - { - "path": "02-record-export-accelerated.json", - "sha256": "f467e191a9c8742aee5689295cf3b32b0b28b5443eec7c7837266ba4216561e6", - "size": 757 - }, - { - "path": "03-record-export-max-speed.json", - "sha256": "f998ebcf154d5a932c0e6d58f0ce9d8b743877c9aed5b31ac68fd53c9e9432d0", - "size": 753 - }, - { - "path": "command-status.tsv", - "sha256": "d86965b3ef2c9ca30334ea317eca73b557a89d8cb72d9901952b8a8932a687d2", - "size": 1119 - }, - { - "path": "commands.sh", - "sha256": "14f0357ab5fd012cd1a9cb63a2b41f145edea683b0a90ff50ea2f13bd830b726", - "size": 574 - }, - { - "path": "events.jsonl", - "sha256": "e2ad6af021b8f7e262c8fa202ed9f305cabf1a93ce8d8f3d3760502c067b0abc", - "size": 2287 - }, - { - "path": "logs/01-record-export-recorded.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/01-record-export-recorded.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "logs/02-record-export-accelerated.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/02-record-export-accelerated.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "logs/03-record-export-max-speed.json.exitcode", - "sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa", - "size": 2 - }, - { - "path": "logs/03-record-export-max-speed.json.stderr.txt", - "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "size": 0 - }, - { - "path": "notes.md", - "sha256": "33dffa7b5c9be74c132354cce309b3997adc551df00234185c0f570febbe0891", - "size": 1748 - }, - { - "path": "recordings/accelerated.webm", - "sha256": "9ee75f278e14c3b22a30c50b1be95c0f582f831a1d8721e857301e5d29fafe63", - "size": 112431 - }, - { - "path": "recordings/max-speed.webm", - "sha256": "04492594438343dc7ea276f41e30d515447f6c3e7f14a7ec22b5113b45a9abce", - "size": 109662 - }, - { - "path": "recordings/recorded.webm", - "sha256": "9df78f24e3d6768f49773c51f57cdd231f9739f2cf94a9cd04954f5a1db25ae2", - "size": 91218 - }, - { - "path": "run-scenario.sh", - "sha256": "2ccab51aca600257b5b97ffd0debb527c9d56b6853b9622fd4ec06aeae4ac12d", - "size": 5854 - }, - { - "path": "session.json", - "sha256": "1660fdbe5aded46e6ff478d086e634bd68d5372a435e03550e47d72d416b585c", - "size": 339 - } - ] -} diff --git a/dogfood/20260323-week5-render-timing/notes.md b/dogfood/20260323-week5-render-timing/notes.md deleted file mode 100644 index 5417128b..00000000 --- a/dogfood/20260323-week5-render-timing/notes.md +++ /dev/null @@ -1,27 +0,0 @@ -# 2026-03-23 dogfood — Week 5 Lane B WebM timing modes - -## Bundle metadata - -- **Bundle path:** `dogfood/20260323-week5-render-timing/` -- **Fixture events:** `dogfood/20260322-dogfood-color/events.jsonl` -- **Replay mode:** offline replay against a synthetic exited session (`session.json`) -- **Session ID:** `01W5TIMNG1774283448` - -## Scenario summary - -This bundle exports the same exited session to WebM three times, varying only `--timing recorded|accelerated|max-speed`. - -## Reviewer highlights - -- `01-record-export-recorded.json` reports `metadata.timingMode="recorded"` and wrote `recordings/recorded.webm` (91218 bytes). -- `02-record-export-accelerated.json` reports `metadata.timingMode="accelerated"` and wrote `recordings/accelerated.webm` (112431 bytes). -- `03-record-export-max-speed.json` reports `metadata.timingMode="max-speed"` and wrote `recordings/max-speed.webm` (109662 bytes). -- The implementation default is `accelerated`; this bundle captures all three explicit modes so reviewers can compare the generated files directly. -- For this short color-grid replay, all three exports report the same event-span `durationMs=1233` because the underlying output timestamps are already close together; the reviewer-visible proof here is the distinct `timingMode` metadata plus differing WebM file sizes. - -## Comparison guidance - -- `recorded` preserves the real event gaps from the log. -- `accelerated` caps long gaps while keeping a readable replay speed. -- `max-speed` minimizes delays further (subject to the renderer's minimum frame hold). -- The JSON payloads also carry a shared `renderProfileHash=908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8` for the bundled `reference-dark` profile used for all three exports. diff --git a/dogfood/20260323-week5-render-timing/recordings/accelerated.webm b/dogfood/20260323-week5-render-timing/recordings/accelerated.webm deleted file mode 100644 index 7b961684..00000000 Binary files a/dogfood/20260323-week5-render-timing/recordings/accelerated.webm and /dev/null differ diff --git a/dogfood/20260323-week5-render-timing/recordings/max-speed.webm b/dogfood/20260323-week5-render-timing/recordings/max-speed.webm deleted file mode 100644 index 3545e87f..00000000 Binary files a/dogfood/20260323-week5-render-timing/recordings/max-speed.webm and /dev/null differ diff --git a/dogfood/20260323-week5-render-timing/recordings/recorded.webm b/dogfood/20260323-week5-render-timing/recordings/recorded.webm deleted file mode 100644 index 5d87c33d..00000000 Binary files a/dogfood/20260323-week5-render-timing/recordings/recorded.webm and /dev/null differ diff --git a/dogfood/20260323-week5-render-timing/run-scenario.sh b/dogfood/20260323-week5-render-timing/run-scenario.sh deleted file mode 100755 index 13ffad6d..00000000 --- a/dogfood/20260323-week5-render-timing/run-scenario.sh +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -export MISE_TRUSTED_CONFIG_PATHS="${PWD}" -CLI=(npx tsx src/cli/main.ts) -BUNDLE="dogfood/20260323-week5-render-timing" -FIXTURE_EVENTS="dogfood/20260322-dogfood-color/events.jsonl" -STATUS_TSV="$BUNDLE/command-status.tsv" -COMMANDS_SH="$BUNDLE/commands.sh" -LOG_DIR="$BUNDLE/logs" -RECORDING_DIR="$BUNDLE/recordings" - -mkdir -p "$LOG_DIR" "$RECORDING_DIR" -rm -f "$STATUS_TSV" "$COMMANDS_SH" "$BUNDLE/manifest.json" -printf 'step\texit_code\tstdout\tstderr\tcommand\n' > "$STATUS_TSV" -cat > "$COMMANDS_SH" <<'COMMANDS' -#!/usr/bin/env bash -set -euo pipefail -SESSION_ID="REPLACED_BY_RUN_SCENARIO" -COMMANDS -chmod +x "$COMMANDS_SH" - -AGENT_TERMINAL_HOME="" -SESSION_ID="" -SESSION_DIR="" -cleanup() { - local status=$? - if [[ -n "$AGENT_TERMINAL_HOME" && -d "$AGENT_TERMINAL_HOME" ]]; then - rm -rf "$AGENT_TERMINAL_HOME" - fi - exit "$status" -} -trap cleanup EXIT - -log_cmd() { - local rendered="" - printf -v rendered '%q ' "$@" - printf '%s\n' "${rendered% }" >> "$COMMANDS_SH" -} - -run_cmd() { - local step="$1" - shift - local stdout="$BUNDLE/${step}.out" - local stderr="$LOG_DIR/${step}.stderr.txt" - log_cmd "$@" - set +e - "$@" >"$stdout" 2>"$stderr" - local code=$? - set -e - printf '%s\n' "$code" > "$LOG_DIR/${step}.exitcode" - printf '%s\t%s\t%s\t%s\t' "$step" "$code" "$stdout" "$stderr" >> "$STATUS_TSV" - local rendered="" - printf -v rendered '%q ' "$@" - printf '%s\n' "${rendered% }" >> "$STATUS_TSV" - if [[ "$code" -eq 0 ]]; then - mv "$stdout" "$BUNDLE/${step}" - fi - return 0 -} - -AGENT_TERMINAL_HOME="$(mktemp -d)" -export AGENT_TERMINAL_HOME -SESSION_ID="01W5TIMNG$(date +%s)" -SESSION_DIR="$AGENT_TERMINAL_HOME/sessions/$SESSION_ID" -mkdir -p "$SESSION_DIR/artifacts" -python3 - "$SESSION_DIR/session.json" "$SESSION_ID" <<'PY' -import json -import sys -payload = { - 'version': 1, - 'sessionId': sys.argv[2], - 'createdAt': '2026-03-23T16:00:00.000Z', - 'updatedAt': '2026-03-23T16:00:05.000Z', - 'status': 'exited', - 'command': ['echo', 'week5-timing'], - 'cwd': '/tmp', - 'cols': 80, - 'rows': 24, - 'hostPid': None, - 'childPid': None, - 'exitCode': 0, - 'exitSignal': None, -} -with open(sys.argv[1], 'w', encoding='utf-8') as fh: - json.dump(payload, fh, indent=2) - fh.write('\n') -PY -cp "$FIXTURE_EVENTS" "$SESSION_DIR/events.jsonl" -python3 - "$COMMANDS_SH" "$SESSION_ID" <<'PY' -from pathlib import Path -import sys -path = Path(sys.argv[1]) -path.write_text(path.read_text().replace('REPLACED_BY_RUN_SCENARIO', sys.argv[2])) -PY - -run_cmd 01-record-export-recorded.json "${CLI[@]}" record export "$SESSION_ID" --format webm --timing recorded --out "$RECORDING_DIR/recorded.webm" --json -run_cmd 02-record-export-accelerated.json "${CLI[@]}" record export "$SESSION_ID" --format webm --timing accelerated --out "$RECORDING_DIR/accelerated.webm" --json -run_cmd 03-record-export-max-speed.json "${CLI[@]}" record export "$SESSION_ID" --format webm --timing max-speed --out "$RECORDING_DIR/max-speed.webm" --json -cp "$SESSION_DIR/events.jsonl" "$BUNDLE/events.jsonl" -cp "$SESSION_DIR/session.json" "$BUNDLE/session.json" - -python3 - "$BUNDLE" <<'PY' -import json -import sys -from pathlib import Path -bundle = Path(sys.argv[1]) -recorded = json.loads((bundle / '01-record-export-recorded.json').read_text())['result'] -accelerated = json.loads((bundle / '02-record-export-accelerated.json').read_text())['result'] -max_speed = json.loads((bundle / '03-record-export-max-speed.json').read_text())['result'] -notes = f'''# 2026-03-23 dogfood — Week 5 Lane B WebM timing modes - -## Bundle metadata - -- **Bundle path:** `{bundle.as_posix()}/` -- **Fixture events:** `dogfood/20260322-dogfood-color/events.jsonl` -- **Replay mode:** offline replay against a synthetic exited session (`session.json`) -- **Session ID:** `{recorded['sessionId']}` - -## Scenario summary - -This bundle exports the same exited session to WebM three times, varying only `--timing recorded|accelerated|max-speed`. - -## Reviewer highlights - -- `01-record-export-recorded.json` reports `metadata.timingMode="{recorded['metadata']['timingMode']}"` and wrote `recordings/recorded.webm` ({recorded['bytes']} bytes). -- `02-record-export-accelerated.json` reports `metadata.timingMode="{accelerated['metadata']['timingMode']}"` and wrote `recordings/accelerated.webm` ({accelerated['bytes']} bytes). -- `03-record-export-max-speed.json` reports `metadata.timingMode="{max_speed['metadata']['timingMode']}"` and wrote `recordings/max-speed.webm` ({max_speed['bytes']} bytes). -- The implementation default is `accelerated`; this bundle captures all three explicit modes so reviewers can compare the generated files directly. -- For this short color-grid replay, all three exports report the same event-span `durationMs={recorded['durationMs']}` because the underlying output timestamps are already close together; the reviewer-visible proof here is the distinct `timingMode` metadata plus differing WebM file sizes. - -## Comparison guidance - -- `recorded` preserves the real event gaps from the log. -- `accelerated` caps long gaps while keeping a readable replay speed. -- `max-speed` minimizes delays further (subject to the renderer's minimum frame hold). -- The JSON payloads also carry a shared `renderProfileHash={recorded['metadata']['renderProfileHash']}` for the bundled `reference-dark` profile used for all three exports. -''' -(bundle / 'notes.md').write_text(notes) -manifest_entries = [] -for path in sorted(bundle.rglob('*')): - if path.is_file() and path.name != 'manifest.json': - manifest_entries.append({ - 'path': path.relative_to(bundle).as_posix(), - 'sha256': __import__('hashlib').sha256(path.read_bytes()).hexdigest(), - 'size': path.stat().st_size, - }) -(bundle / 'manifest.json').write_text(json.dumps({'bundle': bundle.name, 'artifacts': manifest_entries}, indent=2) + '\n') -PY diff --git a/dogfood/20260323-week5-render-timing/session.json b/dogfood/20260323-week5-render-timing/session.json deleted file mode 100644 index 918a6227..00000000 --- a/dogfood/20260323-week5-render-timing/session.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "version": 1, - "sessionId": "01W5TIMNG1774283448", - "createdAt": "2026-03-23T16:00:00.000Z", - "updatedAt": "2026-03-23T16:00:05.000Z", - "status": "exited", - "command": ["echo", "week5-timing"], - "cwd": "/tmp", - "cols": 80, - "rows": 24, - "hostPid": null, - "childPid": null, - "exitCode": 0, - "exitSignal": null -} diff --git a/dogfood/20260323-week5-review-helper/01-generate-single.json b/dogfood/20260323-week5-review-helper/01-generate-single.json deleted file mode 100644 index becfa12c..00000000 --- a/dogfood/20260323-week5-review-helper/01-generate-single.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "command": "npx tsx src/tools/review-bundle.ts dogfood/20260322-dogfood-alt-screen", - "exitCode": 0, - "stdoutPath": "logs/01-generate-single.stdout.txt", - "stderrPath": "logs/01-generate-single.stderr.txt", - "generatedPath": "dogfood/20260322-dogfood-alt-screen/index.html", - "fileSizeBytes": 58876 -} diff --git a/dogfood/20260323-week5-review-helper/02-generate-all.json b/dogfood/20260323-week5-review-helper/02-generate-all.json deleted file mode 100644 index 7924ff0a..00000000 --- a/dogfood/20260323-week5-review-helper/02-generate-all.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "command": "npx tsx src/tools/review-bundle.ts --all dogfood/", - "exitCode": 0, - "stdoutPath": "logs/02-generate-all.stdout.txt", - "stderrPath": "logs/02-generate-all.stderr.txt" -} diff --git a/dogfood/20260323-week5-review-helper/command-status.tsv b/dogfood/20260323-week5-review-helper/command-status.tsv deleted file mode 100644 index b8fd884f..00000000 --- a/dogfood/20260323-week5-review-helper/command-status.tsv +++ /dev/null @@ -1,5 +0,0 @@ -step exit_code stdout stderr command -01-generate-single 0 dogfood/20260323-week5-review-helper/logs/01-generate-single.stdout.txt dogfood/20260323-week5-review-helper/logs/01-generate-single.stderr.txt npx tsx src/tools/review-bundle.ts dogfood/20260322-dogfood-alt-screen -02-playwright-capture 0 dogfood/20260323-week5-review-helper/logs/03-playwright.stdout.txt dogfood/20260323-week5-review-helper/logs/03-playwright.stderr.txt npx tsx --eval "(async () => { const { chromium } = await import('playwright'); const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1280, height: 900 } }); await page.goto('file://' + process.cwd() + '/dogfood/20260322-dogfood-alt-screen/index.html'); await page.waitForLoadState('networkidle'); await page.screenshot({ path: 'dogfood/20260323-week5-review-helper/screenshots/01-review-page-header.png' }); await page.evaluate(() => window.scrollBy(0, 800)); await new Promise((resolve) => setTimeout(resolve, 500)); await page.screenshot({ path: 'dogfood/20260323-week5-review-helper/screenshots/02-review-page-artifacts.png' }); await browser.close(); })().catch((error) => { console.error(error); process.exit(1); });" -03-generate-all 0 dogfood/20260323-week5-review-helper/logs/02-generate-all.stdout.txt dogfood/20260323-week5-review-helper/logs/02-generate-all.stderr.txt npx tsx src/tools/review-bundle.ts --all dogfood/ -04-cleanup-and-verify 0 dogfood/20260323-week5-review-helper/logs/04-cleanup.stdout.txt dogfood/20260323-week5-review-helper/logs/04-cleanup.stderr.txt find dogfood -maxdepth 2 -name 'index.html' -delete && find dogfood -maxdepth 2 -name 'index.html' diff --git a/dogfood/20260323-week5-review-helper/commands.sh b/dogfood/20260323-week5-review-helper/commands.sh deleted file mode 100644 index 4835550d..00000000 --- a/dogfood/20260323-week5-review-helper/commands.sh +++ /dev/null @@ -1,16 +0,0 @@ -mkdir -p dogfood/20260323-week5-review-helper/{screenshots,videos,recordings,snapshots,logs} -export PATH="$HOME/.local/bin:$PATH" -mise trust 2>/dev/null -mise install 2>/dev/null -mise run bootstrap 2>&1 | tail -5 -npx tsx src/tools/review-bundle.ts dogfood/20260322-dogfood-alt-screen \ - >dogfood/20260323-week5-review-helper/logs/01-generate-single.stdout.txt \ - 2>dogfood/20260323-week5-review-helper/logs/01-generate-single.stderr.txt -npx tsx --eval "(async () => { const { chromium } = await import('playwright'); const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1280, height: 900 } }); await page.goto('file://' + process.cwd() + '/dogfood/20260322-dogfood-alt-screen/index.html'); await page.waitForLoadState('networkidle'); await page.screenshot({ path: 'dogfood/20260323-week5-review-helper/screenshots/01-review-page-header.png' }); await page.evaluate(() => window.scrollBy(0, 800)); await new Promise((resolve) => setTimeout(resolve, 500)); await page.screenshot({ path: 'dogfood/20260323-week5-review-helper/screenshots/02-review-page-artifacts.png' }); await browser.close(); })().catch((error) => { console.error(error); process.exit(1); });" \ - >dogfood/20260323-week5-review-helper/logs/03-playwright.stdout.txt \ - 2>dogfood/20260323-week5-review-helper/logs/03-playwright.stderr.txt -npx tsx src/tools/review-bundle.ts --all dogfood/ \ - >dogfood/20260323-week5-review-helper/logs/02-generate-all.stdout.txt \ - 2>dogfood/20260323-week5-review-helper/logs/02-generate-all.stderr.txt -find dogfood -maxdepth 2 -name 'index.html' -delete -find dogfood -maxdepth 2 -name 'index.html' diff --git a/dogfood/20260323-week5-review-helper/logs/00-bootstrap.tail.txt b/dogfood/20260323-week5-review-helper/logs/00-bootstrap.tail.txt deleted file mode 100644 index 3a08c769..00000000 --- a/dogfood/20260323-week5-review-helper/logs/00-bootstrap.tail.txt +++ /dev/null @@ -1,5 +0,0 @@ - -55 packages are looking for funding - run `npm fund` for details - -found 0 vulnerabilities diff --git a/dogfood/20260323-week5-review-helper/logs/01-generate-single.stderr.txt b/dogfood/20260323-week5-review-helper/logs/01-generate-single.stderr.txt deleted file mode 100644 index aa02fbf1..00000000 --- a/dogfood/20260323-week5-review-helper/logs/01-generate-single.stderr.txt +++ /dev/null @@ -1 +0,0 @@ -Building dogfood/20260322-dogfood-alt-screen diff --git a/dogfood/20260323-week5-review-helper/logs/01-generate-single.stdout.txt b/dogfood/20260323-week5-review-helper/logs/01-generate-single.stdout.txt deleted file mode 100644 index 0fe27bd9..00000000 --- a/dogfood/20260323-week5-review-helper/logs/01-generate-single.stdout.txt +++ /dev/null @@ -1 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-alt-screen/index.html diff --git a/dogfood/20260323-week5-review-helper/logs/02-generate-all.stderr.txt b/dogfood/20260323-week5-review-helper/logs/02-generate-all.stderr.txt deleted file mode 100644 index 023e0eec..00000000 --- a/dogfood/20260323-week5-review-helper/logs/02-generate-all.stderr.txt +++ /dev/null @@ -1,50 +0,0 @@ -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260319-lifecycle -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260319-nvim-demo -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260319-resize-demo -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260320-renderer-complete -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260321-post-hardening-smoke -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260321-week3-crash-retention -warning: Manifest artifact was not found on disk: artifacts/snapshot-1-structured.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-1-reference-dark.png -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260321-week3-renderer-complete -warning: Manifest artifact was not found on disk: artifacts/snapshot-4-structured.json -warning: Manifest artifact was not found on disk: artifacts/snapshot-4-text.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-4-reference-dark.png -warning: Manifest artifact was not found on disk: artifacts/screenshot-4-reference-light.png -warning: Manifest artifact was not found on disk: artifacts/snapshot-5-structured.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-5-reference-dark.png -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-alt-screen -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-color -warning: Manifest artifact was not found on disk: setup-npm-ci.log -warning: Manifest artifact was not found on disk: setup-playwright-install.log -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-crash -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-hello-prompt -warning: manifest.json did not match the preferred schema; using legacy normalization. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-resize -warning: manifest.json did not match the preferred schema; using legacy normalization. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-scrollback -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-unicode -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-week4-features -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-global-cli-context -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-lazyvim-scenario -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-week4-cli-parity -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-week4-failure-recovery -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-week4-scrollback-review -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-week4-unicode-review -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260323-bugfix-resize -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260323-bugfix-scrollback -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260323-week5-review-helper diff --git a/dogfood/20260323-week5-review-helper/logs/02-generate-all.stdout.txt b/dogfood/20260323-week5-review-helper/logs/02-generate-all.stdout.txt deleted file mode 100644 index 9743b9de..00000000 --- a/dogfood/20260323-week5-review-helper/logs/02-generate-all.stdout.txt +++ /dev/null @@ -1,24 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260319-lifecycle/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260319-nvim-demo/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260319-resize-demo/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260320-renderer-complete/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260321-post-hardening-smoke/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260321-week3-crash-retention/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260321-week3-renderer-complete/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-alt-screen/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-color/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-crash/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-hello-prompt/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-resize/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-scrollback/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-unicode/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-dogfood-week4-features/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-global-cli-context/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-lazyvim-scenario/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-week4-cli-parity/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-week4-failure-recovery/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-week4-scrollback-review/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260322-week4-unicode-review/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260323-bugfix-resize/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260323-bugfix-scrollback/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_883e6029e6/dogfood/20260323-week5-review-helper/index.html diff --git a/dogfood/20260323-week5-review-helper/logs/03-playwright.stderr.txt b/dogfood/20260323-week5-review-helper/logs/03-playwright.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-review-helper/logs/03-playwright.stdout.txt b/dogfood/20260323-week5-review-helper/logs/03-playwright.stdout.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-review-helper/logs/04-cleanup.stderr.txt b/dogfood/20260323-week5-review-helper/logs/04-cleanup.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-review-helper/logs/04-cleanup.stdout.txt b/dogfood/20260323-week5-review-helper/logs/04-cleanup.stdout.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260323-week5-review-helper/manifest.json b/dogfood/20260323-week5-review-helper/manifest.json deleted file mode 100644 index 60bfb414..00000000 --- a/dogfood/20260323-week5-review-helper/manifest.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "bundle": "20260323-week5-review-helper", - "title": "Week 5 — Review Helper Proof", - "description": "Proves review-bundle generates usable static review pages for dogfood bundles", - "createdAt": "2026-03-23T16:10:02Z", - "week": 5, - "lane": "C", - "artifacts": [ - { - "path": "screenshots/01-review-page-header.png", - "description": "Top of generated review page showing header and manifest summary" - }, - { - "path": "screenshots/02-review-page-artifacts.png", - "description": "Review page scrolled to show artifact inventory and embedded screenshots" - }, - { - "path": "01-generate-single.json", - "description": "Single-bundle generation result" - }, - { - "path": "02-generate-all.json", - "description": "All-bundles generation result" - } - ] -} diff --git a/dogfood/20260323-week5-review-helper/notes.md b/dogfood/20260323-week5-review-helper/notes.md deleted file mode 100644 index a6992110..00000000 --- a/dogfood/20260323-week5-review-helper/notes.md +++ /dev/null @@ -1,29 +0,0 @@ -# 2026-03-23 dogfood — Week 5 review helper proof - -## Bundle metadata - -- **Date:** 2026-03-23 -- **Bundle path:** `dogfood/20260323-week5-review-helper/` -- **Source bundle:** `dogfood/20260322-dogfood-alt-screen/` -- **Tool under test:** `npx tsx src/tools/review-bundle.ts` - -## Scenario summary - -This proof bundle exercised the static `review-bundle` helper in both single-bundle mode and `--all` mode. The single-bundle run generated `dogfood/20260322-dogfood-alt-screen/index.html`, captured the page in a browser for reviewer-friendly evidence, then the `--all` run generated review pages across `dogfood/` before cleanup removed every generated `index.html` file. - -## Review answers - -- **Did single-bundle generation produce a review page?** Yes. `01-generate-single.json` records exit code 0 and a generated file size of 58876 bytes for `dogfood/20260322-dogfood-alt-screen/index.html`. -- **Did the generated single-bundle page render in a browser?** Yes. `screenshots/01-review-page-header.png` shows the review page header plus manifest facts, and `screenshots/02-review-page-artifacts.png` shows the artifact inventory and embedded screenshots further down the page. -- **What does `screenshots/01-review-page-header.png` show?** The top of the generated `index.html` with the page title, summary copy, and manifest metadata for `dogfood/20260322-dogfood-alt-screen/`. -- **What does `screenshots/02-review-page-artifacts.png` show?** The scrolled artifact section, including reviewable screenshots and supporting bundle outputs. -- **Did `--all` mode complete?** Yes. `02-generate-all.json` records exit code 0 for `npx tsx src/tools/review-bundle.ts --all dogfood/`. -- **Were all generated review pages removed afterward?** Yes. `logs/04-cleanup.stdout.txt` is empty after the verification `find dogfood -maxdepth 2 -name 'index.html'`, which confirms no `index.html` files remained anywhere under `dogfood/`. - -## Bugs / unexpected behavior - -- None during capture. Playwright loaded the generated `file://` page and saved both screenshots successfully. - -## Command results - -See `command-status.tsv` for the exact commands and exit codes. The proof captured single-bundle generation, browser rendering, `--all` generation, and final cleanup verification. diff --git a/dogfood/20260323-week5-review-helper/screenshots/01-review-page-header.png b/dogfood/20260323-week5-review-helper/screenshots/01-review-page-header.png deleted file mode 100644 index 48b59fcc..00000000 Binary files a/dogfood/20260323-week5-review-helper/screenshots/01-review-page-header.png and /dev/null differ diff --git a/dogfood/20260323-week5-review-helper/screenshots/02-review-page-artifacts.png b/dogfood/20260323-week5-review-helper/screenshots/02-review-page-artifacts.png deleted file mode 100644 index 463125c4..00000000 Binary files a/dogfood/20260323-week5-review-helper/screenshots/02-review-page-artifacts.png and /dev/null differ diff --git a/dogfood/20260325-week6-a-cli-contract/agent-terminal-home.txt b/dogfood/20260325-week6-a-cli-contract/agent-terminal-home.txt deleted file mode 100644 index 8d311261..00000000 --- a/dogfood/20260325-week6-a-cli-contract/agent-terminal-home.txt +++ /dev/null @@ -1 +0,0 @@ -/tmp/agent-terminal-week6.N8X5Dz diff --git a/dogfood/20260325-week6-a-cli-contract/command-status.tsv b/dogfood/20260325-week6-a-cli-contract/command-status.tsv deleted file mode 100644 index e69fb848..00000000 --- a/dogfood/20260325-week6-a-cli-contract/command-status.tsv +++ /dev/null @@ -1,7 +0,0 @@ -step exit_code duration_ms stdout stderr command -01-version.json 0 1137 dogfood/20260325-week6-a-cli-contract/logs/01-version.json dogfood/20260325-week6-a-cli-contract/logs/01-version.stderr.txt npx tsx src/cli/main.ts version --json -02-create.json 0 1898 dogfood/20260325-week6-a-cli-contract/logs/02-create.json dogfood/20260325-week6-a-cli-contract/logs/02-create.stderr.txt npx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo hello; sleep 5' -03-wait-text.json 0 1738 dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.json dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.stderr.txt npx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --text hello --timeout 10000 --json -04-inspect-running.json 0 1301 dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.json dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.stderr.txt npx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 --json -05-wait-exit.json 0 1816 dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.json dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.stderr.txt npx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --exit --timeout 10000 --json -06-inspect-exited.json 0 1166 dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.json dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.stderr.txt npx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 --json diff --git a/dogfood/20260325-week6-a-cli-contract/commands.sh b/dogfood/20260325-week6-a-cli-contract/commands.sh deleted file mode 100755 index 0d30961e..00000000 --- a/dogfood/20260325-week6-a-cli-contract/commands.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export PATH="$HOME/.local/bin:$PATH" -export AGENT_TERMINAL_HOME="/tmp/agent-terminal-week6.N8X5Dz" - -npx tsx src/cli/main.ts version --json -npx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo hello; sleep 5' -npx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --text hello --timeout 10000 --json -npx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 --json -npx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --exit --timeout 10000 --json -npx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 --json diff --git a/dogfood/20260325-week6-a-cli-contract/index.html b/dogfood/20260325-week6-a-cli-contract/index.html deleted file mode 100644 index 43f9fb76..00000000 --- a/dogfood/20260325-week6-a-cli-contract/index.html +++ /dev/null @@ -1,789 +0,0 @@ - - - - - - Week 6 — CLI Contract Proof review bundle - - - -
-
-

Portable review bundle

-

Week 6 — CLI Contract Proof

-

Bundle directory: 20260325-week6-a-cli-contract

-

- Proves enriched inspect JSON fields and version renderer backend - reporting -

-
- -
-

Manifest summary

-
-
-
Bundle
-
20260325-week6-a-cli-contract
-
-
-
Date
-
2026-03-25T08:48:27Z
-
-
-
Lane
-
A
-
-
-
Week
-
6
-
-
-
Manifest artifacts
-
5
-
-
-
Discovered files
-
24
-
-
-
- -
-

JSON outputs

- -
- logs/01-version.json -
{
-  "ok": true,
-  "command": "version",
-  "timestamp": "2026-03-25T08:46:01.457Z",
-  "result": {
-    "cliVersion": "0.1.0",
-    "protocolVersion": "0.1.0",
-    "rendererBackends": [
-      "ghostty-web"
-    ],
-    "runtime": {
-      "node": "v24.14.0",
-      "platform": "linux",
-      "arch": "x64"
-    }
-  }
-}
-
-
- logs/02-create.json -
{
-  "ok": true,
-  "command": "create",
-  "timestamp": "2026-03-25T08:46:03.342Z",
-  "result": {
-    "sessionId": "01KMJ2R5VRY4GS10VZ3VNG52Z1",
-    "createdAt": "2026-03-25T08:46:02.619Z",
-    "cols": 80,
-    "rows": 24,
-    "shell": "/bin/bash"
-  }
-}
-
-
- logs/03-wait-text.json -
{
-  "ok": true,
-  "command": "wait",
-  "timestamp": "2026-03-25T08:46:05.145Z",
-  "result": {
-    "matched": true,
-    "timedOut": false,
-    "matchedText": "hello",
-    "cursorRow": 1,
-    "cursorCol": 0,
-    "capturedAtSeq": 0
-  }
-}
-
-
- logs/04-inspect-running.json -
{
-  "ok": true,
-  "command": "inspect",
-  "timestamp": "2026-03-25T08:46:06.444Z",
-  "result": {
-    "session": {
-      "version": 1,
-      "sessionId": "01KMJ2R5VRY4GS10VZ3VNG52Z1",
-      "createdAt": "2026-03-25T08:46:02.619Z",
-      "updatedAt": "2026-03-25T08:46:03.255Z",
-      "status": "running",
-      "command": [
-        "/bin/sh",
-        "-c",
-        "echo hello; sleep 5"
-      ],
-      "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-      "shell": "/bin/bash",
-      "term": "xterm-256color",
-      "cols": 80,
-      "rows": 24,
-      "creationCols": 80,
-      "creationRows": 24,
-      "hostPid": 827964,
-      "childPid": 827977,
-      "exitCode": null,
-      "exitSignal": null
-    },
-    "eventCount": 1,
-    "uptime": 3824,
-    "lastEventSeq": 0,
-    "terminationCategory": "running",
-    "artifacts": {
-      "total": 0,
-      "byKind": {},
-      "missingCount": 0,
-      "health": "no-artifacts"
-    },
-    "usedOfflineReplay": false
-  }
-}
-
-
- logs/05-wait-exit.json -
{
-  "ok": true,
-  "command": "wait",
-  "timestamp": "2026-03-25T08:46:08.262Z",
-  "result": {
-    "exitCode": 0,
-    "timedOut": false
-  }
-}
-
-
- logs/06-inspect-exited.json -
{
-  "ok": true,
-  "command": "inspect",
-  "timestamp": "2026-03-25T08:46:09.432Z",
-  "result": {
-    "session": {
-      "version": 1,
-      "sessionId": "01KMJ2R5VRY4GS10VZ3VNG52Z1",
-      "createdAt": "2026-03-25T08:46:02.619Z",
-      "updatedAt": "2026-03-25T08:46:08.259Z",
-      "status": "exited",
-      "command": [
-        "/bin/sh",
-        "-c",
-        "echo hello; sleep 5"
-      ],
-      "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-      "shell": "/bin/bash",
-      "term": "xterm-256color",
-      "cols": 80,
-      "rows": 24,
-      "creationCols": 80,
-      "creationRows": 24,
-      "hostPid": 827964,
-      "childPid": 827977,
-      "exitCode": 0,
-      "exitSignal": null
-    },
-    "eventCount": 2,
-    "uptime": 5640,
-    "lastEventSeq": 1,
-    "terminationCategory": "clean-exit",
-    "artifacts": {
-      "total": 0,
-      "byKind": {},
-      "missingCount": 0,
-      "health": "no-artifacts"
-    },
-    "usedOfflineReplay": false
-  }
-}
-
-
- logs/07-session.json -
{
-  "version": 1,
-  "sessionId": "01KMJ2R5VRY4GS10VZ3VNG52Z1",
-  "createdAt": "2026-03-25T08:46:02.619Z",
-  "updatedAt": "2026-03-25T08:46:08.259Z",
-  "status": "exited",
-  "command": [
-    "/bin/sh",
-    "-c",
-    "echo hello; sleep 5"
-  ],
-  "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-  "shell": "/bin/bash",
-  "term": "xterm-256color",
-  "cols": 80,
-  "rows": 24,
-  "creationCols": 80,
-  "creationRows": 24,
-  "hostPid": 827964,
-  "childPid": 827977,
-  "exitCode": 0,
-  "exitSignal": null
-}
-
-
-
-

Notes

- -
-

notes.md

-

2026-03-25 dogfood — Week 6 bundle A CLI contract proof

-

Bundle metadata

-
    -
  • - Bundle path: - dogfood/20260325-week6-a-cli-contract/ -
  • -
  • - Session ID: - 01KMJ2R5VRY4GS10VZ3VNG52Z1 -
  • -
  • - Isolated AGENT_TERMINAL_HOME: - /tmp/agent-terminal-week6.N8X5Dz -
  • -
  • - CLI entrypoint: - npx tsx src/cli/main.ts -
  • -
-

Scenario summary

-

- This bundle proves the Week 6 CLI contract additions on the stable - JSON surface: -

-
    -
  • - version --json reports - rendererBackends: ["ghostty-web"] -
  • -
  • - inspect --json includes artifacts, - terminationCategory, lastEventSeq, and - usedOfflineReplay -
  • -
  • - the same session shows the enriched inspect payload both while - running and after a clean exit -
  • -
-

Review answers

-
    -
  • - Did version --json advertise the renderer backend - list? - Yes. logs/01-version.json reports - rendererBackends: ["ghostty-web"] alongside - CLI, protocol, and runtime facts. -
  • -
  • - Did the running inspect include the new Week 6 fields? - Yes. logs/04-inspect-running.json shows - lastEventSeq: 0, - terminationCategory: "running", - artifacts.health: "no-artifacts", and - usedOfflineReplay: false while the shell command was - still sleeping. -
  • -
  • - Did the exited inspect keep the same enriched shape? - Yes. logs/06-inspect-exited.json shows - lastEventSeq: 1, - terminationCategory: "clean-exit", the same - artifacts object, and - usedOfflineReplay: false after exit. -
  • -
  • - Did the proof exercise real output and exit waits? - Yes. logs/03-wait-text.json matched the rendered text - hello, and - logs/05-wait-exit.json observed the clean exit. -
  • -
  • - What supporting raw session files are included? - logs/07-session.json and - logs/08-events.jsonl were copied from the isolated - session directory so reviewers can correlate the inspect output - with the persisted session record and append-only event log. -
  • -
-

Issues / limitations

-
    -
  • - None during capture. This scenario intentionally produced no - artifacts, so both inspect calls report - artifacts.health: "no-artifacts". -
  • -
-
-
-
-

Commands

-
-

commands.sh

-
#!/usr/bin/env bash
-set -euo pipefail
-export PATH="$HOME/.local/bin:$PATH"
-export AGENT_TERMINAL_HOME="/tmp/agent-terminal-week6.N8X5Dz"
-
-npx tsx src/cli/main.ts version --json
-npx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo hello; sleep 5'
-npx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --text hello --timeout 10000 --json
-npx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 --json
-npx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --exit --timeout 10000 --json
-npx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 --json
-
-
-
-
-

Command status

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stepexit_codeduration_msstdoutstderrcommand
01-version.json01137 - dogfood/20260325-week6-a-cli-contract/logs/01-version.json - - dogfood/20260325-week6-a-cli-contract/logs/01-version.stderr.txt - npx tsx src/cli/main.ts version --json
02-create.json01898 - dogfood/20260325-week6-a-cli-contract/logs/02-create.json - - dogfood/20260325-week6-a-cli-contract/logs/02-create.stderr.txt - - npx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo - hello; sleep 5' -
03-wait-text.json01738 - dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.json - - dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.stderr.txt - - npx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --text - hello --timeout 10000 --json -
04-inspect-running.json01301 - dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.json - - dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.stderr.txt - - npx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 - --json -
05-wait-exit.json01816 - dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.json - - dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.stderr.txt - - npx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --exit - --timeout 10000 --json -
06-inspect-exited.json01166 - dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.json - - dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.stderr.txt - - npx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 - --json -
-
-
-
-

Artifact inventory

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeSize
- agent-terminal-home.txt - support33 B
command-status.tsvsupport1.4 KB
commands.shscript561 B
logs/01-version.jsonsupport311 B
- logs/01-version.stderr.txt - support0 B
logs/02-create.jsonsupport251 B
- logs/02-create.stderr.txt - support0 B
- logs/03-wait-text.json - support235 B
- logs/03-wait-text.stderr.txt - support0 B
- logs/04-inspect-running.json - support983 B
- logs/04-inspect-running.stderr.txt - support0 B
- logs/05-wait-exit.json - support141 B
- logs/05-wait-exit.stderr.txt - support0 B
- logs/06-inspect-exited.json - support982 B
- logs/06-inspect-exited.stderr.txt - support0 B
logs/07-session.jsonsupport519 B
logs/08-events.jsonlsupport188 B
manifest.jsonsupport1.0 KB
notes.mdnotes1.9 KB
recordings/.gitkeepother0 B
screenshots/.gitkeepother0 B
session-id.txtsupport27 B
snapshots/.gitkeepother0 B
videos/.gitkeepother0 B
-
-
-
- - diff --git a/dogfood/20260325-week6-a-cli-contract/logs/01-version.json b/dogfood/20260325-week6-a-cli-contract/logs/01-version.json deleted file mode 100644 index 01973790..00000000 --- a/dogfood/20260325-week6-a-cli-contract/logs/01-version.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "version", - "timestamp": "2026-03-25T08:46:01.457Z", - "result": { - "cliVersion": "0.1.0", - "protocolVersion": "0.1.0", - "rendererBackends": ["ghostty-web"], - "runtime": { - "node": "v24.14.0", - "platform": "linux", - "arch": "x64" - } - } -} diff --git a/dogfood/20260325-week6-a-cli-contract/logs/01-version.stderr.txt b/dogfood/20260325-week6-a-cli-contract/logs/01-version.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-a-cli-contract/logs/02-create.json b/dogfood/20260325-week6-a-cli-contract/logs/02-create.json deleted file mode 100644 index 5babaaed..00000000 --- a/dogfood/20260325-week6-a-cli-contract/logs/02-create.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-25T08:46:03.342Z", - "result": { - "sessionId": "01KMJ2R5VRY4GS10VZ3VNG52Z1", - "createdAt": "2026-03-25T08:46:02.619Z", - "cols": 80, - "rows": 24, - "shell": "/bin/bash" - } -} diff --git a/dogfood/20260325-week6-a-cli-contract/logs/02-create.stderr.txt b/dogfood/20260325-week6-a-cli-contract/logs/02-create.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.json b/dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.json deleted file mode 100644 index 0ec8fe3e..00000000 --- a/dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-25T08:46:05.145Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "hello", - "cursorRow": 1, - "cursorCol": 0, - "capturedAtSeq": 0 - } -} diff --git a/dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.stderr.txt b/dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.json b/dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.json deleted file mode 100644 index d7379225..00000000 --- a/dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-25T08:46:06.444Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMJ2R5VRY4GS10VZ3VNG52Z1", - "createdAt": "2026-03-25T08:46:02.619Z", - "updatedAt": "2026-03-25T08:46:03.255Z", - "status": "running", - "command": ["/bin/sh", "-c", "echo hello; sleep 5"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 827964, - "childPid": 827977, - "exitCode": null, - "exitSignal": null - }, - "eventCount": 1, - "uptime": 3824, - "lastEventSeq": 0, - "terminationCategory": "running", - "artifacts": { - "total": 0, - "byKind": {}, - "missingCount": 0, - "health": "no-artifacts" - }, - "usedOfflineReplay": false - } -} diff --git a/dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.stderr.txt b/dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.json b/dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.json deleted file mode 100644 index f9560581..00000000 --- a/dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-25T08:46:08.262Z", - "result": { - "exitCode": 0, - "timedOut": false - } -} diff --git a/dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.stderr.txt b/dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.json b/dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.json deleted file mode 100644 index 0bf1ad51..00000000 --- a/dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-25T08:46:09.432Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMJ2R5VRY4GS10VZ3VNG52Z1", - "createdAt": "2026-03-25T08:46:02.619Z", - "updatedAt": "2026-03-25T08:46:08.259Z", - "status": "exited", - "command": ["/bin/sh", "-c", "echo hello; sleep 5"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 827964, - "childPid": 827977, - "exitCode": 0, - "exitSignal": null - }, - "eventCount": 2, - "uptime": 5640, - "lastEventSeq": 1, - "terminationCategory": "clean-exit", - "artifacts": { - "total": 0, - "byKind": {}, - "missingCount": 0, - "health": "no-artifacts" - }, - "usedOfflineReplay": false - } -} diff --git a/dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.stderr.txt b/dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-a-cli-contract/logs/07-session.json b/dogfood/20260325-week6-a-cli-contract/logs/07-session.json deleted file mode 100644 index 86cef8da..00000000 --- a/dogfood/20260325-week6-a-cli-contract/logs/07-session.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "version": 1, - "sessionId": "01KMJ2R5VRY4GS10VZ3VNG52Z1", - "createdAt": "2026-03-25T08:46:02.619Z", - "updatedAt": "2026-03-25T08:46:08.259Z", - "status": "exited", - "command": ["/bin/sh", "-c", "echo hello; sleep 5"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 827964, - "childPid": 827977, - "exitCode": 0, - "exitSignal": null -} diff --git a/dogfood/20260325-week6-a-cli-contract/logs/08-events.jsonl b/dogfood/20260325-week6-a-cli-contract/logs/08-events.jsonl deleted file mode 100644 index 7be827a0..00000000 --- a/dogfood/20260325-week6-a-cli-contract/logs/08-events.jsonl +++ /dev/null @@ -1,2 +0,0 @@ -{"seq":0,"ts":"2026-03-25T08:46:03.257Z","type":"output","payload":{"data":"hello\r\n"}} -{"seq":1,"ts":"2026-03-25T08:46:08.260Z","type":"exit","payload":{"exitCode":0,"exitSignal":null}} diff --git a/dogfood/20260325-week6-a-cli-contract/manifest.json b/dogfood/20260325-week6-a-cli-contract/manifest.json deleted file mode 100644 index 7417ca61..00000000 --- a/dogfood/20260325-week6-a-cli-contract/manifest.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "bundle": "20260325-week6-a-cli-contract", - "title": "Week 6 — CLI Contract Proof", - "description": "Proves enriched inspect JSON fields and version renderer backend reporting", - "createdAt": "2026-03-25T08:48:27Z", - "week": 6, - "lane": "A", - "artifacts": [ - { - "path": "logs/01-version.json", - "description": "version --json output showing rendererBackends including ghostty-web" - }, - { - "path": "logs/04-inspect-running.json", - "description": "Running inspect output with artifacts, terminationCategory, lastEventSeq, and usedOfflineReplay" - }, - { - "path": "logs/06-inspect-exited.json", - "description": "Exited inspect output showing clean-exit terminationCategory and lastEventSeq" - }, - { - "path": "logs/07-session.json", - "description": "Persisted session record copied from the isolated temp home" - }, - { - "path": "logs/08-events.jsonl", - "description": "Event log proving the session emitted output and exit events" - } - ] -} diff --git a/dogfood/20260325-week6-a-cli-contract/notes.md b/dogfood/20260325-week6-a-cli-contract/notes.md deleted file mode 100644 index ba7287d1..00000000 --- a/dogfood/20260325-week6-a-cli-contract/notes.md +++ /dev/null @@ -1,28 +0,0 @@ -# 2026-03-25 dogfood — Week 6 bundle A CLI contract proof - -## Bundle metadata - -- **Bundle path:** `dogfood/20260325-week6-a-cli-contract/` -- **Session ID:** `01KMJ2R5VRY4GS10VZ3VNG52Z1` -- **Isolated AGENT_TERMINAL_HOME:** `/tmp/agent-terminal-week6.N8X5Dz` -- **CLI entrypoint:** `npx tsx src/cli/main.ts` - -## Scenario summary - -This bundle proves the Week 6 CLI contract additions on the stable JSON surface: - -- `version --json` reports `rendererBackends: ["ghostty-web"]` -- `inspect --json` includes `artifacts`, `terminationCategory`, `lastEventSeq`, and `usedOfflineReplay` -- the same session shows the enriched inspect payload both while running and after a clean exit - -## Review answers - -- **Did `version --json` advertise the renderer backend list?** Yes. `logs/01-version.json` reports `rendererBackends: ["ghostty-web"]` alongside CLI, protocol, and runtime facts. -- **Did the running inspect include the new Week 6 fields?** Yes. `logs/04-inspect-running.json` shows `lastEventSeq: 0`, `terminationCategory: "running"`, `artifacts.health: "no-artifacts"`, and `usedOfflineReplay: false` while the shell command was still sleeping. -- **Did the exited inspect keep the same enriched shape?** Yes. `logs/06-inspect-exited.json` shows `lastEventSeq: 1`, `terminationCategory: "clean-exit"`, the same `artifacts` object, and `usedOfflineReplay: false` after exit. -- **Did the proof exercise real output and exit waits?** Yes. `logs/03-wait-text.json` matched the rendered text `hello`, and `logs/05-wait-exit.json` observed the clean exit. -- **What supporting raw session files are included?** `logs/07-session.json` and `logs/08-events.jsonl` were copied from the isolated session directory so reviewers can correlate the inspect output with the persisted session record and append-only event log. - -## Issues / limitations - -- None during capture. This scenario intentionally produced no artifacts, so both inspect calls report `artifacts.health: "no-artifacts"`. diff --git a/dogfood/20260325-week6-a-cli-contract/recordings/.gitkeep b/dogfood/20260325-week6-a-cli-contract/recordings/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-a-cli-contract/screenshots/.gitkeep b/dogfood/20260325-week6-a-cli-contract/screenshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-a-cli-contract/session-id.txt b/dogfood/20260325-week6-a-cli-contract/session-id.txt deleted file mode 100644 index 08463831..00000000 --- a/dogfood/20260325-week6-a-cli-contract/session-id.txt +++ /dev/null @@ -1 +0,0 @@ -01KMJ2R5VRY4GS10VZ3VNG52Z1 diff --git a/dogfood/20260325-week6-a-cli-contract/snapshots/.gitkeep b/dogfood/20260325-week6-a-cli-contract/snapshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-a-cli-contract/videos/.gitkeep b/dogfood/20260325-week6-a-cli-contract/videos/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-b-artifact-health/agent-terminal-home.txt b/dogfood/20260325-week6-b-artifact-health/agent-terminal-home.txt deleted file mode 100644 index 8d311261..00000000 --- a/dogfood/20260325-week6-b-artifact-health/agent-terminal-home.txt +++ /dev/null @@ -1 +0,0 @@ -/tmp/agent-terminal-week6.N8X5Dz diff --git a/dogfood/20260325-week6-b-artifact-health/command-status.tsv b/dogfood/20260325-week6-b-artifact-health/command-status.tsv deleted file mode 100644 index c1105888..00000000 --- a/dogfood/20260325-week6-b-artifact-health/command-status.tsv +++ /dev/null @@ -1,7 +0,0 @@ -step exit_code duration_ms stdout stderr command -01-create.json 0 1785 dogfood/20260325-week6-b-artifact-health/logs/01-create.json dogfood/20260325-week6-b-artifact-health/logs/01-create.stderr.txt npx tsx src/cli/main.ts create --json -- node --import tsx test/fixtures/apps/color-grid/main.ts -02-wait-exit.json 0 1224 dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.json dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.stderr.txt npx tsx src/cli/main.ts wait 01KMJ2RDHRZPYTZQW4WJH2717B --exit --timeout 10000 --json -03-screenshot.json 0 6588 dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.json dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.stderr.txt npx tsx src/cli/main.ts screenshot 01KMJ2RDHRZPYTZQW4WJH2717B --json -05-inspect-healthy.json 0 1152 dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.json dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.stderr.txt npx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B --json -06-delete-artifact.json 0 0 dogfood/20260325-week6-b-artifact-health/logs/06-delete-artifact.json - rm -f /tmp/agent-terminal-week6.N8X5Dz/sessions/01KMJ2RDHRZPYTZQW4WJH2717B/artifacts/screenshot-1-reference-dark.png -07-inspect-missing.json 0 1206 dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.json dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.stderr.txt npx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B --json diff --git a/dogfood/20260325-week6-b-artifact-health/commands.sh b/dogfood/20260325-week6-b-artifact-health/commands.sh deleted file mode 100755 index ec8bed16..00000000 --- a/dogfood/20260325-week6-b-artifact-health/commands.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export PATH="$HOME/.local/bin:$PATH" -export AGENT_TERMINAL_HOME="/tmp/agent-terminal-week6.N8X5Dz" - -npx tsx src/cli/main.ts create --json -- node --import tsx test/fixtures/apps/color-grid/main.ts -npx tsx src/cli/main.ts wait 01KMJ2RDHRZPYTZQW4WJH2717B --exit --timeout 10000 --json -npx tsx src/cli/main.ts screenshot 01KMJ2RDHRZPYTZQW4WJH2717B --json -npx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B --json -rm -f /tmp/agent-terminal-week6.N8X5Dz/sessions/01KMJ2RDHRZPYTZQW4WJH2717B/artifacts/screenshot-1-reference-dark.png -npx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B --json diff --git a/dogfood/20260325-week6-b-artifact-health/index.html b/dogfood/20260325-week6-b-artifact-health/index.html deleted file mode 100644 index 1e20a576..00000000 --- a/dogfood/20260325-week6-b-artifact-health/index.html +++ /dev/null @@ -1,840 +0,0 @@ - - - - - - Week 6 — Artifact Health Proof review bundle - - - -
-
-

Portable review bundle

-

Week 6 — Artifact Health Proof

-

Bundle directory: 20260325-week6-b-artifact-health

-

- Proves healthy and missing-artifacts inspect summaries against a real - screenshot artifact -

-
- -
-

Manifest summary

-
-
-
Bundle
-
20260325-week6-b-artifact-health
-
-
-
Date
-
2026-03-25T08:48:27Z
-
-
-
Lane
-
B
-
-
-
Week
-
6
-
-
-
Manifest artifacts
-
5
-
-
-
Discovered files
-
24
-
-
-
-
-

Screenshot gallery

- -
- -
-

JSON outputs

- -
- logs/01-create.json -
{
-  "ok": true,
-  "command": "create",
-  "timestamp": "2026-03-25T08:46:11.214Z",
-  "result": {
-    "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B",
-    "createdAt": "2026-03-25T08:46:10.490Z",
-    "cols": 80,
-    "rows": 24,
-    "shell": "/bin/bash"
-  }
-}
-
-
- logs/02-wait-exit.json -
{
-  "ok": true,
-  "command": "wait",
-  "timestamp": "2026-03-25T08:46:12.483Z",
-  "result": {
-    "exitCode": 0,
-    "timedOut": false
-  }
-}
-
-
- logs/03-screenshot.json -
{
-  "ok": true,
-  "command": "screenshot",
-  "timestamp": "2026-03-25T08:46:14.205Z",
-  "result": {
-    "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B",
-    "capturedAtSeq": 1,
-    "profileName": "reference-dark",
-    "cols": 80,
-    "rows": 24,
-    "artifactPath": "/tmp/agent-terminal-week6.N8X5Dz/sessions/01KMJ2RDHRZPYTZQW4WJH2717B/artifacts/screenshot-1-reference-dark.png",
-    "pngSizeBytes": 48895,
-    "cursorVisible": false,
-    "rendererBackend": "ghostty-web",
-    "pixelWidth": 640,
-    "pixelHeight": 384,
-    "sha256": "8d62ca0c2ce4c8b4b3c99c7374db8ef5b5896f5751b4e24758c9a1c8ddf410c9",
-    "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8"
-  }
-}
-
-
- logs/04-session-artifact-manifest.json -
{
-  "version": 1,
-  "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B",
-  "artifacts": [
-    {
-      "id": "01KMJ2RH4H4ZDTYJ5SZQD785SB",
-      "kind": "screenshot",
-      "filename": "screenshot-1-reference-dark.png",
-      "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B",
-      "capturedAtSeq": 1,
-      "createdAt": "2026-03-25T08:46:14.161Z",
-      "sha256": "8d62ca0c2ce4c8b4b3c99c7374db8ef5b5896f5751b4e24758c9a1c8ddf410c9",
-      "metadata": {
-        "profileName": "reference-dark",
-        "cols": 80,
-        "rows": 24,
-        "pngSizeBytes": 48895,
-        "cursorVisible": false,
-        "rendererBackend": "ghostty-web",
-        "pixelWidth": 640,
-        "pixelHeight": 384,
-        "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8"
-      }
-    }
-  ]
-}
-
-
- logs/05-inspect-healthy.json -
{
-  "ok": true,
-  "command": "inspect",
-  "timestamp": "2026-03-25T08:46:20.280Z",
-  "result": {
-    "session": {
-      "version": 1,
-      "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B",
-      "createdAt": "2026-03-25T08:46:10.490Z",
-      "updatedAt": "2026-03-25T08:46:12.480Z",
-      "status": "exited",
-      "command": [
-        "node",
-        "--import",
-        "tsx",
-        "test/fixtures/apps/color-grid/main.ts"
-      ],
-      "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-      "shell": "/bin/bash",
-      "term": "xterm-256color",
-      "cols": 80,
-      "rows": 24,
-      "creationCols": 80,
-      "creationRows": 24,
-      "hostPid": 828989,
-      "childPid": 829002,
-      "exitCode": 0,
-      "exitSignal": null
-    },
-    "eventCount": 2,
-    "uptime": 1990,
-    "lastEventSeq": 1,
-    "terminationCategory": "clean-exit",
-    "artifacts": {
-      "total": 1,
-      "byKind": {
-        "screenshot": 1
-      },
-      "missingCount": 0,
-      "health": "healthy"
-    },
-    "usedOfflineReplay": false
-  }
-}
-
-
- logs/06-delete-artifact.json -
{
-  "command": "rm -f /tmp/agent-terminal-week6.N8X5Dz/sessions/01KMJ2RDHRZPYTZQW4WJH2717B/artifacts/screenshot-1-reference-dark.png",
-  "removed": true
-}
-
-
- logs/07-inspect-missing.json -
{
-  "ok": true,
-  "command": "inspect",
-  "timestamp": "2026-03-25T08:46:21.496Z",
-  "result": {
-    "session": {
-      "version": 1,
-      "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B",
-      "createdAt": "2026-03-25T08:46:10.490Z",
-      "updatedAt": "2026-03-25T08:46:12.480Z",
-      "status": "exited",
-      "command": [
-        "node",
-        "--import",
-        "tsx",
-        "test/fixtures/apps/color-grid/main.ts"
-      ],
-      "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-      "shell": "/bin/bash",
-      "term": "xterm-256color",
-      "cols": 80,
-      "rows": 24,
-      "creationCols": 80,
-      "creationRows": 24,
-      "hostPid": 828989,
-      "childPid": 829002,
-      "exitCode": 0,
-      "exitSignal": null
-    },
-    "eventCount": 2,
-    "uptime": 1990,
-    "lastEventSeq": 1,
-    "terminationCategory": "clean-exit",
-    "artifacts": {
-      "total": 1,
-      "byKind": {
-        "screenshot": 1
-      },
-      "missingCount": 1,
-      "health": "missing-artifacts",
-      "missing": [
-        {
-          "id": "01KMJ2RH4H4ZDTYJ5SZQD785SB",
-          "kind": "screenshot",
-          "filename": "screenshot-1-reference-dark.png"
-        }
-      ]
-    },
-    "usedOfflineReplay": false
-  }
-}
-
-
- logs/08-session.json -
{
-  "version": 1,
-  "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B",
-  "createdAt": "2026-03-25T08:46:10.490Z",
-  "updatedAt": "2026-03-25T08:46:12.480Z",
-  "status": "exited",
-  "command": [
-    "node",
-    "--import",
-    "tsx",
-    "test/fixtures/apps/color-grid/main.ts"
-  ],
-  "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-  "shell": "/bin/bash",
-  "term": "xterm-256color",
-  "cols": 80,
-  "rows": 24,
-  "creationCols": 80,
-  "creationRows": 24,
-  "hostPid": 828989,
-  "childPid": 829002,
-  "exitCode": 0,
-  "exitSignal": null
-}
-
-
-
-

Notes

- -
-

notes.md

-

2026-03-25 dogfood — Week 6 bundle B artifact health proof

-

Bundle metadata

-
    -
  • - Bundle path: - dogfood/20260325-week6-b-artifact-health/ -
  • -
  • - Session ID: - 01KMJ2RDHRZPYTZQW4WJH2717B -
  • -
  • - Isolated AGENT_TERMINAL_HOME: - /tmp/agent-terminal-week6.N8X5Dz -
  • -
  • - Fixture: - test/fixtures/apps/color-grid/main.ts -
  • -
-

Scenario summary

-

- This bundle proves the new artifact health summary by creating a - screenshot artifact from an exited color-grid session, - inspecting the healthy state, manually deleting the screenshot file - from disk, and inspecting again to confirm missing-artifact - detection. -

-

Review answers

-
    -
  • - Did the bundle create a real artifact? Yes. - logs/03-screenshot.json reports a screenshot artifact - captured at sequence 1 with - rendererBackend: "ghostty-web", - pngSizeBytes: 48895, and SHA-256 - 8d62ca0c2ce4c8b4b3c99c7374db8ef5b5896f5751b4e24758c9a1c8ddf410c9. -
  • -
  • - What artifact metadata was persisted? - logs/04-session-artifact-manifest.json records one - artifact entry with ID 01KMJ2RH4H4ZDTYJ5SZQD785SB, - kind screenshot, and filename - screenshot-1-reference-dark.png. -
  • -
  • - Did inspect report the healthy state? Yes. - logs/05-inspect-healthy.json shows - artifacts.total: 1, - artifacts.byKind.screenshot: 1, - missingCount: 0, and - health: "healthy". -
  • -
  • - Did inspect detect a missing-on-disk artifact after - deletion? - Yes. logs/06-delete-artifact.json records the manual - removal, and logs/07-inspect-missing.json then - reports missingCount: 1, - health: "missing-artifacts", plus a - missing entry naming the deleted screenshot artifact. -
  • -
  • - Is there a reviewer-friendly copy of the generated PNG? - Yes. screenshots/01-color-grid.png preserves the - screenshot before deletion from the temp home so the rendered - output is still reviewable. -
  • -
-

Issues / limitations

-
    -
  • - None during capture. The missing-artifact proof intentionally - deletes the session-owned screenshot file after copying it into - the bundle for review. -
  • -
-
-
-
-

Commands

-
-

commands.sh

-
#!/usr/bin/env bash
-set -euo pipefail
-export PATH="$HOME/.local/bin:$PATH"
-export AGENT_TERMINAL_HOME="/tmp/agent-terminal-week6.N8X5Dz"
-
-npx tsx src/cli/main.ts create --json -- node --import tsx test/fixtures/apps/color-grid/main.ts
-npx tsx src/cli/main.ts wait 01KMJ2RDHRZPYTZQW4WJH2717B --exit --timeout 10000 --json
-npx tsx src/cli/main.ts screenshot 01KMJ2RDHRZPYTZQW4WJH2717B --json
-npx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B --json
-rm -f /tmp/agent-terminal-week6.N8X5Dz/sessions/01KMJ2RDHRZPYTZQW4WJH2717B/artifacts/screenshot-1-reference-dark.png
-npx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B --json
-
-
-
-
-

Command status

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stepexit_codeduration_msstdoutstderrcommand
01-create.json01785 - dogfood/20260325-week6-b-artifact-health/logs/01-create.json - - dogfood/20260325-week6-b-artifact-health/logs/01-create.stderr.txt - - npx tsx src/cli/main.ts create --json -- node --import tsx - test/fixtures/apps/color-grid/main.ts -
02-wait-exit.json01224 - dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.json - - dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.stderr.txt - - npx tsx src/cli/main.ts wait 01KMJ2RDHRZPYTZQW4WJH2717B --exit - --timeout 10000 --json -
03-screenshot.json06588 - dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.json - - dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.stderr.txt - - npx tsx src/cli/main.ts screenshot 01KMJ2RDHRZPYTZQW4WJH2717B - --json -
05-inspect-healthy.json01152 - dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.json - - dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.stderr.txt - - npx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B - --json -
06-delete-artifact.json00 - dogfood/20260325-week6-b-artifact-health/logs/06-delete-artifact.json - - - rm -f - /tmp/agent-terminal-week6.N8X5Dz/sessions/01KMJ2RDHRZPYTZQW4WJH2717B/artifacts/screenshot-1-reference-dark.png -
07-inspect-missing.json01206 - dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.json - - dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.stderr.txt - - npx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B - --json -
-
-
-
-

Artifact inventory

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeSize
- agent-terminal-home.txt - support33 B
command-status.tsvsupport1.4 KB
commands.shscript639 B
logs/01-create.jsonsupport251 B
- logs/01-create.stderr.txt - support0 B
- logs/02-wait-exit.json - support141 B
- logs/02-wait-exit.stderr.txt - support0 B
- logs/03-screenshot.json - support694 B
- logs/03-screenshot.stderr.txt - support0 B
- logs/04-session-artifact-manifest.json - support792 B
- logs/05-inspect-healthy.json - support1.0 KB
- logs/05-inspect-healthy.stderr.txt - support0 B
- logs/06-delete-artifact.json - support146 B
- logs/07-inspect-missing.json - support1.2 KB
- logs/07-inspect-missing.stderr.txt - support0 B
logs/08-session.jsonsupport551 B
manifest.jsonsupport1.0 KB
notes.mdnotes1.9 KB
recordings/.gitkeepother0 B
screenshots/.gitkeepother0 B
- screenshots/01-color-grid.png - screenshot47.7 KB
session-id.txtsupport27 B
snapshots/.gitkeepother0 B
videos/.gitkeepother0 B
-
-
-
- - diff --git a/dogfood/20260325-week6-b-artifact-health/logs/01-create.json b/dogfood/20260325-week6-b-artifact-health/logs/01-create.json deleted file mode 100644 index f359d32e..00000000 --- a/dogfood/20260325-week6-b-artifact-health/logs/01-create.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-25T08:46:11.214Z", - "result": { - "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B", - "createdAt": "2026-03-25T08:46:10.490Z", - "cols": 80, - "rows": 24, - "shell": "/bin/bash" - } -} diff --git a/dogfood/20260325-week6-b-artifact-health/logs/01-create.stderr.txt b/dogfood/20260325-week6-b-artifact-health/logs/01-create.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.json b/dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.json deleted file mode 100644 index 228db837..00000000 --- a/dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-25T08:46:12.483Z", - "result": { - "exitCode": 0, - "timedOut": false - } -} diff --git a/dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.stderr.txt b/dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.json b/dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.json deleted file mode 100644 index 5ea223b1..00000000 --- a/dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-25T08:46:14.205Z", - "result": { - "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B", - "capturedAtSeq": 1, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/agent-terminal-week6.N8X5Dz/sessions/01KMJ2RDHRZPYTZQW4WJH2717B/artifacts/screenshot-1-reference-dark.png", - "pngSizeBytes": 48895, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 640, - "pixelHeight": 384, - "sha256": "8d62ca0c2ce4c8b4b3c99c7374db8ef5b5896f5751b4e24758c9a1c8ddf410c9", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8" - } -} diff --git a/dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.stderr.txt b/dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-b-artifact-health/logs/04-session-artifact-manifest.json b/dogfood/20260325-week6-b-artifact-health/logs/04-session-artifact-manifest.json deleted file mode 100644 index 61dc31c5..00000000 --- a/dogfood/20260325-week6-b-artifact-health/logs/04-session-artifact-manifest.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "version": 1, - "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B", - "artifacts": [ - { - "id": "01KMJ2RH4H4ZDTYJ5SZQD785SB", - "kind": "screenshot", - "filename": "screenshot-1-reference-dark.png", - "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B", - "capturedAtSeq": 1, - "createdAt": "2026-03-25T08:46:14.161Z", - "sha256": "8d62ca0c2ce4c8b4b3c99c7374db8ef5b5896f5751b4e24758c9a1c8ddf410c9", - "metadata": { - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "pngSizeBytes": 48895, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 640, - "pixelHeight": 384, - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8" - } - } - ] -} diff --git a/dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.json b/dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.json deleted file mode 100644 index c4a02b60..00000000 --- a/dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-25T08:46:20.280Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B", - "createdAt": "2026-03-25T08:46:10.490Z", - "updatedAt": "2026-03-25T08:46:12.480Z", - "status": "exited", - "command": [ - "node", - "--import", - "tsx", - "test/fixtures/apps/color-grid/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 828989, - "childPid": 829002, - "exitCode": 0, - "exitSignal": null - }, - "eventCount": 2, - "uptime": 1990, - "lastEventSeq": 1, - "terminationCategory": "clean-exit", - "artifacts": { - "total": 1, - "byKind": { - "screenshot": 1 - }, - "missingCount": 0, - "health": "healthy" - }, - "usedOfflineReplay": false - } -} diff --git a/dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.stderr.txt b/dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-b-artifact-health/logs/06-delete-artifact.json b/dogfood/20260325-week6-b-artifact-health/logs/06-delete-artifact.json deleted file mode 100644 index 60db2a32..00000000 --- a/dogfood/20260325-week6-b-artifact-health/logs/06-delete-artifact.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "command": "rm -f /tmp/agent-terminal-week6.N8X5Dz/sessions/01KMJ2RDHRZPYTZQW4WJH2717B/artifacts/screenshot-1-reference-dark.png", - "removed": true -} diff --git a/dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.json b/dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.json deleted file mode 100644 index d93fb6e4..00000000 --- a/dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-25T08:46:21.496Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B", - "createdAt": "2026-03-25T08:46:10.490Z", - "updatedAt": "2026-03-25T08:46:12.480Z", - "status": "exited", - "command": [ - "node", - "--import", - "tsx", - "test/fixtures/apps/color-grid/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 828989, - "childPid": 829002, - "exitCode": 0, - "exitSignal": null - }, - "eventCount": 2, - "uptime": 1990, - "lastEventSeq": 1, - "terminationCategory": "clean-exit", - "artifacts": { - "total": 1, - "byKind": { - "screenshot": 1 - }, - "missingCount": 1, - "health": "missing-artifacts", - "missing": [ - { - "id": "01KMJ2RH4H4ZDTYJ5SZQD785SB", - "kind": "screenshot", - "filename": "screenshot-1-reference-dark.png" - } - ] - }, - "usedOfflineReplay": false - } -} diff --git a/dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.stderr.txt b/dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-b-artifact-health/logs/08-session.json b/dogfood/20260325-week6-b-artifact-health/logs/08-session.json deleted file mode 100644 index 30da5270..00000000 --- a/dogfood/20260325-week6-b-artifact-health/logs/08-session.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "version": 1, - "sessionId": "01KMJ2RDHRZPYTZQW4WJH2717B", - "createdAt": "2026-03-25T08:46:10.490Z", - "updatedAt": "2026-03-25T08:46:12.480Z", - "status": "exited", - "command": [ - "node", - "--import", - "tsx", - "test/fixtures/apps/color-grid/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 828989, - "childPid": 829002, - "exitCode": 0, - "exitSignal": null -} diff --git a/dogfood/20260325-week6-b-artifact-health/manifest.json b/dogfood/20260325-week6-b-artifact-health/manifest.json deleted file mode 100644 index c5eef61e..00000000 --- a/dogfood/20260325-week6-b-artifact-health/manifest.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "bundle": "20260325-week6-b-artifact-health", - "title": "Week 6 — Artifact Health Proof", - "description": "Proves healthy and missing-artifacts inspect summaries against a real screenshot artifact", - "createdAt": "2026-03-25T08:48:27Z", - "week": 6, - "lane": "B", - "artifacts": [ - { - "path": "logs/03-screenshot.json", - "description": "Screenshot command output with renderer backend, PNG size, and artifact path" - }, - { - "path": "logs/04-session-artifact-manifest.json", - "description": "Persisted session artifact manifest after screenshot capture" - }, - { - "path": "logs/05-inspect-healthy.json", - "description": "Inspect output showing healthy artifact summary" - }, - { - "path": "logs/07-inspect-missing.json", - "description": "Inspect output showing missing-artifacts health and the missing artifact entry" - }, - { - "path": "screenshots/01-color-grid.png", - "description": "Reviewer-friendly copy of the captured screenshot before deletion from session storage" - } - ] -} diff --git a/dogfood/20260325-week6-b-artifact-health/notes.md b/dogfood/20260325-week6-b-artifact-health/notes.md deleted file mode 100644 index 5ac02afa..00000000 --- a/dogfood/20260325-week6-b-artifact-health/notes.md +++ /dev/null @@ -1,24 +0,0 @@ -# 2026-03-25 dogfood — Week 6 bundle B artifact health proof - -## Bundle metadata - -- **Bundle path:** `dogfood/20260325-week6-b-artifact-health/` -- **Session ID:** `01KMJ2RDHRZPYTZQW4WJH2717B` -- **Isolated AGENT_TERMINAL_HOME:** `/tmp/agent-terminal-week6.N8X5Dz` -- **Fixture:** `test/fixtures/apps/color-grid/main.ts` - -## Scenario summary - -This bundle proves the new artifact health summary by creating a screenshot artifact from an exited `color-grid` session, inspecting the healthy state, manually deleting the screenshot file from disk, and inspecting again to confirm missing-artifact detection. - -## Review answers - -- **Did the bundle create a real artifact?** Yes. `logs/03-screenshot.json` reports a screenshot artifact captured at sequence 1 with `rendererBackend: "ghostty-web"`, `pngSizeBytes: 48895`, and SHA-256 `8d62ca0c2ce4c8b4b3c99c7374db8ef5b5896f5751b4e24758c9a1c8ddf410c9`. -- **What artifact metadata was persisted?** `logs/04-session-artifact-manifest.json` records one artifact entry with ID `01KMJ2RH4H4ZDTYJ5SZQD785SB`, kind `screenshot`, and filename `screenshot-1-reference-dark.png`. -- **Did inspect report the healthy state?** Yes. `logs/05-inspect-healthy.json` shows `artifacts.total: 1`, `artifacts.byKind.screenshot: 1`, `missingCount: 0`, and `health: "healthy"`. -- **Did inspect detect a missing-on-disk artifact after deletion?** Yes. `logs/06-delete-artifact.json` records the manual removal, and `logs/07-inspect-missing.json` then reports `missingCount: 1`, `health: "missing-artifacts"`, plus a `missing` entry naming the deleted screenshot artifact. -- **Is there a reviewer-friendly copy of the generated PNG?** Yes. `screenshots/01-color-grid.png` preserves the screenshot before deletion from the temp home so the rendered output is still reviewable. - -## Issues / limitations - -- None during capture. The missing-artifact proof intentionally deletes the session-owned screenshot file after copying it into the bundle for review. diff --git a/dogfood/20260325-week6-b-artifact-health/recordings/.gitkeep b/dogfood/20260325-week6-b-artifact-health/recordings/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-b-artifact-health/screenshots/.gitkeep b/dogfood/20260325-week6-b-artifact-health/screenshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-b-artifact-health/screenshots/01-color-grid.png b/dogfood/20260325-week6-b-artifact-health/screenshots/01-color-grid.png deleted file mode 100644 index 1496fdab..00000000 Binary files a/dogfood/20260325-week6-b-artifact-health/screenshots/01-color-grid.png and /dev/null differ diff --git a/dogfood/20260325-week6-b-artifact-health/session-id.txt b/dogfood/20260325-week6-b-artifact-health/session-id.txt deleted file mode 100644 index f3e345c9..00000000 --- a/dogfood/20260325-week6-b-artifact-health/session-id.txt +++ /dev/null @@ -1 +0,0 @@ -01KMJ2RDHRZPYTZQW4WJH2717B diff --git a/dogfood/20260325-week6-b-artifact-health/snapshots/.gitkeep b/dogfood/20260325-week6-b-artifact-health/snapshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-b-artifact-health/videos/.gitkeep b/dogfood/20260325-week6-b-artifact-health/videos/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/agent-terminal-home.txt b/dogfood/20260325-week6-c-failure-taxonomy/agent-terminal-home.txt deleted file mode 100644 index 8d311261..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/agent-terminal-home.txt +++ /dev/null @@ -1 +0,0 @@ -/tmp/agent-terminal-week6.N8X5Dz diff --git a/dogfood/20260325-week6-c-failure-taxonomy/command-status.tsv b/dogfood/20260325-week6-c-failure-taxonomy/command-status.tsv deleted file mode 100644 index 4f148fd4..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/command-status.tsv +++ /dev/null @@ -1,12 +0,0 @@ -step exit_code duration_ms stdout stderr command -01-create-exit-42.json 0 1971 dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.json dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.stderr.txt npx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit 42' -02-wait-exit-42.json 0 1297 dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.json dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.stderr.txt npx tsx src/cli/main.ts wait 01KMJ2RSD2NWQKAN6NH3TGMSRC --exit --timeout 10000 --json -03-inspect-exit-42.json 0 1073 dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.json dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.stderr.txt npx tsx src/cli/main.ts inspect 01KMJ2RSD2NWQKAN6NH3TGMSRC --json -04-create-exit-0.json 0 1936 dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.json dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.stderr.txt npx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit 0' -05-wait-exit-0.json 0 1153 dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.json dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.stderr.txt npx tsx src/cli/main.ts wait 01KMJ2RXN9F3K4H9366FNZZJ79 --exit --timeout 10000 --json -06-inspect-exit-0.json 0 1278 dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.json dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.stderr.txt npx tsx src/cli/main.ts inspect 01KMJ2RXN9F3K4H9366FNZZJ79 --json -07-create-host-death.json 0 1975 dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.json dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.stderr.txt npx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo host-death-proof; exec cat' -08-wait-text-host.json 0 1554 dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.json dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.stderr.txt npx tsx src/cli/main.ts wait 01KMJ2S238K002KNYQWZGCCT3N --text host-death-proof --timeout 10000 --json -09-inspect-live.json 0 1206 dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.json dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.stderr.txt npx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N --json -10-kill-host.json 0 2053 dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.json dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.stderr.txt kill -9 831241; sleep 2; printf '{"command":"kill -9 %s","hostPid":%s,"exitCode":0}\n' '831241' '831241' -11-inspect-host-death.json 0 1114 dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.json dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.stderr.txt npx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N --json diff --git a/dogfood/20260325-week6-c-failure-taxonomy/commands.sh b/dogfood/20260325-week6-c-failure-taxonomy/commands.sh deleted file mode 100755 index f9dda258..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/commands.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export PATH="$HOME/.local/bin:$PATH" -export AGENT_TERMINAL_HOME="/tmp/agent-terminal-week6.N8X5Dz" - -npx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit 42' -npx tsx src/cli/main.ts wait 01KMJ2RSD2NWQKAN6NH3TGMSRC --exit --timeout 10000 --json -npx tsx src/cli/main.ts inspect 01KMJ2RSD2NWQKAN6NH3TGMSRC --json -npx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit 0' -npx tsx src/cli/main.ts wait 01KMJ2RXN9F3K4H9366FNZZJ79 --exit --timeout 10000 --json -npx tsx src/cli/main.ts inspect 01KMJ2RXN9F3K4H9366FNZZJ79 --json -npx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo host-death-proof; exec cat' -npx tsx src/cli/main.ts wait 01KMJ2S238K002KNYQWZGCCT3N --text host-death-proof --timeout 10000 --json -npx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N --json -kill -9 831241; sleep 2; printf '{"command":"kill -9 %s","hostPid":%s,"exitCode":0}\n' '831241' '831241' -npx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N --json diff --git a/dogfood/20260325-week6-c-failure-taxonomy/index.html b/dogfood/20260325-week6-c-failure-taxonomy/index.html deleted file mode 100644 index c1339172..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/index.html +++ /dev/null @@ -1,1107 +0,0 @@ - - - - - - Week 6 — Failure Taxonomy Proof review bundle - - - -
-
-

Portable review bundle

-

Week 6 — Failure Taxonomy Proof

-

- Bundle directory: 20260325-week6-c-failure-taxonomy -

-

- Proves derived termination categories and persisted failureOrigin - across clean exit, non-zero exit, and host death -

-
- -
-

Manifest summary

-
-
-
Bundle
-
20260325-week6-c-failure-taxonomy
-
-
-
Date
-
2026-03-25T08:48:27Z
-
-
-
Lane
-
C
-
-
-
Week
-
6
-
-
-
Manifest artifacts
-
6
-
-
-
Discovered files
-
33
-
-
-
- -
-

JSON outputs

- -
- logs/01-create-exit-42.json -
{
-  "ok": true,
-  "command": "create",
-  "timestamp": "2026-03-25T08:46:23.448Z",
-  "result": {
-    "sessionId": "01KMJ2RSD2NWQKAN6NH3TGMSRC",
-    "createdAt": "2026-03-25T08:46:22.628Z",
-    "cols": 80,
-    "rows": 24,
-    "shell": "/bin/bash"
-  }
-}
-
-
- logs/02-wait-exit-42.json -
{
-  "ok": true,
-  "command": "wait",
-  "timestamp": "2026-03-25T08:46:24.816Z",
-  "result": {
-    "timedOut": false,
-    "exitCode": 42
-  }
-}
-
-
- logs/03-inspect-exit-42.json -
{
-  "ok": true,
-  "command": "inspect",
-  "timestamp": "2026-03-25T08:46:25.892Z",
-  "result": {
-    "session": {
-      "version": 1,
-      "sessionId": "01KMJ2RSD2NWQKAN6NH3TGMSRC",
-      "createdAt": "2026-03-25T08:46:22.628Z",
-      "updatedAt": "2026-03-25T08:46:23.397Z",
-      "status": "exited",
-      "command": [
-        "/bin/sh",
-        "-c",
-        "exit 42"
-      ],
-      "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-      "shell": "/bin/bash",
-      "term": "xterm-256color",
-      "cols": 80,
-      "rows": 24,
-      "creationCols": 80,
-      "creationRows": 24,
-      "hostPid": 830139,
-      "childPid": 830152,
-      "exitCode": 42,
-      "exitSignal": null
-    },
-    "eventCount": 1,
-    "uptime": 769,
-    "lastEventSeq": 0,
-    "terminationCategory": "nonzero-exit",
-    "artifacts": {
-      "total": 0,
-      "byKind": {},
-      "missingCount": 0,
-      "health": "no-artifacts"
-    },
-    "usedOfflineReplay": false
-  }
-}
-
-
- logs/04-create-exit-0.json -
{
-  "ok": true,
-  "command": "create",
-  "timestamp": "2026-03-25T08:46:27.809Z",
-  "result": {
-    "sessionId": "01KMJ2RXN9F3K4H9366FNZZJ79",
-    "createdAt": "2026-03-25T08:46:26.988Z",
-    "cols": 80,
-    "rows": 24,
-    "shell": "/bin/bash"
-  }
-}
-
-
- logs/05-wait-exit-0.json -
{
-  "ok": true,
-  "command": "wait",
-  "timestamp": "2026-03-25T08:46:29.014Z",
-  "result": {
-    "timedOut": false,
-    "exitCode": 0
-  }
-}
-
-
- logs/06-inspect-exit-0.json -
{
-  "ok": true,
-  "command": "inspect",
-  "timestamp": "2026-03-25T08:46:30.294Z",
-  "result": {
-    "session": {
-      "version": 1,
-      "sessionId": "01KMJ2RXN9F3K4H9366FNZZJ79",
-      "createdAt": "2026-03-25T08:46:26.988Z",
-      "updatedAt": "2026-03-25T08:46:27.802Z",
-      "status": "exited",
-      "command": [
-        "/bin/sh",
-        "-c",
-        "exit 0"
-      ],
-      "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-      "shell": "/bin/bash",
-      "term": "xterm-256color",
-      "cols": 80,
-      "rows": 24,
-      "creationCols": 80,
-      "creationRows": 24,
-      "hostPid": 830665,
-      "childPid": 830678,
-      "exitCode": 0,
-      "exitSignal": null
-    },
-    "eventCount": 1,
-    "uptime": 814,
-    "lastEventSeq": 0,
-    "terminationCategory": "clean-exit",
-    "artifacts": {
-      "total": 0,
-      "byKind": {},
-      "missingCount": 0,
-      "health": "no-artifacts"
-    },
-    "usedOfflineReplay": false
-  }
-}
-
-
- logs/07-create-host-death.json -
{
-  "ok": true,
-  "command": "create",
-  "timestamp": "2026-03-25T08:46:32.258Z",
-  "result": {
-    "sessionId": "01KMJ2S238K002KNYQWZGCCT3N",
-    "createdAt": "2026-03-25T08:46:31.531Z",
-    "cols": 80,
-    "rows": 24,
-    "shell": "/bin/bash"
-  }
-}
-
-
- logs/08-wait-text-host.json -
{
-  "ok": true,
-  "command": "wait",
-  "timestamp": "2026-03-25T08:46:33.864Z",
-  "result": {
-    "matched": true,
-    "timedOut": false,
-    "matchedText": "host-death-proof",
-    "cursorRow": 1,
-    "cursorCol": 0,
-    "capturedAtSeq": 0
-  }
-}
-
-
- logs/09-inspect-live.json -
{
-  "ok": true,
-  "command": "inspect",
-  "timestamp": "2026-03-25T08:46:35.073Z",
-  "result": {
-    "session": {
-      "version": 1,
-      "sessionId": "01KMJ2S238K002KNYQWZGCCT3N",
-      "createdAt": "2026-03-25T08:46:31.531Z",
-      "updatedAt": "2026-03-25T08:46:32.161Z",
-      "status": "running",
-      "command": [
-        "/bin/sh",
-        "-c",
-        "echo host-death-proof; exec cat"
-      ],
-      "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-      "shell": "/bin/bash",
-      "term": "xterm-256color",
-      "cols": 80,
-      "rows": 24,
-      "creationCols": 80,
-      "creationRows": 24,
-      "hostPid": 831241,
-      "childPid": 831254,
-      "exitCode": null,
-      "exitSignal": null
-    },
-    "eventCount": 1,
-    "uptime": 3541,
-    "lastEventSeq": 0,
-    "terminationCategory": "running",
-    "artifacts": {
-      "total": 0,
-      "byKind": {},
-      "missingCount": 0,
-      "health": "no-artifacts"
-    },
-    "usedOfflineReplay": false
-  }
-}
-
-
- logs/10-kill-host.json -
{
-  "command": "kill -9 831241",
-  "hostPid": 831241,
-  "exitCode": 0
-}
-
-
- logs/11-inspect-host-death.json -
{
-  "ok": true,
-  "command": "inspect",
-  "timestamp": "2026-03-25T08:46:38.287Z",
-  "result": {
-    "session": {
-      "version": 1,
-      "sessionId": "01KMJ2S238K002KNYQWZGCCT3N",
-      "createdAt": "2026-03-25T08:46:31.531Z",
-      "updatedAt": "2026-03-25T08:46:38.283Z",
-      "status": "failed",
-      "failureReason": "host process died unexpectedly (pid: 831241)",
-      "failureOrigin": "host-death",
-      "command": [
-        "/bin/sh",
-        "-c",
-        "echo host-death-proof; exec cat"
-      ],
-      "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-      "shell": "/bin/bash",
-      "term": "xterm-256color",
-      "cols": 80,
-      "rows": 24,
-      "creationCols": 80,
-      "creationRows": 24,
-      "hostPid": null,
-      "childPid": null,
-      "exitCode": null,
-      "exitSignal": null
-    },
-    "eventCount": 1,
-    "uptime": 6752,
-    "lastEventSeq": 0,
-    "terminationCategory": "host-death",
-    "artifacts": {
-      "total": 0,
-      "byKind": {},
-      "missingCount": 0,
-      "health": "no-artifacts"
-    },
-    "usedOfflineReplay": true
-  }
-}
-
-
- logs/12-host-death-session.json -
{
-  "version": 1,
-  "sessionId": "01KMJ2S238K002KNYQWZGCCT3N",
-  "createdAt": "2026-03-25T08:46:31.531Z",
-  "updatedAt": "2026-03-25T08:46:38.283Z",
-  "status": "failed",
-  "failureReason": "host process died unexpectedly (pid: 831241)",
-  "failureOrigin": "host-death",
-  "command": [
-    "/bin/sh",
-    "-c",
-    "echo host-death-proof; exec cat"
-  ],
-  "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65",
-  "shell": "/bin/bash",
-  "term": "xterm-256color",
-  "cols": 80,
-  "rows": 24,
-  "creationCols": 80,
-  "creationRows": 24,
-  "hostPid": null,
-  "childPid": null,
-  "exitCode": null,
-  "exitSignal": null
-}
-
-
-
-

Notes

- -
-

notes.md

-

2026-03-25 dogfood — Week 6 bundle C failure taxonomy proof

-

Bundle metadata

-
    -
  • - Bundle path: - dogfood/20260325-week6-c-failure-taxonomy/ -
  • -
  • - Non-zero exit session: - 01KMJ2RSD2NWQKAN6NH3TGMSRC -
  • -
  • - Clean exit session: - 01KMJ2RXN9F3K4H9366FNZZJ79 -
  • -
  • - Host-death session: - 01KMJ2S238K002KNYQWZGCCT3N -
  • -
  • Killed host PID: 831241
  • -
  • - Isolated AGENT_TERMINAL_HOME: - /tmp/agent-terminal-week6.N8X5Dz -
  • -
-

Scenario summary

-

- This bundle exercises the new failure taxonomy surface across three - cases: -

-
    -
  1. a shell command that exits with code 42
  2. -
  3. a shell command that exits cleanly with code 0
  4. -
  5. - a live host process that is force-killed so reconciliation - persists failureOrigin and derives - terminationCategory: "host-death" -
  6. -
-

Review answers

-
    -
  • - Did a non-zero exit map to the expected termination - category? - Yes. logs/03-inspect-exit-42.json shows - exitCode: 42 with - terminationCategory: "nonzero-exit". -
  • -
  • - Did a clean exit map to the expected termination - category? - Yes. logs/06-inspect-exit-0.json shows - exitCode: 0 with - terminationCategory: "clean-exit". -
  • -
  • - Was the host-death scenario captured from a live - session? - Yes. logs/09-inspect-live.json captured the running - session and the live hostPid before the forced kill - recorded in logs/10-kill-host.json. -
  • -
  • - Did reconciliation persist failureOrigin for host - death? - Yes. logs/11-inspect-host-death.json shows - status: "failed", - failureOrigin: "host-death", and - failureReason: "host process died unexpectedly (pid: - 831241)". -
  • -
  • - Was terminationCategory derived correctly after - the host died? - Yes. The same inspect output reports - terminationCategory: "host-death" and - usedOfflineReplay: true, proving the CLI recovered - through offline reconciliation. -
  • -
  • - Is the reconciled session record included? Yes. - logs/12-host-death-session.json is the persisted - failed session record copied directly from the isolated session - directory. -
  • -
-

Issues / limitations

-
    -
  • - None during capture. The host-death branch intentionally - force-kills the host process with kill -9 to exercise - reconciliation. -
  • -
-
-
-
-

Commands

-
-

commands.sh

-
#!/usr/bin/env bash
-set -euo pipefail
-export PATH="$HOME/.local/bin:$PATH"
-export AGENT_TERMINAL_HOME="/tmp/agent-terminal-week6.N8X5Dz"
-
-npx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit 42'
-npx tsx src/cli/main.ts wait 01KMJ2RSD2NWQKAN6NH3TGMSRC --exit --timeout 10000 --json
-npx tsx src/cli/main.ts inspect 01KMJ2RSD2NWQKAN6NH3TGMSRC --json
-npx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit 0'
-npx tsx src/cli/main.ts wait 01KMJ2RXN9F3K4H9366FNZZJ79 --exit --timeout 10000 --json
-npx tsx src/cli/main.ts inspect 01KMJ2RXN9F3K4H9366FNZZJ79 --json
-npx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo host-death-proof; exec cat'
-npx tsx src/cli/main.ts wait 01KMJ2S238K002KNYQWZGCCT3N --text host-death-proof --timeout 10000 --json
-npx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N --json
-kill -9 831241; sleep 2; printf '{"command":"kill -9 %s","hostPid":%s,"exitCode":0}\n' '831241' '831241'
-npx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N --json
-
-
-
-
-

Command status

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stepexit_codeduration_msstdoutstderrcommand
01-create-exit-42.json01971 - dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.stderr.txt - - npx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit - 42' -
02-wait-exit-42.json01297 - dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.stderr.txt - - npx tsx src/cli/main.ts wait 01KMJ2RSD2NWQKAN6NH3TGMSRC --exit - --timeout 10000 --json -
03-inspect-exit-42.json01073 - dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.stderr.txt - - npx tsx src/cli/main.ts inspect 01KMJ2RSD2NWQKAN6NH3TGMSRC - --json -
04-create-exit-0.json01936 - dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.stderr.txt - - npx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit - 0' -
05-wait-exit-0.json01153 - dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.stderr.txt - - npx tsx src/cli/main.ts wait 01KMJ2RXN9F3K4H9366FNZZJ79 --exit - --timeout 10000 --json -
06-inspect-exit-0.json01278 - dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.stderr.txt - - npx tsx src/cli/main.ts inspect 01KMJ2RXN9F3K4H9366FNZZJ79 - --json -
07-create-host-death.json01975 - dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.stderr.txt - - npx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo - host-death-proof; exec cat' -
08-wait-text-host.json01554 - dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.stderr.txt - - npx tsx src/cli/main.ts wait 01KMJ2S238K002KNYQWZGCCT3N --text - host-death-proof --timeout 10000 --json -
09-inspect-live.json01206 - dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.stderr.txt - - npx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N - --json -
10-kill-host.json02053 - dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.stderr.txt - - kill -9 831241; sleep 2; printf - '{"command":"kill -9 - %s","hostPid":%s,"exitCode":0}\n' - '831241' '831241' -
11-inspect-host-death.json01114 - dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.json - - dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.stderr.txt - - npx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N - --json -
-
-
-
-

Artifact inventory

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeSize
- agent-terminal-home.txt - support33 B
command-status.tsvsupport2.8 KB
commands.shscript991 B
- logs/01-create-exit-42.json - support251 B
- logs/01-create-exit-42.stderr.txt - support0 B
- logs/02-wait-exit-42.json - support142 B
- logs/02-wait-exit-42.stderr.txt - support0 B
- logs/03-inspect-exit-42.json - support972 B
- logs/03-inspect-exit-42.stderr.txt - support0 B
- logs/04-create-exit-0.json - support251 B
- logs/04-create-exit-0.stderr.txt - support0 B
- logs/05-wait-exit-0.json - support141 B
- logs/05-wait-exit-0.stderr.txt - support0 B
- logs/06-inspect-exit-0.json - support968 B
- logs/06-inspect-exit-0.stderr.txt - support0 B
- logs/07-create-host-death.json - support251 B
- logs/07-create-host-death.stderr.txt - support0 B
- logs/08-wait-text-host.json - support246 B
- logs/08-wait-text-host.stderr.txt - support0 B
- logs/09-inspect-live.json - support995 B
- logs/09-inspect-live.stderr.txt - support0 B
- logs/10-kill-host.json - support59 B
- logs/10-kill-host.stderr.txt - support0 B
- logs/11-inspect-host-death.json - support1.1 KB
- logs/11-inspect-host-death.stderr.txt - support0 B
- logs/12-host-death-session.json - support630 B
manifest.jsonsupport1.2 KB
notes.mdnotes2.1 KB
recordings/.gitkeepother0 B
screenshots/.gitkeepother0 B
session-ids.txtother147 B
snapshots/.gitkeepother0 B
videos/.gitkeepother0 B
-
-
-
- - diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.json deleted file mode 100644 index 8ec3a742..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-25T08:46:23.448Z", - "result": { - "sessionId": "01KMJ2RSD2NWQKAN6NH3TGMSRC", - "createdAt": "2026-03-25T08:46:22.628Z", - "cols": 80, - "rows": 24, - "shell": "/bin/bash" - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.json deleted file mode 100644 index ee7d262a..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-25T08:46:24.816Z", - "result": { - "timedOut": false, - "exitCode": 42 - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.json deleted file mode 100644 index 1245f12e..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-25T08:46:25.892Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMJ2RSD2NWQKAN6NH3TGMSRC", - "createdAt": "2026-03-25T08:46:22.628Z", - "updatedAt": "2026-03-25T08:46:23.397Z", - "status": "exited", - "command": ["/bin/sh", "-c", "exit 42"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 830139, - "childPid": 830152, - "exitCode": 42, - "exitSignal": null - }, - "eventCount": 1, - "uptime": 769, - "lastEventSeq": 0, - "terminationCategory": "nonzero-exit", - "artifacts": { - "total": 0, - "byKind": {}, - "missingCount": 0, - "health": "no-artifacts" - }, - "usedOfflineReplay": false - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.json deleted file mode 100644 index 7e48771a..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-25T08:46:27.809Z", - "result": { - "sessionId": "01KMJ2RXN9F3K4H9366FNZZJ79", - "createdAt": "2026-03-25T08:46:26.988Z", - "cols": 80, - "rows": 24, - "shell": "/bin/bash" - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.json deleted file mode 100644 index 01ae1f81..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-25T08:46:29.014Z", - "result": { - "timedOut": false, - "exitCode": 0 - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.json deleted file mode 100644 index e06352d5..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-25T08:46:30.294Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMJ2RXN9F3K4H9366FNZZJ79", - "createdAt": "2026-03-25T08:46:26.988Z", - "updatedAt": "2026-03-25T08:46:27.802Z", - "status": "exited", - "command": ["/bin/sh", "-c", "exit 0"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 830665, - "childPid": 830678, - "exitCode": 0, - "exitSignal": null - }, - "eventCount": 1, - "uptime": 814, - "lastEventSeq": 0, - "terminationCategory": "clean-exit", - "artifacts": { - "total": 0, - "byKind": {}, - "missingCount": 0, - "health": "no-artifacts" - }, - "usedOfflineReplay": false - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.json deleted file mode 100644 index d274620b..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-25T08:46:32.258Z", - "result": { - "sessionId": "01KMJ2S238K002KNYQWZGCCT3N", - "createdAt": "2026-03-25T08:46:31.531Z", - "cols": 80, - "rows": 24, - "shell": "/bin/bash" - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.json deleted file mode 100644 index 4709c39b..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-25T08:46:33.864Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "host-death-proof", - "cursorRow": 1, - "cursorCol": 0, - "capturedAtSeq": 0 - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.json deleted file mode 100644 index 3a5297a6..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-25T08:46:35.073Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMJ2S238K002KNYQWZGCCT3N", - "createdAt": "2026-03-25T08:46:31.531Z", - "updatedAt": "2026-03-25T08:46:32.161Z", - "status": "running", - "command": ["/bin/sh", "-c", "echo host-death-proof; exec cat"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 831241, - "childPid": 831254, - "exitCode": null, - "exitSignal": null - }, - "eventCount": 1, - "uptime": 3541, - "lastEventSeq": 0, - "terminationCategory": "running", - "artifacts": { - "total": 0, - "byKind": {}, - "missingCount": 0, - "health": "no-artifacts" - }, - "usedOfflineReplay": false - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.json deleted file mode 100644 index 4363bf4c..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.json +++ /dev/null @@ -1 +0,0 @@ -{ "command": "kill -9 831241", "hostPid": 831241, "exitCode": 0 } diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.json deleted file mode 100644 index ee0944fb..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-25T08:46:38.287Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMJ2S238K002KNYQWZGCCT3N", - "createdAt": "2026-03-25T08:46:31.531Z", - "updatedAt": "2026-03-25T08:46:38.283Z", - "status": "failed", - "failureReason": "host process died unexpectedly (pid: 831241)", - "failureOrigin": "host-death", - "command": ["/bin/sh", "-c", "echo host-death-proof; exec cat"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": null, - "childPid": null, - "exitCode": null, - "exitSignal": null - }, - "eventCount": 1, - "uptime": 6752, - "lastEventSeq": 0, - "terminationCategory": "host-death", - "artifacts": { - "total": 0, - "byKind": {}, - "missingCount": 0, - "health": "no-artifacts" - }, - "usedOfflineReplay": true - } -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.stderr.txt b/dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/logs/12-host-death-session.json b/dogfood/20260325-week6-c-failure-taxonomy/logs/12-host-death-session.json deleted file mode 100644 index ca1b9553..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/logs/12-host-death-session.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "version": 1, - "sessionId": "01KMJ2S238K002KNYQWZGCCT3N", - "createdAt": "2026-03-25T08:46:31.531Z", - "updatedAt": "2026-03-25T08:46:38.283Z", - "status": "failed", - "failureReason": "host process died unexpectedly (pid: 831241)", - "failureOrigin": "host-death", - "command": ["/bin/sh", "-c", "echo host-death-proof; exec cat"], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": null, - "childPid": null, - "exitCode": null, - "exitSignal": null -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/manifest.json b/dogfood/20260325-week6-c-failure-taxonomy/manifest.json deleted file mode 100644 index 5bcdfdfc..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/manifest.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "bundle": "20260325-week6-c-failure-taxonomy", - "title": "Week 6 — Failure Taxonomy Proof", - "description": "Proves derived termination categories and persisted failureOrigin across clean exit, non-zero exit, and host death", - "createdAt": "2026-03-25T08:48:27Z", - "week": 6, - "lane": "C", - "artifacts": [ - { - "path": "logs/03-inspect-exit-42.json", - "description": "Inspect output showing terminationCategory nonzero-exit for exit code 42" - }, - { - "path": "logs/06-inspect-exit-0.json", - "description": "Inspect output showing terminationCategory clean-exit for exit code 0" - }, - { - "path": "logs/09-inspect-live.json", - "description": "Live inspect output used to capture the host PID before the forced kill" - }, - { - "path": "logs/10-kill-host.json", - "description": "Forced host kill record for the host-death scenario" - }, - { - "path": "logs/11-inspect-host-death.json", - "description": "Reconciled inspect output showing failureOrigin host-death, terminationCategory host-death, and usedOfflineReplay true" - }, - { - "path": "logs/12-host-death-session.json", - "description": "Persisted failed session record copied from the isolated temp home" - } - ] -} diff --git a/dogfood/20260325-week6-c-failure-taxonomy/notes.md b/dogfood/20260325-week6-c-failure-taxonomy/notes.md deleted file mode 100644 index e14b373d..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/notes.md +++ /dev/null @@ -1,31 +0,0 @@ -# 2026-03-25 dogfood — Week 6 bundle C failure taxonomy proof - -## Bundle metadata - -- **Bundle path:** `dogfood/20260325-week6-c-failure-taxonomy/` -- **Non-zero exit session:** `01KMJ2RSD2NWQKAN6NH3TGMSRC` -- **Clean exit session:** `01KMJ2RXN9F3K4H9366FNZZJ79` -- **Host-death session:** `01KMJ2S238K002KNYQWZGCCT3N` -- **Killed host PID:** `831241` -- **Isolated AGENT_TERMINAL_HOME:** `/tmp/agent-terminal-week6.N8X5Dz` - -## Scenario summary - -This bundle exercises the new failure taxonomy surface across three cases: - -1. a shell command that exits with code 42 -2. a shell command that exits cleanly with code 0 -3. a live host process that is force-killed so reconciliation persists `failureOrigin` and derives `terminationCategory: "host-death"` - -## Review answers - -- **Did a non-zero exit map to the expected termination category?** Yes. `logs/03-inspect-exit-42.json` shows `exitCode: 42` with `terminationCategory: "nonzero-exit"`. -- **Did a clean exit map to the expected termination category?** Yes. `logs/06-inspect-exit-0.json` shows `exitCode: 0` with `terminationCategory: "clean-exit"`. -- **Was the host-death scenario captured from a live session?** Yes. `logs/09-inspect-live.json` captured the running session and the live `hostPid` before the forced kill recorded in `logs/10-kill-host.json`. -- **Did reconciliation persist `failureOrigin` for host death?** Yes. `logs/11-inspect-host-death.json` shows `status: "failed"`, `failureOrigin: "host-death"`, and `failureReason: "host process died unexpectedly (pid: 831241)"`. -- **Was `terminationCategory` derived correctly after the host died?** Yes. The same inspect output reports `terminationCategory: "host-death"` and `usedOfflineReplay: true`, proving the CLI recovered through offline reconciliation. -- **Is the reconciled session record included?** Yes. `logs/12-host-death-session.json` is the persisted failed session record copied directly from the isolated session directory. - -## Issues / limitations - -- None during capture. The host-death branch intentionally force-kills the host process with `kill -9` to exercise reconciliation. diff --git a/dogfood/20260325-week6-c-failure-taxonomy/recordings/.gitkeep b/dogfood/20260325-week6-c-failure-taxonomy/recordings/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/screenshots/.gitkeep b/dogfood/20260325-week6-c-failure-taxonomy/screenshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/session-ids.txt b/dogfood/20260325-week6-c-failure-taxonomy/session-ids.txt deleted file mode 100644 index 06da2829..00000000 --- a/dogfood/20260325-week6-c-failure-taxonomy/session-ids.txt +++ /dev/null @@ -1,4 +0,0 @@ -nonzeroSessionId=01KMJ2RSD2NWQKAN6NH3TGMSRC -cleanSessionId=01KMJ2RXN9F3K4H9366FNZZJ79 -hostDeathSessionId=01KMJ2S238K002KNYQWZGCCT3N -hostPid=831241 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/snapshots/.gitkeep b/dogfood/20260325-week6-c-failure-taxonomy/snapshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/videos/.gitkeep b/dogfood/20260325-week6-c-failure-taxonomy/videos/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/agent-terminal-home.txt b/dogfood/20260325-week6-d-review-surface/agent-terminal-home.txt deleted file mode 100644 index 8d311261..00000000 --- a/dogfood/20260325-week6-d-review-surface/agent-terminal-home.txt +++ /dev/null @@ -1 +0,0 @@ -/tmp/agent-terminal-week6.N8X5Dz diff --git a/dogfood/20260325-week6-d-review-surface/command-status.tsv b/dogfood/20260325-week6-d-review-surface/command-status.tsv deleted file mode 100644 index 6456d574..00000000 --- a/dogfood/20260325-week6-d-review-surface/command-status.tsv +++ /dev/null @@ -1,14 +0,0 @@ -step exit_code duration_ms stdout stderr command -01-review-single.txt 0 731 dogfood/20260325-week6-d-review-surface/logs/01-review-single.txt dogfood/20260325-week6-d-review-surface/logs/01-review-single.stderr.txt npx tsx src/tools/review-bundle.ts dogfood/20260325-week6-a-cli-contract -02-review-all.txt 0 1035 dogfood/20260325-week6-d-review-surface/logs/02-review-all.txt dogfood/20260325-week6-d-review-surface/logs/02-review-all.stderr.txt npx tsx src/tools/review-bundle.ts --all dogfood/ -03-index-files.txt 0 69 dogfood/20260325-week6-d-review-surface/logs/03-index-files.txt dogfood/20260325-week6-d-review-surface/logs/03-index-files.stderr.txt find dogfood -maxdepth 2 -name 'index.html' | sort -04-playwright.txt 0 2197 dogfood/20260325-week6-d-review-surface/logs/04-playwright.txt dogfood/20260325-week6-d-review-surface/logs/04-playwright.stderr.txt npx tsx --eval "(async () => { const { chromium } = await import('playwright'); const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } }); await page.goto('file://' + process.cwd() + '/dogfood/20260325-week6-a-cli-contract/index.html'); await page.waitForLoadState('networkidle'); await page.screenshot({ path: 'dogfood/20260325-week6-d-review-surface/screenshots/01-week6-a-review-page.png', fullPage: true }); await browser.close(); })().catch((error) => { console.error(error); process.exit(1); });" -05-cleanup-home.txt 0 68 dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.txt dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.stderr.txt rm -rf '/tmp/agent-terminal-week6.N8X5Dz' && printf 'removed %s\n' '/tmp/agent-terminal-week6.N8X5Dz' -06-cleanup-extra-indexes.txt 0 56 dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.txt dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.stderr.txt find dogfood -maxdepth 2 -name 'index.html' ! -path 'dogfood/20260325-week6-a-cli-contract/index.html' ! -path 'dogfood/20260325-week6-b-artifact-health/index.html' ! -path 'dogfood/20260325-week6-c-failure-taxonomy/index.html' ! -path 'dogfood/20260325-week6-d-review-surface/index.html' -print -delete -07-review-all-final.txt 0 1021 dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.txt dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.stderr.txt npx tsx src/tools/review-bundle.ts --all dogfood/ -08-week6-index-files.txt 0 61 dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.txt dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.stderr.txt find dogfood/20260325-week6-* -maxdepth 1 -name 'index.html' | sort -09-cleanup-extra-indexes-final.txt 0 71 dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.txt dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.stderr.txt find dogfood -maxdepth 2 -name 'index.html' ! -path 'dogfood/20260325-week6-a-cli-contract/index.html' ! -path 'dogfood/20260325-week6-b-artifact-health/index.html' ! -path 'dogfood/20260325-week6-c-failure-taxonomy/index.html' ! -path 'dogfood/20260325-week6-d-review-surface/index.html' -print -delete -10-review-all-post-edit.txt 0 1004 dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.txt dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.stderr.txt npx tsx src/tools/review-bundle.ts --all dogfood/ -11-week6-index-files-post-edit.txt 0 66 dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.txt dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.stderr.txt find dogfood/20260325-week6-* -maxdepth 1 -name 'index.html' | sort -12-cleanup-extra-indexes-post-edit.txt 0 56 dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.txt dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.stderr.txt find dogfood -maxdepth 2 -name 'index.html' ! -path 'dogfood/20260325-week6-a-cli-contract/index.html' ! -path 'dogfood/20260325-week6-b-artifact-health/index.html' ! -path 'dogfood/20260325-week6-c-failure-taxonomy/index.html' ! -path 'dogfood/20260325-week6-d-review-surface/index.html' -print -delete -13-review-d-final.txt 0 793 dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.txt dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.stderr.txt npx tsx src/tools/review-bundle.ts dogfood/20260325-week6-d-review-surface diff --git a/dogfood/20260325-week6-d-review-surface/commands.sh b/dogfood/20260325-week6-d-review-surface/commands.sh deleted file mode 100755 index 1cbc92fa..00000000 --- a/dogfood/20260325-week6-d-review-surface/commands.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -npx tsx src/tools/review-bundle.ts dogfood/20260325-week6-a-cli-contract -npx tsx src/tools/review-bundle.ts --all dogfood/ -find dogfood -maxdepth 2 -name 'index.html' | sort -npx tsx --eval "(async () => { const { chromium } = await import('playwright'); const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } }); await page.goto('file://' + process.cwd() + '/dogfood/20260325-week6-a-cli-contract/index.html'); await page.waitForLoadState('networkidle'); await page.screenshot({ path: 'dogfood/20260325-week6-d-review-surface/screenshots/01-week6-a-review-page.png', fullPage: true }); await browser.close(); })().catch((error) => { console.error(error); process.exit(1); });" -rm -rf '/tmp/agent-terminal-week6.N8X5Dz' && printf 'removed %s\n' '/tmp/agent-terminal-week6.N8X5Dz' -find dogfood -maxdepth 2 -name 'index.html' ! -path 'dogfood/20260325-week6-a-cli-contract/index.html' ! -path 'dogfood/20260325-week6-b-artifact-health/index.html' ! -path 'dogfood/20260325-week6-c-failure-taxonomy/index.html' ! -path 'dogfood/20260325-week6-d-review-surface/index.html' -print -delete -npx tsx src/tools/review-bundle.ts --all dogfood/ -find dogfood/20260325-week6-* -maxdepth 1 -name 'index.html' | sort -find dogfood -maxdepth 2 -name 'index.html' ! -path 'dogfood/20260325-week6-a-cli-contract/index.html' ! -path 'dogfood/20260325-week6-b-artifact-health/index.html' ! -path 'dogfood/20260325-week6-c-failure-taxonomy/index.html' ! -path 'dogfood/20260325-week6-d-review-surface/index.html' -print -delete -npx tsx src/tools/review-bundle.ts --all dogfood/ -find dogfood/20260325-week6-* -maxdepth 1 -name 'index.html' | sort -find dogfood -maxdepth 2 -name 'index.html' ! -path 'dogfood/20260325-week6-a-cli-contract/index.html' ! -path 'dogfood/20260325-week6-b-artifact-health/index.html' ! -path 'dogfood/20260325-week6-c-failure-taxonomy/index.html' ! -path 'dogfood/20260325-week6-d-review-surface/index.html' -print -delete -npx tsx src/tools/review-bundle.ts dogfood/20260325-week6-d-review-surface diff --git a/dogfood/20260325-week6-d-review-surface/index.html b/dogfood/20260325-week6-d-review-surface/index.html deleted file mode 100644 index 77c1dd95..00000000 --- a/dogfood/20260325-week6-d-review-surface/index.html +++ /dev/null @@ -1,858 +0,0 @@ - - - - - - Week 6 — Review Surface Proof review bundle - - - -
-
-

Portable review bundle

-

Week 6 — Review Surface Proof

-

Bundle directory: 20260325-week6-d-review-surface

-

- Proves review-bundle generation and reviewer-facing index pages for - the Week 6 dogfood bundles -

-
- -
-

Manifest summary

-
-
-
Bundle
-
20260325-week6-d-review-surface
-
-
-
Date
-
2026-03-25T08:49:36Z
-
-
-
Lane
-
D
-
-
-
Week
-
6
-
-
-
Manifest artifacts
-
7
-
-
-
Discovered files
-
35
-
-
-
-
-

Screenshot gallery

- -
- -
-

Notes

- -
-

notes.md

-

2026-03-25 dogfood — Week 6 bundle D review surface proof

-

Bundle metadata

-
    -
  • - Bundle path: - dogfood/20260325-week6-d-review-surface/ -
  • -
  • - Review helper: - npx tsx src/tools/review-bundle.ts -
  • -
  • - Week 6 focus bundles: - 20260325-week6-a-cli-contract, - 20260325-week6-b-artifact-health, - 20260325-week6-c-failure-taxonomy, and - 20260325-week6-d-review-surface -
  • -
  • - Cleaned AGENT_TERMINAL_HOME: - /tmp/agent-terminal-week6.N8X5Dz -
  • -
-

Scenario summary

-

- This bundle proves the reviewer-facing surface for the new Week 6 - bundles. It generated a single-bundle review page for bundle A, then - ran review-bundle --all dogfood/ to render review pages - for every dogfood bundle, captured a browser screenshot of the - generated bundle A page, verified the generated index file list, and - finally cleaned the temporary session home plus the non-Week-6 - generated pages to keep the git diff scoped. -

-

Review answers

-
    -
  • - Did single-bundle generation succeed? Yes. - logs/01-review-single.txt contains the generated path - for dogfood/20260325-week6-a-cli-contract/index.html. -
  • -
  • - Did all-bundle generation succeed? Yes. - logs/02-review-all.txt captured the first - --all pass, - logs/07-review-all-final.txt captured the first - post-notes refresh, and - logs/10-review-all-post-edit.txt captured the final - review-bundle --all dogfood/ run after the bundle - notes/manifests were settled. -
  • -
  • - How was index generation verified? - logs/03-index-files.txt records the full-tree - index.html list from the first - --all pass, and - logs/11-week6-index-files-post-edit.txt confirms the - final committed Week 6 set contains all four generated review - pages. -
  • -
  • - Is there visual proof of the review page? Yes. - screenshots/01-week6-a-review-page.png is a full-page - Playwright screenshot of the generated bundle A review page. -
  • -
  • - Was the isolated temp home cleaned up? Yes. - logs/05-cleanup-home.txt confirms removal of - /tmp/agent-terminal-week6.N8X5Dz. -
  • -
  • - Why does the committed diff not include review pages for every - historical bundle? - After verification, - logs/06-cleanup-extra-indexes.txt records deletion of - the non-Week-6 generated index.html files so the - commit stays focused on the new Week 6 proof bundles while still - demonstrating that --all worked. -
  • -
-

Issues / limitations

-
    -
  • - None during capture. Playwright loaded the generated local - file:// review page without errors and saved the - screenshot successfully. -
  • -
-
-
-
-

Commands

-
-

commands.sh

-
#!/usr/bin/env bash
-set -euo pipefail
-
-npx tsx src/tools/review-bundle.ts dogfood/20260325-week6-a-cli-contract
-npx tsx src/tools/review-bundle.ts --all dogfood/
-find dogfood -maxdepth 2 -name 'index.html' | sort
-npx tsx --eval "(async () => { const { chromium } = await import('playwright'); const browser = await chromium.launch(); const page = await browser.newPage({ viewport: { width: 1440, height: 1000 } }); await page.goto('file://' + process.cwd() + '/dogfood/20260325-week6-a-cli-contract/index.html'); await page.waitForLoadState('networkidle'); await page.screenshot({ path: 'dogfood/20260325-week6-d-review-surface/screenshots/01-week6-a-review-page.png', fullPage: true }); await browser.close(); })().catch((error) => { console.error(error); process.exit(1); });"
-rm -rf '/tmp/agent-terminal-week6.N8X5Dz' && printf 'removed %s\n' '/tmp/agent-terminal-week6.N8X5Dz'
-find dogfood -maxdepth 2 -name 'index.html' ! -path 'dogfood/20260325-week6-a-cli-contract/index.html' ! -path 'dogfood/20260325-week6-b-artifact-health/index.html' ! -path 'dogfood/20260325-week6-c-failure-taxonomy/index.html' ! -path 'dogfood/20260325-week6-d-review-surface/index.html' -print -delete
-npx tsx src/tools/review-bundle.ts --all dogfood/
-find dogfood/20260325-week6-* -maxdepth 1 -name 'index.html' | sort
-find dogfood -maxdepth 2 -name 'index.html' ! -path 'dogfood/20260325-week6-a-cli-contract/index.html' ! -path 'dogfood/20260325-week6-b-artifact-health/index.html' ! -path 'dogfood/20260325-week6-c-failure-taxonomy/index.html' ! -path 'dogfood/20260325-week6-d-review-surface/index.html' -print -delete
-npx tsx src/tools/review-bundle.ts --all dogfood/
-find dogfood/20260325-week6-* -maxdepth 1 -name 'index.html' | sort
-find dogfood -maxdepth 2 -name 'index.html' ! -path 'dogfood/20260325-week6-a-cli-contract/index.html' ! -path 'dogfood/20260325-week6-b-artifact-health/index.html' ! -path 'dogfood/20260325-week6-c-failure-taxonomy/index.html' ! -path 'dogfood/20260325-week6-d-review-surface/index.html' -print -delete
-
-
-
-
-

Command status

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stepexit_codeduration_msstdoutstderrcommand
01-review-single.txt0731 - dogfood/20260325-week6-d-review-surface/logs/01-review-single.txt - - dogfood/20260325-week6-d-review-surface/logs/01-review-single.stderr.txt - - npx tsx src/tools/review-bundle.ts - dogfood/20260325-week6-a-cli-contract -
02-review-all.txt01035 - dogfood/20260325-week6-d-review-surface/logs/02-review-all.txt - - dogfood/20260325-week6-d-review-surface/logs/02-review-all.stderr.txt - npx tsx src/tools/review-bundle.ts --all dogfood/
03-index-files.txt069 - dogfood/20260325-week6-d-review-surface/logs/03-index-files.txt - - dogfood/20260325-week6-d-review-surface/logs/03-index-files.stderr.txt - - find dogfood -maxdepth 2 -name 'index.html' | sort -
04-playwright.txt02197 - dogfood/20260325-week6-d-review-surface/logs/04-playwright.txt - - dogfood/20260325-week6-d-review-surface/logs/04-playwright.stderr.txt - - npx tsx --eval "(async () => { const { chromium } = - await import('playwright'); const browser = await - chromium.launch(); const page = await browser.newPage({ - viewport: { width: 1440, height: 1000 } }); await - page.goto('file://' + process.cwd() + - '/dogfood/20260325-week6-a-cli-contract/index.html'); - await page.waitForLoadState('networkidle'); await - page.screenshot({ path: - 'dogfood/20260325-week6-d-review-surface/screenshots/01-week6-a-review-page.png', - fullPage: true }); await browser.close(); })().catch((error) - => { console.error(error); process.exit(1); });" -
05-cleanup-home.txt068 - dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.txt - - dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.stderr.txt - - rm -rf '/tmp/agent-terminal-week6.N8X5Dz' && - printf 'removed %s\n' - '/tmp/agent-terminal-week6.N8X5Dz' -
06-cleanup-extra-indexes.txt056 - dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.txt - - dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.stderr.txt - - find dogfood -maxdepth 2 -name 'index.html' ! -path - 'dogfood/20260325-week6-a-cli-contract/index.html' ! - -path - 'dogfood/20260325-week6-b-artifact-health/index.html' - ! -path - 'dogfood/20260325-week6-c-failure-taxonomy/index.html' - ! -path - 'dogfood/20260325-week6-d-review-surface/index.html' - -print -delete -
07-review-all-final.txt01021 - dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.txt - - dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.stderr.txt - npx tsx src/tools/review-bundle.ts --all dogfood/
08-week6-index-files.txt061 - dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.txt - - dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.stderr.txt - - find dogfood/20260325-week6-* -maxdepth 1 -name - 'index.html' | sort -
09-cleanup-extra-indexes-final.txt071 - dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.txt - - dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.stderr.txt - - find dogfood -maxdepth 2 -name 'index.html' ! -path - 'dogfood/20260325-week6-a-cli-contract/index.html' ! - -path - 'dogfood/20260325-week6-b-artifact-health/index.html' - ! -path - 'dogfood/20260325-week6-c-failure-taxonomy/index.html' - ! -path - 'dogfood/20260325-week6-d-review-surface/index.html' - -print -delete -
10-review-all-post-edit.txt01004 - dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.txt - - dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.stderr.txt - npx tsx src/tools/review-bundle.ts --all dogfood/
11-week6-index-files-post-edit.txt066 - dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.txt - - dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.stderr.txt - - find dogfood/20260325-week6-* -maxdepth 1 -name - 'index.html' | sort -
12-cleanup-extra-indexes-post-edit.txt056 - dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.txt - - dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.stderr.txt - - find dogfood -maxdepth 2 -name 'index.html' ! -path - 'dogfood/20260325-week6-a-cli-contract/index.html' ! - -path - 'dogfood/20260325-week6-b-artifact-health/index.html' - ! -path - 'dogfood/20260325-week6-c-failure-taxonomy/index.html' - ! -path - 'dogfood/20260325-week6-d-review-surface/index.html' - -print -delete -
-
-
-
-

Artifact inventory

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeSize
- agent-terminal-home.txt - support33 B
command-status.tsvsupport4.1 KB
commands.shscript2.0 KB
- logs/01-review-single.stderr.txt - support47 B
- logs/01-review-single.txt - support107 B
- logs/02-review-all.stderr.txt - support5.8 KB
- logs/02-review-all.txt - support3.8 KB
- logs/03-index-files.stderr.txt - support0 B
- logs/03-index-files.txt - support1.7 KB
- logs/04-playwright.stderr.txt - support0 B
- logs/04-playwright.txt - support0 B
- logs/05-cleanup-home.stderr.txt - support0 B
- logs/05-cleanup-home.txt - support41 B
- logs/06-cleanup-extra-indexes.stderr.txt - support0 B
- logs/06-cleanup-extra-indexes.txt - support1.5 KB
- logs/07-review-all-final.stderr.txt - support5.8 KB
- logs/07-review-all-final.txt - support3.8 KB
- logs/08-week6-index-files.stderr.txt - support0 B
- logs/08-week6-index-files.txt - support205 B
- logs/09-cleanup-extra-indexes-final.stderr.txt - support0 B
- logs/09-cleanup-extra-indexes-final.txt - support1.5 KB
- logs/10-review-all-post-edit.stderr.txt - support5.8 KB
- logs/10-review-all-post-edit.txt - support3.8 KB
- logs/11-week6-index-files-post-edit.stderr.txt - support0 B
- logs/11-week6-index-files-post-edit.txt - support205 B
- logs/12-cleanup-extra-indexes-post-edit.stderr.txt - support0 B
- logs/12-cleanup-extra-indexes-post-edit.txt - support1.5 KB
- logs/13-review-d-final.stderr.txt - support49 B
- logs/13-review-d-final.txt - support0 B
manifest.jsonsupport1.4 KB
notes.mdnotes2.4 KB
recordings/.gitkeepother0 B
- screenshots/01-week6-a-review-page.png - screenshot830.9 KB
snapshots/.gitkeepother0 B
videos/.gitkeepother0 B
-
-
-
- - diff --git a/dogfood/20260325-week6-d-review-surface/logs/01-review-single.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/01-review-single.stderr.txt deleted file mode 100644 index 98c57412..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/01-review-single.stderr.txt +++ /dev/null @@ -1 +0,0 @@ -Building dogfood/20260325-week6-a-cli-contract diff --git a/dogfood/20260325-week6-d-review-surface/logs/01-review-single.txt b/dogfood/20260325-week6-d-review-surface/logs/01-review-single.txt deleted file mode 100644 index d5b7db74..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/01-review-single.txt +++ /dev/null @@ -1 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-a-cli-contract/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/02-review-all.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/02-review-all.stderr.txt deleted file mode 100644 index 2f3c7127..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/02-review-all.stderr.txt +++ /dev/null @@ -1,66 +0,0 @@ -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-lifecycle -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-nvim-demo -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-resize-demo -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260320-renderer-complete -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-post-hardening-smoke -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-crash-retention -warning: Manifest artifact was not found on disk: artifacts/snapshot-1-structured.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-1-reference-dark.png -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-renderer-complete -warning: Manifest artifact was not found on disk: artifacts/snapshot-4-structured.json -warning: Manifest artifact was not found on disk: artifacts/snapshot-4-text.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-4-reference-dark.png -warning: Manifest artifact was not found on disk: artifacts/screenshot-4-reference-light.png -warning: Manifest artifact was not found on disk: artifacts/snapshot-5-structured.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-5-reference-dark.png -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-alt-screen -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-color -warning: Manifest artifact was not found on disk: setup-npm-ci.log -warning: Manifest artifact was not found on disk: setup-playwright-install.log -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-crash -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-hello-prompt -warning: manifest.json did not match the preferred schema; using legacy normalization. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-resize -warning: manifest.json did not match the preferred schema; using legacy normalization. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-scrollback -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-unicode -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-week4-features -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-global-cli-context -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-lazyvim-scenario -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-cli-parity -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-failure-recovery -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-scrollback-review -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-unicode-review -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-resize -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-scrollback -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-platform-closure -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-host -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-renderer -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-replay -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cells -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cursor -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-fonts -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-timing -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-review-helper -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-a-cli-contract -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-b-artifact-health -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-c-failure-taxonomy -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-d-review-surface -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/week5-config-parity -warning: manifest.json was not found; using filesystem scan only. diff --git a/dogfood/20260325-week6-d-review-surface/logs/02-review-all.txt b/dogfood/20260325-week6-d-review-surface/logs/02-review-all.txt deleted file mode 100644 index e9ac31c0..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/02-review-all.txt +++ /dev/null @@ -1,37 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-lifecycle/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-nvim-demo/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-resize-demo/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260320-renderer-complete/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-post-hardening-smoke/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-crash-retention/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-renderer-complete/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-alt-screen/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-color/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-crash/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-hello-prompt/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-resize/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-scrollback/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-unicode/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-week4-features/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-global-cli-context/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-lazyvim-scenario/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-cli-parity/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-failure-recovery/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-scrollback-review/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-unicode-review/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-resize/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-scrollback/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-platform-closure/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-host/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-renderer/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-replay/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cells/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cursor/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-fonts/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-timing/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-review-helper/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-a-cli-contract/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-b-artifact-health/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-c-failure-taxonomy/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-d-review-surface/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/week5-config-parity/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/03-index-files.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/03-index-files.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/logs/03-index-files.txt b/dogfood/20260325-week6-d-review-surface/logs/03-index-files.txt deleted file mode 100644 index 0f1645c0..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/03-index-files.txt +++ /dev/null @@ -1,37 +0,0 @@ -dogfood/20260319-lifecycle/index.html -dogfood/20260319-nvim-demo/index.html -dogfood/20260319-resize-demo/index.html -dogfood/20260320-renderer-complete/index.html -dogfood/20260321-post-hardening-smoke/index.html -dogfood/20260321-week3-crash-retention/index.html -dogfood/20260321-week3-renderer-complete/index.html -dogfood/20260322-dogfood-alt-screen/index.html -dogfood/20260322-dogfood-color/index.html -dogfood/20260322-dogfood-crash/index.html -dogfood/20260322-dogfood-hello-prompt/index.html -dogfood/20260322-dogfood-resize/index.html -dogfood/20260322-dogfood-scrollback/index.html -dogfood/20260322-dogfood-unicode/index.html -dogfood/20260322-dogfood-week4-features/index.html -dogfood/20260322-global-cli-context/index.html -dogfood/20260322-lazyvim-scenario/index.html -dogfood/20260322-week4-cli-parity/index.html -dogfood/20260322-week4-failure-recovery/index.html -dogfood/20260322-week4-scrollback-review/index.html -dogfood/20260322-week4-unicode-review/index.html -dogfood/20260323-bugfix-resize/index.html -dogfood/20260323-bugfix-scrollback/index.html -dogfood/20260323-week5-platform-closure/index.html -dogfood/20260323-week5-recovery-host/index.html -dogfood/20260323-week5-recovery-renderer/index.html -dogfood/20260323-week5-recovery-replay/index.html -dogfood/20260323-week5-render-cells/index.html -dogfood/20260323-week5-render-cursor/index.html -dogfood/20260323-week5-render-fonts/index.html -dogfood/20260323-week5-render-timing/index.html -dogfood/20260323-week5-review-helper/index.html -dogfood/20260325-week6-a-cli-contract/index.html -dogfood/20260325-week6-b-artifact-health/index.html -dogfood/20260325-week6-c-failure-taxonomy/index.html -dogfood/20260325-week6-d-review-surface/index.html -dogfood/week5-config-parity/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/04-playwright.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/04-playwright.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/logs/04-playwright.txt b/dogfood/20260325-week6-d-review-surface/logs/04-playwright.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.txt b/dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.txt deleted file mode 100644 index c2e13944..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.txt +++ /dev/null @@ -1 +0,0 @@ -removed /tmp/agent-terminal-week6.N8X5Dz diff --git a/dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.txt b/dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.txt deleted file mode 100644 index 001b0666..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.txt +++ /dev/null @@ -1,33 +0,0 @@ -dogfood/20260322-dogfood-hello-prompt/index.html -dogfood/20260323-week5-review-helper/index.html -dogfood/20260323-week5-render-timing/index.html -dogfood/week5-config-parity/index.html -dogfood/20260323-week5-render-fonts/index.html -dogfood/20260322-dogfood-alt-screen/index.html -dogfood/20260323-bugfix-scrollback/index.html -dogfood/20260321-week3-renderer-complete/index.html -dogfood/20260323-week5-platform-closure/index.html -dogfood/20260322-week4-failure-recovery/index.html -dogfood/20260323-week5-recovery-renderer/index.html -dogfood/20260322-week4-scrollback-review/index.html -dogfood/20260322-dogfood-resize/index.html -dogfood/20260323-bugfix-resize/index.html -dogfood/20260322-week4-cli-parity/index.html -dogfood/20260321-post-hardening-smoke/index.html -dogfood/20260322-week4-unicode-review/index.html -dogfood/20260322-global-cli-context/index.html -dogfood/20260323-week5-recovery-host/index.html -dogfood/20260322-dogfood-unicode/index.html -dogfood/20260320-renderer-complete/index.html -dogfood/20260323-week5-render-cursor/index.html -dogfood/20260319-lifecycle/index.html -dogfood/20260321-week3-crash-retention/index.html -dogfood/20260319-resize-demo/index.html -dogfood/20260322-dogfood-color/index.html -dogfood/20260322-dogfood-week4-features/index.html -dogfood/20260322-dogfood-crash/index.html -dogfood/20260322-dogfood-scrollback/index.html -dogfood/20260323-week5-recovery-replay/index.html -dogfood/20260319-nvim-demo/index.html -dogfood/20260323-week5-render-cells/index.html -dogfood/20260322-lazyvim-scenario/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.stderr.txt deleted file mode 100644 index 1ae1b16b..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.stderr.txt +++ /dev/null @@ -1,65 +0,0 @@ -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-lifecycle -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-nvim-demo -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-resize-demo -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260320-renderer-complete -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-post-hardening-smoke -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-crash-retention -warning: Manifest artifact was not found on disk: artifacts/snapshot-1-structured.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-1-reference-dark.png -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-renderer-complete -warning: Manifest artifact was not found on disk: artifacts/snapshot-4-structured.json -warning: Manifest artifact was not found on disk: artifacts/snapshot-4-text.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-4-reference-dark.png -warning: Manifest artifact was not found on disk: artifacts/screenshot-4-reference-light.png -warning: Manifest artifact was not found on disk: artifacts/snapshot-5-structured.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-5-reference-dark.png -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-alt-screen -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-color -warning: Manifest artifact was not found on disk: setup-npm-ci.log -warning: Manifest artifact was not found on disk: setup-playwright-install.log -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-crash -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-hello-prompt -warning: manifest.json did not match the preferred schema; using legacy normalization. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-resize -warning: manifest.json did not match the preferred schema; using legacy normalization. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-scrollback -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-unicode -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-week4-features -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-global-cli-context -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-lazyvim-scenario -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-cli-parity -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-failure-recovery -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-scrollback-review -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-unicode-review -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-resize -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-scrollback -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-platform-closure -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-host -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-renderer -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-replay -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cells -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cursor -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-fonts -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-timing -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-review-helper -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-a-cli-contract -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-b-artifact-health -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-c-failure-taxonomy -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-d-review-surface -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/week5-config-parity -warning: manifest.json was not found; using filesystem scan only. diff --git a/dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.txt b/dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.txt deleted file mode 100644 index e9ac31c0..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.txt +++ /dev/null @@ -1,37 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-lifecycle/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-nvim-demo/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-resize-demo/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260320-renderer-complete/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-post-hardening-smoke/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-crash-retention/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-renderer-complete/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-alt-screen/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-color/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-crash/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-hello-prompt/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-resize/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-scrollback/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-unicode/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-week4-features/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-global-cli-context/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-lazyvim-scenario/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-cli-parity/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-failure-recovery/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-scrollback-review/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-unicode-review/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-resize/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-scrollback/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-platform-closure/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-host/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-renderer/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-replay/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cells/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cursor/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-fonts/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-timing/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-review-helper/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-a-cli-contract/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-b-artifact-health/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-c-failure-taxonomy/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-d-review-surface/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/week5-config-parity/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.txt b/dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.txt deleted file mode 100644 index 9cf65398..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.txt +++ /dev/null @@ -1,4 +0,0 @@ -dogfood/20260325-week6-a-cli-contract/index.html -dogfood/20260325-week6-b-artifact-health/index.html -dogfood/20260325-week6-c-failure-taxonomy/index.html -dogfood/20260325-week6-d-review-surface/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.txt b/dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.txt deleted file mode 100644 index 001b0666..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.txt +++ /dev/null @@ -1,33 +0,0 @@ -dogfood/20260322-dogfood-hello-prompt/index.html -dogfood/20260323-week5-review-helper/index.html -dogfood/20260323-week5-render-timing/index.html -dogfood/week5-config-parity/index.html -dogfood/20260323-week5-render-fonts/index.html -dogfood/20260322-dogfood-alt-screen/index.html -dogfood/20260323-bugfix-scrollback/index.html -dogfood/20260321-week3-renderer-complete/index.html -dogfood/20260323-week5-platform-closure/index.html -dogfood/20260322-week4-failure-recovery/index.html -dogfood/20260323-week5-recovery-renderer/index.html -dogfood/20260322-week4-scrollback-review/index.html -dogfood/20260322-dogfood-resize/index.html -dogfood/20260323-bugfix-resize/index.html -dogfood/20260322-week4-cli-parity/index.html -dogfood/20260321-post-hardening-smoke/index.html -dogfood/20260322-week4-unicode-review/index.html -dogfood/20260322-global-cli-context/index.html -dogfood/20260323-week5-recovery-host/index.html -dogfood/20260322-dogfood-unicode/index.html -dogfood/20260320-renderer-complete/index.html -dogfood/20260323-week5-render-cursor/index.html -dogfood/20260319-lifecycle/index.html -dogfood/20260321-week3-crash-retention/index.html -dogfood/20260319-resize-demo/index.html -dogfood/20260322-dogfood-color/index.html -dogfood/20260322-dogfood-week4-features/index.html -dogfood/20260322-dogfood-crash/index.html -dogfood/20260322-dogfood-scrollback/index.html -dogfood/20260323-week5-recovery-replay/index.html -dogfood/20260319-nvim-demo/index.html -dogfood/20260323-week5-render-cells/index.html -dogfood/20260322-lazyvim-scenario/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.stderr.txt deleted file mode 100644 index 1ae1b16b..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.stderr.txt +++ /dev/null @@ -1,65 +0,0 @@ -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-lifecycle -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-nvim-demo -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-resize-demo -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260320-renderer-complete -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-post-hardening-smoke -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-crash-retention -warning: Manifest artifact was not found on disk: artifacts/snapshot-1-structured.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-1-reference-dark.png -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-renderer-complete -warning: Manifest artifact was not found on disk: artifacts/snapshot-4-structured.json -warning: Manifest artifact was not found on disk: artifacts/snapshot-4-text.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-4-reference-dark.png -warning: Manifest artifact was not found on disk: artifacts/screenshot-4-reference-light.png -warning: Manifest artifact was not found on disk: artifacts/snapshot-5-structured.json -warning: Manifest artifact was not found on disk: artifacts/screenshot-5-reference-dark.png -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-alt-screen -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-color -warning: Manifest artifact was not found on disk: setup-npm-ci.log -warning: Manifest artifact was not found on disk: setup-playwright-install.log -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-crash -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-hello-prompt -warning: manifest.json did not match the preferred schema; using legacy normalization. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-resize -warning: manifest.json did not match the preferred schema; using legacy normalization. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-scrollback -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-unicode -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-week4-features -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-global-cli-context -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-lazyvim-scenario -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-cli-parity -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-failure-recovery -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-scrollback-review -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-unicode-review -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-resize -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-scrollback -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-platform-closure -warning: manifest.json was not found; using filesystem scan only. -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-host -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-renderer -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-replay -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cells -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cursor -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-fonts -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-timing -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-review-helper -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-a-cli-contract -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-b-artifact-health -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-c-failure-taxonomy -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-d-review-surface -Building /home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/week5-config-parity -warning: manifest.json was not found; using filesystem scan only. diff --git a/dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.txt b/dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.txt deleted file mode 100644 index e9ac31c0..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.txt +++ /dev/null @@ -1,37 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-lifecycle/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-nvim-demo/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260319-resize-demo/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260320-renderer-complete/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-post-hardening-smoke/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-crash-retention/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260321-week3-renderer-complete/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-alt-screen/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-color/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-crash/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-hello-prompt/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-resize/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-scrollback/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-unicode/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-dogfood-week4-features/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-global-cli-context/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-lazyvim-scenario/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-cli-parity/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-failure-recovery/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-scrollback-review/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260322-week4-unicode-review/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-resize/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-bugfix-scrollback/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-platform-closure/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-host/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-renderer/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-recovery-replay/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cells/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-cursor/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-fonts/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-render-timing/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260323-week5-review-helper/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-a-cli-contract/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-b-artifact-health/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-c-failure-taxonomy/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-d-review-surface/index.html -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/week5-config-parity/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.txt b/dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.txt deleted file mode 100644 index 9cf65398..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.txt +++ /dev/null @@ -1,4 +0,0 @@ -dogfood/20260325-week6-a-cli-contract/index.html -dogfood/20260325-week6-b-artifact-health/index.html -dogfood/20260325-week6-c-failure-taxonomy/index.html -dogfood/20260325-week6-d-review-surface/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.txt b/dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.txt deleted file mode 100644 index 001b0666..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.txt +++ /dev/null @@ -1,33 +0,0 @@ -dogfood/20260322-dogfood-hello-prompt/index.html -dogfood/20260323-week5-review-helper/index.html -dogfood/20260323-week5-render-timing/index.html -dogfood/week5-config-parity/index.html -dogfood/20260323-week5-render-fonts/index.html -dogfood/20260322-dogfood-alt-screen/index.html -dogfood/20260323-bugfix-scrollback/index.html -dogfood/20260321-week3-renderer-complete/index.html -dogfood/20260323-week5-platform-closure/index.html -dogfood/20260322-week4-failure-recovery/index.html -dogfood/20260323-week5-recovery-renderer/index.html -dogfood/20260322-week4-scrollback-review/index.html -dogfood/20260322-dogfood-resize/index.html -dogfood/20260323-bugfix-resize/index.html -dogfood/20260322-week4-cli-parity/index.html -dogfood/20260321-post-hardening-smoke/index.html -dogfood/20260322-week4-unicode-review/index.html -dogfood/20260322-global-cli-context/index.html -dogfood/20260323-week5-recovery-host/index.html -dogfood/20260322-dogfood-unicode/index.html -dogfood/20260320-renderer-complete/index.html -dogfood/20260323-week5-render-cursor/index.html -dogfood/20260319-lifecycle/index.html -dogfood/20260321-week3-crash-retention/index.html -dogfood/20260319-resize-demo/index.html -dogfood/20260322-dogfood-color/index.html -dogfood/20260322-dogfood-week4-features/index.html -dogfood/20260322-dogfood-crash/index.html -dogfood/20260322-dogfood-scrollback/index.html -dogfood/20260323-week5-recovery-replay/index.html -dogfood/20260319-nvim-demo/index.html -dogfood/20260323-week5-render-cells/index.html -dogfood/20260322-lazyvim-scenario/index.html diff --git a/dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.stderr.txt b/dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.stderr.txt deleted file mode 100644 index dca402c6..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.stderr.txt +++ /dev/null @@ -1 +0,0 @@ -Building dogfood/20260325-week6-d-review-surface diff --git a/dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.txt b/dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.txt deleted file mode 100644 index c476a2d8..00000000 --- a/dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.txt +++ /dev/null @@ -1 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_43b108bc65/dogfood/20260325-week6-d-review-surface/index.html diff --git a/dogfood/20260325-week6-d-review-surface/manifest.json b/dogfood/20260325-week6-d-review-surface/manifest.json deleted file mode 100644 index b2e68b4d..00000000 --- a/dogfood/20260325-week6-d-review-surface/manifest.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "bundle": "20260325-week6-d-review-surface", - "title": "Week 6 — Review Surface Proof", - "description": "Proves review-bundle generation and reviewer-facing index pages for the Week 6 dogfood bundles", - "createdAt": "2026-03-25T08:49:36Z", - "week": 6, - "lane": "D", - "artifacts": [ - { - "path": "logs/01-review-single.txt", - "description": "Single-bundle review generation output for the Week 6 CLI contract bundle" - }, - { - "path": "logs/02-review-all.txt", - "description": "Initial all-bundles review generation output across the dogfood tree" - }, - { - "path": "logs/10-review-all-post-edit.txt", - "description": "Final all-bundles review generation output after the Week 6 bundle notes and manifests were settled" - }, - { - "path": "logs/11-week6-index-files-post-edit.txt", - "description": "Verification listing showing the final four Week 6 review pages" - }, - { - "path": "screenshots/01-week6-a-review-page.png", - "description": "Full-page screenshot of the generated Week 6 bundle A review page" - }, - { - "path": "logs/05-cleanup-home.txt", - "description": "Proof that the isolated AGENT_TERMINAL_HOME was removed after capture" - }, - { - "path": "logs/06-cleanup-extra-indexes.txt", - "description": "List of non-Week-6 generated review pages removed after validation to keep the diff scoped" - } - ] -} diff --git a/dogfood/20260325-week6-d-review-surface/notes.md b/dogfood/20260325-week6-d-review-surface/notes.md deleted file mode 100644 index a8c7e137..00000000 --- a/dogfood/20260325-week6-d-review-surface/notes.md +++ /dev/null @@ -1,25 +0,0 @@ -# 2026-03-25 dogfood — Week 6 bundle D review surface proof - -## Bundle metadata - -- **Bundle path:** `dogfood/20260325-week6-d-review-surface/` -- **Review helper:** `npx tsx src/tools/review-bundle.ts` -- **Week 6 focus bundles:** `20260325-week6-a-cli-contract`, `20260325-week6-b-artifact-health`, `20260325-week6-c-failure-taxonomy`, and `20260325-week6-d-review-surface` -- **Cleaned AGENT_TERMINAL_HOME:** `/tmp/agent-terminal-week6.N8X5Dz` - -## Scenario summary - -This bundle proves the reviewer-facing surface for the new Week 6 bundles. It generated a single-bundle review page for bundle A, then ran `review-bundle --all dogfood/` to render review pages for every dogfood bundle, captured a browser screenshot of the generated bundle A page, verified the generated index file list, and finally cleaned the temporary session home plus the non-Week-6 generated pages to keep the git diff scoped. - -## Review answers - -- **Did single-bundle generation succeed?** Yes. `logs/01-review-single.txt` contains the generated path for `dogfood/20260325-week6-a-cli-contract/index.html`. -- **Did all-bundle generation succeed?** Yes. `logs/02-review-all.txt` captured the first `--all` pass, `logs/07-review-all-final.txt` captured the first post-notes refresh, and `logs/10-review-all-post-edit.txt` captured the final `review-bundle --all dogfood/` run after the bundle notes/manifests were settled. -- **How was index generation verified?** `logs/03-index-files.txt` records the full-tree `index.html` list from the first `--all` pass, and `logs/11-week6-index-files-post-edit.txt` confirms the final committed Week 6 set contains all four generated review pages. -- **Is there visual proof of the review page?** Yes. `screenshots/01-week6-a-review-page.png` is a full-page Playwright screenshot of the generated bundle A review page. -- **Was the isolated temp home cleaned up?** Yes. `logs/05-cleanup-home.txt` confirms removal of `/tmp/agent-terminal-week6.N8X5Dz`. -- **Why does the committed diff not include review pages for every historical bundle?** After verification, `logs/06-cleanup-extra-indexes.txt` records deletion of the non-Week-6 generated `index.html` files so the commit stays focused on the new Week 6 proof bundles while still demonstrating that `--all` worked. - -## Issues / limitations - -- None during capture. Playwright loaded the generated local `file://` review page without errors and saved the screenshot successfully. diff --git a/dogfood/20260325-week6-d-review-surface/recordings/.gitkeep b/dogfood/20260325-week6-d-review-surface/recordings/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/screenshots/01-week6-a-review-page.png b/dogfood/20260325-week6-d-review-surface/screenshots/01-week6-a-review-page.png deleted file mode 100644 index 499c7a00..00000000 Binary files a/dogfood/20260325-week6-d-review-surface/screenshots/01-week6-a-review-page.png and /dev/null differ diff --git a/dogfood/20260325-week6-d-review-surface/snapshots/.gitkeep b/dogfood/20260325-week6-d-review-surface/snapshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week6-d-review-surface/videos/.gitkeep b/dogfood/20260325-week6-d-review-surface/videos/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/agent-terminal-home.txt b/dogfood/20260325-week7-a-cli-parity/agent-terminal-home.txt deleted file mode 100644 index 1368e278..00000000 --- a/dogfood/20260325-week7-a-cli-parity/agent-terminal-home.txt +++ /dev/null @@ -1 +0,0 @@ -/tmp/tmp.avp2NwNn0m diff --git a/dogfood/20260325-week7-a-cli-parity/command-status.tsv b/dogfood/20260325-week7-a-cli-parity/command-status.tsv deleted file mode 100644 index 82954072..00000000 --- a/dogfood/20260325-week7-a-cli-parity/command-status.tsv +++ /dev/null @@ -1,15 +0,0 @@ -step command exit_code status -01-doctor npx tsx src/cli/main.ts doctor --json 0 pass -02-version npx tsx src/cli/main.ts version --json 0 pass -03-create npx tsx src/cli/main.ts create --json -- node --import tsx test/fixtures/apps/hello-prompt/main.ts 0 pass -04-send-keys npx tsx src/cli/main.ts send-keys 01KMK8J0XB9THNASXVNPF697ZD --json Enter 0 pass -05-type npx tsx src/cli/main.ts type 01KMK8J0XB9THNASXVNPF697ZD --json "hello world" 0 pass -06-paste npx tsx src/cli/main.ts paste 01KMK8J0XB9THNASXVNPF697ZD --json "pasted text" 0 pass -07-snapshot npx tsx src/cli/main.ts snapshot 01KMK8J0XB9THNASXVNPF697ZD --json --format text 0 pass -08-screenshot npx tsx src/cli/main.ts screenshot 01KMK8J0XB9THNASXVNPF697ZD --json 0 pass -09-list npx tsx src/cli/main.ts list --json 0 pass -10-inspect npx tsx src/cli/main.ts inspect 01KMK8J0XB9THNASXVNPF697ZD --json 0 pass -11-record-export-cast npx tsx src/cli/main.ts record export 01KMK8J0XB9THNASXVNPF697ZD --format asciicast --json --out dogfood/20260325-week7-a-cli-parity/recordings/recording-01.cast 0 pass -12-record-export-webm npx tsx src/cli/main.ts record export 01KMK8J0XB9THNASXVNPF697ZD --format webm --json --out dogfood/20260325-week7-a-cli-parity/videos/video-01.webm 0 pass -13-destroy npx tsx src/cli/main.ts destroy 01KMK8J0XB9THNASXVNPF697ZD --json 0 pass -14-list-after-destroy npx tsx src/cli/main.ts list --json 0 pass diff --git a/dogfood/20260325-week7-a-cli-parity/commands.sh b/dogfood/20260325-week7-a-cli-parity/commands.sh deleted file mode 100755 index 0a7465e9..00000000 --- a/dogfood/20260325-week7-a-cli-parity/commands.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -export PATH="$HOME/.local/share/mise/shims:$HOME/.local/bin:$PATH" - -BUNDLE_DIR="dogfood/20260325-week7-a-cli-parity" -LOG_DIR="$BUNDLE_DIR/logs" -SCREENSHOT_DIR="$BUNDLE_DIR/screenshots" -SNAPSHOT_DIR="$BUNDLE_DIR/snapshots" -RECORDING_DIR="$BUNDLE_DIR/recordings" -VIDEO_DIR="$BUNDLE_DIR/videos" -STATUS_TSV="$BUNDLE_DIR/command-status.tsv" - -mkdir -p "$LOG_DIR" "$SCREENSHOT_DIR" "$SNAPSHOT_DIR" "$RECORDING_DIR" "$VIDEO_DIR" -find "$LOG_DIR" "$SCREENSHOT_DIR" "$SNAPSHOT_DIR" "$RECORDING_DIR" "$VIDEO_DIR" -mindepth 1 -maxdepth 1 -type f -delete -rm -f "$BUNDLE_DIR/agent-terminal-home.txt" "$BUNDLE_DIR/session-id.txt" "$STATUS_TSV" -touch "$SCREENSHOT_DIR/.gitkeep" "$SNAPSHOT_DIR/.gitkeep" "$RECORDING_DIR/.gitkeep" "$VIDEO_DIR/.gitkeep" - -pretty_json() { - local path="$1" - node -e "const fs=require('fs'); const path=process.argv[1]; const text=fs.readFileSync(path,'utf8').trim(); if (text.length === 0) process.exit(0); const value=JSON.parse(text); fs.writeFileSync(path, JSON.stringify(value, null, 2) + '\n');" "$path" -} - -record_status() { - local step="$1" - local command="$2" - local exit_code="$3" - local status="$4" - printf '%s\t%s\t%s\t%s\n' "$step" "$command" "$exit_code" "$status" >> "$STATUS_TSV" -} - -run_json_step() { - local step="$1" - local command="$2" - local allow_failure="$3" - local stdout_path="$LOG_DIR/$step.json" - local stderr_path="$LOG_DIR/$step.stderr.txt" - local exit_code=0 - - set +e - eval "$command" >"$stdout_path" 2>"$stderr_path" - exit_code=$? - set -e - - if [ -s "$stdout_path" ]; then - pretty_json "$stdout_path" - fi - - local status="pass" - if [ "$exit_code" -ne 0 ]; then - status="fail" - fi - record_status "$step" "$command" "$exit_code" "$status" - - if [ "$allow_failure" = "true" ] || [ "$exit_code" -eq 0 ]; then - return 0 - fi - return "$exit_code" -} - -write_snapshot_text() { - local json_path="$1" - local output_path="$2" - node -e "const fs=require('fs'); const value=JSON.parse(fs.readFileSync(process.argv[1],'utf8')); const text=value?.result?.text; if (typeof text !== 'string') { throw new Error('snapshot output did not include result.text'); } fs.writeFileSync(process.argv[2], text + '\n');" "$json_path" "$output_path" -} - -copy_screenshot_artifact() { - local json_path="$1" - local output_path="$2" - local source_path - source_path=$(node -e "const fs=require('fs'); const value=JSON.parse(fs.readFileSync(process.argv[1],'utf8')); const artifactPath=value?.result?.artifactPath; if (typeof artifactPath !== 'string' || artifactPath.length === 0) { throw new Error('screenshot output did not include result.artifactPath'); } process.stdout.write(artifactPath);" "$json_path") - cp "$source_path" "$output_path" -} - -TMP_HOME=$(mktemp -d) -export AGENT_TERMINAL_HOME="$TMP_HOME" -printf '%s\n' "$AGENT_TERMINAL_HOME" > "$BUNDLE_DIR/agent-terminal-home.txt" -printf 'step\tcommand\texit_code\tstatus\n' > "$STATUS_TSV" - -cleanup() { - rm -rf "$TMP_HOME" -} -trap cleanup EXIT - -npm ci - -run_json_step '01-doctor' 'npx tsx src/cli/main.ts doctor --json' 'false' -run_json_step '02-version' 'npx tsx src/cli/main.ts version --json' 'false' -run_json_step '03-create' 'npx tsx src/cli/main.ts create --json -- node --import tsx test/fixtures/apps/hello-prompt/main.ts' 'false' - -SESSION_ID=$(node -e "const fs=require('fs'); const value=JSON.parse(fs.readFileSync(process.argv[1],'utf8')); const sessionId=value?.result?.sessionId; if (typeof sessionId !== 'string' || sessionId.length === 0) { throw new Error('create output did not include result.sessionId'); } process.stdout.write(sessionId);" "$LOG_DIR/03-create.json") -printf '%s\n' "$SESSION_ID" > "$BUNDLE_DIR/session-id.txt" -sleep 1 - -run_json_step '04-send-keys' "npx tsx src/cli/main.ts send-keys $SESSION_ID --json Enter" 'false' -run_json_step '05-type' "npx tsx src/cli/main.ts type $SESSION_ID --json \"hello world\"" 'false' -run_json_step '06-paste' "npx tsx src/cli/main.ts paste $SESSION_ID --json \"pasted text\"" 'false' -run_json_step '07-snapshot' "npx tsx src/cli/main.ts snapshot $SESSION_ID --json --format text" 'false' -write_snapshot_text "$LOG_DIR/07-snapshot.json" "$SNAPSHOT_DIR/snapshot-01.txt" -run_json_step '08-screenshot' "npx tsx src/cli/main.ts screenshot $SESSION_ID --json" 'true' -if [ -f "$LOG_DIR/08-screenshot.json" ]; then - if node -e "const fs=require('fs'); const value=JSON.parse(fs.readFileSync(process.argv[1],'utf8')); process.exit(value.ok === true ? 0 : 1);" "$LOG_DIR/08-screenshot.json"; then - copy_screenshot_artifact "$LOG_DIR/08-screenshot.json" "$SCREENSHOT_DIR/screenshot-01.png" - fi -fi -run_json_step '09-list' 'npx tsx src/cli/main.ts list --json' 'false' -run_json_step '10-inspect' "npx tsx src/cli/main.ts inspect $SESSION_ID --json" 'false' -run_json_step '11-record-export-cast' "npx tsx src/cli/main.ts record export $SESSION_ID --format asciicast --json --out $RECORDING_DIR/recording-01.cast" 'true' -run_json_step '12-record-export-webm' "npx tsx src/cli/main.ts record export $SESSION_ID --format webm --json --out $VIDEO_DIR/video-01.webm" 'true' -run_json_step '13-destroy' "npx tsx src/cli/main.ts destroy $SESSION_ID --json" 'false' -run_json_step '14-list-after-destroy' 'npx tsx src/cli/main.ts list --json' 'false' diff --git a/dogfood/20260325-week7-a-cli-parity/index.html b/dogfood/20260325-week7-a-cli-parity/index.html deleted file mode 100644 index 73815e82..00000000 --- a/dogfood/20260325-week7-a-cli-parity/index.html +++ /dev/null @@ -1,1412 +0,0 @@ - - - - - - Week 7 — CLI Parity Proof review bundle - - - -
-
-

Portable review bundle

-

Week 7 — CLI Parity Proof

-

Bundle directory: 20260325-week7-a-cli-parity

-

- Exercises ratified CLI commands against a real hello-prompt session - and captures every JSON envelope. -

-
- -
-

Manifest summary

-
-
-
Bundle
-
20260325-week7-a-cli-parity
-
-
-
Date
-
2026-03-25T19:48:08Z
-
-
-
Session ID
-
01KMK8J0XB9THNASXVNPF697ZD
-
-
-
Result
-
pass
-
-
-
Fixture
-
node --import tsx test/fixtures/apps/hello-prompt/main.ts
-
-
-
Lane
-
A
-
-
-
Week
-
7
-
-
-
Commands
-
14
-
-
-
Manifest artifacts
-
21
-
-
-
Discovered files
-
42
-
-
-
-

Commands

-
    -
  • npx tsx src/cli/main.ts doctor --json
  • -
  • npx tsx src/cli/main.ts version --json
  • -
  • - npx tsx src/cli/main.ts create --json -- node --import tsx - test/fixtures/apps/hello-prompt/main.ts -
  • -
  • - npx tsx src/cli/main.ts send-keys 01KMK8J0XB9THNASXVNPF697ZD - --json Enter -
  • -
  • - npx tsx src/cli/main.ts type 01KMK8J0XB9THNASXVNPF697ZD --json - "hello world" -
  • -
  • - npx tsx src/cli/main.ts paste 01KMK8J0XB9THNASXVNPF697ZD --json - "pasted text" -
  • -
  • - npx tsx src/cli/main.ts snapshot 01KMK8J0XB9THNASXVNPF697ZD --json - --format text -
  • -
  • - npx tsx src/cli/main.ts screenshot 01KMK8J0XB9THNASXVNPF697ZD - --json -
  • -
  • npx tsx src/cli/main.ts list --json
  • -
  • - npx tsx src/cli/main.ts inspect 01KMK8J0XB9THNASXVNPF697ZD --json -
  • -
  • - npx tsx src/cli/main.ts record export 01KMK8J0XB9THNASXVNPF697ZD - --format asciicast --json --out - dogfood/20260325-week7-a-cli-parity/recordings/recording-01.cast -
  • -
  • - npx tsx src/cli/main.ts record export 01KMK8J0XB9THNASXVNPF697ZD - --format webm --json --out - dogfood/20260325-week7-a-cli-parity/videos/video-01.webm -
  • -
  • - npx tsx src/cli/main.ts destroy 01KMK8J0XB9THNASXVNPF697ZD --json -
  • -
  • npx tsx src/cli/main.ts list --json
  • -
-
-
-
-

Screenshot gallery

- -
-
-

Video gallery

- -
-
-

Recordings

- -
-
-

JSON outputs

- -
- logs/01-doctor.json -
{
-  "ok": true,
-  "command": "doctor",
-  "timestamp": "2026-03-25T19:46:44.696Z",
-  "result": {
-    "ok": true,
-    "checks": {
-      "environment": [
-        {
-          "name": "node-runtime",
-          "status": "pass",
-          "message": "Node 24.14.0 ok",
-          "durationMs": 0
-        },
-        {
-          "name": "cwd-access",
-          "status": "pass",
-          "message": "cwd read/write: /home/coder/.mux/src/agent-terminal/agent_exec_f12f292f10",
-          "durationMs": 2
-        },
-        {
-          "name": "temp-dir",
-          "status": "pass",
-          "message": "temp dir ok: /tmp",
-          "durationMs": 0
-        },
-        {
-          "name": "home-writable",
-          "status": "pass",
-          "message": "home writable: /tmp/tmp.avp2NwNn0m",
-          "durationMs": 1
-        },
-        {
-          "name": "pty-spawn",
-          "status": "pass",
-          "message": "spawned /home/coder/.local/share/mise/installs/node/24.14.0/bin/node",
-          "durationMs": 36
-        },
-        {
-          "name": "socket-viable",
-          "status": "pass",
-          "message": "socket ok: /tmp/tmp.avp2NwNn0m/sessions/doctor-2317651-mn6gfmy0-2/host.sock",
-          "durationMs": 3
-        },
-        {
-          "name": "artifact-atomicity",
-          "status": "pass",
-          "message": "atomic rename ok: /tmp/tmp.avp2NwNn0m/sessions/doctor-2317651-mn6gfmy3-3/artifacts",
-          "durationMs": 2
-        },
-        {
-          "name": "event-log-writable",
-          "status": "pass",
-          "message": "append ok: /tmp/tmp.avp2NwNn0m/sessions/doctor-2317651-mn6gfmy5-5/events.jsonl",
-          "durationMs": 1
-        }
-      ],
-      "renderer": [
-        {
-          "name": "playwright_available",
-          "status": "pass",
-          "message": "available",
-          "durationMs": 0
-        },
-        {
-          "name": "browser_launch",
-          "status": "pass",
-          "message": "chromium launches",
-          "durationMs": 118
-        },
-        {
-          "name": "ghostty_web_available",
-          "status": "pass",
-          "message": "WASM available",
-          "durationMs": 89
-        },
-        {
-          "name": "screenshot_viable",
-          "status": "pass",
-          "message": "viable",
-          "durationMs": 155
-        }
-      ]
-    }
-  }
-}
-
-
- logs/02-version.json -
{
-  "ok": true,
-  "command": "version",
-  "timestamp": "2026-03-25T19:46:45.721Z",
-  "result": {
-    "cliVersion": "0.1.0",
-    "protocolVersion": "0.1.0",
-    "rendererBackends": [
-      "ghostty-web"
-    ],
-    "runtime": {
-      "node": "v24.14.0",
-      "platform": "linux",
-      "arch": "x64"
-    }
-  }
-}
-
-
- logs/03-create.json -
{
-  "ok": true,
-  "command": "create",
-  "timestamp": "2026-03-25T19:46:47.550Z",
-  "result": {
-    "sessionId": "01KMK8J0XB9THNASXVNPF697ZD",
-    "createdAt": "2026-03-25T19:46:46.829Z",
-    "cols": 80,
-    "rows": 24,
-    "shell": "/bin/bash"
-  }
-}
-
-
- logs/04-send-keys.json -
{
-  "ok": true,
-  "command": "send-keys",
-  "timestamp": "2026-03-25T19:46:49.776Z",
-  "result": {
-    "accepted": [
-      "Enter"
-    ],
-    "bytesWritten": 1,
-    "seq": 1
-  }
-}
-
-
- logs/05-type.json -
{
-  "ok": true,
-  "command": "type",
-  "timestamp": "2026-03-25T19:46:50.826Z",
-  "result": {}
-}
-
-
- logs/06-paste.json -
{
-  "ok": true,
-  "command": "paste",
-  "timestamp": "2026-03-25T19:46:51.893Z",
-  "result": {}
-}
-
-
- logs/07-snapshot.json -
{
-  "ok": true,
-  "command": "snapshot",
-  "timestamp": "2026-03-25T19:46:53.420Z",
-  "result": {
-    "format": "text",
-    "sessionId": "01KMK8J0XB9THNASXVNPF697ZD",
-    "capturedAtSeq": 7,
-    "cols": 80,
-    "rows": 24,
-    "cursorRow": 2,
-    "cursorCol": 43,
-    "text": "READY>\nECHO:\nREADY> hello world^[[200~pasted text^[[201~\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
-  }
-}
-
-
- logs/08-screenshot.json -
{
-  "ok": true,
-  "command": "screenshot",
-  "timestamp": "2026-03-25T19:46:54.727Z",
-  "result": {
-    "sessionId": "01KMK8J0XB9THNASXVNPF697ZD",
-    "capturedAtSeq": 7,
-    "profileName": "reference-dark",
-    "cols": 80,
-    "rows": 24,
-    "artifactPath": "/tmp/tmp.avp2NwNn0m/sessions/01KMK8J0XB9THNASXVNPF697ZD/artifacts/screenshot-7-reference-dark.png",
-    "pngSizeBytes": 7199,
-    "cursorVisible": false,
-    "rendererBackend": "ghostty-web",
-    "pixelWidth": 640,
-    "pixelHeight": 384,
-    "sha256": "4ea7f261c8d3ceadb61b60ecab33fed34b2bb49c5b928befb5cd8bbfb75f9bf0",
-    "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8"
-  }
-}
-
-
- logs/09-list.json -
{
-  "ok": true,
-  "command": "list",
-  "timestamp": "2026-03-25T19:46:55.923Z",
-  "result": {
-    "sessions": [
-      {
-        "sessionId": "01KMK8J0XB9THNASXVNPF697ZD",
-        "status": "running",
-        "command": [
-          "node",
-          "--import",
-          "tsx",
-          "test/fixtures/apps/hello-prompt/main.ts"
-        ],
-        "createdAt": "2026-03-25T19:46:46.829Z",
-        "pid": 2318571
-      }
-    ]
-  }
-}
-
-
- logs/10-inspect.json -
{
-  "ok": true,
-  "command": "inspect",
-  "timestamp": "2026-03-25T19:46:57.058Z",
-  "result": {
-    "session": {
-      "version": 1,
-      "sessionId": "01KMK8J0XB9THNASXVNPF697ZD",
-      "createdAt": "2026-03-25T19:46:46.829Z",
-      "updatedAt": "2026-03-25T19:46:47.518Z",
-      "status": "running",
-      "command": [
-        "node",
-        "--import",
-        "tsx",
-        "test/fixtures/apps/hello-prompt/main.ts"
-      ],
-      "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_f12f292f10",
-      "shell": "/bin/bash",
-      "term": "xterm-256color",
-      "cols": 80,
-      "rows": 24,
-      "creationCols": 80,
-      "creationRows": 24,
-      "hostPid": 2318558,
-      "childPid": 2318571,
-      "exitCode": null,
-      "exitSignal": null
-    },
-    "eventCount": 8,
-    "uptime": 10222,
-    "lastEventSeq": 7,
-    "terminationCategory": "running",
-    "artifacts": {
-      "total": 2,
-      "byKind": {
-        "snapshot": 1,
-        "screenshot": 1
-      },
-      "missingCount": 0,
-      "health": "healthy"
-    },
-    "usedOfflineReplay": false
-  }
-}
-
-
- logs/11-record-export-cast.json -
{
-  "ok": true,
-  "command": "record export",
-  "timestamp": "2026-03-25T19:46:58.112Z",
-  "result": {
-    "sessionId": "01KMK8J0XB9THNASXVNPF697ZD",
-    "format": "asciicast",
-    "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_f12f292f10/dogfood/20260325-week7-a-cli-parity/recordings/recording-01.cast",
-    "bytes": 326,
-    "sha256": "3e7b4fd128f41a1275cdbec48143a76d9e7801f6e84fcb1923687776548a4a0b",
-    "capturedAtSeq": 7,
-    "durationMs": 4240,
-    "metadata": {
-      "width": 80,
-      "height": 24,
-      "title": "01KMK8J0XB9THNASXVNPF697ZD",
-      "timestamp": 1774468007,
-      "outputEventCount": 5,
-      "resizeEventCount": 0,
-      "markerCount": 0
-    }
-  }
-}
-
-
- logs/12-record-export-webm.json -
{
-  "ok": true,
-  "command": "record export",
-  "timestamp": "2026-03-25T19:47:01.080Z",
-  "result": {
-    "sessionId": "01KMK8J0XB9THNASXVNPF697ZD",
-    "format": "webm",
-    "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_f12f292f10/dogfood/20260325-week7-a-cli-parity/videos/video-01.webm",
-    "bytes": 15417,
-    "sha256": "616373f59af025e8e5e3047453a8e45c692ef34bb474c04f2fb5b6362f0125ad",
-    "capturedAtSeq": 7,
-    "durationMs": 4240,
-    "metadata": {
-      "width": 80,
-      "height": 24,
-      "profileName": "reference-dark",
-      "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8",
-      "timingMode": "accelerated",
-      "outputEventCount": 5,
-      "resizeEventCount": 0
-    }
-  }
-}
-
-
- logs/13-destroy.json -
{
-  "ok": true,
-  "command": "destroy",
-  "timestamp": "2026-03-25T19:47:02.863Z",
-  "result": {
-    "sessionId": "01KMK8J0XB9THNASXVNPF697ZD",
-    "destroyed": true
-  }
-}
-
-
- logs/14-list-after-destroy.json -
{
-  "ok": true,
-  "command": "list",
-  "timestamp": "2026-03-25T19:47:04.472Z",
-  "result": {
-    "sessions": []
-  }
-}
-
-
-
-

Notes

- -
-

notes.md

-

2026-03-25 dogfood — Week 7 bundle A CLI parity proof

-

Bundle metadata

-
    -
  • - Bundle path: - dogfood/20260325-week7-a-cli-parity/ -
  • -
  • - Session ID: - 01KMK8J0XB9THNASXVNPF697ZD -
  • -
  • - Isolated AGENT_TERMINAL_HOME: - /tmp/tmp.avp2NwNn0m -
  • -
  • - CLI entrypoint: - npx tsx src/cli/main.ts -
  • -
  • - Fixture app: - node --import tsx test/fixtures/apps/hello-prompt/main.ts -
  • -
-

Scenario summary

-

- This bundle proves the ratified Week 7 CLI parity surface against a - real isolated interactive session and captures a JSON envelope for - every exercised command. -

-
    -
  • - doctor --json and - version --json verified the runtime, PTY, renderer, - and CLI metadata before exercising session control. -
  • -
  • - create --json launched the - hello-prompt fixture as a live session, then - send-keys, type, and - paste drove the prompt without leaving the isolated - temp home behind. -
  • -
  • - snapshot --json --format text and - screenshot --json captured the live terminal state; - their bundle-local reviewer copies are - snapshots/snapshot-01.txt and - screenshots/screenshot-01.png. -
  • -
  • - record export produced both an asciicast and a WebM, - and destroy --json followed by - list --json proved cleanup. -
  • -
-

Review answers

-
    -
  • - Did doctor --json verify the environment and - renderer path? - Yes. logs/01-doctor.json reports successful Node, - PTY, Playwright, Ghostty Web, and screenshot viability checks. -
  • -
  • - Did version --json report the ratified CLI/runtime - facts? - Yes. logs/02-version.json reports - cliVersion, protocolVersion, - rendererBackends, and runtime platform details. -
  • -
  • - Did create --json start a real isolated prompt - session? - Yes. logs/03-create.json created session - 01KMK8J0XB9THNASXVNPF697ZD, and - logs/09-list.json shows the same session still - running with the fixture command. -
  • -
  • - Did send-keys, type, and - paste all succeed on the running session? - Yes. logs/04-send-keys.json, - logs/05-type.json, and - logs/06-paste.json all returned - ok: true, and the resulting prompt buffer is visible - in snapshots/snapshot-01.txt. -
  • -
  • - Did snapshot capture the live terminal text? Yes. - logs/07-snapshot.json captured the text snapshot at - capturedAtSeq: 7, and - snapshots/snapshot-01.txt preserves the - reviewer-facing copy. -
  • -
  • - Did screenshot capture the rendered terminal state? - Yes. logs/08-screenshot.json reports a ghostty-web - screenshot with SHA-256 metadata, and - screenshots/screenshot-01.png is the copied reviewer - artifact. -
  • -
  • - Did list and inspect expose the live session state before - teardown? - Yes. logs/09-list.json shows the running session, and - logs/10-inspect.json shows - status: "running", - lastEventSeq: 7, - artifacts.byKind.snapshot: 1, - artifacts.byKind.screenshot: 1, and - usedOfflineReplay: false. -
  • -
  • - Did record export produce both ratified formats? - Yes. logs/11-record-export-cast.json + - recordings/recording-01.cast prove asciicast export, - and logs/12-record-export-webm.json + - videos/video-01.webm prove WebM export. -
  • -
  • - Did destroy remove the session and leave the home - empty? - Yes. logs/13-destroy.json reports - destroyed: true, and - logs/14-list-after-destroy.json reports - sessions: []. -
  • -
  • - Where are the stderr sidecars and command ledger? - Each numbered step has a matching - logs/*.stderr.txt file, and - command-status.tsv records every command, exit code, - and pass/fail status. -
  • -
-

Issues / limitations

-
    -
  • - The task brief sketched --out flags for - snapshot and screenshot, but the current - ratified CLI persists those artifacts inside the isolated session - directory instead. This proof captured the JSON envelopes from - snapshot --json --format text and - screenshot --json, then copied the resulting reviewer - artifacts into snapshots/ and - screenshots/. -
  • -
  • - The live prompt buffer in - snapshots/snapshot-01.txt shows bracketed-paste - control sequences around the pasted text. That is expected here - because the proof captured the session before pressing Enter after - paste; the hello-prompt fixture only - normalizes pasted content once it receives a completed input line. -
  • -
  • - logs/08-screenshot.json points at a PNG path inside - /tmp/tmp.avp2NwNn0m, which was cleaned up at the end - of the run. The durable reviewer copy is - screenshots/screenshot-01.png. -
  • -
-
-
-
-

Commands

-
-

commands.sh

-
#!/usr/bin/env bash
-set -euo pipefail
-
-export PATH="$HOME/.local/share/mise/shims:$HOME/.local/bin:$PATH"
-
-BUNDLE_DIR="dogfood/20260325-week7-a-cli-parity"
-LOG_DIR="$BUNDLE_DIR/logs"
-SCREENSHOT_DIR="$BUNDLE_DIR/screenshots"
-SNAPSHOT_DIR="$BUNDLE_DIR/snapshots"
-RECORDING_DIR="$BUNDLE_DIR/recordings"
-VIDEO_DIR="$BUNDLE_DIR/videos"
-STATUS_TSV="$BUNDLE_DIR/command-status.tsv"
-
-mkdir -p "$LOG_DIR" "$SCREENSHOT_DIR" "$SNAPSHOT_DIR" "$RECORDING_DIR" "$VIDEO_DIR"
-find "$LOG_DIR" "$SCREENSHOT_DIR" "$SNAPSHOT_DIR" "$RECORDING_DIR" "$VIDEO_DIR" -mindepth 1 -maxdepth 1 -type f -delete
-rm -f "$BUNDLE_DIR/agent-terminal-home.txt" "$BUNDLE_DIR/session-id.txt" "$STATUS_TSV"
-touch "$SCREENSHOT_DIR/.gitkeep" "$SNAPSHOT_DIR/.gitkeep" "$RECORDING_DIR/.gitkeep" "$VIDEO_DIR/.gitkeep"
-
-pretty_json() {
-  local path="$1"
-  node -e "const fs=require('fs'); const path=process.argv[1]; const text=fs.readFileSync(path,'utf8').trim(); if (text.length === 0) process.exit(0); const value=JSON.parse(text); fs.writeFileSync(path, JSON.stringify(value, null, 2) + '\n');" "$path"
-}
-
-record_status() {
-  local step="$1"
-  local command="$2"
-  local exit_code="$3"
-  local status="$4"
-  printf '%s\t%s\t%s\t%s\n' "$step" "$command" "$exit_code" "$status" >> "$STATUS_TSV"
-}
-
-run_json_step() {
-  local step="$1"
-  local command="$2"
-  local allow_failure="$3"
-  local stdout_path="$LOG_DIR/$step.json"
-  local stderr_path="$LOG_DIR/$step.stderr.txt"
-  local exit_code=0
-
-  set +e
-  eval "$command" >"$stdout_path" 2>"$stderr_path"
-  exit_code=$?
-  set -e
-
-  if [ -s "$stdout_path" ]; then
-    pretty_json "$stdout_path"
-  fi
-
-  local status="pass"
-  if [ "$exit_code" -ne 0 ]; then
-    status="fail"
-  fi
-  record_status "$step" "$command" "$exit_code" "$status"
-
-  if [ "$allow_failure" = "true" ] || [ "$exit_code" -eq 0 ]; then
-    return 0
-  fi
-  return "$exit_code"
-}
-
-write_snapshot_text() {
-  local json_path="$1"
-  local output_path="$2"
-  node -e "const fs=require('fs'); const value=JSON.parse(fs.readFileSync(process.argv[1],'utf8')); const text=value?.result?.text; if (typeof text !== 'string') { throw new Error('snapshot output did not include result.text'); } fs.writeFileSync(process.argv[2], text + '\n');" "$json_path" "$output_path"
-}
-
-copy_screenshot_artifact() {
-  local json_path="$1"
-  local output_path="$2"
-  local source_path
-  source_path=$(node -e "const fs=require('fs'); const value=JSON.parse(fs.readFileSync(process.argv[1],'utf8')); const artifactPath=value?.result?.artifactPath; if (typeof artifactPath !== 'string' || artifactPath.length === 0) { throw new Error('screenshot output did not include result.artifactPath'); } process.stdout.write(artifactPath);" "$json_path")
-  cp "$source_path" "$output_path"
-}
-
-TMP_HOME=$(mktemp -d)
-export AGENT_TERMINAL_HOME="$TMP_HOME"
-printf '%s\n' "$AGENT_TERMINAL_HOME" > "$BUNDLE_DIR/agent-terminal-home.txt"
-printf 'step\tcommand\texit_code\tstatus\n' > "$STATUS_TSV"
-
-cleanup() {
-  rm -rf "$TMP_HOME"
-}
-trap cleanup EXIT
-
-npm ci
-
-run_json_step '01-doctor' 'npx tsx src/cli/main.ts doctor --json' 'false'
-run_json_step '02-version' 'npx tsx src/cli/main.ts version --json' 'false'
-run_json_step '03-create' 'npx tsx src/cli/main.ts create --json -- node --import tsx test/fixtures/apps/hello-prompt/main.ts' 'false'
-
-SESSION_ID=$(node -e "const fs=require('fs'); const value=JSON.parse(fs.readFileSync(process.argv[1],'utf8')); const sessionId=value?.result?.sessionId; if (typeof sessionId !== 'string' || sessionId.length === 0) { throw new Error('create output did not include result.sessionId'); } process.stdout.write(sessionId);" "$LOG_DIR/03-create.json")
-printf '%s\n' "$SESSION_ID" > "$BUNDLE_DIR/session-id.txt"
-sleep 1
-
-run_json_step '04-send-keys' "npx tsx src/cli/main.ts send-keys $SESSION_ID --json Enter" 'false'
-run_json_step '05-type' "npx tsx src/cli/main.ts type $SESSION_ID --json \"hello world\"" 'false'
-run_json_step '06-paste' "npx tsx src/cli/main.ts paste $SESSION_ID --json \"pasted text\"" 'false'
-run_json_step '07-snapshot' "npx tsx src/cli/main.ts snapshot $SESSION_ID --json --format text" 'false'
-write_snapshot_text "$LOG_DIR/07-snapshot.json" "$SNAPSHOT_DIR/snapshot-01.txt"
-run_json_step '08-screenshot' "npx tsx src/cli/main.ts screenshot $SESSION_ID --json" 'true'
-if [ -f "$LOG_DIR/08-screenshot.json" ]; then
-  if node -e "const fs=require('fs'); const value=JSON.parse(fs.readFileSync(process.argv[1],'utf8')); process.exit(value.ok === true ? 0 : 1);" "$LOG_DIR/08-screenshot.json"; then
-    copy_screenshot_artifact "$LOG_DIR/08-screenshot.json" "$SCREENSHOT_DIR/screenshot-01.png"
-  fi
-fi
-run_json_step '09-list' 'npx tsx src/cli/main.ts list --json' 'false'
-run_json_step '10-inspect' "npx tsx src/cli/main.ts inspect $SESSION_ID --json" 'false'
-run_json_step '11-record-export-cast' "npx tsx src/cli/main.ts record export $SESSION_ID --format asciicast --json --out $RECORDING_DIR/recording-01.cast" 'true'
-run_json_step '12-record-export-webm' "npx tsx src/cli/main.ts record export $SESSION_ID --format webm --json --out $VIDEO_DIR/video-01.webm" 'true'
-run_json_step '13-destroy' "npx tsx src/cli/main.ts destroy $SESSION_ID --json" 'false'
-run_json_step '14-list-after-destroy' 'npx tsx src/cli/main.ts list --json' 'false'
-
-
-
-
-

Command status

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stepcommandexit_codestatus
01-doctornpx tsx src/cli/main.ts doctor --json0pass
02-versionnpx tsx src/cli/main.ts version --json0pass
03-create - npx tsx src/cli/main.ts create --json -- node --import tsx - test/fixtures/apps/hello-prompt/main.ts - 0pass
04-send-keys - npx tsx src/cli/main.ts send-keys 01KMK8J0XB9THNASXVNPF697ZD - --json Enter - 0pass
05-type - npx tsx src/cli/main.ts type 01KMK8J0XB9THNASXVNPF697ZD --json - "hello world" - 0pass
06-paste - npx tsx src/cli/main.ts paste 01KMK8J0XB9THNASXVNPF697ZD - --json "pasted text" - 0pass
07-snapshot - npx tsx src/cli/main.ts snapshot 01KMK8J0XB9THNASXVNPF697ZD - --json --format text - 0pass
08-screenshot - npx tsx src/cli/main.ts screenshot 01KMK8J0XB9THNASXVNPF697ZD - --json - 0pass
09-listnpx tsx src/cli/main.ts list --json0pass
10-inspect - npx tsx src/cli/main.ts inspect 01KMK8J0XB9THNASXVNPF697ZD - --json - 0pass
11-record-export-cast - npx tsx src/cli/main.ts record export - 01KMK8J0XB9THNASXVNPF697ZD --format asciicast --json --out - dogfood/20260325-week7-a-cli-parity/recordings/recording-01.cast - 0pass
12-record-export-webm - npx tsx src/cli/main.ts record export - 01KMK8J0XB9THNASXVNPF697ZD --format webm --json --out - dogfood/20260325-week7-a-cli-parity/videos/video-01.webm - 0pass
13-destroy - npx tsx src/cli/main.ts destroy 01KMK8J0XB9THNASXVNPF697ZD - --json - 0pass
14-list-after-destroynpx tsx src/cli/main.ts list --json0pass
-
-
-
-

Artifact inventory

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeSize
- agent-terminal-home.txt - support20 B
command-status.tsvsupport1.3 KB
commands.shscript5.1 KB
logs/01-doctor.jsonsupport2.3 KB
- logs/01-doctor.stderr.txt - support0 B
logs/02-version.jsonsupport299 B
- logs/02-version.stderr.txt - support0 B
logs/03-create.jsonsupport251 B
- logs/03-create.stderr.txt - support0 B
- logs/04-send-keys.json - support168 B
- logs/04-send-keys.stderr.txt - support0 B
logs/05-type.jsonsupport97 B
- logs/05-type.stderr.txt - support0 B
logs/06-paste.jsonsupport98 B
- logs/06-paste.stderr.txt - support0 B
- logs/07-snapshot.json - support385 B
- logs/07-snapshot.stderr.txt - support0 B
- logs/08-screenshot.json - support680 B
- logs/08-screenshot.stderr.txt - support0 B
logs/09-list.jsonsupport433 B
- logs/09-list.stderr.txt - support0 B
logs/10-inspect.jsonsupport1.0 KB
- logs/10-inspect.stderr.txt - support0 B
- logs/11-record-export-cast.json - support697 B
- logs/11-record-export-cast.stderr.txt - support0 B
- logs/12-record-export-webm.json - support755 B
- logs/12-record-export-webm.stderr.txt - support0 B
logs/13-destroy.jsonsupport172 B
- logs/13-destroy.stderr.txt - support0 B
- logs/14-list-after-destroy.json - support119 B
- logs/14-list-after-destroy.stderr.txt - support0 B
manifest.jsonsupport4.2 KB
notes.mdnotes4.1 KB
recordings/.gitkeepother0 B
- recordings/recording-01.cast - recording326 B
screenshots/.gitkeepother0 B
- screenshots/screenshot-01.png - screenshot7.0 KB
session-id.txtsupport27 B
snapshots/.gitkeepother0 B
- snapshots/snapshot-01.txt - other78 B
videos/.gitkeepother0 B
videos/video-01.webmvideo15.1 KB
-
-
-
- - diff --git a/dogfood/20260325-week7-a-cli-parity/logs/01-doctor.json b/dogfood/20260325-week7-a-cli-parity/logs/01-doctor.json deleted file mode 100644 index f03da9ae..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/01-doctor.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "ok": true, - "command": "doctor", - "timestamp": "2026-03-25T19:46:44.696Z", - "result": { - "ok": true, - "checks": { - "environment": [ - { - "name": "node-runtime", - "status": "pass", - "message": "Node 24.14.0 ok", - "durationMs": 0 - }, - { - "name": "cwd-access", - "status": "pass", - "message": "cwd read/write: /home/coder/.mux/src/agent-terminal/agent_exec_f12f292f10", - "durationMs": 2 - }, - { - "name": "temp-dir", - "status": "pass", - "message": "temp dir ok: /tmp", - "durationMs": 0 - }, - { - "name": "home-writable", - "status": "pass", - "message": "home writable: /tmp/tmp.avp2NwNn0m", - "durationMs": 1 - }, - { - "name": "pty-spawn", - "status": "pass", - "message": "spawned /home/coder/.local/share/mise/installs/node/24.14.0/bin/node", - "durationMs": 36 - }, - { - "name": "socket-viable", - "status": "pass", - "message": "socket ok: /tmp/tmp.avp2NwNn0m/sessions/doctor-2317651-mn6gfmy0-2/host.sock", - "durationMs": 3 - }, - { - "name": "artifact-atomicity", - "status": "pass", - "message": "atomic rename ok: /tmp/tmp.avp2NwNn0m/sessions/doctor-2317651-mn6gfmy3-3/artifacts", - "durationMs": 2 - }, - { - "name": "event-log-writable", - "status": "pass", - "message": "append ok: /tmp/tmp.avp2NwNn0m/sessions/doctor-2317651-mn6gfmy5-5/events.jsonl", - "durationMs": 1 - } - ], - "renderer": [ - { - "name": "playwright_available", - "status": "pass", - "message": "available", - "durationMs": 0 - }, - { - "name": "browser_launch", - "status": "pass", - "message": "chromium launches", - "durationMs": 118 - }, - { - "name": "ghostty_web_available", - "status": "pass", - "message": "WASM available", - "durationMs": 89 - }, - { - "name": "screenshot_viable", - "status": "pass", - "message": "viable", - "durationMs": 155 - } - ] - } - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/01-doctor.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/01-doctor.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/02-version.json b/dogfood/20260325-week7-a-cli-parity/logs/02-version.json deleted file mode 100644 index 88586b3f..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/02-version.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "version", - "timestamp": "2026-03-25T19:46:45.721Z", - "result": { - "cliVersion": "0.1.0", - "protocolVersion": "0.1.0", - "rendererBackends": ["ghostty-web"], - "runtime": { - "node": "v24.14.0", - "platform": "linux", - "arch": "x64" - } - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/02-version.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/02-version.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/03-create.json b/dogfood/20260325-week7-a-cli-parity/logs/03-create.json deleted file mode 100644 index cf3ab377..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/03-create.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-25T19:46:47.550Z", - "result": { - "sessionId": "01KMK8J0XB9THNASXVNPF697ZD", - "createdAt": "2026-03-25T19:46:46.829Z", - "cols": 80, - "rows": 24, - "shell": "/bin/bash" - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/03-create.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/03-create.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/04-send-keys.json b/dogfood/20260325-week7-a-cli-parity/logs/04-send-keys.json deleted file mode 100644 index 3ade12d5..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/04-send-keys.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-25T19:46:49.776Z", - "result": { - "accepted": ["Enter"], - "bytesWritten": 1, - "seq": 1 - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/04-send-keys.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/04-send-keys.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/05-type.json b/dogfood/20260325-week7-a-cli-parity/logs/05-type.json deleted file mode 100644 index 89ad4e4f..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/05-type.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-25T19:46:50.826Z", - "result": {} -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/05-type.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/05-type.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/06-paste.json b/dogfood/20260325-week7-a-cli-parity/logs/06-paste.json deleted file mode 100644 index 214e6966..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/06-paste.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "paste", - "timestamp": "2026-03-25T19:46:51.893Z", - "result": {} -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/06-paste.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/06-paste.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/07-snapshot.json b/dogfood/20260325-week7-a-cli-parity/logs/07-snapshot.json deleted file mode 100644 index 1cfe0d2a..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/07-snapshot.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-25T19:46:53.420Z", - "result": { - "format": "text", - "sessionId": "01KMK8J0XB9THNASXVNPF697ZD", - "capturedAtSeq": 7, - "cols": 80, - "rows": 24, - "cursorRow": 2, - "cursorCol": 43, - "text": "READY>\nECHO:\nREADY> hello world^[[200~pasted text^[[201~\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/07-snapshot.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/07-snapshot.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/08-screenshot.json b/dogfood/20260325-week7-a-cli-parity/logs/08-screenshot.json deleted file mode 100644 index f8736925..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/08-screenshot.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-25T19:46:54.727Z", - "result": { - "sessionId": "01KMK8J0XB9THNASXVNPF697ZD", - "capturedAtSeq": 7, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/tmp.avp2NwNn0m/sessions/01KMK8J0XB9THNASXVNPF697ZD/artifacts/screenshot-7-reference-dark.png", - "pngSizeBytes": 7199, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 640, - "pixelHeight": 384, - "sha256": "4ea7f261c8d3ceadb61b60ecab33fed34b2bb49c5b928befb5cd8bbfb75f9bf0", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8" - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/08-screenshot.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/08-screenshot.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/09-list.json b/dogfood/20260325-week7-a-cli-parity/logs/09-list.json deleted file mode 100644 index 6c3d1612..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/09-list.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "ok": true, - "command": "list", - "timestamp": "2026-03-25T19:46:55.923Z", - "result": { - "sessions": [ - { - "sessionId": "01KMK8J0XB9THNASXVNPF697ZD", - "status": "running", - "command": [ - "node", - "--import", - "tsx", - "test/fixtures/apps/hello-prompt/main.ts" - ], - "createdAt": "2026-03-25T19:46:46.829Z", - "pid": 2318571 - } - ] - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/09-list.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/09-list.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/10-inspect.json b/dogfood/20260325-week7-a-cli-parity/logs/10-inspect.json deleted file mode 100644 index 70812d4c..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/10-inspect.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "ok": true, - "command": "inspect", - "timestamp": "2026-03-25T19:46:57.058Z", - "result": { - "session": { - "version": 1, - "sessionId": "01KMK8J0XB9THNASXVNPF697ZD", - "createdAt": "2026-03-25T19:46:46.829Z", - "updatedAt": "2026-03-25T19:46:47.518Z", - "status": "running", - "command": [ - "node", - "--import", - "tsx", - "test/fixtures/apps/hello-prompt/main.ts" - ], - "cwd": "/home/coder/.mux/src/agent-terminal/agent_exec_f12f292f10", - "shell": "/bin/bash", - "term": "xterm-256color", - "cols": 80, - "rows": 24, - "creationCols": 80, - "creationRows": 24, - "hostPid": 2318558, - "childPid": 2318571, - "exitCode": null, - "exitSignal": null - }, - "eventCount": 8, - "uptime": 10222, - "lastEventSeq": 7, - "terminationCategory": "running", - "artifacts": { - "total": 2, - "byKind": { - "snapshot": 1, - "screenshot": 1 - }, - "missingCount": 0, - "health": "healthy" - }, - "usedOfflineReplay": false - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/10-inspect.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/10-inspect.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/11-record-export-cast.json b/dogfood/20260325-week7-a-cli-parity/logs/11-record-export-cast.json deleted file mode 100644 index 37c4a8da..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/11-record-export-cast.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-25T19:46:58.112Z", - "result": { - "sessionId": "01KMK8J0XB9THNASXVNPF697ZD", - "format": "asciicast", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_f12f292f10/dogfood/20260325-week7-a-cli-parity/recordings/recording-01.cast", - "bytes": 326, - "sha256": "3e7b4fd128f41a1275cdbec48143a76d9e7801f6e84fcb1923687776548a4a0b", - "capturedAtSeq": 7, - "durationMs": 4240, - "metadata": { - "width": 80, - "height": 24, - "title": "01KMK8J0XB9THNASXVNPF697ZD", - "timestamp": 1774468007, - "outputEventCount": 5, - "resizeEventCount": 0, - "markerCount": 0 - } - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/11-record-export-cast.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/11-record-export-cast.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/12-record-export-webm.json b/dogfood/20260325-week7-a-cli-parity/logs/12-record-export-webm.json deleted file mode 100644 index 475527a5..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/12-record-export-webm.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-25T19:47:01.080Z", - "result": { - "sessionId": "01KMK8J0XB9THNASXVNPF697ZD", - "format": "webm", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent_exec_f12f292f10/dogfood/20260325-week7-a-cli-parity/videos/video-01.webm", - "bytes": 15417, - "sha256": "616373f59af025e8e5e3047453a8e45c692ef34bb474c04f2fb5b6362f0125ad", - "capturedAtSeq": 7, - "durationMs": 4240, - "metadata": { - "width": 80, - "height": 24, - "profileName": "reference-dark", - "renderProfileHash": "908ba0076143741bddebfffd75b4eca8397f320131ef8173a77302a39b2376f8", - "timingMode": "accelerated", - "outputEventCount": 5, - "resizeEventCount": 0 - } - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/12-record-export-webm.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/12-record-export-webm.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/13-destroy.json b/dogfood/20260325-week7-a-cli-parity/logs/13-destroy.json deleted file mode 100644 index 52bb5ae1..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/13-destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-25T19:47:02.863Z", - "result": { - "sessionId": "01KMK8J0XB9THNASXVNPF697ZD", - "destroyed": true - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/13-destroy.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/13-destroy.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/logs/14-list-after-destroy.json b/dogfood/20260325-week7-a-cli-parity/logs/14-list-after-destroy.json deleted file mode 100644 index 33434844..00000000 --- a/dogfood/20260325-week7-a-cli-parity/logs/14-list-after-destroy.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "ok": true, - "command": "list", - "timestamp": "2026-03-25T19:47:04.472Z", - "result": { - "sessions": [] - } -} diff --git a/dogfood/20260325-week7-a-cli-parity/logs/14-list-after-destroy.stderr.txt b/dogfood/20260325-week7-a-cli-parity/logs/14-list-after-destroy.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/manifest.json b/dogfood/20260325-week7-a-cli-parity/manifest.json deleted file mode 100644 index 75f68fbe..00000000 --- a/dogfood/20260325-week7-a-cli-parity/manifest.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "bundle": "20260325-week7-a-cli-parity", - "title": "Week 7 \u2014 CLI Parity Proof", - "description": "Exercises ratified CLI commands against a real hello-prompt session and captures every JSON envelope.", - "createdAt": "2026-03-25T19:48:08Z", - "week": 7, - "lane": "A", - "sessionId": "01KMK8J0XB9THNASXVNPF697ZD", - "fixture": "node --import tsx test/fixtures/apps/hello-prompt/main.ts", - "result": "pass", - "commands": [ - "npx tsx src/cli/main.ts doctor --json", - "npx tsx src/cli/main.ts version --json", - "npx tsx src/cli/main.ts create --json -- node --import tsx test/fixtures/apps/hello-prompt/main.ts", - "npx tsx src/cli/main.ts send-keys 01KMK8J0XB9THNASXVNPF697ZD --json Enter", - "npx tsx src/cli/main.ts type 01KMK8J0XB9THNASXVNPF697ZD --json \"hello world\"", - "npx tsx src/cli/main.ts paste 01KMK8J0XB9THNASXVNPF697ZD --json \"pasted text\"", - "npx tsx src/cli/main.ts snapshot 01KMK8J0XB9THNASXVNPF697ZD --json --format text", - "npx tsx src/cli/main.ts screenshot 01KMK8J0XB9THNASXVNPF697ZD --json", - "npx tsx src/cli/main.ts list --json", - "npx tsx src/cli/main.ts inspect 01KMK8J0XB9THNASXVNPF697ZD --json", - "npx tsx src/cli/main.ts record export 01KMK8J0XB9THNASXVNPF697ZD --format asciicast --json --out dogfood/20260325-week7-a-cli-parity/recordings/recording-01.cast", - "npx tsx src/cli/main.ts record export 01KMK8J0XB9THNASXVNPF697ZD --format webm --json --out dogfood/20260325-week7-a-cli-parity/videos/video-01.webm", - "npx tsx src/cli/main.ts destroy 01KMK8J0XB9THNASXVNPF697ZD --json", - "npx tsx src/cli/main.ts list --json" - ], - "artifacts": [ - { - "path": "logs/01-doctor.json", - "description": "doctor --json output verifying Node, PTY, and renderer readiness" - }, - { - "path": "logs/02-version.json", - "description": "version --json output with CLI, protocol, renderer, and runtime facts" - }, - { - "path": "logs/03-create.json", - "description": "create --json output with the captured session ID" - }, - { - "path": "logs/04-send-keys.json", - "description": "send-keys --json output for Enter" - }, - { - "path": "logs/05-type.json", - "description": "type --json output for \"hello world\"" - }, - { - "path": "logs/06-paste.json", - "description": "paste --json output for \"pasted text\"" - }, - { - "path": "logs/07-snapshot.json", - "description": "snapshot --json output captured in text format" - }, - { - "path": "snapshots/snapshot-01.txt", - "description": "Bundle-local text copy of the live snapshot result" - }, - { - "path": "logs/08-screenshot.json", - "description": "screenshot --json output with ghostty-web render metadata" - }, - { - "path": "screenshots/screenshot-01.png", - "description": "Bundle-local PNG copy of the captured screenshot" - }, - { - "path": "logs/09-list.json", - "description": "list --json output showing the running session" - }, - { - "path": "logs/10-inspect.json", - "description": "inspect --json output with running-session metadata and artifact health" - }, - { - "path": "logs/11-record-export-cast.json", - "description": "record export asciicast JSON output" - }, - { - "path": "recordings/recording-01.cast", - "description": "Exported asciicast recording copied directly into the bundle" - }, - { - "path": "logs/12-record-export-webm.json", - "description": "record export webm JSON output" - }, - { - "path": "videos/video-01.webm", - "description": "Exported WebM replay copied directly into the bundle" - }, - { - "path": "logs/13-destroy.json", - "description": "destroy --json output confirming session teardown" - }, - { - "path": "logs/14-list-after-destroy.json", - "description": "list --json output confirming no sessions remain" - }, - { - "path": "command-status.tsv", - "description": "Step-by-step exit-code ledger for the proof run" - }, - { - "path": "agent-terminal-home.txt", - "description": "Temp AGENT_TERMINAL_HOME path used during capture" - }, - { - "path": "session-id.txt", - "description": "Captured session ID used across all session-scoped commands" - } - ] -} diff --git a/dogfood/20260325-week7-a-cli-parity/notes.md b/dogfood/20260325-week7-a-cli-parity/notes.md deleted file mode 100644 index db6d9a2b..00000000 --- a/dogfood/20260325-week7-a-cli-parity/notes.md +++ /dev/null @@ -1,45 +0,0 @@ -# 2026-03-25 dogfood — Week 7 bundle A CLI parity proof - -## Bundle metadata - -- **Bundle path:** `dogfood/20260325-week7-a-cli-parity/` -- **Session ID:** `01KMK8J0XB9THNASXVNPF697ZD` -- **Isolated AGENT_TERMINAL_HOME:** `/tmp/tmp.avp2NwNn0m` -- **CLI entrypoint:** `npx tsx src/cli/main.ts` -- **Fixture app:** `node --import tsx test/fixtures/apps/hello-prompt/main.ts` - -## Scenario summary - -This bundle proves the ratified Week 7 CLI parity surface against a real isolated interactive session and captures a JSON envelope for every exercised command. - -- `doctor --json` and `version --json` verified the runtime, PTY, renderer, and CLI metadata before exercising session control. -- `create --json` launched the `hello-prompt` fixture as a live session, then `send-keys`, `type`, and `paste` drove the prompt without leaving the isolated temp home behind. -- `snapshot --json --format text` and `screenshot --json` captured the live terminal state; their bundle-local reviewer copies are `snapshots/snapshot-01.txt` and `screenshots/screenshot-01.png`. -- `record export` produced both an asciicast and a WebM, and `destroy --json` followed by `list --json` proved cleanup. - -## Review answers - -- **Did `doctor --json` verify the environment and renderer path?** Yes. `logs/01-doctor.json` reports successful Node, PTY, Playwright, Ghostty Web, and screenshot viability checks. -- **Did `version --json` report the ratified CLI/runtime facts?** Yes. `logs/02-version.json` reports `cliVersion`, `protocolVersion`, `rendererBackends`, and runtime platform details. -- **Did `create --json` start a real isolated prompt session?** Yes. `logs/03-create.json` created session `01KMK8J0XB9THNASXVNPF697ZD`, and `logs/09-list.json` shows the same session still running with the fixture command. -- **Did `send-keys`, `type`, and `paste` all succeed on the running session?** Yes. `logs/04-send-keys.json`, `logs/05-type.json`, and `logs/06-paste.json` all returned `ok: true`, and the resulting prompt buffer is visible in `snapshots/snapshot-01.txt`. -- **Did snapshot capture the live terminal text?** Yes. `logs/07-snapshot.json` captured the text snapshot at `capturedAtSeq: 7`, and `snapshots/snapshot-01.txt` preserves the reviewer-facing copy. -- **Did screenshot capture the rendered terminal state?** Yes. `logs/08-screenshot.json` reports a ghostty-web screenshot with SHA-256 metadata, and `screenshots/screenshot-01.png` is the copied reviewer artifact. -- **Did list and inspect expose the live session state before teardown?** Yes. `logs/09-list.json` shows the running session, and `logs/10-inspect.json` shows `status: "running"`, `lastEventSeq: 7`, `artifacts.byKind.snapshot: 1`, `artifacts.byKind.screenshot: 1`, and `usedOfflineReplay: false`. -- **Did record export produce both ratified formats?** Yes. `logs/11-record-export-cast.json` + `recordings/recording-01.cast` prove asciicast export, and `logs/12-record-export-webm.json` + `videos/video-01.webm` prove WebM export. -- **Did destroy remove the session and leave the home empty?** Yes. `logs/13-destroy.json` reports `destroyed: true`, and `logs/14-list-after-destroy.json` reports `sessions: []`. -- **Where are the stderr sidecars and command ledger?** Each numbered step has a matching `logs/*.stderr.txt` file, and `command-status.tsv` records every command, exit code, and pass/fail status. - -## Issues / limitations - -- The task brief sketched `--out` flags for `snapshot` and `screenshot`, but the current ratified CLI persists those artifacts inside the isolated session directory instead. This proof captured the JSON envelopes from `snapshot --json --format text` and `screenshot --json`, then copied the resulting reviewer artifacts into `snapshots/` and `screenshots/`. -- The live prompt buffer in `snapshots/snapshot-01.txt` shows bracketed-paste control sequences around the pasted text. That is expected here because the proof captured the session before pressing Enter after `paste`; the `hello-prompt` fixture only normalizes pasted content once it receives a completed input line. -- `logs/08-screenshot.json` points at a PNG path inside `/tmp/tmp.avp2NwNn0m`, which was cleaned up at the end of the run. The durable reviewer copy is `screenshots/screenshot-01.png`. - -## Browser Verification (Week 7 remediation) - -Review page verified via `agent-browser` — see `screenshots/02-review-page-verified.png`. - -## CLI Dogfooding Visual Evidence (Week 7 remediation) - -A fresh isolated CLI session was dogfooded on 2026-03-25 and captured as visual proof. See `screenshots/03-cli-session-screenshot-artifact.png` for the CLI-produced terminal screenshot artifact, `screenshots/04-cli-json-evidence.png` for the end-to-end JSON command evidence, and `screenshots/05-cli-result-shapes-evidence.png` for the focused `send-keys` / `destroy` result-shape proof. diff --git a/dogfood/20260325-week7-a-cli-parity/recordings/.gitkeep b/dogfood/20260325-week7-a-cli-parity/recordings/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/recordings/recording-01.cast b/dogfood/20260325-week7-a-cli-parity/recordings/recording-01.cast deleted file mode 100644 index 7e653f69..00000000 --- a/dogfood/20260325-week7-a-cli-parity/recordings/recording-01.cast +++ /dev/null @@ -1,6 +0,0 @@ -{"version":2,"width":80,"height":24,"timestamp":1774468007,"title":"01KMK8J0XB9THNASXVNPF697ZD","sessionId":"01KMK8J0XB9THNASXVNPF697ZD","env":{"TERM":"xterm-256color"},"toolVersion":"0.1.0"} -[0,"o","READY> "] -[2.123,"o","\r\n"] -[2.124,"o","ECHO: \r\nREADY> "] -[3.173,"o","hello world"] -[4.24,"o","^[[200~pasted text^[[201~"] diff --git a/dogfood/20260325-week7-a-cli-parity/screenshots/.gitkeep b/dogfood/20260325-week7-a-cli-parity/screenshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/screenshots/02-review-page-verified.png b/dogfood/20260325-week7-a-cli-parity/screenshots/02-review-page-verified.png deleted file mode 100644 index 77c9a818..00000000 Binary files a/dogfood/20260325-week7-a-cli-parity/screenshots/02-review-page-verified.png and /dev/null differ diff --git a/dogfood/20260325-week7-a-cli-parity/screenshots/03-cli-session-screenshot-artifact.png b/dogfood/20260325-week7-a-cli-parity/screenshots/03-cli-session-screenshot-artifact.png deleted file mode 100644 index 7ef79347..00000000 Binary files a/dogfood/20260325-week7-a-cli-parity/screenshots/03-cli-session-screenshot-artifact.png and /dev/null differ diff --git a/dogfood/20260325-week7-a-cli-parity/screenshots/04-cli-json-evidence.png b/dogfood/20260325-week7-a-cli-parity/screenshots/04-cli-json-evidence.png deleted file mode 100644 index de5404de..00000000 Binary files a/dogfood/20260325-week7-a-cli-parity/screenshots/04-cli-json-evidence.png and /dev/null differ diff --git a/dogfood/20260325-week7-a-cli-parity/screenshots/05-cli-result-shapes-evidence.png b/dogfood/20260325-week7-a-cli-parity/screenshots/05-cli-result-shapes-evidence.png deleted file mode 100644 index cbfe6cf0..00000000 Binary files a/dogfood/20260325-week7-a-cli-parity/screenshots/05-cli-result-shapes-evidence.png and /dev/null differ diff --git a/dogfood/20260325-week7-a-cli-parity/screenshots/screenshot-01.png b/dogfood/20260325-week7-a-cli-parity/screenshots/screenshot-01.png deleted file mode 100644 index 01617514..00000000 Binary files a/dogfood/20260325-week7-a-cli-parity/screenshots/screenshot-01.png and /dev/null differ diff --git a/dogfood/20260325-week7-a-cli-parity/session-id.txt b/dogfood/20260325-week7-a-cli-parity/session-id.txt deleted file mode 100644 index fb9c7313..00000000 --- a/dogfood/20260325-week7-a-cli-parity/session-id.txt +++ /dev/null @@ -1 +0,0 @@ -01KMK8J0XB9THNASXVNPF697ZD diff --git a/dogfood/20260325-week7-a-cli-parity/snapshots/.gitkeep b/dogfood/20260325-week7-a-cli-parity/snapshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/snapshots/snapshot-01.txt b/dogfood/20260325-week7-a-cli-parity/snapshots/snapshot-01.txt deleted file mode 100644 index e400036a..00000000 --- a/dogfood/20260325-week7-a-cli-parity/snapshots/snapshot-01.txt +++ /dev/null @@ -1,24 +0,0 @@ -READY> -ECHO: -READY> hello world^[[200~pasted text^[[201~ - - - - - - - - - - - - - - - - - - - - - diff --git a/dogfood/20260325-week7-a-cli-parity/videos/.gitkeep b/dogfood/20260325-week7-a-cli-parity/videos/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-a-cli-parity/videos/video-01.webm b/dogfood/20260325-week7-a-cli-parity/videos/video-01.webm deleted file mode 100644 index 80a6867c..00000000 Binary files a/dogfood/20260325-week7-a-cli-parity/videos/video-01.webm and /dev/null differ diff --git a/dogfood/20260325-week7-b-envelope-locks/command-status.tsv b/dogfood/20260325-week7-b-envelope-locks/command-status.tsv deleted file mode 100644 index 2e603cbc..00000000 --- a/dogfood/20260325-week7-b-envelope-locks/command-status.tsv +++ /dev/null @@ -1,8 +0,0 @@ -step command exit_code status -01 ./node_modules/.bin/vitest run test/unit/commands/golden-envelopes.test.ts --reporter=verbose 0 ok -02 ./node_modules/.bin/vitest run test/unit/commands/golden-envelopes.test.ts --reporter=json 0 ok -03 ./node_modules/.bin/prettier --write dogfood/20260325-week7-b-envelope-locks/logs/02-vitest-json.json 0 ok -04 cp test/unit/commands/golden-envelopes.test.ts dogfood/20260325-week7-b-envelope-locks/logs/03-test-source.txt 0 ok -05 ./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-b-envelope-locks 0 ok -06 ./node_modules/.bin/prettier --write dogfood/20260325-week7-b-envelope-locks/notes.md dogfood/20260325-week7-b-envelope-locks/index.html 0 ok -07 PATH=/usr/local/nvm/versions/node/v22.19.0/bin:$PATH npm run format:check 0 ok diff --git a/dogfood/20260325-week7-b-envelope-locks/commands.sh b/dogfood/20260325-week7-b-envelope-locks/commands.sh deleted file mode 100755 index 5c64cd82..00000000 --- a/dogfood/20260325-week7-b-envelope-locks/commands.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export PATH="$HOME/.local/bin:$PATH" - -BUNDLE="dogfood/20260325-week7-b-envelope-locks" -LOGS="$BUNDLE/logs" -STATUS="$BUNDLE/command-status.tsv" - -mkdir -p "$LOGS" "$BUNDLE/screenshots" -: > "$BUNDLE/screenshots/.gitkeep" -printf 'step command exit_code status -' > "$STATUS" - -run_and_record() { - local step="$1" - local stdout_path="$2" - local stderr_path="$3" - local optional="$4" - shift 4 - - local exit_code=0 - if "$@" >"$stdout_path" 2>"$stderr_path"; then - exit_code=0 - else - exit_code=$? - fi - - local status="ok" - if [[ $exit_code -ne 0 ]]; then - if [[ "$optional" == "optional" ]]; then - status="optional-failed" - else - status="failed" - fi - fi - - printf '%s %s %s %s -' "$step" "$*" "$exit_code" "$status" >> "$STATUS" -} - -mise trust mise.toml -npm ci - -run_and_record '01' "$LOGS/01-vitest-verbose.txt" "$LOGS/01-vitest-verbose.stderr.txt" required npx vitest run test/unit/commands/golden-envelopes.test.ts --reporter=verbose - -run_and_record '02' "$LOGS/02-vitest-json.json" "$LOGS/02-vitest-json.stderr.txt" optional npx vitest run test/unit/commands/golden-envelopes.test.ts --reporter=json - -run_and_record '03' "$LOGS/03-test-source.txt" "$LOGS/03-test-source.stderr.txt" required cat test/unit/commands/golden-envelopes.test.ts - -npx prettier --write "$BUNDLE" -npx prettier --check "$BUNDLE" diff --git a/dogfood/20260325-week7-b-envelope-locks/index.html b/dogfood/20260325-week7-b-envelope-locks/index.html deleted file mode 100644 index d014584f..00000000 --- a/dogfood/20260325-week7-b-envelope-locks/index.html +++ /dev/null @@ -1,993 +0,0 @@ - - - - - - Week 7 — Envelope Locks Proof review bundle - - - -
-
-

Portable review bundle

-

Week 7 — Envelope Locks Proof

-

Bundle directory: 20260325-week7-b-envelope-locks

-

- Captures current golden-envelope test suite output and documents which - public JSON surfaces are locked -

-
- -
-

Manifest summary

-
-
-
Bundle
-
20260325-week7-b-envelope-locks
-
-
-
Date
-
2026-03-25T22:04:59Z
-
-
-
Lane
-
B
-
-
-
Week
-
7
-
-
-
Manifest artifacts
-
6
-
-
-
Discovered files
-
12
-
-
-
-
-

Screenshot gallery

- -
- -
-

JSON outputs

- -
- logs/02-vitest-json.json -
{
-  "numTotalTestSuites": 10,
-  "numPassedTestSuites": 10,
-  "numFailedTestSuites": 0,
-  "numPendingTestSuites": 0,
-  "numTotalTests": 28,
-  "numPassedTests": 28,
-  "numFailedTests": 0,
-  "numPendingTests": 0,
-  "numTodoTests": 0,
-  "snapshot": {
-    "added": 0,
-    "failure": false,
-    "filesAdded": 0,
-    "filesRemoved": 0,
-    "filesRemovedList": [],
-    "filesUnmatched": 0,
-    "filesUpdated": 0,
-    "matched": 0,
-    "total": 0,
-    "unchecked": 0,
-    "uncheckedKeysByFile": [],
-    "unmatched": 0,
-    "updated": 0,
-    "didUpdate": false
-  },
-  "startTime": 1774475993512,
-  "success": true,
-  "testResults": [
-    {
-      "assertionResults": [
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts"
-          ],
-          "fullName": "JSON envelope contracts locks the inspect success envelope shape",
-          "status": "passed",
-          "title": "locks the inspect success envelope shape",
-          "duration": 7.469828000000007,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts"
-          ],
-          "fullName": "JSON envelope contracts locks the version success envelope shape",
-          "status": "passed",
-          "title": "locks the version success envelope shape",
-          "duration": 3.518349999999998,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'create' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'create' result contract accepts a valid result in the success envelope",
-          "status": "passed",
-          "title": "accepts a valid result in the success envelope",
-          "duration": 0.866277000000025,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'create' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'create' result contract rejects an invalid result",
-          "status": "passed",
-          "title": "rejects an invalid result",
-          "duration": 0.7033790000000408,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'create' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'create' result contract rejects extra fields to enforce strict mode",
-          "status": "passed",
-          "title": "rejects extra fields to enforce strict mode",
-          "duration": 0.4448489999999765,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'list' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'list' result contract accepts a valid result in the success envelope",
-          "status": "passed",
-          "title": "accepts a valid result in the success envelope",
-          "duration": 0.9294080000000235,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'list' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'list' result contract rejects an invalid result",
-          "status": "passed",
-          "title": "rejects an invalid result",
-          "duration": 0.5142379999999775,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'list' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'list' result contract rejects extra fields to enforce strict mode",
-          "status": "passed",
-          "title": "rejects extra fields to enforce strict mode",
-          "duration": 0.34448900000001004,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'send-keys' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'send-keys' result contract accepts a valid result in the success envelope",
-          "status": "passed",
-          "title": "accepts a valid result in the success envelope",
-          "duration": 1.149707000000035,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'send-keys' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'send-keys' result contract rejects an invalid result",
-          "status": "passed",
-          "title": "rejects an invalid result",
-          "duration": 0.517169000000024,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'send-keys' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'send-keys' result contract rejects extra fields to enforce strict mode",
-          "status": "passed",
-          "title": "rejects extra fields to enforce strict mode",
-          "duration": 0.3920089999999732,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'snapshot' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'snapshot' result contract accepts a valid result in the success envelope",
-          "status": "passed",
-          "title": "accepts a valid result in the success envelope",
-          "duration": 1.316976000000011,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'snapshot' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'snapshot' result contract rejects an invalid result",
-          "status": "passed",
-          "title": "rejects an invalid result",
-          "duration": 0.34207900000001246,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'snapshot' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'snapshot' result contract rejects extra fields to enforce strict mode",
-          "status": "passed",
-          "title": "rejects extra fields to enforce strict mode",
-          "duration": 0.3364689999999655,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'screenshot' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'screenshot' result contract accepts a valid result in the success envelope",
-          "status": "passed",
-          "title": "accepts a valid result in the success envelope",
-          "duration": 0.7703579999999874,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'screenshot' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'screenshot' result contract rejects an invalid result",
-          "status": "passed",
-          "title": "rejects an invalid result",
-          "duration": 0.405648000000042,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'screenshot' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'screenshot' result contract rejects extra fields to enforce strict mode",
-          "status": "passed",
-          "title": "rejects extra fields to enforce strict mode",
-          "duration": 0.30023900000003323,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'destroy' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'destroy' result contract accepts a valid result in the success envelope",
-          "status": "passed",
-          "title": "accepts a valid result in the success envelope",
-          "duration": 0.4130089999999882,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'destroy' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'destroy' result contract rejects an invalid result",
-          "status": "passed",
-          "title": "rejects an invalid result",
-          "duration": 0.30049900000000207,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'destroy' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'destroy' result contract rejects extra fields to enforce strict mode",
-          "status": "passed",
-          "title": "rejects extra fields to enforce strict mode",
-          "duration": 0.24709000000001424,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'wait (legacy)' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'wait (legacy)' result contract accepts a valid result in the success envelope",
-          "status": "passed",
-          "title": "accepts a valid result in the success envelope",
-          "duration": 0.4477489999999875,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'wait (legacy)' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'wait (legacy)' result contract rejects an invalid result",
-          "status": "passed",
-          "title": "rejects an invalid result",
-          "duration": 0.30191899999999805,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'wait (legacy)' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'wait (legacy)' result contract rejects extra fields to enforce strict mode",
-          "status": "passed",
-          "title": "rejects extra fields to enforce strict mode",
-          "duration": 0.2497889999999643,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'wait (render)' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'wait (render)' result contract accepts a valid result in the success envelope",
-          "status": "passed",
-          "title": "accepts a valid result in the success envelope",
-          "duration": 0.5462389999999573,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'wait (render)' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'wait (render)' result contract rejects an invalid result",
-          "status": "passed",
-          "title": "rejects an invalid result",
-          "duration": 0.2906889999999862,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts",
-            "'wait (render)' result contract"
-          ],
-          "fullName": "JSON envelope contracts 'wait (render)' result contract rejects extra fields to enforce strict mode",
-          "status": "passed",
-          "title": "rejects extra fields to enforce strict mode",
-          "duration": 0.2561190000000124,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts"
-          ],
-          "fullName": "JSON envelope contracts locks the SESSION_NOT_FOUND error envelope shape",
-          "status": "passed",
-          "title": "locks the SESSION_NOT_FOUND error envelope shape",
-          "duration": 0.4316689999999994,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        },
-        {
-          "ancestorTitles": [
-            "JSON envelope contracts"
-          ],
-          "fullName": "JSON envelope contracts locks a retryable transport-style error envelope shape",
-          "status": "passed",
-          "title": "locks a retryable transport-style error envelope shape",
-          "duration": 0.33213899999998375,
-          "failureMessages": [],
-          "meta": {},
-          "tags": []
-        }
-      ],
-      "startTime": 1774475993844,
-      "endTime": 1774475993869.332,
-      "status": "passed",
-      "message": "",
-      "name": "/home/coder/.mux/src/agent-terminal/agent_exec_1004f71ee0/test/unit/commands/golden-envelopes.test.ts"
-    }
-  ]
-}
-
-
-
-

Notes

- -
-

notes.md

-

2026-03-25 dogfood — Week 7 bundle B envelope locks proof

-

Bundle metadata

-
    -
  • - Bundle path: - dogfood/20260325-week7-b-envelope-locks/ -
  • -
  • - Test file: - test/unit/commands/golden-envelopes.test.ts -
  • -
  • - CLI entrypoint: src/cli/main.ts -
  • -
  • - Captured logs: - logs/01-vitest-verbose.txt, - logs/02-vitest-json.json, and - logs/03-test-source.txt -
  • -
  • - Screenshots directory: - screenshots/ now includes - 01-review-page-verified.png from the Week 7 - remediation browser-verification pass. -
  • -
-

Scenario summary

-

- This refreshed bundle reran - test/unit/commands/golden-envelopes.test.ts and - preserved both Vitest reporters plus the current test source. The - current suite reports 28 passing tests across - 10 command surfaces locked by success-envelope and - strict-schema assertions, plus two representative - inspect error envelopes. The expanded suite now covers - create, list, send-keys, - snapshot, screenshot, - destroy, wait (legacy), - wait (render), inspect, and - version. -

-

Coverage assessment

-

- | Surface | Golden-envelope status | Notes | | --------------- | - ---------------------- | - ---------------------------------------------------------------------------------------------------------------------------------- - | | create | Locked | Valid/invalid/extra-field tests - via the local strict CreateResultSchema. | | - list | Locked | Valid/invalid/extra-field tests via the - local strict ListResultSchema. | | - send-keys | Locked | Valid/invalid/extra-field tests - via protocol SendKeysResultSchema. | | - snapshot | Locked | Valid/invalid/extra-field tests via - protocol SnapshotResultSchema. | | - screenshot | Locked | Valid/invalid/extra-field tests - via protocol ScreenshotResultSchema. | | - destroy | Locked | Valid/invalid/extra-field tests via - protocol DestroyResultSchema. | | - wait (legacy) | Locked | Valid/invalid/extra-field - tests via protocol WaitResultSchema. | | - wait (render) | Locked | Valid/invalid/extra-field - tests via protocol WaitForRenderResultSchema. | | - inspect | Locked | One success-envelope golden plus two - representative error-envelope goldens (SESSION_NOT_FOUND - and retryable HOST_UNREACHABLE). | | - version | Locked | Success envelope validated via the - local strict VersionResultSchema around - buildVersionResult(). | | type | Unlocked - | No golden test covers the type success or error - envelopes. | | paste | Unlocked | No golden test covers - the paste success or error envelopes. | | - gc | Unlocked | No golden test covers the - gc success or error envelopes. | | - record export | Unlocked | No golden test covers the - record export success or error envelopes. | | - doctor | Unlocked | No golden test covers the - doctor success or error envelopes. | -

-

Locked-suite breakdown

-
    -
  • - 24 tests come from the eight strict - result-contract surfaces with valid, invalid, and extra-field - cases: create, list, - send-keys, snapshot, - screenshot, destroy, - wait (legacy), and wait (render). -
  • -
  • - 1 test locks the inspect success - envelope shape. -
  • -
  • - 1 test locks the version success - envelope shape. -
  • -
  • - 2 tests lock representative - inspect error envelopes. -
  • -
-

Review answers

-
    -
  • - Did all tests pass? Yes. - logs/01-vitest-verbose.txt reports 1 passed test file - and 28 passed tests, and - logs/02-vitest-json.json reports - success: true. -
  • -
  • - What is the exact test count (passed/failed/skipped)? - 28 passed, 0 failed, 0 skipped/pending/todo, out of 28 total - tests. -
  • -
  • - What surfaces remain unlocked? type, - paste, gc, record export, - and doctor remain outside the current golden-envelope - suite. -
  • -
-

Issues / limitations

-
    -
  • - The suite now locks the representative Week 7 contract surfaces, - but it still leaves the lower-priority type, - paste, gc, record export, - and doctor surfaces unlocked. -
  • -
  • - The inspect surface is locked at the success envelope - plus two representative error envelopes preserved here; other - inspect branches are not separately golden-locked. -
  • -
  • - In this child worktree, npx routed through an - untrusted mise.toml, so the refreshed capture used - the equivalent local binaries after - npm ci --ignore-scripts; the checked-in logs in this - bundle are the current source of truth. -
  • -
-

Browser Verification (Week 7 remediation)

-

- Review page verified via agent-browser — see - screenshots/01-review-page-verified.png. -

-
-
-
-

Commands

-
-

commands.sh

-
#!/usr/bin/env bash
-set -euo pipefail
-export PATH="$HOME/.local/bin:$PATH"
-
-BUNDLE="dogfood/20260325-week7-b-envelope-locks"
-LOGS="$BUNDLE/logs"
-STATUS="$BUNDLE/command-status.tsv"
-
-mkdir -p "$LOGS" "$BUNDLE/screenshots"
-: > "$BUNDLE/screenshots/.gitkeep"
-printf 'step	command	exit_code	status
-' > "$STATUS"
-
-run_and_record() {
-  local step="$1"
-  local stdout_path="$2"
-  local stderr_path="$3"
-  local optional="$4"
-  shift 4
-
-  local exit_code=0
-  if "$@" >"$stdout_path" 2>"$stderr_path"; then
-    exit_code=0
-  else
-    exit_code=$?
-  fi
-
-  local status="ok"
-  if [[ $exit_code -ne 0 ]]; then
-    if [[ "$optional" == "optional" ]]; then
-      status="optional-failed"
-    else
-      status="failed"
-    fi
-  fi
-
-  printf '%s	%s	%s	%s
-' "$step" "$*" "$exit_code" "$status" >> "$STATUS"
-}
-
-mise trust mise.toml
-npm ci
-
-run_and_record   '01'   "$LOGS/01-vitest-verbose.txt"   "$LOGS/01-vitest-verbose.stderr.txt"   required   npx vitest run test/unit/commands/golden-envelopes.test.ts --reporter=verbose
-
-run_and_record   '02'   "$LOGS/02-vitest-json.json"   "$LOGS/02-vitest-json.stderr.txt"   optional   npx vitest run test/unit/commands/golden-envelopes.test.ts --reporter=json
-
-run_and_record   '03'   "$LOGS/03-test-source.txt"   "$LOGS/03-test-source.stderr.txt"   required   cat test/unit/commands/golden-envelopes.test.ts
-
-npx prettier --write "$BUNDLE"
-npx prettier --check "$BUNDLE"
-
-
-
-
-

Command status

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stepcommandexit_codestatus
01 - npx vitest run test/unit/commands/golden-envelopes.test.ts - --reporter=verbose - 0ok
02 - npx vitest run test/unit/commands/golden-envelopes.test.ts - --reporter=json - 0ok
03cat test/unit/commands/golden-envelopes.test.ts0ok
-
-
-
-

Artifact inventory

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeSize
command-status.tsvsupport255 B
commands.shscript1.4 KB
- logs/01-vitest-verbose.stderr.txt - support0 B
- logs/01-vitest-verbose.txt - support5.9 KB
- logs/02-vitest-json.json - support13.4 KB
- logs/02-vitest-json.stderr.txt - support0 B
- logs/03-test-source.stderr.txt - support0 B
- logs/03-test-source.txt - support11.9 KB
manifest.jsonsupport1.3 KB
notes.mdnotes5.5 KB
screenshots/.gitkeepother0 B
- screenshots/01-review-page-verified.png - screenshot78.6 KB
-
-
-
- - diff --git a/dogfood/20260325-week7-b-envelope-locks/logs/01-vitest-verbose.stderr.txt b/dogfood/20260325-week7-b-envelope-locks/logs/01-vitest-verbose.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-b-envelope-locks/logs/01-vitest-verbose.txt b/dogfood/20260325-week7-b-envelope-locks/logs/01-vitest-verbose.txt deleted file mode 100644 index f66256fe..00000000 --- a/dogfood/20260325-week7-b-envelope-locks/logs/01-vitest-verbose.txt +++ /dev/null @@ -1,37 +0,0 @@ - - RUN  v4.1.0 /home/coder/.mux/src/agent-terminal/agent_exec_1004f71ee0 - - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > locks the inspect success envelope shape 11ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > locks the version success envelope shape 5ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'create' result contract > accepts a valid result in the success envelope 2ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'create' result contract > rejects an invalid result 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'create' result contract > rejects extra fields to enforce strict mode 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'list' result contract > accepts a valid result in the success envelope 2ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'list' result contract > rejects an invalid result 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'list' result contract > rejects extra fields to enforce strict mode 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'send-keys' result contract > accepts a valid result in the success envelope 2ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'send-keys' result contract > rejects an invalid result 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'send-keys' result contract > rejects extra fields to enforce strict mode 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'snapshot' result contract > accepts a valid result in the success envelope 2ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'snapshot' result contract > rejects an invalid result 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'snapshot' result contract > rejects extra fields to enforce strict mode 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'screenshot' result contract > accepts a valid result in the success envelope 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'screenshot' result contract > rejects an invalid result 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'screenshot' result contract > rejects extra fields to enforce strict mode 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'destroy' result contract > accepts a valid result in the success envelope 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'destroy' result contract > rejects an invalid result 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'destroy' result contract > rejects extra fields to enforce strict mode 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'wait (legacy)' result contract > accepts a valid result in the success envelope 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'wait (legacy)' result contract > rejects an invalid result 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'wait (legacy)' result contract > rejects extra fields to enforce strict mode 0ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'wait (render)' result contract > accepts a valid result in the success envelope 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'wait (render)' result contract > rejects an invalid result 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > 'wait (render)' result contract > rejects extra fields to enforce strict mode 0ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > locks the SESSION_NOT_FOUND error envelope shape 1ms - ✓ test/unit/commands/golden-envelopes.test.ts > JSON envelope contracts > locks a retryable transport-style error envelope shape 1ms - - Test Files  1 passed (1) - Tests  28 passed (28) - Start at  21:59:52 - Duration  321ms (transform 88ms, setup 0ms, import 158ms, tests 43ms, environment 0ms) - diff --git a/dogfood/20260325-week7-b-envelope-locks/logs/02-vitest-json.json b/dogfood/20260325-week7-b-envelope-locks/logs/02-vitest-json.json deleted file mode 100644 index 81f51a5d..00000000 --- a/dogfood/20260325-week7-b-envelope-locks/logs/02-vitest-json.json +++ /dev/null @@ -1,392 +0,0 @@ -{ - "numTotalTestSuites": 10, - "numPassedTestSuites": 10, - "numFailedTestSuites": 0, - "numPendingTestSuites": 0, - "numTotalTests": 28, - "numPassedTests": 28, - "numFailedTests": 0, - "numPendingTests": 0, - "numTodoTests": 0, - "snapshot": { - "added": 0, - "failure": false, - "filesAdded": 0, - "filesRemoved": 0, - "filesRemovedList": [], - "filesUnmatched": 0, - "filesUpdated": 0, - "matched": 0, - "total": 0, - "unchecked": 0, - "uncheckedKeysByFile": [], - "unmatched": 0, - "updated": 0, - "didUpdate": false - }, - "startTime": 1774475993512, - "success": true, - "testResults": [ - { - "assertionResults": [ - { - "ancestorTitles": ["JSON envelope contracts"], - "fullName": "JSON envelope contracts locks the inspect success envelope shape", - "status": "passed", - "title": "locks the inspect success envelope shape", - "duration": 7.469828000000007, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": ["JSON envelope contracts"], - "fullName": "JSON envelope contracts locks the version success envelope shape", - "status": "passed", - "title": "locks the version success envelope shape", - "duration": 3.518349999999998, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'create' result contract" - ], - "fullName": "JSON envelope contracts 'create' result contract accepts a valid result in the success envelope", - "status": "passed", - "title": "accepts a valid result in the success envelope", - "duration": 0.866277000000025, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'create' result contract" - ], - "fullName": "JSON envelope contracts 'create' result contract rejects an invalid result", - "status": "passed", - "title": "rejects an invalid result", - "duration": 0.7033790000000408, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'create' result contract" - ], - "fullName": "JSON envelope contracts 'create' result contract rejects extra fields to enforce strict mode", - "status": "passed", - "title": "rejects extra fields to enforce strict mode", - "duration": 0.4448489999999765, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'list' result contract" - ], - "fullName": "JSON envelope contracts 'list' result contract accepts a valid result in the success envelope", - "status": "passed", - "title": "accepts a valid result in the success envelope", - "duration": 0.9294080000000235, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'list' result contract" - ], - "fullName": "JSON envelope contracts 'list' result contract rejects an invalid result", - "status": "passed", - "title": "rejects an invalid result", - "duration": 0.5142379999999775, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'list' result contract" - ], - "fullName": "JSON envelope contracts 'list' result contract rejects extra fields to enforce strict mode", - "status": "passed", - "title": "rejects extra fields to enforce strict mode", - "duration": 0.34448900000001004, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'send-keys' result contract" - ], - "fullName": "JSON envelope contracts 'send-keys' result contract accepts a valid result in the success envelope", - "status": "passed", - "title": "accepts a valid result in the success envelope", - "duration": 1.149707000000035, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'send-keys' result contract" - ], - "fullName": "JSON envelope contracts 'send-keys' result contract rejects an invalid result", - "status": "passed", - "title": "rejects an invalid result", - "duration": 0.517169000000024, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'send-keys' result contract" - ], - "fullName": "JSON envelope contracts 'send-keys' result contract rejects extra fields to enforce strict mode", - "status": "passed", - "title": "rejects extra fields to enforce strict mode", - "duration": 0.3920089999999732, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'snapshot' result contract" - ], - "fullName": "JSON envelope contracts 'snapshot' result contract accepts a valid result in the success envelope", - "status": "passed", - "title": "accepts a valid result in the success envelope", - "duration": 1.316976000000011, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'snapshot' result contract" - ], - "fullName": "JSON envelope contracts 'snapshot' result contract rejects an invalid result", - "status": "passed", - "title": "rejects an invalid result", - "duration": 0.34207900000001246, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'snapshot' result contract" - ], - "fullName": "JSON envelope contracts 'snapshot' result contract rejects extra fields to enforce strict mode", - "status": "passed", - "title": "rejects extra fields to enforce strict mode", - "duration": 0.3364689999999655, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'screenshot' result contract" - ], - "fullName": "JSON envelope contracts 'screenshot' result contract accepts a valid result in the success envelope", - "status": "passed", - "title": "accepts a valid result in the success envelope", - "duration": 0.7703579999999874, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'screenshot' result contract" - ], - "fullName": "JSON envelope contracts 'screenshot' result contract rejects an invalid result", - "status": "passed", - "title": "rejects an invalid result", - "duration": 0.405648000000042, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'screenshot' result contract" - ], - "fullName": "JSON envelope contracts 'screenshot' result contract rejects extra fields to enforce strict mode", - "status": "passed", - "title": "rejects extra fields to enforce strict mode", - "duration": 0.30023900000003323, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'destroy' result contract" - ], - "fullName": "JSON envelope contracts 'destroy' result contract accepts a valid result in the success envelope", - "status": "passed", - "title": "accepts a valid result in the success envelope", - "duration": 0.4130089999999882, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'destroy' result contract" - ], - "fullName": "JSON envelope contracts 'destroy' result contract rejects an invalid result", - "status": "passed", - "title": "rejects an invalid result", - "duration": 0.30049900000000207, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'destroy' result contract" - ], - "fullName": "JSON envelope contracts 'destroy' result contract rejects extra fields to enforce strict mode", - "status": "passed", - "title": "rejects extra fields to enforce strict mode", - "duration": 0.24709000000001424, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'wait (legacy)' result contract" - ], - "fullName": "JSON envelope contracts 'wait (legacy)' result contract accepts a valid result in the success envelope", - "status": "passed", - "title": "accepts a valid result in the success envelope", - "duration": 0.4477489999999875, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'wait (legacy)' result contract" - ], - "fullName": "JSON envelope contracts 'wait (legacy)' result contract rejects an invalid result", - "status": "passed", - "title": "rejects an invalid result", - "duration": 0.30191899999999805, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'wait (legacy)' result contract" - ], - "fullName": "JSON envelope contracts 'wait (legacy)' result contract rejects extra fields to enforce strict mode", - "status": "passed", - "title": "rejects extra fields to enforce strict mode", - "duration": 0.2497889999999643, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'wait (render)' result contract" - ], - "fullName": "JSON envelope contracts 'wait (render)' result contract accepts a valid result in the success envelope", - "status": "passed", - "title": "accepts a valid result in the success envelope", - "duration": 0.5462389999999573, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'wait (render)' result contract" - ], - "fullName": "JSON envelope contracts 'wait (render)' result contract rejects an invalid result", - "status": "passed", - "title": "rejects an invalid result", - "duration": 0.2906889999999862, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": [ - "JSON envelope contracts", - "'wait (render)' result contract" - ], - "fullName": "JSON envelope contracts 'wait (render)' result contract rejects extra fields to enforce strict mode", - "status": "passed", - "title": "rejects extra fields to enforce strict mode", - "duration": 0.2561190000000124, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": ["JSON envelope contracts"], - "fullName": "JSON envelope contracts locks the SESSION_NOT_FOUND error envelope shape", - "status": "passed", - "title": "locks the SESSION_NOT_FOUND error envelope shape", - "duration": 0.4316689999999994, - "failureMessages": [], - "meta": {}, - "tags": [] - }, - { - "ancestorTitles": ["JSON envelope contracts"], - "fullName": "JSON envelope contracts locks a retryable transport-style error envelope shape", - "status": "passed", - "title": "locks a retryable transport-style error envelope shape", - "duration": 0.33213899999998375, - "failureMessages": [], - "meta": {}, - "tags": [] - } - ], - "startTime": 1774475993844, - "endTime": 1774475993869.332, - "status": "passed", - "message": "", - "name": "/home/coder/.mux/src/agent-terminal/agent_exec_1004f71ee0/test/unit/commands/golden-envelopes.test.ts" - } - ] -} diff --git a/dogfood/20260325-week7-b-envelope-locks/logs/02-vitest-json.stderr.txt b/dogfood/20260325-week7-b-envelope-locks/logs/02-vitest-json.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-b-envelope-locks/logs/03-test-source.stderr.txt b/dogfood/20260325-week7-b-envelope-locks/logs/03-test-source.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-b-envelope-locks/logs/03-test-source.txt b/dogfood/20260325-week7-b-envelope-locks/logs/03-test-source.txt deleted file mode 100644 index 5ffbd955..00000000 --- a/dogfood/20260325-week7-b-envelope-locks/logs/03-test-source.txt +++ /dev/null @@ -1,489 +0,0 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; -import { z } from 'zod'; - -import { buildVersionResult } from '../../../src/cli/commands/version.js'; -import { - createErrorEnvelope, - createSuccessEnvelope, -} from '../../../src/protocol/envelope.js'; -import { ERROR_CODES, makeCliError } from '../../../src/protocol/errors.js'; -import { - DestroyResultSchema, - InspectResultSchema, - ScreenshotResultSchema, - SendKeysResultSchema, - SnapshotResultSchema, - WaitForRenderResultSchema, - WaitResultSchema, -} from '../../../src/protocol/messages.js'; - -const LOCKED_TIMESTAMP = '2026-03-25T15:00:00.000Z'; -const NonEmptyStringSchema = z.string().min(1); -const IsoDatetimeSchema = z.iso.datetime(); -const PositiveIntSchema = z.number().int().positive(); - -const VersionResultSchema = z - .object({ - cliVersion: z.string().min(1), - protocolVersion: z.string().min(1), - rendererBackends: z.array(z.string().min(1)), - runtime: z - .object({ - node: z.string().min(1), - platform: z.string().min(1), - arch: z.string().min(1), - }) - .strict(), - }) - .strict(); - -// CreateResultSchema is defined locally because create does not go through -// the RPC layer — it constructs the result from the session manifest. -// This schema acts as the golden contract lock for the create result shape. -// If a protocol-level CreateResultSchema is added later, replace this. -const CreateResultSchema = z - .object({ - sessionId: NonEmptyStringSchema, - createdAt: IsoDatetimeSchema, - cols: PositiveIntSchema, - rows: PositiveIntSchema, - shell: NonEmptyStringSchema, - env: z.record(NonEmptyStringSchema, z.string()).optional(), - idleTimeoutMs: PositiveIntSchema.optional(), - }) - .strict(); - -// SessionSummarySchema is defined locally because list returns session summaries -// assembled from manifests rather than a shared protocol export. This schema -// locks the expected per-session list payload used by the local ListResultSchema. -// If a protocol-level SessionSummarySchema is added later, replace this. -const SessionSummarySchema = z - .object({ - sessionId: NonEmptyStringSchema, - status: NonEmptyStringSchema, - command: z.array(NonEmptyStringSchema).min(1), - createdAt: IsoDatetimeSchema, - name: NonEmptyStringSchema.optional(), - pid: z.number().int().nullable(), - }) - .strict(); - -// ListResultSchema is defined locally because list does not go through the -// RPC layer — it constructs the result from session manifests and summaries. -// This schema acts as the golden contract lock for the list result shape. -// If a protocol-level ListResultSchema is added later, replace this. -const ListResultSchema = z - .object({ - sessions: z.array(SessionSummarySchema), - }) - .strict(); - -interface GoldenResultContractCase { - name: string; - command: string; - schema: z.ZodType; - validResult: unknown; - invalidResult: unknown; - extraFieldResult: unknown; -} - -function createSessionRecord() { - return { - version: 1, - sessionId: 'session-01', - createdAt: '2026-03-19T12:00:00.000Z', - updatedAt: '2026-03-19T12:00:01.000Z', - status: 'exited' as const, - command: ['/bin/sh', '-lc', 'echo hello'], - cwd: '/tmp/workspace', - cols: 80, - rows: 24, - hostPid: null, - childPid: null, - exitCode: 0, - exitSignal: null, - }; -} - -function expectLockedSuccessEnvelope(command: string, result: unknown): void { - expect(createSuccessEnvelope(command, result)).toEqual({ - ok: true, - command, - timestamp: LOCKED_TIMESTAMP, - result, - }); -} - -const goldenResultContracts: readonly GoldenResultContractCase[] = [ - { - name: 'create', - command: 'create', - schema: CreateResultSchema, - validResult: { - sessionId: 'session-01', - createdAt: '2026-03-19T12:00:00.000Z', - cols: 80, - rows: 24, - shell: '/bin/bash', - env: { - TERM: 'xterm-256color', - LANG: 'en_US.UTF-8', - }, - idleTimeoutMs: 600000, - }, - invalidResult: {}, - extraFieldResult: { - sessionId: 'session-01', - createdAt: '2026-03-19T12:00:00.000Z', - cols: 80, - rows: 24, - shell: '/bin/bash', - started: true, - }, - }, - { - name: 'list', - command: 'list', - schema: ListResultSchema, - validResult: { - sessions: [ - { - sessionId: 'session-01', - status: 'running', - command: ['/bin/sh', '-lc', 'echo hello'], - createdAt: '2026-03-19T12:00:00.000Z', - name: 'hello-session', - pid: 1234, - }, - { - sessionId: 'session-02', - status: 'exited', - command: ['/bin/sh', '-lc', 'exit 0'], - createdAt: '2026-03-19T12:05:00.000Z', - pid: null, - }, - ], - }, - invalidResult: { - sessions: [{}], - }, - extraFieldResult: { - sessions: [ - { - sessionId: 'session-01', - status: 'running', - command: ['/bin/sh', '-lc', 'echo hello'], - createdAt: '2026-03-19T12:00:00.000Z', - pid: 1234, - term: 'xterm-256color', - }, - ], - }, - }, - { - name: 'send-keys', - command: 'send-keys', - schema: SendKeysResultSchema, - validResult: { - accepted: ['Enter', 'Ctrl+C'], - bytesWritten: 2, - seq: 7, - }, - invalidResult: { - accepted: [], - bytesWritten: -1, - seq: -1, - }, - extraFieldResult: { - accepted: ['Enter'], - bytesWritten: 1, - seq: 7, - keyCount: 1, - }, - }, - { - name: 'snapshot', - command: 'snapshot', - schema: SnapshotResultSchema, - validResult: { - format: 'structured', - sessionId: 'session-01', - capturedAtSeq: 7, - cols: 80, - rows: 24, - cursorRow: 1, - cursorCol: 5, - isAltScreen: false, - visibleLines: [ - { - row: 0, - text: '$ echo hello', - }, - { - row: 1, - text: 'hello', - }, - ], - scrollbackLines: [ - { - row: 0, - text: 'prior output', - }, - ], - cells: [ - { - lineNumber: 0, - cells: [ - { - char: '$', - fg: '#ffffff', - bold: true, - }, - { - char: ' ', - }, - ], - }, - ], - }, - invalidResult: {}, - extraFieldResult: { - format: 'structured', - sessionId: 'session-01', - capturedAtSeq: 7, - cols: 80, - rows: 24, - cursorRow: 1, - cursorCol: 5, - isAltScreen: false, - visibleLines: [ - { - row: 0, - text: '$ echo hello', - }, - ], - renderTimeMs: 12, - }, - }, - { - name: 'screenshot', - command: 'screenshot', - schema: ScreenshotResultSchema, - validResult: { - sessionId: 'session-01', - capturedAtSeq: 8, - profileName: 'reference-dark', - cols: 80, - rows: 24, - artifactPath: - '/tmp/agent-terminal/sessions/session-01/artifacts/screenshot-8-reference-dark.png', - pngSizeBytes: 4096, - cursorVisible: true, - rendererBackend: 'ghostty-web', - pixelWidth: 640, - pixelHeight: 384, - sha256: 'a'.repeat(64), - renderProfileHash: 'b'.repeat(64), - }, - invalidResult: { - sessionId: 'session-01', - capturedAtSeq: 8, - profileName: 'reference-dark', - cols: 80, - rows: 24, - artifactPath: '/tmp/screenshot.png', - pngSizeBytes: 0, - }, - extraFieldResult: { - sessionId: 'session-01', - capturedAtSeq: 8, - profileName: 'reference-dark', - cols: 80, - rows: 24, - artifactPath: '/tmp/screenshot.png', - pngSizeBytes: 4096, - dpi: 96, - }, - }, - { - name: 'destroy', - command: 'destroy', - schema: DestroyResultSchema, - validResult: { - sessionId: 'session-01', - destroyed: true, - }, - invalidResult: {}, - extraFieldResult: { - sessionId: 'session-01', - destroyed: true, - status: 'destroyed', - }, - }, - { - name: 'wait (legacy)', - command: 'wait', - schema: WaitResultSchema, - validResult: { - exitCode: 0, - timedOut: false, - }, - invalidResult: { - exitCode: 2.5, - timedOut: false, - }, - extraFieldResult: { - exitCode: 0, - timedOut: false, - idleMs: 100, - }, - }, - { - name: 'wait (render)', - command: 'wait', - schema: WaitForRenderResultSchema, - validResult: { - matched: true, - timedOut: false, - matchedText: 'READY', - cursorRow: 4, - cursorCol: 0, - capturedAtSeq: 9, - }, - invalidResult: { - matched: true, - timedOut: false, - }, - extraFieldResult: { - matched: true, - timedOut: false, - capturedAtSeq: 9, - matchCount: 1, - }, - }, -]; - -describe('JSON envelope contracts', () => { - beforeEach(() => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(LOCKED_TIMESTAMP)); - }); - - afterEach(() => { - vi.useRealTimers(); - }); - - it('locks the inspect success envelope shape', () => { - const result = InspectResultSchema.parse({ - session: createSessionRecord(), - eventCount: 2, - uptime: 1_000, - lastEventSeq: 1, - terminationCategory: 'clean-exit', - artifacts: { - total: 2, - byKind: { - screenshot: 1, - snapshot: 1, - }, - missingCount: 0, - health: 'healthy', - }, - usedOfflineReplay: true, - }); - - expectLockedSuccessEnvelope('inspect', result); - expect(InspectResultSchema.safeParse(result).success).toBe(true); - }); - - it('locks the version success envelope shape', async () => { - const result = await buildVersionResult(); - - expectLockedSuccessEnvelope('version', result); - expect(VersionResultSchema.safeParse(result).success).toBe(true); - }); - - describe.each(goldenResultContracts)('$name result contract', (contract) => { - it('accepts a valid result in the success envelope', () => { - const result = contract.schema.parse(contract.validResult); - - expectLockedSuccessEnvelope(contract.command, result); - expect(contract.schema.safeParse(result).success).toBe(true); - }); - - it('rejects an invalid result', () => { - expect(contract.schema.safeParse(contract.invalidResult).success).toBe( - false, - ); - }); - - it('rejects extra fields to enforce strict mode', () => { - expect(contract.schema.safeParse(contract.extraFieldResult).success).toBe( - false, - ); - }); - }); - - it('locks the SESSION_NOT_FOUND error envelope shape', () => { - const error = makeCliError(ERROR_CODES.SESSION_NOT_FOUND, { - message: 'Session "missing-session" was not found.', - details: { - sessionId: 'missing-session', - manifestPath: - '/tmp/agent-terminal/sessions/missing-session/session.json', - }, - }); - - expect( - createErrorEnvelope('inspect', { - code: error.code, - message: error.message, - retryable: error.retryable, - details: error.details, - }), - ).toEqual({ - ok: false, - command: 'inspect', - timestamp: LOCKED_TIMESTAMP, - error: { - code: 'SESSION_NOT_FOUND', - message: 'Session "missing-session" was not found.', - retryable: false, - details: { - sessionId: 'missing-session', - manifestPath: - '/tmp/agent-terminal/sessions/missing-session/session.json', - }, - }, - }); - }); - - it('locks a retryable transport-style error envelope shape', () => { - const error = makeCliError(ERROR_CODES.HOST_UNREACHABLE, { - details: { - sessionId: 'session-01', - }, - }); - - expect( - createErrorEnvelope('inspect', { - code: error.code, - message: error.message, - retryable: error.retryable, - details: error.details, - }), - ).toEqual({ - ok: false, - command: 'inspect', - timestamp: LOCKED_TIMESTAMP, - error: { - code: 'HOST_UNREACHABLE', - message: 'Session host is unreachable.', - retryable: true, - details: { - sessionId: 'session-01', - }, - }, - }); - }); -}); diff --git a/dogfood/20260325-week7-b-envelope-locks/manifest.json b/dogfood/20260325-week7-b-envelope-locks/manifest.json deleted file mode 100644 index e259f1d7..00000000 --- a/dogfood/20260325-week7-b-envelope-locks/manifest.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "bundle": "20260325-week7-b-envelope-locks", - "title": "Week 7 — Envelope Locks Proof", - "description": "Captures current golden-envelope test suite output and documents which public JSON surfaces are locked", - "createdAt": "2026-03-25T22:04:59Z", - "week": 7, - "lane": "B", - "artifacts": [ - { - "path": "logs/01-vitest-verbose.txt", - "description": "Verbose Vitest output showing all 28 golden-envelope tests passing across the expanded 10-surface suite" - }, - { - "path": "logs/01-vitest-verbose.stderr.txt", - "description": "Captured stderr stream for the verbose Vitest run (empty on this successful capture)" - }, - { - "path": "logs/02-vitest-json.json", - "description": "JSON Vitest summary with 28 passing tests across 10 suites for the golden-envelope run" - }, - { - "path": "logs/02-vitest-json.stderr.txt", - "description": "Captured stderr stream for the JSON Vitest run (empty on this successful capture)" - }, - { - "path": "logs/03-test-source.txt", - "description": "Snapshot of the current golden-envelope test source covering the 10 locked command surfaces" - }, - { - "path": "command-status.tsv", - "description": "Per-step exit-code ledger for the refreshed capture, review-page regeneration, and formatting checks" - } - ] -} diff --git a/dogfood/20260325-week7-b-envelope-locks/notes.md b/dogfood/20260325-week7-b-envelope-locks/notes.md deleted file mode 100644 index 2050c4b4..00000000 --- a/dogfood/20260325-week7-b-envelope-locks/notes.md +++ /dev/null @@ -1,56 +0,0 @@ -# 2026-03-25 dogfood — Week 7 bundle B envelope locks proof - -## Bundle metadata - -- **Bundle path:** `dogfood/20260325-week7-b-envelope-locks/` -- **Test file:** `test/unit/commands/golden-envelopes.test.ts` -- **CLI entrypoint:** `src/cli/main.ts` -- **Captured logs:** `logs/01-vitest-verbose.txt`, `logs/02-vitest-json.json`, and `logs/03-test-source.txt` -- **Screenshots directory:** `screenshots/` now includes `01-review-page-verified.png` from the Week 7 remediation browser-verification pass. - -## Scenario summary - -This refreshed bundle reran `test/unit/commands/golden-envelopes.test.ts` and preserved both Vitest reporters plus the current test source. The current suite reports **28 passing tests** across **10 command surfaces** locked by success-envelope and strict-schema assertions, plus two representative `inspect` error envelopes. The expanded suite now covers `create`, `list`, `send-keys`, `snapshot`, `screenshot`, `destroy`, `wait` (legacy), `wait` (render), `inspect`, and `version`. - -## Coverage assessment - -| Surface | Golden-envelope status | Notes | -| --------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `create` | Locked | Valid/invalid/extra-field tests via the local strict `CreateResultSchema`. | -| `list` | Locked | Valid/invalid/extra-field tests via the local strict `ListResultSchema`. | -| `send-keys` | Locked | Valid/invalid/extra-field tests via protocol `SendKeysResultSchema`. | -| `snapshot` | Locked | Valid/invalid/extra-field tests via protocol `SnapshotResultSchema`. | -| `screenshot` | Locked | Valid/invalid/extra-field tests via protocol `ScreenshotResultSchema`. | -| `destroy` | Locked | Valid/invalid/extra-field tests via protocol `DestroyResultSchema`. | -| `wait` (legacy) | Locked | Valid/invalid/extra-field tests via protocol `WaitResultSchema`. | -| `wait` (render) | Locked | Valid/invalid/extra-field tests via protocol `WaitForRenderResultSchema`. | -| `inspect` | Locked | One success-envelope golden plus two representative error-envelope goldens (`SESSION_NOT_FOUND` and retryable `HOST_UNREACHABLE`). | -| `version` | Locked | Success envelope validated via the local strict `VersionResultSchema` around `buildVersionResult()`. | -| `type` | Unlocked | No golden test covers the `type` success or error envelopes. | -| `paste` | Unlocked | No golden test covers the `paste` success or error envelopes. | -| `gc` | Unlocked | No golden test covers the `gc` success or error envelopes. | -| `record export` | Unlocked | No golden test covers the `record export` success or error envelopes. | -| `doctor` | Unlocked | No golden test covers the `doctor` success or error envelopes. | - -## Locked-suite breakdown - -- **24 tests** come from the eight strict result-contract surfaces with valid, invalid, and extra-field cases: `create`, `list`, `send-keys`, `snapshot`, `screenshot`, `destroy`, `wait` (legacy), and `wait` (render). -- **1 test** locks the `inspect` success envelope shape. -- **1 test** locks the `version` success envelope shape. -- **2 tests** lock representative `inspect` error envelopes. - -## Review answers - -- **Did all tests pass?** Yes. `logs/01-vitest-verbose.txt` reports 1 passed test file and 28 passed tests, and `logs/02-vitest-json.json` reports `success: true`. -- **What is the exact test count (passed/failed/skipped)?** 28 passed, 0 failed, 0 skipped/pending/todo, out of 28 total tests. -- **What surfaces remain unlocked?** `type`, `paste`, `gc`, `record export`, and `doctor` remain outside the current golden-envelope suite. - -## Issues / limitations - -- The suite now locks the representative Week 7 contract surfaces, but it still leaves the lower-priority `type`, `paste`, `gc`, `record export`, and `doctor` surfaces unlocked. -- The `inspect` surface is locked at the success envelope plus two representative error envelopes preserved here; other `inspect` branches are not separately golden-locked. -- In this child worktree, `npx` routed through an untrusted `mise.toml`, so the refreshed capture used the equivalent local binaries after `npm ci --ignore-scripts`; the checked-in logs in this bundle are the current source of truth. - -## Browser Verification (Week 7 remediation) - -Review page verified via `agent-browser` — see `screenshots/01-review-page-verified.png`. diff --git a/dogfood/20260325-week7-b-envelope-locks/screenshots/.gitkeep b/dogfood/20260325-week7-b-envelope-locks/screenshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-b-envelope-locks/screenshots/01-review-page-verified.png b/dogfood/20260325-week7-b-envelope-locks/screenshots/01-review-page-verified.png deleted file mode 100644 index 2b63fcc2..00000000 Binary files a/dogfood/20260325-week7-b-envelope-locks/screenshots/01-review-page-verified.png and /dev/null differ diff --git a/dogfood/20260325-week7-c-proof-completeness/command-status.tsv b/dogfood/20260325-week7-c-proof-completeness/command-status.tsv deleted file mode 100644 index 6fbb4f3e..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/command-status.tsv +++ /dev/null @@ -1,14 +0,0 @@ -step command exit_code status -00 bootstrap bundle files 0 ok -01 find dogfood -maxdepth 1 -mindepth 1 -type d | sort > logs/01-bundle-list.txt 0 ok -02 node --input-type=module # initial inventory write 0 ok -03 node --input-type=module # initial notes.md, manifest.json, commands.sh write 0 ok -04 npx tsx src/tools/review-bundle.ts dogfood/20260325-week7-c-proof-completeness 0 ok -05 npx prettier --write dogfood/20260325-week7-c-proof-completeness/ 0 ok -06 npx prettier --check dogfood/20260325-week7-c-proof-completeness/ 0 ok -07 find dogfood -maxdepth 1 -mindepth 1 -type d | sort > logs/01-bundle-list.txt 0 ok -08 node --input-type=module # refreshed inventory write after final logs existed 0 ok -09 node --input-type=module # refreshed notes.md, manifest.json, commands.sh write 0 ok -10 npx tsx src/tools/review-bundle.ts dogfood/20260325-week7-c-proof-completeness 0 ok -11 npx prettier --write dogfood/20260325-week7-c-proof-completeness/ 0 ok -12 npx prettier --check dogfood/20260325-week7-c-proof-completeness/ 0 ok diff --git a/dogfood/20260325-week7-c-proof-completeness/commands.sh b/dogfood/20260325-week7-c-proof-completeness/commands.sh deleted file mode 100755 index 8db0a987..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/commands.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail -export PATH="$HOME/.local/bin:$PATH" -BUNDLE_DIR="dogfood/20260325-week7-c-proof-completeness" -mkdir -p "$BUNDLE_DIR/logs" "$BUNDLE_DIR/screenshots" - -touch "$BUNDLE_DIR/screenshots/.gitkeep" -find dogfood -maxdepth 1 -mindepth 1 -type d | sort > "$BUNDLE_DIR/logs/01-bundle-list.txt" -node --input-type=module <<'NODE' -// scan live dogfood bundles and write logs/02-file-counts.tsv, logs/03-artifact-counts.tsv, and logs/04-summary.json -NODE -node --input-type=module <<'NODE' -// render final notes.md, manifest.json, and commands.sh from logs/04-summary.json -NODE -npx tsx src/tools/review-bundle.ts "$BUNDLE_DIR" > "$BUNDLE_DIR/logs/05-review-bundle.txt" -npx prettier --write "$BUNDLE_DIR/" > "$BUNDLE_DIR/logs/06-prettier-write.txt" -npx prettier --check "$BUNDLE_DIR/" > "$BUNDLE_DIR/logs/07-prettier-check.txt" diff --git a/dogfood/20260325-week7-c-proof-completeness/index.html b/dogfood/20260325-week7-c-proof-completeness/index.html deleted file mode 100644 index 4823a57d..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/index.html +++ /dev/null @@ -1,1538 +0,0 @@ - - - - - - Week 7 — Proof Completeness Inventory review bundle - - - -
-
-

Portable review bundle

-

Week 7 — Proof Completeness Inventory

-

- Bundle directory: 20260325-week7-c-proof-completeness -

-

- Inventories all dogfood proof bundles and their artifacts to verify - ecosystem completeness -

-
- -
-

Manifest summary

-
-
-
Bundle
-
20260325-week7-c-proof-completeness
-
-
-
Date
-
2026-03-25T19:56:37.094Z
-
-
-
Lane
-
C
-
-
-
Week
-
7
-
-
-
Manifest artifacts
-
4
-
-
-
Discovered files
-
12
-
-
-
- -
-

JSON outputs

- -
- logs/04-summary.json -
{
-  "generatedAt": "2026-03-25T19:56:37.094Z",
-  "bundleCount": 40,
-  "reviewPageCount": 6,
-  "reviewPageBundles": [
-    "20260325-week6-a-cli-contract",
-    "20260325-week6-b-artifact-health",
-    "20260325-week6-c-failure-taxonomy",
-    "20260325-week6-d-review-surface",
-    "20260325-week7-a-cli-parity",
-    "20260325-week7-c-proof-completeness"
-  ],
-  "bundlesMissingCommandsSh": [
-    "20260319-lifecycle",
-    "20260319-nvim-demo",
-    "20260319-resize-demo",
-    "20260322-dogfood-crash",
-    "20260322-dogfood-hello-prompt",
-    "20260322-dogfood-resize",
-    "20260322-dogfood-scrollback",
-    "20260322-dogfood-unicode",
-    "20260322-dogfood-week4-features",
-    "20260322-global-cli-context",
-    "20260322-lazyvim-scenario",
-    "20260322-week4-cli-parity",
-    "20260322-week4-failure-recovery",
-    "20260322-week4-scrollback-review",
-    "20260322-week4-unicode-review",
-    "20260323-bugfix-resize",
-    "20260323-bugfix-scrollback",
-    "20260323-week5-platform-closure"
-  ],
-  "bundlesMissingNotesMd": [
-    "20260321-week3-crash-retention",
-    "20260321-week3-renderer-complete",
-    "20260322-lazyvim-scenario",
-    "week5-config-parity"
-  ],
-  "bundlesMissingIndexHtml": [
-    "20260319-lifecycle",
-    "20260319-nvim-demo",
-    "20260319-resize-demo",
-    "20260320-renderer-complete",
-    "20260321-post-hardening-smoke",
-    "20260321-week3-crash-retention",
-    "20260321-week3-renderer-complete",
-    "20260322-dogfood-alt-screen",
-    "20260322-dogfood-color",
-    "20260322-dogfood-crash",
-    "20260322-dogfood-hello-prompt",
-    "20260322-dogfood-resize",
-    "20260322-dogfood-scrollback",
-    "20260322-dogfood-unicode",
-    "20260322-dogfood-week4-features",
-    "20260322-global-cli-context",
-    "20260322-lazyvim-scenario",
-    "20260322-week4-cli-parity",
-    "20260322-week4-failure-recovery",
-    "20260322-week4-scrollback-review",
-    "20260322-week4-unicode-review",
-    "20260323-bugfix-resize",
-    "20260323-bugfix-scrollback",
-    "20260323-week5-platform-closure",
-    "20260323-week5-recovery-host",
-    "20260323-week5-recovery-renderer",
-    "20260323-week5-recovery-replay",
-    "20260323-week5-render-cells",
-    "20260323-week5-render-cursor",
-    "20260323-week5-render-fonts",
-    "20260323-week5-render-timing",
-    "20260323-week5-review-helper",
-    "20260325-week7-b-envelope-locks",
-    "week5-config-parity"
-  ],
-  "bundlesMissingManifestJson": [
-    "20260320-renderer-complete",
-    "20260321-post-hardening-smoke",
-    "20260322-dogfood-crash",
-    "20260322-dogfood-scrollback",
-    "20260322-dogfood-unicode",
-    "20260322-dogfood-week4-features",
-    "20260322-global-cli-context",
-    "20260322-lazyvim-scenario",
-    "20260322-week4-cli-parity",
-    "20260322-week4-failure-recovery",
-    "20260322-week4-scrollback-review",
-    "20260322-week4-unicode-review",
-    "20260323-bugfix-resize",
-    "20260323-bugfix-scrollback",
-    "20260323-week5-platform-closure",
-    "week5-config-parity"
-  ],
-  "bundlesMissingCommandStatusTsv": [
-    "20260319-lifecycle",
-    "20260319-nvim-demo",
-    "20260319-resize-demo",
-    "20260320-renderer-complete",
-    "20260321-post-hardening-smoke",
-    "20260321-week3-crash-retention",
-    "20260321-week3-renderer-complete",
-    "20260322-dogfood-crash",
-    "20260322-dogfood-hello-prompt",
-    "20260322-dogfood-resize",
-    "20260322-dogfood-scrollback",
-    "20260322-dogfood-unicode",
-    "20260322-dogfood-week4-features",
-    "20260322-global-cli-context",
-    "20260322-lazyvim-scenario",
-    "20260322-week4-cli-parity",
-    "20260322-week4-failure-recovery",
-    "20260322-week4-scrollback-review",
-    "20260322-week4-unicode-review",
-    "20260323-bugfix-resize",
-    "20260323-bugfix-scrollback",
-    "20260323-week5-platform-closure",
-    "week5-config-parity"
-  ],
-  "totals": {
-    "screenshotsCount": 36,
-    "screenshotsTotalBytes": 1476577,
-    "recordingsCount": 9,
-    "videosCount": 4,
-    "snapshotsCount": 10
-  },
-  "bundles": [
-    {
-      "bundle": "20260319-lifecycle",
-      "path": "dogfood/20260319-lifecycle",
-      "totalFiles": 24,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 6,
-      "screenshotsTotalBytes": 7540,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260319-nvim-demo",
-      "path": "dogfood/20260319-nvim-demo",
-      "totalFiles": 11,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 6,
-      "screenshotsTotalBytes": 8148,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260319-resize-demo",
-      "path": "dogfood/20260319-resize-demo",
-      "totalFiles": 9,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260320-renderer-complete",
-      "path": "dogfood/20260320-renderer-complete",
-      "totalFiles": 16,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260321-post-hardening-smoke",
-      "path": "dogfood/20260321-post-hardening-smoke",
-      "totalFiles": 19,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260321-week3-crash-retention",
-      "path": "dogfood/20260321-week3-crash-retention",
-      "totalFiles": 20,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": false,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260321-week3-renderer-complete",
-      "path": "dogfood/20260321-week3-renderer-complete",
-      "totalFiles": 38,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": false,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-dogfood-alt-screen",
-      "path": "dogfood/20260322-dogfood-alt-screen",
-      "totalFiles": 67,
-      "logsCount": 32,
-      "logsJsonCount": 0,
-      "screenshotsCount": 3,
-      "screenshotsTotalBytes": 22470,
-      "videosCount": 1,
-      "recordingsCount": 1,
-      "snapshotsCount": 3,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260322-dogfood-color",
-      "path": "dogfood/20260322-dogfood-color",
-      "totalFiles": 43,
-      "logsCount": 18,
-      "logsJsonCount": 0,
-      "screenshotsCount": 2,
-      "screenshotsTotalBytes": 94521,
-      "videosCount": 0,
-      "recordingsCount": 1,
-      "snapshotsCount": 2,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260322-dogfood-crash",
-      "path": "dogfood/20260322-dogfood-crash",
-      "totalFiles": 20,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-dogfood-hello-prompt",
-      "path": "dogfood/20260322-dogfood-hello-prompt",
-      "totalFiles": 19,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 1,
-      "screenshotsTotalBytes": 5475,
-      "videosCount": 1,
-      "recordingsCount": 1,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-dogfood-resize",
-      "path": "dogfood/20260322-dogfood-resize",
-      "totalFiles": 19,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 1,
-      "screenshotsTotalBytes": 5067,
-      "videosCount": 1,
-      "recordingsCount": 1,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-dogfood-scrollback",
-      "path": "dogfood/20260322-dogfood-scrollback",
-      "totalFiles": 19,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-dogfood-unicode",
-      "path": "dogfood/20260322-dogfood-unicode",
-      "totalFiles": 15,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-dogfood-week4-features",
-      "path": "dogfood/20260322-dogfood-week4-features",
-      "totalFiles": 44,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-global-cli-context",
-      "path": "dogfood/20260322-global-cli-context",
-      "totalFiles": 7,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-lazyvim-scenario",
-      "path": "dogfood/20260322-lazyvim-scenario",
-      "totalFiles": 31,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": false,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-week4-cli-parity",
-      "path": "dogfood/20260322-week4-cli-parity",
-      "totalFiles": 13,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-week4-failure-recovery",
-      "path": "dogfood/20260322-week4-failure-recovery",
-      "totalFiles": 9,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-week4-scrollback-review",
-      "path": "dogfood/20260322-week4-scrollback-review",
-      "totalFiles": 11,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260322-week4-unicode-review",
-      "path": "dogfood/20260322-week4-unicode-review",
-      "totalFiles": 8,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260323-bugfix-resize",
-      "path": "dogfood/20260323-bugfix-resize",
-      "totalFiles": 20,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 3,
-      "screenshotsTotalBytes": 17192,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260323-bugfix-scrollback",
-      "path": "dogfood/20260323-bugfix-scrollback",
-      "totalFiles": 13,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260323-week5-platform-closure",
-      "path": "dogfood/20260323-week5-platform-closure",
-      "totalFiles": 6,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": false,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    },
-    {
-      "bundle": "20260323-week5-recovery-host",
-      "path": "dogfood/20260323-week5-recovery-host",
-      "totalFiles": 24,
-      "logsCount": 8,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260323-week5-recovery-renderer",
-      "path": "dogfood/20260323-week5-recovery-renderer",
-      "totalFiles": 39,
-      "logsCount": 19,
-      "logsJsonCount": 0,
-      "screenshotsCount": 2,
-      "screenshotsTotalBytes": 5940,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 2,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260323-week5-recovery-replay",
-      "path": "dogfood/20260323-week5-recovery-replay",
-      "totalFiles": 29,
-      "logsCount": 11,
-      "logsJsonCount": 0,
-      "screenshotsCount": 2,
-      "screenshotsTotalBytes": 6462,
-      "videosCount": 0,
-      "recordingsCount": 1,
-      "snapshotsCount": 2,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260323-week5-render-cells",
-      "path": "dogfood/20260323-week5-render-cells",
-      "totalFiles": 14,
-      "logsCount": 4,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260323-week5-render-cursor",
-      "path": "dogfood/20260323-week5-render-cursor",
-      "totalFiles": 19,
-      "logsCount": 6,
-      "logsJsonCount": 0,
-      "screenshotsCount": 3,
-      "screenshotsTotalBytes": 146659,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260323-week5-render-fonts",
-      "path": "dogfood/20260323-week5-render-fonts",
-      "totalFiles": 15,
-      "logsCount": 4,
-      "logsJsonCount": 0,
-      "screenshotsCount": 2,
-      "screenshotsTotalBytes": 97035,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260323-week5-render-timing",
-      "path": "dogfood/20260323-week5-render-timing",
-      "totalFiles": 19,
-      "logsCount": 6,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 3,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260323-week5-review-helper",
-      "path": "dogfood/20260323-week5-review-helper",
-      "totalFiles": 17,
-      "logsCount": 9,
-      "logsJsonCount": 0,
-      "screenshotsCount": 2,
-      "screenshotsTotalBytes": 153083,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260325-week6-a-cli-contract",
-      "path": "dogfood/20260325-week6-a-cli-contract",
-      "totalFiles": 25,
-      "logsCount": 14,
-      "logsJsonCount": 7,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": true,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260325-week6-b-artifact-health",
-      "path": "dogfood/20260325-week6-b-artifact-health",
-      "totalFiles": 25,
-      "logsCount": 13,
-      "logsJsonCount": 8,
-      "screenshotsCount": 1,
-      "screenshotsTotalBytes": 48895,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": true,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260325-week6-c-failure-taxonomy",
-      "path": "dogfood/20260325-week6-c-failure-taxonomy",
-      "totalFiles": 34,
-      "logsCount": 23,
-      "logsJsonCount": 12,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": true,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260325-week6-d-review-surface",
-      "path": "dogfood/20260325-week6-d-review-surface",
-      "totalFiles": 36,
-      "logsCount": 26,
-      "logsJsonCount": 0,
-      "screenshotsCount": 1,
-      "screenshotsTotalBytes": 850891,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": true,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260325-week7-a-cli-parity",
-      "path": "dogfood/20260325-week7-a-cli-parity",
-      "totalFiles": 43,
-      "logsCount": 28,
-      "logsJsonCount": 14,
-      "screenshotsCount": 1,
-      "screenshotsTotalBytes": 7199,
-      "videosCount": 1,
-      "recordingsCount": 1,
-      "snapshotsCount": 1,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": true,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260325-week7-b-envelope-locks",
-      "path": "dogfood/20260325-week7-b-envelope-locks",
-      "totalFiles": 11,
-      "logsCount": 6,
-      "logsJsonCount": 1,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": false,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "20260325-week7-c-proof-completeness",
-      "path": "dogfood/20260325-week7-c-proof-completeness",
-      "totalFiles": 13,
-      "logsCount": 7,
-      "logsJsonCount": 1,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": true,
-      "hasIndexHtml": true,
-      "hasManifestJson": true,
-      "hasCommandStatusTsv": true
-    },
-    {
-      "bundle": "week5-config-parity",
-      "path": "dogfood/week5-config-parity",
-      "totalFiles": 34,
-      "logsCount": 0,
-      "logsJsonCount": 0,
-      "screenshotsCount": 0,
-      "screenshotsTotalBytes": 0,
-      "videosCount": 0,
-      "recordingsCount": 0,
-      "snapshotsCount": 0,
-      "hasCommandsSh": true,
-      "hasNotesMd": false,
-      "hasIndexHtml": false,
-      "hasManifestJson": false,
-      "hasCommandStatusTsv": false
-    }
-  ]
-}
-
-
-
-

Notes

- -
-

notes.md

-

- 2026-03-25 dogfood — Week 7 bundle C proof completeness inventory -

-

Bundle metadata

-
    -
  • - Bundle path: - dogfood/20260325-week7-c-proof-completeness/ -
  • -
  • - Inventory date: - 2026-03-25T19:56:37.094Z -
  • -
  • Total bundle count: 40
  • -
  • Review pages present: 6
  • -
-

Scenario summary

-

- This inventory proves that the dogfood proof-bundle ecosystem can be - reviewed from the live filesystem: every immediate subdirectory - under dogfood/ is enumerated, core reviewer-facing - files are checked for presence, and reviewer artifacts (screenshots, - recordings, videos, snapshots) are counted with totals derived - directly from the current bundle directories. -

-

Inventory table

-

- | Bundle | commands.sh | notes.md | index.html | log count | - screenshot count | videos/recordings | | - ----------------------------------- | ----------- | -------- | - ---------- | --------: | ---------------: | ----------------- | | - 20260319-lifecycle | no | yes | no | 0 | 6 | 0/0 | | - 20260319-nvim-demo | no | yes | no | 0 | 6 | 0/0 | | - 20260319-resize-demo | no | yes | no | 0 | 0 | 0/0 | | - 20260320-renderer-complete | yes | yes | no | 0 | 0 | 0/0 | | - 20260321-post-hardening-smoke | yes | yes | no | 0 | 0 | 0/0 | | - 20260321-week3-crash-retention | yes | no | no | 0 | 0 | 0/0 | | - 20260321-week3-renderer-complete | yes | no | no | 0 | 0 | 0/0 | | - 20260322-dogfood-alt-screen | yes | yes | no | 32 | 3 | 1/1 | | - 20260322-dogfood-color | yes | yes | no | 18 | 2 | 0/1 | | - 20260322-dogfood-crash | no | yes | no | 0 | 0 | 0/0 | | - 20260322-dogfood-hello-prompt | no | yes | no | 0 | 1 | 1/1 | | - 20260322-dogfood-resize | no | yes | no | 0 | 1 | 1/1 | | - 20260322-dogfood-scrollback | no | yes | no | 0 | 0 | 0/0 | | - 20260322-dogfood-unicode | no | yes | no | 0 | 0 | 0/0 | | - 20260322-dogfood-week4-features | no | yes | no | 0 | 0 | 0/0 | | - 20260322-global-cli-context | no | yes | no | 0 | 0 | 0/0 | | - 20260322-lazyvim-scenario | no | no | no | 0 | 0 | 0/0 | | - 20260322-week4-cli-parity | no | yes | no | 0 | 0 | 0/0 | | - 20260322-week4-failure-recovery | no | yes | no | 0 | 0 | 0/0 | | - 20260322-week4-scrollback-review | no | yes | no | 0 | 0 | 0/0 | | - 20260322-week4-unicode-review | no | yes | no | 0 | 0 | 0/0 | | - 20260323-bugfix-resize | no | yes | no | 0 | 3 | 0/0 | | - 20260323-bugfix-scrollback | no | yes | no | 0 | 0 | 0/0 | | - 20260323-week5-platform-closure | no | yes | no | 0 | 0 | 0/0 | | - 20260323-week5-recovery-host | yes | yes | no | 8 | 0 | 0/0 | | - 20260323-week5-recovery-renderer | yes | yes | no | 19 | 2 | 0/0 | | - 20260323-week5-recovery-replay | yes | yes | no | 11 | 2 | 0/1 | | - 20260323-week5-render-cells | yes | yes | no | 4 | 0 | 0/0 | | - 20260323-week5-render-cursor | yes | yes | no | 6 | 3 | 0/0 | | - 20260323-week5-render-fonts | yes | yes | no | 4 | 2 | 0/0 | | - 20260323-week5-render-timing | yes | yes | no | 6 | 0 | 0/3 | | - 20260323-week5-review-helper | yes | yes | no | 9 | 2 | 0/0 | | - 20260325-week6-a-cli-contract | yes | yes | yes | 14 | 0 | 0/0 | | - 20260325-week6-b-artifact-health | yes | yes | yes | 13 | 1 | 0/0 | - | 20260325-week6-c-failure-taxonomy | yes | yes | yes | 23 | 0 | 0/0 - | | 20260325-week6-d-review-surface | yes | yes | yes | 26 | 1 | 0/0 - | | 20260325-week7-a-cli-parity | yes | yes | yes | 28 | 1 | 1/1 | | - 20260325-week7-b-envelope-locks | yes | yes | no | 6 | 0 | 0/0 | | - 20260325-week7-c-proof-completeness | yes | yes | yes | 7 | 0 | 0/0 - | | week5-config-parity | yes | no | no | 0 | 0 | 0/0 | -

-

Week 7 completeness

-

- The minimum completeness bar for a review-ready Week 7 proof bundle - is: commands.sh, notes.md, - manifest.json, command-status.tsv, - index.html. -

-
    -
  • - 20260325-week7-a-cli-parity: Meets the minimum - completeness bar (commands.sh, notes.md, - manifest.json, command-status.tsv, - index.html). Missing today: none. -
  • -
  • - 20260325-week7-b-envelope-locks: Does not yet - meet the minimum completeness bar (commands.sh, - notes.md, manifest.json, - command-status.tsv, index.html). Missing - today: index.html. -
  • -
  • - 20260325-week7-c-proof-completeness: Meets the - minimum completeness bar (commands.sh, - notes.md, manifest.json, - command-status.tsv, index.html). Missing - today: none. -
  • -
  • - 20260325-week7-d-review-surface-audit: Not - present in the live inventory captured on - 2026-03-25T19:56:37.094Z. The lane is still in-flight outside this - task, so there is no filesystem proof bundle to assess yet. -
  • -
-

Review surface coverage

-

Bundles with a generated review page today (6/40):

-
    -
  • 20260325-week6-a-cli-contract
  • -
  • 20260325-week6-b-artifact-health
  • -
  • 20260325-week6-c-failure-taxonomy
  • -
  • 20260325-week6-d-review-surface
  • -
  • 20260325-week7-a-cli-parity
  • -
  • 20260325-week7-c-proof-completeness
  • -
-

Gaps found

-
    -
  • - Missing review pages (index.html): - 20260319-lifecycle, 20260319-nvim-demo, - 20260319-resize-demo, - 20260320-renderer-complete, - 20260321-post-hardening-smoke, - 20260321-week3-crash-retention, - 20260321-week3-renderer-complete, - 20260322-dogfood-alt-screen, - 20260322-dogfood-color, - 20260322-dogfood-crash, - 20260322-dogfood-hello-prompt, - 20260322-dogfood-resize, - 20260322-dogfood-scrollback, - 20260322-dogfood-unicode, - 20260322-dogfood-week4-features, - 20260322-global-cli-context, - 20260322-lazyvim-scenario, - 20260322-week4-cli-parity, - 20260322-week4-failure-recovery, - 20260322-week4-scrollback-review, - 20260322-week4-unicode-review, - 20260323-bugfix-resize, - 20260323-bugfix-scrollback, - 20260323-week5-platform-closure, - 20260323-week5-recovery-host, - 20260323-week5-recovery-renderer, - 20260323-week5-recovery-replay, - 20260323-week5-render-cells, - 20260323-week5-render-cursor, - 20260323-week5-render-fonts, - 20260323-week5-render-timing, - 20260323-week5-review-helper, - 20260325-week7-b-envelope-locks, - week5-config-parity. -
  • -
  • - Missing notes (notes.md): - 20260321-week3-crash-retention, - 20260321-week3-renderer-complete, - 20260322-lazyvim-scenario, - week5-config-parity. -
  • -
  • - Missing command transcripts (commands.sh): - 20260319-lifecycle, 20260319-nvim-demo, - 20260319-resize-demo, - 20260322-dogfood-crash, - 20260322-dogfood-hello-prompt, - 20260322-dogfood-resize, - 20260322-dogfood-scrollback, - 20260322-dogfood-unicode, - 20260322-dogfood-week4-features, - 20260322-global-cli-context, - 20260322-lazyvim-scenario, - 20260322-week4-cli-parity, - 20260322-week4-failure-recovery, - 20260322-week4-scrollback-review, - 20260322-week4-unicode-review, - 20260323-bugfix-resize, - 20260323-bugfix-scrollback, - 20260323-week5-platform-closure. -
  • -
  • - Missing manifests (manifest.json): - 20260320-renderer-complete, - 20260321-post-hardening-smoke, - 20260322-dogfood-crash, - 20260322-dogfood-scrollback, - 20260322-dogfood-unicode, - 20260322-dogfood-week4-features, - 20260322-global-cli-context, - 20260322-lazyvim-scenario, - 20260322-week4-cli-parity, - 20260322-week4-failure-recovery, - 20260322-week4-scrollback-review, - 20260322-week4-unicode-review, - 20260323-bugfix-resize, - 20260323-bugfix-scrollback, - 20260323-week5-platform-closure, - week5-config-parity. -
  • -
  • - Missing command ledgers - (command-status.tsv): - 20260319-lifecycle, 20260319-nvim-demo, - 20260319-resize-demo, - 20260320-renderer-complete, - 20260321-post-hardening-smoke, - 20260321-week3-crash-retention, - 20260321-week3-renderer-complete, - 20260322-dogfood-crash, - 20260322-dogfood-hello-prompt, - 20260322-dogfood-resize, - 20260322-dogfood-scrollback, - 20260322-dogfood-unicode, - 20260322-dogfood-week4-features, - 20260322-global-cli-context, - 20260322-lazyvim-scenario, - 20260322-week4-cli-parity, - 20260322-week4-failure-recovery, - 20260322-week4-scrollback-review, - 20260322-week4-unicode-review, - 20260323-bugfix-resize, - 20260323-bugfix-scrollback, - 20260323-week5-platform-closure, - week5-config-parity. -
  • -
-

Evidence pointers

-
    -
  • - Bundle discovery: - logs/01-bundle-list.txt -
  • -
  • - Per-bundle file presence and inventory counts: - logs/02-file-counts.tsv -
  • -
  • - Reviewer artifact counts and screenshot byte totals: - logs/03-artifact-counts.tsv -
  • -
  • - Machine-readable rollup for totals, review coverage, and gap - lists: - logs/04-summary.json -
  • -
  • - Generated review page for this bundle: - logs/05-review-bundle.txt -
  • -
-
-
-
-

Commands

-
-

commands.sh

-
#!/usr/bin/env bash
-set -euo pipefail
-export PATH="$HOME/.local/bin:$PATH"
-BUNDLE_DIR="dogfood/20260325-week7-c-proof-completeness"
-mkdir -p "$BUNDLE_DIR/logs" "$BUNDLE_DIR/screenshots"
-
-touch "$BUNDLE_DIR/screenshots/.gitkeep"
-find dogfood -maxdepth 1 -mindepth 1 -type d | sort > "$BUNDLE_DIR/logs/01-bundle-list.txt"
-node --input-type=module <<'NODE'
-// scan live dogfood bundles and write logs/02-file-counts.tsv, logs/03-artifact-counts.tsv, and logs/04-summary.json
-NODE
-node --input-type=module <<'NODE'
-// render final notes.md, manifest.json, and commands.sh from logs/04-summary.json
-NODE
-npx tsx src/tools/review-bundle.ts "$BUNDLE_DIR" > "$BUNDLE_DIR/logs/05-review-bundle.txt"
-npx prettier --write "$BUNDLE_DIR/" > "$BUNDLE_DIR/logs/06-prettier-write.txt"
-npx prettier --check "$BUNDLE_DIR/" > "$BUNDLE_DIR/logs/07-prettier-check.txt"
-
-
-
-
-

Command status

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stepcommandexit_codestatus
00bootstrap bundle files0ok
01 - find dogfood -maxdepth 1 -mindepth 1 -type d | sort > - logs/01-bundle-list.txt - 0ok
02node --input-type=module # initial inventory write0ok
03 - node --input-type=module # initial notes.md, manifest.json, - commands.sh write - 0ok
04 - npx tsx src/tools/review-bundle.ts - dogfood/20260325-week7-c-proof-completeness - 0ok
05 - npx prettier --write - dogfood/20260325-week7-c-proof-completeness/ - 0ok
06 - npx prettier --check - dogfood/20260325-week7-c-proof-completeness/ - 0ok
07 - find dogfood -maxdepth 1 -mindepth 1 -type d | sort > - logs/01-bundle-list.txt - 0ok
08 - node --input-type=module # refreshed inventory write after - final logs existed - 0ok
09 - node --input-type=module # refreshed notes.md, manifest.json, - commands.sh write - 0ok
10 - npx tsx src/tools/review-bundle.ts - dogfood/20260325-week7-c-proof-completeness - 0ok
11 - npx prettier --write - dogfood/20260325-week7-c-proof-completeness/ - 0ok
12 - npx prettier --check - dogfood/20260325-week7-c-proof-completeness/ - 0ok
-
-
-
-

Artifact inventory

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeSize
command-status.tsvsupport1022 B
commands.shscript848 B
- logs/01-bundle-list.txt - support1.4 KB
- logs/02-file-counts.tsv - support2.4 KB
- logs/03-artifact-counts.tsv - support1.6 KB
logs/04-summary.jsonsupport22.6 KB
- logs/05-review-bundle.txt - support113 B
- logs/06-prettier-write.txt - support275 B
- logs/07-prettier-check.txt - support66 B
manifest.jsonsupport769 B
notes.mdnotes10.6 KB
screenshots/.gitkeepother0 B
-
-
-
- - diff --git a/dogfood/20260325-week7-c-proof-completeness/logs/01-bundle-list.txt b/dogfood/20260325-week7-c-proof-completeness/logs/01-bundle-list.txt deleted file mode 100644 index 9daab608..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/logs/01-bundle-list.txt +++ /dev/null @@ -1,40 +0,0 @@ -dogfood/20260319-lifecycle -dogfood/20260319-nvim-demo -dogfood/20260319-resize-demo -dogfood/20260320-renderer-complete -dogfood/20260321-post-hardening-smoke -dogfood/20260321-week3-crash-retention -dogfood/20260321-week3-renderer-complete -dogfood/20260322-dogfood-alt-screen -dogfood/20260322-dogfood-color -dogfood/20260322-dogfood-crash -dogfood/20260322-dogfood-hello-prompt -dogfood/20260322-dogfood-resize -dogfood/20260322-dogfood-scrollback -dogfood/20260322-dogfood-unicode -dogfood/20260322-dogfood-week4-features -dogfood/20260322-global-cli-context -dogfood/20260322-lazyvim-scenario -dogfood/20260322-week4-cli-parity -dogfood/20260322-week4-failure-recovery -dogfood/20260322-week4-scrollback-review -dogfood/20260322-week4-unicode-review -dogfood/20260323-bugfix-resize -dogfood/20260323-bugfix-scrollback -dogfood/20260323-week5-platform-closure -dogfood/20260323-week5-recovery-host -dogfood/20260323-week5-recovery-renderer -dogfood/20260323-week5-recovery-replay -dogfood/20260323-week5-render-cells -dogfood/20260323-week5-render-cursor -dogfood/20260323-week5-render-fonts -dogfood/20260323-week5-render-timing -dogfood/20260323-week5-review-helper -dogfood/20260325-week6-a-cli-contract -dogfood/20260325-week6-b-artifact-health -dogfood/20260325-week6-c-failure-taxonomy -dogfood/20260325-week6-d-review-surface -dogfood/20260325-week7-a-cli-parity -dogfood/20260325-week7-b-envelope-locks -dogfood/20260325-week7-c-proof-completeness -dogfood/week5-config-parity diff --git a/dogfood/20260325-week7-c-proof-completeness/logs/02-file-counts.tsv b/dogfood/20260325-week7-c-proof-completeness/logs/02-file-counts.tsv deleted file mode 100644 index 9f0fdfdf..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/logs/02-file-counts.tsv +++ /dev/null @@ -1,41 +0,0 @@ -bundle total_files logs_json_count screenshots_count videos_count recordings_count has_commands_sh has_notes_md has_index_html has_manifest_json has_command_status_tsv -20260319-lifecycle 24 0 6 0 0 no yes no yes no -20260319-nvim-demo 11 0 6 0 0 no yes no yes no -20260319-resize-demo 9 0 0 0 0 no yes no yes no -20260320-renderer-complete 16 0 0 0 0 yes yes no no no -20260321-post-hardening-smoke 19 0 0 0 0 yes yes no no no -20260321-week3-crash-retention 20 0 0 0 0 yes no no yes no -20260321-week3-renderer-complete 38 0 0 0 0 yes no no yes no -20260322-dogfood-alt-screen 67 0 3 1 1 yes yes no yes yes -20260322-dogfood-color 43 0 2 0 1 yes yes no yes yes -20260322-dogfood-crash 20 0 0 0 0 no yes no no no -20260322-dogfood-hello-prompt 19 0 1 1 1 no yes no yes no -20260322-dogfood-resize 19 0 1 1 1 no yes no yes no -20260322-dogfood-scrollback 19 0 0 0 0 no yes no no no -20260322-dogfood-unicode 15 0 0 0 0 no yes no no no -20260322-dogfood-week4-features 44 0 0 0 0 no yes no no no -20260322-global-cli-context 7 0 0 0 0 no yes no no no -20260322-lazyvim-scenario 31 0 0 0 0 no no no no no -20260322-week4-cli-parity 13 0 0 0 0 no yes no no no -20260322-week4-failure-recovery 9 0 0 0 0 no yes no no no -20260322-week4-scrollback-review 11 0 0 0 0 no yes no no no -20260322-week4-unicode-review 8 0 0 0 0 no yes no no no -20260323-bugfix-resize 20 0 3 0 0 no yes no no no -20260323-bugfix-scrollback 13 0 0 0 0 no yes no no no -20260323-week5-platform-closure 6 0 0 0 0 no yes no no no -20260323-week5-recovery-host 24 0 0 0 0 yes yes no yes yes -20260323-week5-recovery-renderer 39 0 2 0 0 yes yes no yes yes -20260323-week5-recovery-replay 29 0 2 0 1 yes yes no yes yes -20260323-week5-render-cells 14 0 0 0 0 yes yes no yes yes -20260323-week5-render-cursor 19 0 3 0 0 yes yes no yes yes -20260323-week5-render-fonts 15 0 2 0 0 yes yes no yes yes -20260323-week5-render-timing 19 0 0 0 3 yes yes no yes yes -20260323-week5-review-helper 17 0 2 0 0 yes yes no yes yes -20260325-week6-a-cli-contract 25 7 0 0 0 yes yes yes yes yes -20260325-week6-b-artifact-health 25 8 1 0 0 yes yes yes yes yes -20260325-week6-c-failure-taxonomy 34 12 0 0 0 yes yes yes yes yes -20260325-week6-d-review-surface 36 0 1 0 0 yes yes yes yes yes -20260325-week7-a-cli-parity 43 14 1 1 1 yes yes yes yes yes -20260325-week7-b-envelope-locks 11 1 0 0 0 yes yes no yes yes -20260325-week7-c-proof-completeness 13 1 0 0 0 yes yes yes yes yes -week5-config-parity 34 0 0 0 0 yes no no no no diff --git a/dogfood/20260325-week7-c-proof-completeness/logs/03-artifact-counts.tsv b/dogfood/20260325-week7-c-proof-completeness/logs/03-artifact-counts.tsv deleted file mode 100644 index af604cc4..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/logs/03-artifact-counts.tsv +++ /dev/null @@ -1,41 +0,0 @@ -bundle screenshots_count screenshots_total_bytes recordings_count videos_count snapshots_count -20260319-lifecycle 6 7540 0 0 0 -20260319-nvim-demo 6 8148 0 0 0 -20260319-resize-demo 0 0 0 0 0 -20260320-renderer-complete 0 0 0 0 0 -20260321-post-hardening-smoke 0 0 0 0 0 -20260321-week3-crash-retention 0 0 0 0 0 -20260321-week3-renderer-complete 0 0 0 0 0 -20260322-dogfood-alt-screen 3 22470 1 1 3 -20260322-dogfood-color 2 94521 1 0 2 -20260322-dogfood-crash 0 0 0 0 0 -20260322-dogfood-hello-prompt 1 5475 1 1 0 -20260322-dogfood-resize 1 5067 1 1 0 -20260322-dogfood-scrollback 0 0 0 0 0 -20260322-dogfood-unicode 0 0 0 0 0 -20260322-dogfood-week4-features 0 0 0 0 0 -20260322-global-cli-context 0 0 0 0 0 -20260322-lazyvim-scenario 0 0 0 0 0 -20260322-week4-cli-parity 0 0 0 0 0 -20260322-week4-failure-recovery 0 0 0 0 0 -20260322-week4-scrollback-review 0 0 0 0 0 -20260322-week4-unicode-review 0 0 0 0 0 -20260323-bugfix-resize 3 17192 0 0 0 -20260323-bugfix-scrollback 0 0 0 0 0 -20260323-week5-platform-closure 0 0 0 0 0 -20260323-week5-recovery-host 0 0 0 0 0 -20260323-week5-recovery-renderer 2 5940 0 0 2 -20260323-week5-recovery-replay 2 6462 1 0 2 -20260323-week5-render-cells 0 0 0 0 0 -20260323-week5-render-cursor 3 146659 0 0 0 -20260323-week5-render-fonts 2 97035 0 0 0 -20260323-week5-render-timing 0 0 3 0 0 -20260323-week5-review-helper 2 153083 0 0 0 -20260325-week6-a-cli-contract 0 0 0 0 0 -20260325-week6-b-artifact-health 1 48895 0 0 0 -20260325-week6-c-failure-taxonomy 0 0 0 0 0 -20260325-week6-d-review-surface 1 850891 0 0 0 -20260325-week7-a-cli-parity 1 7199 1 1 1 -20260325-week7-b-envelope-locks 0 0 0 0 0 -20260325-week7-c-proof-completeness 0 0 0 0 0 -week5-config-parity 0 0 0 0 0 diff --git a/dogfood/20260325-week7-c-proof-completeness/logs/04-summary.json b/dogfood/20260325-week7-c-proof-completeness/logs/04-summary.json deleted file mode 100644 index 3ec0b04c..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/logs/04-summary.json +++ /dev/null @@ -1,807 +0,0 @@ -{ - "generatedAt": "2026-03-25T19:56:37.094Z", - "bundleCount": 40, - "reviewPageCount": 6, - "reviewPageBundles": [ - "20260325-week6-a-cli-contract", - "20260325-week6-b-artifact-health", - "20260325-week6-c-failure-taxonomy", - "20260325-week6-d-review-surface", - "20260325-week7-a-cli-parity", - "20260325-week7-c-proof-completeness" - ], - "bundlesMissingCommandsSh": [ - "20260319-lifecycle", - "20260319-nvim-demo", - "20260319-resize-demo", - "20260322-dogfood-crash", - "20260322-dogfood-hello-prompt", - "20260322-dogfood-resize", - "20260322-dogfood-scrollback", - "20260322-dogfood-unicode", - "20260322-dogfood-week4-features", - "20260322-global-cli-context", - "20260322-lazyvim-scenario", - "20260322-week4-cli-parity", - "20260322-week4-failure-recovery", - "20260322-week4-scrollback-review", - "20260322-week4-unicode-review", - "20260323-bugfix-resize", - "20260323-bugfix-scrollback", - "20260323-week5-platform-closure" - ], - "bundlesMissingNotesMd": [ - "20260321-week3-crash-retention", - "20260321-week3-renderer-complete", - "20260322-lazyvim-scenario", - "week5-config-parity" - ], - "bundlesMissingIndexHtml": [ - "20260319-lifecycle", - "20260319-nvim-demo", - "20260319-resize-demo", - "20260320-renderer-complete", - "20260321-post-hardening-smoke", - "20260321-week3-crash-retention", - "20260321-week3-renderer-complete", - "20260322-dogfood-alt-screen", - "20260322-dogfood-color", - "20260322-dogfood-crash", - "20260322-dogfood-hello-prompt", - "20260322-dogfood-resize", - "20260322-dogfood-scrollback", - "20260322-dogfood-unicode", - "20260322-dogfood-week4-features", - "20260322-global-cli-context", - "20260322-lazyvim-scenario", - "20260322-week4-cli-parity", - "20260322-week4-failure-recovery", - "20260322-week4-scrollback-review", - "20260322-week4-unicode-review", - "20260323-bugfix-resize", - "20260323-bugfix-scrollback", - "20260323-week5-platform-closure", - "20260323-week5-recovery-host", - "20260323-week5-recovery-renderer", - "20260323-week5-recovery-replay", - "20260323-week5-render-cells", - "20260323-week5-render-cursor", - "20260323-week5-render-fonts", - "20260323-week5-render-timing", - "20260323-week5-review-helper", - "20260325-week7-b-envelope-locks", - "week5-config-parity" - ], - "bundlesMissingManifestJson": [ - "20260320-renderer-complete", - "20260321-post-hardening-smoke", - "20260322-dogfood-crash", - "20260322-dogfood-scrollback", - "20260322-dogfood-unicode", - "20260322-dogfood-week4-features", - "20260322-global-cli-context", - "20260322-lazyvim-scenario", - "20260322-week4-cli-parity", - "20260322-week4-failure-recovery", - "20260322-week4-scrollback-review", - "20260322-week4-unicode-review", - "20260323-bugfix-resize", - "20260323-bugfix-scrollback", - "20260323-week5-platform-closure", - "week5-config-parity" - ], - "bundlesMissingCommandStatusTsv": [ - "20260319-lifecycle", - "20260319-nvim-demo", - "20260319-resize-demo", - "20260320-renderer-complete", - "20260321-post-hardening-smoke", - "20260321-week3-crash-retention", - "20260321-week3-renderer-complete", - "20260322-dogfood-crash", - "20260322-dogfood-hello-prompt", - "20260322-dogfood-resize", - "20260322-dogfood-scrollback", - "20260322-dogfood-unicode", - "20260322-dogfood-week4-features", - "20260322-global-cli-context", - "20260322-lazyvim-scenario", - "20260322-week4-cli-parity", - "20260322-week4-failure-recovery", - "20260322-week4-scrollback-review", - "20260322-week4-unicode-review", - "20260323-bugfix-resize", - "20260323-bugfix-scrollback", - "20260323-week5-platform-closure", - "week5-config-parity" - ], - "totals": { - "screenshotsCount": 36, - "screenshotsTotalBytes": 1476577, - "recordingsCount": 9, - "videosCount": 4, - "snapshotsCount": 10 - }, - "bundles": [ - { - "bundle": "20260319-lifecycle", - "path": "dogfood/20260319-lifecycle", - "totalFiles": 24, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 6, - "screenshotsTotalBytes": 7540, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260319-nvim-demo", - "path": "dogfood/20260319-nvim-demo", - "totalFiles": 11, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 6, - "screenshotsTotalBytes": 8148, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260319-resize-demo", - "path": "dogfood/20260319-resize-demo", - "totalFiles": 9, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260320-renderer-complete", - "path": "dogfood/20260320-renderer-complete", - "totalFiles": 16, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260321-post-hardening-smoke", - "path": "dogfood/20260321-post-hardening-smoke", - "totalFiles": 19, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260321-week3-crash-retention", - "path": "dogfood/20260321-week3-crash-retention", - "totalFiles": 20, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": false, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260321-week3-renderer-complete", - "path": "dogfood/20260321-week3-renderer-complete", - "totalFiles": 38, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": false, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-dogfood-alt-screen", - "path": "dogfood/20260322-dogfood-alt-screen", - "totalFiles": 67, - "logsCount": 32, - "logsJsonCount": 0, - "screenshotsCount": 3, - "screenshotsTotalBytes": 22470, - "videosCount": 1, - "recordingsCount": 1, - "snapshotsCount": 3, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260322-dogfood-color", - "path": "dogfood/20260322-dogfood-color", - "totalFiles": 43, - "logsCount": 18, - "logsJsonCount": 0, - "screenshotsCount": 2, - "screenshotsTotalBytes": 94521, - "videosCount": 0, - "recordingsCount": 1, - "snapshotsCount": 2, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260322-dogfood-crash", - "path": "dogfood/20260322-dogfood-crash", - "totalFiles": 20, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-dogfood-hello-prompt", - "path": "dogfood/20260322-dogfood-hello-prompt", - "totalFiles": 19, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 1, - "screenshotsTotalBytes": 5475, - "videosCount": 1, - "recordingsCount": 1, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-dogfood-resize", - "path": "dogfood/20260322-dogfood-resize", - "totalFiles": 19, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 1, - "screenshotsTotalBytes": 5067, - "videosCount": 1, - "recordingsCount": 1, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-dogfood-scrollback", - "path": "dogfood/20260322-dogfood-scrollback", - "totalFiles": 19, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-dogfood-unicode", - "path": "dogfood/20260322-dogfood-unicode", - "totalFiles": 15, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-dogfood-week4-features", - "path": "dogfood/20260322-dogfood-week4-features", - "totalFiles": 44, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-global-cli-context", - "path": "dogfood/20260322-global-cli-context", - "totalFiles": 7, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-lazyvim-scenario", - "path": "dogfood/20260322-lazyvim-scenario", - "totalFiles": 31, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": false, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-week4-cli-parity", - "path": "dogfood/20260322-week4-cli-parity", - "totalFiles": 13, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-week4-failure-recovery", - "path": "dogfood/20260322-week4-failure-recovery", - "totalFiles": 9, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-week4-scrollback-review", - "path": "dogfood/20260322-week4-scrollback-review", - "totalFiles": 11, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260322-week4-unicode-review", - "path": "dogfood/20260322-week4-unicode-review", - "totalFiles": 8, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260323-bugfix-resize", - "path": "dogfood/20260323-bugfix-resize", - "totalFiles": 20, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 3, - "screenshotsTotalBytes": 17192, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260323-bugfix-scrollback", - "path": "dogfood/20260323-bugfix-scrollback", - "totalFiles": 13, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260323-week5-platform-closure", - "path": "dogfood/20260323-week5-platform-closure", - "totalFiles": 6, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": false, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - }, - { - "bundle": "20260323-week5-recovery-host", - "path": "dogfood/20260323-week5-recovery-host", - "totalFiles": 24, - "logsCount": 8, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260323-week5-recovery-renderer", - "path": "dogfood/20260323-week5-recovery-renderer", - "totalFiles": 39, - "logsCount": 19, - "logsJsonCount": 0, - "screenshotsCount": 2, - "screenshotsTotalBytes": 5940, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 2, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260323-week5-recovery-replay", - "path": "dogfood/20260323-week5-recovery-replay", - "totalFiles": 29, - "logsCount": 11, - "logsJsonCount": 0, - "screenshotsCount": 2, - "screenshotsTotalBytes": 6462, - "videosCount": 0, - "recordingsCount": 1, - "snapshotsCount": 2, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260323-week5-render-cells", - "path": "dogfood/20260323-week5-render-cells", - "totalFiles": 14, - "logsCount": 4, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260323-week5-render-cursor", - "path": "dogfood/20260323-week5-render-cursor", - "totalFiles": 19, - "logsCount": 6, - "logsJsonCount": 0, - "screenshotsCount": 3, - "screenshotsTotalBytes": 146659, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260323-week5-render-fonts", - "path": "dogfood/20260323-week5-render-fonts", - "totalFiles": 15, - "logsCount": 4, - "logsJsonCount": 0, - "screenshotsCount": 2, - "screenshotsTotalBytes": 97035, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260323-week5-render-timing", - "path": "dogfood/20260323-week5-render-timing", - "totalFiles": 19, - "logsCount": 6, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 3, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260323-week5-review-helper", - "path": "dogfood/20260323-week5-review-helper", - "totalFiles": 17, - "logsCount": 9, - "logsJsonCount": 0, - "screenshotsCount": 2, - "screenshotsTotalBytes": 153083, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260325-week6-a-cli-contract", - "path": "dogfood/20260325-week6-a-cli-contract", - "totalFiles": 25, - "logsCount": 14, - "logsJsonCount": 7, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": true, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260325-week6-b-artifact-health", - "path": "dogfood/20260325-week6-b-artifact-health", - "totalFiles": 25, - "logsCount": 13, - "logsJsonCount": 8, - "screenshotsCount": 1, - "screenshotsTotalBytes": 48895, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": true, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260325-week6-c-failure-taxonomy", - "path": "dogfood/20260325-week6-c-failure-taxonomy", - "totalFiles": 34, - "logsCount": 23, - "logsJsonCount": 12, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": true, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260325-week6-d-review-surface", - "path": "dogfood/20260325-week6-d-review-surface", - "totalFiles": 36, - "logsCount": 26, - "logsJsonCount": 0, - "screenshotsCount": 1, - "screenshotsTotalBytes": 850891, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": true, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260325-week7-a-cli-parity", - "path": "dogfood/20260325-week7-a-cli-parity", - "totalFiles": 43, - "logsCount": 28, - "logsJsonCount": 14, - "screenshotsCount": 1, - "screenshotsTotalBytes": 7199, - "videosCount": 1, - "recordingsCount": 1, - "snapshotsCount": 1, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": true, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260325-week7-b-envelope-locks", - "path": "dogfood/20260325-week7-b-envelope-locks", - "totalFiles": 11, - "logsCount": 6, - "logsJsonCount": 1, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": false, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "20260325-week7-c-proof-completeness", - "path": "dogfood/20260325-week7-c-proof-completeness", - "totalFiles": 13, - "logsCount": 7, - "logsJsonCount": 1, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": true, - "hasIndexHtml": true, - "hasManifestJson": true, - "hasCommandStatusTsv": true - }, - { - "bundle": "week5-config-parity", - "path": "dogfood/week5-config-parity", - "totalFiles": 34, - "logsCount": 0, - "logsJsonCount": 0, - "screenshotsCount": 0, - "screenshotsTotalBytes": 0, - "videosCount": 0, - "recordingsCount": 0, - "snapshotsCount": 0, - "hasCommandsSh": true, - "hasNotesMd": false, - "hasIndexHtml": false, - "hasManifestJson": false, - "hasCommandStatusTsv": false - } - ] -} diff --git a/dogfood/20260325-week7-c-proof-completeness/logs/05-review-bundle.txt b/dogfood/20260325-week7-c-proof-completeness/logs/05-review-bundle.txt deleted file mode 100644 index fa7a6c1d..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/logs/05-review-bundle.txt +++ /dev/null @@ -1 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_61e8d0743f/dogfood/20260325-week7-c-proof-completeness/index.html diff --git a/dogfood/20260325-week7-c-proof-completeness/logs/06-prettier-write.txt b/dogfood/20260325-week7-c-proof-completeness/logs/06-prettier-write.txt deleted file mode 100644 index f510c056..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/logs/06-prettier-write.txt +++ /dev/null @@ -1,4 +0,0 @@ -dogfood/20260325-week7-c-proof-completeness/index.html 112ms -dogfood/20260325-week7-c-proof-completeness/logs/04-summary.json 43ms (unchanged) -dogfood/20260325-week7-c-proof-completeness/manifest.json 1ms (unchanged) -dogfood/20260325-week7-c-proof-completeness/notes.md 48ms diff --git a/dogfood/20260325-week7-c-proof-completeness/logs/07-prettier-check.txt b/dogfood/20260325-week7-c-proof-completeness/logs/07-prettier-check.txt deleted file mode 100644 index 4aa0d16e..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/logs/07-prettier-check.txt +++ /dev/null @@ -1,2 +0,0 @@ -Checking formatting... -All matched files use Prettier code style! diff --git a/dogfood/20260325-week7-c-proof-completeness/manifest.json b/dogfood/20260325-week7-c-proof-completeness/manifest.json deleted file mode 100644 index 6c622f69..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/manifest.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "bundle": "20260325-week7-c-proof-completeness", - "title": "Week 7 — Proof Completeness Inventory", - "description": "Inventories all dogfood proof bundles and their artifacts to verify ecosystem completeness", - "createdAt": "2026-03-25T19:56:37.094Z", - "week": 7, - "lane": "C", - "artifacts": [ - { - "path": "logs/01-bundle-list.txt", - "description": "Sorted list of all dogfood bundle directories" - }, - { - "path": "logs/02-file-counts.tsv", - "description": "Per-bundle file count inventory" - }, - { - "path": "logs/03-artifact-counts.tsv", - "description": "Per-bundle reviewer artifact counts" - }, - { - "path": "logs/04-summary.json", - "description": "Machine-readable inventory summary" - } - ] -} diff --git a/dogfood/20260325-week7-c-proof-completeness/notes.md b/dogfood/20260325-week7-c-proof-completeness/notes.md deleted file mode 100644 index 97e48a97..00000000 --- a/dogfood/20260325-week7-c-proof-completeness/notes.md +++ /dev/null @@ -1,97 +0,0 @@ -# 2026-03-25 dogfood — Week 7 bundle C proof completeness inventory - -## Bundle metadata - -- **Bundle path:** `dogfood/20260325-week7-c-proof-completeness/` -- **Inventory date:** `2026-03-25T19:56:37.094Z` -- **Total bundle count:** 40 -- **Review pages present:** 6 - -## Scenario summary - -This inventory proves that the dogfood proof-bundle ecosystem can be reviewed from the live filesystem: every immediate subdirectory under `dogfood/` is enumerated, core reviewer-facing files are checked for presence, and reviewer artifacts (screenshots, recordings, videos, snapshots) are counted with totals derived directly from the current bundle directories. - -## Inventory table - -| Bundle | commands.sh | notes.md | index.html | log count | screenshot count | videos/recordings | -| ----------------------------------- | ----------- | -------- | ---------- | --------: | ---------------: | ----------------- | -| 20260319-lifecycle | no | yes | no | 0 | 6 | 0/0 | -| 20260319-nvim-demo | no | yes | no | 0 | 6 | 0/0 | -| 20260319-resize-demo | no | yes | no | 0 | 0 | 0/0 | -| 20260320-renderer-complete | yes | yes | no | 0 | 0 | 0/0 | -| 20260321-post-hardening-smoke | yes | yes | no | 0 | 0 | 0/0 | -| 20260321-week3-crash-retention | yes | no | no | 0 | 0 | 0/0 | -| 20260321-week3-renderer-complete | yes | no | no | 0 | 0 | 0/0 | -| 20260322-dogfood-alt-screen | yes | yes | no | 32 | 3 | 1/1 | -| 20260322-dogfood-color | yes | yes | no | 18 | 2 | 0/1 | -| 20260322-dogfood-crash | no | yes | no | 0 | 0 | 0/0 | -| 20260322-dogfood-hello-prompt | no | yes | no | 0 | 1 | 1/1 | -| 20260322-dogfood-resize | no | yes | no | 0 | 1 | 1/1 | -| 20260322-dogfood-scrollback | no | yes | no | 0 | 0 | 0/0 | -| 20260322-dogfood-unicode | no | yes | no | 0 | 0 | 0/0 | -| 20260322-dogfood-week4-features | no | yes | no | 0 | 0 | 0/0 | -| 20260322-global-cli-context | no | yes | no | 0 | 0 | 0/0 | -| 20260322-lazyvim-scenario | no | no | no | 0 | 0 | 0/0 | -| 20260322-week4-cli-parity | no | yes | no | 0 | 0 | 0/0 | -| 20260322-week4-failure-recovery | no | yes | no | 0 | 0 | 0/0 | -| 20260322-week4-scrollback-review | no | yes | no | 0 | 0 | 0/0 | -| 20260322-week4-unicode-review | no | yes | no | 0 | 0 | 0/0 | -| 20260323-bugfix-resize | no | yes | no | 0 | 3 | 0/0 | -| 20260323-bugfix-scrollback | no | yes | no | 0 | 0 | 0/0 | -| 20260323-week5-platform-closure | no | yes | no | 0 | 0 | 0/0 | -| 20260323-week5-recovery-host | yes | yes | no | 8 | 0 | 0/0 | -| 20260323-week5-recovery-renderer | yes | yes | no | 19 | 2 | 0/0 | -| 20260323-week5-recovery-replay | yes | yes | no | 11 | 2 | 0/1 | -| 20260323-week5-render-cells | yes | yes | no | 4 | 0 | 0/0 | -| 20260323-week5-render-cursor | yes | yes | no | 6 | 3 | 0/0 | -| 20260323-week5-render-fonts | yes | yes | no | 4 | 2 | 0/0 | -| 20260323-week5-render-timing | yes | yes | no | 6 | 0 | 0/3 | -| 20260323-week5-review-helper | yes | yes | no | 9 | 2 | 0/0 | -| 20260325-week6-a-cli-contract | yes | yes | yes | 14 | 0 | 0/0 | -| 20260325-week6-b-artifact-health | yes | yes | yes | 13 | 1 | 0/0 | -| 20260325-week6-c-failure-taxonomy | yes | yes | yes | 23 | 0 | 0/0 | -| 20260325-week6-d-review-surface | yes | yes | yes | 26 | 1 | 0/0 | -| 20260325-week7-a-cli-parity | yes | yes | yes | 28 | 1 | 1/1 | -| 20260325-week7-b-envelope-locks | yes | yes | no | 6 | 0 | 0/0 | -| 20260325-week7-c-proof-completeness | yes | yes | yes | 7 | 0 | 0/0 | -| week5-config-parity | yes | no | no | 0 | 0 | 0/0 | - -## Week 7 completeness - -The minimum completeness bar for a review-ready Week 7 proof bundle is: `commands.sh`, `notes.md`, `manifest.json`, `command-status.tsv`, `index.html`. - -- **20260325-week7-a-cli-parity:** Meets the minimum completeness bar (`commands.sh`, `notes.md`, `manifest.json`, `command-status.tsv`, `index.html`). Missing today: none. -- **20260325-week7-b-envelope-locks:** Does not yet meet the minimum completeness bar (`commands.sh`, `notes.md`, `manifest.json`, `command-status.tsv`, `index.html`). Missing today: `index.html`. -- **20260325-week7-c-proof-completeness:** Meets the minimum completeness bar (`commands.sh`, `notes.md`, `manifest.json`, `command-status.tsv`, `index.html`). Missing today: none. -- **20260325-week7-d-review-surface-audit:** Not present in the live inventory captured on 2026-03-25T19:56:37.094Z. The lane is still in-flight outside this task, so there is no filesystem proof bundle to assess yet. - -## Review surface coverage - -Bundles with a generated review page today (6/40): - -- `20260325-week6-a-cli-contract` -- `20260325-week6-b-artifact-health` -- `20260325-week6-c-failure-taxonomy` -- `20260325-week6-d-review-surface` -- `20260325-week7-a-cli-parity` -- `20260325-week7-c-proof-completeness` - -## Gaps found - -- **Missing review pages (`index.html`):** `20260319-lifecycle`, `20260319-nvim-demo`, `20260319-resize-demo`, `20260320-renderer-complete`, `20260321-post-hardening-smoke`, `20260321-week3-crash-retention`, `20260321-week3-renderer-complete`, `20260322-dogfood-alt-screen`, `20260322-dogfood-color`, `20260322-dogfood-crash`, `20260322-dogfood-hello-prompt`, `20260322-dogfood-resize`, `20260322-dogfood-scrollback`, `20260322-dogfood-unicode`, `20260322-dogfood-week4-features`, `20260322-global-cli-context`, `20260322-lazyvim-scenario`, `20260322-week4-cli-parity`, `20260322-week4-failure-recovery`, `20260322-week4-scrollback-review`, `20260322-week4-unicode-review`, `20260323-bugfix-resize`, `20260323-bugfix-scrollback`, `20260323-week5-platform-closure`, `20260323-week5-recovery-host`, `20260323-week5-recovery-renderer`, `20260323-week5-recovery-replay`, `20260323-week5-render-cells`, `20260323-week5-render-cursor`, `20260323-week5-render-fonts`, `20260323-week5-render-timing`, `20260323-week5-review-helper`, `20260325-week7-b-envelope-locks`, `week5-config-parity`. -- **Missing notes (`notes.md`):** `20260321-week3-crash-retention`, `20260321-week3-renderer-complete`, `20260322-lazyvim-scenario`, `week5-config-parity`. -- **Missing command transcripts (`commands.sh`):** `20260319-lifecycle`, `20260319-nvim-demo`, `20260319-resize-demo`, `20260322-dogfood-crash`, `20260322-dogfood-hello-prompt`, `20260322-dogfood-resize`, `20260322-dogfood-scrollback`, `20260322-dogfood-unicode`, `20260322-dogfood-week4-features`, `20260322-global-cli-context`, `20260322-lazyvim-scenario`, `20260322-week4-cli-parity`, `20260322-week4-failure-recovery`, `20260322-week4-scrollback-review`, `20260322-week4-unicode-review`, `20260323-bugfix-resize`, `20260323-bugfix-scrollback`, `20260323-week5-platform-closure`. -- **Missing manifests (`manifest.json`):** `20260320-renderer-complete`, `20260321-post-hardening-smoke`, `20260322-dogfood-crash`, `20260322-dogfood-scrollback`, `20260322-dogfood-unicode`, `20260322-dogfood-week4-features`, `20260322-global-cli-context`, `20260322-lazyvim-scenario`, `20260322-week4-cli-parity`, `20260322-week4-failure-recovery`, `20260322-week4-scrollback-review`, `20260322-week4-unicode-review`, `20260323-bugfix-resize`, `20260323-bugfix-scrollback`, `20260323-week5-platform-closure`, `week5-config-parity`. -- **Missing command ledgers (`command-status.tsv`):** `20260319-lifecycle`, `20260319-nvim-demo`, `20260319-resize-demo`, `20260320-renderer-complete`, `20260321-post-hardening-smoke`, `20260321-week3-crash-retention`, `20260321-week3-renderer-complete`, `20260322-dogfood-crash`, `20260322-dogfood-hello-prompt`, `20260322-dogfood-resize`, `20260322-dogfood-scrollback`, `20260322-dogfood-unicode`, `20260322-dogfood-week4-features`, `20260322-global-cli-context`, `20260322-lazyvim-scenario`, `20260322-week4-cli-parity`, `20260322-week4-failure-recovery`, `20260322-week4-scrollback-review`, `20260322-week4-unicode-review`, `20260323-bugfix-resize`, `20260323-bugfix-scrollback`, `20260323-week5-platform-closure`, `week5-config-parity`. - -## Evidence pointers - -- **Bundle discovery:** `logs/01-bundle-list.txt` -- **Per-bundle file presence and inventory counts:** `logs/02-file-counts.tsv` -- **Reviewer artifact counts and screenshot byte totals:** `logs/03-artifact-counts.tsv` -- **Machine-readable rollup for totals, review coverage, and gap lists:** `logs/04-summary.json` -- **Generated review page for this bundle:** `logs/05-review-bundle.txt` - -## Browser Verification (Week 7 remediation) - -Review page verified via `agent-browser` — see `screenshots/01-review-page-verified.png`. diff --git a/dogfood/20260325-week7-c-proof-completeness/screenshots/.gitkeep b/dogfood/20260325-week7-c-proof-completeness/screenshots/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-c-proof-completeness/screenshots/01-review-page-verified.png b/dogfood/20260325-week7-c-proof-completeness/screenshots/01-review-page-verified.png deleted file mode 100644 index 9b3fc385..00000000 Binary files a/dogfood/20260325-week7-c-proof-completeness/screenshots/01-review-page-verified.png and /dev/null differ diff --git a/dogfood/20260325-week7-d-review-normalization/command-status.tsv b/dogfood/20260325-week7-d-review-normalization/command-status.tsv deleted file mode 100644 index 5797a944..00000000 --- a/dogfood/20260325-week7-d-review-normalization/command-status.tsv +++ /dev/null @@ -1,14 +0,0 @@ -step command exit_code status -00 npm ci --ignore-scripts 0 passed -01 ./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-a-cli-parity 0 passed -02 ./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-b-envelope-locks 0 passed -03 ./node_modules/.bin/tsx src/tools/review-bundle.ts --all /tmp/agent-terminal-week7-review.9yyqy2 0 passed -04 ./node_modules/.bin/tsx --eval "playwright screenshot week7-a review page" 0 passed -05 git diff --name-only 0 passed -06 ./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-d-review-normalization 0 passed -07 ./node_modules/.bin/tsx --eval "playwright screenshot week7-d review page" 0 passed -08 git status --short 0 passed -09 ./node_modules/.bin/prettier --write dogfood/20260325-week7-d-review-normalization/ 0 passed -10 ./node_modules/.bin/prettier --check dogfood/20260325-week7-d-review-normalization/ 0 passed -11 ./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-d-review-normalization 0 passed -12 git diff --name-only 0 passed diff --git a/dogfood/20260325-week7-d-review-normalization/commands.sh b/dogfood/20260325-week7-d-review-normalization/commands.sh deleted file mode 100755 index 06767180..00000000 --- a/dogfood/20260325-week7-d-review-normalization/commands.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -bundle_dir='dogfood/20260325-week7-d-review-normalization' -mkdir -p "$bundle_dir/logs" "$bundle_dir/screenshots" - -npm ci --ignore-scripts - -./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-a-cli-parity -./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-b-envelope-locks - -tmp_mirror="$(mktemp -d /tmp/agent-terminal-week7-review.XXXXXX)" -for bundle in \ - dogfood/20260325-week6-a-cli-contract \ - dogfood/20260325-week6-d-review-surface \ - dogfood/20260325-week7-a-cli-parity \ - dogfood/20260325-week7-b-envelope-locks; do - cp -R "$bundle" "$tmp_mirror/$(basename "$bundle")" -done -./node_modules/.bin/tsx src/tools/review-bundle.ts --all "$tmp_mirror" -rm -rf "$tmp_mirror" - -./node_modules/.bin/tsx --eval "(async () => { const { chromium } = await import('playwright'); const { resolve } = await import('node:path'); const browser = await chromium.launch({ executablePath: '/usr/bin/google-chrome', headless: true, args: ['--no-sandbox'] }); const page = await browser.newPage({ viewport: { width: 1440, height: 1100 } }); await page.goto(new URL('file://' + resolve('dogfood/20260325-week7-a-cli-parity/index.html')).toString()); await page.waitForLoadState('networkidle'); await page.screenshot({ path: resolve('dogfood/20260325-week7-d-review-normalization/screenshots/01-week7-a-review-page.png'), fullPage: true }); await browser.close(); })().catch((error) => { console.error(error); process.exit(1); });" - -git diff --name-only -./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-d-review-normalization -./node_modules/.bin/tsx --eval "(async () => { const { chromium } = await import('playwright'); const { resolve } = await import('node:path'); const browser = await chromium.launch({ executablePath: '/usr/bin/google-chrome', headless: true, args: ['--no-sandbox'] }); const page = await browser.newPage({ viewport: { width: 1440, height: 1100 } }); await page.goto(new URL('file://' + resolve('dogfood/20260325-week7-d-review-normalization/index.html')).toString()); await page.waitForLoadState('networkidle'); await page.screenshot({ path: resolve('dogfood/20260325-week7-d-review-normalization/screenshots/02-week7-d-review-page.png'), fullPage: true }); await browser.close(); })().catch((error) => { console.error(error); process.exit(1); });" - -git status --short -./node_modules/.bin/prettier --write dogfood/20260325-week7-d-review-normalization/ -./node_modules/.bin/prettier --check dogfood/20260325-week7-d-review-normalization/ -./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-d-review-normalization -git diff --name-only diff --git a/dogfood/20260325-week7-d-review-normalization/index.html b/dogfood/20260325-week7-d-review-normalization/index.html deleted file mode 100644 index a885b7c2..00000000 --- a/dogfood/20260325-week7-d-review-normalization/index.html +++ /dev/null @@ -1,811 +0,0 @@ - - - - - - Week 7 — Review Normalization Proof review bundle - - - -
-
-

Portable review bundle

-

Week 7 — Review Normalization Proof

-

- Bundle directory: 20260325-week7-d-review-normalization -

-

- Proves review-bundle tool works in single-bundle and batch modes - without modifying existing Week 6 bundles -

-
- -
-

Manifest summary

-
-
-
Bundle
-
20260325-week7-d-review-normalization
-
-
-
Date
-
2026-03-25T19:54:58Z
-
-
-
Lane
-
D
-
-
-
Week
-
7
-
-
-
Manifest artifacts
-
9
-
-
-
Discovered files
-
27
-
-
-
-
-

Screenshot gallery

- -
- -
-

Notes

- -
-

notes.md

-

- 2026-03-25 dogfood — Week 7 bundle D review normalization proof -

-

Bundle metadata

-
    -
  • - Bundle path: - dogfood/20260325-week7-d-review-normalization/ -
  • -
  • - Review helper: - src/tools/review-bundle.ts -
  • -
  • - Package version context: - agent-terminal@0.1.0 from package.json -
  • -
  • - Single-bundle targets: - 20260325-week7-a-cli-parity and - 20260325-week7-b-envelope-locks -
  • -
  • - Batch mirror contents: - 20260325-week6-a-cli-contract, - 20260325-week6-d-review-surface, - 20260325-week7-a-cli-parity, and - 20260325-week7-b-envelope-locks -
  • -
-

Scenario summary

-

- This bundle proves that the review-bundle helper works in both - single-bundle mode and batch --all mode while keeping - the real repository's Week 6 bundles untouched. Single-bundle - runs refreshed the two Week 7 target bundles in place, batch mode - ran only against a temporary mirror under /tmp, and the - safety check confirmed that no real - dogfood/20260325-week6-* path was modified. -

-

Single-bundle proof

-
    -
  • - Step 01: - logs/01-review-single-a.txt captured a successful - single-bundle render for - dogfood/20260325-week7-a-cli-parity/, and - screenshots/01-week7-a-review-page.png is the browser - proof of the generated review page. -
  • -
  • - Step 02: - logs/02-review-single-b.txt captured a successful - single-bundle render for - dogfood/20260325-week7-b-envelope-locks/, creating - dogfood/20260325-week7-b-envelope-locks/index.html in - the real repo as expected. -
  • -
  • - Warnings: - logs/01-review-single-a.stderr.txt and - logs/02-review-single-b.stderr.txt are empty, so - neither single-bundle run emitted warnings. -
  • -
-

Batch-mode proof

-
    -
  • - Mirror strategy: - logs/03-review-batch.txt records the temporary mirror - path /tmp/agent-terminal-week7-review.9yyqy2 plus the - four copied bundles processed there. -
  • -
  • - Result: The --all run generated one - index.html file per mirrored bundle, including the - mirrored Week 6 bundles, without touching the real repository - tree. -
  • -
  • - Warnings: - logs/03-review-batch.stderr.txt contains only the - expected Building ... progress lines and no warnings - or failures. -
  • -
-

Week 6 safety verification

-
    -
  • - logs/06-week6-safety-diff.txt captured - git diff --name-only immediately after the real-repo - review commands. The only tracked change at that checkpoint was - dogfood/20260325-week7-a-cli-parity/index.html. -
  • -
  • - logs/08-git-status-final.txt confirms the final dirty - paths stay inside Week 7: modified - dogfood/20260325-week7-a-cli-parity/index.html, - untracked - dogfood/20260325-week7-b-envelope-locks/index.html, - and the new - dogfood/20260325-week7-d-review-normalization/ - bundle. -
  • -
  • - No dogfood/20260325-week6-* file appeared in either - verification step, so no restore step was needed. -
  • -
-

Review answers

-
    -
  • - Did single-bundle mode succeed for each Week 7 bundle? - Yes. Steps 01 and 02 both exited successfully and wrote the - expected index.html paths into their stdout logs. -
  • -
  • - Did batch mode succeed? Yes. Step 03 rendered - review pages for all four mirrored bundles inside the temporary - mirror. -
  • -
  • - Were any warnings emitted? Not for the Week 7 - single-bundle runs or the batch mirror run. The first self-review - run in logs/04-review-self.stderr.txt emitted - expected missing-artifact warnings because - logs/08-git-status-final.txt, - screenshots/02-week7-d-review-page.png, and - command-status.tsv had not been created yet when that - first render occurred. -
  • -
  • - Were Week 6 files left untouched? Yes. The Week 6 - proof relies on the temp mirror for --all, and the - real-repo diff/status checks never showed a Week 6 path. -
  • -
-

Issues / limitations

-
    -
  • - The requested npx tsx ... entrypoint hit an - environment-specific mise trust check in this child - worktree, so the captured proof used the equivalent local binary - ./node_modules/.bin/tsx after installing - dependencies. -
  • -
  • - The initial self-review pass necessarily ran before every Week 7-D - artifact existed, so its stderr sidecar documents expected - missing-artifact warnings. A later refresh updates the final - index.html after the bundle contents are in place. -
  • -
  • - Batch proof intentionally used only a representative mirror subset - (two Week 6 bundles plus the two Week 7 bundles) because the goal - was to prove normalization and Week 6 safety, not to rewrite the - entire real dogfood/ tree. -
  • -
-
-
-
-

Commands

-
-

commands.sh

-
#!/usr/bin/env bash
-set -euo pipefail
-
-bundle_dir='dogfood/20260325-week7-d-review-normalization'
-mkdir -p "$bundle_dir/logs" "$bundle_dir/screenshots"
-
-npm ci --ignore-scripts
-
-./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-a-cli-parity
-./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-b-envelope-locks
-
-tmp_mirror="$(mktemp -d /tmp/agent-terminal-week7-review.XXXXXX)"
-for bundle in \
-  dogfood/20260325-week6-a-cli-contract \
-  dogfood/20260325-week6-d-review-surface \
-  dogfood/20260325-week7-a-cli-parity \
-  dogfood/20260325-week7-b-envelope-locks; do
-  cp -R "$bundle" "$tmp_mirror/$(basename "$bundle")"
-done
-./node_modules/.bin/tsx src/tools/review-bundle.ts --all "$tmp_mirror"
-rm -rf "$tmp_mirror"
-
-./node_modules/.bin/tsx --eval "(async () => { const { chromium } = await import('playwright'); const { resolve } = await import('node:path'); const browser = await chromium.launch({ executablePath: '/usr/bin/google-chrome', headless: true, args: ['--no-sandbox'] }); const page = await browser.newPage({ viewport: { width: 1440, height: 1100 } }); await page.goto(new URL('file://' + resolve('dogfood/20260325-week7-a-cli-parity/index.html')).toString()); await page.waitForLoadState('networkidle'); await page.screenshot({ path: resolve('dogfood/20260325-week7-d-review-normalization/screenshots/01-week7-a-review-page.png'), fullPage: true }); await browser.close(); })().catch((error) => { console.error(error); process.exit(1); });"
-
-git diff --name-only
-./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-d-review-normalization
-./node_modules/.bin/tsx --eval "(async () => { const { chromium } = await import('playwright'); const { resolve } = await import('node:path'); const browser = await chromium.launch({ executablePath: '/usr/bin/google-chrome', headless: true, args: ['--no-sandbox'] }); const page = await browser.newPage({ viewport: { width: 1440, height: 1100 } }); await page.goto(new URL('file://' + resolve('dogfood/20260325-week7-d-review-normalization/index.html')).toString()); await page.waitForLoadState('networkidle'); await page.screenshot({ path: resolve('dogfood/20260325-week7-d-review-normalization/screenshots/02-week7-d-review-page.png'), fullPage: true }); await browser.close(); })().catch((error) => { console.error(error); process.exit(1); });"
-
-git status --short
-./node_modules/.bin/prettier --write dogfood/20260325-week7-d-review-normalization/
-./node_modules/.bin/prettier --check dogfood/20260325-week7-d-review-normalization/
-./node_modules/.bin/tsx src/tools/review-bundle.ts dogfood/20260325-week7-d-review-normalization
-git diff --name-only
-
-
-
-
-

Command status

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
stepcommandexit_codestatus
00npm ci --ignore-scripts0passed
01 - ./node_modules/.bin/tsx src/tools/review-bundle.ts - dogfood/20260325-week7-a-cli-parity - 0passed
02 - ./node_modules/.bin/tsx src/tools/review-bundle.ts - dogfood/20260325-week7-b-envelope-locks - 0passed
03 - ./node_modules/.bin/tsx src/tools/review-bundle.ts --all - /tmp/agent-terminal-week7-review.9yyqy2 - 0passed
04 - ./node_modules/.bin/tsx --eval "playwright screenshot - week7-a review page" - 0passed
05git diff --name-only0passed
06 - ./node_modules/.bin/tsx src/tools/review-bundle.ts - dogfood/20260325-week7-d-review-normalization - 0passed
07 - ./node_modules/.bin/tsx --eval "playwright screenshot - week7-d review page" - 0passed
08git status --short0passed
09 - ./node_modules/.bin/prettier --write - dogfood/20260325-week7-d-review-normalization/ - 0passed
10 - ./node_modules/.bin/prettier --check - dogfood/20260325-week7-d-review-normalization/ - 0passed
11 - ./node_modules/.bin/tsx src/tools/review-bundle.ts - dogfood/20260325-week7-d-review-normalization - 0passed
12git diff --name-only0passed
-
-
-
-

Artifact inventory

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PathTypeSize
command-status.tsvsupport1.0 KB
commands.shscript2.6 KB
- logs/01-review-single-a.stderr.txt - support45 B
- logs/01-review-single-a.txt - support105 B
- logs/02-review-single-b.stderr.txt - support49 B
- logs/02-review-single-b.txt - support109 B
- logs/03-review-batch.stderr.txt - support318 B
- logs/03-review-batch.txt - support1021 B
- logs/04-review-self.stderr.txt - support292 B
- logs/04-review-self.txt - support115 B
- logs/05-screenshot-week7-a.stderr.txt - support0 B
- logs/05-screenshot-week7-a.txt - support112 B
- logs/06-week6-safety-diff.txt - support47 B
- logs/07-screenshot-week7-d.stderr.txt - support0 B
- logs/07-screenshot-week7-d.txt - support122 B
- logs/08-git-status-final.txt - support154 B
- logs/09-prettier-write.stderr.txt - support0 B
- logs/09-prettier-write.txt - support211 B
- logs/10-prettier-check.stderr.txt - support0 B
- logs/10-prettier-check.txt - support66 B
- logs/11-review-self-refresh.stderr.txt - support55 B
- logs/11-review-self-refresh.txt - support115 B
- logs/12-git-diff-final.txt - support47 B
manifest.jsonsupport1.5 KB
notes.mdnotes4.2 KB
- screenshots/01-week7-a-review-page.png - screenshot2.0 MB
- screenshots/02-week7-d-review-page.png - screenshot2.7 MB
-
-
-
- - diff --git a/dogfood/20260325-week7-d-review-normalization/logs/01-review-single-a.stderr.txt b/dogfood/20260325-week7-d-review-normalization/logs/01-review-single-a.stderr.txt deleted file mode 100644 index f6be8040..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/01-review-single-a.stderr.txt +++ /dev/null @@ -1 +0,0 @@ -Building dogfood/20260325-week7-a-cli-parity diff --git a/dogfood/20260325-week7-d-review-normalization/logs/01-review-single-a.txt b/dogfood/20260325-week7-d-review-normalization/logs/01-review-single-a.txt deleted file mode 100644 index e789d750..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/01-review-single-a.txt +++ /dev/null @@ -1 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_c0a636b670/dogfood/20260325-week7-a-cli-parity/index.html diff --git a/dogfood/20260325-week7-d-review-normalization/logs/02-review-single-b.stderr.txt b/dogfood/20260325-week7-d-review-normalization/logs/02-review-single-b.stderr.txt deleted file mode 100644 index 91e912aa..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/02-review-single-b.stderr.txt +++ /dev/null @@ -1 +0,0 @@ -Building dogfood/20260325-week7-b-envelope-locks diff --git a/dogfood/20260325-week7-d-review-normalization/logs/02-review-single-b.txt b/dogfood/20260325-week7-d-review-normalization/logs/02-review-single-b.txt deleted file mode 100644 index a8491cec..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/02-review-single-b.txt +++ /dev/null @@ -1 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_c0a636b670/dogfood/20260325-week7-b-envelope-locks/index.html diff --git a/dogfood/20260325-week7-d-review-normalization/logs/03-review-batch.stderr.txt b/dogfood/20260325-week7-d-review-normalization/logs/03-review-batch.stderr.txt deleted file mode 100644 index 76c856cc..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/03-review-batch.stderr.txt +++ /dev/null @@ -1,4 +0,0 @@ -Building /tmp/agent-terminal-week7-review.9yyqy2/20260325-week6-a-cli-contract -Building /tmp/agent-terminal-week7-review.9yyqy2/20260325-week6-d-review-surface -Building /tmp/agent-terminal-week7-review.9yyqy2/20260325-week7-a-cli-parity -Building /tmp/agent-terminal-week7-review.9yyqy2/20260325-week7-b-envelope-locks diff --git a/dogfood/20260325-week7-d-review-normalization/logs/03-review-batch.txt b/dogfood/20260325-week7-d-review-normalization/logs/03-review-batch.txt deleted file mode 100644 index 75e69023..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/03-review-batch.txt +++ /dev/null @@ -1,18 +0,0 @@ -temporary mirror: /tmp/agent-terminal-week7-review.9yyqy2 -copied bundles: - dogfood/20260325-week6-a-cli-contract - dogfood/20260325-week6-d-review-surface - dogfood/20260325-week7-a-cli-parity - dogfood/20260325-week7-b-envelope-locks - -$ ./node_modules/.bin/tsx src/tools/review-bundle.ts --all /tmp/agent-terminal-week7-review.9yyqy2 -/tmp/agent-terminal-week7-review.9yyqy2/20260325-week6-a-cli-contract/index.html -/tmp/agent-terminal-week7-review.9yyqy2/20260325-week6-d-review-surface/index.html -/tmp/agent-terminal-week7-review.9yyqy2/20260325-week7-a-cli-parity/index.html -/tmp/agent-terminal-week7-review.9yyqy2/20260325-week7-b-envelope-locks/index.html - -mirror index files after --all: -/tmp/agent-terminal-week7-review.9yyqy2/20260325-week6-a-cli-contract/index.html -/tmp/agent-terminal-week7-review.9yyqy2/20260325-week6-d-review-surface/index.html -/tmp/agent-terminal-week7-review.9yyqy2/20260325-week7-a-cli-parity/index.html -/tmp/agent-terminal-week7-review.9yyqy2/20260325-week7-b-envelope-locks/index.html diff --git a/dogfood/20260325-week7-d-review-normalization/logs/04-review-self.stderr.txt b/dogfood/20260325-week7-d-review-normalization/logs/04-review-self.stderr.txt deleted file mode 100644 index 0b097b88..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/04-review-self.stderr.txt +++ /dev/null @@ -1,4 +0,0 @@ -Building dogfood/20260325-week7-d-review-normalization -warning: Manifest artifact was not found on disk: logs/08-git-status-final.txt -warning: Manifest artifact was not found on disk: screenshots/02-week7-d-review-page.png -warning: Manifest artifact was not found on disk: command-status.tsv diff --git a/dogfood/20260325-week7-d-review-normalization/logs/04-review-self.txt b/dogfood/20260325-week7-d-review-normalization/logs/04-review-self.txt deleted file mode 100644 index c145547f..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/04-review-self.txt +++ /dev/null @@ -1 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_c0a636b670/dogfood/20260325-week7-d-review-normalization/index.html diff --git a/dogfood/20260325-week7-d-review-normalization/logs/05-screenshot-week7-a.stderr.txt b/dogfood/20260325-week7-d-review-normalization/logs/05-screenshot-week7-a.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-d-review-normalization/logs/05-screenshot-week7-a.txt b/dogfood/20260325-week7-d-review-normalization/logs/05-screenshot-week7-a.txt deleted file mode 100644 index 08103498..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/05-screenshot-week7-a.txt +++ /dev/null @@ -1 +0,0 @@ -file:///home/coder/.mux/src/agent-terminal/agent_exec_c0a636b670/dogfood/20260325-week7-a-cli-parity/index.html diff --git a/dogfood/20260325-week7-d-review-normalization/logs/06-week6-safety-diff.txt b/dogfood/20260325-week7-d-review-normalization/logs/06-week6-safety-diff.txt deleted file mode 100644 index ad97ed3b..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/06-week6-safety-diff.txt +++ /dev/null @@ -1 +0,0 @@ -dogfood/20260325-week7-a-cli-parity/index.html diff --git a/dogfood/20260325-week7-d-review-normalization/logs/07-screenshot-week7-d.stderr.txt b/dogfood/20260325-week7-d-review-normalization/logs/07-screenshot-week7-d.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-d-review-normalization/logs/07-screenshot-week7-d.txt b/dogfood/20260325-week7-d-review-normalization/logs/07-screenshot-week7-d.txt deleted file mode 100644 index cbb71b01..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/07-screenshot-week7-d.txt +++ /dev/null @@ -1 +0,0 @@ -file:///home/coder/.mux/src/agent-terminal/agent_exec_c0a636b670/dogfood/20260325-week7-d-review-normalization/index.html diff --git a/dogfood/20260325-week7-d-review-normalization/logs/08-git-status-final.txt b/dogfood/20260325-week7-d-review-normalization/logs/08-git-status-final.txt deleted file mode 100644 index 9a6adb7b..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/08-git-status-final.txt +++ /dev/null @@ -1,3 +0,0 @@ - M dogfood/20260325-week7-a-cli-parity/index.html -?? dogfood/20260325-week7-b-envelope-locks/index.html -?? dogfood/20260325-week7-d-review-normalization/ diff --git a/dogfood/20260325-week7-d-review-normalization/logs/09-prettier-write.stderr.txt b/dogfood/20260325-week7-d-review-normalization/logs/09-prettier-write.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-d-review-normalization/logs/09-prettier-write.txt b/dogfood/20260325-week7-d-review-normalization/logs/09-prettier-write.txt deleted file mode 100644 index 16fb151e..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/09-prettier-write.txt +++ /dev/null @@ -1,3 +0,0 @@ -dogfood/20260325-week7-d-review-normalization/index.html 75ms -dogfood/20260325-week7-d-review-normalization/manifest.json 23ms (unchanged) -dogfood/20260325-week7-d-review-normalization/notes.md 32ms (unchanged) diff --git a/dogfood/20260325-week7-d-review-normalization/logs/10-prettier-check.stderr.txt b/dogfood/20260325-week7-d-review-normalization/logs/10-prettier-check.stderr.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/dogfood/20260325-week7-d-review-normalization/logs/10-prettier-check.txt b/dogfood/20260325-week7-d-review-normalization/logs/10-prettier-check.txt deleted file mode 100644 index 4aa0d16e..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/10-prettier-check.txt +++ /dev/null @@ -1,2 +0,0 @@ -Checking formatting... -All matched files use Prettier code style! diff --git a/dogfood/20260325-week7-d-review-normalization/logs/11-review-self-refresh.stderr.txt b/dogfood/20260325-week7-d-review-normalization/logs/11-review-self-refresh.stderr.txt deleted file mode 100644 index 6f62fd53..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/11-review-self-refresh.stderr.txt +++ /dev/null @@ -1 +0,0 @@ -Building dogfood/20260325-week7-d-review-normalization diff --git a/dogfood/20260325-week7-d-review-normalization/logs/11-review-self-refresh.txt b/dogfood/20260325-week7-d-review-normalization/logs/11-review-self-refresh.txt deleted file mode 100644 index c145547f..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/11-review-self-refresh.txt +++ /dev/null @@ -1 +0,0 @@ -/home/coder/.mux/src/agent-terminal/agent_exec_c0a636b670/dogfood/20260325-week7-d-review-normalization/index.html diff --git a/dogfood/20260325-week7-d-review-normalization/logs/12-git-diff-final.txt b/dogfood/20260325-week7-d-review-normalization/logs/12-git-diff-final.txt deleted file mode 100644 index ad97ed3b..00000000 --- a/dogfood/20260325-week7-d-review-normalization/logs/12-git-diff-final.txt +++ /dev/null @@ -1 +0,0 @@ -dogfood/20260325-week7-a-cli-parity/index.html diff --git a/dogfood/20260325-week7-d-review-normalization/manifest.json b/dogfood/20260325-week7-d-review-normalization/manifest.json deleted file mode 100644 index 5b4e258c..00000000 --- a/dogfood/20260325-week7-d-review-normalization/manifest.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "bundle": "20260325-week7-d-review-normalization", - "title": "Week 7 — Review Normalization Proof", - "description": "Proves review-bundle tool works in single-bundle and batch modes without modifying existing Week 6 bundles", - "createdAt": "2026-03-25T19:54:58Z", - "week": 7, - "lane": "D", - "artifacts": [ - { - "path": "logs/01-review-single-a.txt", - "description": "Single-bundle review generation for Week 7-A" - }, - { - "path": "logs/02-review-single-b.txt", - "description": "Single-bundle review generation for Week 7-B" - }, - { - "path": "logs/03-review-batch.txt", - "description": "Batch review generation against a temporary mirror" - }, - { - "path": "logs/04-review-self.txt", - "description": "Self-review generation for the Week 7-D normalization bundle" - }, - { - "path": "logs/06-week6-safety-diff.txt", - "description": "git diff --name-only proof that no Week 6 bundle files were modified in the real repo" - }, - { - "path": "logs/08-git-status-final.txt", - "description": "Final git status showing only Week 7 bundle paths are dirty" - }, - { - "path": "screenshots/01-week7-a-review-page.png", - "description": "Browser screenshot of the generated Week 7-A review page" - }, - { - "path": "screenshots/02-week7-d-review-page.png", - "description": "Browser screenshot of the generated Week 7-D self-review page" - }, - { - "path": "command-status.tsv", - "description": "Step-by-step exit-code ledger for the normalization proof" - } - ] -} diff --git a/dogfood/20260325-week7-d-review-normalization/notes.md b/dogfood/20260325-week7-d-review-normalization/notes.md deleted file mode 100644 index 6e7dccaa..00000000 --- a/dogfood/20260325-week7-d-review-normalization/notes.md +++ /dev/null @@ -1,48 +0,0 @@ -# 2026-03-25 dogfood — Week 7 bundle D review normalization proof - -## Bundle metadata - -- **Bundle path:** `dogfood/20260325-week7-d-review-normalization/` -- **Review helper:** `src/tools/review-bundle.ts` -- **Package version context:** `agent-terminal@0.1.0` from `package.json` -- **Single-bundle targets:** `20260325-week7-a-cli-parity` and `20260325-week7-b-envelope-locks` -- **Batch mirror contents:** `20260325-week6-a-cli-contract`, `20260325-week6-d-review-surface`, `20260325-week7-a-cli-parity`, and `20260325-week7-b-envelope-locks` - -## Scenario summary - -This bundle proves that the review-bundle helper works in both single-bundle mode and batch `--all` mode while keeping the real repository's Week 6 bundles untouched. Single-bundle runs refreshed the two Week 7 target bundles in place, batch mode ran only against a temporary mirror under `/tmp`, and the safety check confirmed that no real `dogfood/20260325-week6-*` path was modified. - -## Single-bundle proof - -- **Step 01:** `logs/01-review-single-a.txt` captured a successful single-bundle render for `dogfood/20260325-week7-a-cli-parity/`, and `screenshots/01-week7-a-review-page.png` is the browser proof of the generated review page. -- **Step 02:** `logs/02-review-single-b.txt` captured a successful single-bundle render for `dogfood/20260325-week7-b-envelope-locks/`, creating `dogfood/20260325-week7-b-envelope-locks/index.html` in the real repo as expected. -- **Warnings:** `logs/01-review-single-a.stderr.txt` and `logs/02-review-single-b.stderr.txt` are empty, so neither single-bundle run emitted warnings. - -## Batch-mode proof - -- **Mirror strategy:** `logs/03-review-batch.txt` records the temporary mirror path `/tmp/agent-terminal-week7-review.9yyqy2` plus the four copied bundles processed there. -- **Result:** The `--all` run generated one `index.html` file per mirrored bundle, including the mirrored Week 6 bundles, without touching the real repository tree. -- **Warnings:** `logs/03-review-batch.stderr.txt` contains only the expected `Building ...` progress lines and no warnings or failures. - -## Week 6 safety verification - -- `logs/06-week6-safety-diff.txt` captured `git diff --name-only` immediately after the real-repo review commands. The only tracked change at that checkpoint was `dogfood/20260325-week7-a-cli-parity/index.html`. -- `logs/08-git-status-final.txt` confirms the final dirty paths stay inside Week 7: modified `dogfood/20260325-week7-a-cli-parity/index.html`, untracked `dogfood/20260325-week7-b-envelope-locks/index.html`, and the new `dogfood/20260325-week7-d-review-normalization/` bundle. -- No `dogfood/20260325-week6-*` file appeared in either verification step, so no restore step was needed. - -## Review answers - -- **Did single-bundle mode succeed for each Week 7 bundle?** Yes. Steps 01 and 02 both exited successfully and wrote the expected `index.html` paths into their stdout logs. -- **Did batch mode succeed?** Yes. Step 03 rendered review pages for all four mirrored bundles inside the temporary mirror. -- **Were any warnings emitted?** Not for the Week 7 single-bundle runs or the batch mirror run. The first self-review run in `logs/04-review-self.stderr.txt` emitted expected missing-artifact warnings because `logs/08-git-status-final.txt`, `screenshots/02-week7-d-review-page.png`, and `command-status.tsv` had not been created yet when that first render occurred. -- **Were Week 6 files left untouched?** Yes. The Week 6 proof relies on the temp mirror for `--all`, and the real-repo diff/status checks never showed a Week 6 path. - -## Issues / limitations - -- The requested `npx tsx ...` entrypoint hit an environment-specific `mise` trust check in this child worktree, so the captured proof used the equivalent local binary `./node_modules/.bin/tsx` after installing dependencies. -- The initial self-review pass necessarily ran before every Week 7-D artifact existed, so its stderr sidecar documents expected missing-artifact warnings. A later refresh updates the final `index.html` after the bundle contents are in place. -- Batch proof intentionally used only a representative mirror subset (two Week 6 bundles plus the two Week 7 bundles) because the goal was to prove normalization and Week 6 safety, not to rewrite the entire real `dogfood/` tree. - -## Browser Verification (Week 7 remediation) - -Review page verified via `agent-browser` — see `screenshots/03-review-page-verified.png`. diff --git a/dogfood/20260325-week7-d-review-normalization/screenshots/01-week7-a-review-page.png b/dogfood/20260325-week7-d-review-normalization/screenshots/01-week7-a-review-page.png deleted file mode 100644 index 74c03612..00000000 Binary files a/dogfood/20260325-week7-d-review-normalization/screenshots/01-week7-a-review-page.png and /dev/null differ diff --git a/dogfood/20260325-week7-d-review-normalization/screenshots/02-week7-d-review-page.png b/dogfood/20260325-week7-d-review-normalization/screenshots/02-week7-d-review-page.png deleted file mode 100644 index 6909acf3..00000000 Binary files a/dogfood/20260325-week7-d-review-normalization/screenshots/02-week7-d-review-page.png and /dev/null differ diff --git a/dogfood/20260325-week7-d-review-normalization/screenshots/03-review-page-verified.png b/dogfood/20260325-week7-d-review-normalization/screenshots/03-review-page-verified.png deleted file mode 100644 index 35ce521e..00000000 Binary files a/dogfood/20260325-week7-d-review-normalization/screenshots/03-review-page-verified.png and /dev/null differ diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/create.json b/dogfood/20260326-lazyvim-nerd-font-check-2/create.json deleted file mode 100644 index 9728e784..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/create.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-26T00:22:36.918Z", - "result": { - "sessionId": "01KMKRB2D1DN8PHRGN992DD06C", - "createdAt": "2026-03-26T00:22:36.195Z", - "cols": 120, - "rows": 40, - "shell": "/bin/bash" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/lazyvim-a-reference-dark.png b/dogfood/20260326-lazyvim-nerd-font-check-2/lazyvim-a-reference-dark.png deleted file mode 100644 index 42261328..00000000 Binary files a/dogfood/20260326-lazyvim-nerd-font-check-2/lazyvim-a-reference-dark.png and /dev/null differ diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/lazyvim-space-reference-dark.png b/dogfood/20260326-lazyvim-nerd-font-check-2/lazyvim-space-reference-dark.png deleted file mode 100644 index e05229ad..00000000 Binary files a/dogfood/20260326-lazyvim-nerd-font-check-2/lazyvim-space-reference-dark.png and /dev/null differ diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/screenshot-a.json b/dogfood/20260326-lazyvim-nerd-font-check-2/screenshot-a.json deleted file mode 100644 index 8d67fff4..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/screenshot-a.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-26T00:23:00.904Z", - "result": { - "sessionId": "01KMKRB2D1DN8PHRGN992DD06C", - "capturedAtSeq": 32, - "profileName": "reference-dark", - "cols": 120, - "rows": 40, - "artifactPath": "/tmp/agent-terminal-lazyvim-home-2/sessions/01KMKRB2D1DN8PHRGN992DD06C/artifacts/screenshot-32-reference-dark.png", - "pngSizeBytes": 43638, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 960, - "pixelHeight": 640, - "sha256": "bdb9113a11fe0af5ce1978a674b7e6ad6fbd31f1515ff6104b69baf0bf428849", - "renderProfileHash": "8ffed6af301ec7c0e6b69599c3be0d1d12096f9fcdfc59d0bbb4cc474d64c53d" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/screenshot-space.json b/dogfood/20260326-lazyvim-nerd-font-check-2/screenshot-space.json deleted file mode 100644 index 16b08956..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/screenshot-space.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-26T00:22:54.066Z", - "result": { - "sessionId": "01KMKRB2D1DN8PHRGN992DD06C", - "capturedAtSeq": 29, - "profileName": "reference-dark", - "cols": 120, - "rows": 40, - "artifactPath": "/tmp/agent-terminal-lazyvim-home-2/sessions/01KMKRB2D1DN8PHRGN992DD06C/artifacts/screenshot-29-reference-dark.png", - "pngSizeBytes": 84582, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 960, - "pixelHeight": 640, - "sha256": "8dbb5adf887071e4b13d1d6062733a9935b746d5820fd7e9f2ec7649bafd2198", - "renderProfileHash": "8ffed6af301ec7c0e6b69599c3be0d1d12096f9fcdfc59d0bbb4cc474d64c53d" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/send-a.json b/dogfood/20260326-lazyvim-nerd-font-check-2/send-a.json deleted file mode 100644 index 3edc585c..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/send-a.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-26T00:22:55.098Z", - "result": { - "accepted": ["a"], - "bytesWritten": 1, - "seq": 30 - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/send-space.json b/dogfood/20260326-lazyvim-nerd-font-check-2/send-space.json deleted file mode 100644 index 11b4b7c2..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/send-space.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-26T00:22:48.139Z", - "result": { - "accepted": ["Space"], - "bytesWritten": 1, - "seq": 26 - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/snapshot-a.json b/dogfood/20260326-lazyvim-nerd-font-check-2/snapshot-a.json deleted file mode 100644 index 776f0ffc..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/snapshot-a.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-26T00:22:59.686Z", - "result": { - "format": "text", - "sessionId": "01KMKRB2D1DN8PHRGN992DD06C", - "capturedAtSeq": 32, - "cols": 120, - "rows": 40, - "cursorRow": 14, - "cursorCol": 33, - "text": "\n\n\n\n\n ██╗ █████╗ ███████╗██╗ ██╗██╗ ██╗██╗███╗ ███╗ Z\n ██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██║ ██║██║████╗ ████║ Z\n ██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║██║██╔████╔██║ z\n ██║ ██╔══██║ ███╔╝ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╔╝██║ z\n ███████╗██║ ██║███████╗ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║\n ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝\n\n\n\n  Find File f\n\n  New File n\n\n  Projects p\n\n  Find Text g\n\n  Recent Files r\n\n  Config c\n\n  Restore Session s\n\n  Lazy Extras x\n ╭ 󱁐 » +ai ──────────────────╮\n 󰒲 Lazy │ a ➜  Accept diff │\n │ b ➜ 󰈔 Add current buffer │\n  Quit │ c ➜  Toggle Claude │\n │ C ➜  Continue Claude │\n ⚡ Neovim loaded 4/33 plugins in 32.69ms │ d ➜  Deny diff │\n │ f ➜  Focus Claude │\n │ r ➜  Resume Claude │\n │ 󱊷 close 󰁮 back │\n ╰────────────────────────────╯\n" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/snapshot-space.json b/dogfood/20260326-lazyvim-nerd-font-check-2/snapshot-space.json deleted file mode 100644 index 9ca94825..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/snapshot-space.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-26T00:22:52.799Z", - "result": { - "format": "text", - "sessionId": "01KMKRB2D1DN8PHRGN992DD06C", - "capturedAtSeq": 29, - "cols": 120, - "rows": 40, - "cursorRow": 14, - "cursorCol": 33, - "text": "\n\n\n\n\n ██╗ █████╗ ███████╗██╗ ██╗██╗ ██╗██╗███╗ ███╗ Z\n ██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██║ ██║██║████╗ ████║ Z\n ██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║██║██╔████╔██║ z\n ██║ ██╔══██║ ███╔╝ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╭ 󱁐 ──────────────────────────────╮\n ███████╗██║ ██║███████╗ ██║ ╚████╔╝ ██║██║ ╚═│ e ➜ 󱥰 Explorer Snacks (root dir) │\n ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ │ E ➜ 󱥰 Explorer Snacks (cwd) │\n │ K ➜ Keywordprg │\n │ l ➜ 󰒲 Lazy │\n │ L ➜ 󰒲 LazyVim Changelog │\n  Find File │ n ➜ 󱥰 Notification History │\n │ S ➜ 󱥰 Select Scratch Buffer │\n  New File │ , ➜ 󱥰 Buffers │\n │ - ➜  Split Window Below │\n  Projects │ . ➜ 󱥰 Toggle Scratch Buffer │\n │ / ➜ 󱥰 Grep (Root Dir) │\n  Find Text │ : ➜ 󱥰 Command History │\n │ ? ➜ 󰈔 Buffer Keymaps (which-key) │\n  Recent Files │ ` ➜ 󰈔 Switch to Other Buffer │\n │ | ➜  Split Window Right │\n  Config │ 󱁐 ➜ 󱥰 Find Files (Root Dir) │\n │ a ➜  +ai │\n  Restore Session │ b ➜ 󰈔 +buffer │\n │ c ➜  +code │\n  Lazy Extras │ d ➜ 󰃤 +debug │\n │ f ➜  +file/find │\n 󰒲 Lazy │ g ➜ 󰊢 +git │\n │ q ➜  +quit/session │\n  Quit │ s ➜  +search │\n │ u ➜ 󰙵 +ui │\n ⚡ Neovim loaded 4/33 plugins in 32.69ms │ w ➜  +windows │\n │ x ➜ 󱖫 +diagnostics/quickfix │\n │ 󰌒 ➜ 󰓩 +tabs │\n │ 󱊷 close 󰁮 back │\n ╰──────────────────────────────────╯\n" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/wait-a.json b/dogfood/20260326-lazyvim-nerd-font-check-2/wait-a.json deleted file mode 100644 index 9e165f90..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/wait-a.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-26T00:22:58.534Z", - "result": { - "matched": true, - "timedOut": false, - "cursorRow": 14, - "cursorCol": 33, - "capturedAtSeq": 32 - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/wait-dashboard.json b/dogfood/20260326-lazyvim-nerd-font-check-2/wait-dashboard.json deleted file mode 100644 index 4b1d1f85..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/wait-dashboard.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-26T00:22:46.978Z", - "result": { - "matched": true, - "timedOut": false, - "cursorRow": 14, - "cursorCol": 33, - "capturedAtSeq": 25 - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check-2/wait-space.json b/dogfood/20260326-lazyvim-nerd-font-check-2/wait-space.json deleted file mode 100644 index a303267e..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check-2/wait-space.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-26T00:22:51.678Z", - "result": { - "matched": true, - "timedOut": false, - "cursorRow": 14, - "cursorCol": 33, - "capturedAtSeq": 29 - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/create.json b/dogfood/20260326-lazyvim-nerd-font-check/create.json deleted file mode 100644 index e3328724..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/create.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-26T00:21:38.428Z", - "result": { - "sessionId": "01KMKR9996ZV74MZ8ZAZ9A9H1W", - "createdAt": "2026-03-26T00:21:37.705Z", - "cols": 120, - "rows": 40, - "shell": "/bin/bash" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/destroy.json b/dogfood/20260326-lazyvim-nerd-font-check/destroy.json deleted file mode 100644 index 5b4d5257..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-26T00:22:03.133Z", - "result": { - "sessionId": "01KMKR9996ZV74MZ8ZAZ9A9H1W", - "destroyed": true - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/lazyvim-dashboard-reference-dark.png b/dogfood/20260326-lazyvim-nerd-font-check/lazyvim-dashboard-reference-dark.png deleted file mode 100644 index dc51656c..00000000 Binary files a/dogfood/20260326-lazyvim-nerd-font-check/lazyvim-dashboard-reference-dark.png and /dev/null differ diff --git a/dogfood/20260326-lazyvim-nerd-font-check/lazyvim-leader-a-reference-dark.png b/dogfood/20260326-lazyvim-nerd-font-check/lazyvim-leader-a-reference-dark.png deleted file mode 100644 index dc51656c..00000000 Binary files a/dogfood/20260326-lazyvim-nerd-font-check/lazyvim-leader-a-reference-dark.png and /dev/null differ diff --git a/dogfood/20260326-lazyvim-nerd-font-check/screenshot-dashboard.json b/dogfood/20260326-lazyvim-nerd-font-check/screenshot-dashboard.json deleted file mode 100644 index 39ffdd9d..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/screenshot-dashboard.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-26T00:21:51.375Z", - "result": { - "sessionId": "01KMKR9996ZV74MZ8ZAZ9A9H1W", - "capturedAtSeq": 26, - "profileName": "reference-dark", - "cols": 120, - "rows": 40, - "artifactPath": "/tmp/agent-terminal-lazyvim-home/sessions/01KMKR9996ZV74MZ8ZAZ9A9H1W/artifacts/screenshot-26-reference-dark.png", - "pngSizeBytes": 27279, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 960, - "pixelHeight": 640, - "sha256": "4c95a45b58d394b3e36aaa73679d453c729ded977274952e447df3710c879626", - "renderProfileHash": "8ffed6af301ec7c0e6b69599c3be0d1d12096f9fcdfc59d0bbb4cc474d64c53d" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/screenshot-leader-a.json b/dogfood/20260326-lazyvim-nerd-font-check/screenshot-leader-a.json deleted file mode 100644 index 6d348b89..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/screenshot-leader-a.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-26T00:21:58.763Z", - "result": { - "sessionId": "01KMKR9996ZV74MZ8ZAZ9A9H1W", - "capturedAtSeq": 27, - "profileName": "reference-dark", - "cols": 120, - "rows": 40, - "artifactPath": "/tmp/agent-terminal-lazyvim-home/sessions/01KMKR9996ZV74MZ8ZAZ9A9H1W/artifacts/screenshot-27-reference-dark.png", - "pngSizeBytes": 27279, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 960, - "pixelHeight": 640, - "sha256": "4c95a45b58d394b3e36aaa73679d453c729ded977274952e447df3710c879626", - "renderProfileHash": "8ffed6af301ec7c0e6b69599c3be0d1d12096f9fcdfc59d0bbb4cc474d64c53d" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/send-keys-enter.json b/dogfood/20260326-lazyvim-nerd-font-check/send-keys-enter.json deleted file mode 100644 index e2e7198f..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/send-keys-enter.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-26T00:22:00.881Z", - "result": { - "accepted": ["Enter"], - "bytesWritten": 1, - "seq": 34 - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/send-keys-leader-a.json b/dogfood/20260326-lazyvim-nerd-font-check/send-keys-leader-a.json deleted file mode 100644 index e9ca7d7c..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/send-keys-leader-a.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "ok": true, - "command": "send-keys", - "timestamp": "2026-03-26T00:21:52.501Z", - "result": { - "accepted": ["Space", "a"], - "bytesWritten": 2, - "seq": 27 - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/session-id.txt b/dogfood/20260326-lazyvim-nerd-font-check/session-id.txt deleted file mode 100644 index a7198e3c..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/session-id.txt +++ /dev/null @@ -1 +0,0 @@ -01KMKR9996ZV74MZ8ZAZ9A9H1W diff --git a/dogfood/20260326-lazyvim-nerd-font-check/snapshot-dashboard.json b/dogfood/20260326-lazyvim-nerd-font-check/snapshot-dashboard.json deleted file mode 100644 index 42514a81..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/snapshot-dashboard.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-26T00:21:50.113Z", - "result": { - "format": "text", - "sessionId": "01KMKR9996ZV74MZ8ZAZ9A9H1W", - "capturedAtSeq": 26, - "cols": 120, - "rows": 40, - "cursorRow": 14, - "cursorCol": 33, - "text": "\n\n\n\n\n ██╗ █████╗ ███████╗██╗ ██╗██╗ ██╗██╗███╗ ███╗ Z\n ██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██║ ██║██║████╗ ████║ Z\n ██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║██║██╔████╔██║ z\n ██║ ██╔══██║ ███╔╝ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╔╝██║ z\n ███████╗██║ ██║███████╗ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║\n ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝\n\n\n\n  Find File f\n\n  New File n\n\n  Projects p\n\n  Find Text g\n\n  Recent Files r\n\n  Config c\n\n  Restore Session s\n\n  Lazy Extras x\n\n 󰒲 Lazy l\n\n  Quit q\n\n ⚡ Neovim loaded 4/33 plugins in 30.98ms\n\n\n\n\n" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/snapshot-leader-a.json b/dogfood/20260326-lazyvim-nerd-font-check/snapshot-leader-a.json deleted file mode 100644 index 1994e7aa..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/snapshot-leader-a.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-26T00:21:57.480Z", - "result": { - "format": "text", - "sessionId": "01KMKR9996ZV74MZ8ZAZ9A9H1W", - "capturedAtSeq": 27, - "cols": 120, - "rows": 40, - "cursorRow": 14, - "cursorCol": 33, - "text": "\n\n\n\n\n ██╗ █████╗ ███████╗██╗ ██╗██╗ ██╗██╗███╗ ███╗ Z\n ██║ ██╔══██╗╚══███╔╝╚██╗ ██╔╝██║ ██║██║████╗ ████║ Z\n ██║ ███████║ ███╔╝ ╚████╔╝ ██║ ██║██║██╔████╔██║ z\n ██║ ██╔══██║ ███╔╝ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╔╝██║ z\n ███████╗██║ ██║███████╗ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║\n ╚══════╝╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝\n\n\n\n  Find File f\n\n  New File n\n\n  Projects p\n\n  Find Text g\n\n  Recent Files r\n\n  Config c\n\n  Restore Session s\n\n  Lazy Extras x\n\n 󰒲 Lazy l\n\n  Quit q\n\n ⚡ Neovim loaded 4/33 plugins in 30.98ms\n\n\n\n\n" - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/type-quit.json b/dogfood/20260326-lazyvim-nerd-font-check/type-quit.json deleted file mode 100644 index 63b5d24d..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/type-quit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "ok": true, - "command": "type", - "timestamp": "2026-03-26T00:21:59.880Z", - "result": {} -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/wait-dashboard.json b/dogfood/20260326-lazyvim-nerd-font-check/wait-dashboard.json deleted file mode 100644 index 3e6244b6..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/wait-dashboard.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-26T00:21:49.004Z", - "result": { - "matched": true, - "timedOut": false, - "cursorRow": 14, - "cursorCol": 33, - "capturedAtSeq": 26 - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/wait-exit.json b/dogfood/20260326-lazyvim-nerd-font-check/wait-exit.json deleted file mode 100644 index f5690e7d..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/wait-exit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-26T00:22:02.075Z", - "result": { - "timedOut": false, - "exitCode": 0 - } -} diff --git a/dogfood/20260326-lazyvim-nerd-font-check/wait-leader-a.json b/dogfood/20260326-lazyvim-nerd-font-check/wait-leader-a.json deleted file mode 100644 index f44e8983..00000000 --- a/dogfood/20260326-lazyvim-nerd-font-check/wait-leader-a.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-26T00:21:56.450Z", - "result": { - "matched": true, - "timedOut": false, - "cursorRow": 14, - "cursorCol": 33, - "capturedAtSeq": 27 - } -} diff --git a/dogfood/20260326-nerd-font-fallback/create.json b/dogfood/20260326-nerd-font-fallback/create.json deleted file mode 100644 index e0535a0a..00000000 --- a/dogfood/20260326-nerd-font-fallback/create.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "ok": true, - "command": "create", - "timestamp": "2026-03-26T00:17:56.657Z", - "result": { - "sessionId": "01KMKR2GPS70FX8B8BTDGSZHJD", - "createdAt": "2026-03-26T00:17:55.932Z", - "cols": 80, - "rows": 24, - "shell": "/bin/bash" - } -} diff --git a/dogfood/20260326-nerd-font-fallback/destroy.json b/dogfood/20260326-nerd-font-fallback/destroy.json deleted file mode 100644 index 3eb3edd6..00000000 --- a/dogfood/20260326-nerd-font-fallback/destroy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "destroy", - "timestamp": "2026-03-26T00:18:13.724Z", - "result": { - "sessionId": "01KMKR2GPS70FX8B8BTDGSZHJD", - "destroyed": true - } -} diff --git a/dogfood/20260326-nerd-font-fallback/export-asciicast.json b/dogfood/20260326-nerd-font-fallback/export-asciicast.json deleted file mode 100644 index c845eebe..00000000 --- a/dogfood/20260326-nerd-font-fallback/export-asciicast.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-26T00:18:11.524Z", - "result": { - "sessionId": "01KMKR2GPS70FX8B8BTDGSZHJD", - "format": "asciicast", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent-terminal-v12b-1/dogfood/20260326-nerd-font-fallback/unicode-grid.cast", - "bytes": 799, - "sha256": "8b49f61b2f316d301f824829000a844c02b6a8ad3639ecc2a920ca411b9a5ec1", - "capturedAtSeq": 1, - "durationMs": 1216, - "metadata": { - "width": 80, - "height": 24, - "title": "01KMKR2GPS70FX8B8BTDGSZHJD", - "timestamp": 1774484276, - "outputEventCount": 1, - "resizeEventCount": 0, - "markerCount": 0 - } - } -} diff --git a/dogfood/20260326-nerd-font-fallback/export-webm.json b/dogfood/20260326-nerd-font-fallback/export-webm.json deleted file mode 100644 index 7c5ba3be..00000000 --- a/dogfood/20260326-nerd-font-fallback/export-webm.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "ok": true, - "command": "record export", - "timestamp": "2026-03-26T00:18:10.433Z", - "result": { - "sessionId": "01KMKR2GPS70FX8B8BTDGSZHJD", - "format": "webm", - "artifactPath": "/home/coder/.mux/src/agent-terminal/agent-terminal-v12b-1/dogfood/20260326-nerd-font-fallback/unicode-grid-reference-dark.webm", - "bytes": 34623, - "sha256": "62a0c16411970e23f075f4c5aceceb86c040ed04e0d25e9eee029e694c90ea71", - "capturedAtSeq": 1, - "durationMs": 1216, - "metadata": { - "width": 80, - "height": 24, - "profileName": "reference-dark", - "renderProfileHash": "8ffed6af301ec7c0e6b69599c3be0d1d12096f9fcdfc59d0bbb4cc474d64c53d", - "timingMode": "recorded", - "outputEventCount": 1, - "resizeEventCount": 0 - } - } -} diff --git a/dogfood/20260326-nerd-font-fallback/screenshot.json b/dogfood/20260326-nerd-font-fallback/screenshot.json deleted file mode 100644 index 25e0dde8..00000000 --- a/dogfood/20260326-nerd-font-fallback/screenshot.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "ok": true, - "command": "screenshot", - "timestamp": "2026-03-26T00:18:01.709Z", - "result": { - "sessionId": "01KMKR2GPS70FX8B8BTDGSZHJD", - "capturedAtSeq": 1, - "profileName": "reference-dark", - "cols": 80, - "rows": 24, - "artifactPath": "/tmp/agent-terminal-nerd-font-home/sessions/01KMKR2GPS70FX8B8BTDGSZHJD/artifacts/screenshot-1-reference-dark.png", - "pngSizeBytes": 20702, - "cursorVisible": false, - "rendererBackend": "ghostty-web", - "pixelWidth": 640, - "pixelHeight": 384, - "sha256": "a03d10008897b206ebce3d0f9e912b967937c36cd958aeecb5bc1b33454baddb", - "renderProfileHash": "8ffed6af301ec7c0e6b69599c3be0d1d12096f9fcdfc59d0bbb4cc474d64c53d" - } -} diff --git a/dogfood/20260326-nerd-font-fallback/snapshot-text.json b/dogfood/20260326-nerd-font-fallback/snapshot-text.json deleted file mode 100644 index 59369689..00000000 --- a/dogfood/20260326-nerd-font-fallback/snapshot-text.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ok": true, - "command": "snapshot", - "timestamp": "2026-03-26T00:18:00.057Z", - "result": { - "format": "text", - "sessionId": "01KMKR2GPS70FX8B8BTDGSZHJD", - "capturedAtSeq": 1, - "cols": 80, - "rows": 24, - "cursorRow": 10, - "cursorCol": 0, - "text": "UNICODE GRID FIXTURE\n\n| LABEL | SAMPLE |\n| ASCII | Hello, World! 0123456789 |\n| BOX | ┌─┐│└┘├┤┬┴┼═║╔╗╚╝ |\n| CJK | 漢字テスト中文日本 |\n| EMOJI | ✓✗★♠♣♥♦⚡☀☁ |\n| AMBIG | αβγδ∑∏∫∂√∞ |\n| NERD |   󰊢 󰈙  |\nUNICODE GRID COMPLETE\n\n\n\n\n\n\n\n\n\n\n\n\n\n" - } -} diff --git a/dogfood/20260326-nerd-font-fallback/unicode-grid-reference-dark.png b/dogfood/20260326-nerd-font-fallback/unicode-grid-reference-dark.png deleted file mode 100644 index be3ba448..00000000 Binary files a/dogfood/20260326-nerd-font-fallback/unicode-grid-reference-dark.png and /dev/null differ diff --git a/dogfood/20260326-nerd-font-fallback/unicode-grid-reference-dark.webm b/dogfood/20260326-nerd-font-fallback/unicode-grid-reference-dark.webm deleted file mode 100644 index 4ce8de7f..00000000 Binary files a/dogfood/20260326-nerd-font-fallback/unicode-grid-reference-dark.webm and /dev/null differ diff --git a/dogfood/20260326-nerd-font-fallback/unicode-grid.cast b/dogfood/20260326-nerd-font-fallback/unicode-grid.cast deleted file mode 100644 index ffc279fb..00000000 --- a/dogfood/20260326-nerd-font-fallback/unicode-grid.cast +++ /dev/null @@ -1,2 +0,0 @@ -{"version":2,"width":80,"height":24,"timestamp":1774484276,"title":"01KMKR2GPS70FX8B8BTDGSZHJD","sessionId":"01KMKR2GPS70FX8B8BTDGSZHJD","env":{"TERM":"xterm-256color"},"toolVersion":"0.1.0"} -[0,"o","\u001b[0m\u001b[2J\u001b[H\u001b[1;1HUNICODE GRID FIXTURE\u001b[3;1H| LABEL | SAMPLE |\u001b[4;1H| ASCII | Hello, World! 0123456789 |\u001b[5;1H| BOX | ┌─┐│└┘├┤┬┴┼═║╔╗╚╝ |\u001b[6;1H| CJK | 漢字テスト中文日本 |\u001b[7;1H| EMOJI | ✓✗★♠♣♥♦⚡☀☁ |\u001b[8;1H| AMBIG | αβγδ∑∏∫∂√∞ |\u001b[9;1H| NERD |   󰊢 󰈙  |\u001b[10;1H\u001b[0mUNICODE GRID COMPLETE\u001b[11;1H\u001b[0m"] diff --git a/dogfood/20260326-nerd-font-fallback/wait-exit.json b/dogfood/20260326-nerd-font-fallback/wait-exit.json deleted file mode 100644 index 64478fae..00000000 --- a/dogfood/20260326-nerd-font-fallback/wait-exit.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-26T00:18:12.641Z", - "result": { - "timedOut": false, - "exitCode": 0 - } -} diff --git a/dogfood/20260326-nerd-font-fallback/wait-render.json b/dogfood/20260326-nerd-font-fallback/wait-render.json deleted file mode 100644 index 2b6ad348..00000000 --- a/dogfood/20260326-nerd-font-fallback/wait-render.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ok": true, - "command": "wait", - "timestamp": "2026-03-26T00:17:58.564Z", - "result": { - "matched": true, - "timedOut": false, - "matchedText": "UNICODE GRID COMPLETE", - "cursorRow": 10, - "cursorCol": 0, - "capturedAtSeq": 1 - } -} diff --git a/dogfood/CATALOG.md b/dogfood/CATALOG.md index b5664ab5..9aa6c6df 100644 --- a/dogfood/CATALOG.md +++ b/dogfood/CATALOG.md @@ -33,7 +33,6 @@ Paths below are relative to the repository root. | `dogfood/20260325-week8-inspect-runtime/` | `inspect --json` runtime reporting review. | | `dogfood/oxlint-oxfmt-migration/` | Oxc lint/format migration proof with migrated checks, screenshot, asciicast, and WebM recording. | | `dogfood/token-usage-phase5-proof/` | Phase 5 eval DX token-usage proof bundle (commit `91a571de`) with screenshot, WebM recording, snapshot, and replay script. | -| `dogfood/20260323-week5-platform-closure/` | Platform/documentation closeout evidence from the earlier hardening phase. | | `dogfood/20260330-docs-navigation/` | Repository docs walkthrough with screenshots and a WebM recording of the new navigation path. | @@ -44,24 +43,15 @@ Follow-up: `dogfood/token-usage-phase5-proof/` is the only dedicated eval DX pha | Bundle | Focus | | ------------------------------------------- | ---------------------------------------------------------- | | `dogfood/20260322-dogfood-crash/` | Crash handling, retained artifacts, and post-crash review. | -| `dogfood/20260322-week4-failure-recovery/` | Earlier failure-recovery flow review. | | `dogfood/20260323-week5-recovery-host/` | Host-death and reconciliation behavior. | | `dogfood/20260323-week5-recovery-renderer/` | Renderer failure and recovery behavior. | | `dogfood/20260323-week5-recovery-replay/` | Replay/offline recovery behavior. | -| `dogfood/20260321-week3-crash-retention/` | Historical crash-retention proof for the week-3 milestone. | -| `dogfood/20260321-post-hardening-smoke/` | Smoke validation after hardening work. | | `dogfood/20260323-bugfix-resize/` | Resize regression repro/fix evidence. | | `dogfood/20260323-bugfix-scrollback/` | Scrollback regression repro/fix evidence. | ## Historical bundles -These bundles remain useful context, but they are mostly project-history artifacts rather than the first places a new reviewer should start: - -- Early lifecycle and renderer milestone bundles: `dogfood/20260319-*`, `dogfood/20260320-*`, `dogfood/20260321-*`. -- Week-4 historical review bundles: `dogfood/20260322-dogfood-week4-features/`, `dogfood/20260322-global-cli-context/`, `dogfood/20260322-week4-cli-parity/`, `dogfood/20260322-week4-scrollback-review/`, `dogfood/20260322-week4-unicode-review/`. -- Week-5 historical workstreams: `dogfood/20260323-week5-*` that are not listed above as canonical or recovery references. -- Week-6 and Week-7 phased rollout bundles: `dogfood/20260325-week6-*` and `dogfood/20260325-week7-*`. -- Font fallback investigations: `dogfood/20260326-lazyvim-nerd-font-check/`, `dogfood/20260326-lazyvim-nerd-font-check-2/`, and `dogfood/20260326-nerd-font-fallback/`. +The date-stamped milestone bundles from the v1 build-out (weeks 1-7 status reviews, font fallback investigations, and similar one-off project-history evidence) have been removed from the working tree to keep this directory reviewer-focused. They remain available in git history if older evidence is ever needed. ## Catalog maintenance rules diff --git a/dogfood/README.md b/dogfood/README.md index 03b61cab..16855aad 100644 --- a/dogfood/README.md +++ b/dogfood/README.md @@ -24,7 +24,3 @@ Some bundles are evergreen workflow scenarios, some are release/contract validat - Keep release-signoff bundles date-stamped so the evidence trail remains explicit. - Update [`CATALOG.md`](./CATALOG.md) whenever a bundle becomes a reviewer-facing reference point. - Leave one-off historical bundles in place unless they are superseded and no longer referenced. - -## Legacy helper scripts - -`generate-week3-bundles.sh` is kept as a historical helper for the earlier week-3 proof set. It is not the main starting point for new reviewers. diff --git a/dogfood/generate-week3-bundles.sh b/dogfood/generate-week3-bundles.sh deleted file mode 100755 index 8658d74b..00000000 --- a/dogfood/generate-week3-bundles.sh +++ /dev/null @@ -1,510 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -export PATH="$HOME/.local/bin:$PATH" -if command -v mise >/dev/null 2>&1; then - mise_shell_env="$(mise activate bash 2>/dev/null || true)" - if [[ -n "$mise_shell_env" ]]; then - eval "$mise_shell_env" - fi - mise_node="$(mise which node 2>/dev/null || true)" - if [[ -n "$mise_node" ]]; then - export PATH="$(dirname "$mise_node"):$PATH" - fi -fi - -ROOT_DIR="$(git rev-parse --show-toplevel)" -cd "$ROOT_DIR" -export PATH="$ROOT_DIR/node_modules/.bin:$PATH" - -CLI=(tsx src/cli/main.ts) -BUNDLE_A="dogfood/20260321-week3-renderer-complete" -BUNDLE_B="dogfood/20260321-week3-crash-retention" -TEMP_ROOT="$(mktemp -d "${TMPDIR:-/tmp}/agent-terminal-week3-bundles.XXXXXX")" -RUN_TIMESTAMP="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" -NODE_VERSION="$(node -v)" -PLATFORM="$(uname -srmo 2>/dev/null || uname -a)" - -cleanup() { - rm -rf "$TEMP_ROOT" -} -trap cleanup EXIT - -fail() { - printf 'error: %s\n' "$*" >&2 - exit 1 -} - -require_command() { - command -v "$1" >/dev/null 2>&1 || fail "missing required command: $1" -} - -quote_command() { - printf '%q ' "$@" - printf '\n' -} - -new_home() { - mktemp -d "$TEMP_ROOT/home.XXXXXX" -} - -json_eval() { - local file="$1" - local expression="$2" - node - "$file" "$expression" <<'NODE' -const fs = require('fs'); -const [file, expression] = process.argv.slice(2); -const data = JSON.parse(fs.readFileSync(file, 'utf8')); -let value; -try { - value = Function('data', `return (${expression});`)(data); -} catch (error) { - console.error(`json_eval failed for ${file}: ${error instanceof Error ? error.message : String(error)}`); - process.exit(1); -} -if (value === undefined) { - process.exit(2); -} -if (typeof value === 'string') { - process.stdout.write(value); -} else { - process.stdout.write(JSON.stringify(value)); -} -NODE -} - -assert_json_true() { - local file="$1" - local expression="$2" - local message="$3" - node - "$file" "$expression" "$message" <<'NODE' -const fs = require('fs'); -const [file, expression, message] = process.argv.slice(2); -const data = JSON.parse(fs.readFileSync(file, 'utf8')); -let value; -try { - value = Function('data', `return (${expression});`)(data); -} catch (error) { - console.error(`${message}: ${error instanceof Error ? error.message : String(error)}`); - process.exit(1); -} -if (value !== true) { - console.error(`${message}: expression evaluated to ${JSON.stringify(value)}`); - process.exit(1); -} -NODE -} - -assert_doctor_ok() { - local file="$1" - node - "$file" <<'NODE' -const fs = require('fs'); -const file = process.argv[2]; -const data = JSON.parse(fs.readFileSync(file, 'utf8')); -if (data.ok !== true || data.result?.ok !== true) { - console.error(`doctor failed: ${file}`); - process.exit(1); -} -const groups = Object.values(data.result.checks ?? {}); -for (const group of groups) { - for (const check of group) { - if (check.status !== 'pass') { - console.error(`doctor check did not pass in ${file}: ${check.name} => ${check.status}`); - process.exit(1); - } - } -} -NODE -} - -assert_json_file() { - local file="$1" - node -e "JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'))" "$file" >/dev/null -} - -assert_file_exists() { - local file="$1" - [[ -f "$file" ]] || fail "expected file to exist: $file" -} - -copy_from_json_path() { - local json_file="$1" - local expression="$2" - local destination="$3" - local source - source="$(json_eval "$json_file" "$expression")" - [[ -f "$source" ]] || fail "expected source artifact to exist: $source" - cp "$source" "$destination" -} - -copy_file() { - local source="$1" - local destination="$2" - [[ -f "$source" ]] || fail "expected source file to exist: $source" - cp "$source" "$destination" -} - -sha256_file() { - local file="$1" - node - "$file" <<'NODE' -const fs = require('fs'); -const crypto = require('crypto'); -const file = process.argv[2]; -const hash = crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex'); -process.stdout.write(hash); -NODE -} - -compare_snapshot_text() { - local live_text_file="$1" - local post_exit_structured_file="$2" - node - "$live_text_file" "$post_exit_structured_file" <<'NODE' -const fs = require('fs'); -const [liveTextFile, postExitStructuredFile] = process.argv.slice(2); -const liveText = JSON.parse(fs.readFileSync(liveTextFile, 'utf8')).result.text; -const postExitStructured = JSON.parse(fs.readFileSync(postExitStructuredFile, 'utf8')).result.visibleLines.map((line) => line.text).join('\n'); -if (liveText !== postExitStructured) { - console.error('post-exit structured snapshot text did not match live text snapshot'); - process.exit(1); -} -NODE -} - -append_command_header() { - local commands_file="$1" - local home="$2" - cat > "$commands_file" </dev/null 2>&1; then - mise_shell_env="\$(mise activate bash 2>/dev/null || true)" - if [[ -n "\$mise_shell_env" ]]; then - eval "\$mise_shell_env" - fi - mise_node="\$(mise which node 2>/dev/null || true)" - if [[ -n "\$mise_node" ]]; then - export PATH="\$(dirname "\$mise_node"):\$PATH" - fi -fi -cd $(printf '%q' "$ROOT_DIR") -export PATH="$(printf '%q' "$ROOT_DIR")/node_modules/.bin:\$PATH" -export AGENT_TERMINAL_HOME=$(printf '%q' "$home") - -EOF2 -} - -run_json_command() { - local commands_file="$1" - local output_file="$2" - shift 2 - quote_command "${CLI[@]}" "$@" >> "$commands_file" - "${CLI[@]}" "$@" > "$output_file" - assert_json_file "$output_file" - assert_json_true "$output_file" 'data.ok === true' "command failed: $output_file" -} - -run_json_command_retry() { - local retries="$1" - local sleep_secs="$2" - local commands_file="$3" - local output_file="$4" - shift 4 - local attempt=1 - while true; do - if run_json_command "$commands_file" "$output_file" "$@"; then - return 0 - fi - if (( attempt >= retries )); then - return 1 - fi - printf 'retrying %s (attempt %d/%d)\n' "$output_file" "$(( attempt + 1 ))" "$retries" - sleep "$sleep_secs" - attempt=$(( attempt + 1 )) - done -} - -write_bundle_a_notes() { - local bundle_dir="$1" - local session_id="$2" - local home="$3" - local live_seq="$4" - local post_exit_seq="$5" - local live_dark_sha="$6" - local post_exit_dark_sha="$7" - local gc_home="$8" - local gc_session_id="$9" - local gc_removed_count="${10}" - local gc_list_count="${11}" - local screenshot_sha_note='different' - if [[ "$live_dark_sha" == "$post_exit_dark_sha" ]]; then - screenshot_sha_note='identical' - fi - cat > "$bundle_dir/NOTES.md" < "$bundle_dir/NOTES.md" < "$bundle_dir/index.md" -} - -require_command git -require_command node -require_command tsx - -rm -rf "$BUNDLE_A" "$BUNDLE_B" -mkdir -p "$BUNDLE_A/artifacts" "$BUNDLE_A/gc" "$BUNDLE_B/artifacts" - -printf 'Generating %s\n' "$BUNDLE_A" -A_HOME="$(new_home)" -export AGENT_TERMINAL_HOME="$A_HOME" -printf '%s\n' "$A_HOME" > "$BUNDLE_A/agent-terminal-home.txt" -append_command_header "$BUNDLE_A/commands.sh" "$A_HOME" - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/doctor.json" doctor --json -assert_doctor_ok "$BUNDLE_A/doctor.json" - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/create-output.json" create --json -- /bin/sh -lc 'printf "Loading\n"; sleep 1; printf "3 items\n"; sleep 1; printf "Ready\n"; exec cat' -A_SESSION_ID="$(json_eval "$BUNDLE_A/create-output.json" 'data.result.sessionId')" -printf '%s\n' "$A_SESSION_ID" > "$BUNDLE_A/session-id.txt" - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/wait-text.json" wait "$A_SESSION_ID" --text Ready --timeout 20000 --json -assert_json_true "$BUNDLE_A/wait-text.json" 'data.result.timedOut === false' 'wait --text timed out in bundle A' - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/type-output.json" type "$A_SESSION_ID" 'week3 renderer bundle' --json -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/wait-regex.json" wait "$A_SESSION_ID" --regex 'week3 renderer bundle' --timeout 20000 --json -assert_json_true "$BUNDLE_A/wait-regex.json" 'data.result.timedOut === false' 'wait --regex timed out in bundle A' - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/snapshot-structured-live.json" snapshot "$A_SESSION_ID" --json -LIVE_STRUCTURED_SEQ="$(json_eval "$BUNDLE_A/snapshot-structured-live.json" 'data.result.capturedAtSeq')" -copy_file "$A_HOME/sessions/$A_SESSION_ID/artifacts/snapshot-$LIVE_STRUCTURED_SEQ-structured.json" "$BUNDLE_A/artifacts/live-snapshot-structured-artifact.json" - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/snapshot-text-live.json" snapshot "$A_SESSION_ID" --format text --json -LIVE_TEXT_SEQ="$(json_eval "$BUNDLE_A/snapshot-text-live.json" 'data.result.capturedAtSeq')" -copy_file "$A_HOME/sessions/$A_SESSION_ID/artifacts/snapshot-$LIVE_TEXT_SEQ-text.json" "$BUNDLE_A/artifacts/live-snapshot-text-artifact.json" - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/screenshot-dark-live.json" screenshot "$A_SESSION_ID" --json -copy_from_json_path "$BUNDLE_A/screenshot-dark-live.json" 'data.result.artifactPath' "$BUNDLE_A/artifacts/live-reference-dark.png" - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/screenshot-light-live.json" screenshot "$A_SESSION_ID" --profile reference-light --json -copy_from_json_path "$BUNDLE_A/screenshot-light-live.json" 'data.result.artifactPath' "$BUNDLE_A/artifacts/live-reference-light.png" - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/record-asciicast-live.json" record export "$A_SESSION_ID" --format asciicast --out "$BUNDLE_A/artifacts/session-live.cast" --json -assert_file_exists "$BUNDLE_A/artifacts/session-live.cast" - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/destroy-output.json" destroy "$A_SESSION_ID" --json - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/snapshot-structured-post-exit.json" snapshot "$A_SESSION_ID" --json -POST_EXIT_SEQ="$(json_eval "$BUNDLE_A/snapshot-structured-post-exit.json" 'data.result.capturedAtSeq')" -copy_file "$A_HOME/sessions/$A_SESSION_ID/artifacts/snapshot-$POST_EXIT_SEQ-structured.json" "$BUNDLE_A/artifacts/post-exit-snapshot-structured-artifact.json" -compare_snapshot_text "$BUNDLE_A/snapshot-text-live.json" "$BUNDLE_A/snapshot-structured-post-exit.json" - -run_json_command "$BUNDLE_A/commands.sh" "$BUNDLE_A/screenshot-dark-post-exit.json" screenshot "$A_SESSION_ID" --json -copy_from_json_path "$BUNDLE_A/screenshot-dark-post-exit.json" 'data.result.artifactPath' "$BUNDLE_A/artifacts/post-exit-reference-dark.png" - -run_json_command_retry 2 2 "$BUNDLE_A/commands.sh" "$BUNDLE_A/record-webm-post-exit.json" record export "$A_SESSION_ID" --format webm --out "$BUNDLE_A/artifacts/session-post-exit.webm" --json -assert_file_exists "$BUNDLE_A/artifacts/session-post-exit.webm" - -copy_file "$A_HOME/sessions/$A_SESSION_ID/artifacts/manifest.json" "$BUNDLE_A/manifest.json" -copy_file "$A_HOME/sessions/$A_SESSION_ID/session.json" "$BUNDLE_A/session-manifest.json" -copy_file "$A_HOME/sessions/$A_SESSION_ID/events.jsonl" "$BUNDLE_A/event-log.jsonl" - -LIVE_DARK_SHA="$(sha256_file "$BUNDLE_A/artifacts/live-reference-dark.png")" -POST_EXIT_DARK_SHA="$(sha256_file "$BUNDLE_A/artifacts/post-exit-reference-dark.png")" - -printf 'Generating GC sub-demo under %s/gc\n' "$BUNDLE_A" -GC_HOME="$(new_home)" -export AGENT_TERMINAL_HOME="$GC_HOME" -printf '%s\n' "$GC_HOME" > "$BUNDLE_A/gc/agent-terminal-home.txt" -append_command_header "$BUNDLE_A/gc/commands.sh" "$GC_HOME" - -run_json_command "$BUNDLE_A/gc/commands.sh" "$BUNDLE_A/gc/create-output.json" create --json -- /bin/sh -lc 'printf "gc-temp\n"; exec cat' -GC_SESSION_ID="$(json_eval "$BUNDLE_A/gc/create-output.json" 'data.result.sessionId')" -printf '%s\n' "$GC_SESSION_ID" > "$BUNDLE_A/gc/session-id.txt" -run_json_command "$BUNDLE_A/gc/commands.sh" "$BUNDLE_A/gc/destroy-output.json" destroy "$GC_SESSION_ID" --json -run_json_command "$BUNDLE_A/gc/commands.sh" "$BUNDLE_A/gc/gc-dry-run.json" gc --dry-run --json -run_json_command "$BUNDLE_A/gc/commands.sh" "$BUNDLE_A/gc/gc.json" gc --json -run_json_command "$BUNDLE_A/gc/commands.sh" "$BUNDLE_A/gc/list-all.json" list --all --json -assert_json_true "$BUNDLE_A/gc/gc-dry-run.json" "data.result.removedSessions.includes('$GC_SESSION_ID')" 'gc dry-run did not include the temporary session' -assert_json_true "$BUNDLE_A/gc/gc.json" "data.result.removedSessions.includes('$GC_SESSION_ID')" 'gc actual run did not remove the temporary session' -assert_json_true "$BUNDLE_A/gc/list-all.json" "!data.result.sessions.some((session) => session.sessionId === '$GC_SESSION_ID')" 'gc list --all still shows the removed session' -GC_REMOVED_COUNT="$(json_eval "$BUNDLE_A/gc/gc.json" 'data.result.removedSessions.length')" -GC_LIST_COUNT="$(json_eval "$BUNDLE_A/gc/list-all.json" 'data.result.sessions.length')" - -write_bundle_a_notes "$BUNDLE_A" "$A_SESSION_ID" "$A_HOME" "$LIVE_TEXT_SEQ" "$POST_EXIT_SEQ" "$LIVE_DARK_SHA" "$POST_EXIT_DARK_SHA" "$GC_HOME" "$GC_SESSION_ID" "$GC_REMOVED_COUNT" "$GC_LIST_COUNT" -write_index "$BUNDLE_A" - -printf 'Generating %s\n' "$BUNDLE_B" -B_HOME="$(new_home)" -export AGENT_TERMINAL_HOME="$B_HOME" -printf '%s\n' "$B_HOME" > "$BUNDLE_B/agent-terminal-home.txt" -append_command_header "$BUNDLE_B/commands.sh" "$B_HOME" - -run_json_command "$BUNDLE_B/commands.sh" "$BUNDLE_B/doctor.json" doctor --json -assert_doctor_ok "$BUNDLE_B/doctor.json" - -run_json_command "$BUNDLE_B/commands.sh" "$BUNDLE_B/create-output.json" create --json -- /bin/bash -lc 'echo crash-test-output && exit 42' -B_SESSION_ID="$(json_eval "$BUNDLE_B/create-output.json" 'data.result.sessionId')" -printf '%s\n' "$B_SESSION_ID" > "$BUNDLE_B/session-id.txt" - -run_json_command "$BUNDLE_B/commands.sh" "$BUNDLE_B/wait-exit.json" wait "$B_SESSION_ID" --exit --timeout 20000 --json -EXIT_CODE="$(json_eval "$BUNDLE_B/wait-exit.json" 'data.result.exitCode')" -[[ "$EXIT_CODE" == '42' ]] || fail "expected crash exit code 42, got $EXIT_CODE" - -run_json_command "$BUNDLE_B/commands.sh" "$BUNDLE_B/inspect-post-crash.json" inspect "$B_SESSION_ID" --json -assert_json_true "$BUNDLE_B/inspect-post-crash.json" "data.result.session.status === 'exited'" 'crash session was not marked exited' -assert_json_true "$BUNDLE_B/inspect-post-crash.json" 'data.result.session.exitCode === 42' 'crash session exit code was not retained' - -run_json_command "$BUNDLE_B/commands.sh" "$BUNDLE_B/snapshot-post-crash.json" snapshot "$B_SESSION_ID" --json -B_SNAPSHOT_SEQ="$(json_eval "$BUNDLE_B/snapshot-post-crash.json" 'data.result.capturedAtSeq')" -copy_file "$B_HOME/sessions/$B_SESSION_ID/artifacts/snapshot-$B_SNAPSHOT_SEQ-structured.json" "$BUNDLE_B/artifacts/post-crash-snapshot-structured-artifact.json" -assert_json_true "$BUNDLE_B/snapshot-post-crash.json" "data.result.visibleLines.some((line) => line.text.includes('crash-test-output'))" 'crash snapshot did not include crash-test-output' - -run_json_command "$BUNDLE_B/commands.sh" "$BUNDLE_B/screenshot-post-crash.json" screenshot "$B_SESSION_ID" --json -copy_from_json_path "$BUNDLE_B/screenshot-post-crash.json" 'data.result.artifactPath' "$BUNDLE_B/artifacts/post-crash-reference-dark.png" - -run_json_command "$BUNDLE_B/commands.sh" "$BUNDLE_B/record-asciicast-post-crash.json" record export "$B_SESSION_ID" --format asciicast --out "$BUNDLE_B/artifacts/session-post-crash.cast" --json -assert_file_exists "$BUNDLE_B/artifacts/session-post-crash.cast" - -run_json_command_retry 2 2 "$BUNDLE_B/commands.sh" "$BUNDLE_B/record-webm-post-crash.json" record export "$B_SESSION_ID" --format webm --out "$BUNDLE_B/artifacts/session-post-crash.webm" --json -assert_file_exists "$BUNDLE_B/artifacts/session-post-crash.webm" - -copy_file "$B_HOME/sessions/$B_SESSION_ID/artifacts/manifest.json" "$BUNDLE_B/manifest.json" -copy_file "$B_HOME/sessions/$B_SESSION_ID/session.json" "$BUNDLE_B/session-manifest.json" -copy_file "$B_HOME/sessions/$B_SESSION_ID/events.jsonl" "$BUNDLE_B/event-log.jsonl" - -write_bundle_b_notes "$BUNDLE_B" "$B_SESSION_ID" "$B_HOME" "$EXIT_CODE" -write_index "$BUNDLE_B" - -find "$BUNDLE_A" "$BUNDLE_B" -name '*.json' -type f -print0 | while IFS= read -r -d '' json_file; do - assert_json_file "$json_file" -done - -printf 'Week 3 dogfood bundles generated successfully.\n'