From 9b7fb4aed556ae7456e151634e91bb33b1e88674 Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 25 Mar 2026 07:56:06 +0000 Subject: [PATCH 01/14] docs: add week 6 plan --- design/20260319_agent-terminal-v1.md | 9 +- .../13-week-6-plan.md | 253 ++++++++++++++++++ 2 files changed, 258 insertions(+), 4 deletions(-) create mode 100644 design/20260319_agent-terminal-v1/13-week-6-plan.md diff --git a/design/20260319_agent-terminal-v1.md b/design/20260319_agent-terminal-v1.md index d6f8832..ea8fd39 100644 --- a/design/20260319_agent-terminal-v1.md +++ b/design/20260319_agent-terminal-v1.md @@ -19,9 +19,9 @@ It is designed to let an agent: This design intentionally describes a **general product**, not a Mux-specific implementation. A future Mux integration should consume `agent-terminal` as an external CLI/runtime rather than baking Mux-specific assumptions into the design. -## Current shipped status (2026-03-23) +## Current shipped status (2026-03-25) -The repository now ships the first three milestones of this design plus Week 4 CLI/artifact/lifecycle hardening and Week 5 foundational scaffolding: +The repository now ships the first three milestones of this design plus Week 4 CLI/artifact/lifecycle hardening and the planned Week 5 parity/review/platform closeout: - long-lived session hosts, - PTY control and append-only event logs, @@ -31,11 +31,12 @@ The repository now ships the first three milestones of this design plus Week 4 C - `record export --format webm`, - artifact manifests and `gc`, - shared global CLI context and differentiated exit codes, -- configuration infrastructure scaffolding (schema, loader, context plumbing), +- end-to-end CLI/config wiring for `--log-level`, `--profile`, `--idle-timeout-ms`, and `--append-newline`, +- replay timing modes, bundled fonts, per-cell snapshots, and local proof-bundle review tooling, - macOS CI validation, - and proof bundles under `dogfood/`. -The implementation is now beyond the Week 4 slice, with Week 5 adding foundational infrastructure for the remaining CLI/config parity work. The main remaining gaps are end-to-end CLI feature wiring, richer snapshot/screenshot fidelity, local review tooling, and platform hardening. See [10-week-4-status.md](./20260319_agent-terminal-v1/10-week-4-status.md), [12-week-5-status.md](./20260319_agent-terminal-v1/12-week-5-status.md), and [`../WEEK2-GAPS.md`](../WEEK2-GAPS.md) for the current state. +The remaining delta is now concentrated in full CLI contract/result-shape parity, richer `inspect`/artifact-health surfaces, broader failure taxonomy/reporting, and design/code reconciliation before the repo moves on to intentionally future-scope platform/runtime expansion. See [12-week-5-status.md](./20260319_agent-terminal-v1/12-week-5-status.md), [13-week-6-plan.md](./20260319_agent-terminal-v1/13-week-6-plan.md), and [`../WEEK2-GAPS.md`](../WEEK2-GAPS.md) for the current state. ## Executive summary diff --git a/design/20260319_agent-terminal-v1/13-week-6-plan.md b/design/20260319_agent-terminal-v1/13-week-6-plan.md new file mode 100644 index 0000000..7f88438 --- /dev/null +++ b/design/20260319_agent-terminal-v1/13-week-6-plan.md @@ -0,0 +1,253 @@ +# agent-terminal v1 week 6 plan + +This plan assumes that: + +- Week 1 control-plane work is complete, +- Week 2 renderer-backed inspection work is complete, +- Week 3 export / crash-retention / GC work is complete, +- Week 4 CLI / artifact / lifecycle hardening is complete, +- and Week 5 closed the highest-value config, rendering-fidelity, proof-bundle-review, and platform/documentation gaps. + +Week 6 is therefore not about opening a new product surface. + +Week 6 is about closing the remaining high-value gap between the **broader v1 design contract** and the **shipped repository** so follow-on work can focus on intentionally future-scope platform/runtime expansion rather than lingering contract ambiguity. + +## Status update (2026-03-25) + +This Week 6 plan was created after a repo/design audit on 2026-03-25. + +That audit found that the Week 1–5 plan and status docs are materially reflected in the current repository. The remaining delta is now concentrated in: + +- full CLI envelope/result-shape parity for the highest-value public surfaces, +- richer session/artifact introspection, +- clearer failure taxonomy and reporting, +- and design/code reconciliation where the broader docs still describe richer or different structures than the shipped implementation. + +See [12-week-5-status.md](./12-week-5-status.md), [`../WEEK2-GAPS.md`](../WEEK2-GAPS.md), and this file for the current execution focus. + +As work lands, this file should be updated in place the same way the earlier weekly plan/status docs were kept in sync: + +- mark completed checklist items, +- narrow or remove no-longer-valid scope, +- add a short status note near the top when a workstream materially lands, +- and keep proof-bundle paths current as evidence is generated. + +## Week 6 goal + +Make the repository credibly design-aligned for the core v1 surface by closing the remaining contract, introspection, and reporting gaps that still separate the shipped implementation from the broader design docs. + +That means Week 6 should focus on: + +1. closing the highest-value CLI contract/result-shape gaps, +2. making session and artifact health easier to inspect, +3. making failure categories and recovery reporting clearer, +4. reconciling the general design docs with the shipped model, +5. and locking the resulting contract down with tests and proof bundles. + +## Week 6 outcome checklist + +Week 6 is done only when every required checkbox below is complete. + +- [ ] The highest-value CLI envelope/result-shape gaps from `02-cli-contract.md` are closed or explicitly ratified as future scope. +- [ ] `inspect` and `version` expose the missing high-value review data. +- [ ] Artifact health is visible without manual filesystem spelunking. +- [ ] Failure categories and recovery reporting are clearer and better proven. +- [ ] The main design docs no longer describe stale or mismatched contract/event/snapshot expectations as if they are already shipped requirements. +- [ ] The required Week 6 proof bundles exist with JSON outputs, screenshots, notes, `.cast`, and `.webm` artifacts where relevant. +- [ ] The remaining post-Week-6 gap is clearly future-scope platform/runtime work rather than unfinished contract closure. + +## Scope boundaries + +### In scope + +- CLI contract/result-shape parity work, +- `inspect` / `version` / `doctor` contract and introspection improvements, +- artifact-health reporting, +- failure taxonomy and recovery reporting, +- design/code synchronization for contract, event-log, snapshot, and artifact expectations, +- contract/golden tests, +- and refreshed proof bundles. + +### Explicitly out of scope + +These remain valid future work items, but they should not dilute Week 6: + +- native renderer adapters, +- mouse input, +- remote/network sessions, +- MCP wrapper, +- broad Windows/native parity work, +- renderer CSP hardening beyond documenting the current trade-off, +- and other new feature families that are not required to close the remaining v1 contract ambiguity. + +## Workstream A — CLI contract and result-shape parity + +### Goal + +Close the highest-value remaining mismatches between the shipped CLI and `02-cli-contract.md`. + +### Deliverables + +- enrich `inspect` to expose the most important missing fields where practical and stable, +- make `version --json` report the compiled-in renderer backend surface instead of an empty placeholder, +- audit the public command envelopes/examples and close the highest-value result-shape gaps, +- either align the structured error catalog/exit-code story more closely with the contract or explicitly document the intentionally shipped catalog, +- and add golden or snapshot-style contract tests for the public JSON envelopes most likely to drift. + +### Acceptance criteria + +- automation callers can rely on `inspect`, `version`, and the error/exit story being materially closer to the contract doc, +- the remaining example mismatches are small and explicitly documented, +- and contract tests fail loudly when machine-facing envelopes drift. + +## Workstream B — session and artifact introspection + +### Goal + +Make session state and artifact health inspectable without manual directory inspection. + +### Deliverables + +- add artifact counts and artifact summaries to `inspect`, +- surface missing-on-disk artifacts and manifest inconsistencies in `inspect` and/or `doctor`, +- expose the most useful replay/session summary fields that are currently absent from the public surface, +- and tighten proof-bundle metadata or summaries where that materially improves offline review. + +### Acceptance criteria + +- a reviewer can understand whether a session is healthy, failed, exited, destroyed, or missing expected artifacts from CLI JSON alone, +- missing-artifact cases are caught by tests and surfaced in human/JSON outputs, +- and updated proof bundles do not require manual artifact-manifest spelunking to answer basic health questions. + +## Workstream C — failure taxonomy and recovery reporting + +### Goal + +Make abnormal child exit, host failure, renderer failure, and replay fallback easier to distinguish. + +### Deliverables + +- define a clearer failure taxonomy and reflect it in machine-facing outputs where practical, +- preserve the current `failed` / `failureReason` model but make failure origin clearer and more stable, +- ensure recovery/fallback paths (renderer restart, host unreachable -> offline replay, stale-host reconcile) produce clearer evidence, +- and add targeted tests and proof bundles for each high-value failure class. + +### Acceptance criteria + +- abnormal child exit, host death, renderer rebuild/restart, and replay fallback can be distinguished by automation or a reviewer, +- docs and proof bundles use the same language as the implementation, +- and failure-related outputs remain explicit, stable, and test-covered. + +## Workstream D — design/code reconciliation + +### Goal + +Remove the remaining shipped-vs-designed ambiguity in the docs. + +### Deliverables + +- update the main design entrypoint so it reflects the post-Week-5 reality and points to Week 6 as the current execution plan, +- reconcile `01-architecture.md`, `02-cli-contract.md`, and `03-rendering-and-artifacts.md` with the shipped implementation where they currently describe richer or different structures than the code actually emits, +- decide explicitly whether the remaining event-log and snapshot-schema deltas should be implemented now or reclassified as future scope, +- and keep `WEEK2-GAPS.md` plus the Week 6 docs current as work lands. + +### Acceptance criteria + +- a new contributor can read the top-level design docs without being misled about what is already shipped, +- remaining future-scope items are clearly separated from Week 6 contract-closure work, +- and historical docs still preserve context without obscuring current reality. + +## Dogfooding and validation + +Week 6 must keep the same proof-heavy bar as the earlier plans. + +### Required dogfood principle + +For any change that affects CLI result shapes, session/artifact reporting, failure semantics, recovery evidence, or design-truth surfaces, the implementation should produce: + +- JSON command outputs, +- screenshots, +- `.cast` artifacts where relevant, +- `.webm` artifacts where relevant, +- generated `review-bundle` output where relevant, +- and short written notes describing expected versus observed behavior. + +### Required Week 6 dogfood setup + +Because this is a CLI project, Week 6 dogfooding should run against an isolated absolute `AGENT_TERMINAL_HOME` and use direct CLI invocation. + +At a minimum, the Week 6 proof workflow should document a setup equivalent to: + +```sh +mise install +npm ci +npx playwright install chromium +npm run build + +export AGENT_TERMINAL_HOME="$(mktemp -d)" +npx tsx src/cli/main.ts doctor --json +``` + +When a proof bundle is generated, also run: + +```sh +npm run review-bundle -- +``` + +and capture screenshots of the generated `index.html` plus a short video recording whenever the new behavior is easier to verify visually than by reading JSON alone. + +### Required Week 6 proof bundles + +At a minimum, Week 6 should leave behind bundles covering: + +1. **CLI contract parity scenario** + - prove richer `inspect`, improved `version --json`, representative error envelopes, and the updated exit-code/error story. +2. **Artifact-health scenario** + - prove artifact counts, missing-artifact detection, and manifest/report alignment. +3. **Failure taxonomy scenario** + - prove abnormal child exit, stale host reconciliation, renderer/offline-replay fallback, and the updated reporting language. +4. **Review-surface scenario** + - prove the refreshed bundles and `review-bundle` output make the new summaries understandable offline. + +### Screenshot and video requirements + +Week 6 should continue the design rule that screenshots and videos are mandatory proof artifacts for interaction-heavy or reviewer-facing changes. + +For every proof bundle above, capture: + +- at least one screenshot, +- at least one `.cast` or equivalent textual replay artifact where relevant, +- and at least one short `.webm` recording when the behavior is easier to verify visually than semantically. + +Contract-only scenarios should still capture screenshots of the generated review page or terminal outputs rather than leaving behind JSON alone. + +## Quality gates between workstreams + +Do not move on from a workstream until: + +- the new tests for that workstream pass, +- the related proof bundle exists, +- screenshots and video/recording artifacts exist where required, +- and any intentionally deferred follow-ups are written down explicitly. + +## Recommended implementation order + +Implement Week 6 in this order: + +1. docs/scope framing and contract inventory, +2. `inspect` / `version` / envelope/result-shape parity, +3. artifact-health reporting, +4. failure taxonomy and recovery reporting, +5. final design/doc reconciliation and proof-bundle refresh. + +That order keeps the contract changes, proof surfaces, and docs aligned so the later bundles validate the final intended workflow rather than an intermediate one. + +## Definition of done + +Week 6 should be considered complete only when: + +- the remaining post-Week-5 contract gap is materially smaller, +- the public inspection/reporting surface answers the highest-value reviewer and automation questions directly, +- the docs accurately describe the shipped implementation, +- proof bundles and contract tests make regressions obvious, +- and the remaining delta is clearly future-scope platform/runtime expansion rather than unfinished v1 contract closure. From 387fc2efc6418d5642adb5914636d72f6e5628f9 Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 25 Mar 2026 08:16:45 +0000 Subject: [PATCH 02/14] feat: add Week 6 shared schema scaffolding for inspect, failure taxonomy, and artifact health --- src/protocol/messages.ts | 44 ++++++++++++++++++++++++++++++++++++++++ src/protocol/schemas.ts | 9 ++++++++ 2 files changed, 53 insertions(+) diff --git a/src/protocol/messages.ts b/src/protocol/messages.ts index 1eb2e35..537432a 100644 --- a/src/protocol/messages.ts +++ b/src/protocol/messages.ts @@ -87,11 +87,55 @@ export const HostInspectResultSchema = z .strict(); export type HostInspectResult = z.infer; +export const TerminationCategorySchema = z.enum([ + 'running', + 'clean-exit', + 'nonzero-exit', + 'signal-exit', + 'host-death', + 'renderer-failure', + 'destroyed', + 'unknown', +]); +export type TerminationCategory = z.infer; + +export const ArtifactHealthSummarySchema = z + .object({ + total: z.number().int().nonnegative(), + byKind: z.record(z.string(), z.number().int().nonnegative()), + missingCount: z.number().int().nonnegative(), + health: z.enum([ + 'healthy', + 'missing-artifacts', + 'manifest-invalid', + 'no-artifacts', + 'unknown', + ]), + missing: z + .array( + z + .object({ + id: z.string(), + kind: z.string(), + filename: z.string(), + }) + .strict(), + ) + .optional(), + }) + .strict(); +export type ArtifactHealthSummary = z.infer; + export const InspectResultSchema = z .object({ session: SessionRecordSchema, eventCount: z.number().int().nonnegative(), uptime: z.number().int().nonnegative(), + lastEventSeq: z.number().int().nonnegative().optional(), + terminationCategory: TerminationCategorySchema.optional(), + artifacts: ArtifactHealthSummarySchema.optional(), + usedOfflineReplay: z.boolean().optional(), + rendererBackend: z.string().optional(), }) .strict(); export type InspectResult = z.infer; diff --git a/src/protocol/schemas.ts b/src/protocol/schemas.ts index e78fa58..e723432 100644 --- a/src/protocol/schemas.ts +++ b/src/protocol/schemas.ts @@ -34,6 +34,14 @@ export const SessionStatusSchema = z.enum([ ]); export type SessionStatus = z.infer; +export const FailureOriginSchema = z.enum([ + 'host-death', + 'renderer-failure', + 'storage-corruption', + 'unknown', +]); +export type FailureOrigin = z.infer; + export const SessionRecordSchema = z .object({ version: z.literal(1), @@ -42,6 +50,7 @@ export const SessionRecordSchema = z updatedAt: IsoDatetimeSchema, status: SessionStatusSchema, failureReason: z.string().min(1).optional(), + failureOrigin: FailureOriginSchema.optional(), command: z.array(z.string()).min(1), cwd: z.string(), name: NonEmptyStringSchema.optional(), From a4ae0c94209e7fbe4bd23cede9dd0af584cd34af Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 25 Mar 2026 08:19:05 +0000 Subject: [PATCH 03/14] feat: report ghostty-web in version renderer backends --- src/cli/commands/version.ts | 2 +- test/integration/cli.test.ts | 2 ++ test/unit/commands/version.test.ts | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cli/commands/version.ts b/src/cli/commands/version.ts index e7289e3..e8b1639 100644 --- a/src/cli/commands/version.ts +++ b/src/cli/commands/version.ts @@ -48,7 +48,7 @@ export async function buildVersionResult(): Promise { return { cliVersion: packageMetadata.version, protocolVersion: PROTOCOL_VERSION, - rendererBackends: [], + rendererBackends: ['ghostty-web'], runtime: { node: process.version, platform: process.platform, diff --git a/test/integration/cli.test.ts b/test/integration/cli.test.ts index fa43c56..4ecacbd 100644 --- a/test/integration/cli.test.ts +++ b/test/integration/cli.test.ts @@ -53,11 +53,13 @@ describe('CLI integration', () => { const parsed = JSON.parse(result.stdout) as SuccessEnvelope<{ cliVersion: string; + rendererBackends: string[]; }>; expect(parsed.ok).toBe(true); expect(parsed.command).toBe('version'); expect(parsed.result.cliVersion).toMatch(/^\d+\.\d+\.\d+$/); + expect(parsed.result.rendererBackends).toEqual(['ghostty-web']); }); it('accepts --append-newline for type', () => { diff --git a/test/unit/commands/version.test.ts b/test/unit/commands/version.test.ts index fd198be..be13670 100644 --- a/test/unit/commands/version.test.ts +++ b/test/unit/commands/version.test.ts @@ -18,6 +18,7 @@ describe('version command', () => { expect(result.cliVersion).toMatch(/^\d+\.\d+\.\d+$/); expect(result.protocolVersion).toBe('0.1.0'); + expect(result.rendererBackends).toEqual(['ghostty-web']); expect(result.runtime.node).toMatch(/^v\d+\.\d+\.\d+$/); }); }); From a8f33cfdb8e87521c809b23d6d51d97bc8e0bdf8 Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 25 Mar 2026 08:22:46 +0000 Subject: [PATCH 04/14] feat: add artifact health summary helper --- src/storage/artifactHealth.ts | 114 ++++++++++ test/unit/storage/artifactHealth.test.ts | 271 +++++++++++++++++++++++ 2 files changed, 385 insertions(+) create mode 100644 src/storage/artifactHealth.ts create mode 100644 test/unit/storage/artifactHealth.test.ts diff --git a/src/storage/artifactHealth.ts b/src/storage/artifactHealth.ts new file mode 100644 index 0000000..bdea6dc --- /dev/null +++ b/src/storage/artifactHealth.ts @@ -0,0 +1,114 @@ +import { access } from 'node:fs/promises'; +import { isAbsolute, resolve } from 'node:path'; + +import { + ArtifactHealthSummarySchema, + type ArtifactHealthSummary, +} from '../protocol/messages.js'; +import { ERROR_CODES } from '../protocol/errors.js'; +import { invariant } from '../util/assert.js'; +import { readArtifactManifest } from './artifactManifest.js'; +import { artifactPath } from './artifactPaths.js'; + +interface NodeError { + code?: string; +} + +function isManifestValidationError(error: unknown): error is Error & NodeError { + return ( + error instanceof Error && + 'code' in error && + (error as NodeError).code === ERROR_CODES.MANIFEST_VALIDATION_ERROR + ); +} + +function isEnoentError(error: unknown): error is Error & NodeError { + return ( + error instanceof Error && + 'code' in error && + (error as NodeError).code === 'ENOENT' + ); +} + +function validateArtifactHealthSummary( + summary: ArtifactHealthSummary, +): ArtifactHealthSummary { + const parsedSummary = ArtifactHealthSummarySchema.safeParse(summary); + + invariant( + parsedSummary.success, + 'artifact health summary must satisfy ArtifactHealthSummarySchema', + ); + + return parsedSummary.data; +} + +export async function computeArtifactHealth( + sessionDir: string, +): Promise { + invariant(sessionDir.length > 0, 'sessionDir must be a non-empty string'); + invariant(isAbsolute(sessionDir), 'sessionDir must be an absolute path'); + + const normalizedSessionDir = resolve(sessionDir); + + let manifest; + try { + manifest = await readArtifactManifest(normalizedSessionDir); + } catch (error) { + if (isManifestValidationError(error)) { + return validateArtifactHealthSummary({ + total: 0, + byKind: {}, + missingCount: 0, + health: 'manifest-invalid', + }); + } + + throw error; + } + + if (manifest.artifacts.length === 0) { + return validateArtifactHealthSummary({ + total: 0, + byKind: {}, + missingCount: 0, + health: 'no-artifacts', + }); + } + + const byKind: Record = {}; + for (const artifact of manifest.artifacts) { + byKind[artifact.kind] = (byKind[artifact.kind] ?? 0) + 1; + } + + const missingArtifacts = ( + await Promise.all( + manifest.artifacts.map(async (artifact) => { + try { + await access(artifactPath(normalizedSessionDir, artifact.filename)); + return null; + } catch (error) { + if (isEnoentError(error)) { + return { + id: artifact.id, + kind: artifact.kind, + filename: artifact.filename, + }; + } + + throw error; + } + }), + ) + ).filter((artifact): artifact is NonNullable => artifact !== null); + + const missingCount = missingArtifacts.length; + + return validateArtifactHealthSummary({ + total: manifest.artifacts.length, + byKind, + missingCount, + health: missingCount === 0 ? 'healthy' : 'missing-artifacts', + ...(missingCount > 0 ? { missing: missingArtifacts } : {}), + }); +} diff --git a/test/unit/storage/artifactHealth.test.ts b/test/unit/storage/artifactHealth.test.ts new file mode 100644 index 0000000..63e9c67 --- /dev/null +++ b/test/unit/storage/artifactHealth.test.ts @@ -0,0 +1,271 @@ +import { mkdtemp, realpath, rm, writeFile } from 'node:fs/promises'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; + +import { afterEach, describe, expect, it } from 'vitest'; + +import type { + ArtifactEntry, + ArtifactManifest, +} from '../../../src/storage/artifactManifest.js'; +import { ArtifactHealthSummarySchema } from '../../../src/protocol/messages.js'; +import { writeArtifactManifest } from '../../../src/storage/artifactManifest.js'; +import { computeArtifactHealth } from '../../../src/storage/artifactHealth.js'; +import { + artifactPath, + ensureArtifactsDir, +} from '../../../src/storage/artifactPaths.js'; + +const temporaryDirectories: string[] = []; + +afterEach(async () => { + await Promise.all( + temporaryDirectories + .splice(0) + .map((directory) => rm(directory, { recursive: true, force: true })), + ); +}); + +async function createSessionDir(sessionId = 'session-01'): Promise { + const home = await realpath( + await mkdtemp(join(tmpdir(), 'agent-terminal-artifact-health-')), + ); + temporaryDirectories.push(home); + return join(home, sessionId); +} + +function createArtifactEntry( + overrides: Partial = {}, +): ArtifactEntry { + return { + id: '01JQ0000000000000000000000', + kind: 'snapshot', + filename: 'snapshot-4-structured.json', + sessionId: 'session-01', + capturedAtSeq: 4, + createdAt: '2026-03-20T12:00:00.000Z', + metadata: { + format: 'structured', + cols: 80, + rows: 24, + cursorRow: 1, + cursorCol: 2, + }, + ...overrides, + }; +} + +async function writeManifestAndFiles( + sessionDir: string, + artifacts: ArtifactEntry[], + filenamesOnDisk: string[], +): Promise { + const manifest: ArtifactManifest = { + version: 1, + sessionId: 'session-01', + artifacts, + }; + + await writeArtifactManifest(sessionDir, manifest); + await ensureArtifactsDir(sessionDir); + await Promise.all( + filenamesOnDisk.map((filename) => + writeFile(artifactPath(sessionDir, filename), `${filename}\n`, 'utf8'), + ), + ); +} + +describe('computeArtifactHealth', () => { + it('returns no-artifacts when no manifest file exists', async () => { + const sessionDir = await createSessionDir(); + + await expect(computeArtifactHealth(sessionDir)).resolves.toEqual({ + total: 0, + byKind: {}, + missingCount: 0, + health: 'no-artifacts', + }); + }); + + it('returns no-artifacts for an empty manifest', async () => { + const sessionDir = await createSessionDir(); + + await writeArtifactManifest(sessionDir, { + version: 1, + sessionId: 'session-01', + artifacts: [], + }); + + await expect(computeArtifactHealth(sessionDir)).resolves.toEqual({ + total: 0, + byKind: {}, + missingCount: 0, + health: 'no-artifacts', + }); + }); + + it('returns healthy when all manifest artifacts exist on disk', async () => { + const sessionDir = await createSessionDir(); + const artifacts = [ + createArtifactEntry(), + createArtifactEntry({ + id: '01JQ0000000000000000000001', + kind: 'screenshot', + filename: 'screenshot-5-reference-dark.png', + capturedAtSeq: 5, + metadata: { + profileName: 'reference-dark', + cols: 80, + rows: 24, + }, + }), + ]; + + await writeManifestAndFiles( + sessionDir, + artifacts, + artifacts.map((artifact) => artifact.filename), + ); + + const summary = await computeArtifactHealth(sessionDir); + + expect(summary).toEqual({ + total: 2, + byKind: { + snapshot: 1, + screenshot: 1, + }, + missingCount: 0, + health: 'healthy', + }); + expect(ArtifactHealthSummarySchema.safeParse(summary).success).toBe(true); + }); + + it('returns missing-artifacts with missing details when files are absent', async () => { + const sessionDir = await createSessionDir(); + const artifacts = [ + createArtifactEntry(), + createArtifactEntry({ + id: '01JQ0000000000000000000001', + kind: 'video', + filename: 'video-6-reference-dark.mp4', + capturedAtSeq: 6, + metadata: { + profileName: 'reference-dark', + durationMs: 1000, + }, + }), + createArtifactEntry({ + id: '01JQ0000000000000000000002', + kind: 'recording', + filename: 'recording-7-asciicast.cast', + capturedAtSeq: 7, + metadata: { + format: 'asciicast', + }, + }), + ]; + + await writeManifestAndFiles( + sessionDir, + artifacts, + artifacts.slice(0, 1).map((artifact) => artifact.filename), + ); + + const summary = await computeArtifactHealth(sessionDir); + + expect(summary).toEqual({ + total: 3, + byKind: { + snapshot: 1, + video: 1, + recording: 1, + }, + missingCount: 2, + health: 'missing-artifacts', + missing: [ + { + id: '01JQ0000000000000000000001', + kind: 'video', + filename: 'video-6-reference-dark.mp4', + }, + { + id: '01JQ0000000000000000000002', + kind: 'recording', + filename: 'recording-7-asciicast.cast', + }, + ], + }); + expect(ArtifactHealthSummarySchema.safeParse(summary).success).toBe(true); + }); + + it('counts mixed artifact kinds correctly', async () => { + const sessionDir = await createSessionDir(); + const artifacts = [ + createArtifactEntry(), + createArtifactEntry({ + id: '01JQ0000000000000000000001', + kind: 'snapshot', + filename: 'snapshot-5-text.json', + capturedAtSeq: 5, + metadata: { + format: 'text', + rows: 24, + cols: 80, + }, + }), + createArtifactEntry({ + id: '01JQ0000000000000000000002', + kind: 'screenshot', + filename: 'screenshot-6-reference-light.png', + capturedAtSeq: 6, + metadata: { + profileName: 'reference-light', + cols: 80, + rows: 24, + }, + }), + createArtifactEntry({ + id: '01JQ0000000000000000000003', + kind: 'video', + filename: 'video-7-reference-light.mp4', + capturedAtSeq: 7, + metadata: { + profileName: 'reference-light', + durationMs: 1000, + }, + }), + ]; + + await writeManifestAndFiles( + sessionDir, + artifacts, + artifacts.map((artifact) => artifact.filename), + ); + + await expect(computeArtifactHealth(sessionDir)).resolves.toMatchObject({ + total: 4, + byKind: { + snapshot: 2, + screenshot: 1, + video: 1, + }, + missingCount: 0, + health: 'healthy', + }); + }); + + it('returns manifest-invalid for invalid manifest JSON', async () => { + const sessionDir = await createSessionDir(); + + await ensureArtifactsDir(sessionDir); + await writeFile(artifactPath(sessionDir, 'manifest.json'), '{invalid', 'utf8'); + + await expect(computeArtifactHealth(sessionDir)).resolves.toEqual({ + total: 0, + byKind: {}, + missingCount: 0, + health: 'manifest-invalid', + }); + }); +}); From 9782608b710dd8a570631ee6135656c1cd683d8b Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 25 Mar 2026 08:22:32 +0000 Subject: [PATCH 05/14] feat: add failure origin tracking and termination category derivation --- src/host/lifecycle.ts | 6 +- src/host/sessionState.ts | 12 +- src/host/terminationCategory.ts | 34 ++++++ test/helpers.ts | 1 + test/integration/lifecycle.test.ts | 8 +- test/unit/host/terminationCategory.test.ts | 136 +++++++++++++++++++++ 6 files changed, 194 insertions(+), 3 deletions(-) create mode 100644 src/host/terminationCategory.ts create mode 100644 test/unit/host/terminationCategory.test.ts diff --git a/src/host/lifecycle.ts b/src/host/lifecycle.ts index a017ff7..e2472f1 100644 --- a/src/host/lifecycle.ts +++ b/src/host/lifecycle.ts @@ -8,7 +8,7 @@ import { ulid } from 'ulid'; import { CliError } from '../cli/errors.js'; import { ERROR_CODES, makeCliError } from '../protocol/errors.js'; -import type { SessionRecord } from '../protocol/schemas.js'; +import type { FailureOrigin, SessionRecord } from '../protocol/schemas.js'; import { ensureHome, resolveHome } from '../storage/home.js'; import { readManifest, @@ -655,6 +655,7 @@ export async function reconcileSession( let reconciledStatus: SessionRecord['status']; let failureReason: string | undefined; + let failureOrigin: FailureOrigin | undefined; switch (manifest.status) { case 'running': @@ -663,6 +664,7 @@ export async function reconcileSession( manifest.hostPid !== null ? `host process died unexpectedly (pid: ${String(manifest.hostPid)})` : 'host process died unexpectedly'; + failureOrigin = 'host-death'; break; case 'exiting': reconciledStatus = 'exited'; @@ -673,6 +675,7 @@ export async function reconcileSession( default: reconciledStatus = 'failed'; failureReason = `unexpected pre-reconcile status: ${manifest.status}`; + failureOrigin = 'unknown'; break; } @@ -683,6 +686,7 @@ export async function reconcileSession( hostPid: null, childPid: null, ...(failureReason !== undefined ? { failureReason } : {}), + ...(failureOrigin !== undefined ? { failureOrigin } : {}), }; await writeManifest(manifestFile, reconciledManifest); diff --git a/src/host/sessionState.ts b/src/host/sessionState.ts index 6c32cfe..7cb1a66 100644 --- a/src/host/sessionState.ts +++ b/src/host/sessionState.ts @@ -1,4 +1,4 @@ -import type { SessionRecord } from '../protocol/schemas.js'; +import type { FailureOrigin, SessionRecord } from '../protocol/schemas.js'; import { invariant } from '../util/assert.js'; export class SessionState { @@ -67,6 +67,16 @@ export class SessionState { this.touch(); } + public setFailureOrigin(origin: FailureOrigin): void { + invariant( + this.#record.status === 'failed', + `Cannot set failureOrigin on ${this.#record.status} session`, + ); + + this.#record.failureOrigin = origin; + this.touch(); + } + public requestDestroy(): void { invariant( this.#record.status !== 'destroyed', diff --git a/src/host/terminationCategory.ts b/src/host/terminationCategory.ts new file mode 100644 index 0000000..7733296 --- /dev/null +++ b/src/host/terminationCategory.ts @@ -0,0 +1,34 @@ +import type { TerminationCategory } from '../protocol/messages.js'; +import type { SessionRecord } from '../protocol/schemas.js'; + +export function deriveTerminationCategory( + session: SessionRecord, +): TerminationCategory { + switch (session.status) { + case 'running': + case 'exiting': + return 'running'; + case 'destroying': + case 'destroyed': + return 'destroyed'; + case 'failed': + switch (session.failureOrigin) { + case 'host-death': + return 'host-death'; + case 'renderer-failure': + return 'renderer-failure'; + default: + return 'unknown'; + } + case 'exited': + if (session.exitSignal !== null) { + return 'signal-exit'; + } + if (session.exitCode === 0 || session.exitCode === null) { + return 'clean-exit'; + } + return 'nonzero-exit'; + default: + return 'unknown'; + } +} diff --git a/test/helpers.ts b/test/helpers.ts index 04c4808..71e8135 100644 --- a/test/helpers.ts +++ b/test/helpers.ts @@ -38,6 +38,7 @@ export interface SessionRecord { childPid: number | null; exitCode: number | null; exitSignal: string | null; + failureOrigin?: string; failureReason?: string; } diff --git a/test/integration/lifecycle.test.ts b/test/integration/lifecycle.test.ts index 8c7e659..a50fb2a 100644 --- a/test/integration/lifecycle.test.ts +++ b/test/integration/lifecycle.test.ts @@ -415,7 +415,7 @@ describe('lifecycle integration', { timeout: 30000 }, () => { expect(errorEnvelope.error.message).toContain(missingShellPath); }); - it('host crash reconciles to failed with failureReason', async () => { + it('host crash reconciles to failed with failureReason and failureOrigin', async () => { const sessionId = createSession(testHome, ['/bin/sh', '-c', 'exec cat']); const beforeCrash = inspectSession(testHome, sessionId); @@ -430,6 +430,7 @@ describe('lifecycle integration', { timeout: 30000 }, () => { const failureReason = afterCrash.failureReason as string; expect(failureReason.length).toBeGreaterThan(0); expect(failureReason).toContain('host process died unexpectedly'); + expect(afterCrash.failureOrigin).toBe('host-death'); expect(afterCrash.hostPid).toBeNull(); expect(afterCrash.childPid).toBeNull(); }); @@ -550,6 +551,11 @@ describe('lifecycle integration', { timeout: 30000 }, () => { failureReason, 'failureReason should explain that the host died unexpectedly', ).toContain('host process died unexpectedly'); + expect( + reconciledSession.failureOrigin, + 'reconciled session should keep a structured failureOrigin', + ).toBe('host-death'); + expect( failureReason, 'failureReason should preserve the stale host PID that was reconciled', diff --git a/test/unit/host/terminationCategory.test.ts b/test/unit/host/terminationCategory.test.ts new file mode 100644 index 0000000..4e3c8f3 --- /dev/null +++ b/test/unit/host/terminationCategory.test.ts @@ -0,0 +1,136 @@ +import { describe, expect, it } from 'vitest'; + +import { deriveTerminationCategory } from '../../../src/host/terminationCategory.js'; +import type { SessionRecord } from '../../../src/protocol/schemas.js'; + +function createSessionRecord( + overrides: Partial = {}, +): SessionRecord { + return { + version: 1, + sessionId: 'session-01', + createdAt: '2026-03-19T12:00:00.000Z', + updatedAt: '2026-03-19T12:00:01.000Z', + status: 'running', + command: ['/bin/sh'], + cwd: '/tmp/workspace', + cols: 80, + rows: 24, + hostPid: 123, + childPid: 456, + exitCode: null, + exitSignal: null, + ...overrides, + }; +} + +describe('deriveTerminationCategory', () => { + it('treats running sessions as running', () => { + expect(deriveTerminationCategory(createSessionRecord())).toBe('running'); + }); + + it('treats exiting sessions as running', () => { + expect( + deriveTerminationCategory(createSessionRecord({ status: 'exiting' })), + ).toBe('running'); + }); + + it('maps destroyed sessions to destroyed', () => { + expect( + deriveTerminationCategory(createSessionRecord({ status: 'destroyed' })), + ).toBe('destroyed'); + }); + + it('maps destroying sessions to destroyed', () => { + expect( + deriveTerminationCategory(createSessionRecord({ status: 'destroying' })), + ).toBe('destroyed'); + }); + + it('maps failed host-death sessions to host-death', () => { + expect( + deriveTerminationCategory( + createSessionRecord({ + status: 'failed', + failureOrigin: 'host-death', + }), + ), + ).toBe('host-death'); + }); + + it('maps failed renderer-failure sessions to renderer-failure', () => { + expect( + deriveTerminationCategory( + createSessionRecord({ + status: 'failed', + failureOrigin: 'renderer-failure', + }), + ), + ).toBe('renderer-failure'); + }); + + it('maps failed sessions without an origin to unknown', () => { + expect( + deriveTerminationCategory(createSessionRecord({ status: 'failed' })), + ).toBe('unknown'); + }); + + it('maps failed sessions with other origins to unknown', () => { + expect( + deriveTerminationCategory( + createSessionRecord({ + status: 'failed', + failureOrigin: 'storage-corruption', + }), + ), + ).toBe('unknown'); + }); + + it('maps zero-exit sessions to clean-exit', () => { + expect( + deriveTerminationCategory( + createSessionRecord({ + status: 'exited', + exitCode: 0, + exitSignal: null, + }), + ), + ).toBe('clean-exit'); + }); + + it('maps null-exit sessions to clean-exit', () => { + expect( + deriveTerminationCategory( + createSessionRecord({ + status: 'exited', + exitCode: null, + exitSignal: null, + }), + ), + ).toBe('clean-exit'); + }); + + it('maps non-zero exits to nonzero-exit', () => { + expect( + deriveTerminationCategory( + createSessionRecord({ + status: 'exited', + exitCode: 1, + exitSignal: null, + }), + ), + ).toBe('nonzero-exit'); + }); + + it('maps signal exits to signal-exit', () => { + expect( + deriveTerminationCategory( + createSessionRecord({ + status: 'exited', + exitCode: null, + exitSignal: 'SIGTERM', + }), + ), + ).toBe('signal-exit'); + }); +}); From 56276de7595165cb1438ae086fbbd6a96a38e024 Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 25 Mar 2026 08:29:45 +0000 Subject: [PATCH 06/14] fix: make durationMs required in DoctorCheck interface --- src/cli/commands/doctor.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cli/commands/doctor.ts b/src/cli/commands/doctor.ts index d6648e9..257307a 100644 --- a/src/cli/commands/doctor.ts +++ b/src/cli/commands/doctor.ts @@ -142,7 +142,7 @@ export interface DoctorCheck { name: string; status: DoctorCheckStatus; message: string; - durationMs?: number; + durationMs: number; } export interface DoctorCheckGroups { From 9b14ed28239f4fb8386ba4d4019c7578d047384b Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 25 Mar 2026 08:34:05 +0000 Subject: [PATCH 07/14] feat: enrich inspect output envelopes --- src/cli/commands/inspect.ts | 57 +++++++- test/unit/commands/golden-envelopes.test.ts | 139 ++++++++++++++++++++ test/unit/commands/inspect.test.ts | 126 ++++++++++++++++-- 3 files changed, 307 insertions(+), 15 deletions(-) create mode 100644 test/unit/commands/golden-envelopes.test.ts diff --git a/src/cli/commands/inspect.ts b/src/cli/commands/inspect.ts index 5cfb03f..0af6602 100644 --- a/src/cli/commands/inspect.ts +++ b/src/cli/commands/inspect.ts @@ -7,11 +7,13 @@ import type { SessionRecord } from '../../protocol/schemas.js'; import { CliError } from '../errors.js'; import type { CommandContext } from '../context.js'; -import { emitSuccess } from '../output.js'; import { countEventLogEntries } from '../../host/eventLog.js'; import { reconcileSession } from '../../host/lifecycle.js'; import { sendRpc } from '../../host/rpcClient.js'; +import { deriveTerminationCategory } from '../../host/terminationCategory.js'; import { ERROR_CODES, makeCliError } from '../../protocol/errors.js'; +import { emitSuccess } from '../output.js'; +import { computeArtifactHealth } from '../../storage/artifactHealth.js'; import { readManifest, readManifestIfExists } from '../../storage/manifests.js'; import { eventLogPath, @@ -34,6 +36,20 @@ function computeUptime(session: SessionRecord): number { return Math.max(0, endAt - createdAt); } +function formatArtifactKinds(byKind: Record): string { + const kindEntries = Object.entries(byKind).sort(([leftKind], [rightKind]) => + leftKind.localeCompare(rightKind), + ); + + if (kindEntries.length === 0) { + return 'none'; + } + + return kindEntries + .map(([kind, count]) => `${kind}: ${String(count)}`) + .join(', '); +} + function formatSessionLines(result: InspectResult): string[] { const { session, eventCount, uptime } = result; const lines = [ @@ -45,12 +61,39 @@ function formatSessionLines(result: InspectResult): string[] { `Created At: ${session.createdAt}`, `Updated At: ${session.updatedAt}`, `Event Count: ${String(eventCount)}`, - `Uptime: ${String(uptime)}ms`, + ]; + + if (result.lastEventSeq !== undefined) { + lines.push(`Last Event Seq: ${String(result.lastEventSeq)}`); + } + + lines.push(`Uptime: ${String(uptime)}ms`); + + if (result.artifacts !== undefined) { + lines.push( + `Artifacts: ${String(result.artifacts.total)} total (${formatArtifactKinds(result.artifacts.byKind)}), health: ${result.artifacts.health}`, + ); + } + + if (result.usedOfflineReplay === true) { + lines.push('Offline Replay: yes'); + } + + lines.push( `Host PID: ${String(session.hostPid ?? '-')}`, `Child PID: ${String(session.childPid ?? '-')}`, `Exit Code: ${String(session.exitCode ?? '-')}`, `Exit Signal: ${session.exitSignal ?? '-'}`, - ]; + ); + + if ( + session.status !== 'running' && + session.status !== 'exiting' && + result.terminationCategory !== undefined + ) { + lines.push(`Termination: ${result.terminationCategory}`); + } + if (session.failureReason !== undefined) { lines.push(`Failure Reason: ${session.failureReason}`); } @@ -64,6 +107,7 @@ export async function runInspectCommand( const sessionDirectory = sessionDir(home, options.sessionId); const manifestFile = manifestPath(sessionDirectory); let session = await readManifestIfExists(manifestFile); + let usedOfflineReplay = false; if (session === null) { throw makeCliError(ERROR_CODES.SESSION_NOT_FOUND, { @@ -100,6 +144,7 @@ export async function runInspectCommand( ) { await reconcileSession(sessionDirectory); session = await readManifest(manifestFile); + usedOfflineReplay = true; } else { throw error; } @@ -108,10 +153,16 @@ export async function runInspectCommand( const eventCount = await countEventLogEntries(eventLogPath(sessionDirectory)); const uptime = computeUptime(session); + const artifacts = await computeArtifactHealth(sessionDirectory); + const terminationCategory = deriveTerminationCategory(session); const result: InspectResult = { session, eventCount, uptime, + lastEventSeq: eventCount > 0 ? eventCount - 1 : undefined, + terminationCategory, + artifacts, + usedOfflineReplay, }; emitSuccess({ diff --git a/test/unit/commands/golden-envelopes.test.ts b/test/unit/commands/golden-envelopes.test.ts new file mode 100644 index 0000000..ce273c9 --- /dev/null +++ b/test/unit/commands/golden-envelopes.test.ts @@ -0,0 +1,139 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +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 { InspectResultSchema } from '../../../src/protocol/messages.js'; + +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, + }; +} + +describe('JSON envelope contracts', () => { + beforeEach(() => { + vi.useFakeTimers(); + vi.setSystemTime(new Date('2026-03-25T15:00:00.000Z')); + }); + + 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, + }); + + expect(createSuccessEnvelope('inspect', result)).toEqual({ + ok: true, + command: 'inspect', + timestamp: '2026-03-25T15:00:00.000Z', + result, + }); + }); + + it('locks the version success envelope shape', async () => { + const result = await buildVersionResult(); + + expect(createSuccessEnvelope('version', result)).toEqual({ + ok: true, + command: 'version', + timestamp: '2026-03-25T15:00:00.000Z', + result, + }); + }); + + 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: '2026-03-25T15:00:00.000Z', + 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: '2026-03-25T15:00:00.000Z', + error: { + code: 'HOST_UNREACHABLE', + message: 'Session host is unreachable.', + retryable: true, + details: { + sessionId: 'session-01', + }, + }, + }); + }); +}); diff --git a/test/unit/commands/inspect.test.ts b/test/unit/commands/inspect.test.ts index 0ed79b1..2944bf3 100644 --- a/test/unit/commands/inspect.test.ts +++ b/test/unit/commands/inspect.test.ts @@ -3,13 +3,14 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { ERROR_CODES, makeCliError } from '../../../src/protocol/errors.js'; const mocks = vi.hoisted(() => ({ + computeArtifactHealth: vi.fn(), countEventLogEntries: vi.fn(), + deriveTerminationCategory: vi.fn(), emitSuccess: vi.fn(), reconcileSession: vi.fn(), sendRpc: vi.fn(), readManifest: vi.fn(), readManifestIfExists: vi.fn(), - resolveHome: vi.fn(), sessionDir: vi.fn(), eventLogPath: vi.fn(), manifestPath: vi.fn(), @@ -32,15 +33,19 @@ vi.mock('../../../src/host/rpcClient.js', () => ({ sendRpc: mocks.sendRpc, })); +vi.mock('../../../src/host/terminationCategory.js', () => ({ + deriveTerminationCategory: mocks.deriveTerminationCategory, +})); + +vi.mock('../../../src/storage/artifactHealth.js', () => ({ + computeArtifactHealth: mocks.computeArtifactHealth, +})); + vi.mock('../../../src/storage/manifests.js', () => ({ readManifest: mocks.readManifest, readManifestIfExists: mocks.readManifestIfExists, })); -vi.mock('../../../src/storage/home.js', () => ({ - resolveHome: mocks.resolveHome, -})); - vi.mock('../../../src/storage/sessionPaths.js', () => ({ sessionDir: mocks.sessionDir, eventLogPath: mocks.eventLogPath, @@ -61,12 +66,22 @@ const TEST_CONTEXT = { configFile: null, } as const; +const DEFAULT_ARTIFACT_HEALTH = { + total: 2, + byKind: { + snapshot: 1, + screenshot: 1, + }, + missingCount: 0, + health: 'healthy' as const, +}; + function getLastEmitSuccessPayload(): unknown { return mocks.emitSuccess.mock.calls.at(-1)?.[0] as unknown; } function createSessionRecord( - status: 'running' | 'exiting' | 'exited' = 'running', + status: 'running' | 'exiting' | 'exited' | 'failed' = 'running', ) { return { version: 1, @@ -74,12 +89,18 @@ function createSessionRecord( createdAt: '2026-03-19T12:00:00.000Z', updatedAt: '2026-03-19T12:00:01.000Z', status, + ...(status === 'failed' + ? { + failureOrigin: 'host-death' as const, + failureReason: 'host exited unexpectedly', + } + : {}), command: ['/bin/sh'], cwd: '/tmp/workspace', cols: 80, rows: 24, - hostPid: status === 'exited' ? null : 123, - childPid: status === 'exited' ? null : 456, + hostPid: status === 'running' || status === 'exiting' ? 123 : null, + childPid: status === 'running' || status === 'exiting' ? 456 : null, exitCode: status === 'exited' ? 0 : null, exitSignal: null, }; @@ -92,7 +113,6 @@ afterEach(() => { describe('inspect command', () => { beforeEach(() => { vi.clearAllMocks(); - mocks.resolveHome.mockReturnValue('/tmp/agent-terminal'); mocks.sessionDir.mockImplementation( (_home: string, sessionId: string) => `/tmp/agent-terminal/sessions/${sessionId}`, @@ -106,7 +126,9 @@ describe('inspect command', () => { mocks.socketPath.mockImplementation( (sessionDirectory: string) => `${sessionDirectory}/rpc.sock`, ); + mocks.computeArtifactHealth.mockResolvedValue(DEFAULT_ARTIFACT_HEALTH); mocks.countEventLogEntries.mockResolvedValue(2); + mocks.deriveTerminationCategory.mockReturnValue('running'); mocks.readManifestIfExists.mockResolvedValue( createSessionRecord('running'), ); @@ -120,6 +142,7 @@ describe('inspect command', () => { Date.parse('2026-03-19T12:00:05.000Z'), ); mocks.sendRpc.mockResolvedValue({ session: liveSession }); + mocks.deriveTerminationCategory.mockReturnValue('running'); await runInspectCommand({ context: TEST_CONTEXT, @@ -134,6 +157,10 @@ describe('inspect command', () => { expect(mocks.countEventLogEntries).toHaveBeenCalledWith( '/tmp/agent-terminal/sessions/session-01/events.jsonl', ); + expect(mocks.computeArtifactHealth).toHaveBeenCalledWith( + '/tmp/agent-terminal/sessions/session-01', + ); + expect(mocks.deriveTerminationCategory).toHaveBeenCalledWith(liveSession); const emitted = getLastEmitSuccessPayload() as { command: string; json: boolean; @@ -141,6 +168,10 @@ describe('inspect command', () => { session: ReturnType; eventCount: number; uptime: number; + lastEventSeq?: number; + terminationCategory?: string; + artifacts?: typeof DEFAULT_ARTIFACT_HEALTH; + usedOfflineReplay?: boolean; }; lines: string[]; }; @@ -153,12 +184,23 @@ describe('inspect command', () => { session: liveSession, eventCount: 2, uptime: 5000, + lastEventSeq: 1, + terminationCategory: 'running', + artifacts: DEFAULT_ARTIFACT_HEALTH, + usedOfflineReplay: false, }, }), ); expect(emitted.lines).toEqual( - expect.arrayContaining(['Event Count: 2', 'Uptime: 5000ms']), + expect.arrayContaining([ + 'Event Count: 2', + 'Last Event Seq: 1', + 'Uptime: 5000ms', + 'Artifacts: 2 total (screenshot: 1, snapshot: 1), health: healthy', + ]), ); + expect(emitted.lines).not.toContain('Offline Replay: yes'); + expect(emitted.lines).not.toContain('Termination: running'); }); it('rejects malformed inspect RPC responses', async () => { @@ -181,11 +223,14 @@ describe('inspect command', () => { }); it('falls back to reconciled manifest data when the host is unreachable', async () => { + const reconciledSession = createSessionRecord('exited'); mocks.sendRpc.mockRejectedValue( makeCliError(ERROR_CODES.HOST_UNREACHABLE, { message: 'Session host is unreachable.', }), ); + mocks.readManifest.mockResolvedValue(reconciledSession); + mocks.deriveTerminationCategory.mockReturnValue('clean-exit'); await runInspectCommand({ context: TEST_CONTEXT, @@ -202,16 +247,73 @@ describe('inspect command', () => { expect(mocks.countEventLogEntries).toHaveBeenCalledWith( '/tmp/agent-terminal/sessions/session-01/events.jsonl', ); - expect(mocks.emitSuccess).toHaveBeenCalledWith( + expect(mocks.computeArtifactHealth).toHaveBeenCalledWith( + '/tmp/agent-terminal/sessions/session-01', + ); + expect(mocks.deriveTerminationCategory).toHaveBeenCalledWith( + reconciledSession, + ); + + const emitted = getLastEmitSuccessPayload() as { + command: string; + json: boolean; + result: { + session: ReturnType; + eventCount: number; + uptime: number; + lastEventSeq?: number; + terminationCategory?: string; + artifacts?: typeof DEFAULT_ARTIFACT_HEALTH; + usedOfflineReplay?: boolean; + }; + lines: string[]; + }; + + expect(emitted).toEqual( expect.objectContaining({ command: 'inspect', json: true, result: { - session: createSessionRecord('exited'), + session: reconciledSession, eventCount: 2, uptime: 1000, + lastEventSeq: 1, + terminationCategory: 'clean-exit', + artifacts: DEFAULT_ARTIFACT_HEALTH, + usedOfflineReplay: true, }, }), ); + expect(emitted.lines).toEqual( + expect.arrayContaining([ + 'Offline Replay: yes', + 'Termination: clean-exit', + ]), + ); + }); + + it('omits last event sequence from human output when the event log is empty', async () => { + const liveSession = createSessionRecord('running'); + mocks.countEventLogEntries.mockResolvedValue(0); + mocks.sendRpc.mockResolvedValue({ session: liveSession }); + + await runInspectCommand({ + context: TEST_CONTEXT, + json: false, + sessionId: 'session-01', + }); + + const emitted = getLastEmitSuccessPayload() as { + result: { + lastEventSeq?: number; + }; + lines: string[]; + }; + + expect(emitted.result.lastEventSeq).toBeUndefined(); + expect(emitted.lines).toContain('Event Count: 0'); + expect(emitted.lines).not.toContain( + expect.stringMatching(/^Last Event Seq:/), + ); }); }); From 2dda6189aa2d97fa40197b8995a67829b2bd72d5 Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 25 Mar 2026 08:35:48 +0000 Subject: [PATCH 08/14] style: fix formatting in artifactHealth files --- src/storage/artifactHealth.ts | 4 +++- test/unit/storage/artifactHealth.test.ts | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/storage/artifactHealth.ts b/src/storage/artifactHealth.ts index bdea6dc..baa2750 100644 --- a/src/storage/artifactHealth.ts +++ b/src/storage/artifactHealth.ts @@ -100,7 +100,9 @@ export async function computeArtifactHealth( } }), ) - ).filter((artifact): artifact is NonNullable => artifact !== null); + ).filter( + (artifact): artifact is NonNullable => artifact !== null, + ); const missingCount = missingArtifacts.length; diff --git a/test/unit/storage/artifactHealth.test.ts b/test/unit/storage/artifactHealth.test.ts index 63e9c67..30f04a9 100644 --- a/test/unit/storage/artifactHealth.test.ts +++ b/test/unit/storage/artifactHealth.test.ts @@ -259,7 +259,11 @@ describe('computeArtifactHealth', () => { const sessionDir = await createSessionDir(); await ensureArtifactsDir(sessionDir); - await writeFile(artifactPath(sessionDir, 'manifest.json'), '{invalid', 'utf8'); + await writeFile( + artifactPath(sessionDir, 'manifest.json'), + '{invalid', + 'utf8', + ); await expect(computeArtifactHealth(sessionDir)).resolves.toEqual({ total: 0, From 8caaea202adf579b34bd42a3dca48f30b4b21fa0 Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Wed, 25 Mar 2026 08:51:33 +0000 Subject: [PATCH 09/14] docs: add Week 6 dogfood proof bundles --- .../agent-terminal-home.txt | 1 + .../command-status.tsv | 7 + .../20260325-week6-a-cli-contract/commands.sh | 11 + .../20260325-week6-a-cli-contract/index.html | 516 +++++++++++++ .../logs/01-version.json | 17 + .../logs/01-version.stderr.txt | 0 .../logs/02-create.json | 12 + .../logs/02-create.stderr.txt | 0 .../logs/03-wait-text.json | 13 + .../logs/03-wait-text.stderr.txt | 0 .../logs/04-inspect-running.json | 41 ++ .../logs/04-inspect-running.stderr.txt | 0 .../logs/05-wait-exit.json | 9 + .../logs/05-wait-exit.stderr.txt | 0 .../logs/06-inspect-exited.json | 41 ++ .../logs/06-inspect-exited.stderr.txt | 0 .../logs/07-session.json | 23 + .../logs/08-events.jsonl | 2 + .../manifest.json | 30 + .../20260325-week6-a-cli-contract/notes.md | 28 + .../recordings/.gitkeep | 0 .../screenshots/.gitkeep | 0 .../session-id.txt | 1 + .../snapshots/.gitkeep | 0 .../videos/.gitkeep | 0 .../agent-terminal-home.txt | 1 + .../command-status.tsv | 7 + .../commands.sh | 11 + .../index.html | 564 ++++++++++++++ .../logs/01-create.json | 12 + .../logs/01-create.stderr.txt | 0 .../logs/02-wait-exit.json | 9 + .../logs/02-wait-exit.stderr.txt | 0 .../logs/03-screenshot.json | 20 + .../logs/03-screenshot.stderr.txt | 0 .../logs/04-session-artifact-manifest.json | 26 + .../logs/05-inspect-healthy.json | 44 ++ .../logs/05-inspect-healthy.stderr.txt | 0 .../logs/06-delete-artifact.json | 1 + .../logs/07-inspect-missing.json | 51 ++ .../logs/07-inspect-missing.stderr.txt | 0 .../logs/08-session.json | 24 + .../manifest.json | 30 + .../20260325-week6-b-artifact-health/notes.md | 24 + .../recordings/.gitkeep | 0 .../screenshots/.gitkeep | 0 .../screenshots/01-color-grid.png | Bin 0 -> 48895 bytes .../session-id.txt | 1 + .../snapshots/.gitkeep | 0 .../videos/.gitkeep | 0 .../agent-terminal-home.txt | 1 + .../command-status.tsv | 12 + .../commands.sh | 16 + .../index.html | 688 ++++++++++++++++++ .../logs/01-create-exit-42.json | 12 + .../logs/01-create-exit-42.stderr.txt | 0 .../logs/02-wait-exit-42.json | 9 + .../logs/02-wait-exit-42.stderr.txt | 0 .../logs/03-inspect-exit-42.json | 41 ++ .../logs/03-inspect-exit-42.stderr.txt | 0 .../logs/04-create-exit-0.json | 12 + .../logs/04-create-exit-0.stderr.txt | 0 .../logs/05-wait-exit-0.json | 9 + .../logs/05-wait-exit-0.stderr.txt | 0 .../logs/06-inspect-exit-0.json | 41 ++ .../logs/06-inspect-exit-0.stderr.txt | 0 .../logs/07-create-host-death.json | 12 + .../logs/07-create-host-death.stderr.txt | 0 .../logs/08-wait-text-host.json | 13 + .../logs/08-wait-text-host.stderr.txt | 0 .../logs/09-inspect-live.json | 41 ++ .../logs/09-inspect-live.stderr.txt | 0 .../logs/10-kill-host.json | 1 + .../logs/10-kill-host.stderr.txt | 0 .../logs/11-inspect-host-death.json | 43 ++ .../logs/11-inspect-host-death.stderr.txt | 0 .../logs/12-host-death-session.json | 25 + .../manifest.json | 34 + .../notes.md | 31 + .../recordings/.gitkeep | 0 .../screenshots/.gitkeep | 0 .../session-ids.txt | 4 + .../snapshots/.gitkeep | 0 .../videos/.gitkeep | 0 .../agent-terminal-home.txt | 1 + .../command-status.tsv | 14 + .../commands.sh | 16 + .../index.html | 406 +++++++++++ .../logs/01-review-single.stderr.txt | 1 + .../logs/01-review-single.txt | 1 + .../logs/02-review-all.stderr.txt | 66 ++ .../logs/02-review-all.txt | 37 + .../logs/03-index-files.stderr.txt | 0 .../logs/03-index-files.txt | 37 + .../logs/04-playwright.stderr.txt | 0 .../logs/04-playwright.txt | 0 .../logs/05-cleanup-home.stderr.txt | 0 .../logs/05-cleanup-home.txt | 1 + .../logs/06-cleanup-extra-indexes.stderr.txt | 0 .../logs/06-cleanup-extra-indexes.txt | 33 + .../logs/07-review-all-final.stderr.txt | 65 ++ .../logs/07-review-all-final.txt | 37 + .../logs/08-week6-index-files.stderr.txt | 0 .../logs/08-week6-index-files.txt | 4 + .../09-cleanup-extra-indexes-final.stderr.txt | 0 .../logs/09-cleanup-extra-indexes-final.txt | 33 + .../logs/10-review-all-post-edit.stderr.txt | 65 ++ .../logs/10-review-all-post-edit.txt | 37 + .../11-week6-index-files-post-edit.stderr.txt | 0 .../logs/11-week6-index-files-post-edit.txt | 4 + ...cleanup-extra-indexes-post-edit.stderr.txt | 0 .../12-cleanup-extra-indexes-post-edit.txt | 33 + .../logs/13-review-d-final.stderr.txt | 1 + .../logs/13-review-d-final.txt | 1 + .../manifest.json | 38 + .../20260325-week6-d-review-surface/notes.md | 25 + .../recordings/.gitkeep | 0 .../screenshots/01-week6-a-review-page.png | Bin 0 -> 850891 bytes .../snapshots/.gitkeep | 0 .../videos/.gitkeep | 0 120 files changed, 3578 insertions(+) create mode 100644 dogfood/20260325-week6-a-cli-contract/agent-terminal-home.txt create mode 100644 dogfood/20260325-week6-a-cli-contract/command-status.tsv create mode 100755 dogfood/20260325-week6-a-cli-contract/commands.sh create mode 100644 dogfood/20260325-week6-a-cli-contract/index.html create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/01-version.json create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/01-version.stderr.txt create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/02-create.json create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/02-create.stderr.txt create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.json create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.stderr.txt create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.json create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.stderr.txt create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.json create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.stderr.txt create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.json create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.stderr.txt create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/07-session.json create mode 100644 dogfood/20260325-week6-a-cli-contract/logs/08-events.jsonl create mode 100644 dogfood/20260325-week6-a-cli-contract/manifest.json create mode 100644 dogfood/20260325-week6-a-cli-contract/notes.md create mode 100644 dogfood/20260325-week6-a-cli-contract/recordings/.gitkeep create mode 100644 dogfood/20260325-week6-a-cli-contract/screenshots/.gitkeep create mode 100644 dogfood/20260325-week6-a-cli-contract/session-id.txt create mode 100644 dogfood/20260325-week6-a-cli-contract/snapshots/.gitkeep create mode 100644 dogfood/20260325-week6-a-cli-contract/videos/.gitkeep create mode 100644 dogfood/20260325-week6-b-artifact-health/agent-terminal-home.txt create mode 100644 dogfood/20260325-week6-b-artifact-health/command-status.tsv create mode 100755 dogfood/20260325-week6-b-artifact-health/commands.sh create mode 100644 dogfood/20260325-week6-b-artifact-health/index.html create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/01-create.json create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/01-create.stderr.txt create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.json create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.stderr.txt create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.json create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.stderr.txt create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/04-session-artifact-manifest.json create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.json create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.stderr.txt create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/06-delete-artifact.json create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.json create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.stderr.txt create mode 100644 dogfood/20260325-week6-b-artifact-health/logs/08-session.json create mode 100644 dogfood/20260325-week6-b-artifact-health/manifest.json create mode 100644 dogfood/20260325-week6-b-artifact-health/notes.md create mode 100644 dogfood/20260325-week6-b-artifact-health/recordings/.gitkeep create mode 100644 dogfood/20260325-week6-b-artifact-health/screenshots/.gitkeep create mode 100644 dogfood/20260325-week6-b-artifact-health/screenshots/01-color-grid.png create mode 100644 dogfood/20260325-week6-b-artifact-health/session-id.txt create mode 100644 dogfood/20260325-week6-b-artifact-health/snapshots/.gitkeep create mode 100644 dogfood/20260325-week6-b-artifact-health/videos/.gitkeep create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/agent-terminal-home.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/command-status.tsv create mode 100755 dogfood/20260325-week6-c-failure-taxonomy/commands.sh create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/index.html create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.stderr.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/logs/12-host-death-session.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/manifest.json create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/notes.md create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/recordings/.gitkeep create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/screenshots/.gitkeep create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/session-ids.txt create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/snapshots/.gitkeep create mode 100644 dogfood/20260325-week6-c-failure-taxonomy/videos/.gitkeep create mode 100644 dogfood/20260325-week6-d-review-surface/agent-terminal-home.txt create mode 100644 dogfood/20260325-week6-d-review-surface/command-status.tsv create mode 100755 dogfood/20260325-week6-d-review-surface/commands.sh create mode 100644 dogfood/20260325-week6-d-review-surface/index.html create mode 100644 dogfood/20260325-week6-d-review-surface/logs/01-review-single.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/01-review-single.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/02-review-all.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/02-review-all.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/03-index-files.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/03-index-files.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/04-playwright.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/04-playwright.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.stderr.txt create mode 100644 dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.txt create mode 100644 dogfood/20260325-week6-d-review-surface/manifest.json create mode 100644 dogfood/20260325-week6-d-review-surface/notes.md create mode 100644 dogfood/20260325-week6-d-review-surface/recordings/.gitkeep create mode 100644 dogfood/20260325-week6-d-review-surface/screenshots/01-week6-a-review-page.png create mode 100644 dogfood/20260325-week6-d-review-surface/snapshots/.gitkeep create mode 100644 dogfood/20260325-week6-d-review-surface/videos/.gitkeep diff --git a/dogfood/20260325-week6-a-cli-contract/agent-terminal-home.txt b/dogfood/20260325-week6-a-cli-contract/agent-terminal-home.txt new file mode 100644 index 0000000..8d31126 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/agent-terminal-home.txt @@ -0,0 +1 @@ +/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 new file mode 100644 index 0000000..e69fb84 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/command-status.tsv @@ -0,0 +1,7 @@ +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 new file mode 100755 index 0000000..0d30961 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/commands.sh @@ -0,0 +1,11 @@ +#!/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 new file mode 100644 index 0000000..e5080e6 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/index.html @@ -0,0 +1,516 @@ + + + + + + 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.json01137dogfood/20260325-week6-a-cli-contract/logs/01-version.jsondogfood/20260325-week6-a-cli-contract/logs/01-version.stderr.txtnpx tsx src/cli/main.ts version --json
02-create.json01898dogfood/20260325-week6-a-cli-contract/logs/02-create.jsondogfood/20260325-week6-a-cli-contract/logs/02-create.stderr.txtnpx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo hello; sleep 5'
03-wait-text.json01738dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.jsondogfood/20260325-week6-a-cli-contract/logs/03-wait-text.stderr.txtnpx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --text hello --timeout 10000 --json
04-inspect-running.json01301dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.jsondogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.stderr.txtnpx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 --json
05-wait-exit.json01816dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.jsondogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.stderr.txtnpx tsx src/cli/main.ts wait 01KMJ2R5VRY4GS10VZ3VNG52Z1 --exit --timeout 10000 --json
06-inspect-exited.json01166dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.jsondogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.stderr.txtnpx tsx src/cli/main.ts inspect 01KMJ2R5VRY4GS10VZ3VNG52Z1 --json
+
+
+
+

