Commit Graph
3595 Commits
Author SHA1 Message Date
DottaandPaperclip 7d6ec9fbf3 fix(runner): support direct tailnet HTTP demo
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 17:10:17 +00:00
DottaandClaude Fable 5 4bc1c8e133 docs(runner): Phase 7I gate closed — shot 5 accepted, revision 15 refreshes copy-stale captures
Revisions 12-14 verified on the re-captured chat-streaming shots (byte-identical on re-record). Revision 15 accepts the post-capture composer disclaimer and isolated-mock wording from the demo-hardening commits and refreshes the five captures they staled.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 16:29:48 +00:00
DottaandPaperclip c8422d1aaa fix(runner): scope streaming chat evidence
Hold staged replay on a partial model message, limit activity to revealed records, and visibly explain disabled controls. Re-record the two streaming acceptance shots.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 16:21:25 +00:00
DottaandPaperclip 362754a633 fix(runner): pin Phase 7I proxy authority
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 16:19:49 +00:00
DottaandPaperclip 0566a9f3ca feat(runner): harden Phase 7I demo deployment
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 16:15:17 +00:00
DottaandClaude Fable 5 dcd6b23fa1 docs(runner): Phase 7I §11 acceptance rulings — shots 1-4 accepted, shot 5 gated on revisions 12-14
UX review for PAP-16920: §11a revisions 1-9 ruled on (all accepted; the
stage=streaming staging depth is the exception), reviewer revisions 10-11
accept the three-segment mobile shell and the home-rail hint card, and
revisions 12-14 record the fixes shot 5 is gated on: hold the activity
stream at the transcript's reveal ceiling, leave a model card visibly
mid-reveal, and give disabled session controls a visible reason.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 16:10: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
DottaandPaperclip 570f3d7a16 docs(runner): Phase 7I UX spec — mobile chat with visible mock activity
Interaction map, annotated responsive mockup, and desktop/mobile
acceptance captures for the Phase 7I Codex-style chat where every
turn's mock control-plane activity stays visible (PAP-16914).

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 15:21:06 +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
DottaandPaperclip 2cd4462e95 docs(runner): refresh Phase 7 evidence counts
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 14:25:34 +00:00
DottaandPaperclip a8211dce1d test(runner): add Phase 7 eval conformance suite
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 14:05:17 +00:00
DottaandPaperclip 6930ba3f38 Polish Phase 7 scenario explorer UX
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 14:00:48 +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
DottaandClaude Fable 5 144817ea2c docs(runner): record Phase 7F UX-gate revisions in explorer spec
Revisions 8-12: continuation evidence split across surfaces, empty
forbidden-operations corpus, keyboard deltas accepted as interim,
inline redaction-rule chips, and expanded-disclosure capture policy.
Recorded at the PAP-16905 acceptance gate.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 13:46:51 +00:00
DottaandClaude Opus 5 fb006b75ca feat(runner): add Phase 7 browser scenario explorer
Implements the standalone, package-local Phase 7 scenario explorer against the
approved interaction map (docs/design/phase-7-scenario-explorer-ux.md).

Scenario runtime (src/phase7, no DOM, no network):
- Scenario index over all 106 eval cases and 16 groups, with actor role, task
  mode, fixture seed, and catalog claims declared in a profile table rather
  than inferred from case prose. Claims that cannot unlock an operation in a
  scenario's task mode or for its actor role are dropped, so no scenario shows
  a grant that unlocks nothing.
- Deterministic fixture seeds and fake-agent plans: twelve authored plans for
  the UX acceptance scenarios, derived plans for the rest. Derived plans only
  invoke operations the run actually exposes, so any denial in a derived
  transcript is a real policy result, not a scripting artefact.
- A run-artifact builder that executes each plan against the Phase 7C mock
  control plane through the Phase 7D authorization engine and records the
  ordered timeline (both channels), tool exposure, authorization records, an
  immutable ten-domain state diff, and a parity verdict. Descriptor redaction
  rules are applied at the artifact boundary so no raw secret can reach a
  rendered record.
- Parity is judged in the runtime, never in a component. Phase 7E's per-case
  result is carried through verbatim in its own labelled block and renders
  "Not run" when no report is bundled.

Explorer (examples/phase7-explorer):
- Read-only surface over the frozen SDK: hash routing, scenario picker with
  faceted filters, agent and control-plane transcript channels, and Context,
  Authorization, State diff, and Parity inspector tabs. Tokens only; the
  0.1.2 export surface is unchanged and the runtime is reached through the
  deliberately package-local @paperclip-runner-local/phase7 alias.
- Checked-in inputs arrive as declared virtual modules, so the example
  consumer keeps its boundary and fake mode does no network I/O.

Verification: 45 unit tests (index, plans, all-scenario runs and parity,
components, routes), 19 Playwright tests (route determinism, evidence routes,
credential boundary, keyboard paths, responsive), and the 24-image screenshot
acceptance set.

