From a4af3caea7164fc6269f0a2bffb3aa2cef69783c Mon Sep 17 00:00:00 2001 From: Dotta Date: Fri, 7 Aug 2026 19:13:07 +0000 Subject: [PATCH] docs(runner): record phase 1 replay evidence Co-Authored-By: Paperclip --- packages/paperclip-runner/README.md | 37 +++-- .../paperclip-runner/docs/architecture.md | 43 +++++- packages/paperclip-runner/docs/index.md | 2 + .../docs/protocol-compatibility.md | 72 +++++++++ .../docs/tutorials/end-to-end.md | 21 ++- .../docs/tutorials/phase-01-static-replay.md | 108 ++++++++++++++ .../2026-08-07-phase-01-verification.md | 138 ++++++++++++++++++ .../knowledge/evidence/index.md | 1 + .../evidence/phase-01-static-replay.png | Bin 0 -> 131337 bytes .../knowledge/journal/2026-08-07-phase-01.md | 94 ++++++++++++ .../knowledge/journal/index.md | 1 + packages/paperclip-runner/knowledge/log.md | 1 + .../paperclip-native-runner-spike-spec.md | 22 +++ 13 files changed, 520 insertions(+), 20 deletions(-) create mode 100644 packages/paperclip-runner/docs/protocol-compatibility.md create mode 100644 packages/paperclip-runner/docs/tutorials/phase-01-static-replay.md create mode 100644 packages/paperclip-runner/knowledge/evidence/2026-08-07-phase-01-verification.md create mode 100644 packages/paperclip-runner/knowledge/evidence/phase-01-static-replay.png create mode 100644 packages/paperclip-runner/knowledge/journal/2026-08-07-phase-01.md diff --git a/packages/paperclip-runner/README.md b/packages/paperclip-runner/README.md index e6147ab6d72..e1c02e70b8d 100644 --- a/packages/paperclip-runner/README.md +++ b/packages/paperclip-runner/README.md @@ -4,10 +4,12 @@ This workspace is the standalone development boundary for Paperclip's native runner protocol, harness drivers, and normalized session backends. The production runner direction is Rust; `runner/` is its Cargo workspace. The TypeScript surface remains a control-plane/client reference implementation. -Phase 0 runs both implementations against one language-neutral fixture without -importing or starting Paperclip's server, UI, CLI, or production database. +Phase 0 runs both implementations against one language-neutral fixture. Phase 1 +adds executable PRP schemas, a cross-language conformance corpus, deterministic +static replay, and a standalone browser reference page. Neither phase imports or +starts Paperclip's server, UI, CLI, or production database. -## Phase 0 quick start +## Phase 0–1 quick start From the repository root: @@ -31,32 +33,47 @@ Run only the tracer with: pnpm --filter @paperclipai/paperclip-runner trace:phase0 ``` +Replay the Phase 1 happy path in the CLI or open the browser devtool: + +```sh +pnpm --filter @paperclipai/paperclip-runner replay:phase1 +pnpm --filter @paperclipai/paperclip-runner browser:dev --host 127.0.0.1 --port 4179 +``` + ## Package-owned commands | Command | Purpose | |---|---| -| `build` | Compile the TypeScript public surface and Rust workspace. | -| `typecheck` | Check both language surfaces without a release build. | +| `build` | Compile the TypeScript public surface, Rust workspace, and browser replay. | +| `typecheck` | Check TypeScript, Rust, generated schema sources, and browser types. | | `test` | Run Rust/TypeScript fixture, mock-contract, stable-output, and negative-boundary tests. | | `check:forbidden-imports` | Reject TypeScript imports and Cargo path dependencies that cross into Paperclip core. | | `check:phase0-parity` | Require byte-for-byte equivalent Rust and TypeScript tracer output. | +| `check:phase1-goldens` | Require all reducer snapshots and cross-language summaries to match checked goldens. | +| `check:phase1-parity` | Run TypeScript and Rust against the same Phase 1 fixture summaries. | +| `check:browser-tokens` | Reject component-local visual literals and require the standalone token layer. | | `docs:validate` | Validate local documentation links and the OKF v0.2 bundle. | | `trace:phase0` | Run the Rust mock-core tracer, print the stable result, and exit. | | `trace:phase0:typescript` | Run the TypeScript reference tracer directly. | -| `verify` | Run the complete Phase 0 acceptance sequence. | +| `replay:phase1` | Validate and reduce a fixture to a final snapshot. | +| `browser:dev` | Open the editable fixture/static replay reference page. | +| `test:browser` | Build the browser page, exercise replay states, and capture the screenshot. | +| `verify` | Run the complete Phase 0 and Phase 1 acceptance sequence. | ## Navigate - [Architecture and dependency boundary](docs/architecture.md) - [Tutorial index](docs/index.md) - [Phase 0 hand-run tutorial](docs/tutorials/phase-00-standalone-tracer.md) +- [Phase 1 hand-run tutorial](docs/tutorials/phase-01-static-replay.md) +- [PRP compatibility/versioning policy](docs/protocol-compatibility.md) - [Cumulative end-to-end tutorial](docs/tutorials/end-to-end.md) - [Journal guide](docs/journal.md) - [OKF knowledge bundle](knowledge/) - [Implementation plan](spec/paperclip-native-runner-implementation-plan.md) - [Normative spike specification](spec/paperclip-native-runner-spike-spec.md) -Phase 0 establishes `runner-core`, not the `paperclip-runnerd` daemon. Network -transport, process supervision, browser runtime, production Paperclip adapter, -and real model harnesses remain behind later phase checkpoints in the -implementation plan. +Phase 1 remains a static replay checkpoint, not the `paperclip-runnerd` daemon. +Network transport, process supervision, live browser transport, production +Paperclip integration, and real model harnesses remain behind later phase +checkpoints in the implementation plan. diff --git a/packages/paperclip-runner/docs/architecture.md b/packages/paperclip-runner/docs/architecture.md index fb1be47969a..abe821e6c79 100644 --- a/packages/paperclip-runner/docs/architecture.md +++ b/packages/paperclip-runner/docs/architecture.md @@ -31,9 +31,26 @@ The standalone package does not reach backward into a Paperclip implementation. The Phase 0 TypeScript contracts are deliberately sketches: they name responsibility and dependency direction without prematurely implementing the -Phase 1 protocol. The Rust `runner-core` crate establishes the production -language/package boundary and executes the same fixture; it is not yet the -Phase 2 runner daemon. +runtime transport. Phase 1 adds this executable static path: + +```text +protocol/schemas/*.json + | generate/check | shared fixtures + v v +TypeScript schema constants/types -> validator -> deterministic reducer + | | + v v + CLI browser devtool + | + golden parity summaries + | + v + Rust runner-core oracle +``` + +The Rust `runner-core` crate establishes the production language/package +boundary and checks the same fixture summaries; it is not yet the Phase 2 runner +daemon. ## Language ownership @@ -42,10 +59,12 @@ Phase 2 runner daemon. - TypeScript owns the control-plane/browser side and remains a useful reference client/test oracle. - JSON Schema and shared fixtures are the language-neutral authority. Phase 0 - begins with one checked JSON fixture; Phase 1 replaces its narrow validation - shape with the full PRP schema and conformance corpus. + keeps its narrow tracer fixture; Phase 1 adds the executable PRP v1 schema and + conformance corpus without silently changing the accepted Phase 0 path. - `check:phase0-parity` prevents either implementation from introducing a language-specific observable result. +- `check:phase1-parity` prevents TypeScript replay and the Rust production + direction from disagreeing on identity, terminal state, duplicates, or gaps. ## Allowed dependencies @@ -76,6 +95,7 @@ must fail the checker. ```sh pnpm --filter @paperclipai/paperclip-runner check:forbidden-imports pnpm --filter @paperclipai/paperclip-runner test +pnpm --filter @paperclipai/paperclip-runner check:phase1-parity ``` The first command scans the package source, scripts, and manifest. The test @@ -98,6 +118,19 @@ No socket, database, browser, Paperclip process, or model process is started. The default command executes this sequence in Rust. The TypeScript reference executes the same sequence, and the parity check compares their complete stdout. +## Phase 1 static replay boundary + +`replayPhase1FixtureText` is the single entry point used by the CLI and browser. +It parses JSON, validates JSON Schema plus cross-record bindings, and only then +calls the reducer. The reducer is pure: it clones input state, applies an event +at most once by source event ID, records source gaps/out-of-order deliveries, +and never performs I/O. + +The browser is a Vite application under `devtools/browser/`. Its Button, Badge, +Card, and Textarea are source-compatible adaptations of shadcn primitives; all +visual values live in its local `styles.css` token layer. It imports the same +replay module as the CLI and does not create a browser-only protocol model. + ## Future integration rule The [implementation plan](../spec/paperclip-native-runner-implementation-plan.md) diff --git a/packages/paperclip-runner/docs/index.md b/packages/paperclip-runner/docs/index.md index 44c3ccda1e9..d66664b3a49 100644 --- a/packages/paperclip-runner/docs/index.md +++ b/packages/paperclip-runner/docs/index.md @@ -5,11 +5,13 @@ The tutorials are cumulative and are always run from the repository root. ## Accepted implementation phases - [Phase 0: standalone tracer](tutorials/phase-00-standalone-tracer.md) — install the workspace, validate its Rust/TypeScript boundary and knowledge bundle, then run the deterministic Rust mock-core path and cross-language parity check. +- [Phase 1: static PRP replay](tutorials/phase-01-static-replay.md) — validate the shared schema/fixture corpus, reduce a fixture in the CLI, and inspect the same final snapshot in the standalone browser page. - [Cumulative end-to-end tutorial](tutorials/end-to-end.md) — the shortest complete workflow available at the current phase. ## Reference - [Architecture and dependency boundary](architecture.md) +- [PRP compatibility and versioning policy](protocol-compatibility.md) - [Engineering journal guide](journal.md) - [Dated shadcn/ui and AI Elements compatibility note](research/2026-08-07-ui-library-compatibility.md) - [Package README](../README.md) diff --git a/packages/paperclip-runner/docs/protocol-compatibility.md b/packages/paperclip-runner/docs/protocol-compatibility.md new file mode 100644 index 00000000000..a93a7d1c78a --- /dev/null +++ b/packages/paperclip-runner/docs/protocol-compatibility.md @@ -0,0 +1,72 @@ +# PRP Compatibility and Versioning Policy + +## Authority + +The JSON Schema files in [`protocol/schemas/`](../protocol/schemas/) are the +language-neutral source of truth for the Phase 1 executable contract. The +generated TypeScript schema module is checked against those files before every +TypeScript typecheck. Rust consumes the same fixtures and must produce the same +golden parity summaries. + +The broader normative protocol remains the +[native-runner spike specification](../spec/paperclip-native-runner-spike-spec.md). +Phase 1 intentionally implements only validation and static replay; it does not +add transport, persistence, or live control-plane behavior. + +## Version fields + +| Field | Phase 1 support | Compatibility rule | +|---|---:|---| +| `protocolVersion` | `1` | Required. Negotiate the highest overlapping version; no overlap fails closed. | +| `fixtureVersion` | `1` | Required by the conformance corpus. Unknown values fail closed. | +| `event.schemaVersion` | `1` | Required on every event. Unknown values fail closed before reduction. | +| Typed `schema` discriminators | `*.v1` | Required. Unknown required schema identities fail JSON Schema validation. | + +Wire protocol versions and fixture-corpus versions are independent. A fixture +format can evolve without changing PRP, and a future PRP version can be +represented only after the consumer advertises support for it. + +## Forward compatibility + +- Unknown object properties are accepted and preserved by validation. Reducers + ignore fields they do not understand until a later schema version gives those + fields defined behavior. +- Unknown required versions, schema discriminators, enum values, and required + fields fail closed. A consumer must never guess at their semantics. +- Scripted fixtures bind every event to the fixture run/session, require + contiguous controller command order, exactly one unique proposed result, and + exactly one unique terminal event. +- The top-level fixture result must equal the `run.result.proposed` payload after + canonical key ordering. Repeated `sourceEventId` deliveries must be + byte-equivalent after the same normalization. + +The forward-compatibility fixture proves that optional fields survive validation +without changing the v1 snapshot. The unsupported-version fixture proves that a +required v2 protocol cannot be replayed by this consumer. + +## Replay semantics + +- Events are applied in fixture order and ordered independently by + `(sourceKind, sourceInstanceId, sourceSeq)`. +- A repeated source event ID has no second projection effect. +- A forward source-sequence gap is recorded explicitly; the reducer never + invents a missing event. +- An event at or behind the committed source cursor is ignored and recorded as + out of order. +- Replaying an already-applied batch leaves the snapshot unchanged. + +The CLI and browser import the same `replayPhase1FixtureText` function, so +validation, compatibility errors, and final snapshots cannot drift between the +two surfaces. + +## Change policy + +1. Change JSON Schema first. +2. Regenerate the TypeScript schema module. +3. Add or revise a shared fixture and its golden snapshot/summary. +4. Prove TypeScript and Rust parity. +5. Update this policy and the normative spike specification when behavior + changes. + +Breaking changes require a new required version. Additive optional fields may +remain in v1 only when old consumers can safely ignore them. diff --git a/packages/paperclip-runner/docs/tutorials/end-to-end.md b/packages/paperclip-runner/docs/tutorials/end-to-end.md index 425daea8541..70472bb28c5 100644 --- a/packages/paperclip-runner/docs/tutorials/end-to-end.md +++ b/packages/paperclip-runner/docs/tutorials/end-to-end.md @@ -1,9 +1,10 @@ # Native Runner Cumulative End-to-End Tutorial -This tutorial grows with each accepted phase. At Phase 0, the complete runnable -system is the standalone Rust mock-core tracer plus its TypeScript parity oracle; -there is intentionally no daemon, network connection, browser console, real -harness, or Paperclip bridge. +This tutorial grows with each accepted phase. At Phase 1, the complete runnable +system includes the Phase 0 Rust mock-core tracer plus a language-neutral PRP +schema/fixture corpus, deterministic TypeScript reducer, Rust parity oracle, CLI +replay, and standalone browser replay. There is intentionally no daemon, network +connection, live harness, or Paperclip bridge. ## Current end-to-end path @@ -14,6 +15,11 @@ harness, or Paperclip bridge. 4. Confirm the shell prompt returns and no Paperclip service was started. 5. Open the [Phase 0 journal entry](../../knowledge/journal/2026-08-07-phase-00.md) and its linked verification evidence. +6. Follow [Phase 1: Validate and Replay a PRP Fixture](phase-01-static-replay.md). +7. Compare the happy-path CLI snapshot with the browser page. +8. Exercise the duplicate, gap, unknown-field, and unsupported-version fixtures. +9. Open the [Phase 1 journal entry](../../knowledge/journal/2026-08-07-phase-01.md) + and its linked verification evidence. The one-command form after installation is: @@ -28,7 +34,12 @@ pnpm --filter @paperclipai/paperclip-runner verify - Rust and TypeScript printed output is covered by exact string and parity assertions; - deliberate TypeScript and Cargo references to Paperclip core are rejected; - documentation and journal indexes are machine checked; -- the package remains runnable without Paperclip core. +- the package remains runnable without Paperclip core; +- JSON Schema remains the language-neutral authority for TypeScript and Rust; +- replay is deterministic and idempotent under duplicate delivery; +- source gaps are visible and never synthesized away; +- CLI and browser paths use the same validator/reducer module; +- browser components keep visual values in the package-local token layer. The next phase may extend this tutorial only after its own implementation and human checkpoint are authorized. diff --git a/packages/paperclip-runner/docs/tutorials/phase-01-static-replay.md b/packages/paperclip-runner/docs/tutorials/phase-01-static-replay.md new file mode 100644 index 00000000000..a664694e1d5 --- /dev/null +++ b/packages/paperclip-runner/docs/tutorials/phase-01-static-replay.md @@ -0,0 +1,108 @@ +# Phase 1: Validate and Replay a PRP Fixture + +This tutorial exercises the complete Phase 1 tracer bullet from a clean checkout: +validate a language-neutral fixture, reduce its events in the CLI, and inspect +the same snapshot in the standalone browser page. + +## Prerequisites + +- Node.js 20 or newer +- pnpm 9 or newer +- a stable Rust toolchain with `cargo` +- a Chromium-compatible browser + +Run every command from the repository root on the +`PAP-16679-paperclip-runner` branch. Install only this workspace without writing +the root lockfile: + +```sh +pnpm install --filter @paperclipai/paperclip-runner --lockfile=false --ignore-scripts --dev +pnpm --filter @paperclipai/paperclip-runner exec playwright install chromium +``` + +On a minimal Linux host, Playwright may also request system browser libraries: + +```sh +pnpm --filter @paperclipai/paperclip-runner exec playwright install-deps chromium +``` + +## 1. Check the contract and golden corpus + +```sh +pnpm --filter @paperclipai/paperclip-runner typecheck +pnpm --filter @paperclipai/paperclip-runner check:phase1-goldens +pnpm --filter @paperclipai/paperclip-runner check:phase1-parity +pnpm --filter @paperclipai/paperclip-runner check:forbidden-imports +``` + +Expected: generated schema sources are current, TypeScript and Rust accept the +same fixtures, all parity summaries match, and the standalone boundary passes. + +## 2. Replay the happy path in the CLI + +```sh +pnpm --filter @paperclipai/paperclip-runner replay:phase1 +``` + +Expected JSON facts: + +- `ok` is `true`; +- `snapshot.integrity` is `complete`; +- `snapshot.timeline` contains 9 entries; +- `snapshot.terminal.runTerminalState` is `succeeded`. + +Pass a different fixture path to inspect another case: + +```sh +pnpm --filter @paperclipai/paperclip-runner replay:phase1 packages/paperclip-runner/protocol/fixtures/phase-01/source-gap.json +``` + +Expected: `snapshot.integrity` is `gap_detected` and the missing source sequence +is `3`. + +An unsupported required version exits non-zero and returns a structured error: + +```sh +pnpm --filter @paperclipai/paperclip-runner replay:phase1 packages/paperclip-runner/protocol/fixtures/phase-01/unsupported-required-version.json +``` + +## 3. Open the standalone replay page + +Start the package-local Vite server: + +```sh +pnpm --filter @paperclipai/paperclip-runner browser:dev --host 127.0.0.1 --port 4179 +``` + +Open `http://127.0.0.1:4179`, then: + +1. Select `Happy path` and confirm the terminal badge reads `succeeded`. +2. Edit the fixture summary in the JSON textarea and select **Validate & replay**. +3. Select `Duplicate event` and confirm one duplicate is ignored. +4. Select `Source sequence gap` and confirm the missing sequence diagnostic. +5. Select `Unsupported required version` and confirm replay is rejected. +6. Expand **Inspect snapshot JSON** and compare it with the CLI output. + +Stop Vite with `Ctrl+C`. + +## 4. Run the browser regression path + +```sh +pnpm --filter @paperclipai/paperclip-runner check:browser-tokens +pnpm --filter @paperclipai/paperclip-runner test:browser +``` + +Expected: two Playwright tests pass and the happy-path screenshot is written to +`packages/paperclip-runner/knowledge/evidence/phase-01-static-replay.png`. + +## What this proves + +- JSON Schema is the executable source for validation and TypeScript types. +- The CLI and browser call the same validator and reducer. +- Duplicate delivery is idempotent and sequence gaps remain visible. +- Unknown optional fields do not change the v1 projection. +- No Paperclip server, UI, CLI, adapter, or production database module starts or + imports into the standalone path. + +Phase 2 is outside this tutorial and must not start before the Phase 1 human +checkpoint. diff --git a/packages/paperclip-runner/knowledge/evidence/2026-08-07-phase-01-verification.md b/packages/paperclip-runner/knowledge/evidence/2026-08-07-phase-01-verification.md new file mode 100644 index 00000000000..e4e73d991dd --- /dev/null +++ b/packages/paperclip-runner/knowledge/evidence/2026-08-07-phase-01-verification.md @@ -0,0 +1,138 @@ +--- +type: Verification Evidence +title: Phase 1 verification +description: Exact tools, commands, results, and browser artifact for PRP static replay. +tags: [native-runner, phase-1, verification, protocol, browser] +status: stable +generated: { by: openai/gpt-5, at: 2026-08-07T19:10:00Z } +phase: "1" +--- + +# Environment + +- OS: `Linux 6.17.0-1019-aws aarch64` +- Node.js: `v22.22.2` +- pnpm: `9.15.4` +- TypeScript: `5.9.3` +- Vitest: `4.1.10` +- Vite: `6.4.1` +- Playwright: `1.61.1` +- Rust/Cargo: `1.97.1` in the run scratch directory + +# Commands and observed results + +1. TypeScript schema/type/reducer tests: + +```sh +pnpm --filter @paperclipai/paperclip-runner test:typescript +pnpm --filter @paperclipai/paperclip-runner typecheck:typescript +pnpm --filter @paperclipai/paperclip-runner typecheck:browser +``` + +Result: exit 0. Six Vitest files and 29 tests passed. The generated schema module +matched all eight JSON Schema sources, and both TypeScript configurations passed. + +2. Golden corpus and standalone boundary: + +```sh +pnpm --filter @paperclipai/paperclip-runner check:phase1-goldens +pnpm --filter @paperclipai/paperclip-runner check:forbidden-imports +pnpm --filter @paperclipai/paperclip-runner check:browser-tokens +``` + +Result: exit 0. All six valid fixture snapshots/summaries were current; forbidden +Paperclip core imports were absent; component visual values remained in the +standalone `styles.css` token layer. + +3. Rust conformance/parity tests: + +```sh +PATH="$PAPERCLIP_RUN_SCRATCH_DIR/cargo/bin:$PATH" \ +CARGO_HOME="$PAPERCLIP_RUN_SCRATCH_DIR/cargo" \ +RUSTUP_HOME="$PAPERCLIP_RUN_SCRATCH_DIR/rustup" \ +pnpm --filter @paperclipai/paperclip-runner test:rust +``` + +Result: exit 0. Twelve Rust tests passed, including all six parity fixtures, +unsupported protocol/fixture versions, a mismatched declared result, the Phase 0 +stable tracer, and sequence-gap rejection. + +4. CLI tutorial paths after `build:typescript`: + +```sh +node packages/paperclip-runner/dist/cli/phase1-replay.js +node packages/paperclip-runner/dist/cli/phase1-replay.js packages/paperclip-runner/protocol/fixtures/phase-01/source-gap.json +node packages/paperclip-runner/dist/cli/phase1-replay.js packages/paperclip-runner/protocol/fixtures/phase-01/unsupported-required-version.json +``` + +Observed summaries: + +```json +{"ok":true,"integrity":"complete","timelineCount":9,"runTerminalState":"succeeded"} +{"ok":true,"integrity":"gap_detected","gaps":[{"sourceKey":"runner:runner_phase1","expected":3,"received":4,"missing":[3]}]} +{"ok":false,"issues":[{"code":"unsupported_required_version","path":"/protocolVersion"}]} +``` + +The first two commands exited 0. The unsupported required version exited 1. + +5. Browser build and Playwright replay: + +```sh +LD_LIBRARY_PATH="$PAPERCLIP_RUN_SCRATCH_DIR/playwright-libs/usr/lib/aarch64-linux-gnu:/lib/aarch64-linux-gnu:/usr/lib/aarch64-linux-gnu" \ +pnpm --filter @paperclipai/paperclip-runner test:browser +``` + +Result: exit 0. Vite transformed 218 modules and emitted the standalone page; +both Playwright cases passed in 2.0 seconds. They covered the happy snapshot, +ordered timeline, duplicate diagnostic, and unsupported-version error state. + +6. Repository UI token gate baseline: + +```sh +pnpm check:token-gates +``` + +Result: exit 1 with 12 existing color-literal findings in +`ui/src/components/onboarding/PaperclipOrbit3D.tsx`. Phase 1 changes no `ui/` +file. The package-local token check above is green. + +7. Complete package acceptance sequence: + +```sh +PATH="$PAPERCLIP_RUN_SCRATCH_DIR/cargo/bin:$PATH" \ +CARGO_HOME="$PAPERCLIP_RUN_SCRATCH_DIR/cargo" \ +RUSTUP_HOME="$PAPERCLIP_RUN_SCRATCH_DIR/rustup" \ +LD_LIBRARY_PATH="$PAPERCLIP_RUN_SCRATCH_DIR/playwright-libs/usr/lib/aarch64-linux-gnu:/lib/aarch64-linux-gnu:/usr/lib/aarch64-linux-gnu" \ +pnpm --filter @paperclipai/paperclip-runner verify +``` + +Result: exit 0. Build, all three typechecks, current goldens, 29 TypeScript +tests, 12 Rust tests, 3 negative/positive boundary tests, browser token check, +2 Playwright tests, documentation/OKF validation, Phase 0 parity, Phase 1 +parity, the Rust Phase 0 tracer, and the Phase 1 CLI replay all passed. + +# Browser artifact + +[Phase 1 static replay screenshot](phase-01-static-replay.png) + +- PNG: 1440 × 1137, RGB +- SHA-256: `eecdc71e35c76764916317239c2fd3dd1e2f60ab609ee48d12c2a1b6b67897ce` +- Shows editable happy-path fixture input, validated terminal snapshot, result + summary, ordered nine-event timeline, and snapshot JSON disclosure. + +# Acceptance mapping + +- Schema validation and schema-derived TypeScript types: passed. +- Happy/failure/interruption/duplicate/gap/unknown-field/version fixtures: passed. +- Determinism, idempotency, duplicate, gap, and forward compatibility: passed. +- CLI and browser use the same replay entry point: verified by imports and tests. +- Rust and TypeScript shared-fixture summaries: passed. +- Standalone browser build, interaction path, and screenshot: passed. +- Forbidden core imports: passed. +- Reference docs, tutorial index, cumulative tutorial, version policy, and OKF + journal: linked and machine-validated. + +# Known limitations + +See the linked [Phase 1 journal entry](../journal/2026-08-07-phase-01.md) for +intentional Phase 2+ gaps and the host-only browser dependency note. diff --git a/packages/paperclip-runner/knowledge/evidence/index.md b/packages/paperclip-runner/knowledge/evidence/index.md index 9778590d360..8b16787b11c 100644 --- a/packages/paperclip-runner/knowledge/evidence/index.md +++ b/packages/paperclip-runner/knowledge/evidence/index.md @@ -4,3 +4,4 @@ * [Phase 0 verification](2026-08-07-phase-00-verification.md) - Clean install, build, tests, boundary, documentation, OKF, and tracer results. * [Phase 0 Rust correction verification](2026-08-07-phase-00-rust-correction-verification.md) - Rust build/tests, cross-language parity, and corrected boundary evidence. +* [Phase 1 verification](2026-08-07-phase-01-verification.md) - Schema, golden, reducer, Rust parity, CLI, browser, token, boundary, and screenshot evidence. diff --git a/packages/paperclip-runner/knowledge/evidence/phase-01-static-replay.png b/packages/paperclip-runner/knowledge/evidence/phase-01-static-replay.png new file mode 100644 index 0000000000000000000000000000000000000000..5937e7fb98000577fae4ba362f00653d8efe127b GIT binary patch literal 131337 zcmeGEWmpv47d{H3h#&|ksicB*cY^{$_t4$l-3SOsOLsR&NjD-0(%p@8cf;AJ&+mV| zAKtI$I@fj1e458+n3=uz+H2kGzV9`GGE&0Gh&YHaFfhoXB7$--FmUNGFi&g{9)o{T zo~X%yfq4NVD)>R(IeBLeP8oA*0sbJPfeY^C%NUvRhK2?=2Zug~IeN!pmhqCR2BZdb z%$KsV(J~mKCfT_2gdzKL*DVas5xU0q*XvLRW|@rolR22qZ3p%x$PEp1nZRfKd3=*d zef00?7aIiYe@{R53Vek9_gtUgG2XwYZ;oFq{(B0O5C8-J?|B#Z6ZU^k->0o|G&)&WZf-8}YsTKu(U3n;dNKX2;^iDnGa}*<1zv7u zX19D0V#_;HIy$mjMp1O|B}nt7o#LI#N@;j6`yu~1^Zw!1NLFQWj~|1cxCV57 zNEU7~vAv^1Zo7P>zTTCDwyPZcEZxoFnY2eF403qW}lWJ4d58A&T^ zV{dOhQDRJr#z|*-8^6oD!pEXR3=)Z|O_<1S%!kVUcEU z@3;3V5)^8_6n&1O)Nk3?YHE2x4SO#VrlW`+yPfZGyPesC6Da=r)pX1@8=K~6D~8Zv z$L(Z;M)~Er&ul}Wn@TSC!EDQNHvUhH<&0M<3(dDPl_t_wY21gd7Y8~Z&m|@%cHxj9 zA|mE1m3rsoj71Q`zs@}>QTvnJzL2-Pf|U`2gGf*RQj(F;rc^dq7>)ippO9(yLT;*N zAdRo8veMqxHe<6hobXURi0_O6^8LFN6XP(K!&a|jl4z;sEva;BVYd9wGa3bt3qHyM z(I_nWA6devai&;aB;(obySn1e*JqM8ZjL%LP${Vr>9jlMrS
t)R^Zfr3wIR-M* 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

