Commit Graph
39 Commits
Author SHA1 Message Date
Dotta 0f2b643c78 feat(runner): add provider tracing and live activity 2026-08-22 14:53:30 -05:00
Dotta 357caf4e3c feat(runner): polish live devtools console 2026-08-20 10:38:04 -05:00
Dotta dafb8848d5 feat(runner): add company state devtools 2026-08-20 09:40:29 -05:00
DottaandPaperclip 59e57017b1 refactor(runner): organize package by responsibility
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-11 12:56:59 +00:00
DottaandPaperclip ae80fe4d00 feat(runner): consolidate remaining Phase 5 and 6 work
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-11 11:45:45 +00:00
DottaandClaude Opus 5 3e875c6f9b feat(runner): add Phase 7M clean-room live Codex chat
Adds a second primary path beside the preset scenario explorer. `#/chat`
opens a blank thread on a freshly minted mock tenant — one company, one
agent, one blank issue — and drives real Codex through real runnerd. The
scenario explorer and its deterministic deep links are unchanged.

The clean room is live-only by construction. The route pins `mode=live`
and drops `shot`/`at`, the package server has no scripted path for it and
refuses any non-live projection, and a failure to start runnerd or Codex
is reported with a retry rather than replaced by a fixture.

`createPhase7CleanRoomSessionInput` seeds the minimum a runner session
needs and fails closed if anything else is present, so "starts blank" is
enforced at the seam rather than assumed. The exposure profile is fixed
and inspectable while the calls stay conversation-driven; three grants
(`governance:approvals:decide`, `workspace:control`,
`test:generic_api_request`) stay withheld so a typed denial is reachable
in a chat nobody scripted.

`Reset` and `New chat` retire the previous session's authority, drop its
workspace, and mint new mock identities; the old session id answers 404
afterwards. The projection now publishes the real-API block as a
`network-guard-<sessionId>` control-plane record, so "no request reached
a real Paperclip API" is inspectable in the drawer on both surfaces.

Also fixes two things the clean room surfaced: the unanchored `sk-`
credential heuristic matched mock ids of the form `task-cleanroom-<token>`,
and a hash change left one committed frame reporting `settled` for the
surface just navigated away from.

The 24-image screenshot matrix is re-recorded: the surface rail carrying
the clean-room entry is a real, always-visible element, and it reproduces
byte-for-byte against Chromium 151.0.7922.34.

Verified: test:phase7 159/159; test:browser:issue-thread 58/58 with axe
clean; check:phase7:ui 24/24 byte-identical; docs:validate 93 files, 34
OKF concepts; smoke:phase7:cleanroom all 15 assertions true against real
Codex 0.132.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-10 15:45:35 +00:00
DottaandPaperclip 789e74fceb docs(runner): fix offline Phase 7 install
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-10 15:25:52 +00:00
DottaandClaude Opus 4.8 d687515425 docs(runner): Phase 7I documentation and final evidence manifest
Document the final Phase 7 build 865d1a72 for clean-room QA and 7L review:
add the live process topology to architecture, an execution-modes reference
that names Real Codex / Real runnerd / Mock Paperclip and the fake-vs-live
eligibility rules, a canonical clean-start issue-thread tutorial (offline fake
mode plus optional real Codex), the authoritative Revision 3/4 evidence
manifest, the screenshot-index eligibility note, and the OKF journal entry.
Mark the Revision 2 preview (build da0d32d74a and its URL) ineligible for
final acceptance. Offline commands re-run on this tree; docs:validate green
(89 files, 33 OKF concepts).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-10 13:09:29 +00:00
DottaandClaude Opus 5 e72925a848 feat(runner): Phase 7I interactive scenario chat over the mock control plane
Adds a chat surface to the Phase 7 browser explorer where the board sends
prompts to a scenario and sees exactly how the mock Paperclip control plane
was used on every turn — the point of the phase is that the activity stays
visible rather than hidden behind the conversation (PAP-16916).

Runtime owns the turn model, so the UI derives nothing:

- `Phase7ChatSession` keeps one long-lived mock core across turns, so the
  state a turn changes is still there for the next one. Turn 0 is the
  control-plane seed (checkout, wake routing, exposure) that exists before
  anyone can type.