Fixes found while building: SDK badges overflowed at 390px inside disclosure
summaries; SDK badge capitalisation broke the label vocabulary; hash-change
deep links left the wrong mobile segment; screenshot capture leaked run state
between shots. All recorded as revisions in the interaction map.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 13:30:32 +00:00
DottaandPaperclip 154bd9d904 fix(runner): isolate secret tool model delivery
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 12:52:16 +00:00
DottaandPaperclip 3f20bf4626 feat(runner): add Phase 7 semantic tool authorization
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 12:43:29 +00:00
DottaandPaperclip 4d97afc2ed feat(runner): generate normative Phase 7 inventory
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 12:33:39 +00:00
DottaandClaude Fable 5 5e0014a239 docs(runner): add Phase 7B scenario explorer UX spec and mockup
Interaction map, screenshot acceptance matrix, and annotated mockup for
the Phase 7 browser scenario explorer (PAP-16899). Binds picker facets,
transcript channels, inspector tabs, deterministic routes, and the
twelve-shot acceptance set to the 7A capability contract.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-09 12:29:21 +00:00
DottaandPaperclip 99a9fa30f7 feat(runner): add deterministic Phase 7 control plane
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 12:25:21 +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 512c0647b0 chore(runner): leave lockfile generation to CI
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 03:18:59 +00:00
DottaandPaperclip eba56a19e9 fix(runner): preserve pending governance gates
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 03:14:01 +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 f8a584ac9e docs(runner): clarify phase 6 port ownership
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-09 02:20:29 +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
Dotta 30c2aa39a9 docs(runner): authorize phase 6 integration 2026-08-09 02:08:21 +00:00
DottaandPaperclip 7fa15aaaf8 fix(runner): harden browser credential redaction
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 07:55:37 +00:00
DottaandPaperclip 20bb02d325 chore(runner): lock Phase 5 workspace tooling
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 07:52:27 +00:00
DottaandPaperclip bc10fffb06 fix(runner): keep browser types Node-free
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 07:50:57 +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 30a5e3c38d docs(runner): approve phase 5 component and SDK surface plan
UX gate PAP-16842: frozen consumer-facing component contracts, five
extension points, pcr- token rules, responsive/keyboard/accessibility
acceptance criteria, mini-consumer tracer flow, and the Phase 5
reuse/adapt/reject decision record.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 06:48:45 +00:00
DottaandClaude Opus 4.8 09b91b63f7 test(runner): add phase 4b independent QA verification evidence
Records the QA pass for PAP-16837: clean-start tutorial executed in a real
browser, deterministic demos, a real Codex end-to-end turn, full package
`verify` acceptance (exit 0), and curated screenshots.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-08 06:36:44 +00:00
DottaandClaude Opus 5 cda1fb03ab fix(runner): preserve phase 4b request terminal and goal semantics
Five protocol corrections from the CTO review of the Phase 4b work.

Canonical runtime request outcome. The real driver emitted `resolution`
while the scripted driver and browser read `action`, so a real resolved
card reported an unknown outcome. `harnessRuntimeRequestOutcome` is now
the one payload every driver emits for a terminal `runtime_request.*`
fact, carrying `requestId`, `requestKind`, `turnId`, and `itemId` in the
payload as well as the event binding.

Decoded request identities. Path segments are split before they are
decoded, so a percent-encoded reserved character stays inside the segment
the browser meant it for; malformed encoding fails with 400.

Resolution shapes validated by request kind.
`parseHarnessRuntimeRequestResolution` requires `answers` for a
`user_input` submit and `content` for an elicitation submit, and rejects
a mismatched body instead of accepting it as an empty response. Both
drivers and the browser transport run it, and the request card now sends
elicitation answers as `content`.

One terminal fact per reconnect. The demo server snapshots after the
close rather than before it, so requests the close already cancelled are
not replayed into the driver's stale-request recovery path and reported
terminal a second time. Reading afterwards also carries the closing
events' source sequence into the resumed session.

Goal support retired only on a provider denial. A transport or protocol
failure during `thread/goal/get` said nothing about what the build
supports but still set `goals: false`. `CodexRpcError` now carries the
JSON-RPC code, and the capability is retired only when the provider
answers that it will not serve the method.

Three defects surfaced while verifying the above are fixed here too: a
same-origin `EventSource` GET sends no `Origin`, so requiring one on
`/stream` rejected the console's own subscription and no live-console
test could connect; the browser payload redactor covered only
`.paperclip` paths and leaked the app-server's `~/.codex/memories`; and
the browser suite shares one server across 19 sessions against an
interactive cap of 16, now sized through `PAPERCLIP_PHASE4B_MAX_SESSIONS`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-08 06:04:03 +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 5870a1a432 docs(runner): approve phase 4b ux interaction map and components
UX gate PAP-16832: live-console interaction map for all spec 29.1
surfaces, shadcn/AI Elements adapt/reject decision record with a
zero-new-runtime-dependency rule, keyboard/accessibility acceptance
criteria, token additions, annotated 1440x900 and 390x844 mockups,
and OKF journal/index updates.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-08 04:31:22 +00:00
Dotta 4b5bbd1729 docs(runner): authorize phase 4b execution 2026-08-08 04:19:01 +00:00
Dotta c2824ce7f7 docs(runner): specify phase 4b live codex web ui 2026-08-08 03:19:05 +00:00