BU3 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

npLX*rnpA!BDCf!{|N6Gab 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 literal 0 HcmV?d00001 diff --git a/packages/paperclip-runner/knowledge/journal/2026-08-07-phase-01.md b/packages/paperclip-runner/knowledge/journal/2026-08-07-phase-01.md new file mode 100644 index 00000000000..5425facbc68 --- /dev/null +++ b/packages/paperclip-runner/knowledge/journal/2026-08-07-phase-01.md @@ -0,0 +1,94 @@ +--- +type: Engineering Journal Entry +title: Phase 1 protocol, fixtures, reducer, and static replay +description: Decisions and evidence for the executable PRP v1 schema and standalone replay checkpoint. +tags: [native-runner, phase-1, protocol, reducer, replay, browser] +status: stable +generated: { by: openai/gpt-5, at: 2026-08-07T19:10:00Z } +entry_kind: phase +phase: "1" +--- + +# Context + +Phase 1 makes the language-neutral runner contract executable before networking +or a real harness exists. The checkpoint must validate a scripted PRP fixture, +reduce ordered events deterministically, and show the same snapshot in a CLI and +standalone browser without importing Paperclip core. + +# Decisions + +1. Keep JSON Schema under `protocol/schemas/` as the language-neutral source of + truth. Generate checked TypeScript schema constants and derive public types + with `json-schema-to-ts`. +2. Accept unknown optional object properties for forward compatibility while + failing closed on unknown required protocol, fixture, event, schema, enum, or + required-field semantics. +3. Treat scripted fixtures as bound records: all run/session identities agree, + controller commands are contiguous, duplicate event IDs are byte-equivalent, + and the single proposed result matches the declared fixture result. +4. Keep the reducer pure and I/O-free. It deduplicates before projection, + records source gaps/out-of-order delivery, never invents events, and returns + an unchanged snapshot when an applied batch is replayed. +5. Import one `replayPhase1FixtureText` path from both CLI and browser so static + replay cannot develop two validation or projection contracts. +6. Use source-compatible shadcn Button, Badge, Card, and Textarea wrappers in the + standalone Vite page. Component files contain no visual literals; semantic + values live in the page's local CSS token layer. +7. Keep Rust at the production boundary by validating required versions and + fixture bindings, then comparing its parity summaries against the same + checked golden corpus. +8. Target current evergreen browsers in Vite. Ajv remains in the Phase 1 + devtool bundle so the browser validates the authoritative schemas directly. + +# Evidence + +Exact tool versions, commands, observed results, CLI summaries, browser test +output, screenshot digest, and boundary/token findings live in +[Phase 1 verification evidence](../evidence/2026-08-07-phase-01-verification.md). +The human path is documented in the +[Phase 1 tutorial](../../docs/tutorials/phase-01-static-replay.md). + +# Failures and corrections + +- The first browser build used Vite's default legacy target. The installed + esbuild cannot downlevel Ajv's runtime code to that target, producing 249 + transform errors. The devtool now declares `target: "esnext"`, matching its + current-evergreen-browser scope; the production build passes. +- The Playwright web-server command included a literal `--`, so Vite ignored the + requested port and attempted its default. The command now invokes + `pnpm exec vite preview` with explicit arguments. +- The first browser assertions used broad accessible-label/text selectors that + correctly matched more than one element. The tests now use an exact fixture + label and a scoped result-summary test ID. Both browser cases pass. +- The execution image had neither Cargo nor Chromium's optional Linux shared + libraries. A verified official stable Rust toolchain and extracted Ubuntu + browser libraries were placed only in the run scratch directory. No system or + repository runtime state was changed. +- The repository-wide token gate currently reports 12 existing onboarding color + literals outside this package. The new package-local browser token gate passes + and no `ui/` files were changed. + +# Known gaps + +- Static fixtures only: no runner daemon, network transport, durable outbox, + ACK, reconnect, or live browser subscription. +- No fake or real harness process and no control-plane persistence or authority. +- The browser is a first useful replay inspector, not the later full reference + console; it has no composer, live controls, request resolution, or dark theme. +- The unminified validation path keeps Ajv in the browser bundle. Bundle + optimization is deferred until behavior and schema boundaries are stable. +- Linux browser automation still requires the normal Playwright host libraries; + the tutorial names the standard installation command. + +# Follow-up questions + +- Should Phase 2 feed reducer batches per transport ACK or per animation frame + while preserving this exact snapshot result? +- Which fake-driver item payloads are the smallest useful addition to the + schema without prematurely implementing the Phase 5 console? +- Should a later build precompile Ajv validators after Rust schema conformance is + established, or keep runtime schema compilation for inspectability? + +No Phase 2 work begins from this entry; the next action is the Phase 1 human +checkpoint. diff --git a/packages/paperclip-runner/knowledge/journal/index.md b/packages/paperclip-runner/knowledge/journal/index.md index 9957ac589ee..da0f2e2a597 100644 --- a/packages/paperclip-runner/knowledge/journal/index.md +++ b/packages/paperclip-runner/knowledge/journal/index.md @@ -4,3 +4,4 @@ * [Phase 0 boundary, journal, and runnable skeleton](2026-08-07-phase-00.md) - Decisions, implementation evidence, failures, gaps, and next questions for the standalone skeleton. * [Phase 0 Rust boundary correction](2026-08-07-phase-00-rust-boundary-correction.md) - Root cause and corrected Rust/TypeScript ownership after the human checkpoint. +* [Phase 1 protocol, fixtures, reducer, and static replay](2026-08-07-phase-01.md) - Executable PRP schemas, deterministic replay decisions, browser findings, and checkpoint gaps. diff --git a/packages/paperclip-runner/knowledge/log.md b/packages/paperclip-runner/knowledge/log.md index c1e9c95a66f..b374e1d6f63 100644 --- a/packages/paperclip-runner/knowledge/log.md +++ b/packages/paperclip-runner/knowledge/log.md @@ -4,3 +4,4 @@ * **Creation**: Established the OKF v0.2 bundle, typed Phase 0 journal, verification evidence, template, and progressive-disclosure indexes. * **Rust boundary correction**: Added the production-direction Cargo workspace, shared-fixture parity evidence, negative Cargo boundary coverage, and a superseding journal entry after the Phase 0 checkpoint exposed the TypeScript-only omission. +* **Phase 1 static replay**: Added executable PRP v1 schemas, cross-language fixture/golden parity, deterministic reducer, CLI/browser replay, compatibility policy, tutorial, screenshot, and verification evidence. diff --git a/packages/paperclip-runner/spec/paperclip-native-runner-spike-spec.md b/packages/paperclip-runner/spec/paperclip-native-runner-spike-spec.md index 0c310f2ab52..55ac7f0568d 100644 --- a/packages/paperclip-runner/spec/paperclip-native-runner-spike-spec.md +++ b/packages/paperclip-runner/spec/paperclip-native-runner-spike-spec.md @@ -1385,6 +1385,28 @@ PRP v1 guarantees: Exactly-once network delivery is not claimed. Exactly-once **effects** are obtained through IDs, unique constraints, and transactional reducers. +#### 10.2.1 Phase 1 executable compatibility profile + +The Phase 1 standalone tracer makes the PRP v1 static contract executable under +`packages/paperclip-runner/protocol/`. JSON Schema is authoritative for identity, +capability, command, event, request, result, terminal, and scripted-fixture +shapes. TypeScript types are derived from the checked schema module; the Rust +reference reducer consumes the same fixtures and golden parity summaries. + +Required version fields and schema discriminators fail closed when unknown. +Unknown optional object fields are accepted and preserved, but have no reducer +effect until a later schema revision defines one. Scripted fixtures require one +unique `run.result.proposed` event whose payload matches the fixture result and +one unique `run.terminal` event. Repeated `sourceEventId` deliveries must be +byte-equivalent after canonical JSON key ordering. + +Static replay orders each source by `(sourceKind, sourceInstanceId, sourceSeq)`, +deduplicates before projection, records rather than fills source-sequence gaps, +and leaves an already-applied snapshot unchanged on replay. The package CLI and +standalone browser must import the same validator/reducer entry point. These +rules clarify the v1 compatibility contract; they do not add transport, +persistence, or control-plane authority in Phase 1. + ### 10.3 Common envelope ```ts