- Timeline entries gain a `turn`; the artifact gains `turns[]` with per-turn
  exposure, authorization records, state diff, reconciliation events, counts,
  and a turn-scoped verdict. A new `user_message` kind joins the five
  existing ones.
- `phase7TurnParity` judges a turn on what that turn did. A session-level
  expectation about work nobody has asked for yet would read as a failure of
  turn 1 rather than as work still to come.
- Recording machinery moves to `scenario-execution.ts`, shared with the 7F
  single-shot runner so a scenario reads the same either way.

Two scenarios carry authored multi-turn scripts: `ap-mcp-gate-01` (allowed
turn, then a denied one) and `ix-checkbox-01` (open an interaction, then the
board answers it — a control-plane-owned action with no agent tool, which is
what makes the control plane schedule the continuation wake). Every other
corpus scenario falls back to its 7F plan as one scripted turn.

The surface implements the approved 7I interaction map: turn strips bridging
each turn to its evidence, the six-section activity stream, the mobile
Chat/Activity segments with a deny count chip, reset and scenario-switch
confirmation, and deterministic deep links including a staged streaming hold.
Deviations taken during implementation are recorded in §11a of the map rather
than left for a reviewer to find.

No ACPX implementation, no real control-plane integration, no credential in
the browser: Codex mode stays disabled with a named reason and scripted mode
drives the same in-page mock core offline.

Tests: 30 new runtime/component tests and 18 browser tests; 79 phase-7 unit
and 43 phase-7 browser tests pass. Ten §11 screenshots recorded by
`record:phase7i`, which fails the run on any horizontal page scroll.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 15:56:47 +00:00
DottaandClaude Opus 4.8 ab7b85878a docs(runner): strip leaked generation wrappers, sync Phase 7 counts, guard against regressions
Remove trailing generation-wrapper markup (</content>, plus </invoke> in the
tutorial) that had leaked at EOF into eleven committed Phase 7 reference,
tutorial, evidence, and OKF-journal files.

Sync the stated suite counts in the current-state docs (tutorial,
scenario-explorer reference, verification-commands reference, and OKF journal)
to the verified results: test:phase7 49, test:browser:phase7 25,
docs:validate 73 files / 28 OKF concepts / 5 indexes. Drop a brittle wall-clock
timing from the journal. The dated 7F verification evidence and log.md milestone
entry keep their point-in-time 45/19 figures on purpose.