Artifact inventory

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeSize
agent-terminal-home.txtsupport33 B
command-status.tsvsupport1.4 KB
commands.shscript561 B
logs/01-version.jsonsupport311 B
logs/01-version.stderr.txtsupport0 B
logs/02-create.jsonsupport251 B
logs/02-create.stderr.txtsupport0 B
logs/03-wait-text.jsonsupport235 B
logs/03-wait-text.stderr.txtsupport0 B
logs/04-inspect-running.jsonsupport983 B
logs/04-inspect-running.stderr.txtsupport0 B
logs/05-wait-exit.jsonsupport141 B
logs/05-wait-exit.stderr.txtsupport0 B
logs/06-inspect-exited.jsonsupport982 B
logs/06-inspect-exited.stderr.txtsupport0 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
+
+
+
+ + \ No newline at end of file diff --git a/dogfood/20260325-week6-a-cli-contract/logs/01-version.json b/dogfood/20260325-week6-a-cli-contract/logs/01-version.json new file mode 100644 index 0000000..c6f6c01 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/logs/01-version.json @@ -0,0 +1,17 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-a-cli-contract/logs/02-create.json b/dogfood/20260325-week6-a-cli-contract/logs/02-create.json new file mode 100644 index 0000000..5babaae --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/logs/02-create.json @@ -0,0 +1,12 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..0ec8fe3 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/logs/03-wait-text.json @@ -0,0 +1,13 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..7f910eb --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/logs/04-inspect-running.json @@ -0,0 +1,41 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..f956058 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/logs/05-wait-exit.json @@ -0,0 +1,9 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..a19d9eb --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/logs/06-inspect-exited.json @@ -0,0 +1,41 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-a-cli-contract/logs/07-session.json b/dogfood/20260325-week6-a-cli-contract/logs/07-session.json new file mode 100644 index 0000000..6db3568 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/logs/07-session.json @@ -0,0 +1,23 @@ +{ + "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 new file mode 100644 index 0000000..7be827a --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/logs/08-events.jsonl @@ -0,0 +1,2 @@ +{"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 new file mode 100644 index 0000000..7417ca6 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/manifest.json @@ -0,0 +1,30 @@ +{ + "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 new file mode 100644 index 0000000..ba7287d --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/notes.md @@ -0,0 +1,28 @@ +# 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 new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-a-cli-contract/screenshots/.gitkeep b/dogfood/20260325-week6-a-cli-contract/screenshots/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-a-cli-contract/session-id.txt b/dogfood/20260325-week6-a-cli-contract/session-id.txt new file mode 100644 index 0000000..0846383 --- /dev/null +++ b/dogfood/20260325-week6-a-cli-contract/session-id.txt @@ -0,0 +1 @@ +01KMJ2R5VRY4GS10VZ3VNG52Z1 diff --git a/dogfood/20260325-week6-a-cli-contract/snapshots/.gitkeep b/dogfood/20260325-week6-a-cli-contract/snapshots/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-a-cli-contract/videos/.gitkeep b/dogfood/20260325-week6-a-cli-contract/videos/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-b-artifact-health/agent-terminal-home.txt b/dogfood/20260325-week6-b-artifact-health/agent-terminal-home.txt new file mode 100644 index 0000000..8d31126 --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/agent-terminal-home.txt @@ -0,0 +1 @@ +/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 new file mode 100644 index 0000000..c110588 --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/command-status.tsv @@ -0,0 +1,7 @@ +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 new file mode 100755 index 0000000..ec8bed1 --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/commands.sh @@ -0,0 +1,11 @@ +#!/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 new file mode 100644 index 0000000..ef1576c --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/index.html @@ -0,0 +1,564 @@ + + + + + + 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.json01785dogfood/20260325-week6-b-artifact-health/logs/01-create.jsondogfood/20260325-week6-b-artifact-health/logs/01-create.stderr.txtnpx tsx src/cli/main.ts create --json -- node --import tsx test/fixtures/apps/color-grid/main.ts
02-wait-exit.json01224dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.jsondogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.stderr.txtnpx tsx src/cli/main.ts wait 01KMJ2RDHRZPYTZQW4WJH2717B --exit --timeout 10000 --json
03-screenshot.json06588dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.jsondogfood/20260325-week6-b-artifact-health/logs/03-screenshot.stderr.txtnpx tsx src/cli/main.ts screenshot 01KMJ2RDHRZPYTZQW4WJH2717B --json
05-inspect-healthy.json01152dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.jsondogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.stderr.txtnpx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B --json
06-delete-artifact.json00dogfood/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.json01206dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.jsondogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.stderr.txtnpx tsx src/cli/main.ts inspect 01KMJ2RDHRZPYTZQW4WJH2717B --json
+
+
+
+

Artifact inventory

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeSize
agent-terminal-home.txtsupport33 B
command-status.tsvsupport1.4 KB
commands.shscript639 B
logs/01-create.jsonsupport251 B
logs/01-create.stderr.txtsupport0 B
logs/02-wait-exit.jsonsupport141 B
logs/02-wait-exit.stderr.txtsupport0 B
logs/03-screenshot.jsonsupport694 B
logs/03-screenshot.stderr.txtsupport0 B
logs/04-session-artifact-manifest.jsonsupport792 B
logs/05-inspect-healthy.jsonsupport1.0 KB
logs/05-inspect-healthy.stderr.txtsupport0 B
logs/06-delete-artifact.jsonsupport146 B
logs/07-inspect-missing.jsonsupport1.2 KB
logs/07-inspect-missing.stderr.txtsupport0 B
logs/08-session.jsonsupport551 B
manifest.jsonsupport1.0 KB
notes.mdnotes1.9 KB
recordings/.gitkeepother0 B
screenshots/.gitkeepother0 B
screenshots/01-color-grid.pngscreenshot47.7 KB
session-id.txtsupport27 B
snapshots/.gitkeepother0 B
videos/.gitkeepother0 B
+
+
+
+ + \ No newline at end of file diff --git a/dogfood/20260325-week6-b-artifact-health/logs/01-create.json b/dogfood/20260325-week6-b-artifact-health/logs/01-create.json new file mode 100644 index 0000000..f359d32 --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/logs/01-create.json @@ -0,0 +1,12 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..228db83 --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/logs/02-wait-exit.json @@ -0,0 +1,9 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.json b/dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.json new file mode 100644 index 0000000..5ea223b --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/logs/03-screenshot.json @@ -0,0 +1,20 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..61dc31c --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/logs/04-session-artifact-manifest.json @@ -0,0 +1,26 @@ +{ + "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 new file mode 100644 index 0000000..c4a02b6 --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/logs/05-inspect-healthy.json @@ -0,0 +1,44 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..5441213 --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/logs/06-delete-artifact.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000..d93fb6e --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/logs/07-inspect-missing.json @@ -0,0 +1,51 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-b-artifact-health/logs/08-session.json b/dogfood/20260325-week6-b-artifact-health/logs/08-session.json new file mode 100644 index 0000000..30da527 --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/logs/08-session.json @@ -0,0 +1,24 @@ +{ + "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 new file mode 100644 index 0000000..c5eef61 --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/manifest.json @@ -0,0 +1,30 @@ +{ + "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 new file mode 100644 index 0000000..5ac02af --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/notes.md @@ -0,0 +1,24 @@ +# 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 new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-b-artifact-health/screenshots/.gitkeep b/dogfood/20260325-week6-b-artifact-health/screenshots/.gitkeep new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000000000000000000000000000000000000..1496fdaba3e3230507deef48c72eb0c1fe00c293 GIT binary patch literal 48895 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 literal 0 HcmV?d00001 diff --git a/dogfood/20260325-week6-b-artifact-health/session-id.txt b/dogfood/20260325-week6-b-artifact-health/session-id.txt new file mode 100644 index 0000000..f3e345c --- /dev/null +++ b/dogfood/20260325-week6-b-artifact-health/session-id.txt @@ -0,0 +1 @@ +01KMJ2RDHRZPYTZQW4WJH2717B diff --git a/dogfood/20260325-week6-b-artifact-health/snapshots/.gitkeep b/dogfood/20260325-week6-b-artifact-health/snapshots/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-b-artifact-health/videos/.gitkeep b/dogfood/20260325-week6-b-artifact-health/videos/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/agent-terminal-home.txt b/dogfood/20260325-week6-c-failure-taxonomy/agent-terminal-home.txt new file mode 100644 index 0000000..8d31126 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/agent-terminal-home.txt @@ -0,0 +1 @@ +/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 new file mode 100644 index 0000000..4f148fd --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/command-status.tsv @@ -0,0 +1,12 @@ +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 new file mode 100755 index 0000000..f9dda25 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/commands.sh @@ -0,0 +1,16 @@ +#!/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 new file mode 100644 index 0000000..2637a95 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/index.html @@ -0,0 +1,688 @@ + + + + + + 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. 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.
+
+
+
+

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.json01971dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.jsondogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.stderr.txtnpx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit 42'
02-wait-exit-42.json01297dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.jsondogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.stderr.txtnpx tsx src/cli/main.ts wait 01KMJ2RSD2NWQKAN6NH3TGMSRC --exit --timeout 10000 --json
03-inspect-exit-42.json01073dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.jsondogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.stderr.txtnpx tsx src/cli/main.ts inspect 01KMJ2RSD2NWQKAN6NH3TGMSRC --json
04-create-exit-0.json01936dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.jsondogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.stderr.txtnpx tsx src/cli/main.ts create --json -- /bin/sh -c 'exit 0'
05-wait-exit-0.json01153dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.jsondogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.stderr.txtnpx tsx src/cli/main.ts wait 01KMJ2RXN9F3K4H9366FNZZJ79 --exit --timeout 10000 --json
06-inspect-exit-0.json01278dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.jsondogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.stderr.txtnpx tsx src/cli/main.ts inspect 01KMJ2RXN9F3K4H9366FNZZJ79 --json
07-create-host-death.json01975dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.jsondogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.stderr.txtnpx tsx src/cli/main.ts create --json -- /bin/sh -c 'echo host-death-proof; exec cat'
08-wait-text-host.json01554dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.jsondogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.stderr.txtnpx tsx src/cli/main.ts wait 01KMJ2S238K002KNYQWZGCCT3N --text host-death-proof --timeout 10000 --json
09-inspect-live.json01206dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.jsondogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.stderr.txtnpx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N --json
10-kill-host.json02053dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.jsondogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.stderr.txtkill -9 831241; sleep 2; printf '{"command":"kill -9 %s","hostPid":%s,"exitCode":0}\n' '831241' '831241'
11-inspect-host-death.json01114dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.jsondogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.stderr.txtnpx tsx src/cli/main.ts inspect 01KMJ2S238K002KNYQWZGCCT3N --json
+
+
+
+

Artifact inventory

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeSize
agent-terminal-home.txtsupport33 B
command-status.tsvsupport2.8 KB
commands.shscript991 B
logs/01-create-exit-42.jsonsupport251 B
logs/01-create-exit-42.stderr.txtsupport0 B
logs/02-wait-exit-42.jsonsupport142 B
logs/02-wait-exit-42.stderr.txtsupport0 B
logs/03-inspect-exit-42.jsonsupport972 B
logs/03-inspect-exit-42.stderr.txtsupport0 B
logs/04-create-exit-0.jsonsupport251 B
logs/04-create-exit-0.stderr.txtsupport0 B
logs/05-wait-exit-0.jsonsupport141 B
logs/05-wait-exit-0.stderr.txtsupport0 B
logs/06-inspect-exit-0.jsonsupport968 B
logs/06-inspect-exit-0.stderr.txtsupport0 B
logs/07-create-host-death.jsonsupport251 B
logs/07-create-host-death.stderr.txtsupport0 B
logs/08-wait-text-host.jsonsupport246 B
logs/08-wait-text-host.stderr.txtsupport0 B
logs/09-inspect-live.jsonsupport995 B
logs/09-inspect-live.stderr.txtsupport0 B
logs/10-kill-host.jsonsupport59 B
logs/10-kill-host.stderr.txtsupport0 B
logs/11-inspect-host-death.jsonsupport1.1 KB
logs/11-inspect-host-death.stderr.txtsupport0 B
logs/12-host-death-session.jsonsupport630 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
+
+
+
+ + \ No newline at end of file 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 new file mode 100644 index 0000000..8ec3a74 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/01-create-exit-42.json @@ -0,0 +1,12 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..ee7d262 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/02-wait-exit-42.json @@ -0,0 +1,9 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..fe363f0 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/03-inspect-exit-42.json @@ -0,0 +1,41 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..7e48771 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/04-create-exit-0.json @@ -0,0 +1,12 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..01ae1f8 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/05-wait-exit-0.json @@ -0,0 +1,9 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..2d15e45 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/06-inspect-exit-0.json @@ -0,0 +1,41 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..d274620 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/07-create-host-death.json @@ -0,0 +1,12 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..4709c39 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/08-wait-text-host.json @@ -0,0 +1,13 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..dc92fb6 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/09-inspect-live.json @@ -0,0 +1,41 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..741ef3d --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/10-kill-host.json @@ -0,0 +1 @@ +{"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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..c029b29 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/11-inspect-host-death.json @@ -0,0 +1,43 @@ +{ + "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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..44ef966 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/logs/12-host-death-session.json @@ -0,0 +1,25 @@ +{ + "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 new file mode 100644 index 0000000..5bcdfdf --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/manifest.json @@ -0,0 +1,34 @@ +{ + "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 new file mode 100644 index 0000000..e14b373 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/notes.md @@ -0,0 +1,31 @@ +# 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 new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/screenshots/.gitkeep b/dogfood/20260325-week6-c-failure-taxonomy/screenshots/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/session-ids.txt b/dogfood/20260325-week6-c-failure-taxonomy/session-ids.txt new file mode 100644 index 0000000..06da282 --- /dev/null +++ b/dogfood/20260325-week6-c-failure-taxonomy/session-ids.txt @@ -0,0 +1,4 @@ +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 new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-c-failure-taxonomy/videos/.gitkeep b/dogfood/20260325-week6-c-failure-taxonomy/videos/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-d-review-surface/agent-terminal-home.txt b/dogfood/20260325-week6-d-review-surface/agent-terminal-home.txt new file mode 100644 index 0000000..8d31126 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/agent-terminal-home.txt @@ -0,0 +1 @@ +/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 new file mode 100644 index 0000000..6456d57 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/command-status.tsv @@ -0,0 +1,14 @@ +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 new file mode 100755 index 0000000..1cbc92f --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/commands.sh @@ -0,0 +1,16 @@ +#!/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 new file mode 100644 index 0000000..16c1c36 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/index.html @@ -0,0 +1,406 @@ + + + + + + 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.txt0731dogfood/20260325-week6-d-review-surface/logs/01-review-single.txtdogfood/20260325-week6-d-review-surface/logs/01-review-single.stderr.txtnpx tsx src/tools/review-bundle.ts dogfood/20260325-week6-a-cli-contract
02-review-all.txt01035dogfood/20260325-week6-d-review-surface/logs/02-review-all.txtdogfood/20260325-week6-d-review-surface/logs/02-review-all.stderr.txtnpx tsx src/tools/review-bundle.ts --all dogfood/
03-index-files.txt069dogfood/20260325-week6-d-review-surface/logs/03-index-files.txtdogfood/20260325-week6-d-review-surface/logs/03-index-files.stderr.txtfind dogfood -maxdepth 2 -name 'index.html' | sort
04-playwright.txt02197dogfood/20260325-week6-d-review-surface/logs/04-playwright.txtdogfood/20260325-week6-d-review-surface/logs/04-playwright.stderr.txtnpx 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.txt068dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.txtdogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.stderr.txtrm -rf '/tmp/agent-terminal-week6.N8X5Dz' && printf 'removed %s\n' '/tmp/agent-terminal-week6.N8X5Dz'
06-cleanup-extra-indexes.txt056dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.txtdogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.stderr.txtfind 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.txt01021dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.txtdogfood/20260325-week6-d-review-surface/logs/07-review-all-final.stderr.txtnpx tsx src/tools/review-bundle.ts --all dogfood/
08-week6-index-files.txt061dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.txtdogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.stderr.txtfind dogfood/20260325-week6-* -maxdepth 1 -name 'index.html' | sort
09-cleanup-extra-indexes-final.txt071dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.txtdogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.stderr.txtfind 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.txt01004dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.txtdogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.stderr.txtnpx tsx src/tools/review-bundle.ts --all dogfood/
11-week6-index-files-post-edit.txt066dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.txtdogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.stderr.txtfind dogfood/20260325-week6-* -maxdepth 1 -name 'index.html' | sort
12-cleanup-extra-indexes-post-edit.txt056dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.txtdogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.stderr.txtfind 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.txtsupport33 B
command-status.tsvsupport4.1 KB
commands.shscript2.0 KB
logs/01-review-single.stderr.txtsupport47 B
logs/01-review-single.txtsupport107 B
logs/02-review-all.stderr.txtsupport5.8 KB
logs/02-review-all.txtsupport3.8 KB
logs/03-index-files.stderr.txtsupport0 B
logs/03-index-files.txtsupport1.7 KB
logs/04-playwright.stderr.txtsupport0 B
logs/04-playwright.txtsupport0 B
logs/05-cleanup-home.stderr.txtsupport0 B
logs/05-cleanup-home.txtsupport41 B
logs/06-cleanup-extra-indexes.stderr.txtsupport0 B
logs/06-cleanup-extra-indexes.txtsupport1.5 KB
logs/07-review-all-final.stderr.txtsupport5.8 KB
logs/07-review-all-final.txtsupport3.8 KB
logs/08-week6-index-files.stderr.txtsupport0 B
logs/08-week6-index-files.txtsupport205 B
logs/09-cleanup-extra-indexes-final.stderr.txtsupport0 B
logs/09-cleanup-extra-indexes-final.txtsupport1.5 KB
logs/10-review-all-post-edit.stderr.txtsupport5.8 KB
logs/10-review-all-post-edit.txtsupport3.8 KB
logs/11-week6-index-files-post-edit.stderr.txtsupport0 B
logs/11-week6-index-files-post-edit.txtsupport205 B
logs/12-cleanup-extra-indexes-post-edit.stderr.txtsupport0 B
logs/12-cleanup-extra-indexes-post-edit.txtsupport1.5 KB
logs/13-review-d-final.stderr.txtsupport49 B
logs/13-review-d-final.txtsupport0 B
manifest.jsonsupport1.4 KB
notes.mdnotes2.4 KB
recordings/.gitkeepother0 B
screenshots/01-week6-a-review-page.pngscreenshot830.9 KB
snapshots/.gitkeepother0 B
videos/.gitkeepother0 B
+
+
+
+ + \ No newline at end of file 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 new file mode 100644 index 0000000..98c5741 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/01-review-single.stderr.txt @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..d5b7db7 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/01-review-single.txt @@ -0,0 +1 @@ +/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 new file mode 100644 index 0000000..2f3c712 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/02-review-all.stderr.txt @@ -0,0 +1,66 @@ +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 new file mode 100644 index 0000000..e9ac31c --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/02-review-all.txt @@ -0,0 +1,37 @@ +/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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..0f1645c --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/03-index-files.txt @@ -0,0 +1,37 @@ +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 new file mode 100644 index 0000000..e69de29 diff --git a/dogfood/20260325-week6-d-review-surface/logs/04-playwright.txt b/dogfood/20260325-week6-d-review-surface/logs/04-playwright.txt new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..c2e1394 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/05-cleanup-home.txt @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..001b066 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/06-cleanup-extra-indexes.txt @@ -0,0 +1,33 @@ +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 new file mode 100644 index 0000000..1ae1b16 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.stderr.txt @@ -0,0 +1,65 @@ +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 new file mode 100644 index 0000000..e9ac31c --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/07-review-all-final.txt @@ -0,0 +1,37 @@ +/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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..9cf6539 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/08-week6-index-files.txt @@ -0,0 +1,4 @@ +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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..001b066 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/09-cleanup-extra-indexes-final.txt @@ -0,0 +1,33 @@ +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 new file mode 100644 index 0000000..1ae1b16 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.stderr.txt @@ -0,0 +1,65 @@ +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 new file mode 100644 index 0000000..e9ac31c --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/10-review-all-post-edit.txt @@ -0,0 +1,37 @@ +/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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..9cf6539 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/11-week6-index-files-post-edit.txt @@ -0,0 +1,4 @@ +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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000..001b066 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/12-cleanup-extra-indexes-post-edit.txt @@ -0,0 +1,33 @@ +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 new file mode 100644 index 0000000..dca402c --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.stderr.txt @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..c476a2d --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/logs/13-review-d-final.txt @@ -0,0 +1 @@ +/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 new file mode 100644 index 0000000..b2e68b4 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/manifest.json @@ -0,0 +1,38 @@ +{ + "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 new file mode 100644 index 0000000..a8c7e13 --- /dev/null +++ b/dogfood/20260325-week6-d-review-surface/notes.md @@ -0,0 +1,25 @@ +# 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 new file mode 100644 index 0000000..e69de29 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 new file mode 100644 index 0000000000000000000000000000000000000000..499c7a00f1dcd6c641c18c606cbb936224d777e4 GIT binary patch literal 850891 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ⅈvaJ1}SB+ZAZ8(5Qg)=+EssHD<$MwU zY>M3}WMQigydfNhLvJ>gD`o#^Wx5MgX%m{^?t$*Jif(6TZ#7rr;;kL0jAGHTod1*@9Z-8WVNVN4Qg5;vvkC}Abroeix(Y#tdI8R&>wRe#^s72y7voZZ`HO; zoUErBd9mqSVMj7N4z|?|`8VCLv9bG^W;;3*Yz(w`R`IL%KP^_E#IUJMNx3{xg@=VZ zKfjE>+>12g-J3<+<1~3KE-p?KGtdu9W-E>es&sRWWl2s{J>1RJ#5XksT#|#GL(<~x z%v2J=r^)u(sq$>q>@vrus%vAjBVH^+;@LV}41&#_CAZsd)3WP0UVhiJ%rK=pNo4~e zA?Rc!(#eopzGSgcL~nx9v1GEiX=bLR9A<{B$K|)8kOb@Dr8e*dtxC4put*%^}TB#9)&6sz8!VL@i z+LyqcJ<-cbCD+`{7bRf7TA$ct8vcpcuzw$&b=F00vBobNvbrp3b*BEv7j?GAg*a>-c2mK0{J{__( zC{&uM7~`(_X}fasl@e&t^IUfGFn0%M z`?ojEpFTB^iC>&w*ji^iQ%`-56L=0T)tb0MKU?2j0>u(((KYwvYK_I$R-W~mFv>A< zI-8L=@6AN;maa}`21Tsv!rdON{QGos(bT=)IwD+{jO}wjV`v-V4L_LB6ft%Y&mvx# zF~p#MRf~Kx2{}kOfX`r-Iy`O5s!+_)O}wTv@#>wX5$>WUS$u7#VSF zTa{s>D|DS06nF&ZanWQECGAAT2i^m!xaA`AsZk(78sJg-8g^ze=W*LjV}+z?v?3VbTesh+xd(X-sRJ)ePlQovmYS#c zVW-r959X3v_ObdujKQ13PttbF2Tt>TP6eE#j}W z6|lsTve^+2VobR1`=k($E?p;Frfi_0I`PrghN@*gKY?<4GNNmRGSl~JB+~Vvml-)l z^A?C0y6_iY@CUK|3FAUL%uY|wLW00KxqLL4#5D9O#Lxq1;EAYQE`S^r*K>Nyy`g37 z=;W0MTG^Lb{=cg7v$dE4BUw}b^As=~bj5uI8P&(lJM%C}D4*l@1_sXrcJ!&?kLo*RRB15 z6%dD4!<2)Hdno|#C#%A&-;yr zn%CXM{+GHg8Fd1(I(4my#yV(?&2!Hc<0fmJFv4F-^e+K8KVVm3RhsfmvIgEZ^Y73KWYv8Lt?BB-R z5{XBM@O6!|v6LGG;LJ@=SRelwDUIEtQ5x=8e<_l3+Co6II{Xi)1YoMKF-j&0h_V!7 z?)7XG&@&bd%IjVLg73-lAGrFwt7tOx-zMlE-QFcWY&xb<2?sxpAssj!Q60m!tMV%a zy=PH;{0l>$(_DpGMCnF_r>obm>gg>*HCRIbfY8Wgc$oTRLW<$~<1DQ#x@jn!N*~Zo z&neIR3s0VYzk0Lj;bk58??m8XGy*dgUH#6XUn}$%2-p5Se$*Iw zJ{dc8UjYb_Zr{j-m_fiInr1XErwjkqArAQa4jo>LS8%NHVz}7$KC(~=?^qGjC@1*( z9X5M^aawKTg^OpHzU1hOOm z#+#@Tf%JSGN(;VQm$vsJ zEVLTyq{h1A&O#>Z5DEJ4)+vMgTZ0KMCy#MYctcC=*XWB%%@;Nod2YT-E{5l8t(3X1 zd1#uaCr+m-Rr_O#`}b{?R|c%7zoFS2ehdOxUk;_%KFUg$B`$Z}2?wn)fG^onrO#gU zjby3Z*zckZPN3+eE&cQg*Vin}9HV5ELHL$@S*0vp?^7>s-<})o1CciJm~r3;H$Uqp zbSl?eqUUQ*42L4!szTwzn^v7%gU8Niu8txtEetwUMp6l)IF~W;;$7L{H<|eK=3YU^ zfel)@X5V|Z?xHx);N4}zRvl(t?W0%g5L4Gt^s=(mbIs;gPwskSu4-qg4vTViBG!x@ zfCWnNrRVCyG?{00Zd0^!A&7lKa!z}biC-hq&tZ{}kVphQ>^3?bZ>h-mvvU&2eo`di zhI$s{uRA@+HI2X$F8F=@d=mHKGw#)qzbb~xWE+`}T4F~aAn)hu)MgpM^e4J^6%dv; zQ&c;cuFcOsXRtpQRMETy^nN3R1-$-2(Bn?lCH2iGUqxyptE8P=a6BFEvE?qq_oQiZq zxtdhDkjrwj0gD&vFBm4u9Fa;{jQc=ksdA(;k>}Lx=A)4}OU7msK_b3#FSQGUJ=6(K z$XlnTvfr%Ko2fjE=CB;D)r61Pz<)H}(qg!B=%Nw!urGdPuKI4j!K+O!?5jDPTD}HF zfktVktgI|XZ7zbytr*S8h=Z-IM&)(iS6T8*BO8<;%)*{*rRdudb%q_4(HW`G&;hs8 zXRD>Y65dsgA{T9;&FeGSQa7%Sjn*?XL;M>{N|InjZ*T8*tDkJ977yhhdMrR3pArjc z_OuZYl{Mi+Hz>S)YjZLgbh@K~068Dc#oXM{rlFxxryde7fsqh5Qhj`OSYtI=@=?Q5 z%Ps}4veHE&ByNz;>O!JfbyR7 zI=A_GX8x9Csb|YfzzuS4KTPL)%YwHrKKMOIz?gizVdT zKd4G$~wv?slXk)0guYTVa!-kG-`Wiugf7h<%7vjTgI5qScgacugk4iB zO=b%xW|ZE^(GeYYYdTZrJhvK*-*aLc!2mjIXq$6!RgPq{mG0Ypwm}tBmmsI%DsEEi zM2Y_*HB-0sxC7*V5O2iE!^K73I*sK~>w0694^5W2Rex}weeK)#y!A>(E+C5^q?ur( zWl^|ku5hgol#p?O=v0BVW9Q%9MemLKi1P|Z8TEV~!Z9DSbYEFPs6owA6{{hoxe=&g zuBMe>ZnT;m#Fbi+E_zVv-C~LxS?VyFRyHr z^*Ir(D-eVc)0i{LX9rAx2NlH7*=FcB34HaSGpi47rdBlA&PFIbmZibxAM%c z%kwLAoZy=oB7e>g8E21z^w(}~f!D{`j$LWT>1us>L&o6ur_*9_$uK>v zLqa3I_Qh7GoTgjFjP`iv&dz>s-tx(tD%jZ=GFTWR=C67}!RutQw7B>(Z*4GjYf+z@ ztDPf9U7C!dblV3H0Ku)H0*-gP?B8o@*fgi=KxcQs7D`=K881>)gS4mAWaHVyr!LHd z3jx6i>CY4{frbRDgJxXqbQGjxzI|g-LAd-tAd0g!6hiAY?FeV5VSRSzuEUDz{ z^ppwaQ&d{-?LwimW^w0T`4H0{t0&Tex@CLQ=_{bej(CTRpN~g|eXmY;vvx#rOz!`B zmpcePGmD!{OuwCCb{TwI+OC9LW!kxnD@!y%OhBNu*iOU@uJ>UNXr4fMFsubN$V>P2 z?NyL@vrgjFn}R4TY6+kvvyq6s%+etsHylf-Qw?Z1JdB^I za_3|aP_P($*;Ed4|3NR?54(j1ms_=a zpW|#$K1Yz}`q=QZ$hJs0W>nxInc^g|E2NhU?pN&pI`{i+oR>H^q$1>+Afk z4x>(_UC8`MmxbJSA$z5iWNheI$}4Bwb7t8RkJ*%-_kPR#xC%cP%Ph8*K}m6pc9Wsj zGQ|o47(qqWN{g&F)%WLgY*bLY= zwmOsqj)~Kso-ilrFMi5piE{m{yS)GLcvLn2+m66c;FrOXA5`5Z{(rfzqps%h*I&Nf zye{iLXZhX@uh8dN&zUI~nClyPdfVOARfmJaaH~{q+vJKp-F2X;Sxzgf87m0!=D}sa zq2kiuFn>8blx4_jOTl)2u~*01ILeV5-S>Wn!uBI3RiEPyca3hbm9{H#_FP3*aNJdk zCJ2we#5g2)(P?nor@TBu{y8V-URWOlIdiPc{%j#A+R@#1Q?sKZvr#o#<~+#V2L$-D z1|!bf_&Y(M+HsUs@3;$>k?{I9LZe}%Mdj+^;&rXdaI&6vWu3=WOZwjUpmB+g7F9{w zWaaj(+xR-*#N?yh{e>hVxX``&7H7&qmPu7#;AJdiVs3SgMr$`YHx4_^_xz3d(03)n zqO8}CTD6LtZbqF2&M)K8pp&InKPJ?lesw+Z&VBjy3?O?-Ad_G5#*C}HAY*oD~N5^y=_$>)ZbZkCu1q{)Q{Bx{uHDCHUj z=(x9Cm)b;CWHH1|J%(4qOwb0BTfw#4=g<~v42<}};;mUXgP{IVFCUr9%@~kuJWrpc z?wLld5$2rH!_UD-zpwyT95b0zV_JdyQ*F2?r{Pl58BZyJtohNMC(p(LfRe`~(#t6E z{K?6asfsZvbfus#gTqXa1x09n+0Hl>gNR^4i+-}&Tp{HJ_-85Pc>K>Lco9iQIR0Gd zK)2_s>`hWj0544Sx4kmE71MErI&8QerL`bga&d7vn9RA(eN1*R55Q?D#$eD+%tTo| z-Z=79%2q}35L1MQZ!?ln!HEZQh4}Zi9hpk4{#0rb{QgnrgM{kp+}ESSB_%)_l78*ShYi zB`vpw4qh!^r$w2pSz145nExjpR1n7+8a!z*Iah;VX}d#>yCPVxYKT-T=DlXW#wZiR zqjMc$9mCOc_Ka(Fad9|B;h-upy|2Jpvf}*(&rRA`GASWRr$Lcb+?4fXRkdSw+M;uh zq82pg5Vf%tWy`-DsHoCvx7wHPbG~c1YeonbPclijB>cVxS|1BBAGK2D4T!5oU0z|+&# z{j-($Yz#A{hM<^o?`^m~-{9D%R9vxfahoG3mBdcjST~s(vJ4RY(e%Y_xRt9jl7O=; zh2+hcd^yX38r#Rt&S!`#bgDKHuEA-NVV8s)dswHIBQ^dSAI}7DRokun)RzL6C$l*9 zQY23mlYLH9UtV~vi;f3r@;dE}&14C#-qH11$$MOLO_JY>t{dyO=w67ox;85_lLb+B zzP2!DPlM#*+~u*1!FUvc43b>^063Zx(-|ar<84*|SzgZsOx)G?3FM;8tN}_;W}oiV zSQ4R*@t{)|9KCGgqD=>9rlnsv8Y7S>{aK?VL$GasEZCju!WomwZ6;%fkYSey?_ z(w+*}EZ+;|NhXt!%X-H7f>|$dg)sKE;QN>SWFlG~N2B~^ zhFQv}Y|Dtz2$%8JZ_J`6;~Uts2zei}D_nZ?pSh-{q?yIO{*pMRy;JxSF=($_{TU`^ zwrb#%!eOA^62@@Z>hf~N_s|Z!pwn;Tgrb{%5&2qUwrKz$2VO4t=xW4CeSHJ=cBQR| z$X2Qje{Vhw&^1CZL?Sw(*JFD5u$cR!Y6wYZI-##8|T)^E#JIMmXbn%b@F=n z)$zYh9e|(;iCQq0XUPuYuJ^U-y0^TK;x8D!_9NfR6~8 zO7uYKih*utB(1I3ci6kj8MmHr{0gaN?@Z0+AJQL0Z8mCJLy1nvjasr$#LpJO*2m#a zw*0mNJus40DGzPGP1;sotX-0{NcW!+k?ji18=pN{A54vlNT-TmWGZQ6Q|RuJ*S>QlA{qusG`dG-MHsNnYBbgsiP{-ZQlw^#d`STPkO1KiC(!!2V$iABt;2#-}v?k5;#u_g`R@jK=@4Z6G*1MFPX34#z6 zOPXo`mSo4y^|KW(!CBoHTH6?lX-p!-qzYV(Sbl1Av58`PqswWXd1L5)-8`|c=`1N( zk(5KVI4fei`<#x>ZDmu2VpldGGd>gXtCC{N){}nd&754q+RAF~T**v@z%W1>;dhy~ zzL4DR0wG_Jvm+hzw>3$~1-l7ROrIQQoR4-#)Lj|{GvCo>B!9bkS3f`@yZk*LdXaE@ zB0BAsGV0m+@j*02wkm=$ozvQ``!lkkaVSfMpvsqchDt??^kB;t3R55F>j2gYUz5*W z*M~#61iq>ksZos4=a^?OH{d4mT7&oewC%6^n1H#N!lQHl$J`Vr zH(x(A31tA5)^Yb#NsNDWelsL7T-9FgTgJQY^%nq|vgBxGHM>BT-n_yHLf9G?D%@@D zQfkfI>8h14tGM;^^EK;&v{I0J+>Z2Rt&yfqxbBMcJsp!HJRNH^EVMnK*vVE5(VB4Q zOG?(Sds}iCGFOL*Lz1{y&J9XWO+T{!GEjH+zQ-LU&-248NGZ$6I5wTK4gYr9ZQJIo z+c#ok4FYXp!c!7HoM)J7sdgXEvC;q>RBt2=9*uZwyc}@KY}u)s=E8RZRD-unX!wu9t87o@SxS}am0Qgz(I>m$H2;7q5>5@C zydI%ZSKN6J=8H!5eF8-+3I-y0K&SkTI&bavMq+V)sup~qD{^VuCGriNx-1GTyl!)b zG&DE126UjuWS`tbaz_c2gDDgqF(>t$ru?qiP8|U7Xe$)dj`m=H_K6J7sUs6O zT@JXmB;K+T9u9^B;%XKMbF+P~by2>I3JqlAkUf{eg-FmvHTOEs?`rWOf3@RcykDq= z+|_9=l^g-tdHG((-S@j$-XX_WwHCw`LDxGJ(A=9WD9@<%i(j z+Mmj^4-GemQL*cId~Nn%s_agxdP6h&F0#H!O3Ea2iyj#5rnX$3B^q?R(TQKQi{ECc zqBRt_FrgfHI8X~YgHD#A&BZ8mbct*g0r(aiVt@H^?49m(J1s8n)L(CTMnn=gtI-})&`0GqEfw~>cBP)J{UqA?H8 zUc9;Jt_-lQ<(4sDh#Wr$wxDKz2bJmF?A3wEz5!5={nDh^-IZfQ=Lq3<^N1pfsWQ`v zRHdolXBq%#tT)rT)1{iTbkiguJ9r&X;Sxp}czSYhahoo-$z+&Z4su2NDv+NMh^h)DVT`=MIlt& zUqX5R20lbY#2j&D-ICpM^Sv%=BPR%Y*BGfQx>owO&}``(*9U2+f!b^&>tHU_Qm`*d zuGkG=nE>v|DvT0^fFozD)V_M6uDcH3Lt>nhNA;#KUrx{!NL#RvXNT8C_$!y=hrJx* z@*|}Lg}XUg{T>U@{RML5MZK1=1gaoZ*?^rS&&rPPW206DkJ0iwO9*_x+(p)WSUN*L zpkTt?&G7|*Ry-vnOz5s1B&`ttGC9^Fj50AX zVcmW0Fm{UF_!S=uKn2qU0Fl*5NcIYoeV$lV z+F50*b(08~WgT9iyI<{}3F4rTObUt~%T7yTiU$!1>@Os@1GAuz!0PEek;yk+_bsE-#$3d%C4s7{G2X%;~{dBwlcQkl~0S`a1%kNvVOQ!%q zkS445XN2kw`(uqA-AaJUt;fEuwtup`y@dwg_J&S|=^Td$UO-bqX~t&MG`gCp$UkEe zSy|=Pbu;J?ECFuLk{5+-*$)v4;LmdcGtFX<^V22VR^-&o*=TliWgAAhlH>{>Ugtf? z>B#on?OEx2`ww+{`GOF!H$3_4CMRuB*OP5&$S06-?b+iS3+Cmj2piFxw__Jswi^Q%~S0{2$2mv3-@_NC12

g>kNCr37Z;BiYx(F{XvMX#Wg^%zKoS5Pm5^|^ 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�XwR?H(^j>zuNe(){BR9G)hvgtghSy`g2 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ξmR3KIv8;4U+#bhf%W2CBD4c;EPOnZPk$Y!j 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