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>
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>
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>
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>
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>
Bind Codex reconciliation to the persisted active turn and retain semantic-result and terminal fingerprints across transport recovery. Align Phase 4 docs with content-idempotent retry behavior.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Enforce loopback/same-origin transport and bounded browser resources, frame harness output before allocation, and reconcile terminal state from runner-owned facts.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
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>
UX review PAP-16714 findings applied:
- Resume line now normatively precedes the response control (UX doc 2.3),
matching OPX-4/OPX-F3 DOM-order gates and the doc's own acceptance
criterion 4; the PAP-16712 mockup footer placement is noted as
non-normative.
- 18.12.13 screenshot matrix gains the accepted happy path
(completion_contract_satisfied -> Done, four layers in agreement).
Co-Authored-By: Paperclip <noreply@paperclip.ing>