Add a wrapper-markup guard to docs:validate (via scripts/lib/doc-wrappers.mjs)
that fails with the exact file and line when generator envelope tags reappear,
plus a node:test regression suite wired into the package test script.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-09 14:46:49 +00:00
DottaandClaude Opus 4.8 59b72ca1d2 docs(runner): add Phase 7G reference docs, tutorial, evidence, and OKF
Phase 7G (PAP-16906): package-local reference pages for capability
disposition, mock ControlPlanePort, semantic tools, authorization and
exposure, eval-derived conformance, browser explorer, the future Phase 8
binding boundary, and the focused verification commands; a clean-start
tutorial that runs from the repo root with no Paperclip service or external
eval repo; an OKF evidence manifest cross-linking every focused command to
its observed result and the security/UX/QA gate issues (PAP-16902, PAP-16905,
PAP-16907); and the Phase 7 OKF journal entry. Additive updates to the docs
index, architecture boundary, and knowledge indexes. Keeps ACPX as Phase 8.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-09 13:49:53 +00:00
DottaandPaperclip f0eb3d5c18 docs(runner): reconcile phase 6 final evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 07:53:28 +00:00
DottaandPaperclip bacf670497 fix(native-runner): commit audit-only attention
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 07:43:28 +00:00
DottaandPaperclip c82a2142c9 fix(native-runner): wire live attention and rollback proofs
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 07:22:30 +00:00
DottaandPaperclip d53b7902ab fix(native-runner): prove live Phase 6 effects
Route corpus operations through cancellation, reconciliation, attention, and rollout entrypoints, materialize effects through owning services, and document the live-versus-policy proof boundary.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 06:46:53 +00:00
DottaandPaperclip 3bed55f3f7 fix(native-runner): materialize phase 6 live effects
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 06:05:21 +00:00
DottaandPaperclip 33d9e8ef66 Bind Phase 6 corpus to production behavior
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 05:22:49 +00:00
DottaandPaperclip a392a69f87 test(native-runner): execute recovery and corpus evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 04:47:58 +00:00
DottaandPaperclip 386433f178 fix(native-runner): complete recovery and conformance
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 04:19:01 +00:00
DottaandPaperclip f285bbbab8 test(runner): finish phase 6 conformance
Exercise all atomic-liveness failpoints, make native cancellation retry-safe, and align the allowlist and verification evidence with the final database-backed matrix.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 03:49:43 +00:00
DottaandPaperclip 0ca23dd535 fix(runner): make native finalization restart-safe
Persist bound session checkpoints, verify durable completion evidence, and commit status/liveness effects atomically. Preserve unique event cursors during migration and add bounded recovery plus legacy compatibility coverage.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 03:44:38 +00:00
DottaandPaperclip 37c219b297 feat(runner): add feature-flagged Paperclip adapter tracer
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 03:08:55 +00:00
DottaandPaperclip 3a38c8f931 docs(runner): revise phase 6 native integration design
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 02:29:18 +00:00
DottaandPaperclip 0458cc5c15 docs(runner): specify phase 6 adapter boundary
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 02:17:06 +00:00
DottaandPaperclip cc945e4c72 feat(runner): extract Phase 5 browser SDK
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 07:42:57 +00:00
DottaandPaperclip 405a4a4506 fix(runner): secure phase4b browser transport
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 05:43:13 +00:00
96092b832d feat(runner): add phase 4b live codex protocol console
Add the package-local browser tracer over the Phase 4b protocol boundary as a
new Live console mode in the standalone devtool.

Surfaces derive only from canonical PRP events and the shared reducer: live
transcript and composer, same-turn steering with stale-turn recovery, three
distinct interrupt races, inline runtime request cards, capability-gated goal
controls, parent/child lineage, reconnect, refresh, replay, and a redacted
protocol inspector.

Add a deterministic scripted driver and eleven demo chats behind the same demo
server routes the real Codex driver uses, so every protocol state is reachable
without a provider account and PAPERCLIP_PHASE4B_DRIVER=codex swaps in the real
session.

Adapt shadcn/ui and Vercel AI Elements source with zero new runtime
dependencies, and extend the boundary check to keep it that way.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 05:26:45 +00:00
DottaandPaperclip 62d384b383 feat(runner): add phase 4b protocol server
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 04:44:00 +00:00
DottaandPaperclip eef193508d fix(runner): stabilize warmed Codex isolation evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 03:11:05 +00:00
DottaandPaperclip 8d4ffe7f2b fix(runner): isolate Codex credentials and hostile output
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 02:07:33 +00:00
DottaandPaperclip 2161ddcc4a feat(runner): add skillless Codex app-server tracer
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 01:33:36 +00:00
DottaandPaperclip 5da7172af5 feat(runner): expand recovery diagnostics
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 23:59:43 +00:00
DottaandPaperclip 486069e369 docs(runner): record Phase 3 recovery evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 23:37:40 +00:00
DottaandPaperclip a9e6db06e0 fix(runner): address phase 2 tutorial QA
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 22:13:41 +00:00
DottaandPaperclip 7e0c8632da docs(runner): document Phase 2 verification
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 21:09:28 +00:00
Dotta 77fce1a6ed docs(runner): authorize phase 2 and clarify tutorials 2026-08-07 20:30:06 +00:00
DottaandPaperclip a4af3caea7 docs(runner): record phase 1 replay evidence
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 19:13:07 +00:00
DottaandPaperclip a86edda579 fix(runner): establish phase 0 rust boundary
Add the production-direction Cargo workspace, make the Rust tracer the default Phase 0 path, and enforce shared-fixture parity with the TypeScript reference. Extend standalone boundary checks and record the correction in the implementation plan and OKF journal.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 18:12:48 +00:00
DottaandPaperclip 164e44ef4e feat(runner): add standalone phase 0 skeleton
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-07 16:33:01 +00:00