diff --git a/.agent/autopsies/2026-08-28-controller-projection-cache.md b/.agent/autopsies/2026-08-28-controller-projection-cache.md
new file mode 100644
index 0000000..12dcbf3
--- /dev/null
+++ b/.agent/autopsies/2026-08-28-controller-projection-cache.md
@@ -0,0 +1,19 @@
+# Controller projection cache autopsy
+
+The `pnpm run test` command at commit `a3f07f4` passed 827 functional tests and failed 1 of 16 performance tests.
+
+The failed test expected stable controller reads to remain below a 10 ms p90.
+The assertion did not print the measured p90.
+
+`ApplicationUiController.view()` cached the cloned application state but called `#project()` on every read.
+The source check was `src/adapters/tui/application-ui-controller.ts:80` before the fix.
+
+The host also ran multiple compiler and model processes during the failure.
+Two isolated repetitions passed, so host saturation determined when the repeated work crossed the threshold.
+
+Classification: infra-bug.
+
+The fix caches the immutable final view by state, failure signals, and local presentation inputs.
+The deterministic check now requires the same view object for every unchanged revision.
+
+Fix: cache the projection in `src/adapters/tui/application-ui-controller.ts`, then rerun the performance and full test commands.
diff --git a/.agent/critical-audit/2026-08-28T21-44-00Z/findings.jsonl b/.agent/critical-audit/2026-08-28T21-44-00Z/findings.jsonl
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/.agent/critical-audit/2026-08-28T21-44-00Z/findings.jsonl
@@ -0,0 +1 @@
+
diff --git a/.agent/critical-audit/2026-08-28T21-44-00Z/manifest.json b/.agent/critical-audit/2026-08-28T21-44-00Z/manifest.json
new file mode 100644
index 0000000..dfdfc4e
--- /dev/null
+++ b/.agent/critical-audit/2026-08-28T21-44-00Z/manifest.json
@@ -0,0 +1,19 @@
+{
+ "scope": "LIVE-07 and LIVE-08 provider-bound cloud proof changes",
+ "base": "1dca6db491f9a03f898a0437394d5903598c7434",
+ "head": "9671907",
+ "files": [
+ "docs/components/README.md",
+ "docs/components/cloud-proof-observations.md",
+ "scripts/live-required/contracts.mjs",
+ "scripts/live-required/tangle-sandbox-braid-interactive.mjs",
+ "scripts/live-required/tangle-sandbox-braid-soak.mjs",
+ "scripts/live-required/tangle-sandbox-braid-stress.mjs",
+ "test/tangle-live07-wiring.test.mjs",
+ "test/tangle-sandbox-braid-soak-script.test.mjs"
+ ],
+ "projectType": "Node package with live release scripts",
+ "reviewers": ["A-correctness-security", "B-architecture-performance", "C-real-system-coverage"],
+ "mode": "serial",
+ "notInspected": "Unrelated dirty source, package, and verification artifacts were excluded from this commit."
+}
diff --git a/.agent/critical-audit/2026-08-28T21-44-00Z/summary.md b/.agent/critical-audit/2026-08-28T21-44-00Z/summary.md
new file mode 100644
index 0000000..d30122c
--- /dev/null
+++ b/.agent/critical-audit/2026-08-28T21-44-00Z/summary.md
@@ -0,0 +1,31 @@
+# Audit: LIVE-07/LIVE-08 provider-bound proofs — 1dca6db..9671907 — n=8 files, 0 findings
+
+**Verdict:** APPROVE — changed proof paths reject unverified provider evidence · 0 CRITICAL / 0 HIGH / 0 MEDIUM / 0 LOW
+**Worst:** none — no reproducible defect remained in the changed scope.
+**Next:** run protected Sandbox LIVE-07/LIVE-08 provider probes before release.
+
+## Scope
+
+| Field | Value |
+|---|---|
+| Files | n=8 via commit diff and explicit changed-file scope |
+| Base..head | `1dca6db491f9a03f898a0437394d5903598c7434..9671907` |
+| Project type | Node package with live release scripts |
+| Reviewers | A,B,C · serial |
+| Not inspected | Unrelated dirty source, package, and verification artifacts. |
+
+## Findings — 0 of 0, ranked
+
+No changed-scope finding had a reproducible failure scenario after the focused proof suite, syntax check, lint check, diff check, and credential-shaped literal scan.
+
+## Assumptions & unverified
+
+| Assumption | Finding it would flip | Check that settles it |
+|---|---|---|
+| A protected provider run is available for this branch. | Live provider behavior remains unverified. | Run the protected LIVE-07 and LIVE-08 scripts and inspect the redacted receipts. |
+| The public Sandbox API preserves the retained workspace files and usage fields. | Provider readback or telemetry could remain unavailable. | Execute the scripts against Sandbox and require their provider-bound checks. |
+
+## Self-gate
+
+9/9 passed — failed: none.
+1 verdict = decision + 1 number · 2 every finding has file:line · 3 concrete failure scenario · 4 status label · 5 evidence is a pointer · 6 cost both sides · 7 fix + verification per row · 8 zero adjectives standing in for counts · 9 words ≤600 outside tables.
diff --git a/.agent/pursuits/2026-08-28-orchestrate-braid-10.md b/.agent/pursuits/2026-08-28-orchestrate-braid-10.md
new file mode 100644
index 0000000..427f93a
--- /dev/null
+++ b/.agent/pursuits/2026-08-28-orchestrate-braid-10.md
@@ -0,0 +1,87 @@
+# Braid completion workflow
+
+## Objective
+
+Ship Braid as a production terminal for concurrent, durable agent work.
+
+The release must start, stream, switch, branch, fork, ask, analyze, supervise, and control parallel sessions through current shared contracts.
+
+Every component must have an implementation note that describes the smallest general design which satisfies its contract.
+
+## Structure
+
+The workflow is a pipeline with one integration barrier.
+
+Three isolated implementation tracks run in parallel before integration.
+
+1. Stream safety owns incremental sanitation, durable event safety, replay, cancellation, and output limits.
+2. Multi-run product owns concurrent branch runs, focused-run state, controls, terminal workflows, and responsive presentation.
+3. Runtime continuity owns retained reconnect, native continuation, exact worker control, and any missing shared runtime contract.
+
+The integration branch accepts a track only after its narrow tests pass.
+
+Shared package changes merge and publish before Braid consumes them.
+
+## Coordination policy
+
+- Three Luna-max workers write independent implementations in isolated worktrees.
+- The operator owns architecture boundaries, integration, live checks, commits, releases, and final claims.
+- Workers must extend current contracts and must not add provider-specific execution paths to Braid.
+- Every durable event change includes idempotency, restart, and migration coverage.
+- Every streaming change includes disconnect, replay, duplicate-event, cancellation, and finalization coverage.
+- Every interaction change includes accept, decline, timeout, cancel, and restart coverage.
+- Every visible workflow includes keyboard proof and captures at 40x12, 80x24, 120x40, and 200x60.
+- A worker can request an upstream change, but the owning package must implement it.
+- No track opens a separate Braid pull request.
+
+## Expected worker count
+
+Three concurrent workers run in each implementation wave.
+
+The expected total is 12 to 18 worker turns across implementation, integration repair, live proof, and adversarial review.
+
+## Waves
+
+### Wave 1: foundations
+
+- Make streamed output safe before it enters the journal or reducer.
+- Replace the global active-run slot with branch-scoped active work and one explicit focus.
+- Reproduce and repair retained Tangle reconnect with preserved failure evidence.
+- Adopt the current runtime package only after its required API is proven.
+
+### Integration barrier
+
+- Integrate passing commits into one Braid branch.
+- Resolve the state, migration, and adapter interfaces once.
+- Run contract, type, dependency, performance, security, and full local checks.
+
+### Wave 2: complete workflows
+
+- Complete exact native continuation and same-session recovery.
+- Complete portable conversation handoff and workspace fork through owning packages.
+- Complete trace analysis actions from run details.
+- Complete supervisor worker navigation, attach, steer, and acknowledged cancellation.
+- Complete the conditional work strip, capability-driven selectors, help navigation, and truthful route copy.
+- Create component notes and a complete source-to-component index.
+
+### Wave 3: proof and delivery
+
+- Run the current live CLI Bridge and Tangle matrix from packed artifacts.
+- Prove concurrent sessions, retained reconnect, interactions, fork, analysis, attach, steer, cancel, cleanup, and replay.
+- Capture dark and light terminal evidence at all required sizes.
+- Record the changed user flows.
+- Run three independent adversarial reviews after all implementation checks pass.
+- Fix every valid finding and repeat the affected checks.
+- Open one pull request per changed repository.
+- Merge and publish dependencies in order.
+- Install the published Braid package in a clean directory and repeat the release checks.
+
+## Synthesis rule
+
+Prefer one general owning contract over a Braid-only special case.
+
+Prefer explicit identifiers and immutable projections over inferred global state.
+
+Reject an implementation if it cannot prove restart, replay, cancellation, capability failure, and bounded resource use where those conditions apply.
+
+The product is complete only when the published package passes the required live matrix and leaves no owned resource behind.
diff --git a/.agent/release-progress.md b/.agent/release-progress.md
new file mode 100644
index 0000000..8f4ea3d
--- /dev/null
+++ b/.agent/release-progress.md
@@ -0,0 +1,103 @@
+# Release Progress
+
+## Release record
+
+This file tracks one candidate and its matching public release cohort.
+Populate every `not recorded` value from the same release artifact and verification run.
+Do not copy a version, integrity value, or live result from an earlier cohort.
+
+- Candidate Braid package and version: `not recorded`
+- Candidate Braid commit: `not recorded`
+- Runtime package and version: `not recorded`
+- Sandbox package and version: `not recorded`
+- Agent Interface package and version: `not recorded`
+- Tangle provider package and version: `not recorded`
+- Runtime artifact commit and tarball integrity: `not recorded`
+- Braid artifact tarball integrity: `not recorded`
+- Runtime rollback package and version: `not recorded`
+- Braid rollback package and version: `not recorded`
+- Registry and live-service environment: public npm and public Tangle services
+- Release credentials: protected release environments and `gh-drew`
+
+## Public dependency cohort
+
+- Agent Interface: `not recorded`; registry version, owning-repository checks, and publication proof are pending.
+- Tangle provider: `not recorded`; registry version, owning-repository checks, and publication proof are pending.
+- Sandbox: `not recorded`; registry version, owning-repository checks, and publication proof are pending.
+- Runtime: `not recorded`; registry version, owning-repository checks, and publication proof are pending.
+- Runtime package integrity: `not recorded`.
+- Braid has no file, link, or workspace production dependencies: verify against the final lockfile before publication.
+
+## Prior cohort record
+
+The entries below describe the 2026-08-28 checkpoint only.
+They are historical evidence and do not describe the current release candidate.
+
+- Agent Interface `1.7.1` passed 478 of 478 tests before publication.
+- Tangle provider `0.14.1` passed 170 of 170 tests before publication.
+- Sandbox `0.34.0` came from merged commit `c2abc576520f6303fb26528391c706a150419a33`.
+- Runtime `0.177.0` came from merged commit `4b6ff007`.
+- Runtime package integrity was `sha512-6UYAtUEmhzluJYe6VL4ECKyNCQD0HAx9sch2W5BTcA5R/ddrlANy5jJ3Sq7TPmm07JeeMq3iolTEfrGgbDPQEw==`.
+- Runtime provenance, tag, source, workflow, and isolated installation were verified after publication.
+
+## Completed Product Work
+
+- The Work Strip supports concurrent runs, explicit focus, switching, and targeted cancellation.
+- Native continuation resumes the selected provider session.
+- Cross-runner and cross-workspace forks create new branches without changing agent identity.
+- Interaction views support typed answers, acceptance, decline, timeout, cancel, and restart recovery.
+- Analysis freezes one run, records cited findings, and preserves promotion decisions.
+- Supervisor views project the Runtime worker tree and route steer, cancel, and exact terminal attach.
+- Braid suspends its screen during worker attach and delegates terminal transport to Runtime.
+- All 51 exported terminal components map to 25 component documents.
+- Every component document states its best simple general implementation.
+- The UI captures 16 product states and 21 keyboard frames at all four required terminal sizes.
+
+## Current proof record
+
+Record each result with its candidate commit, command, date, and artifact path.
+Use `not recorded` until the check runs against the release record above.
+
+- Local package and terminal checks: `not recorded`.
+- Provider and Sandbox live checks: `not recorded`.
+- Restart, concurrent-session, and interaction checks: `not recorded`.
+- Package-to-candidate comparison: `not recorded`.
+- Dependency audit and source graph: `not recorded`.
+
+## LIVE-10 status record
+
+- Current LIVE-10 result: `not recorded`.
+- Current evidence path and artifact: `not recorded`.
+- Previous observation from 2026-08-28: Base Sepolia chain `84532` had one active blueprint-12 binary and zero blueprint-12 services.
+- Previous observation from 2026-08-28: The advertised operator endpoint did not complete TLS or expose the required API.
+- Previous observation from 2026-08-28: The operator host was ARM64, while the published Nitro binary was x86_64.
+- Previous observation from 2026-08-28: The host had no Nitro process, Nitro routing, or AWS deployment credentials.
+- Previous observation from 2026-08-28: Production Sandbox had no Nitro driver allowlist or Nitro target configuration.
+- Previous observation from 2026-08-28: Four temporary host-agent sandboxes were deleted and excluded from confidential proof.
+- Release decision: block publication until LIVE-10 passes against the release record above.
+
+## Remaining Sequence
+
+1. Finish and verify warm-start performance against the published dependency cohort.
+2. Regenerate stable visual captures and inspect every corrected flow.
+3. Run the complete local, package, property, performance, and live-provider checks.
+4. Run independent architecture, security, UI, and release reviews and fix each valid finding.
+5. Merge one Braid pull request after current checks and reviews pass.
+6. Publish the candidate package recorded above only after every required live row, including LIVE-10, passes.
+7. Download the public Braid package and compare it with the approved candidate.
+
+## Decision
+
+- Keep npm `latest` on the last verified release while any required live check is unavailable.
+- Merge reusable product and proof improvements when their exact checks pass.
+- Do not replace provider proof with fixtures, local Sidecar runs, or host-agent sandboxes.
+- Do not describe an unavailable confidential path as shipped.
+
+## Timeline
+
+- 2026-08-28: Proved retained Tangle reconnect after forced Braid process termination.
+- 2026-08-28: Implemented multi-run focus, continuation, forks, interactions, analysis, and supervisor controls.
+- 2026-08-28: Published Agent Interface `1.7.1`, Tangle provider `0.14.1`, Sandbox `0.34.0`, and Runtime `0.177.0`.
+- 2026-08-28: Proved the public Sandbox Sidecar input, detach, reconnect, replay, and interaction flow.
+- 2026-08-28: Proved two retained Tangle multirun cohorts with exact cleanup.
+- 2026-08-28: Confirmed that Base Sepolia has zero blueprint-12 services and no reachable Nitro operator.
diff --git a/.agent/skill-runs.jsonl b/.agent/skill-runs.jsonl
index c05baa5..a5c00b5 100644
--- a/.agent/skill-runs.jsonl
+++ b/.agent/skill-runs.jsonl
@@ -66,3 +66,41 @@
{"skill":"/verify","ts":"2026-08-19T08:55:46Z","project":"braid-exact-interactive-20260816","target":"Braid retained/headless/native PTY verification","operatorPrompt":"","durationMin":null,"verdict":"HOLD: 761/766 full tests pass; 3 external failures remain","dispatchedTo":"upgrade the owning dependencies, then rerun contract and production native routing","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/verify","ts":"2026-08-19T08:59:19Z","project":"braid-exact-interactive-20260816","target":"Braid retained/headless/native PTY verification (final)","operatorPrompt":"","durationMin":null,"verdict":"HOLD: 762/766 full tests pass; 2 pinned dependency failures remain","dispatchedTo":"upgrade the owning dependencies, then rerun contract and production native routing","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/critical-audit","ts":"2026-08-19T11:05:46Z","project":"braid-exact-interactive-20260816","target":"Braid durable interaction and TUI architecture n=70 files","operatorPrompt":"","durationMin":null,"verdict":"REQUEST_CHANGES","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/verify","ts":"2026-08-28T13:02:50Z","project":"braid-10-release-multirun","target":"Braid LIVE-07 Tangle multirun release wiring","operatorPrompt":"","durationMin":null,"verdict":"SHIP_IT","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/product-design","ts":"2026-08-28T14:00:31Z","project":"braid-10-ui-proof-fixes","target":"Braid W6 command-palette overflow marker and packed terminal proof","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/product-design","ts":"2026-08-28T10:49:51Z","project":"braid-10-complete","target":"integrated concurrent-run terminal workflow","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/diagnose","ts":"2026-08-28T19:50:09Z","project":"braid-10-complete","target":"Braid local performance f=1/n=16 clusters=1","operatorPrompt":"","durationMin":null,"verdict":"ROOT_CAUSE_CONFIRMED","dispatchedTo":"/autopsy","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/autopsy","ts":"2026-08-28T19:50:09Z","project":"braid-10-complete","target":"Braid controller projection cache","operatorPrompt":"","durationMin":null,"verdict":"INFRA_BUG","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/simplify","ts":"2026-08-28T21:04:05Z","project":"braid-10-complete","target":"shared Braid supervisor snapshot fixtures","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/harden","ts":"2026-08-28T21:24:57Z","project":"braid-10-complete","target":"POSIX escaped-descendant cleanup ownership in Braid live bridge, LIVE07, and LIVE08","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/critical-audit","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/harden","ts":"2026-08-28T21:41:41Z","project":"braid-10-complete","target":"LIVE-07/LIVE-08 provider-bound Sandbox proof hardening: input, reconnect, execution attempts, cleanup, identity, usage, telemetry, spend","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/critical-audit","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/critical-audit","ts":"2026-08-28T21:43:09Z","project":"braid-10-complete","target":"LIVE-07/LIVE-08 provider-bound cloud proof changes n=8 files","operatorPrompt":"","durationMin":null,"verdict":"APPROVE","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/product-design","ts":"2026-08-28T23:32:44Z","project":"braid-10-complete","target":"Braid W6 terminal visual capture","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/ui-test","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/ui-test","ts":"2026-08-28T23:32:45Z","project":"braid-10-complete","target":"Braid W6 terminal keyboard and state captures","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/verify","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/ground-truth","ts":"2026-08-29T00:13:35Z","project":"braid-10-complete","target":"Braid packed PERF-01..PERF-10 public cohort matrix","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/evolve","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/diagnose","ts":"2026-08-29T00:13:40Z","project":"braid-10-complete","target":"performance command metadata lookup failure f=1/n=1","operatorPrompt":"","durationMin":null,"verdict":"ROOT_CAUSE_CONFIRMED","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/harden","ts":"2026-08-29T01:15:35Z","project":"braid-10-complete","target":"cli-bridge static bearer exposure and consumer rotation","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/verify","ts":"2026-08-29T02:22:58Z","project":"braid-10-complete","target":"native continuation admission lifecycle integration","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"--help","ts":"2026-08-29T03:42:36Z","project":"braid-10-complete","target":"","operatorPrompt":"","durationMin":null,"verdict":"n/a","dispatchedTo":"stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/verify","ts":"2026-08-29T03:42:50Z","project":"braid-10-complete","target":"post-fix full pnpm check, performance cache, PTY and visual proof","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/ui-test","ts":"2026-08-29T03:42:50Z","project":"braid-10-complete","target":"packed W6 terminal captures at 40x12, 80x24, 120x40, 200x60 and keyboard flow","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/verify","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/verify","ts":"2026-08-29T04:21:54Z","project":"braid-10-complete","target":"Braid release-readiness: tests, checks, PTY, visual captures, package proof, component docs","operatorPrompt":"","durationMin":null,"verdict":"HOLD","dispatchedTo":"/converge","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/harden","ts":"2026-08-29T07:05:42Z","project":"braid-10-complete","target":"Braid interaction response reconciliation and startup ordering","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/critical-audit","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/ui-test","ts":"2026-08-29T17:56:15Z","project":"braid-10-complete","target":"Braid packed PTY, keyboard, multi-run, and connection flows","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/verify","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/product-design-audit","ts":"2026-08-29T17:56:15Z","project":"braid-10-complete","target":"Braid packed terminal workflows and responsive states","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/verify","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/verify","ts":"2026-08-29T18:15:53Z","project":"braid-10-complete","target":"exact @tangle-network/agent-runtime 0.180.0 integration","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/report","ts":"2026-08-29T18:16:13Z","project":"braid-10-complete","target":"Braid progress during the last six hours","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/ship","ts":"2026-08-29T18:30:49Z","project":"braid-10-complete","target":"final packed CLI Bridge LIVE-01..05 proof","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/deploy-proof","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"--help","ts":"2026-08-29T18:53:12Z","project":"braid-10-complete","target":"","operatorPrompt":"","durationMin":null,"verdict":"n/a","dispatchedTo":"stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/product-design","ts":"2026-08-29T18:53:17Z","project":"braid-10-complete","target":"Braid terminal connection and W6 captures at 40x12, 80x24, 120x40, 200x60","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/product-design-audit","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/product-design-audit","ts":"2026-08-29T18:53:17Z","project":"braid-10-complete","target":"Braid terminal canonical visual states and keyboard flows","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/ui-test","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/ui-test","ts":"2026-08-29T18:53:17Z","project":"braid-10-complete","target":"Braid packed PTY keyboard and responsive terminal flows","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/verify","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/verify","ts":"2026-08-29T19:50:02Z","project":"braid-10-complete","target":"reconcile Braid release tracked edits and remove intermediate Tangle artifacts","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/release-conductor","ts":"2026-08-29T20:12:02Z","project":"braid-10-complete","target":"Braid 0.3.0 immutable candidate release path","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/verify","ts":"2026-08-29T20:12:02Z","project":"braid-10-complete","target":"Braid release automation fix and full local verification","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/harden","ts":"2026-08-30T01:12:35Z","project":"braid-release-provenance-fix","target":"Braid release candidate source-to-archive identity and npm publish boundary","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/ui-test","ts":"2026-08-30T02:01:21Z","project":"braid-keyboard-flow-fix","target":"packed Braid PTY keyboard workflows","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/verify","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/product-design","ts":"2026-08-30T02:01:21Z","project":"braid-keyboard-flow-fix","target":"packed Braid keyboard workflow capture","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/ui-test","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/verify","ts":"2026-08-30T04:54:46Z","project":"braid-10-complete","target":"Braid feat/braid-10-complete final pnpm check","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/model-freshness","ts":"2026-08-30T05:00:20Z","project":"braid-10-complete","target":"Braid active Tangle model defaults","operatorPrompt":"","durationMin":null,"verdict":"FRESH","dispatchedTo":"/verify","operatorOverride":null,"transcriptPath":null,"traceDir":null}
+{"skill":"/verify","ts":"2026-08-30T05:05:16Z","project":"braid-10-complete","target":"Braid 618e11e final exact-head pnpm check","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8e48483..353d734 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -105,6 +105,7 @@ jobs:
KEY="$RUNNER_TEMP/braid-release-key.pem"
mkdir -p "$ENDORSEMENT"
trap 'rm -f "$KEY"' EXIT
+ test -z "$(find "$ROOT" -type l -print -quit)"
printf '%s' "$SIGNING_KEY_BASE64" | base64 --decode > "$KEY"
chmod 600 "$KEY"
find "$ROOT" -type f ! -path "$ENDORSEMENT/*" -print0 |
@@ -213,6 +214,7 @@ jobs:
set -euo pipefail
ROOT="$RUNNER_TEMP/braid-release"
ENDORSEMENT="$ROOT/endorsement/candidate"
+ test -z "$(find "$ROOT" -type l -print -quit)"
cmp release/endorsement-public-key.pem "$ENDORSEMENT/public-key.pem"
openssl pkeyutl -verify -rawin -pubin -inkey "$ENDORSEMENT/public-key.pem" \
-in "$ENDORSEMENT/statement.txt" -sigfile "$ENDORSEMENT/signature.bin"
@@ -231,6 +233,14 @@ jobs:
INDEX_SHA256="$(sha256sum "$ENDORSEMENT/files.sha256" | cut -d ' ' -f 1)"
grep -Fx "index_sha256=$INDEX_SHA256" "$ENDORSEMENT/statement.txt"
+ - name: Re-verify exact candidate source and archive identity
+ env:
+ BRAID_RELEASE_ARTIFACT_ROOT: ${{ runner.temp }}/braid-release
+ BRAID_RELEASE_CHECKOUT: ${{ github.workspace }}
+ BRAID_RELEASE_EXPECT_COMMIT: ${{ inputs.commit }}
+ BRAID_RELEASE_EXPECT_VERSION: ${{ needs.candidate.outputs.version }}
+ run: node scripts/release/verify-candidate-identity.mjs
+
- name: Install the pinned npm client
run: |
npm install --global npm@11.18.0
@@ -402,6 +412,7 @@ jobs:
KEY="$RUNNER_TEMP/braid-release-key.pem"
mkdir -p "$ENDORSEMENT"
trap 'rm -f "$KEY"' EXIT
+ test -z "$(find "$ROOT" -type l -print -quit)"
printf '%s' "$SIGNING_KEY_BASE64" | base64 --decode > "$KEY"
chmod 600 "$KEY"
find "$ROOT" -type f ! -path "$ENDORSEMENT/*" -print0 |
@@ -456,6 +467,7 @@ jobs:
set -euo pipefail
ROOT="$RUNNER_TEMP/braid-release"
ENDORSEMENT="$ROOT/endorsement/final"
+ test -z "$(find "$ROOT" -type l -print -quit)"
cmp release/endorsement-public-key.pem "$ENDORSEMENT/public-key.pem"
openssl pkeyutl -verify -rawin -pubin -inkey "$ENDORSEMENT/public-key.pem" \
-in "$ENDORSEMENT/statement.txt" -sigfile "$ENDORSEMENT/signature.bin"
diff --git a/README.md b/README.md
index 1354abf..6b4895d 100644
--- a/README.md
+++ b/README.md
@@ -7,50 +7,59 @@
-Braid is one durable terminal for coding agents.
+Braid is a durable terminal client for coding agents.
-A portable [`AgentProfile`](https://github.com/tangle-network/agent-sdk/tree/main/packages/agent-interface) selects the runner, model, instructions, tools, and permissions.
+A portable [`AgentProfile`](https://github.com/tangle-network/agent-sdk/tree/main/packages/agent-interface) defines one agent's identity, instructions, model, runner preference, tools, and permissions.
-Braid sends every turn through [`agent-runtime`](https://github.com/tangle-network/agent-runtime), then keeps the transcript, branches, approvals, activity, graph, and trace analysis together.
+Braid sends each turn through [`agent-runtime`](https://github.com/tangle-network/agent-runtime) and keeps the conversation, branches, runs, interactions, activity, graph, supervisors, and trace analyses together.
-
+Braid is a terminal client, not another agent loop.
-The checked-in recording and [capture manifest](artifacts/demo/braid-live.json) are historical Braid `0.1.3` evidence from Local CLI Bridge and Claude Code `opus`.
-
-They are not the current `0.2.0` Pi release claim.
-
-A fresh public recording requires a packed `0.2.0` Braid binary, a ready Pi backend, and measured usage from the exact run.
+The [component design map](docs/components/README.md) links each visible surface to its owning contract and source component.
## Install
Braid requires Node.js 22.19 or newer.
-Current validated release targets are Linux x64 and macOS arm64.
-
-The package rejects Windows installation until encrypted state meets the required path-race boundary there.
+The published package currently targets Linux and macOS.
```bash
npm install --global @tangle-network/braid
braid
```
-The first-run flow selects an AgentProfile and a connection.
+The first-run flow selects an `AgentProfile` and a connection.
+
+A connection supplies transport and credential references.
-No runner-specific Braid configuration is required.
+Credential values stay in the operating-system credential facility or their bounded response path.
-For a live terminal walkthrough, run the local CLI Bridge capture.
+Use these launch forms when needed:
```bash
-pnpm capture:demo:live
+braid --inline # keep normal terminal scrollback
+braid --plain # readable non-interactive output
+braid rpc # JSON Lines control interface
+braid --conversation # open a durable Braid conversation
```
-The capture routes a human prompt through Pi and records the measured result.
+`--profile`, `--connection`, `--runner`, `--model`, and `--effort` select defaults for the opened or new branch.
+
+They do not rewrite the profile source.
+
+## Operating model
+
+The profile defines who the agent is.
-It requires a configured local CLI Bridge and a real provider credential.
+The connection defines where requests go and which credentials they use.
-## How it works
+The runner defines which coding program executes one run.
-The core path is deliberately small.
+The SDK field `harness` stores that runner preference.
+
+Braid owns the user-visible conversation graph, durable event journal, branch choices, interaction decisions, activity views, and terminal/headless presentation.
+
+The execution route is:
```text
AgentProfile + user turn
@@ -61,27 +70,21 @@ AgentProfile + user turn
▼
agent-runtime
│
- ├── CLI Bridge ── Pi · Codex · Claude Code · Kimi Code · OpenCode · other runners
+ ├── CLI Bridge ── selected local runner
├── Tangle inference
- └── Tangle sandbox ── remote workspace and environment lifecycle
+ └── Tangle sandbox ── remote workspace
│
▼
normalized events, receipts, activity, and final output
```
-Braid does not implement an agent loop, spawn runner processes directly, parse private runner output, or invent another profile format.
-
-A concrete local route is `AgentProfile` with `harness: 'pi'` → Braid admission → `agent-runtime` → a CLI Bridge connection → Pi → normalized events back to Braid.
-
-## AgentProfile is the configuration unit
+Braid does not launch runner processes directly, parse private runner output, materialize profile files, schedule sandboxes, run trace judges, or implement billing.
-`AgentProfile` is the canonical portable definition of one agent.
+An admitted run stores an immutable profile snapshot, effective runner, model, reasoning effort, configured output limits, connection, provider session, environment, and capability snapshot.
-It can contain the profile name, instructions, model hints, preferred runner, tools, permissions, resources, skills, MCP connections, modes, hooks, and subagent definitions.
+Configured limits are not measured usage.
-The `harness` field in the SDK is a runner preference.
-
-Braid displays that preference as `runner` so the profile remains the agent identity while the execution route remains replaceable.
+This is the shape of a profile using the current routed model example:
```ts
import type { AgentProfile } from '@tangle-network/agent-interface'
@@ -91,11 +94,8 @@ const profile: AgentProfile = {
harness: 'pi',
model: {
provider: 'tangle-router',
- default: 'tangle-router/glm-5.2',
+ default: 'tangle-router/glm-5.3',
reasoningEffort: 'high',
- maxVisibleOutputTokens: 16_384,
- maxReasoningTokens: 32_768,
- maxTotalOutputTokens: 49_152,
},
prompt: {
instructions: [
@@ -108,193 +108,256 @@ const profile: AgentProfile = {
}
```
-A connection supplies transport and credential references.
+## Parallel work: Work Strip, activity, and focus
-The run binds the exact profile snapshot, selected connection, effective runner, model, reasoning effort, three configured output limits, and execution environment before dispatch.
+Braid admits one run per conversation branch at a time.
-Visible output, reasoning output, and total output limits are separate configured dimensions.
+Different branches and conversations can stream concurrently while each branch preserves its own turn order.
-Reasoning effort controls the requested thinking tier when the selected route supports it.
+Inputs for an active run queue by default.
-Configured limits never stand in for measured usage.
+`/queue ` always adds the next turn.
-### Example effective run receipt
+`/steer ` sends live steering only when that run reports steering support.
-The main shell and activity details keep these values together without confusing configuration with provider evidence.
+`Alt+S` switches between queue and steer when both actions are available.
-The following values illustrate the shape of one receipt and are not a live run result.
+The Work Strip appears when at least two active, queued, waiting, or detached work items need attention.
-| Field | Example value |
-| --- | --- |
-| Profile | `Release engineer` |
-| Runner | `pi` |
-| Model | `tangle-router/glm-5.2` |
-| Reasoning | `high` |
-| Max visible output | `16,384 tokens` |
-| Max reasoning output | `32,768 tokens` |
-| Max total output | `49,152 tokens` |
-| Connection | `Local CLI Bridge` |
-| Execution location | `local workspace through CLI Bridge` |
-| Environment | `local process; sandbox fields not applicable` |
+Each item shows its branch, state, runner and model, pending interaction count, and available actions.
-When the route is a Tangle sandbox, Braid shows the environment lifecycle and the resources, placement, and machine details that the provider actually reports.
+Standard terminals show up to three items, wide terminals show up to eight, and narrow terminals show one bounded count with `/activity to switch`.
-It labels requested, verified, sampled, estimated, and unavailable values separately.
+`/activity` opens a full-screen browser instead of adding a permanent side panel.
-It never fills an unreported IP address, CPU allocation, RAM value, GPU lease, storage value, or cost with a guess.
+`Tab` cycles `all`, `runs`, `analyses`, and `workers` scopes.
-## One activity view, three kinds of work
+In the `runs` scope, `Enter` opens details and focuses controls for that exact run.
-Braid keeps direct turns, trace analyses, and runtime workers distinct.
+Changing focus does not pause, cancel, detach, or reassign another run.
-| Activity | What it means | Usage and control |
-| --- | --- | --- |
-| Turn | A user message admitted to the selected runner | Direct model, tool, latency, and cost values for that run |
-| Analysis | A separate `agent-eval` execution over a frozen run or branch | Its own analyst profile, model, tokens, latency, cost, citations, and cancellation |
-| Worker | A runtime-owned child under a supervisor | Its own status and usage when reported, with parent binding and control capability |
+Controls carry the selected run identifier, so a background run cannot receive a focus-dependent action by accident.
-The activity browser can show all three in one timeline while preserving their separate totals.
+Direct turns, trace analyses, supervisors, and workers remain separate activity records with separate usage totals.
-An unbound supervisor remains workspace activity and is not silently attributed to the current turn.
+An unbound supervisor remains workspace activity and is not attributed to the current turn.
-Missing provider values remain unknown instead of becoming zero.
+## Continue, branch, and fork
-## Trace analysis commands
+### Native continuation
-These commands inspect or compare recorded work rather than sending another ordinary prompt to the active coding runner.
+An ordinary follow-up uses the exact provider session only when the current branch tip has the same profile and connection, the provider reports session continuation, and the provider proves the recorded message boundary with retry-safe request identity.
-| Command | Meaning |
-| --- | --- |
-| `/ask ` | Ask one free-form question about a selected frozen run or branch and return cited findings. |
-| `/analyze ` | Run a named recipe such as `failure`, `cost`, `tools`, or `improvement` through `agent-eval`. |
-| `/compare ` | Freeze two run or branch sources, show their measured asymmetries, and create a paired comparison. |
+Only the new user input is submitted because the provider session remains authoritative for its native context.
-`/ask` does not append a message to the analyzed branch.
+If the provider cannot prove that boundary, Braid does not submit to the native session.
-Each analysis has its own run identity, source digest, analyst profile, model, budget, usage, latency, cost, completeness, and citations.
+Choose a fresh provider session with an explicit portable context transfer when that provider supports it.
-The standard Braid install includes `uv` for `/ask`.
+The transfer lists included, omitted, and transformed parts and requires acceptance when it changes the context.
-On first use, `uv` downloads a managed Python 3.12 runtime and runs `agent-eval-rpc[dspy]==0.145.15` in an isolated cached environment.
+`--conversation ` attaches to Braid's durable record and recorded run bindings.
-Set `BRAID_PYTHON` only when an operator must use a preinstalled compatible environment instead.
+It does not take over an arbitrary native runner process.
-Findings remain separate until the user explicitly sends selected findings to a branch or forks from the analysis.
+`/interactive ` and `/attach [run-id]` are separate native-terminal operations.
-## Interactive and headless modes
+They require an interactive TUI and a retained provider session with native terminal support.
-Interactive mode is the full-screen terminal experience with a multiline composer, streaming transcript, selectors, and focused overlays.
+### Conversation operations
-Use inline mode when preserving normal terminal scrollback matters.
+`/branch [message]` creates a new branch at a message boundary in the same conversation.
-```bash
-braid
-braid --inline
-```
+It uses a new provider session and keeps the current environment shared.
-Headless mode is the same application core behind JSON Lines commands and state records.
+Pending interactions and queued work after the boundary are not inherited.
-```bash
-braid rpc
-```
+`/clone` creates a separate conversation from the active branch tip with new conversation, branch, and execution identities.
-Use plain mode for a readable non-interactive event stream without terminal control sequences.
+It may retain a reference to the same workspace, but it does not copy provider process memory.
-```bash
-braid --plain
-```
+`/fork` opens a provenance preview before creating a branch.
+
+The preview shows the transcript boundary, profile, run overrides, provider session, environment, checkpoint, working-tree state, queued input, and pending interactions.
-The terminal and JSONL interfaces share command parsing, capability checks, operation identifiers, reducers, persistence, execution ports, and view projections.
+The default is a conversation-only fork with a new provider session and shared environment.
-Headless clients can send, queue, steer, cancel, detach, reconnect, reconcile, inspect state, inspect activity, run analysis, compare sources, and export records through the versioned protocol.
+`/fork --runner ` creates a cross-runner handoff with a new provider session and explicit portable context.
-Mutating headless requests carry stable operation identifiers so a retry can be recognized instead of dispatched twice.
+Hidden process memory, runner-specific todos, opaque tool state, and opaque tool identifiers do not transfer.
-## Attach, resume, and sandboxes
+`/fork --workspace` requests a real provider checkpoint and destination environment.
-Opening Braid with `--conversation ` attaches the interface to a durable Braid conversation and its recorded run bindings.
+It is available only when the provider reports retry-safe checkpoint and fork operations, lookup by idempotency key, and explicit cleanup.
-That operation restores Braid's journal and view state; it does not claim to take over an arbitrary native runner process.
+The source environment remains unchanged, and a failed fork does not destroy its checkpoint or source.
-Braid reconnects a non-terminal run from the last committed event cursor only when the selected provider can prove replay or status.
+The destination environment is not assumed to include external services, browser sessions, secrets, network connections, or provider process memory.
-If the provider cannot prove the live state, Braid displays detached, incomplete, expired, unauthorized, or unknown rather than calling the run completed.
+## Interactions and secrets
-Continuing a compatible native provider session requires provider evidence that its context boundary matches Braid's recorded message boundary.
+An interaction is a provider request with a stable identifier, kind, prompt, subject, timeout, allowed outcomes, and canonical `answerSpec`.
-Changing runners creates a new provider session with an explicit portable-context handoff.
+Known kinds include questions, permissions, and plans.
-It does not claim to transfer hidden process memory, runner-specific todos, opaque tool state, or native session internals.
+Unknown kinds render through the generic answer specification and fail closed if Braid cannot validate a response.
-A Tangle sandbox connection provides an isolated remote workspace and reports only the lifecycle, replay, control, and resource capabilities that the current provider proves.
+`/approve [scope]` accepts an allowed response.
-Braid shows those capabilities and their receipts through the same activity and graph surfaces.
+`/reject [feedback]` declines it when the schema accepts feedback.
-New Tangle Sandbox connections default to one ephemeral cloud turn and delete that environment after the turn.
+The terminal validates text, number, boolean, select, and secret answers before dispatch.
-Retained lifecycle is an explicit connection configuration option with a bounded idle limit.
+Permission controls expose only scopes declared by the provider.
-Before retained execution creates a sandbox, Braid requires exact control plus provider-backed lookup for an unacknowledged dispatch.
+Secret answers are masked and sent only through the bounded response path.
-The current provider reports both, so a fresh Braid process can recover before or after the six-field reference commits.
+They are excluded from history, profiles, SQLite, logs, snapshots, screenshots, and trace artifacts.
-Native follow-up turns remain disabled until the provider also proves that its context boundary matches Braid's recorded boundary.
+`/automate` manages scoped non-secret response rules.
-Checkpoint, environment fork, and interaction response remain unavailable until the shared provider reports and proves those operations.
+An answer specification containing a secret field cannot create or match an automation rule.
-The user can inspect the requested and verified execution location, but provider-private machine details remain unavailable when they are not reported.
+Concurrent interactions remain attached to their source runs and display in stable arrival order.
+
+Response retries reuse the same operation identifier and never answer twice.
+
+## Trace analysis
+
+Trace analysis reads a frozen run or branch record in a separate execution.
+
+It does not send a question to the active agent and does not append a message to the analyzed branch.
+
+```text
+/ask cited free-form question about the last eligible source
+/analyze failure,cost,tools run selected named recipes
+/analyze all run every available trace analyst
+/compare compare two frozen sources
+```
-On 2026-08-15, the default retained production cohort passed 3 of 3 Braid runs through OpenCode, GLM 5.2, and Tangle Sandbox at two-way concurrency.
+`/ask` uses the last completed or failed run unless a source is selected explicitly.
-Each proof killed the first Braid process, reconnected once, continued in the same provider session, cancelled a later turn, replayed the same cancellation, and rejected changed input.
+Each analysis records its source digest, analyst profile, model, recipe, progress, findings, citations, completeness, usage, latency, cost, and cancellation state.
-All three exact sandboxes were confirmed deleted, and the account's active Sandbox count returned to its starting value.
+The analysis activity scope uses `p` to promote a supported cited finding and `x` to cancel active analysis.
-Individual proof duration was 82.3 seconds minimum, 89.0 seconds median, and 96.2 seconds maximum.
+Promotion creates an explicit attachment or a branch fork; it never changes the source implicitly.
-Six completed turns reported 9,231 input tokens, 1,992 output tokens, and $0 provider cost; token and cost data were unavailable for three cancelled turns.
+Comparisons show every measured field and asymmetry before any semantic interpretation.
-The provider exposed cgroup v2 memory samples with a 2,048 MB limit and 630–633 MB peak use.
+## Runtime supervisors and workers
-Machine identity, IP address, effective CPU and storage, placement, region, and per-sandbox cost remained unavailable because the provider did not report them.
+`/activity` reads runtime-owned supervisor snapshots through the shared Runtime API.
-The earlier ephemeral stress proof completed 20 of 20 Braid turns at four-way concurrency.
+It does not read `.agent/supervisor` files or infer identity from display text, timestamps, or row order.
-All 20 remote environments were unique and confirmed deleted, while the account's active Sandbox count returned from four to four.
+In the `workers` scope, `r` refreshes the snapshot, `s` opens a worker steering prompt, `x` requests cancellation, and `a` attaches to a running worker's retained terminal when available.
-See the [ephemeral proof artifact](artifacts/verification/live/tangle-sandbox-braid-execution-stress-production-20260812.json) for every earlier run, token receipt, latency, environment observation, and cleanup result.
+Worker steering sends the exact runtime worker identifier with a stable operation identifier and displays a queued or acknowledged effect.
-The [verification record](docs/08-verification.md#current-core-path-observations) keeps the full results, limits, and tracked platform work.
+Worker cancellation and supervisor cancellation use runtime-owned idempotent operations and display the acknowledged effect and terminated descendants when reported.
-## Commands users reach for first
+Worker attachment resolves the projected Braid supervisor and worker to exact Runtime identifiers, then claims the retained interactive handle for that worker.
+
+It is available only in the interactive TUI when the selected worker is running and its provider exposes a retained terminal binding.
+
+That worker action is different from `/attach [run-id]`, which targets a retained native terminal session.
+
+When the runtime cannot acknowledge a control, Braid leaves the result queued or unknown.
+
+It never displays delivered steering or cancellation without the matching runtime effect.
+
+## Capability-aware commands
+
+Braid asks the active provider and Runtime for capabilities before it enables an action.
+
+Unavailable commands remain searchable and explain the exact missing capability.
+
+Common reasons include:
+
+| Action | Exact reason shown when the condition applies |
+| --- | --- |
+| Worker steer | `There is no running supervised worker to steer` |
+| Worker cancel | `There is no running supervised worker to cancel` |
+| Supervisor cancel | `There is no running supervisor to cancel` |
+| Worker attach without an interactive TUI | `Worker terminals require an interactive TUI` |
+| Worker attach without a running worker | `There is no running supervised worker to attach` |
+| Worker attach with a stale selection | `The selected worker is not running` |
+| Worker attach with a missing target | `The selected worker is not present under the selected supervisor` |
+| Worker attach without a retained binding | `The worker has no retained terminal binding` |
+| Worker attach without provider support | `The worker provider cannot attach a terminal` |
+| Worker attach without a configured provider | `Select the worker's Tangle Sandbox connection first` |
+| Native terminal | `Select a retained Tangle Sandbox connection with native terminal support` |
+| Native session attach | `No retained native session is available` |
+| Interaction response | `Interaction response is not exposed by the current runtime adapter` |
+| Provider cancellation | `The current runtime does not acknowledge provider cancellation` |
+| Live steering | `The current runtime does not report steering support` |
+| Queued input | `The current runtime does not report queued input support` |
+
+A missing capability never becomes a simulated success.
+
+## Tangle Sandbox lifecycle
+
+New Tangle Sandbox connections default to one ephemeral cloud turn and delete the environment after the turn.
+
+Retained execution is an explicit connection choice.
+
+Braid requires exact retained-run control and provider-backed lookup before it creates a retained environment, so restart can recover an uncommitted dispatch.
+
+The provider reports lifecycle, replay, control, interaction, continuation, workspace, placement, resource, and usage capabilities per run.
+
+Braid shows requested, verified, sampled, estimated, and unavailable values separately.
+
+It never guesses machine identity, IP address, effective resources, storage, or cost when the provider does not report them.
+
+## Commands at a glance
| Need | Command or key |
| --- | --- |
-| Select the agent and route | `/profile`, `/connection`, `/runner`, `/model`, `/effort` |
-| Inspect execution | `/activity`, `F2`, `/export` |
-| Navigate the work graph | `/graph`, `/fork`, `/branch`, `/clone` |
-| Answer or automate a request | `/approve`, `/reject`, `/automate` |
-| Control active work | `/queue`, `/steer`, `/cancel` |
+| Select profile and route | `/profile`, `/connection`, `/runner`, `/model`, `/effort` |
+| Open activity and focus a run | `/activity`, `F2`, `Enter` on a run row |
+| Navigate conversation work | `/graph`, `/branch`, `/clone`, `/fork` |
+| Answer an interaction | `/approve`, `/reject`, `/automate` |
+| Queue, steer, or cancel a run | `/queue`, `/steer`, `/cancel` |
+| Detach and recover retained work | `/detach`, `/reconnect`, `/reconcile` |
+| Use a native terminal | `/interactive`, `/attach` |
+| Analyze or compare work | `/ask`, `/analyze`, `/compare` |
| Drive Braid from another process | `braid rpc` |
-Commands remain searchable when a provider does not support them.
+Run `/help [query]` for the complete command and key registry.
+
+The command palette uses the same capability explanations as direct invocation.
+
+## Headless mode
+
+`braid rpc` exposes JSON Lines commands over the same application core as the terminal.
+
+Headless clients can inspect state, send, queue, steer, cancel, detach, reconnect, reconcile, respond to interactions, manage automation, branch, clone, fork, analyze, compare, inspect activity, control workers, and export records.
-An unavailable command explains the missing capability instead of pretending that the operation succeeded.
+Worker terminal attachment remains an interactive-TUI action.
-## What Braid owns
+Mutating requests carry stable operation identifiers, so retries can be recognized instead of dispatched twice.
+
+Plain output and headless state contain no terminal control sequences.
+
+## Ownership and safety boundaries
| Boundary | Owner |
| --- | --- |
-| Portable agent definition and compatibility facts | `agent-interface` |
-| Run admission, lifecycle, normalized events, and runtime control | `agent-runtime` |
+| Portable agent definition and compatibility helpers | `agent-interface` |
+| Run admission, lifecycle, normalized events, replay, and runtime control | `agent-runtime` |
| Local runner process and native profile materialization | CLI Bridge |
-| Tangle inference and remote workspace lifecycle | Tangle provider and sandbox packages |
+| Inference and remote workspace lifecycle | Tangle provider and sandbox packages |
| Trace analysis and paired comparison | `agent-eval` |
-| Conversation journal, branches, graph, approvals, projections, and terminal/headless interfaces | Braid |
+| Conversation journal, branches, graph, interactions, projections, and interfaces | Braid |
+
+Components render immutable view models and emit typed intents.
+
+Controllers own workflows, cancellation, event reduction, and side effects through ports.
-Braid adapts these contracts through narrow ports.
+Untrusted terminal content is sanitized before rendering, and OSC control sequences are suppressed by default.
-It does not duplicate execution, authentication, provider parsing, sandbox scheduling, trace judging, or billing logic.
+No credential value, secret interaction answer, provider-private state, or raw secret-bearing trace enters a profile, SQLite record, log, snapshot, screenshot, or export.
## Development and proof
@@ -304,27 +367,21 @@ pnpm check
pnpm capture:visual
```
-`pnpm check` covers formatting, linting, types, dependency boundaries, attribution, licenses, automated tests, live checks, and release checks configured by the repository.
+`pnpm check` runs the repository's formatting, lint, type, boundary, dependency, attribution, license, test, live, and release checks.
-When a ready Pi backend is configured, `pnpm capture:visual` drives the packed CLI through a pseudo-terminal and records terminal state evidence plus a live Pi and CLI Bridge product capture.
-
-The checked-in W6 state captures prove rendering and keyboard paths.
-
-A successful product capture is the evidence for the live Pi, CLI Bridge, inference route, and sandbox run.
+`pnpm capture:visual` records terminal state at 40×12, 80×24, 120×40, and 200×60 and exercises the keyboard path.
The [verification plan](docs/08-verification.md) defines the required live, headless, terminal, security, installation, and release evidence.
The [delivery plan](docs/09-delivery-plan.md) records dependency order and completion criteria.
-The [product contract](docs/01-product-contract.md), [experience specification](docs/02-experience-specification.md), and [architecture](docs/03-architecture.md) define the user-visible and ownership boundaries.
+The [product contract](docs/01-product-contract.md), [experience specification](docs/02-experience-specification.md), [runtime contracts](docs/04-runtime-contracts.md), and [conversation/fork/analysis contract](docs/06-conversations-forks-and-analysis.md) define the behavior and ownership boundaries.
## Open-source foundation
Braid uses the MIT-licensed [`@earendil-works/pi-tui`](https://www.npmjs.com/package/@earendil-works/pi-tui) package for terminal rendering and input primitives.
-Its interaction design takes narrow, application-level patterns from [Pi](https://github.com/earendil-works/pi), [OpenCode](https://github.com/anomalyco/opencode), and [Codex](https://github.com/openai/codex) without copying their agent loops, session stores, authentication systems, provider adapters, or model registries.
-
-See the [renderer decision](docs/decisions/001-pi-tui-renderer.md), [runtime boundary](docs/decisions/002-runtime-boundary.md), [upstream strategy](docs/10-upstream-strategy.md), and [third-party notices](THIRD_PARTY_NOTICES.md) for the exact reuse boundary.
+See the [renderer decision](docs/decisions/001-pi-tui-renderer.md), [runtime boundary](docs/decisions/002-runtime-boundary.md), [upstream strategy](docs/10-upstream-strategy.md), and [third-party notices](THIRD_PARTY_NOTICES.md) for the reuse boundary.
## License
diff --git a/THIRD_PARTY_LICENSES.json b/THIRD_PARTY_LICENSES.json
index c380ad5..fa6c99d 100644
--- a/THIRD_PARTY_LICENSES.json
+++ b/THIRD_PARTY_LICENSES.json
@@ -77,6 +77,10 @@
"license": "MIT",
"name": "@tangle-network/sandbox"
},
+ {
+ "license": "Apache-2.0",
+ "name": "@tangle-network/tcloud-attestation"
+ },
{
"license": "MIT",
"name": "@types/proper-lockfile"
diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md
index 4035ddf..ba9b26c 100644
--- a/THIRD_PARTY_NOTICES.md
+++ b/THIRD_PARTY_NOTICES.md
@@ -14,7 +14,7 @@ The implementation is expected to depend on and adapt behavior from the followin
| [Microsoft Aspire](https://github.com/dotnet/aspire) | Windows Job Object creation and cleanup pattern for portable release proof | `dotnet/aspire@be77aa36daf995fae0e72091141410c7082fcba3` | MIT |
| [`better-sqlite3-multiple-ciphers`](https://github.com/m4heshd/better-sqlite3-multiple-ciphers) | Pinned production SQLite binding with SQLCipher-compatible encryption | `better-sqlite3-multiple-ciphers@13.0.3` | MIT |
| [`@napi-rs/keyring`](https://github.com/Brooooooklyn/keyring-node) | Native macOS Keychain, Linux Secret Service, and Windows Credential Manager access without passing secrets through command arguments | `@napi-rs/keyring@1.3.0` | MIT |
-| [Koffi](https://github.com/Koromix/koffi) | Prebuilt Node FFI for operating system `openat`, `mkdirat`, `linkat`, `renameat`, and `unlinkat` calls | `koffi@3.1.4` | MIT |
+| [Koffi](https://github.com/Koromix/koffi) | Prebuilt Node FFI for operating system `openat`, `mkdirat`, `linkat`, `renameat`, and `unlinkat` calls | `koffi@3.1.6` | MIT |
## Attribution rule
@@ -23,13 +23,15 @@ Before copied or substantially adapted code is committed, add one row below with
| Braid path | Upstream source | Source commit | License | Adaptation |
| --- | --- | --- | --- | --- |
| `test/support/virtual-terminal.ts` | [`earendil-works/pi`, `packages/tui/test/virtual-terminal.ts`](https://github.com/earendil-works/pi/blob/a6f7317dfca61e357aee65faafe012a1be6c3734/packages/tui/test/virtual-terminal.ts) | `a6f7317dfca61e357aee65faafe012a1be6c3734` | MIT, Copyright (c) 2025 Mario Zechner | Changed imports to the published Pi TUI package and applied Braid formatting; production code does not include this file. |
+| `src/views/tui/selector.ts` | [`earendil-works/pi`, `packages/tui/src/components/select-list.ts`](https://github.com/earendil-works/pi/blob/a6f7317dfca61e357aee65faafe012a1be6c3734/packages/tui/src/components/select-list.ts) | `a6f7317dfca61e357aee65faafe012a1be6c3734` | MIT, Copyright (c) 2025 Mario Zechner | Reuses Pi's pinned column-width and truncation calculations to mark description overflow while preserving the shared selector behavior. |
| `scripts/live-bridge/windows-job-host-source.mjs` | [`dotnet/aspire`, `src/Aspire.Cli/Processes/WindowsConsoleProcessJob.cs` and `WindowsProcessInterop.cs`](https://github.com/dotnet/aspire/tree/be77aa36daf995fae0e72091141410c7082fcba3/src/Aspire.Cli/Processes) | `be77aa36daf995fae0e72091141410c7082fcba3` | MIT, Copyright (c) .NET Foundation and contributors | Adapted atomic Job Object attachment, kill-on-close containment, and active-process drain checks for Braid's Windows release proof. |
+| `test/fixtures/aws-nitro-document.cbor` | [`anchorageoss/awsnitroverifier`, `testdata/aws_nitro_document.cbor`](https://github.com/anchorageoss/awsnitroverifier/blob/2605f002296b40eadfee3c832c4826237147fa29/testdata/aws_nitro_document.cbor) | `2605f002296b40eadfee3c832c4826237147fa29` | Apache-2.0 (the upstream repository's full license text applies; it publishes no additional NOTICE file) | Public AWS Nitro COSE_Sign1 fixture used for deterministic adapter verification and mutation tests. |
The original copyright and license notice must remain with every substantial copied portion.
A dependency declared in `package.json` does not require a file-level source header, but its license must remain represented in the generated release license inventory.
-W5 adds the pinned `better-sqlite3-multiple-ciphers@13.0.3`, `@napi-rs/keyring@1.3.0`, and `koffi@3.1.4` production dependencies.
+W5 adds the pinned `better-sqlite3-multiple-ciphers@13.0.3`, `@napi-rs/keyring@1.3.0`, and `koffi@3.1.6` production dependencies.
It contains no copied source from these packages.
diff --git a/artifacts/verification/connections/120x40.png b/artifacts/verification/connections/120x40.png
index 44e140d..ca245f1 100644
Binary files a/artifacts/verification/connections/120x40.png and b/artifacts/verification/connections/120x40.png differ
diff --git a/artifacts/verification/connections/120x40.txt b/artifacts/verification/connections/120x40.txt
index 179b461..90474ed 100644
--- a/artifacts/verification/connections/120x40.txt
+++ b/artifacts/verification/connections/120x40.txt
@@ -1,6 +1,6 @@
-braid cwd workspace · session New conversation · branch branch-1
- Write a message, or press Ctrl+P for commands.
+
+
@@ -20,21 +20,3 @@ braid cwd workspace · session New conversation · branch branch-1
Saved by your secure credential manager; Braid keeps only a reference.
> •••••••••••••••••••••••••••••••••••••••••••••••••••••••
enter continue · esc back
-
-
-
-
-
-
-
-
-
-
-
-
-
-────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
-
-────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
-ready for a message openai/gpt-5
-Connection workflow proof · runner pi · Local CLI Bridge Ctrl+P commands
diff --git a/artifacts/verification/connections/200x60.png b/artifacts/verification/connections/200x60.png
index 1656ac1..887dc15 100644
Binary files a/artifacts/verification/connections/200x60.png and b/artifacts/verification/connections/200x60.png differ
diff --git a/artifacts/verification/connections/200x60.txt b/artifacts/verification/connections/200x60.txt
index 585c2c3..3ca0eda 100644
--- a/artifacts/verification/connections/200x60.txt
+++ b/artifacts/verification/connections/200x60.txt
@@ -1,6 +1,6 @@
-braid cwd workspace · session New conversation · branch branch-1
- Write a message, or press Ctrl+P for commands.
+
+
@@ -30,31 +30,3 @@ braid cwd workspace · session New conversation · branch branch-1
Saved by your secure credential manager; Braid keeps only a reference.
> •••••••••••••••••••••••••••••••••••••••••••••••••••••••
enter continue · esc back
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
-
-────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
-ready for a message openai/gpt-5
-Connection workflow proof · runner pi · Local CLI Bridge Ctrl+P commands
diff --git a/artifacts/verification/connections/40x12.png b/artifacts/verification/connections/40x12.png
index e7d76ad..a1ed42b 100644
Binary files a/artifacts/verification/connections/40x12.png and b/artifacts/verification/connections/40x12.png differ
diff --git a/artifacts/verification/connections/40x12.txt b/artifacts/verification/connections/40x12.txt
index 17df115..096486a 100644
--- a/artifacts/verification/connections/40x12.txt
+++ b/artifacts/verification/connections/40x12.txt
@@ -3,10 +3,3 @@
manager; Braid keeps only a reference.
> •••••••••••••••••••••••••••••••••••••
enter continue · esc back
-
-
-────────────────────────────────────────
-
-────────────────────────────────────────
-ready for a message
-Connection workflow proof
diff --git a/artifacts/verification/connections/80x24-connection-keyboard.gif b/artifacts/verification/connections/80x24-connection-keyboard.gif
index 3c72947..de2da1b 100644
Binary files a/artifacts/verification/connections/80x24-connection-keyboard.gif and b/artifacts/verification/connections/80x24-connection-keyboard.gif differ
diff --git a/artifacts/verification/connections/80x24.png b/artifacts/verification/connections/80x24.png
index 70082ed..3f2afd5 100644
Binary files a/artifacts/verification/connections/80x24.png and b/artifacts/verification/connections/80x24.png differ
diff --git a/artifacts/verification/connections/80x24.txt b/artifacts/verification/connections/80x24.txt
index 3d56ccd..8aea238 100644
--- a/artifacts/verification/connections/80x24.txt
+++ b/artifacts/verification/connections/80x24.txt
@@ -1,6 +1,6 @@
-braid cwd workspace · session New conversation
- Write a message, or press Ctrl+P for commands.
+
+
@@ -12,13 +12,3 @@ braid cwd workspace · session New conversation
only a reference.
> ••••••••••••••••••••••••••••••••••••••••••••••••••••••
enter continue · esc back
-
-
-
-
-
-────────────────────────────────────────────────────────────────────────────────
-
-────────────────────────────────────────────────────────────────────────────────
-ready for a message openai/gpt-5
-Connection workflow proof · runner pi · Local CLI Bridge Ctrl+P commands
diff --git a/artifacts/verification/connections/capture-manifest.json b/artifacts/verification/connections/capture-manifest.json
index 4eabeb4..7040710 100644
--- a/artifacts/verification/connections/capture-manifest.json
+++ b/artifacts/verification/connections/capture-manifest.json
@@ -1,18 +1,18 @@
{
"schemaVersion": 1,
- "generatedAt": "2026-08-09T13:48:23.197Z",
+ "generatedAt": "2026-08-29T18:50:10.809Z",
"command": "pnpm capture:connections",
"binary": "clean npm install from generated tarball",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.1.0.tgz",
- "tarballSha256": "edc58f6bd72ffde9ad3e4bb61f758963ccb03ecbdf244cb0b3388e9861ebf116",
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "2ff0d7cf65eb929cc55b1669821b23c5381f401eb271002c0a16679a450efbe9",
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.1",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -34,70 +34,70 @@
"artifacts": [
{
"path": "40x12.txt",
- "sha256": "b624b3555f14bea70560c8fbada112860c47af93566918c86ee4cada62f50567",
+ "sha256": "d96c507b55d1acf6095b32a38e8bf155b6cea664e30b996314907da40393edbb",
"kind": "terminal-frame",
"columns": 40,
"rows": 12
},
{
"path": "40x12.png",
- "sha256": "27d6babd46ca5fce919925ea7f048ab45e06a28ab91de4719071cedef6db56f2",
+ "sha256": "768f2011757b01d15380d9a5a742e02c7e375257246c4163b7322cf384a9956e",
"kind": "png",
"columns": 40,
"rows": 12
},
{
"path": "80x24.txt",
- "sha256": "f92d5611afdaaa0bc63e56c26c29b32cf6b1887b2540ff8a38f0f52ad54c7151",
+ "sha256": "609b7359eb3e8ac1b8bc64b1da667f7c5d25e8b8a958ad28b79829feefe4106d",
"kind": "terminal-frame",
"columns": 80,
"rows": 24
},
{
"path": "80x24.png",
- "sha256": "4042bf8a68980111c3f4a4862ad4d6fffb92dd54c4b310bbbb4607fbefee5cf7",
+ "sha256": "6e912ae77af672f0312d3a32961c6f39fbab3dc2f8f33efddd9671dd65d91489",
"kind": "png",
"columns": 80,
"rows": 24
},
{
"path": "120x40.txt",
- "sha256": "0ac8a6430176c30c6e28e3e090bbb785a50e7fa0e56ea473b0d456566d6aaa1e",
+ "sha256": "e966d916c4134c494fab2ec1eaef1788988d5142d1f73d87d5eeead9d079c0ab",
"kind": "terminal-frame",
"columns": 120,
"rows": 40
},
{
"path": "120x40.png",
- "sha256": "df736d4f7c8a775d003edaf5ee2e037ee5c6a4241beedd57b0e392ab00aed0ba",
+ "sha256": "7af75bcd8dce731fac4d3b5e17713624c79f7876ce9e17937e701d57f74fe49d",
"kind": "png",
"columns": 120,
"rows": 40
},
{
"path": "200x60.txt",
- "sha256": "8067b62ec11ff438b429d121c85fa3cb5d5814e322fd644355eb5ee090020754",
+ "sha256": "8ca3b0f366b7ea7f1cafe552c29c70f17c37dd78b2f7fd3277b15c839655a5d9",
"kind": "terminal-frame",
"columns": 200,
"rows": 60
},
{
"path": "200x60.png",
- "sha256": "745d261f5ff8c7f2121e0424c8713b059c4a246a2fb821b1309e97d013126c91",
+ "sha256": "46c9b0a145b5ba50bdd6e13ef8cbece4edb70e2ec116eaf622032b96ac1ae2d6",
"kind": "png",
"columns": 200,
"rows": 60
},
{
"path": "raw/connection-keyboard.cast",
- "sha256": "98e157217351bb9e4a3d1913f23ae492868a8c4116277632e8eb29bb61c42d93",
+ "sha256": "b004db3fac5463a7e153f44fb7d8bf8a504bdb24e9b5809a09ac5f38b6430559",
"kind": "keyboard-asciicast",
"columns": 80,
"rows": 24
},
{
"path": "80x24-connection-keyboard.gif",
- "sha256": "fe012591871b19260db3e25a727bd08425fcea00eca2fb3db42eeb415bac83e5",
+ "sha256": "d293c9bf2a671d2926ced43a27d68c2a36e6d0c38e5b1dc11be59c939317dea2",
"kind": "keyboard-flow",
"columns": 80,
"rows": 24
diff --git a/artifacts/verification/live/bridge/evidence.json b/artifacts/verification/live/bridge/evidence.json
new file mode 100644
index 0000000..685edb9
--- /dev/null
+++ b/artifacts/verification/live/bridge/evidence.json
@@ -0,0 +1,15022 @@
+{
+ "schemaVersion": 1,
+ "command": "pnpm test:live:bridge:release",
+ "scope": {
+ "name": "packed-cli-bridge-release-proof",
+ "claims": [
+ "packed startup",
+ "operation-specific Pi conformance",
+ "operation-specific Codex cross-runner handoff",
+ "operation-specific interactive protocol",
+ "operation-specific restart reconciliation",
+ "operation-specific conformance for every advertised runner",
+ "bounded process cleanup"
+ ],
+ "excludes": []
+ },
+ "optIn": true,
+ "startedAt": "2026-08-29T18:31:10.875Z",
+ "runtime": {
+ "node": "v24.18.0",
+ "platform": "linux",
+ "arch": "x64",
+ "cwd": "/home/drew/code/.worktrees/braid-10-complete"
+ },
+ "environment": {
+ "endpoint": "http://127.0.0.1:3344",
+ "bearerConfigured": true,
+ "launchRequested": true
+ },
+ "targetPolicy": {
+ "source": "default:release-runners",
+ "required": [
+ {
+ "key": "glm-5.2",
+ "label": "GLM 5.2",
+ "modelId": "opencode/zai-coding-plan/glm-5.2",
+ "backend": "opencode"
+ },
+ {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "label": "Pi with Tangle Router DeepSeek V4 Flash",
+ "modelId": "pi/tangle-router/deepseek-v4-flash",
+ "backend": "pi"
+ },
+ {
+ "key": "codex-default",
+ "label": "Codex default",
+ "modelId": "codex/default",
+ "backend": "codex"
+ }
+ ]
+ },
+ "targets": [
+ {
+ "label": "GLM 5.2",
+ "target": "opencode/zai-coding-plan/glm-5.2",
+ "profile": {
+ "path": ".braid/profiles/profile-opencode-zai-coding-plan-glm-5-2.json",
+ "harness": "opencode",
+ "model": "glm-5.2",
+ "provider": "zai-coding-plan"
+ },
+ "connection": {
+ "id": "connection-live-cli-bridge",
+ "kind": "cli-bridge",
+ "endpoint": "http://127.0.0.1:3344",
+ "credentialConfigured": true
+ },
+ "providerCapabilities": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": false,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ },
+ "requests": [
+ {
+ "version": 1,
+ "requestId": "init-glm-5.2",
+ "command": "initialize",
+ "params": {
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4",
+ "subscribe": true
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "send-glm-5.2",
+ "operationId": "op-live-send-glm-5.2",
+ "command": "send",
+ "params": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "cancel-send-glm-5.2",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "command": "send",
+ "params": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "text": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "cancel-glm-5.2",
+ "operationId": "op-live-cancel-glm-5.2",
+ "command": "cancel_run",
+ "params": {
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "reason": "live packed smoke cancellation"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "final-state-glm-5.2",
+ "command": "get_state",
+ "params": {
+ "projection": "full"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "shutdown-glm-5.2",
+ "operationId": "op-live-shutdown-glm-5.2",
+ "command": "shutdown",
+ "params": {
+ "mode": "wait"
+ }
+ }
+ ],
+ "operation": "cli-bridge.target-smoke",
+ "credentialLifecycle": {
+ "configured": true,
+ "stored": true,
+ "removed": true,
+ "facility": "encrypted-headless"
+ },
+ "initialize": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "init-glm-5.2",
+ "revision": 4,
+ "command": "initialize"
+ },
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "initialCapabilities": {
+ "view": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "analysisAsk": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "run": {}
+ },
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "send-glm-5.2",
+ "operationId": "op-live-send-glm-5.2",
+ "revision": 4,
+ "replayed": false,
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "admission": {
+ "version": 1,
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "turnId": "turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4",
+ "operationId": "op-live-send-glm-5.2",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:22.350Z",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK",
+ "profile": {
+ "name": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "glm-5.2",
+ "provider": "zai-coding-plan",
+ "reasoningEffort": "none"
+ },
+ "harness": "opencode"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "glm-5.2",
+ "runner": "opencode"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": false,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runner": "opencode",
+ "providerRunId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "def112beeb6bec7c404a0307dd34a008f5b04aed4276d8f594c5e13f10cb02c2",
+ "capabilitiesDigest": "b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6",
+ "materializationDigest": "e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e",
+ "digest": "291afe4c38f54086e40c53bc21b3a0a3e10f8f21a5204d1a629d9bc9b0637f91"
+ },
+ "command": "send"
+ },
+ "activeCapabilities": {
+ "view": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": false,
+ "source": "application",
+ "reason": "A run is already active"
+ },
+ "run.cancel": {
+ "available": true,
+ "source": "runtime"
+ },
+ "run.queue": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report steering support"
+ },
+ "run.detach": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect while another run is active"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile while another run is active"
+ }
+ },
+ "analysisAsk": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "run": {}
+ },
+ "normal": {
+ "status": "completed",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "run": {
+ "id": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "turnId": "turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4",
+ "operationId": "op-live-send-glm-5.2",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:22.361Z",
+ "updatedAt": "2026-08-29T18:31:26.299Z",
+ "terminalAt": "2026-08-29T18:31:26.299Z",
+ "durationMs": 3938,
+ "inputTokens": 7214,
+ "outputTokens": 50,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "opencode/zai-coding-plan/glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "environmentId": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "controlRef": {
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "executionId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "requestDigest": "sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc"
+ },
+ "materializationDigest": "e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 12,
+ "contentBytes": 61,
+ "receipt": {
+ "version": 1,
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "turnId": "turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4",
+ "operationId": "op-live-send-glm-5.2",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:22.350Z",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK",
+ "profile": {
+ "name": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "glm-5.2",
+ "provider": "zai-coding-plan",
+ "reasoningEffort": "none"
+ },
+ "harness": "opencode"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "glm-5.2",
+ "runner": "opencode"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runner": "opencode",
+ "providerRunId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "def112beeb6bec7c404a0307dd34a008f5b04aed4276d8f594c5e13f10cb02c2",
+ "capabilitiesDigest": "b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6",
+ "materializationDigest": "e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e",
+ "digest": "291afe4c38f54086e40c53bc21b3a0a3e10f8f21a5204d1a629d9bc9b0637f91"
+ }
+ },
+ "assistant": {
+ "id": "message-96449345-0f77-4bc7-a001-f3498fcab8a2",
+ "role": "assistant",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "status": "complete",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "parts": [
+ {
+ "id": "op-live-send-glm-5.2:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "sourceEventId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_GLM-5_2_OK",
+ "marker": "LIVE_BRAID_GLM-5_2_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-send-glm-5.2",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "revision": 14,
+ "replayed": false,
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "admission": {
+ "version": 1,
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "turnId": "turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:27.250Z",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "requested": {
+ "text": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "glm-5.2",
+ "provider": "zai-coding-plan",
+ "reasoningEffort": "none"
+ },
+ "harness": "opencode"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "glm-5.2",
+ "runner": "opencode"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runner": "opencode",
+ "providerRunId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "a6fe7228f6570b63e61c9323395d38ce4dad581f36768bbfa85b613a76fd3239",
+ "capabilitiesDigest": "b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6",
+ "materializationDigest": "dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e",
+ "digest": "251a428a92eb4a633c41e3c62f8aceebcfa42fa06a2ba0361f9281251aa3a35a"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "activeRun": {
+ "id": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "turnId": "turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:31:27.260Z",
+ "updatedAt": "2026-08-29T18:31:27.260Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "materializationDigest": "dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-glm-5.2",
+ "revision": 26,
+ "operationId": "op-live-cancel-glm-5.2",
+ "command": "cancel_run",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "turnId": "turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:31:27.260Z",
+ "updatedAt": "2026-08-29T18:31:28.207Z",
+ "terminalAt": "2026-08-29T18:31:28.207Z",
+ "durationMs": 947,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "environmentId": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "controlRef": {
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "executionId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "requestDigest": "sha256:85d9b4f9fbbc7de553bf899ade70609021eaf66fe5a4409d25498143301cd935"
+ },
+ "materializationDigest": "dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e",
+ "contentBytes": 14
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": false,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "semanticAssertions": {
+ "cancel": "verified",
+ "interaction": "reported-unavailable"
+ },
+ "targetProof": {
+ "key": "glm-5.2",
+ "harness": "opencode",
+ "provider": "zai-coding-plan",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "materializationDigest": "e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e"
+ },
+ "runIds": [
+ "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3"
+ ],
+ "finalState": {
+ "version": 1,
+ "type": "state",
+ "requestId": "final-state-glm-5.2",
+ "revision": 28,
+ "projection": "full",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 28,
+ "sequence": 28,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-29T18:31:27.260Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "glm-5.2",
+ "provider": "zai-coding-plan",
+ "reasoningEffort": "none"
+ },
+ "harness": "opencode"
+ },
+ "runConfiguration": {
+ "profileName": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "runner": "opencode",
+ "model": "glm-5.2",
+ "effort": "none",
+ "connectionId": "connection-live-cli-bridge",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-094b6958-b49c-4e70-a24b-91555cebd77d",
+ "role": "user",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK",
+ "status": "complete",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "parts": [
+ {
+ "id": "part-message-094b6958-b49c-4e70-a24b-91555cebd77d",
+ "kind": "text",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK"
+ }
+ ]
+ },
+ {
+ "id": "message-96449345-0f77-4bc7-a001-f3498fcab8a2",
+ "role": "assistant",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "status": "complete",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "parts": [
+ {
+ "id": "op-live-send-glm-5.2:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "sourceEventId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final"
+ }
+ ]
+ },
+ {
+ "id": "message-63410fe6-5915-4166-bda6-8d0659bc413a",
+ "role": "user",
+ "text": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "status": "complete",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "parts": [
+ {
+ "id": "part-message-63410fe6-5915-4166-bda6-8d0659bc413a",
+ "kind": "text",
+ "text": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ ]
+ },
+ {
+ "id": "message-6b7021ca-22df-4fdb-ae96-996a657e6864",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "parts": []
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "turnId": "turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4",
+ "operationId": "op-live-send-glm-5.2",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:22.361Z",
+ "updatedAt": "2026-08-29T18:31:26.299Z",
+ "terminalAt": "2026-08-29T18:31:26.299Z",
+ "durationMs": 3938,
+ "inputTokens": 7214,
+ "outputTokens": 50,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "opencode/zai-coding-plan/glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "environmentId": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "controlRef": {
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "executionId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "requestDigest": "sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc"
+ },
+ "materializationDigest": "e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 12,
+ "contentBytes": 61
+ },
+ {
+ "id": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "turnId": "turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:31:27.260Z",
+ "updatedAt": "2026-08-29T18:31:28.207Z",
+ "terminalAt": "2026-08-29T18:31:28.207Z",
+ "durationMs": 947,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "environmentId": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "controlRef": {
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "executionId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "requestDigest": "sha256:85d9b4f9fbbc7de553bf899ade70609021eaf66fe5a4409d25498143301cd935"
+ },
+ "materializationDigest": "dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e",
+ "contentBytes": 14
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 2,
+ "input": 7214,
+ "output": 50,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 2,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 2,
+ "unknownLatencySources": 2
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:31:21.989Z",
+ "updatedAt": "2026-08-29T18:31:28.106Z"
+ }
+ ],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": null,
+ "focusedRunId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "activeRuns": [],
+ "lastError": null
+ },
+ "view": {
+ "revision": 28,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4",
+ "profileName": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "runner": "opencode",
+ "model": "glm-5.2",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "Live local CLI Bridge",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-29T18:31:27.260Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "cancelled",
+ "statusText": "cancelled",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-094b6958-b49c-4e70-a24b-91555cebd77d",
+ "role": "user",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK",
+ "status": "complete",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "parts": [
+ {
+ "id": "part-message-094b6958-b49c-4e70-a24b-91555cebd77d",
+ "kind": "text",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK"
+ }
+ ]
+ },
+ {
+ "id": "message-96449345-0f77-4bc7-a001-f3498fcab8a2",
+ "role": "assistant",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "status": "complete",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "parts": [
+ {
+ "id": "op-live-send-glm-5.2:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "sourceEventId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final"
+ }
+ ]
+ },
+ {
+ "id": "message-63410fe6-5915-4166-bda6-8d0659bc413a",
+ "role": "user",
+ "text": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "status": "complete",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "parts": [
+ {
+ "id": "part-message-63410fe6-5915-4166-bda6-8d0659bc413a",
+ "kind": "text",
+ "text": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ ]
+ },
+ {
+ "id": "message-6b7021ca-22df-4fdb-ae96-996a657e6864",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "parts": []
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "turnId": "turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-live-send-glm-5.2",
+ "status": "completed",
+ "profileName": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "model": "opencode/zai-coding-plan/glm-5.2",
+ "effort": "none",
+ "cursor": "2:0",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "usage": {
+ "input": 7214,
+ "output": 50,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "opencode/zai-coding-plan/glm-5.2",
+ "elapsedMs": 3938
+ },
+ "runner": "opencode",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "completeness": "complete",
+ "contentBytes": 61
+ },
+ {
+ "id": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "turnId": "turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "status": "cancelled",
+ "profileName": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "model": "glm-5.2",
+ "effort": "none",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "requestedSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "glm-5.2",
+ "elapsedMs": 947
+ },
+ "runner": "opencode",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "completeness": "complete",
+ "contentBytes": 14
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 2,
+ "input": 7214,
+ "output": 50,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 2,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 2,
+ "unknownLatencySources": 2
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:31:21.989Z",
+ "updatedAt": "2026-08-29T18:31:28.106Z"
+ }
+ ],
+ "focusedRunId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "kind": "run",
+ "title": "run run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "status": "completed",
+ "elapsedMs": 3938,
+ "startedAt": "2026-08-29T18:31:22.361Z",
+ "occurredAt": "2026-08-29T18:31:22.361Z",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "entityType": "run",
+ "entityId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de"
+ },
+ {
+ "id": "activity:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "completed",
+ "detail": "profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "occurredAt": "2026-08-29T18:31:26.299Z",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "entityType": "run",
+ "entityId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de"
+ },
+ {
+ "id": "run:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "kind": "run",
+ "title": "run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "status": "cancelled",
+ "elapsedMs": 947,
+ "startedAt": "2026-08-29T18:31:27.260Z",
+ "occurredAt": "2026-08-29T18:31:27.260Z",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "entityType": "run",
+ "entityId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3"
+ },
+ {
+ "id": "environment:environment-f05ac3863839863d6592e55bdc1d2166",
+ "kind": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "detail": "local-process · local · explicit",
+ "startedAt": "2026-08-29T18:31:21.989Z",
+ "occurredAt": "2026-08-29T18:31:28.106Z",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "entityType": "environment",
+ "entityId": "environment-f05ac3863839863d6592e55bdc1d2166"
+ },
+ {
+ "id": "activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "cancelled",
+ "detail": "profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "occurredAt": "2026-08-29T18:31:28.207Z",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "entityType": "run",
+ "entityId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3"
+ },
+ {
+ "id": "activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:control:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "live packed smoke cancellation",
+ "occurredAt": "2026-08-29T18:31:28.207Z",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "entityType": "run",
+ "entityId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3"
+ },
+ {
+ "id": "activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:lifecycle:local:reconnecting",
+ "kind": "system",
+ "title": "reconnecting",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T18:31:28.207Z",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "entityType": "run",
+ "entityId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3"
+ },
+ {
+ "id": "activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:control.ack:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "accepted",
+ "occurredAt": "2026-08-29T18:31:28.207Z",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "entityType": "run",
+ "entityId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-29T18:31:21.451Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-29T18:31:21.451Z"
+ },
+ {
+ "id": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "type": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "depth": 4,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "run:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de"
+ ],
+ "runner": "cli-bridge",
+ "startedAt": "2026-08-29T18:31:21.989Z"
+ },
+ {
+ "id": "turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4",
+ "type": "turn",
+ "title": "Turn",
+ "status": "complete",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:31:22.361Z"
+ },
+ {
+ "id": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "type": "run",
+ "title": "Run",
+ "status": "completed",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4"
+ ],
+ "runner": "opencode",
+ "elapsedMs": 3938,
+ "startedAt": "2026-08-29T18:31:22.361Z"
+ },
+ {
+ "id": "turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0",
+ "type": "turn",
+ "title": "Turn",
+ "status": "cancelled",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:31:27.260Z"
+ },
+ {
+ "id": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "type": "run",
+ "title": "Run",
+ "status": "cancelled",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0"
+ ],
+ "runner": "opencode",
+ "elapsedMs": 947,
+ "startedAt": "2026-08-29T18:31:27.260Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "environment",
+ "entityId": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "title": "cli-bridge execution",
+ "status": "ready",
+ "lines": [
+ "provider: cli-bridge",
+ "execution: local-process · local",
+ "provider environment: cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0",
+ "connection: connection-live-cli-bridge",
+ "lifecycle: ready · retained · cleanup explicit",
+ "continuity: session",
+ "runtime endpoint host: 127.0.0.1",
+ "placement: requested not specified · verified unavailable",
+ "machine: unavailable · physical IP is not exposed",
+ "created: 2026-08-29T18:31:21.989Z",
+ "observed: 2026-08-29T18:31:28.106Z",
+ "unavailable: cli-subscription-and-quota:not-exposed-by-provider",
+ "unavailable: effective-resources:not-exposed-by-provider",
+ "unavailable: machine-specs:not-exposed-by-provider",
+ "unavailable: runtime-cpu-memory-usage:not-exposed-by-provider"
+ ]
+ }
+ ],
+ "details": {
+ "title": "run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "fields": [
+ {
+ "label": "status",
+ "value": "aborted"
+ },
+ {
+ "label": "input tokens",
+ "value": "0"
+ },
+ {
+ "label": "output tokens",
+ "value": "0"
+ },
+ {
+ "label": "model",
+ "value": "glm-5.2"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.recipe": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "none",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ }
+ },
+ "shutdown": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "shutdown-glm-5.2",
+ "revision": 28,
+ "operationId": "op-live-shutdown-glm-5.2",
+ "command": "shutdown"
+ },
+ "operationEvidence": {
+ "normal": {
+ "status": "completed",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "run": {
+ "id": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "turnId": "turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4",
+ "operationId": "op-live-send-glm-5.2",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:22.361Z",
+ "updatedAt": "2026-08-29T18:31:26.299Z",
+ "terminalAt": "2026-08-29T18:31:26.299Z",
+ "durationMs": 3938,
+ "inputTokens": 7214,
+ "outputTokens": 50,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "opencode/zai-coding-plan/glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "environmentId": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "controlRef": {
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "executionId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "requestDigest": "sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc"
+ },
+ "materializationDigest": "e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 12,
+ "contentBytes": 61,
+ "receipt": {
+ "version": 1,
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "turnId": "turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4",
+ "operationId": "op-live-send-glm-5.2",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:22.350Z",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK",
+ "profile": {
+ "name": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "opencode"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "glm-5.2",
+ "runner": "opencode"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runner": "opencode",
+ "providerRunId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "def112beeb6bec7c404a0307dd34a008f5b04aed4276d8f594c5e13f10cb02c2",
+ "capabilitiesDigest": "b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6",
+ "materializationDigest": "e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e",
+ "digest": "291afe4c38f54086e40c53bc21b3a0a3e10f8f21a5204d1a629d9bc9b0637f91"
+ }
+ },
+ "assistant": {
+ "id": "message-96449345-0f77-4bc7-a001-f3498fcab8a2",
+ "role": "assistant",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "status": "complete",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "parts": [
+ {
+ "id": "op-live-send-glm-5.2:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "sourceEventId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_GLM-5_2_OK",
+ "marker": "LIVE_BRAID_GLM-5_2_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-send-glm-5.2",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "revision": 14,
+ "replayed": false,
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "admission": {
+ "version": 1,
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "turnId": "turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:27.250Z",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "requested": {
+ "text": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "opencode"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "glm-5.2",
+ "runner": "opencode"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runner": "opencode",
+ "providerRunId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "a6fe7228f6570b63e61c9323395d38ce4dad581f36768bbfa85b613a76fd3239",
+ "capabilitiesDigest": "b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6",
+ "materializationDigest": "dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e",
+ "digest": "251a428a92eb4a633c41e3c62f8aceebcfa42fa06a2ba0361f9281251aa3a35a"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "activeRun": {
+ "id": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "turnId": "turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:31:27.260Z",
+ "updatedAt": "2026-08-29T18:31:27.260Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "materializationDigest": "dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-glm-5.2",
+ "revision": 26,
+ "operationId": "op-live-cancel-glm-5.2",
+ "command": "cancel_run",
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "turnId": "turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0",
+ "operationId": "op-live-cancel-send-glm-5.2",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:31:27.260Z",
+ "updatedAt": "2026-08-29T18:31:28.207Z",
+ "terminalAt": "2026-08-29T18:31:28.207Z",
+ "durationMs": 947,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "environmentId": "environment-f05ac3863839863d6592e55bdc1d2166",
+ "controlRef": {
+ "runId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0",
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "executionId": "run-3818dc5d-d7d9-4d30-aca7-51259610c7b3",
+ "requestDigest": "sha256:85d9b4f9fbbc7de553bf899ade70609021eaf66fe5a4409d25498143301cd935"
+ },
+ "materializationDigest": "dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e",
+ "contentBytes": 14
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": false,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "targetProof": {
+ "key": "glm-5.2",
+ "harness": "opencode",
+ "provider": "zai-coding-plan",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "materializationDigest": "e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e"
+ }
+ },
+ "operationReceipt": {
+ "operation": "cli-bridge.target-smoke",
+ "packed": true,
+ "runId": "run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "status": "passed"
+ },
+ "status": "passed",
+ "stderr": "",
+ "stdout": "{\"version\":1,\"type\":\"ack\",\"requestId\":\"init-glm-5.2\",\"revision\":4,\"command\":\"initialize\"}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"init-glm-5.2\",\"revision\":4,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":4,\"sequence\":4,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:21.451Z\"}],\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"runConfiguration\":{\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[],\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":null,\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":4,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:21.451Z\"}],\"branch\":\"branch-1\",\"status\":\"empty\",\"statusText\":\"ready for a message\",\"queueCount\":0,\"queue\":[],\"messages\":[],\"hiddenMessageCount\":0,\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"activity\":[],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:21.451Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"send-glm-5.2\",\"operationId\":\"op-live-send-glm-5.2\",\"revision\":4,\"replayed\":false,\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"admission\":{\"version\":1,\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"operationId\":\"op-live-send-glm-5.2\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:22.350Z\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"requested\":{\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{},\"model\":\"glm-5.2\",\"runner\":\"opencode\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":false,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":true,\"instructions\":true,\"tools\":true,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"model\":\"glm-5.2\",\"route\":\"opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"providerRunId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"def112beeb6bec7c404a0307dd34a008f5b04aed4276d8f594c5e13f10cb02c2\",\"capabilitiesDigest\":\"b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6\",\"materializationDigest\":\"e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e\",\"digest\":\"291afe4c38f54086e40c53bc21b3a0a3e10f8f21a5204d1a629d9bc9b0637f91\"},\"command\":\"send\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":5,\"revision\":5,\"event\":{\"sequence\":5,\"revision\":5,\"kind\":\"draft.changed\",\"payload\":{\"value\":{\"kind\":\"draft.changed\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":6,\"revision\":6,\"event\":{\"sequence\":6,\"revision\":6,\"kind\":\"run.requested\",\"payload\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"admission\":{\"version\":1,\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"operationId\":\"op-live-send-glm-5.2\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:22.350Z\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"requested\":{\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{},\"model\":\"glm-5.2\",\"runner\":\"opencode\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":false,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":true,\"instructions\":true,\"tools\":true,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"model\":\"glm-5.2\",\"route\":\"opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"providerRunId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"def112beeb6bec7c404a0307dd34a008f5b04aed4276d8f594c5e13f10cb02c2\",\"capabilitiesDigest\":\"b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6\",\"materializationDigest\":\"e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e\",\"digest\":\"291afe4c38f54086e40c53bc21b3a0a3e10f8f21a5204d1a629d9bc9b0637f91\"},\"status\":\"admitted\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":7,\"revision\":7,\"event\":{\"sequence\":7,\"revision\":7,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-send-glm-5.2-afcbd429d3df281ccfc48be6\",\"operationId\":\"op-live-send-glm-5.2\",\"effectKind\":\"run.execute\",\"requestDigest\":\"afcbd429d3df281ccfc48be6f14c42f4154175b0b7588ebae8f405c2c05aed5a\",\"kind\":\"send\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T18:31:22.372Z\",\"updatedAt\":\"2026-08-29T18:31:22.372Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":8,\"revision\":8,\"event\":{\"sequence\":8,\"revision\":8,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"admission\":{\"phase\":\"intent\",\"provider\":\"cli-bridge\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-glm-5.2\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"runId\":\"retained-intent-run:95e4566e4f22d3f1df8602746b41af1d560a0bf4f406501470ef15b74b9027b7\",\"requestedProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"requestDigest\":\"sha256:95e4566e4f22d3f1df8602746b41af1d560a0bf4f406501470ef15b74b9027b7\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"send-glm-5.2\",\"revision\":6,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":6,\"sequence\":6,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:22.361Z\"}],\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"runConfiguration\":{\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[]}],\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"updatedAt\":\"2026-08-29T18:31:22.361Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"materializationDigest\":\"e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"focusedRunId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"activeRuns\":[{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":6,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:22.361Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"running\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\"},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"activeRunId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"focusedRunId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"kind\":\"run\",\"title\":\"run run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"status\":\"running\",\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"occurredAt\":\"2026-08-29T18:31:22.361Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"activity:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:22.361Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\"],\"runner\":\"opencode\",\"startedAt\":\"2026-08-29T18:31:22.361Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"details\":{\"title\":\"run run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"glm-5.2\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect while another run is active\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile while another run is active\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":9,\"revision\":9,\"event\":{\"sequence\":9,\"revision\":9,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"admission\":{\"phase\":\"environment\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-glm-5.2\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":10,\"revision\":10,\"event\":{\"sequence\":10,\"revision\":10,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"admission\":{\"phase\":\"dispatched\",\"controlRef\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestDigest\":\"sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc\"},\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-glm-5.2\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":11,\"revision\":11,\"event\":{\"sequence\":11,\"revision\":11,\"kind\":\"run.environment.observed\",\"payload\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"source\":{\"eventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:23.175Z\"},\"value\":{\"kind\":\"run.environment.observed\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"observation\":{\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"unavailable\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"observedAt\":\"2026-08-29T18:31:23.175Z\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\"},\"controlRef\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestDigest\":\"sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc\"},\"provider\":{\"eventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:23.175Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":12,\"revision\":12,\"event\":{\"sequence\":12,\"revision\":12,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"source\":{\"eventId\":\"2:0\",\"providerSequence\":2,\"cursor\":\"2:0\",\"receivedAt\":\"2026-08-29T18:31:26.181Z\"},\"part\":{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"2:0\"},\"delta\":\"LIVE_BRAID_GLM-5_2_O\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":13,\"revision\":13,\"event\":{\"sequence\":13,\"revision\":13,\"kind\":\"run.finished\",\"payload\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"source\":{\"eventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\",\"providerSequence\":3,\"receivedAt\":\"2026-08-29T18:31:26.298Z\"},\"status\":\"completed\",\"completeness\":\"complete\",\"finalText\":\"LIVE_BRAID_GLM-5_2_OK\",\"usage\":{\"input\":7214,\"output\":50,\"usdKnown\":false,\"model\":\"opencode/zai-coding-plan/glm-5.2\"},\"reason\":\"RUNTIME_FINAL_REASON\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":14,\"revision\":14,\"event\":{\"sequence\":14,\"revision\":14,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-send-glm-5.2-afcbd429d3df281ccfc48be6\",\"operationId\":\"op-live-send-glm-5.2\",\"effectKind\":\"run.execute\",\"requestDigest\":\"afcbd429d3df281ccfc48be6f14c42f4154175b0b7588ebae8f405c2c05aed5a\",\"kind\":\"send\",\"status\":\"terminal\",\"attempt\":1,\"outcomeDigest\":\"b82069d6893c46ce5ac5dc805ef96d7f3999afb6c6ecd8ec2e4332ec92d0b067\",\"createdAt\":\"2026-08-29T18:31:22.372Z\",\"updatedAt\":\"2026-08-29T18:31:26.322Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"send-glm-5.2\",\"revision\":14,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":14,\"sequence\":14,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:22.361Z\"}],\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"runConfiguration\":{\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]}],\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"updatedAt\":\"2026-08-29T18:31:26.299Z\",\"terminalAt\":\"2026-08-29T18:31:26.299Z\",\"durationMs\":3938,\"inputTokens\":7214,\"outputTokens\":50,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"controlRef\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestDigest\":\"sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc\"},\"materializationDigest\":\"e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":61}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":7214,\"output\":50,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:23.175Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":14,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:22.361Z\"}],\"branch\":\"branch-1\",\"status\":\"completed\",\"statusText\":\"completed\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":7214,\"output\":50,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"elapsedMs\":3938},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"completeness\":\"complete\",\"contentBytes\":61}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":7214,\"output\":50,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:23.175Z\"}],\"focusedRunId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"kind\":\"run\",\"title\":\"run run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"status\":\"completed\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"occurredAt\":\"2026-08-29T18:31:22.361Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"environment:environment-f05ac3863839863d6592e55bdc1d2166\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:21.989Z\",\"occurredAt\":\"2026-08-29T18:31:23.175Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\"},{\"id\":\"activity:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:26.299Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:21.989Z\"},{\"id\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\"],\"runner\":\"opencode\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:21.989Z\",\"observed: 2026-08-29T18:31:23.175Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"fields\":[{\"label\":\"status\",\"value\":\"completed\"},{\"label\":\"input tokens\",\"value\":\"7214\"},{\"label\":\"output tokens\",\"value\":\"50\"},{\"label\":\"token measurement\",\"value\":\"complete\"},{\"label\":\"model\",\"value\":\"opencode/zai-coding-plan/glm-5.2\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"cancel-send-glm-5.2\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"revision\":14,\"replayed\":false,\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"admission\":{\"version\":1,\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:27.250Z\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"requested\":{\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{},\"model\":\"glm-5.2\",\"runner\":\"opencode\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":false,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":true,\"instructions\":true,\"tools\":true,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"model\":\"glm-5.2\",\"route\":\"opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"providerRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"a6fe7228f6570b63e61c9323395d38ce4dad581f36768bbfa85b613a76fd3239\",\"capabilitiesDigest\":\"b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6\",\"materializationDigest\":\"dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e\",\"digest\":\"251a428a92eb4a633c41e3c62f8aceebcfa42fa06a2ba0361f9281251aa3a35a\"},\"command\":\"send\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":15,\"revision\":15,\"event\":{\"sequence\":15,\"revision\":15,\"kind\":\"draft.changed\",\"payload\":{\"value\":{\"kind\":\"draft.changed\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":16,\"revision\":16,\"event\":{\"sequence\":16,\"revision\":16,\"kind\":\"run.requested\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"admission\":{\"version\":1,\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:27.250Z\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"requested\":{\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{},\"model\":\"glm-5.2\",\"runner\":\"opencode\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":false,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":true,\"instructions\":true,\"tools\":true,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"model\":\"glm-5.2\",\"route\":\"opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"providerRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"a6fe7228f6570b63e61c9323395d38ce4dad581f36768bbfa85b613a76fd3239\",\"capabilitiesDigest\":\"b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6\",\"materializationDigest\":\"dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e\",\"digest\":\"251a428a92eb4a633c41e3c62f8aceebcfa42fa06a2ba0361f9281251aa3a35a\"},\"status\":\"admitted\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":17,\"revision\":17,\"event\":{\"sequence\":17,\"revision\":17,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-send-glm-5.2-17efb85fd96541bfb7b9f2ad\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"effectKind\":\"run.execute\",\"requestDigest\":\"17efb85fd96541bfb7b9f2adfaeb0f321a09486fb8a1c8ac39a617795b2b1303\",\"kind\":\"send\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T18:31:27.269Z\",\"updatedAt\":\"2026-08-29T18:31:27.269Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":18,\"revision\":18,\"event\":{\"sequence\":18,\"revision\":18,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"admission\":{\"phase\":\"intent\",\"provider\":\"cli-bridge\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-glm-5.2\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"runId\":\"retained-intent-run:619220e0997a81de38e570bcfe74f4410bd112a9c0802367b5a452fe105f7af1\",\"requestedProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"requestDigest\":\"sha256:619220e0997a81de38e570bcfe74f4410bd112a9c0802367b5a452fe105f7af1\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-send-glm-5.2\",\"revision\":16,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":16,\"sequence\":16,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:27.260Z\"}],\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"runConfiguration\":{\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]},{\"id\":\"message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[{\"id\":\"part-message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-6b7021ca-22df-4fdb-ae96-996a657e6864\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[]}],\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"updatedAt\":\"2026-08-29T18:31:26.299Z\",\"terminalAt\":\"2026-08-29T18:31:26.299Z\",\"durationMs\":3938,\"inputTokens\":7214,\"outputTokens\":50,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"controlRef\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestDigest\":\"sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc\"},\"materializationDigest\":\"e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":61},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T18:31:27.260Z\",\"updatedAt\":\"2026-08-29T18:31:27.260Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"materializationDigest\":\"dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":7214,\"output\":50,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:23.175Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"focusedRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"activeRuns\":[{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":16,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:27.260Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]},{\"id\":\"message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[{\"id\":\"part-message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-6b7021ca-22df-4fdb-ae96-996a657e6864\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":7214,\"output\":50,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"elapsedMs\":3938},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"completeness\":\"complete\",\"contentBytes\":61},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"status\":\"running\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\"},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":7214,\"output\":50,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:23.175Z\"}],\"activeRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"focusedRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"kind\":\"run\",\"title\":\"run run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"status\":\"completed\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"occurredAt\":\"2026-08-29T18:31:22.361Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"environment:environment-f05ac3863839863d6592e55bdc1d2166\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:21.989Z\",\"occurredAt\":\"2026-08-29T18:31:23.175Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\"},{\"id\":\"activity:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:26.299Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"run:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"kind\":\"run\",\"title\":\"run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"status\":\"running\",\"startedAt\":\"2026-08-29T18:31:27.260Z\",\"occurredAt\":\"2026-08-29T18:31:27.260Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:27.260Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:21.989Z\"},{\"id\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\"],\"runner\":\"opencode\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:27.260Z\"},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\"],\"runner\":\"opencode\",\"startedAt\":\"2026-08-29T18:31:27.260Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:21.989Z\",\"observed: 2026-08-29T18:31:23.175Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"glm-5.2\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect while another run is active\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile while another run is active\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"cancel-glm-5.2\",\"revision\":26,\"operationId\":\"op-live-cancel-glm-5.2\",\"command\":\"cancel_run\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"control\":\"cancel\",\"outcome\":\"accepted\",\"replayed\":false}\n{\"version\":1,\"type\":\"event\",\"sequence\":19,\"revision\":19,\"event\":{\"sequence\":19,\"revision\":19,\"kind\":\"run.control.requested\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"control\":{\"operationId\":\"op-live-cancel-glm-5.2\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live packed smoke cancellation\",\"text\":\"[unavailable]\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":20,\"revision\":20,\"event\":{\"sequence\":20,\"revision\":20,\"kind\":\"run.cancel.requested\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"control\":{\"operationId\":\"op-live-cancel-glm-5.2\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live packed smoke cancellation\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":21,\"revision\":21,\"event\":{\"sequence\":21,\"revision\":21,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-glm-5.2-b4de53c49b613b2b1ee869c2\",\"operationId\":\"op-live-cancel-glm-5.2\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"b4de53c49b613b2b1ee869c2f2c190e5ff3bc433dedf57c2d21f2b4bede99b12\",\"kind\":\"custom\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T18:31:27.515Z\",\"updatedAt\":\"2026-08-29T18:31:27.515Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":22,\"revision\":22,\"event\":{\"sequence\":22,\"revision\":22,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"admission\":{\"phase\":\"environment\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-glm-5.2\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":23,\"revision\":23,\"event\":{\"sequence\":23,\"revision\":23,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"admission\":{\"phase\":\"dispatched\",\"controlRef\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"requestDigest\":\"sha256:85d9b4f9fbbc7de553bf899ade70609021eaf66fe5a4409d25498143301cd935\"},\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-glm-5.2\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":24,\"revision\":24,\"event\":{\"sequence\":24,\"revision\":24,\"kind\":\"run.environment.observed\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"source\":{\"eventId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:28.106Z\"},\"value\":{\"kind\":\"run.environment.observed\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"observation\":{\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"createdAt\":\"2026-08-29T18:31:26.822Z\",\"unavailable\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"observedAt\":\"2026-08-29T18:31:28.106Z\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\"},\"controlRef\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"requestDigest\":\"sha256:85d9b4f9fbbc7de553bf899ade70609021eaf66fe5a4409d25498143301cd935\"},\"provider\":{\"eventId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:28.106Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":25,\"revision\":25,\"event\":{\"sequence\":25,\"revision\":25,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-glm-5.2-b4de53c49b613b2b1ee869c2\",\"operationId\":\"op-live-cancel-glm-5.2\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"b4de53c49b613b2b1ee869c2f2c190e5ff3bc433dedf57c2d21f2b4bede99b12\",\"kind\":\"custom\",\"status\":\"acknowledged\",\"attempt\":1,\"outcomeDigest\":\"f430d9c9c101fec536eed9da90bf212be94a7c138332862d1e9774b1266d9187\",\"createdAt\":\"2026-08-29T18:31:27.515Z\",\"updatedAt\":\"2026-08-29T18:31:28.170Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":26,\"revision\":26,\"event\":{\"sequence\":26,\"revision\":26,\"kind\":\"run.reconnecting\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"status\":\"reconnecting\",\"completeness\":\"streaming\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":27,\"revision\":27,\"event\":{\"sequence\":27,\"revision\":27,\"kind\":\"run.control.acknowledged\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"control\":{\"operationId\":\"op-live-cancel-glm-5.2\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"control\":\"cancel\",\"status\":\"accepted\",\"detail\":\"CONTROL_DETAIL\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":28,\"revision\":28,\"event\":{\"sequence\":28,\"revision\":28,\"kind\":\"run.finished\",\"payload\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"status\":\"aborted\",\"completeness\":\"complete\",\"finalText\":\"\",\"usage\":{\"input\":0,\"output\":0,\"tokensKnown\":false,\"usdKnown\":false,\"model\":\"glm-5.2\"},\"reason\":\"CONTROL_DETAIL\"}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-glm-5.2\",\"revision\":28,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":28,\"sequence\":28,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:27.260Z\"}],\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"runConfiguration\":{\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]},{\"id\":\"message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[{\"id\":\"part-message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-6b7021ca-22df-4fdb-ae96-996a657e6864\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[]}],\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"updatedAt\":\"2026-08-29T18:31:26.299Z\",\"terminalAt\":\"2026-08-29T18:31:26.299Z\",\"durationMs\":3938,\"inputTokens\":7214,\"outputTokens\":50,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"controlRef\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestDigest\":\"sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc\"},\"materializationDigest\":\"e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":61},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T18:31:27.260Z\",\"updatedAt\":\"2026-08-29T18:31:28.207Z\",\"terminalAt\":\"2026-08-29T18:31:28.207Z\",\"durationMs\":947,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"controlRef\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"requestDigest\":\"sha256:85d9b4f9fbbc7de553bf899ade70609021eaf66fe5a4409d25498143301cd935\"},\"materializationDigest\":\"dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":7214,\"output\":50,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:28.106Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":28,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:27.260Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]},{\"id\":\"message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[{\"id\":\"part-message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-6b7021ca-22df-4fdb-ae96-996a657e6864\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":7214,\"output\":50,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"elapsedMs\":3938},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"completeness\":\"complete\",\"contentBytes\":61},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"status\":\"cancelled\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\",\"elapsedMs\":947},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"completeness\":\"complete\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":7214,\"output\":50,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:28.106Z\"}],\"focusedRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"kind\":\"run\",\"title\":\"run run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"status\":\"completed\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"occurredAt\":\"2026-08-29T18:31:22.361Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"activity:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:26.299Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"run:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"kind\":\"run\",\"title\":\"run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"status\":\"cancelled\",\"elapsedMs\":947,\"startedAt\":\"2026-08-29T18:31:27.260Z\",\"occurredAt\":\"2026-08-29T18:31:27.260Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"environment:environment-f05ac3863839863d6592e55bdc1d2166\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:21.989Z\",\"occurredAt\":\"2026-08-29T18:31:28.106Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:21.989Z\"},{\"id\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\"],\"runner\":\"opencode\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:27.260Z\"},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\"],\"runner\":\"opencode\",\"elapsedMs\":947,\"startedAt\":\"2026-08-29T18:31:27.260Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:21.989Z\",\"observed: 2026-08-29T18:31:28.106Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"glm-5.2\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"final-state-glm-5.2\",\"revision\":28,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":28,\"sequence\":28,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:27.260Z\"}],\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"runConfiguration\":{\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]},{\"id\":\"message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[{\"id\":\"part-message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-6b7021ca-22df-4fdb-ae96-996a657e6864\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[]}],\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"updatedAt\":\"2026-08-29T18:31:26.299Z\",\"terminalAt\":\"2026-08-29T18:31:26.299Z\",\"durationMs\":3938,\"inputTokens\":7214,\"outputTokens\":50,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"controlRef\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestDigest\":\"sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc\"},\"materializationDigest\":\"e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":61},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T18:31:27.260Z\",\"updatedAt\":\"2026-08-29T18:31:28.207Z\",\"terminalAt\":\"2026-08-29T18:31:28.207Z\",\"durationMs\":947,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"controlRef\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"requestDigest\":\"sha256:85d9b4f9fbbc7de553bf899ade70609021eaf66fe5a4409d25498143301cd935\"},\"materializationDigest\":\"dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":7214,\"output\":50,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:28.106Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":28,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:27.260Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]},{\"id\":\"message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[{\"id\":\"part-message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-6b7021ca-22df-4fdb-ae96-996a657e6864\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":7214,\"output\":50,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"elapsedMs\":3938},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"completeness\":\"complete\",\"contentBytes\":61},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"status\":\"cancelled\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\",\"elapsedMs\":947},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"completeness\":\"complete\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":7214,\"output\":50,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:28.106Z\"}],\"focusedRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"kind\":\"run\",\"title\":\"run run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"status\":\"completed\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"occurredAt\":\"2026-08-29T18:31:22.361Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"activity:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:26.299Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"run:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"kind\":\"run\",\"title\":\"run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"status\":\"cancelled\",\"elapsedMs\":947,\"startedAt\":\"2026-08-29T18:31:27.260Z\",\"occurredAt\":\"2026-08-29T18:31:27.260Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"environment:environment-f05ac3863839863d6592e55bdc1d2166\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:21.989Z\",\"occurredAt\":\"2026-08-29T18:31:28.106Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:21.989Z\"},{\"id\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\"],\"runner\":\"opencode\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:27.260Z\"},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\"],\"runner\":\"opencode\",\"elapsedMs\":947,\"startedAt\":\"2026-08-29T18:31:27.260Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:21.989Z\",\"observed: 2026-08-29T18:31:28.106Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"glm-5.2\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"shutdown-glm-5.2\",\"revision\":28,\"operationId\":\"op-live-shutdown-glm-5.2\",\"command\":\"shutdown\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":29,\"revision\":29,\"event\":{\"sequence\":29,\"revision\":29,\"kind\":\"application.shutdown.requested\",\"payload\":{\"value\":{\"kind\":\"application.shutdown.requested\",\"operationId\":\"op-live-shutdown-glm-5.2\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":30,\"revision\":30,\"event\":{\"sequence\":30,\"revision\":30,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-send-glm-5.2-17efb85fd96541bfb7b9f2ad\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"effectKind\":\"run.execute\",\"requestDigest\":\"17efb85fd96541bfb7b9f2adfaeb0f321a09486fb8a1c8ac39a617795b2b1303\",\"kind\":\"send\",\"status\":\"failed\",\"attempt\":1,\"outcomeDigest\":\"709050be156660bc04bed3766c3160fcc713b9a8ebb19bfd0cd66bbe285c86e9\",\"createdAt\":\"2026-08-29T18:31:27.269Z\",\"updatedAt\":\"2026-08-29T18:31:29.848Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-send-glm-5.2\",\"revision\":30,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":30,\"sequence\":30,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:27.260Z\"}],\"profile\":{\"name\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"glm-5.2\",\"provider\":\"zai-coding-plan\",\"reasoningEffort\":\"none\"},\"harness\":\"opencode\"},\"runConfiguration\":{\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]},{\"id\":\"message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[{\"id\":\"part-message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-6b7021ca-22df-4fdb-ae96-996a657e6864\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[]}],\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"updatedAt\":\"2026-08-29T18:31:26.299Z\",\"terminalAt\":\"2026-08-29T18:31:26.299Z\",\"durationMs\":3938,\"inputTokens\":7214,\"outputTokens\":50,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"controlRef\":{\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestDigest\":\"sha256:c0ef17faf9448154d336a74fd3f025943cf92a69718c9ceefd65d17202d7dedc\"},\"materializationDigest\":\"e1ec4f299874316d276549b7b705be0ab266d2b73e7b78d9bab65d5ef241a11e\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":61},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T18:31:27.260Z\",\"updatedAt\":\"2026-08-29T18:31:28.207Z\",\"terminalAt\":\"2026-08-29T18:31:28.207Z\",\"durationMs\":947,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\",\"provider\":\"cli-bridge\",\"runner\":\"opencode\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"controlRef\":{\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"sessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"executionId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"requestDigest\":\"sha256:85d9b4f9fbbc7de553bf899ade70609021eaf66fe5a4409d25498143301cd935\"},\"materializationDigest\":\"dae3b4f552a407191ac8d8642899ee98e076e12c9d4f7120a1a5497d280be75e\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":7214,\"output\":50,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:28.106Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":30,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-3c4b098b-087e-4ff0-9e52-2ac513c213c4\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"runner\":\"opencode\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:27.260Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"part-message-094b6958-b49c-4e70-a24b-91555cebd77d\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK\"}]},{\"id\":\"message-96449345-0f77-4bc7-a001-f3498fcab8a2\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"status\":\"complete\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"parts\":[{\"id\":\"op-live-send-glm-5.2:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_GLM-5_2_OK\",\"sourceEventId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:final\"}]},{\"id\":\"message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[{\"id\":\"part-message-63410fe6-5915-4166-bda6-8d0659bc413a\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-6b7021ca-22df-4fdb-ae96-996a657e6864\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"turnId\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-glm-5.2\",\"status\":\"completed\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":7214,\"output\":50,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"elapsedMs\":3938},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"completeness\":\"complete\",\"contentBytes\":61},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"turnId\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-glm-5.2\",\"status\":\"cancelled\",\"profileName\":\"Braid live opencode/zai-coding-plan/glm-5.2\",\"profileDigest\":\"b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"model\":\"glm-5.2\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"requestedSessionId\":\"session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"glm-5.2\",\"elapsedMs\":947},\"runner\":\"opencode\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"completeness\":\"complete\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":7214,\"output\":50,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:21.989Z\",\"updatedAt\":\"2026-08-29T18:31:28.106Z\"}],\"focusedRunId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"kind\":\"run\",\"title\":\"run run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"status\":\"completed\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\",\"occurredAt\":\"2026-08-29T18:31:22.361Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"activity:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:26.299Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"run\",\"entityId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"},{\"id\":\"run:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"kind\":\"run\",\"title\":\"run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"status\":\"cancelled\",\"elapsedMs\":947,\"startedAt\":\"2026-08-29T18:31:27.260Z\",\"occurredAt\":\"2026-08-29T18:31:27.260Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"environment:environment-f05ac3863839863d6592e55bdc1d2166\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:21.989Z\",\"occurredAt\":\"2026-08-29T18:31:28.106Z\",\"runId\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"},{\"id\":\"activity:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T18:31:28.207Z\",\"runId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"entityType\":\"run\",\"entityId\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:21.451Z\"},{\"id\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"run:run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:21.989Z\"},{\"id\":\"turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-3f827a0a-fed5-45d4-8aca-de99d7984ab4\"],\"runner\":\"opencode\",\"elapsedMs\":3938,\"startedAt\":\"2026-08-29T18:31:22.361Z\"},{\"id\":\"turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:27.260Z\"},{\"id\":\"run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-703a08c6-8370-4940-bfa5-249a9d3cf1a0\"],\"runner\":\"opencode\",\"elapsedMs\":947,\"startedAt\":\"2026-08-29T18:31:27.260Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-f05ac3863839863d6592e55bdc1d2166\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmI3OTBlYTg3NWMwZmEwODU4ODI2NzlhNGE2ZWM2NmRiMGZmMzM0Mjg1NjRiZDE0MmI0MzAyZThiOGJhODY1NjgiLCJZeG13RmpJN3ZxOWkzM21XdzUwWTdtTDhCa3RxM3JnODdKZ3c0eVBGcjNZIl0\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:21.989Z\",\"observed: 2026-08-29T18:31:28.106Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-3818dc5d-d7d9-4d30-aca7-51259610c7b3\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"glm-5.2\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n",
+ "process": {
+ "processIdentity": {
+ "instanceId": "c5268ce5-a6ff-488a-a2af-2018d25559ba",
+ "pid": 3343758,
+ "startedAt": 1788028280847
+ },
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3343758
+ ],
+ "roots": [
+ 3343758
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "natural": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3343758
+ ],
+ "roots": [
+ 3343758
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "exit": {
+ "code": 0,
+ "signal": null
+ }
+ },
+ "providerSessionCleanup": {
+ "attempted": 1,
+ "closed": 0,
+ "alreadyAbsent": 1,
+ "released": 1,
+ "complete": true,
+ "results": [
+ {
+ "sessionId": "session-braid-run-9dab369e-cfe6-4aa9-8b07-d8937d15c3de",
+ "status": 404,
+ "closed": false,
+ "alreadyAbsent": true,
+ "released": true
+ }
+ ]
+ }
+ },
+ {
+ "label": "Pi with Tangle Router DeepSeek V4 Flash",
+ "target": "pi/tangle-router/deepseek-v4-flash",
+ "profile": {
+ "path": ".braid/profiles/profile-pi-tangle-router-deepseek-v4-flash.json",
+ "harness": "pi",
+ "model": "deepseek-v4-flash",
+ "provider": "tangle-router"
+ },
+ "connection": {
+ "id": "connection-live-cli-bridge",
+ "kind": "cli-bridge",
+ "endpoint": "http://127.0.0.1:3344",
+ "credentialConfigured": true
+ },
+ "providerCapabilities": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ },
+ "requests": [
+ {
+ "version": 1,
+ "requestId": "init-pi-tangle-router-deepseek-v4-flash",
+ "command": "initialize",
+ "params": {
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04",
+ "subscribe": true
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "command": "send",
+ "params": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "command": "send",
+ "params": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "cancel-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "params": {
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "reason": "live packed smoke cancellation"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "final-state-pi-tangle-router-deepseek-v4-flash",
+ "command": "get_state",
+ "params": {
+ "projection": "full"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "shutdown-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-shutdown-pi-tangle-router-deepseek-v4-flash",
+ "command": "shutdown",
+ "params": {
+ "mode": "wait"
+ }
+ }
+ ],
+ "operation": "cli-bridge.target-smoke",
+ "credentialLifecycle": {
+ "configured": true,
+ "stored": true,
+ "removed": true,
+ "facility": "encrypted-headless"
+ },
+ "initialize": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "init-pi-tangle-router-deepseek-v4-flash",
+ "revision": 4,
+ "command": "initialize"
+ },
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "initialCapabilities": {
+ "view": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "analysisAsk": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "run": {}
+ },
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "revision": 4,
+ "replayed": false,
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "admission": {
+ "version": 1,
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "turnId": "turn-4a95ae49-bcee-49cd-b5af-4501dbd51060",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:31.413Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": false,
+ "instructions": true,
+ "tools": false,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "ee0eabc709467fe6b53f36d96d6a07a49ea32e3d1b85f888a19dcaa07878f4e9",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a",
+ "digest": "a55da5866d4df133c203edf1c4db23551a08eb8a95ee257313c4d20a24aceda0"
+ },
+ "command": "send"
+ },
+ "activeCapabilities": {
+ "view": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": false,
+ "source": "application",
+ "reason": "A run is already active"
+ },
+ "run.cancel": {
+ "available": true,
+ "source": "runtime"
+ },
+ "run.queue": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report steering support"
+ },
+ "run.detach": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect while another run is active"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile while another run is active"
+ }
+ },
+ "analysisAsk": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "run": {}
+ },
+ "normal": {
+ "status": "completed",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "run": {
+ "id": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "turnId": "turn-4a95ae49-bcee-49cd-b5af-4501dbd51060",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:31.439Z",
+ "updatedAt": "2026-08-29T18:31:35.734Z",
+ "terminalAt": "2026-08-29T18:31:35.734Z",
+ "durationMs": 4295,
+ "inputTokens": 1011,
+ "outputTokens": 25,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 0,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "environmentId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "controlRef": {
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "executionId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "requestDigest": "sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27"
+ },
+ "materializationDigest": "a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a",
+ "cursor": "37",
+ "cursorCommittedSequence": 48,
+ "contentBytes": 163,
+ "receipt": {
+ "version": 1,
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "turnId": "turn-4a95ae49-bcee-49cd-b5af-4501dbd51060",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:31.413Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "interactions": {
+ "kinds": "[depth-limited]",
+ "answerFieldTypes": "[depth-limited]",
+ "responseScopes": "[depth-limited]",
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "ee0eabc709467fe6b53f36d96d6a07a49ea32e3d1b85f888a19dcaa07878f4e9",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a",
+ "digest": "a55da5866d4df133c203edf1c4db23551a08eb8a95ee257313c4d20a24aceda0"
+ }
+ },
+ "assistant": {
+ "id": "message-072a898a-e540-4db0-bf38-f1a4d5aa6c58",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "parts": [
+ {
+ "id": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "marker": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "revision": 50,
+ "replayed": false,
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "admission": {
+ "version": 1,
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "turnId": "turn-39526126-278b-4f0b-9c58-3b4483c28a0c",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:36.445Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "interactions": {
+ "kinds": "[depth-limited]",
+ "answerFieldTypes": "[depth-limited]",
+ "responseScopes": "[depth-limited]",
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "nativeContextBoundaryProof": {
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "executionId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "requestDigest": "sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27",
+ "boundary": {
+ "kind": "revision",
+ "revision": "pi:8206bc20-9cb4-4e21-9076-cdaef25ba464:2"
+ },
+ "observedAt": "2026-08-29T18:31:35.666Z"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "aff7fb801f2d0a4fe636870f58b5f692663cbfca8611bdc641632e3b0f077518",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5",
+ "digest": "7660ff3662caaca9c51c7838375600ce0c30d037a4e978072ac90e08a62f80c8"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "activeRun": {
+ "id": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "turnId": "turn-39526126-278b-4f0b-9c58-3b4483c28a0c",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:31:36.457Z",
+ "updatedAt": "2026-08-29T18:31:36.457Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "materializationDigest": "26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-pi-tangle-router-deepseek-v4-flash",
+ "revision": 67,
+ "operationId": "op-live-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "turnId": "turn-39526126-278b-4f0b-9c58-3b4483c28a0c",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:31:36.457Z",
+ "updatedAt": "2026-08-29T18:31:37.706Z",
+ "terminalAt": "2026-08-29T18:31:37.706Z",
+ "durationMs": 1249,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "environmentId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "controlRef": {
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "executionId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "requestDigest": "sha256:ba6a1c5173c479d6b4469efa3d1aafbc6422e5c172ce93f35f8c3e9235af8992"
+ },
+ "materializationDigest": "26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5",
+ "cursor": "5",
+ "cursorCommittedSequence": 65,
+ "contentBytes": 14
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": true,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "provider": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "semanticAssertions": {
+ "cancel": "verified",
+ "interaction": "reported-unavailable"
+ },
+ "targetProof": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "materializationDigest": "a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a"
+ },
+ "runIds": [
+ "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ ],
+ "finalState": {
+ "version": 1,
+ "type": "state",
+ "requestId": "final-state-pi-tangle-router-deepseek-v4-flash",
+ "revision": 69,
+ "projection": "full",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 69,
+ "sequence": 69,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-29T18:31:36.457Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "runConfiguration": {
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "connectionId": "connection-live-cli-bridge",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-58a5a576-6b08-407e-ba21-248f7d9e9aad",
+ "role": "user",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "parts": [
+ {
+ "id": "part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad",
+ "kind": "text",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK"
+ }
+ ]
+ },
+ {
+ "id": "message-072a898a-e540-4db0-bf38-f1a4d5aa6c58",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "parts": [
+ {
+ "id": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:final"
+ }
+ ]
+ },
+ {
+ "id": "message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd",
+ "role": "user",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "status": "complete",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "parts": [
+ {
+ "id": "part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd",
+ "kind": "text",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ ]
+ },
+ {
+ "id": "message-73da876d-7b95-49e4-8e7a-8be8c74988e5",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "parts": []
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "turnId": "turn-4a95ae49-bcee-49cd-b5af-4501dbd51060",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:31.439Z",
+ "updatedAt": "2026-08-29T18:31:35.734Z",
+ "terminalAt": "2026-08-29T18:31:35.734Z",
+ "durationMs": 4295,
+ "inputTokens": 1011,
+ "outputTokens": 25,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 0,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "environmentId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "controlRef": {
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "executionId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "requestDigest": "sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27"
+ },
+ "materializationDigest": "a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a",
+ "cursor": "37",
+ "cursorCommittedSequence": 48,
+ "contentBytes": 163
+ },
+ {
+ "id": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "turnId": "turn-39526126-278b-4f0b-9c58-3b4483c28a0c",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:31:36.457Z",
+ "updatedAt": "2026-08-29T18:31:37.706Z",
+ "terminalAt": "2026-08-29T18:31:37.706Z",
+ "durationMs": 1249,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "environmentId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "controlRef": {
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "executionId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "requestDigest": "sha256:ba6a1c5173c479d6b4469efa3d1aafbc6422e5c172ce93f35f8c3e9235af8992"
+ },
+ "materializationDigest": "26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5",
+ "cursor": "5",
+ "cursorCommittedSequence": 65,
+ "contentBytes": 14
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 2,
+ "input": 1011,
+ "output": 25,
+ "reasoning": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 2,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 2,
+ "unknownLatencySources": 2
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:31:31.038Z",
+ "updatedAt": "2026-08-29T18:31:37.592Z"
+ }
+ ],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": null,
+ "focusedRunId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "activeRuns": [],
+ "lastError": null
+ },
+ "view": {
+ "revision": 69,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "Live local CLI Bridge",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-29T18:31:36.457Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "cancelled",
+ "statusText": "cancelled",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-58a5a576-6b08-407e-ba21-248f7d9e9aad",
+ "role": "user",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "parts": [
+ {
+ "id": "part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad",
+ "kind": "text",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK"
+ }
+ ]
+ },
+ {
+ "id": "message-072a898a-e540-4db0-bf38-f1a4d5aa6c58",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "parts": [
+ {
+ "id": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:final"
+ }
+ ]
+ },
+ {
+ "id": "message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd",
+ "role": "user",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "status": "complete",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "parts": [
+ {
+ "id": "part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd",
+ "kind": "text",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ ]
+ },
+ {
+ "id": "message-73da876d-7b95-49e4-8e7a-8be8c74988e5",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "parts": []
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "turnId": "turn-4a95ae49-bcee-49cd-b5af-4501dbd51060",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "effort": "none",
+ "cursor": "37",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "usage": {
+ "input": 1011,
+ "output": 25,
+ "reasoning": 0,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "elapsedMs": 4295
+ },
+ "runner": "pi",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "completeness": "complete",
+ "contentBytes": 163
+ },
+ {
+ "id": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "turnId": "turn-39526126-278b-4f0b-9c58-3b4483c28a0c",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "cancelled",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "cursor": "5",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "requestedSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "elapsedMs": 1249
+ },
+ "runner": "pi",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "completeness": "complete",
+ "contentBytes": 14
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 2,
+ "input": 1011,
+ "output": 25,
+ "reasoning": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 2,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 2,
+ "unknownLatencySources": 2
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:31:31.038Z",
+ "updatedAt": "2026-08-29T18:31:37.592Z"
+ }
+ ],
+ "focusedRunId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "kind": "run",
+ "title": "run run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "status": "completed",
+ "elapsedMs": 4295,
+ "startedAt": "2026-08-29T18:31:31.439Z",
+ "occurredAt": "2026-08-29T18:31:31.439Z",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "completed",
+ "detail": "profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "completed",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "completed",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "completed",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:running",
+ "kind": "system",
+ "title": "running",
+ "status": "completed",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:4",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 5",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:4",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:5",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 6",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:5",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:6",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 7",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:6",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:33",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 34",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:33",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:34",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 35",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:34",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:35",
+ "kind": "system",
+ "title": "event model-processing",
+ "status": "completed",
+ "detail": "sequence 36",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:35",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:36",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 37",
+ "occurredAt": "2026-08-29T18:31:35.734Z",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:36",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "run",
+ "entityId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ },
+ {
+ "id": "run:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "kind": "run",
+ "title": "run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "status": "cancelled",
+ "elapsedMs": 1249,
+ "startedAt": "2026-08-29T18:31:36.457Z",
+ "occurredAt": "2026-08-29T18:31:36.457Z",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ },
+ {
+ "id": "environment:environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "kind": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "detail": "local-process · local · explicit",
+ "startedAt": "2026-08-29T18:31:31.038Z",
+ "occurredAt": "2026-08-29T18:31:37.592Z",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "entityType": "environment",
+ "entityId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae"
+ },
+ {
+ "id": "activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "cancelled",
+ "detail": "profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "occurredAt": "2026-08-29T18:31:37.706Z",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ },
+ {
+ "id": "activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:control:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "live packed smoke cancellation",
+ "occurredAt": "2026-08-29T18:31:37.706Z",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ },
+ {
+ "id": "activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T18:31:37.706Z",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ },
+ {
+ "id": "activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T18:31:37.706Z",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ },
+ {
+ "id": "activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T18:31:37.706Z",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ },
+ {
+ "id": "activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:lifecycle:local:reconnecting",
+ "kind": "system",
+ "title": "reconnecting",
+ "status": "cancelled",
+ "detail": "5",
+ "occurredAt": "2026-08-29T18:31:37.706Z",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ },
+ {
+ "id": "activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:control.ack:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "accepted",
+ "occurredAt": "2026-08-29T18:31:37.706Z",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ },
+ {
+ "id": "event:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:4",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 5",
+ "occurredAt": "2026-08-29T18:31:37.706Z",
+ "sourceEventId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:4",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ },
+ {
+ "id": "event:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:5",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 6",
+ "occurredAt": "2026-08-29T18:31:37.706Z",
+ "sourceEventId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:5",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "entityType": "run",
+ "entityId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-29T18:31:30.533Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-29T18:31:30.533Z"
+ },
+ {
+ "id": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "type": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "depth": 4,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "run:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "run:run-f8735ad8-12bc-4549-888d-a745a2dadf41"
+ ],
+ "runner": "cli-bridge",
+ "startedAt": "2026-08-29T18:31:31.038Z"
+ },
+ {
+ "id": "turn-4a95ae49-bcee-49cd-b5af-4501dbd51060",
+ "type": "turn",
+ "title": "Turn",
+ "status": "complete",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:31:31.439Z"
+ },
+ {
+ "id": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "type": "run",
+ "title": "Run",
+ "status": "completed",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-4a95ae49-bcee-49cd-b5af-4501dbd51060"
+ ],
+ "runner": "pi",
+ "elapsedMs": 4295,
+ "startedAt": "2026-08-29T18:31:31.439Z"
+ },
+ {
+ "id": "turn-39526126-278b-4f0b-9c58-3b4483c28a0c",
+ "type": "turn",
+ "title": "Turn",
+ "status": "cancelled",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:31:36.457Z"
+ },
+ {
+ "id": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "type": "run",
+ "title": "Run",
+ "status": "cancelled",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-39526126-278b-4f0b-9c58-3b4483c28a0c"
+ ],
+ "runner": "pi",
+ "elapsedMs": 1249,
+ "startedAt": "2026-08-29T18:31:36.457Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "environment",
+ "entityId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "title": "cli-bridge execution",
+ "status": "ready",
+ "lines": [
+ "provider: cli-bridge",
+ "execution: local-process · local",
+ "provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "connection: connection-live-cli-bridge",
+ "lifecycle: ready · retained · cleanup explicit",
+ "continuity: session",
+ "runtime endpoint host: 127.0.0.1",
+ "placement: requested not specified · verified unavailable",
+ "machine: unavailable · physical IP is not exposed",
+ "created: 2026-08-29T18:31:31.038Z",
+ "observed: 2026-08-29T18:31:37.592Z",
+ "unavailable: cli-subscription-and-quota:not-exposed-by-provider",
+ "unavailable: effective-resources:not-exposed-by-provider",
+ "unavailable: machine-specs:not-exposed-by-provider",
+ "unavailable: runtime-cpu-memory-usage:not-exposed-by-provider"
+ ]
+ }
+ ],
+ "details": {
+ "title": "run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "fields": [
+ {
+ "label": "status",
+ "value": "aborted"
+ },
+ {
+ "label": "input tokens",
+ "value": "0"
+ },
+ {
+ "label": "output tokens",
+ "value": "0"
+ },
+ {
+ "label": "model",
+ "value": "deepseek-v4-flash"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.recipe": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "none",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ }
+ },
+ "shutdown": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "shutdown-pi-tangle-router-deepseek-v4-flash",
+ "revision": 69,
+ "operationId": "op-live-shutdown-pi-tangle-router-deepseek-v4-flash",
+ "command": "shutdown"
+ },
+ "operationEvidence": {
+ "normal": {
+ "status": "completed",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "run": {
+ "id": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "turnId": "turn-4a95ae49-bcee-49cd-b5af-4501dbd51060",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:31.439Z",
+ "updatedAt": "2026-08-29T18:31:35.734Z",
+ "terminalAt": "2026-08-29T18:31:35.734Z",
+ "durationMs": 4295,
+ "inputTokens": 1011,
+ "outputTokens": 25,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 0,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "environmentId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "controlRef": {
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "executionId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "requestDigest": "sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27"
+ },
+ "materializationDigest": "a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a",
+ "cursor": "37",
+ "cursorCommittedSequence": 48,
+ "contentBytes": 163,
+ "receipt": {
+ "version": 1,
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "turnId": "turn-4a95ae49-bcee-49cd-b5af-4501dbd51060",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:31.413Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "nativeContinuation": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "interactions": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "ee0eabc709467fe6b53f36d96d6a07a49ea32e3d1b85f888a19dcaa07878f4e9",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a",
+ "digest": "a55da5866d4df133c203edf1c4db23551a08eb8a95ee257313c4d20a24aceda0"
+ }
+ },
+ "assistant": {
+ "id": "message-072a898a-e540-4db0-bf38-f1a4d5aa6c58",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "parts": [
+ {
+ "id": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "marker": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "revision": 50,
+ "replayed": false,
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "admission": {
+ "version": 1,
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "turnId": "turn-39526126-278b-4f0b-9c58-3b4483c28a0c",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:36.445Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "nativeContinuation": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "interactions": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "nativeContextBoundaryProof": {
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "executionId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "requestDigest": "sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27",
+ "boundary": {
+ "kind": "revision",
+ "revision": "pi:8206bc20-9cb4-4e21-9076-cdaef25ba464:2"
+ },
+ "observedAt": "2026-08-29T18:31:35.666Z"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "aff7fb801f2d0a4fe636870f58b5f692663cbfca8611bdc641632e3b0f077518",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5",
+ "digest": "7660ff3662caaca9c51c7838375600ce0c30d037a4e978072ac90e08a62f80c8"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "activeRun": {
+ "id": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "turnId": "turn-39526126-278b-4f0b-9c58-3b4483c28a0c",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:31:36.457Z",
+ "updatedAt": "2026-08-29T18:31:36.457Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "materializationDigest": "26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-pi-tangle-router-deepseek-v4-flash",
+ "revision": 67,
+ "operationId": "op-live-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "turnId": "turn-39526126-278b-4f0b-9c58-3b4483c28a0c",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:31:36.457Z",
+ "updatedAt": "2026-08-29T18:31:37.706Z",
+ "terminalAt": "2026-08-29T18:31:37.706Z",
+ "durationMs": 1249,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "environmentId": "environment-ec4e3b764feeaec1ea17a6f64c74e4ae",
+ "controlRef": {
+ "runId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ",
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "executionId": "run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef",
+ "requestDigest": "sha256:ba6a1c5173c479d6b4469efa3d1aafbc6422e5c172ce93f35f8c3e9235af8992"
+ },
+ "materializationDigest": "26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5",
+ "cursor": "5",
+ "cursorCommittedSequence": 65,
+ "contentBytes": 14
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": true,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "provider": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "targetProof": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "materializationDigest": "a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a"
+ }
+ },
+ "operationReceipt": {
+ "operation": "cli-bridge.target-smoke",
+ "packed": true,
+ "runId": "run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "status": "passed"
+ },
+ "status": "passed",
+ "stderr": "",
+ "stdout": "{\"version\":1,\"type\":\"ack\",\"requestId\":\"init-pi-tangle-router-deepseek-v4-flash\",\"revision\":4,\"command\":\"initialize\"}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"init-pi-tangle-router-deepseek-v4-flash\",\"revision\":4,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":4,\"sequence\":4,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:30.533Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[],\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":null,\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":4,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:30.533Z\"}],\"branch\":\"branch-1\",\"status\":\"empty\",\"statusText\":\"ready for a message\",\"queueCount\":0,\"queue\":[],\"messages\":[],\"hiddenMessageCount\":0,\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"activity\":[],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:30.533Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"send-pi-tangle-router-deepseek-v4-flash\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":4,\"replayed\":false,\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"admission\":{\"version\":1,\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:31.413Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"model\":\"deepseek-v4-flash\",\"route\":\"pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"providerRunId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"ee0eabc709467fe6b53f36d96d6a07a49ea32e3d1b85f888a19dcaa07878f4e9\",\"capabilitiesDigest\":\"87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626\",\"materializationDigest\":\"a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a\",\"digest\":\"a55da5866d4df133c203edf1c4db23551a08eb8a95ee257313c4d20a24aceda0\"},\"command\":\"send\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":5,\"revision\":5,\"event\":{\"sequence\":5,\"revision\":5,\"kind\":\"draft.changed\",\"payload\":{\"value\":{\"kind\":\"draft.changed\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":6,\"revision\":6,\"event\":{\"sequence\":6,\"revision\":6,\"kind\":\"run.requested\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"admission\":{\"version\":1,\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:31.413Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"model\":\"deepseek-v4-flash\",\"route\":\"pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"providerRunId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"ee0eabc709467fe6b53f36d96d6a07a49ea32e3d1b85f888a19dcaa07878f4e9\",\"capabilitiesDigest\":\"87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626\",\"materializationDigest\":\"a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a\",\"digest\":\"a55da5866d4df133c203edf1c4db23551a08eb8a95ee257313c4d20a24aceda0\"},\"status\":\"admitted\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":7,\"revision\":7,\"event\":{\"sequence\":7,\"revision\":7,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-send-pi-tangle-router-deepseek-v4-flash-1a11cbfb13924e90e84cb4af\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"1a11cbfb13924e90e84cb4afd42dd819da878cfc3853665f73f7ee559a17e91d\",\"kind\":\"send\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T18:31:31.466Z\",\"updatedAt\":\"2026-08-29T18:31:31.466Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":8,\"revision\":8,\"event\":{\"sequence\":8,\"revision\":8,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"admission\":{\"phase\":\"intent\",\"provider\":\"cli-bridge\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"runId\":\"retained-intent-run:182958cd437931dd9419a57ae038713326cf6b3b573de7321220eeb5f397efd3\",\"requestedProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requestDigest\":\"sha256:182958cd437931dd9419a57ae038713326cf6b3b573de7321220eeb5f397efd3\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"send-pi-tangle-router-deepseek-v4-flash\",\"revision\":6,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":6,\"sequence\":6,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:31.439Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[]}],\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"updatedAt\":\"2026-08-29T18:31:31.439Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"materializationDigest\":\"a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"focusedRunId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"activeRuns\":[{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":6,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:31.439Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"running\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\"},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"activeRunId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"focusedRunId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"kind\":\"run\",\"title\":\"run run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"running\",\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"occurredAt\":\"2026-08-29T18:31:31.439Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:31.439Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\"],\"runner\":\"pi\",\"startedAt\":\"2026-08-29T18:31:31.439Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"details\":{\"title\":\"run run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect while another run is active\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile while another run is active\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":9,\"revision\":9,\"event\":{\"sequence\":9,\"revision\":9,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"admission\":{\"phase\":\"environment\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":10,\"revision\":10,\"event\":{\"sequence\":10,\"revision\":10,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"admission\":{\"phase\":\"dispatched\",\"controlRef\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestDigest\":\"sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27\"},\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":11,\"revision\":11,\"event\":{\"sequence\":11,\"revision\":11,\"kind\":\"run.environment.observed\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:33.289Z\"},\"value\":{\"kind\":\"run.environment.observed\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"observation\":{\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"unavailable\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"observedAt\":\"2026-08-29T18:31:33.289Z\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\"},\"controlRef\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestDigest\":\"sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27\"},\"provider\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:33.289Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":12,\"revision\":12,\"event\":{\"sequence\":12,\"revision\":12,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T18:31:33.308Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T18:31:33.308Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":13,\"revision\":13,\"event\":{\"sequence\":13,\"revision\":13,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T18:31:33.659Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T18:31:33.659Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":14,\"revision\":14,\"event\":{\"sequence\":14,\"revision\":14,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T18:31:33.669Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"streaming\",\"provider\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T18:31:33.669Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":15,\"revision\":15,\"event\":{\"sequence\":15,\"revision\":15,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"providerSequence\":5,\"cursor\":\"4\",\"receivedAt\":\"2026-08-29T18:31:33.679Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":16,\"revision\":16,\"event\":{\"sequence\":16,\"revision\":16,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"providerSequence\":6,\"cursor\":\"5\",\"receivedAt\":\"2026-08-29T18:31:33.689Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":17,\"revision\":17,\"event\":{\"sequence\":17,\"revision\":17,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"providerSequence\":7,\"cursor\":\"6\",\"receivedAt\":\"2026-08-29T18:31:34.920Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":18,\"revision\":18,\"event\":{\"sequence\":18,\"revision\":18,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:7\",\"providerSequence\":8,\"cursor\":\"7\",\"receivedAt\":\"2026-08-29T18:31:35.134Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:7\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":19,\"revision\":19,\"event\":{\"sequence\":19,\"revision\":19,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:8\",\"providerSequence\":9,\"cursor\":\"8\",\"receivedAt\":\"2026-08-29T18:31:35.143Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"L\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:8\"},\"delta\":\"L\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":20,\"revision\":20,\"event\":{\"sequence\":20,\"revision\":20,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:9\",\"providerSequence\":10,\"cursor\":\"9\",\"receivedAt\":\"2026-08-29T18:31:35.155Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:9\"},\"delta\":\"IVE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":21,\"revision\":21,\"event\":{\"sequence\":21,\"revision\":21,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:10\",\"providerSequence\":11,\"cursor\":\"10\",\"receivedAt\":\"2026-08-29T18:31:35.166Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_B\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:10\"},\"delta\":\"_\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":22,\"revision\":22,\"event\":{\"sequence\":22,\"revision\":22,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:11\",\"providerSequence\":12,\"cursor\":\"11\",\"receivedAt\":\"2026-08-29T18:31:35.176Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRA\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:11\"},\"delta\":\"BR\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":23,\"revision\":23,\"event\":{\"sequence\":23,\"revision\":23,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:12\",\"providerSequence\":13,\"cursor\":\"12\",\"receivedAt\":\"2026-08-29T18:31:35.188Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:12\"},\"delta\":\"AID\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":24,\"revision\":24,\"event\":{\"sequence\":24,\"revision\":24,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:13\",\"providerSequence\":14,\"cursor\":\"13\",\"receivedAt\":\"2026-08-29T18:31:35.199Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_P\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:13\"},\"delta\":\"_\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":25,\"revision\":25,\"event\":{\"sequence\":25,\"revision\":25,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:14\",\"providerSequence\":15,\"cursor\":\"14\",\"receivedAt\":\"2026-08-29T18:31:35.207Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:14\"},\"delta\":\"PI\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":26,\"revision\":26,\"event\":{\"sequence\":26,\"revision\":26,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:15\",\"providerSequence\":16,\"cursor\":\"15\",\"receivedAt\":\"2026-08-29T18:31:35.219Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-T\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:15\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":27,\"revision\":27,\"event\":{\"sequence\":27,\"revision\":27,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:16\",\"providerSequence\":17,\"cursor\":\"16\",\"receivedAt\":\"2026-08-29T18:31:35.230Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANG\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:16\"},\"delta\":\"TANG\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":28,\"revision\":28,\"event\":{\"sequence\":28,\"revision\":28,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:17\",\"providerSequence\":18,\"cursor\":\"17\",\"receivedAt\":\"2026-08-29T18:31:35.238Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:17\"},\"delta\":\"LE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":29,\"revision\":29,\"event\":{\"sequence\":29,\"revision\":29,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:18\",\"providerSequence\":19,\"cursor\":\"18\",\"receivedAt\":\"2026-08-29T18:31:35.248Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:18\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":30,\"revision\":30,\"event\":{\"sequence\":30,\"revision\":30,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:19\",\"providerSequence\":20,\"cursor\":\"19\",\"receivedAt\":\"2026-08-29T18:31:35.257Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-RO\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:19\"},\"delta\":\"RO\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":31,\"revision\":31,\"event\":{\"sequence\":31,\"revision\":31,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:20\",\"providerSequence\":21,\"cursor\":\"20\",\"receivedAt\":\"2026-08-29T18:31:35.264Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUT\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:20\"},\"delta\":\"U\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":32,\"revision\":32,\"event\":{\"sequence\":32,\"revision\":32,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:21\",\"providerSequence\":22,\"cursor\":\"21\",\"receivedAt\":\"2026-08-29T18:31:35.276Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:21\"},\"delta\":\"TER\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":33,\"revision\":33,\"event\":{\"sequence\":33,\"revision\":33,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:22\",\"providerSequence\":23,\"cursor\":\"22\",\"receivedAt\":\"2026-08-29T18:31:35.282Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-D\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:22\"},\"delta\":\"-D\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":34,\"revision\":34,\"event\":{\"sequence\":34,\"revision\":34,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:23\",\"providerSequence\":24,\"cursor\":\"23\",\"receivedAt\":\"2026-08-29T18:31:35.289Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEP\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:23\"},\"delta\":\"EE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":35,\"revision\":35,\"event\":{\"sequence\":35,\"revision\":35,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:24\",\"providerSequence\":25,\"cursor\":\"24\",\"receivedAt\":\"2026-08-29T18:31:35.297Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEE\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:24\"},\"delta\":\"PSEE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":36,\"revision\":36,\"event\":{\"sequence\":36,\"revision\":36,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:25\",\"providerSequence\":26,\"cursor\":\"25\",\"receivedAt\":\"2026-08-29T18:31:35.305Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:25\"},\"delta\":\"\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":37,\"revision\":37,\"event\":{\"sequence\":37,\"revision\":37,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:26\",\"providerSequence\":27,\"cursor\":\"26\",\"receivedAt\":\"2026-08-29T18:31:35.312Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:26\"},\"delta\":\"K-V\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":38,\"revision\":38,\"event\":{\"sequence\":38,\"revision\":38,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:27\",\"providerSequence\":28,\"cursor\":\"27\",\"receivedAt\":\"2026-08-29T18:31:35.322Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:27\"},\"delta\":\"4\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":39,\"revision\":39,\"event\":{\"sequence\":39,\"revision\":39,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:28\",\"providerSequence\":29,\"cursor\":\"28\",\"receivedAt\":\"2026-08-29T18:31:35.330Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-F\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:28\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":40,\"revision\":40,\"event\":{\"sequence\":40,\"revision\":40,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:29\",\"providerSequence\":30,\"cursor\":\"29\",\"receivedAt\":\"2026-08-29T18:31:35.337Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FL\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:29\"},\"delta\":\"FL\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":41,\"revision\":41,\"event\":{\"sequence\":41,\"revision\":41,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:30\",\"providerSequence\":31,\"cursor\":\"30\",\"receivedAt\":\"2026-08-29T18:31:35.345Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:30\"},\"delta\":\"AS\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":42,\"revision\":42,\"event\":{\"sequence\":42,\"revision\":42,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:31\",\"providerSequence\":32,\"cursor\":\"31\",\"receivedAt\":\"2026-08-29T18:31:35.352Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:31\"},\"delta\":\"H_O\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":43,\"revision\":43,\"event\":{\"sequence\":43,\"revision\":43,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:32\",\"providerSequence\":33,\"cursor\":\"32\",\"receivedAt\":\"2026-08-29T18:31:35.667Z\"},\"part\":{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:32\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":44,\"revision\":44,\"event\":{\"sequence\":44,\"revision\":44,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"providerSequence\":34,\"cursor\":\"33\",\"receivedAt\":\"2026-08-29T18:31:35.677Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":45,\"revision\":45,\"event\":{\"sequence\":45,\"revision\":45,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"providerSequence\":35,\"cursor\":\"34\",\"receivedAt\":\"2026-08-29T18:31:35.686Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":46,\"revision\":46,\"event\":{\"sequence\":46,\"revision\":46,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"providerSequence\":36,\"cursor\":\"35\",\"receivedAt\":\"2026-08-29T18:31:35.694Z\"},\"unknown\":{\"type\":\"model-processing\",\"phase\":\"generating\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":47,\"revision\":47,\"event\":{\"sequence\":47,\"revision\":47,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"providerSequence\":37,\"cursor\":\"36\",\"receivedAt\":\"2026-08-29T18:31:35.702Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":48,\"revision\":48,\"event\":{\"sequence\":48,\"revision\":48,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:37\",\"providerSequence\":38,\"cursor\":\"37\",\"receivedAt\":\"2026-08-29T18:31:35.712Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"running\",\"provider\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:37\",\"providerSequence\":38,\"cursor\":\"37\",\"receivedAt\":\"2026-08-29T18:31:35.712Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":49,\"revision\":49,\"event\":{\"sequence\":49,\"revision\":49,\"kind\":\"run.finished\",\"payload\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"source\":{\"eventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\",\"providerSequence\":39,\"receivedAt\":\"2026-08-29T18:31:35.733Z\"},\"status\":\"completed\",\"completeness\":\"complete\",\"finalText\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"usage\":{\"input\":1011,\"output\":25,\"reasoning\":0,\"usdKnown\":false,\"model\":\"pi/tangle-router/deepseek-v4-flash\"},\"reason\":\"RUNTIME_FINAL_REASON\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":50,\"revision\":50,\"event\":{\"sequence\":50,\"revision\":50,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-send-pi-tangle-router-deepseek-v4-flash-1a11cbfb13924e90e84cb4af\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"1a11cbfb13924e90e84cb4afd42dd819da878cfc3853665f73f7ee559a17e91d\",\"kind\":\"send\",\"status\":\"terminal\",\"attempt\":1,\"outcomeDigest\":\"b82069d6893c46ce5ac5dc805ef96d7f3999afb6c6ecd8ec2e4332ec92d0b067\",\"createdAt\":\"2026-08-29T18:31:31.466Z\",\"updatedAt\":\"2026-08-29T18:31:35.759Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"send-pi-tangle-router-deepseek-v4-flash\",\"revision\":50,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":50,\"sequence\":50,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:31.439Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]}],\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"updatedAt\":\"2026-08-29T18:31:35.734Z\",\"terminalAt\":\"2026-08-29T18:31:35.734Z\",\"durationMs\":4295,\"inputTokens\":1011,\"outputTokens\":25,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":0,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"controlRef\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestDigest\":\"sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27\"},\"materializationDigest\":\"a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a\",\"cursor\":\"37\",\"cursorCommittedSequence\":48,\"contentBytes\":163}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:33.289Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":50,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:31.439Z\"}],\"branch\":\"branch-1\",\"status\":\"completed\",\"statusText\":\"completed\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"37\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":4295},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"completeness\":\"complete\",\"contentBytes\":163}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:33.289Z\"}],\"focusedRunId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"kind\":\"run\",\"title\":\"run run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"completed\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"occurredAt\":\"2026-08-29T18:31:31.439Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"environment:environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:31.038Z\",\"occurredAt\":\"2026-08-29T18:31:33.289Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 34\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 35\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 36\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 37\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:31.038Z\"},{\"id\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\"],\"runner\":\"pi\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:31.038Z\",\"observed: 2026-08-29T18:31:33.289Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"fields\":[{\"label\":\"status\",\"value\":\"completed\"},{\"label\":\"input tokens\",\"value\":\"1011\"},{\"label\":\"output tokens\",\"value\":\"25\"},{\"label\":\"token measurement\",\"value\":\"complete\"},{\"label\":\"model\",\"value\":\"pi/tangle-router/deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"cancel-send-pi-tangle-router-deepseek-v4-flash\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":50,\"replayed\":false,\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"admission\":{\"version\":1,\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:36.445Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"model\":\"deepseek-v4-flash\",\"route\":\"pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"providerRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"retainedControl\":\"exact-after-dispatch\"},\"nativeContextBoundaryProof\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestDigest\":\"sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27\",\"boundary\":{\"kind\":\"revision\",\"revision\":\"pi:8206bc20-9cb4-4e21-9076-cdaef25ba464:2\"},\"observedAt\":\"2026-08-29T18:31:35.666Z\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"aff7fb801f2d0a4fe636870f58b5f692663cbfca8611bdc641632e3b0f077518\",\"capabilitiesDigest\":\"87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626\",\"materializationDigest\":\"26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5\",\"digest\":\"7660ff3662caaca9c51c7838375600ce0c30d037a4e978072ac90e08a62f80c8\"},\"command\":\"send\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":51,\"revision\":51,\"event\":{\"sequence\":51,\"revision\":51,\"kind\":\"draft.changed\",\"payload\":{\"value\":{\"kind\":\"draft.changed\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":52,\"revision\":52,\"event\":{\"sequence\":52,\"revision\":52,\"kind\":\"run.requested\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"admission\":{\"version\":1,\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:36.445Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"model\":\"deepseek-v4-flash\",\"route\":\"pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"providerRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"retainedControl\":\"exact-after-dispatch\"},\"nativeContextBoundaryProof\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestDigest\":\"sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27\",\"boundary\":{\"kind\":\"revision\",\"revision\":\"pi:8206bc20-9cb4-4e21-9076-cdaef25ba464:2\"},\"observedAt\":\"2026-08-29T18:31:35.666Z\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"aff7fb801f2d0a4fe636870f58b5f692663cbfca8611bdc641632e3b0f077518\",\"capabilitiesDigest\":\"87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626\",\"materializationDigest\":\"26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5\",\"digest\":\"7660ff3662caaca9c51c7838375600ce0c30d037a4e978072ac90e08a62f80c8\"},\"status\":\"admitted\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":53,\"revision\":53,\"event\":{\"sequence\":53,\"revision\":53,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-send-pi-tangle-router-deepseek-v4-flash-668bff6cf721b2f8b8222cc8\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"668bff6cf721b2f8b8222cc8fc1cf80ddf6662a694d477905175bd7ec3e235af\",\"kind\":\"send\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T18:31:36.468Z\",\"updatedAt\":\"2026-08-29T18:31:36.468Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":54,\"revision\":54,\"event\":{\"sequence\":54,\"revision\":54,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"admission\":{\"phase\":\"intent\",\"provider\":\"cli-bridge\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"runId\":\"retained-intent-run:097efadc470e115dfbae903c73eb3bd1dcf6f10c03615dde9bfad1b5dfaa5bad\",\"requestedProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requestDigest\":\"sha256:097efadc470e115dfbae903c73eb3bd1dcf6f10c03615dde9bfad1b5dfaa5bad\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":52,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":52,\"sequence\":52,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:36.457Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]},{\"id\":\"message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[{\"id\":\"part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-73da876d-7b95-49e4-8e7a-8be8c74988e5\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[]}],\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"updatedAt\":\"2026-08-29T18:31:35.734Z\",\"terminalAt\":\"2026-08-29T18:31:35.734Z\",\"durationMs\":4295,\"inputTokens\":1011,\"outputTokens\":25,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":0,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"controlRef\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestDigest\":\"sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27\"},\"materializationDigest\":\"a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a\",\"cursor\":\"37\",\"cursorCommittedSequence\":48,\"contentBytes\":163},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T18:31:36.457Z\",\"updatedAt\":\"2026-08-29T18:31:36.457Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"materializationDigest\":\"26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:33.289Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"focusedRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"activeRuns\":[{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":52,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:36.457Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]},{\"id\":\"message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[{\"id\":\"part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-73da876d-7b95-49e4-8e7a-8be8c74988e5\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"37\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":4295},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"completeness\":\"complete\",\"contentBytes\":163},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"running\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\"},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:33.289Z\"}],\"activeRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"focusedRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"kind\":\"run\",\"title\":\"run run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"completed\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"occurredAt\":\"2026-08-29T18:31:31.439Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"environment:environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:31.038Z\",\"occurredAt\":\"2026-08-29T18:31:33.289Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 34\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 35\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 36\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 37\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"run:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"kind\":\"run\",\"title\":\"run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"status\":\"running\",\"startedAt\":\"2026-08-29T18:31:36.457Z\",\"occurredAt\":\"2026-08-29T18:31:36.457Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:36.457Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:31.038Z\"},{\"id\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\"],\"runner\":\"pi\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:36.457Z\"},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-39526126-278b-4f0b-9c58-3b4483c28a0c\"],\"runner\":\"pi\",\"startedAt\":\"2026-08-29T18:31:36.457Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:31.038Z\",\"observed: 2026-08-29T18:31:33.289Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect while another run is active\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile while another run is active\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"cancel-pi-tangle-router-deepseek-v4-flash\",\"revision\":67,\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"command\":\"cancel_run\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"control\":\"cancel\",\"outcome\":\"accepted\",\"replayed\":false}\n{\"version\":1,\"type\":\"event\",\"sequence\":55,\"revision\":55,\"event\":{\"sequence\":55,\"revision\":55,\"kind\":\"run.control.requested\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"control\":{\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live packed smoke cancellation\",\"text\":\"[unavailable]\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":56,\"revision\":56,\"event\":{\"sequence\":56,\"revision\":56,\"kind\":\"run.cancel.requested\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"control\":{\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live packed smoke cancellation\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":57,\"revision\":57,\"event\":{\"sequence\":57,\"revision\":57,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-pi-tangle-router-deepseek-v4-flash-4dc274e520211d459efe3cbf\",\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"4dc274e520211d459efe3cbf4bed1eae46f78f5848b8dfa8eb3260cd5e5c7eb8\",\"kind\":\"custom\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T18:31:36.551Z\",\"updatedAt\":\"2026-08-29T18:31:36.551Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":58,\"revision\":58,\"event\":{\"sequence\":58,\"revision\":58,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"admission\":{\"phase\":\"environment\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":59,\"revision\":59,\"event\":{\"sequence\":59,\"revision\":59,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"admission\":{\"phase\":\"dispatched\",\"controlRef\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"requestDigest\":\"sha256:ba6a1c5173c479d6b4469efa3d1aafbc6422e5c172ce93f35f8c3e9235af8992\"},\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":60,\"revision\":60,\"event\":{\"sequence\":60,\"revision\":60,\"kind\":\"run.environment.observed\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"source\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:37.592Z\"},\"value\":{\"kind\":\"run.environment.observed\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"observation\":{\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"createdAt\":\"2026-08-29T18:31:36.105Z\",\"unavailable\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"observedAt\":\"2026-08-29T18:31:37.592Z\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\"},\"controlRef\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"requestDigest\":\"sha256:ba6a1c5173c479d6b4469efa3d1aafbc6422e5c172ce93f35f8c3e9235af8992\"},\"provider\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:37.592Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":61,\"revision\":61,\"event\":{\"sequence\":61,\"revision\":61,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"source\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T18:31:37.623Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T18:31:37.623Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":62,\"revision\":62,\"event\":{\"sequence\":62,\"revision\":62,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"source\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T18:31:37.633Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T18:31:37.633Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":63,\"revision\":63,\"event\":{\"sequence\":63,\"revision\":63,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"source\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T18:31:37.642Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"status\":\"streaming\",\"provider\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T18:31:37.642Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":64,\"revision\":64,\"event\":{\"sequence\":64,\"revision\":64,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"source\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:4\",\"providerSequence\":5,\"cursor\":\"4\",\"receivedAt\":\"2026-08-29T18:31:37.651Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":65,\"revision\":65,\"event\":{\"sequence\":65,\"revision\":65,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"source\":{\"eventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:5\",\"providerSequence\":6,\"cursor\":\"5\",\"receivedAt\":\"2026-08-29T18:31:37.659Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":66,\"revision\":66,\"event\":{\"sequence\":66,\"revision\":66,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-pi-tangle-router-deepseek-v4-flash-4dc274e520211d459efe3cbf\",\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"4dc274e520211d459efe3cbf4bed1eae46f78f5848b8dfa8eb3260cd5e5c7eb8\",\"kind\":\"custom\",\"status\":\"acknowledged\",\"attempt\":1,\"outcomeDigest\":\"f430d9c9c101fec536eed9da90bf212be94a7c138332862d1e9774b1266d9187\",\"createdAt\":\"2026-08-29T18:31:36.551Z\",\"updatedAt\":\"2026-08-29T18:31:37.674Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":67,\"revision\":67,\"event\":{\"sequence\":67,\"revision\":67,\"kind\":\"run.reconnecting\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"status\":\"reconnecting\",\"completeness\":\"streaming\",\"cursor\":\"5\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":68,\"revision\":68,\"event\":{\"sequence\":68,\"revision\":68,\"kind\":\"run.control.acknowledged\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"control\":{\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"control\":\"cancel\",\"status\":\"accepted\",\"detail\":\"CONTROL_DETAIL\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":69,\"revision\":69,\"event\":{\"sequence\":69,\"revision\":69,\"kind\":\"run.finished\",\"payload\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"status\":\"aborted\",\"completeness\":\"complete\",\"finalText\":\"\",\"usage\":{\"input\":0,\"output\":0,\"tokensKnown\":false,\"usdKnown\":false,\"model\":\"deepseek-v4-flash\"},\"reason\":\"CONTROL_DETAIL\"}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-pi-tangle-router-deepseek-v4-flash\",\"revision\":69,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":69,\"sequence\":69,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:36.457Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]},{\"id\":\"message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[{\"id\":\"part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-73da876d-7b95-49e4-8e7a-8be8c74988e5\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[]}],\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"updatedAt\":\"2026-08-29T18:31:35.734Z\",\"terminalAt\":\"2026-08-29T18:31:35.734Z\",\"durationMs\":4295,\"inputTokens\":1011,\"outputTokens\":25,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":0,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"controlRef\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestDigest\":\"sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27\"},\"materializationDigest\":\"a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a\",\"cursor\":\"37\",\"cursorCommittedSequence\":48,\"contentBytes\":163},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T18:31:36.457Z\",\"updatedAt\":\"2026-08-29T18:31:37.706Z\",\"terminalAt\":\"2026-08-29T18:31:37.706Z\",\"durationMs\":1249,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"controlRef\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"requestDigest\":\"sha256:ba6a1c5173c479d6b4469efa3d1aafbc6422e5c172ce93f35f8c3e9235af8992\"},\"materializationDigest\":\"26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5\",\"cursor\":\"5\",\"cursorCommittedSequence\":65,\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:37.592Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":69,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:36.457Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]},{\"id\":\"message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[{\"id\":\"part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-73da876d-7b95-49e4-8e7a-8be8c74988e5\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"37\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":4295},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"completeness\":\"complete\",\"contentBytes\":163},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"5\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":1249},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"completeness\":\"complete\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:37.592Z\"}],\"focusedRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"kind\":\"run\",\"title\":\"run run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"completed\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"occurredAt\":\"2026-08-29T18:31:31.439Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 34\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 35\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 36\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 37\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"run:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"kind\":\"run\",\"title\":\"run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"status\":\"cancelled\",\"elapsedMs\":1249,\"startedAt\":\"2026-08-29T18:31:36.457Z\",\"occurredAt\":\"2026-08-29T18:31:36.457Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"environment:environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:31.038Z\",\"occurredAt\":\"2026-08-29T18:31:37.592Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"5\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"event:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"sourceEventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:4\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"event:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"sourceEventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:5\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:31.038Z\"},{\"id\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\"],\"runner\":\"pi\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:36.457Z\"},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-39526126-278b-4f0b-9c58-3b4483c28a0c\"],\"runner\":\"pi\",\"elapsedMs\":1249,\"startedAt\":\"2026-08-29T18:31:36.457Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:31.038Z\",\"observed: 2026-08-29T18:31:37.592Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"final-state-pi-tangle-router-deepseek-v4-flash\",\"revision\":69,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":69,\"sequence\":69,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:36.457Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]},{\"id\":\"message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[{\"id\":\"part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-73da876d-7b95-49e4-8e7a-8be8c74988e5\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[]}],\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"updatedAt\":\"2026-08-29T18:31:35.734Z\",\"terminalAt\":\"2026-08-29T18:31:35.734Z\",\"durationMs\":4295,\"inputTokens\":1011,\"outputTokens\":25,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":0,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"controlRef\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestDigest\":\"sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27\"},\"materializationDigest\":\"a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a\",\"cursor\":\"37\",\"cursorCommittedSequence\":48,\"contentBytes\":163},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T18:31:36.457Z\",\"updatedAt\":\"2026-08-29T18:31:37.706Z\",\"terminalAt\":\"2026-08-29T18:31:37.706Z\",\"durationMs\":1249,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"controlRef\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"requestDigest\":\"sha256:ba6a1c5173c479d6b4469efa3d1aafbc6422e5c172ce93f35f8c3e9235af8992\"},\"materializationDigest\":\"26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5\",\"cursor\":\"5\",\"cursorCommittedSequence\":65,\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:37.592Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":69,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:36.457Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]},{\"id\":\"message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[{\"id\":\"part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-73da876d-7b95-49e4-8e7a-8be8c74988e5\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"37\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":4295},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"completeness\":\"complete\",\"contentBytes\":163},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"5\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":1249},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"completeness\":\"complete\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:37.592Z\"}],\"focusedRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"kind\":\"run\",\"title\":\"run run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"completed\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"occurredAt\":\"2026-08-29T18:31:31.439Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 34\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 35\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 36\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 37\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"run:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"kind\":\"run\",\"title\":\"run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"status\":\"cancelled\",\"elapsedMs\":1249,\"startedAt\":\"2026-08-29T18:31:36.457Z\",\"occurredAt\":\"2026-08-29T18:31:36.457Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"environment:environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:31.038Z\",\"occurredAt\":\"2026-08-29T18:31:37.592Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"5\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"event:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"sourceEventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:4\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"event:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"sourceEventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:5\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:31.038Z\"},{\"id\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\"],\"runner\":\"pi\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:36.457Z\"},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-39526126-278b-4f0b-9c58-3b4483c28a0c\"],\"runner\":\"pi\",\"elapsedMs\":1249,\"startedAt\":\"2026-08-29T18:31:36.457Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:31.038Z\",\"observed: 2026-08-29T18:31:37.592Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"shutdown-pi-tangle-router-deepseek-v4-flash\",\"revision\":69,\"operationId\":\"op-live-shutdown-pi-tangle-router-deepseek-v4-flash\",\"command\":\"shutdown\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":70,\"revision\":70,\"event\":{\"sequence\":70,\"revision\":70,\"kind\":\"application.shutdown.requested\",\"payload\":{\"value\":{\"kind\":\"application.shutdown.requested\",\"operationId\":\"op-live-shutdown-pi-tangle-router-deepseek-v4-flash\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":71,\"revision\":71,\"event\":{\"sequence\":71,\"revision\":71,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-send-pi-tangle-router-deepseek-v4-flash-668bff6cf721b2f8b8222cc8\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"668bff6cf721b2f8b8222cc8fc1cf80ddf6662a694d477905175bd7ec3e235af\",\"kind\":\"send\",\"status\":\"failed\",\"attempt\":1,\"outcomeDigest\":\"709050be156660bc04bed3766c3160fcc713b9a8ebb19bfd0cd66bbe285c86e9\",\"createdAt\":\"2026-08-29T18:31:36.468Z\",\"updatedAt\":\"2026-08-29T18:31:38.993Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":71,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":71,\"sequence\":71,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:36.457Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]},{\"id\":\"message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[{\"id\":\"part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-73da876d-7b95-49e4-8e7a-8be8c74988e5\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[]}],\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"updatedAt\":\"2026-08-29T18:31:35.734Z\",\"terminalAt\":\"2026-08-29T18:31:35.734Z\",\"durationMs\":4295,\"inputTokens\":1011,\"outputTokens\":25,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":0,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"controlRef\":{\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestDigest\":\"sha256:4309e7d88403e2e900208ba1c2df3afc26e2454e1256e4dc865e04a263ff4b27\"},\"materializationDigest\":\"a25723812e5b15fa8be363ab5d888b486fe55271d8f45548d4b7e14b5ef5197a\",\"cursor\":\"37\",\"cursorCommittedSequence\":48,\"contentBytes\":163},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T18:31:36.457Z\",\"updatedAt\":\"2026-08-29T18:31:37.706Z\",\"terminalAt\":\"2026-08-29T18:31:37.706Z\",\"durationMs\":1249,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"controlRef\":{\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"sessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"executionId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"requestDigest\":\"sha256:ba6a1c5173c479d6b4469efa3d1aafbc6422e5c172ce93f35f8c3e9235af8992\"},\"materializationDigest\":\"26e213aa6caebaf02c8172e2ab86fd8c8284c68f754bc7254da51865206c9fe5\",\"cursor\":\"5\",\"cursorCommittedSequence\":65,\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:37.592Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":71,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a26ae0a9-9cd2-450e-b6b3-57a38c0ace04\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:36.457Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"part-message-58a5a576-6b08-407e-ba21-248f7d9e9aad\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-072a898a-e540-4db0-bf38-f1a4d5aa6c58\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"parts\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:message:0:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:final\"}]},{\"id\":\"message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[{\"id\":\"part-message-a2fbee65-c82a-487e-8e1c-4bdc30e3e7dd\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-73da876d-7b95-49e4-8e7a-8be8c74988e5\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"turnId\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"37\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":4295},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"completeness\":\"complete\",\"contentBytes\":163},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"turnId\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"5\",\"providerSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"requestedSessionId\":\"session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":1249},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"completeness\":\"complete\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":1011,\"output\":25,\"reasoning\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:31.038Z\",\"updatedAt\":\"2026-08-29T18:31:37.592Z\"}],\"focusedRunId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"kind\":\"run\",\"title\":\"run run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"status\":\"completed\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\",\"occurredAt\":\"2026-08-29T18:31:31.439Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"activity:run-f8735ad8-12bc-4549-888d-a745a2dadf41:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:4\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:5\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:6\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 34\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:33\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 35\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:34\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 36\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:35\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"event:run-f8735ad8-12bc-4549-888d-a745a2dadf41:run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 37\",\"occurredAt\":\"2026-08-29T18:31:35.734Z\",\"sourceEventId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41:36\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"run\",\"entityId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\"},{\"id\":\"run:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"kind\":\"run\",\"title\":\"run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"status\":\"cancelled\",\"elapsedMs\":1249,\"startedAt\":\"2026-08-29T18:31:36.457Z\",\"occurredAt\":\"2026-08-29T18:31:36.457Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"environment:environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:31.038Z\",\"occurredAt\":\"2026-08-29T18:31:37.592Z\",\"runId\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"5\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"activity:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"event:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"sourceEventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:4\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"},{\"id\":\"event:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T18:31:37.706Z\",\"sourceEventId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef:5\",\"runId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"entityType\":\"run\",\"entityId\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:30.533Z\"},{\"id\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"run:run-f8735ad8-12bc-4549-888d-a745a2dadf41\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:31.038Z\"},{\"id\":\"turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"run-f8735ad8-12bc-4549-888d-a745a2dadf41\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4a95ae49-bcee-49cd-b5af-4501dbd51060\"],\"runner\":\"pi\",\"elapsedMs\":4295,\"startedAt\":\"2026-08-29T18:31:31.439Z\"},{\"id\":\"turn-39526126-278b-4f0b-9c58-3b4483c28a0c\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:36.457Z\"},{\"id\":\"run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-39526126-278b-4f0b-9c58-3b4483c28a0c\"],\"runner\":\"pi\",\"elapsedMs\":1249,\"startedAt\":\"2026-08-29T18:31:36.457Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-ec4e3b764feeaec1ea17a6f64c74e4ae\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YzI2M2QxMDg3NjkyZjM3OWVlZTFjOTkzM2I0MWI3NmE0MWFkYmI2YTAwNGZkMjM0ZTFiZWRhOWM0ODM4NWQyNyIsIlAyNmRzRk1WMWt4MXBwVjRmT3VCNGx1aUxPbzZUNVd3TEFsQmRGUnNiYnciXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:31.038Z\",\"observed: 2026-08-29T18:31:37.592Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-6cc0b10a-4d1b-4f67-91ff-5b707ef080ef\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n",
+ "process": {
+ "processIdentity": {
+ "instanceId": "8312ccfd-c934-443f-974d-16b5d85c5aea",
+ "pid": 3350386,
+ "startedAt": 1788028290048
+ },
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3350386
+ ],
+ "roots": [
+ 3350386
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "natural": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3350386
+ ],
+ "roots": [
+ 3350386
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "exit": {
+ "code": 0,
+ "signal": null
+ }
+ },
+ "providerSessionCleanup": {
+ "attempted": 1,
+ "closed": 1,
+ "alreadyAbsent": 0,
+ "released": 1,
+ "complete": true,
+ "results": [
+ {
+ "sessionId": "session-braid-run-f8735ad8-12bc-4549-888d-a745a2dadf41",
+ "status": 200,
+ "closed": true,
+ "alreadyAbsent": false,
+ "released": true
+ }
+ ]
+ }
+ },
+ {
+ "label": "Codex default",
+ "target": "codex/default",
+ "profile": {
+ "path": ".braid/profiles/profile-codex-default.json",
+ "harness": "codex",
+ "model": "default"
+ },
+ "connection": {
+ "id": "connection-live-cli-bridge",
+ "kind": "cli-bridge",
+ "endpoint": "http://127.0.0.1:3344",
+ "credentialConfigured": true
+ },
+ "providerCapabilities": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": false
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ },
+ "requests": [
+ {
+ "version": 1,
+ "requestId": "init-codex-default",
+ "command": "initialize",
+ "params": {
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe",
+ "subscribe": true
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "send-codex-default",
+ "operationId": "op-live-send-codex-default",
+ "command": "send",
+ "params": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "cancel-send-codex-default",
+ "operationId": "op-live-cancel-send-codex-default",
+ "command": "send",
+ "params": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "text": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "cancel-codex-default",
+ "operationId": "op-live-cancel-codex-default",
+ "command": "cancel_run",
+ "params": {
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "reason": "live packed smoke cancellation"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "final-state-codex-default",
+ "command": "get_state",
+ "params": {
+ "projection": "full"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "shutdown-codex-default",
+ "operationId": "op-live-shutdown-codex-default",
+ "command": "shutdown",
+ "params": {
+ "mode": "wait"
+ }
+ }
+ ],
+ "operation": "cli-bridge.target-smoke",
+ "credentialLifecycle": {
+ "configured": true,
+ "stored": true,
+ "removed": true,
+ "facility": "encrypted-headless"
+ },
+ "initialize": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "init-codex-default",
+ "revision": 4,
+ "command": "initialize"
+ },
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "initialCapabilities": {
+ "view": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "analysisAsk": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "run": {}
+ },
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "send-codex-default",
+ "operationId": "op-live-send-codex-default",
+ "revision": 4,
+ "replayed": false,
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "admission": {
+ "version": 1,
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "turnId": "turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7",
+ "operationId": "op-live-send-codex-default",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:40.334Z",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK",
+ "profile": {
+ "name": "Braid live codex/default",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "default",
+ "reasoningEffort": "none"
+ },
+ "harness": "codex"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "default",
+ "runner": "codex"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": false
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe",
+ "model": "default",
+ "route": "codex/default",
+ "runner": "codex",
+ "providerRunId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "7bfdff7fd48d40cd22a04810b00655357d2a50b295f4f8d5598c4b8de8169414",
+ "capabilitiesDigest": "7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a",
+ "materializationDigest": "b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f",
+ "digest": "4036280ea47d6ff6f7538e8a19ebaa7711e7c0e5dc5cbd6d26a9e5888cf33372"
+ },
+ "command": "send"
+ },
+ "activeCapabilities": {
+ "view": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": false,
+ "source": "application",
+ "reason": "A run is already active"
+ },
+ "run.cancel": {
+ "available": true,
+ "source": "runtime"
+ },
+ "run.queue": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report steering support"
+ },
+ "run.detach": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect while another run is active"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile while another run is active"
+ }
+ },
+ "analysisAsk": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "run": {}
+ },
+ "normal": {
+ "status": "completed",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "run": {
+ "id": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "turnId": "turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7",
+ "operationId": "op-live-send-codex-default",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:40.343Z",
+ "updatedAt": "2026-08-29T18:31:45.318Z",
+ "terminalAt": "2026-08-29T18:31:45.318Z",
+ "durationMs": 4975,
+ "inputTokens": 14611,
+ "outputTokens": 13,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "codex/default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "environmentId": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "controlRef": {
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "executionId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "requestDigest": "sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92"
+ },
+ "materializationDigest": "b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 12,
+ "contentBytes": 73,
+ "receipt": {
+ "version": 1,
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "turnId": "turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7",
+ "operationId": "op-live-send-codex-default",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:40.334Z",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK",
+ "profile": {
+ "name": "Braid live codex/default",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "default",
+ "reasoningEffort": "none"
+ },
+ "harness": "codex"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "default",
+ "runner": "codex"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe",
+ "model": "default",
+ "route": "codex/default",
+ "runner": "codex",
+ "providerRunId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "7bfdff7fd48d40cd22a04810b00655357d2a50b295f4f8d5598c4b8de8169414",
+ "capabilitiesDigest": "7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a",
+ "materializationDigest": "b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f",
+ "digest": "4036280ea47d6ff6f7538e8a19ebaa7711e7c0e5dc5cbd6d26a9e5888cf33372"
+ }
+ },
+ "assistant": {
+ "id": "message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95",
+ "role": "assistant",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "status": "complete",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "parts": [
+ {
+ "id": "op-live-send-codex-default:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "sourceEventId": "run-b587bde4-4bed-4a81-a459-06378d0649d1:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "marker": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-send-codex-default",
+ "operationId": "op-live-cancel-send-codex-default",
+ "revision": 14,
+ "replayed": false,
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "admission": {
+ "version": 1,
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "turnId": "turn-7a284784-424e-49e7-96bd-9ada0b91ad98",
+ "operationId": "op-live-cancel-send-codex-default",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:45.905Z",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "requested": {
+ "text": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live codex/default",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "default",
+ "reasoningEffort": "none"
+ },
+ "harness": "codex"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "default",
+ "runner": "codex"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe",
+ "model": "default",
+ "route": "codex/default",
+ "runner": "codex",
+ "providerRunId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "4285c54f9240543634df5864c168c184f4152bc6bce6469ad27f38f65a490c87",
+ "capabilitiesDigest": "7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a",
+ "materializationDigest": "3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4",
+ "digest": "caca568134be09f5d0b484931e1d015d75b267449f21ec889c7b8db9a11a2eb8"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "activeRun": {
+ "id": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "turnId": "turn-7a284784-424e-49e7-96bd-9ada0b91ad98",
+ "operationId": "op-live-cancel-send-codex-default",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:31:45.913Z",
+ "updatedAt": "2026-08-29T18:31:45.913Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "materializationDigest": "3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-codex-default",
+ "revision": 26,
+ "operationId": "op-live-cancel-codex-default",
+ "command": "cancel_run",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "turnId": "turn-7a284784-424e-49e7-96bd-9ada0b91ad98",
+ "operationId": "op-live-cancel-send-codex-default",
+ "status": "cancelled",
+ "startedAt": "2026-08-29T18:31:45.913Z",
+ "updatedAt": "2026-08-29T18:31:48.615Z",
+ "terminalAt": "2026-08-29T18:31:48.586Z",
+ "durationMs": 2673,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "environmentId": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "controlRef": {
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "executionId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "requestDigest": "sha256:19b06a5d8d19107753be0bf00aeebe9d73a8bb39c0aea823833ddbbc9d3fb680"
+ },
+ "materializationDigest": "3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4",
+ "cursor": "3:0",
+ "cursorCommittedSequence": 25
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": false,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "semanticAssertions": {
+ "cancel": "verified",
+ "interaction": "reported-unavailable"
+ },
+ "targetProof": {
+ "key": "codex-default",
+ "harness": "codex",
+ "model": "default",
+ "route": "codex/default",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "materializationDigest": "b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f"
+ },
+ "runIds": [
+ "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84"
+ ],
+ "finalState": {
+ "version": 1,
+ "type": "state",
+ "requestId": "final-state-codex-default",
+ "revision": 28,
+ "projection": "full",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 28,
+ "sequence": 28,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-29T18:31:45.913Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid live codex/default",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "default",
+ "reasoningEffort": "none"
+ },
+ "harness": "codex"
+ },
+ "runConfiguration": {
+ "profileName": "Braid live codex/default",
+ "runner": "codex",
+ "model": "default",
+ "effort": "none",
+ "connectionId": "connection-live-cli-bridge",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-13bba3e5-fbfb-49ef-b253-6eeea02342c8",
+ "role": "user",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK",
+ "status": "complete",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "parts": [
+ {
+ "id": "part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8",
+ "kind": "text",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK"
+ }
+ ]
+ },
+ {
+ "id": "message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95",
+ "role": "assistant",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "status": "complete",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "parts": [
+ {
+ "id": "op-live-send-codex-default:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "sourceEventId": "run-b587bde4-4bed-4a81-a459-06378d0649d1:final"
+ }
+ ]
+ },
+ {
+ "id": "message-39cd9f56-e300-416f-8e1a-a15e2951db5c",
+ "role": "user",
+ "text": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "status": "complete",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "parts": [
+ {
+ "id": "part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c",
+ "kind": "text",
+ "text": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ ]
+ },
+ {
+ "id": "message-18abac99-6c0b-43a2-85ce-8bc7938de902",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "parts": []
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "turnId": "turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7",
+ "operationId": "op-live-send-codex-default",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:40.343Z",
+ "updatedAt": "2026-08-29T18:31:45.318Z",
+ "terminalAt": "2026-08-29T18:31:45.318Z",
+ "durationMs": 4975,
+ "inputTokens": 14611,
+ "outputTokens": 13,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "codex/default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "environmentId": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "controlRef": {
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "executionId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "requestDigest": "sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92"
+ },
+ "materializationDigest": "b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 12,
+ "contentBytes": 73
+ },
+ {
+ "id": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "turnId": "turn-7a284784-424e-49e7-96bd-9ada0b91ad98",
+ "operationId": "op-live-cancel-send-codex-default",
+ "status": "cancelled",
+ "startedAt": "2026-08-29T18:31:45.913Z",
+ "updatedAt": "2026-08-29T18:31:48.615Z",
+ "terminalAt": "2026-08-29T18:31:48.586Z",
+ "durationMs": 2673,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "environmentId": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "controlRef": {
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "executionId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "requestDigest": "sha256:19b06a5d8d19107753be0bf00aeebe9d73a8bb39c0aea823833ddbbc9d3fb680"
+ },
+ "materializationDigest": "3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4",
+ "cursor": "3:0",
+ "cursorCommittedSequence": 25
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 2,
+ "input": 14611,
+ "output": 13,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 2,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 2,
+ "unknownLatencySources": 2
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:31:40.056Z",
+ "updatedAt": "2026-08-29T18:31:46.528Z"
+ }
+ ],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": null,
+ "focusedRunId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "activeRuns": [],
+ "lastError": null
+ },
+ "view": {
+ "revision": 28,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe",
+ "profileName": "Braid live codex/default",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "runner": "codex",
+ "model": "default",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "Live local CLI Bridge",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-29T18:31:45.913Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "cancelled",
+ "statusText": "cancelled",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-13bba3e5-fbfb-49ef-b253-6eeea02342c8",
+ "role": "user",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK",
+ "status": "complete",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "parts": [
+ {
+ "id": "part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8",
+ "kind": "text",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK"
+ }
+ ]
+ },
+ {
+ "id": "message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95",
+ "role": "assistant",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "status": "complete",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "parts": [
+ {
+ "id": "op-live-send-codex-default:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "sourceEventId": "run-b587bde4-4bed-4a81-a459-06378d0649d1:final"
+ }
+ ]
+ },
+ {
+ "id": "message-39cd9f56-e300-416f-8e1a-a15e2951db5c",
+ "role": "user",
+ "text": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "status": "complete",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "parts": [
+ {
+ "id": "part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c",
+ "kind": "text",
+ "text": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ ]
+ },
+ {
+ "id": "message-18abac99-6c0b-43a2-85ce-8bc7938de902",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "parts": []
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "turnId": "turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-live-send-codex-default",
+ "status": "completed",
+ "profileName": "Braid live codex/default",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "model": "codex/default",
+ "effort": "none",
+ "cursor": "2:0",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "usage": {
+ "input": 14611,
+ "output": 13,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "codex/default",
+ "elapsedMs": 4975
+ },
+ "runner": "codex",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "completeness": "complete",
+ "contentBytes": 73
+ },
+ {
+ "id": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "turnId": "turn-7a284784-424e-49e7-96bd-9ada0b91ad98",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-live-cancel-send-codex-default",
+ "status": "cancelled",
+ "profileName": "Braid live codex/default",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "model": "default",
+ "effort": "none",
+ "cursor": "3:0",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "requestedSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "default",
+ "elapsedMs": 2673
+ },
+ "runner": "codex",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "completeness": "complete"
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 2,
+ "input": 14611,
+ "output": 13,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 2,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 2,
+ "unknownLatencySources": 2
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:31:40.056Z",
+ "updatedAt": "2026-08-29T18:31:46.528Z"
+ }
+ ],
+ "focusedRunId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "kind": "run",
+ "title": "run run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "status": "completed",
+ "elapsedMs": 4975,
+ "startedAt": "2026-08-29T18:31:40.343Z",
+ "occurredAt": "2026-08-29T18:31:40.343Z",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "entityType": "run",
+ "entityId": "run-b587bde4-4bed-4a81-a459-06378d0649d1"
+ },
+ {
+ "id": "activity:run-b587bde4-4bed-4a81-a459-06378d0649d1:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "completed",
+ "detail": "profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "occurredAt": "2026-08-29T18:31:45.318Z",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "entityType": "run",
+ "entityId": "run-b587bde4-4bed-4a81-a459-06378d0649d1"
+ },
+ {
+ "id": "run:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "kind": "run",
+ "title": "run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "status": "cancelled",
+ "elapsedMs": 2673,
+ "startedAt": "2026-08-29T18:31:45.913Z",
+ "occurredAt": "2026-08-29T18:31:45.913Z",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "entityType": "run",
+ "entityId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84"
+ },
+ {
+ "id": "environment:environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "kind": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "detail": "local-process · local · explicit",
+ "startedAt": "2026-08-29T18:31:40.056Z",
+ "occurredAt": "2026-08-29T18:31:46.528Z",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "entityType": "environment",
+ "entityId": "environment-dac2619b2ba7b4d5e584e97540d65d48"
+ },
+ {
+ "id": "activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "cancelled",
+ "detail": "profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "occurredAt": "2026-08-29T18:31:48.615Z",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "entityType": "run",
+ "entityId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84"
+ },
+ {
+ "id": "activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:control:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "live packed smoke cancellation",
+ "occurredAt": "2026-08-29T18:31:48.615Z",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "entityType": "run",
+ "entityId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84"
+ },
+ {
+ "id": "activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:status:local:cancelled",
+ "kind": "system",
+ "title": "cancelled",
+ "status": "cancelled",
+ "detail": "RUNTIME_STATUS",
+ "occurredAt": "2026-08-29T18:31:48.615Z",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "entityType": "run",
+ "entityId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84"
+ },
+ {
+ "id": "activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:control.ack:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "accepted",
+ "occurredAt": "2026-08-29T18:31:48.615Z",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "entityType": "run",
+ "entityId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-29T18:31:39.634Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-29T18:31:39.634Z"
+ },
+ {
+ "id": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "type": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "depth": 4,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "run:run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "run:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84"
+ ],
+ "runner": "cli-bridge",
+ "startedAt": "2026-08-29T18:31:40.056Z"
+ },
+ {
+ "id": "turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7",
+ "type": "turn",
+ "title": "Turn",
+ "status": "complete",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:31:40.343Z"
+ },
+ {
+ "id": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "type": "run",
+ "title": "Run",
+ "status": "completed",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7"
+ ],
+ "runner": "codex",
+ "elapsedMs": 4975,
+ "startedAt": "2026-08-29T18:31:40.343Z"
+ },
+ {
+ "id": "turn-7a284784-424e-49e7-96bd-9ada0b91ad98",
+ "type": "turn",
+ "title": "Turn",
+ "status": "cancelled",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:31:45.913Z"
+ },
+ {
+ "id": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "type": "run",
+ "title": "Run",
+ "status": "cancelled",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-7a284784-424e-49e7-96bd-9ada0b91ad98"
+ ],
+ "runner": "codex",
+ "elapsedMs": 2673,
+ "startedAt": "2026-08-29T18:31:45.913Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "environment",
+ "entityId": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "title": "cli-bridge execution",
+ "status": "ready",
+ "lines": [
+ "provider: cli-bridge",
+ "execution: local-process · local",
+ "provider environment: cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ",
+ "connection: connection-live-cli-bridge",
+ "lifecycle: ready · retained · cleanup explicit",
+ "continuity: session",
+ "runtime endpoint host: 127.0.0.1",
+ "placement: requested not specified · verified unavailable",
+ "machine: unavailable · physical IP is not exposed",
+ "created: 2026-08-29T18:31:40.056Z",
+ "observed: 2026-08-29T18:31:46.528Z",
+ "unavailable: cli-subscription-and-quota:not-exposed-by-provider",
+ "unavailable: effective-resources:not-exposed-by-provider",
+ "unavailable: machine-specs:not-exposed-by-provider",
+ "unavailable: runtime-cpu-memory-usage:not-exposed-by-provider"
+ ]
+ }
+ ],
+ "details": {
+ "title": "run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "fields": [
+ {
+ "label": "status",
+ "value": "cancelled"
+ },
+ {
+ "label": "input tokens",
+ "value": "0"
+ },
+ {
+ "label": "output tokens",
+ "value": "0"
+ },
+ {
+ "label": "model",
+ "value": "default"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.recipe": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "none",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ }
+ },
+ "shutdown": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "shutdown-codex-default",
+ "revision": 28,
+ "operationId": "op-live-shutdown-codex-default",
+ "command": "shutdown"
+ },
+ "operationEvidence": {
+ "normal": {
+ "status": "completed",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "run": {
+ "id": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "turnId": "turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7",
+ "operationId": "op-live-send-codex-default",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:40.343Z",
+ "updatedAt": "2026-08-29T18:31:45.318Z",
+ "terminalAt": "2026-08-29T18:31:45.318Z",
+ "durationMs": 4975,
+ "inputTokens": 14611,
+ "outputTokens": 13,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "codex/default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "environmentId": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "controlRef": {
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "executionId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "requestDigest": "sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92"
+ },
+ "materializationDigest": "b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 12,
+ "contentBytes": 73,
+ "receipt": {
+ "version": 1,
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "turnId": "turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7",
+ "operationId": "op-live-send-codex-default",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:40.334Z",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK",
+ "profile": {
+ "name": "Braid live codex/default",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "codex"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "default",
+ "runner": "codex"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe",
+ "model": "default",
+ "route": "codex/default",
+ "runner": "codex",
+ "providerRunId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "7bfdff7fd48d40cd22a04810b00655357d2a50b295f4f8d5598c4b8de8169414",
+ "capabilitiesDigest": "7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a",
+ "materializationDigest": "b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f",
+ "digest": "4036280ea47d6ff6f7538e8a19ebaa7711e7c0e5dc5cbd6d26a9e5888cf33372"
+ }
+ },
+ "assistant": {
+ "id": "message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95",
+ "role": "assistant",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "status": "complete",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "parts": [
+ {
+ "id": "op-live-send-codex-default:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "sourceEventId": "run-b587bde4-4bed-4a81-a459-06378d0649d1:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "marker": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-send-codex-default",
+ "operationId": "op-live-cancel-send-codex-default",
+ "revision": 14,
+ "replayed": false,
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "admission": {
+ "version": 1,
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "turnId": "turn-7a284784-424e-49e7-96bd-9ada0b91ad98",
+ "operationId": "op-live-cancel-send-codex-default",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:45.905Z",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "requested": {
+ "text": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live codex/default",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "codex"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "default",
+ "runner": "codex"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe",
+ "model": "default",
+ "route": "codex/default",
+ "runner": "codex",
+ "providerRunId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "4285c54f9240543634df5864c168c184f4152bc6bce6469ad27f38f65a490c87",
+ "capabilitiesDigest": "7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a",
+ "materializationDigest": "3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4",
+ "digest": "caca568134be09f5d0b484931e1d015d75b267449f21ec889c7b8db9a11a2eb8"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "activeRun": {
+ "id": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "turnId": "turn-7a284784-424e-49e7-96bd-9ada0b91ad98",
+ "operationId": "op-live-cancel-send-codex-default",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:31:45.913Z",
+ "updatedAt": "2026-08-29T18:31:45.913Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "materializationDigest": "3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-codex-default",
+ "revision": 26,
+ "operationId": "op-live-cancel-codex-default",
+ "command": "cancel_run",
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "turnId": "turn-7a284784-424e-49e7-96bd-9ada0b91ad98",
+ "operationId": "op-live-cancel-send-codex-default",
+ "status": "cancelled",
+ "startedAt": "2026-08-29T18:31:45.913Z",
+ "updatedAt": "2026-08-29T18:31:48.615Z",
+ "terminalAt": "2026-08-29T18:31:48.586Z",
+ "durationMs": 2673,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "environmentId": "environment-dac2619b2ba7b4d5e584e97540d65d48",
+ "controlRef": {
+ "runId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ",
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "executionId": "run-bc48f7a9-3049-465e-8b4d-ec27159b2e84",
+ "requestDigest": "sha256:19b06a5d8d19107753be0bf00aeebe9d73a8bb39c0aea823833ddbbc9d3fb680"
+ },
+ "materializationDigest": "3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4",
+ "cursor": "3:0",
+ "cursorCommittedSequence": 25
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": false,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "targetProof": {
+ "key": "codex-default",
+ "harness": "codex",
+ "model": "default",
+ "route": "codex/default",
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "materializationDigest": "b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f"
+ }
+ },
+ "operationReceipt": {
+ "operation": "cli-bridge.target-smoke",
+ "packed": true,
+ "runId": "run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "status": "passed"
+ },
+ "status": "passed",
+ "stderr": "",
+ "stdout": "{\"version\":1,\"type\":\"ack\",\"requestId\":\"init-codex-default\",\"revision\":4,\"command\":\"initialize\"}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"init-codex-default\",\"revision\":4,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":4,\"sequence\":4,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:39.634Z\"}],\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"runConfiguration\":{\"profileName\":\"Braid live codex/default\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[],\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":null,\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":4,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:39.634Z\"}],\"branch\":\"branch-1\",\"status\":\"empty\",\"statusText\":\"ready for a message\",\"queueCount\":0,\"queue\":[],\"messages\":[],\"hiddenMessageCount\":0,\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"activity\":[],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:39.634Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"send-codex-default\",\"operationId\":\"op-live-send-codex-default\",\"revision\":4,\"replayed\":false,\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"admission\":{\"version\":1,\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"operationId\":\"op-live-send-codex-default\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:40.334Z\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"requested\":{\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{},\"model\":\"default\",\"runner\":\"codex\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":false},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":true,\"instructions\":true,\"tools\":true,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"model\":\"default\",\"route\":\"codex/default\",\"runner\":\"codex\",\"providerRunId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"7bfdff7fd48d40cd22a04810b00655357d2a50b295f4f8d5598c4b8de8169414\",\"capabilitiesDigest\":\"7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a\",\"materializationDigest\":\"b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f\",\"digest\":\"4036280ea47d6ff6f7538e8a19ebaa7711e7c0e5dc5cbd6d26a9e5888cf33372\"},\"command\":\"send\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":5,\"revision\":5,\"event\":{\"sequence\":5,\"revision\":5,\"kind\":\"draft.changed\",\"payload\":{\"value\":{\"kind\":\"draft.changed\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":6,\"revision\":6,\"event\":{\"sequence\":6,\"revision\":6,\"kind\":\"run.requested\",\"payload\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"admission\":{\"version\":1,\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"operationId\":\"op-live-send-codex-default\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:40.334Z\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"requested\":{\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{},\"model\":\"default\",\"runner\":\"codex\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":false},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":true,\"instructions\":true,\"tools\":true,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"model\":\"default\",\"route\":\"codex/default\",\"runner\":\"codex\",\"providerRunId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"7bfdff7fd48d40cd22a04810b00655357d2a50b295f4f8d5598c4b8de8169414\",\"capabilitiesDigest\":\"7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a\",\"materializationDigest\":\"b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f\",\"digest\":\"4036280ea47d6ff6f7538e8a19ebaa7711e7c0e5dc5cbd6d26a9e5888cf33372\"},\"status\":\"admitted\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":7,\"revision\":7,\"event\":{\"sequence\":7,\"revision\":7,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-send-codex-default-a4318861508d4e85324dccc2\",\"operationId\":\"op-live-send-codex-default\",\"effectKind\":\"run.execute\",\"requestDigest\":\"a4318861508d4e85324dccc2e7657e54207e3a82eb42e474e3c172ebfbcdb98a\",\"kind\":\"send\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T18:31:40.355Z\",\"updatedAt\":\"2026-08-29T18:31:40.355Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":8,\"revision\":8,\"event\":{\"sequence\":8,\"revision\":8,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"admission\":{\"phase\":\"intent\",\"provider\":\"cli-bridge\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-codex-default\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"runId\":\"retained-intent-run:cd8d3efd40e5b2296cf02155102e815407f6921b9046e1d991bcf534671ce908\",\"requestedProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"requestDigest\":\"sha256:cd8d3efd40e5b2296cf02155102e815407f6921b9046e1d991bcf534671ce908\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"send-codex-default\",\"revision\":6,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":6,\"sequence\":6,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:40.343Z\"}],\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"runConfiguration\":{\"profileName\":\"Braid live codex/default\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[]}],\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"updatedAt\":\"2026-08-29T18:31:40.343Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"materializationDigest\":\"b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"focusedRunId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"activeRuns\":[{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":6,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:40.343Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"running\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"default\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\"},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"activeRunId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"focusedRunId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"kind\":\"run\",\"title\":\"run run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"status\":\"running\",\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"occurredAt\":\"2026-08-29T18:31:40.343Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"activity:run-b587bde4-4bed-4a81-a459-06378d0649d1:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:40.343Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\"],\"runner\":\"codex\",\"startedAt\":\"2026-08-29T18:31:40.343Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"details\":{\"title\":\"run run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"default\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect while another run is active\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile while another run is active\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":9,\"revision\":9,\"event\":{\"sequence\":9,\"revision\":9,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"admission\":{\"phase\":\"environment\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-codex-default\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":10,\"revision\":10,\"event\":{\"sequence\":10,\"revision\":10,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"admission\":{\"phase\":\"dispatched\",\"controlRef\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestDigest\":\"sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92\"},\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-codex-default\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":11,\"revision\":11,\"event\":{\"sequence\":11,\"revision\":11,\"kind\":\"run.environment.observed\",\"payload\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"source\":{\"eventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:40.983Z\"},\"value\":{\"kind\":\"run.environment.observed\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"observation\":{\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"unavailable\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"observedAt\":\"2026-08-29T18:31:40.983Z\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\"},\"controlRef\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestDigest\":\"sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92\"},\"provider\":{\"eventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:40.983Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":12,\"revision\":12,\"event\":{\"sequence\":12,\"revision\":12,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"source\":{\"eventId\":\"2:0\",\"providerSequence\":2,\"cursor\":\"2:0\",\"receivedAt\":\"2026-08-29T18:31:45.249Z\"},\"part\":{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"2:0\"},\"delta\":\"LIVE_BRAID_CODEX-DEFAULT_O\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":13,\"revision\":13,\"event\":{\"sequence\":13,\"revision\":13,\"kind\":\"run.finished\",\"payload\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"source\":{\"eventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\",\"providerSequence\":3,\"receivedAt\":\"2026-08-29T18:31:45.318Z\"},\"status\":\"completed\",\"completeness\":\"complete\",\"finalText\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"usage\":{\"input\":14611,\"output\":13,\"usdKnown\":false,\"model\":\"codex/default\"},\"reason\":\"RUNTIME_FINAL_REASON\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":14,\"revision\":14,\"event\":{\"sequence\":14,\"revision\":14,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-send-codex-default-a4318861508d4e85324dccc2\",\"operationId\":\"op-live-send-codex-default\",\"effectKind\":\"run.execute\",\"requestDigest\":\"a4318861508d4e85324dccc2e7657e54207e3a82eb42e474e3c172ebfbcdb98a\",\"kind\":\"send\",\"status\":\"terminal\",\"attempt\":1,\"outcomeDigest\":\"b82069d6893c46ce5ac5dc805ef96d7f3999afb6c6ecd8ec2e4332ec92d0b067\",\"createdAt\":\"2026-08-29T18:31:40.355Z\",\"updatedAt\":\"2026-08-29T18:31:45.339Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"send-codex-default\",\"revision\":14,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":14,\"sequence\":14,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:40.343Z\"}],\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"runConfiguration\":{\"profileName\":\"Braid live codex/default\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]}],\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"updatedAt\":\"2026-08-29T18:31:45.318Z\",\"terminalAt\":\"2026-08-29T18:31:45.318Z\",\"durationMs\":4975,\"inputTokens\":14611,\"outputTokens\":13,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"controlRef\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestDigest\":\"sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92\"},\"materializationDigest\":\"b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":73}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":14611,\"output\":13,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:40.983Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":14,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:40.343Z\"}],\"branch\":\"branch-1\",\"status\":\"completed\",\"statusText\":\"completed\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"codex/default\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":14611,\"output\":13,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"elapsedMs\":4975},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"completeness\":\"complete\",\"contentBytes\":73}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":14611,\"output\":13,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:40.983Z\"}],\"focusedRunId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"kind\":\"run\",\"title\":\"run run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"status\":\"completed\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"occurredAt\":\"2026-08-29T18:31:40.343Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"environment:environment-dac2619b2ba7b4d5e584e97540d65d48\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:40.056Z\",\"occurredAt\":\"2026-08-29T18:31:40.983Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\"},{\"id\":\"activity:run-b587bde4-4bed-4a81-a459-06378d0649d1:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:45.318Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:40.056Z\"},{\"id\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\"],\"runner\":\"codex\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:40.056Z\",\"observed: 2026-08-29T18:31:40.983Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"fields\":[{\"label\":\"status\",\"value\":\"completed\"},{\"label\":\"input tokens\",\"value\":\"14611\"},{\"label\":\"output tokens\",\"value\":\"13\"},{\"label\":\"token measurement\",\"value\":\"complete\"},{\"label\":\"model\",\"value\":\"codex/default\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"cancel-send-codex-default\",\"operationId\":\"op-live-cancel-send-codex-default\",\"revision\":14,\"replayed\":false,\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"admission\":{\"version\":1,\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"operationId\":\"op-live-cancel-send-codex-default\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:45.905Z\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"requested\":{\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{},\"model\":\"default\",\"runner\":\"codex\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":false},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":true,\"instructions\":true,\"tools\":true,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"model\":\"default\",\"route\":\"codex/default\",\"runner\":\"codex\",\"providerRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"4285c54f9240543634df5864c168c184f4152bc6bce6469ad27f38f65a490c87\",\"capabilitiesDigest\":\"7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a\",\"materializationDigest\":\"3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4\",\"digest\":\"caca568134be09f5d0b484931e1d015d75b267449f21ec889c7b8db9a11a2eb8\"},\"command\":\"send\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":15,\"revision\":15,\"event\":{\"sequence\":15,\"revision\":15,\"kind\":\"draft.changed\",\"payload\":{\"value\":{\"kind\":\"draft.changed\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":16,\"revision\":16,\"event\":{\"sequence\":16,\"revision\":16,\"kind\":\"run.requested\",\"payload\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"admission\":{\"version\":1,\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"operationId\":\"op-live-cancel-send-codex-default\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T18:31:45.905Z\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"requested\":{\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{},\"model\":\"default\",\"runner\":\"codex\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":false},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":true,\"instructions\":true,\"tools\":true,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"contextTransfer\":{\"freshSession\":true,\"requestIdempotency\":true,\"lookup\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"provider-owned\",\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"model\":\"default\",\"route\":\"codex/default\",\"runner\":\"codex\",\"providerRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"4285c54f9240543634df5864c168c184f4152bc6bce6469ad27f38f65a490c87\",\"capabilitiesDigest\":\"7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a\",\"materializationDigest\":\"3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4\",\"digest\":\"caca568134be09f5d0b484931e1d015d75b267449f21ec889c7b8db9a11a2eb8\"},\"status\":\"admitted\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":17,\"revision\":17,\"event\":{\"sequence\":17,\"revision\":17,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-send-codex-default-f4764a1ddbad9e7948c313ac\",\"operationId\":\"op-live-cancel-send-codex-default\",\"effectKind\":\"run.execute\",\"requestDigest\":\"f4764a1ddbad9e7948c313ac4a0c6c61dade489fd6e9eb899128e7115e77b0a2\",\"kind\":\"send\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T18:31:45.923Z\",\"updatedAt\":\"2026-08-29T18:31:45.923Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":18,\"revision\":18,\"event\":{\"sequence\":18,\"revision\":18,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"admission\":{\"phase\":\"intent\",\"provider\":\"cli-bridge\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-codex-default\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"runId\":\"retained-intent-run:8951666125083ca0d622b8178d436f5e07991c6c111f64c276843ee326d1dfcc\",\"requestedProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"requestDigest\":\"sha256:8951666125083ca0d622b8178d436f5e07991c6c111f64c276843ee326d1dfcc\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-send-codex-default\",\"revision\":16,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":16,\"sequence\":16,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:45.913Z\"}],\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"runConfiguration\":{\"profileName\":\"Braid live codex/default\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]},{\"id\":\"message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[{\"id\":\"part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-18abac99-6c0b-43a2-85ce-8bc7938de902\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[]}],\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"updatedAt\":\"2026-08-29T18:31:45.318Z\",\"terminalAt\":\"2026-08-29T18:31:45.318Z\",\"durationMs\":4975,\"inputTokens\":14611,\"outputTokens\":13,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"controlRef\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestDigest\":\"sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92\"},\"materializationDigest\":\"b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":73},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"operationId\":\"op-live-cancel-send-codex-default\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T18:31:45.913Z\",\"updatedAt\":\"2026-08-29T18:31:45.913Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"materializationDigest\":\"3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":14611,\"output\":13,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:40.983Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"focusedRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"activeRuns\":[{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":16,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:45.913Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]},{\"id\":\"message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[{\"id\":\"part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-18abac99-6c0b-43a2-85ce-8bc7938de902\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"codex/default\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":14611,\"output\":13,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"elapsedMs\":4975},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"completeness\":\"complete\",\"contentBytes\":73},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-codex-default\",\"status\":\"running\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"default\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\"},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":14611,\"output\":13,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:40.983Z\"}],\"activeRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"focusedRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"kind\":\"run\",\"title\":\"run run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"status\":\"completed\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"occurredAt\":\"2026-08-29T18:31:40.343Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"environment:environment-dac2619b2ba7b4d5e584e97540d65d48\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:40.056Z\",\"occurredAt\":\"2026-08-29T18:31:40.983Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\"},{\"id\":\"activity:run-b587bde4-4bed-4a81-a459-06378d0649d1:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:45.318Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"run:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"kind\":\"run\",\"title\":\"run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"status\":\"running\",\"startedAt\":\"2026-08-29T18:31:45.913Z\",\"occurredAt\":\"2026-08-29T18:31:45.913Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:45.913Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:40.056Z\"},{\"id\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\"],\"runner\":\"codex\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:45.913Z\"},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-7a284784-424e-49e7-96bd-9ada0b91ad98\"],\"runner\":\"codex\",\"startedAt\":\"2026-08-29T18:31:45.913Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:40.056Z\",\"observed: 2026-08-29T18:31:40.983Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"default\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect while another run is active\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile while another run is active\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"cancel-codex-default\",\"revision\":26,\"operationId\":\"op-live-cancel-codex-default\",\"command\":\"cancel_run\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"control\":\"cancel\",\"outcome\":\"accepted\",\"replayed\":false}\n{\"version\":1,\"type\":\"event\",\"sequence\":19,\"revision\":19,\"event\":{\"sequence\":19,\"revision\":19,\"kind\":\"run.control.requested\",\"payload\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"control\":{\"operationId\":\"op-live-cancel-codex-default\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live packed smoke cancellation\",\"text\":\"[unavailable]\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":20,\"revision\":20,\"event\":{\"sequence\":20,\"revision\":20,\"kind\":\"run.cancel.requested\",\"payload\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"control\":{\"operationId\":\"op-live-cancel-codex-default\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live packed smoke cancellation\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":21,\"revision\":21,\"event\":{\"sequence\":21,\"revision\":21,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-codex-default-c2806ef6d086feac783a640f\",\"operationId\":\"op-live-cancel-codex-default\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"c2806ef6d086feac783a640fc7d543ac3858614f3793d13833841b260ec09a14\",\"kind\":\"custom\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T18:31:45.998Z\",\"updatedAt\":\"2026-08-29T18:31:45.998Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":22,\"revision\":22,\"event\":{\"sequence\":22,\"revision\":22,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"admission\":{\"phase\":\"environment\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-codex-default\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":23,\"revision\":23,\"event\":{\"sequence\":23,\"revision\":23,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"admission\":{\"phase\":\"dispatched\",\"controlRef\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"requestDigest\":\"sha256:19b06a5d8d19107753be0bf00aeebe9d73a8bb39c0aea823833ddbbc9d3fb680\"},\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-codex-default\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":24,\"revision\":24,\"event\":{\"sequence\":24,\"revision\":24,\"kind\":\"run.environment.observed\",\"payload\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"source\":{\"eventId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:46.528Z\"},\"value\":{\"kind\":\"run.environment.observed\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"observation\":{\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"createdAt\":\"2026-08-29T18:31:45.630Z\",\"unavailable\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"observedAt\":\"2026-08-29T18:31:46.528Z\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\"},\"controlRef\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"requestDigest\":\"sha256:19b06a5d8d19107753be0bf00aeebe9d73a8bb39c0aea823833ddbbc9d3fb680\"},\"provider\":{\"eventId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T18:31:46.528Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":25,\"revision\":25,\"event\":{\"sequence\":25,\"revision\":25,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"source\":{\"eventId\":\"3:0\",\"providerSequence\":2,\"cursor\":\"3:0\",\"receivedAt\":\"2026-08-29T18:31:48.586Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"status\":\"cancelled\",\"detail\":\"RUNTIME_STATUS\",\"provider\":{\"eventId\":\"3:0\",\"providerSequence\":2,\"cursor\":\"3:0\",\"receivedAt\":\"2026-08-29T18:31:48.586Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":26,\"revision\":26,\"event\":{\"sequence\":26,\"revision\":26,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-codex-default-c2806ef6d086feac783a640f\",\"operationId\":\"op-live-cancel-codex-default\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"c2806ef6d086feac783a640fc7d543ac3858614f3793d13833841b260ec09a14\",\"kind\":\"custom\",\"status\":\"acknowledged\",\"attempt\":1,\"outcomeDigest\":\"f430d9c9c101fec536eed9da90bf212be94a7c138332862d1e9774b1266d9187\",\"createdAt\":\"2026-08-29T18:31:45.998Z\",\"updatedAt\":\"2026-08-29T18:31:48.601Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":27,\"revision\":27,\"event\":{\"sequence\":27,\"revision\":27,\"kind\":\"run.control.acknowledged\",\"payload\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"control\":{\"operationId\":\"op-live-cancel-codex-default\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"control\":\"cancel\",\"status\":\"accepted\",\"detail\":\"CONTROL_DETAIL\"}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-codex-default\",\"revision\":27,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":27,\"sequence\":27,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:45.913Z\"}],\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"runConfiguration\":{\"profileName\":\"Braid live codex/default\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]},{\"id\":\"message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[{\"id\":\"part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-18abac99-6c0b-43a2-85ce-8bc7938de902\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[]}],\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"updatedAt\":\"2026-08-29T18:31:45.318Z\",\"terminalAt\":\"2026-08-29T18:31:45.318Z\",\"durationMs\":4975,\"inputTokens\":14611,\"outputTokens\":13,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"controlRef\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestDigest\":\"sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92\"},\"materializationDigest\":\"b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":73},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"operationId\":\"op-live-cancel-send-codex-default\",\"status\":\"cancelled\",\"startedAt\":\"2026-08-29T18:31:45.913Z\",\"updatedAt\":\"2026-08-29T18:31:48.615Z\",\"terminalAt\":\"2026-08-29T18:31:48.586Z\",\"durationMs\":2673,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"controlRef\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"requestDigest\":\"sha256:19b06a5d8d19107753be0bf00aeebe9d73a8bb39c0aea823833ddbbc9d3fb680\"},\"materializationDigest\":\"3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4\",\"cursor\":\"3:0\",\"cursorCommittedSequence\":25}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":14611,\"output\":13,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:46.528Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":27,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:45.913Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]},{\"id\":\"message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[{\"id\":\"part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-18abac99-6c0b-43a2-85ce-8bc7938de902\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"codex/default\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":14611,\"output\":13,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"elapsedMs\":4975},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"completeness\":\"complete\",\"contentBytes\":73},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-codex-default\",\"status\":\"cancelled\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"default\",\"effort\":\"none\",\"cursor\":\"3:0\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\",\"elapsedMs\":2673},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"completeness\":\"complete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":14611,\"output\":13,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:46.528Z\"}],\"focusedRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"kind\":\"run\",\"title\":\"run run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"status\":\"completed\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"occurredAt\":\"2026-08-29T18:31:40.343Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"activity:run-b587bde4-4bed-4a81-a459-06378d0649d1:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:45.318Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"run:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"kind\":\"run\",\"title\":\"run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"status\":\"cancelled\",\"elapsedMs\":2673,\"startedAt\":\"2026-08-29T18:31:45.913Z\",\"occurredAt\":\"2026-08-29T18:31:45.913Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"environment:environment-dac2619b2ba7b4d5e584e97540d65d48\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:40.056Z\",\"occurredAt\":\"2026-08-29T18:31:46.528Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:status:local:cancelled\",\"kind\":\"system\",\"title\":\"cancelled\",\"status\":\"cancelled\",\"detail\":\"RUNTIME_STATUS\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"run:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:40.056Z\"},{\"id\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\"],\"runner\":\"codex\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:45.913Z\"},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-7a284784-424e-49e7-96bd-9ada0b91ad98\"],\"runner\":\"codex\",\"elapsedMs\":2673,\"startedAt\":\"2026-08-29T18:31:45.913Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:40.056Z\",\"observed: 2026-08-29T18:31:46.528Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"fields\":[{\"label\":\"status\",\"value\":\"cancelled\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"default\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":28,\"revision\":28,\"event\":{\"sequence\":28,\"revision\":28,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-send-codex-default-f4764a1ddbad9e7948c313ac\",\"operationId\":\"op-live-cancel-send-codex-default\",\"effectKind\":\"run.execute\",\"requestDigest\":\"f4764a1ddbad9e7948c313ac4a0c6c61dade489fd6e9eb899128e7115e77b0a2\",\"kind\":\"send\",\"status\":\"failed\",\"attempt\":1,\"outcomeDigest\":\"d24c82d38b67b87e0cedfdb94e744a756b05cf549010c2c2bc224235561005cb\",\"createdAt\":\"2026-08-29T18:31:45.923Z\",\"updatedAt\":\"2026-08-29T18:31:48.630Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-send-codex-default\",\"revision\":28,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":28,\"sequence\":28,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:45.913Z\"}],\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"runConfiguration\":{\"profileName\":\"Braid live codex/default\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]},{\"id\":\"message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[{\"id\":\"part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-18abac99-6c0b-43a2-85ce-8bc7938de902\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[]}],\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"updatedAt\":\"2026-08-29T18:31:45.318Z\",\"terminalAt\":\"2026-08-29T18:31:45.318Z\",\"durationMs\":4975,\"inputTokens\":14611,\"outputTokens\":13,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"controlRef\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestDigest\":\"sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92\"},\"materializationDigest\":\"b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":73},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"operationId\":\"op-live-cancel-send-codex-default\",\"status\":\"cancelled\",\"startedAt\":\"2026-08-29T18:31:45.913Z\",\"updatedAt\":\"2026-08-29T18:31:48.615Z\",\"terminalAt\":\"2026-08-29T18:31:48.586Z\",\"durationMs\":2673,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"controlRef\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"requestDigest\":\"sha256:19b06a5d8d19107753be0bf00aeebe9d73a8bb39c0aea823833ddbbc9d3fb680\"},\"materializationDigest\":\"3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4\",\"cursor\":\"3:0\",\"cursorCommittedSequence\":25}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":14611,\"output\":13,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:46.528Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":28,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:45.913Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]},{\"id\":\"message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[{\"id\":\"part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-18abac99-6c0b-43a2-85ce-8bc7938de902\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"codex/default\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":14611,\"output\":13,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"elapsedMs\":4975},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"completeness\":\"complete\",\"contentBytes\":73},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-codex-default\",\"status\":\"cancelled\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"default\",\"effort\":\"none\",\"cursor\":\"3:0\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\",\"elapsedMs\":2673},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"completeness\":\"complete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":14611,\"output\":13,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:46.528Z\"}],\"focusedRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"kind\":\"run\",\"title\":\"run run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"status\":\"completed\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"occurredAt\":\"2026-08-29T18:31:40.343Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"activity:run-b587bde4-4bed-4a81-a459-06378d0649d1:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:45.318Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"run:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"kind\":\"run\",\"title\":\"run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"status\":\"cancelled\",\"elapsedMs\":2673,\"startedAt\":\"2026-08-29T18:31:45.913Z\",\"occurredAt\":\"2026-08-29T18:31:45.913Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"environment:environment-dac2619b2ba7b4d5e584e97540d65d48\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:40.056Z\",\"occurredAt\":\"2026-08-29T18:31:46.528Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:status:local:cancelled\",\"kind\":\"system\",\"title\":\"cancelled\",\"status\":\"cancelled\",\"detail\":\"RUNTIME_STATUS\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"run:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:40.056Z\"},{\"id\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\"],\"runner\":\"codex\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:45.913Z\"},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-7a284784-424e-49e7-96bd-9ada0b91ad98\"],\"runner\":\"codex\",\"elapsedMs\":2673,\"startedAt\":\"2026-08-29T18:31:45.913Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:40.056Z\",\"observed: 2026-08-29T18:31:46.528Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"fields\":[{\"label\":\"status\",\"value\":\"cancelled\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"default\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"final-state-codex-default\",\"revision\":28,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":28,\"sequence\":28,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T18:31:45.913Z\"}],\"profile\":{\"name\":\"Braid live codex/default\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"default\",\"reasoningEffort\":\"none\"},\"harness\":\"codex\"},\"runConfiguration\":{\"profileName\":\"Braid live codex/default\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]},{\"id\":\"message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[{\"id\":\"part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-18abac99-6c0b-43a2-85ce-8bc7938de902\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[]}],\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"updatedAt\":\"2026-08-29T18:31:45.318Z\",\"terminalAt\":\"2026-08-29T18:31:45.318Z\",\"durationMs\":4975,\"inputTokens\":14611,\"outputTokens\":13,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"controlRef\":{\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestDigest\":\"sha256:01fae8892b65b7b2cdae1a55ce8d539f867cfd6740b553ea73c66b926b935c92\"},\"materializationDigest\":\"b76ec68ef56bd6ac6ee2faf225b643a3bce4157e4df440ec600bf54b739c682f\",\"cursor\":\"2:0\",\"cursorCommittedSequence\":12,\"contentBytes\":73},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"operationId\":\"op-live-cancel-send-codex-default\",\"status\":\"cancelled\",\"startedAt\":\"2026-08-29T18:31:45.913Z\",\"updatedAt\":\"2026-08-29T18:31:48.615Z\",\"terminalAt\":\"2026-08-29T18:31:48.586Z\",\"durationMs\":2673,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\",\"provider\":\"cli-bridge\",\"runner\":\"codex\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"controlRef\":{\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"sessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"executionId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"requestDigest\":\"sha256:19b06a5d8d19107753be0bf00aeebe9d73a8bb39c0aea823833ddbbc9d3fb680\"},\"materializationDigest\":\"3e486e93bca69d0da608fbb33cf96f2bd9bcf1443dec134a19ed699ef6521be4\",\"cursor\":\"3:0\",\"cursorCommittedSequence\":25}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":14611,\"output\":13,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:46.528Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":28,\"workspace\":\"/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-638eab96-0ae5-4148-a3c4-239e314d37fe\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"runner\":\"codex\",\"model\":\"default\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T18:31:45.913Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"part-message-13bba3e5-fbfb-49ef-b253-6eeea02342c8\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK\"}]},{\"id\":\"message-a76e307c-6ed7-46d1-8a8b-6dd6d57aed95\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"status\":\"complete\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"parts\":[{\"id\":\"op-live-send-codex-default:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_CODEX-DEFAULT_OK\",\"sourceEventId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1:final\"}]},{\"id\":\"message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[{\"id\":\"part-message-39cd9f56-e300-416f-8e1a-a15e2951db5c\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-18abac99-6c0b-43a2-85ce-8bc7938de902\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"turnId\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-codex-default\",\"status\":\"completed\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"codex/default\",\"effort\":\"none\",\"cursor\":\"2:0\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":14611,\"output\":13,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"codex/default\",\"elapsedMs\":4975},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"completeness\":\"complete\",\"contentBytes\":73},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"turnId\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-codex-default\",\"status\":\"cancelled\",\"profileName\":\"Braid live codex/default\",\"profileDigest\":\"6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"model\":\"default\",\"effort\":\"none\",\"cursor\":\"3:0\",\"providerSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"requestedSessionId\":\"session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"default\",\"elapsedMs\":2673},\"runner\":\"codex\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"completeness\":\"complete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":14611,\"output\":13,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"providerEnvironmentId\":\"cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T18:31:40.056Z\",\"updatedAt\":\"2026-08-29T18:31:46.528Z\"}],\"focusedRunId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"kind\":\"run\",\"title\":\"run run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"status\":\"completed\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\",\"occurredAt\":\"2026-08-29T18:31:40.343Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"activity:run-b587bde4-4bed-4a81-a459-06378d0649d1:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:45.318Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"run\",\"entityId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\"},{\"id\":\"run:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"kind\":\"run\",\"title\":\"run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"status\":\"cancelled\",\"elapsedMs\":2673,\"startedAt\":\"2026-08-29T18:31:45.913Z\",\"occurredAt\":\"2026-08-29T18:31:45.913Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"environment:environment-dac2619b2ba7b4d5e584e97540d65d48\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T18:31:40.056Z\",\"occurredAt\":\"2026-08-29T18:31:46.528Z\",\"runId\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:status:local:cancelled\",\"kind\":\"system\",\"title\":\"cancelled\",\"status\":\"cancelled\",\"detail\":\"RUNTIME_STATUS\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"},{\"id\":\"activity:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T18:31:48.615Z\",\"runId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"entityType\":\"run\",\"entityId\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T18:31:39.634Z\"},{\"id\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"run:run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T18:31:40.056Z\"},{\"id\":\"turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"run-b587bde4-4bed-4a81-a459-06378d0649d1\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-ef35fd70-d192-4a39-84bb-4415ef9fd6a7\"],\"runner\":\"codex\",\"elapsedMs\":4975,\"startedAt\":\"2026-08-29T18:31:40.343Z\"},{\"id\":\"turn-7a284784-424e-49e7-96bd-9ada0b91ad98\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T18:31:45.913Z\"},{\"id\":\"run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-7a284784-424e-49e7-96bd-9ada0b91ad98\"],\"runner\":\"codex\",\"elapsedMs\":2673,\"startedAt\":\"2026-08-29T18:31:45.913Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dac2619b2ba7b4d5e584e97540d65d48\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"provider environment: cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6OGYyYjlkMmU5NjM1MWFhYzM0N2YxODNjZjY3OWRmYzY2MGM5ZmU5OTA0YWE5OGNlN2NmNDgwNGNmMWZkMTU0MSIsIkhNV3FPNDUwMTdzQ2thT2g4QlBmTnlvMktzVUw2anZ3S0pkQS1jRy1NOUkiXQ\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T18:31:40.056Z\",\"observed: 2026-08-29T18:31:46.528Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-bc48f7a9-3049-465e-8b4d-ec27159b2e84\",\"fields\":[{\"label\":\"status\",\"value\":\"cancelled\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"default\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"shutdown-codex-default\",\"revision\":28,\"operationId\":\"op-live-shutdown-codex-default\",\"command\":\"shutdown\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":29,\"revision\":29,\"event\":{\"sequence\":29,\"revision\":29,\"kind\":\"application.shutdown.requested\",\"payload\":{\"value\":{\"kind\":\"application.shutdown.requested\",\"operationId\":\"op-live-shutdown-codex-default\"}}}}\n",
+ "process": {
+ "processIdentity": {
+ "instanceId": "850c878b-35b6-4db3-a669-184befe6cddd",
+ "pid": 3360326,
+ "startedAt": 1788028299145
+ },
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3360326
+ ],
+ "roots": [
+ 3360326
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "natural": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3360326
+ ],
+ "roots": [
+ 3360326
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "exit": {
+ "code": 0,
+ "signal": null
+ }
+ },
+ "providerSessionCleanup": {
+ "attempted": 1,
+ "closed": 0,
+ "alreadyAbsent": 1,
+ "released": 1,
+ "complete": true,
+ "results": [
+ {
+ "sessionId": "session-braid-run-b587bde4-4bed-4a81-a459-06378d0649d1",
+ "status": 404,
+ "closed": false,
+ "alreadyAbsent": true,
+ "released": true
+ }
+ ]
+ }
+ }
+ ],
+ "releaseProofs": [
+ {
+ "requirementId": "LIVE-01",
+ "operation": "cli-bridge.pi.conformance",
+ "target": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "measurement": {
+ "kind": "scalar",
+ "name": "LIVE-01",
+ "unit": "successful-packed-live-operation",
+ "value": 1
+ }
+ },
+ {
+ "requirementId": "LIVE-02",
+ "operation": "cli-bridge.codex.cross-runner-handoff",
+ "target": {
+ "key": "codex-default",
+ "harness": "codex",
+ "model": "default"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "measurement": {
+ "kind": "scalar",
+ "name": "LIVE-02",
+ "unit": "successful-packed-live-operation",
+ "value": 1
+ }
+ },
+ {
+ "requirementId": "LIVE-03",
+ "operation": "cli-bridge.interactive-protocol",
+ "target": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "measurement": {
+ "kind": "scalar",
+ "name": "LIVE-03",
+ "unit": "successful-packed-live-operation",
+ "value": 1
+ }
+ },
+ {
+ "requirementId": "LIVE-04",
+ "operation": "cli-bridge.restart-reconciliation",
+ "target": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "measurement": {
+ "kind": "scalar",
+ "name": "LIVE-04",
+ "unit": "successful-packed-live-operation",
+ "value": 1
+ }
+ },
+ {
+ "requirementId": "LIVE-05",
+ "operation": "cli-bridge.runner-conformance",
+ "target": {
+ "key": "glm-5.2",
+ "harness": "opencode",
+ "provider": "zai-coding-plan",
+ "model": "glm-5.2"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "measurement": {
+ "kind": "scalar",
+ "name": "LIVE-05",
+ "unit": "successful-packed-live-operation",
+ "value": 1
+ }
+ },
+ {
+ "requirementId": "LIVE-05",
+ "operation": "cli-bridge.runner-conformance",
+ "target": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "measurement": {
+ "kind": "scalar",
+ "name": "LIVE-05",
+ "unit": "successful-packed-live-operation",
+ "value": 1
+ }
+ },
+ {
+ "requirementId": "LIVE-05",
+ "operation": "cli-bridge.runner-conformance",
+ "target": {
+ "key": "codex-default",
+ "harness": "codex",
+ "model": "default"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "measurement": {
+ "kind": "scalar",
+ "name": "LIVE-05",
+ "unit": "successful-packed-live-operation",
+ "value": 1
+ }
+ }
+ ],
+ "releaseOperations": [
+ {
+ "requirementId": "LIVE-01",
+ "operation": "cli-bridge.pi.conformance",
+ "target": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "evidence": {
+ "normal": {
+ "status": "completed",
+ "runId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "run": {
+ "id": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "turnId": "turn-aa016e7b-2412-45bf-b2ff-e29ee1e958a0",
+ "operationId": "op-pi-conformance-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:50.519Z",
+ "updatedAt": "2026-08-29T18:31:54.914Z",
+ "terminalAt": "2026-08-29T18:31:54.914Z",
+ "durationMs": 4395,
+ "inputTokens": 1010,
+ "outputTokens": 62,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 37,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "environmentId": "environment-ed65d533989e52f78ed3eb645bfa6e0c",
+ "controlRef": {
+ "runId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6OTk3NGU4MzhmMzM3MGRhNTcwZmJiZjU5YjkzYTJmOTI5NzMwNjEwZTQ1M2FkZTU1OThiNTQwZGZmNjQzMTNjYSIsIlJJdVRlbTl1RmcyY09JckV5YThvek9jY3lNeFMyWmdRRHZoSVZWUk5jM0EiXQ",
+ "sessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "executionId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "requestDigest": "sha256:e8c4674c10b4dfd7c60a4a7ce37fcf9f6726f69306524c172cbc6ee238ec5833"
+ },
+ "materializationDigest": "ab7a5ec158e8ea520fc39080fffdd6d3f41ef5381a2fae8ecd673bc2b38c56c8",
+ "cursor": "76",
+ "cursorCommittedSequence": 87,
+ "contentBytes": 543,
+ "receipt": {
+ "version": 1,
+ "runId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "turnId": "turn-aa016e7b-2412-45bf-b2ff-e29ee1e958a0",
+ "operationId": "op-pi-conformance-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:50.510Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "nativeContinuation": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "interactions": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-fcd73619-9473-48f4-a74b-bf3b21edb8e7",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "d312ea2746034ed1afecae6cd29c5bf0579bbf89f459afaff1dd5dbbbf4245ab",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "ab7a5ec158e8ea520fc39080fffdd6d3f41ef5381a2fae8ecd673bc2b38c56c8",
+ "digest": "e44d2ebb2b0d81c15c6e070e0d729f4b1bb47a8a805ef41a7531497259083228"
+ }
+ },
+ "assistant": {
+ "id": "message-2b4f7016-2842-4076-90b1-de21fff41387",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "parts": [
+ {
+ "id": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af:message:0:reasoning",
+ "kind": "reasoning",
+ "text": "The user is asking me to output only a specific token with no punctuation or explanation. This appears to be a system test or verification request. Let me just output the token as requested.",
+ "sourceEventId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af:70"
+ },
+ {
+ "id": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af:message:1:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "marker": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "pi-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-pi-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "revision": 89,
+ "replayed": false,
+ "runId": "run-c6b28502-f70b-468c-bff0-76104ef01722",
+ "admission": {
+ "version": 1,
+ "runId": "run-c6b28502-f70b-468c-bff0-76104ef01722",
+ "turnId": "turn-f8a36c30-f035-48af-b7e4-eb6bef7ebdba",
+ "operationId": "op-pi-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:55.601Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "nativeContinuation": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "interactions": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "providerSessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-fcd73619-9473-48f4-a74b-bf3b21edb8e7",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-c6b28502-f70b-468c-bff0-76104ef01722",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "nativeContextBoundaryProof": {
+ "runId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6OTk3NGU4MzhmMzM3MGRhNTcwZmJiZjU5YjkzYTJmOTI5NzMwNjEwZTQ1M2FkZTU1OThiNTQwZGZmNjQzMTNjYSIsIlJJdVRlbTl1RmcyY09JckV5YThvek9jY3lNeFMyWmdRRHZoSVZWUk5jM0EiXQ",
+ "sessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "executionId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "requestDigest": "sha256:e8c4674c10b4dfd7c60a4a7ce37fcf9f6726f69306524c172cbc6ee238ec5833",
+ "boundary": {
+ "kind": "revision",
+ "revision": "pi:61ea9297-d4ce-496c-852f-a59bd834c104:2"
+ },
+ "observedAt": "2026-08-29T18:31:54.840Z"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "a7b519f24435c63ae3ee10efe5da7744733936c6a1131572e8391411e151e706",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "b9411273ff6861eeba78ee33bf3c4b33b7292a91cd75c39aebc146254888e3af",
+ "digest": "3722433432e9815ba502525e57b8837447809594df15205b277813924a0347fa"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-c6b28502-f70b-468c-bff0-76104ef01722",
+ "activeRun": {
+ "id": "run-c6b28502-f70b-468c-bff0-76104ef01722",
+ "turnId": "turn-f8a36c30-f035-48af-b7e4-eb6bef7ebdba",
+ "operationId": "op-pi-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:31:55.610Z",
+ "updatedAt": "2026-08-29T18:31:55.610Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "materializationDigest": "b9411273ff6861eeba78ee33bf3c4b33b7292a91cd75c39aebc146254888e3af"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "pi-conformance-cancel-pi-tangle-router-deepseek-v4-flash",
+ "revision": 106,
+ "operationId": "op-pi-conformance-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "runId": "run-c6b28502-f70b-468c-bff0-76104ef01722",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-c6b28502-f70b-468c-bff0-76104ef01722",
+ "turnId": "turn-f8a36c30-f035-48af-b7e4-eb6bef7ebdba",
+ "operationId": "op-pi-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:31:55.610Z",
+ "updatedAt": "2026-08-29T18:31:56.688Z",
+ "terminalAt": "2026-08-29T18:31:56.688Z",
+ "durationMs": 1078,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "environmentId": "environment-ed65d533989e52f78ed3eb645bfa6e0c",
+ "controlRef": {
+ "runId": "run-c6b28502-f70b-468c-bff0-76104ef01722",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6OTk3NGU4MzhmMzM3MGRhNTcwZmJiZjU5YjkzYTJmOTI5NzMwNjEwZTQ1M2FkZTU1OThiNTQwZGZmNjQzMTNjYSIsIlJJdVRlbTl1RmcyY09JckV5YThvek9jY3lNeFMyWmdRRHZoSVZWUk5jM0EiXQ",
+ "sessionId": "session-braid-run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "executionId": "run-c6b28502-f70b-468c-bff0-76104ef01722",
+ "requestDigest": "sha256:ba26771378bbe0c1d58d4a5fec1ddcc4037dcbd1787ce28fb256d27eabd56cc3"
+ },
+ "materializationDigest": "b9411273ff6861eeba78ee33bf3c4b33b7292a91cd75c39aebc146254888e3af",
+ "cursor": "5",
+ "cursorCommittedSequence": 104,
+ "contentBytes": 14
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": true,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "provider": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "targetProof": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runId": "run-845a200e-f2c8-4800-80d1-30c5f18dc1af",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "materializationDigest": "ab7a5ec158e8ea520fc39080fffdd6d3f41ef5381a2fae8ecd673bc2b38c56c8"
+ }
+ }
+ },
+ {
+ "requirementId": "LIVE-02",
+ "operation": "cli-bridge.codex.cross-runner-handoff",
+ "target": {
+ "key": "codex-default",
+ "harness": "codex",
+ "model": "default"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "evidence": {
+ "sourceRunner": "pi",
+ "destinationRunner": "codex",
+ "sourceProvider": "tangle-router",
+ "sourceRun": {
+ "id": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "turnId": "turn-07fb8c44-1ec1-47cd-9e35-5f26da5ba3c1",
+ "operationId": "op-codex-cross-runner-handoff-source-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:31:59.149Z",
+ "updatedAt": "2026-08-29T18:32:06.821Z",
+ "terminalAt": "2026-08-29T18:32:06.821Z",
+ "durationMs": 7672,
+ "inputTokens": 1013,
+ "outputTokens": 30,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 0,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "environmentId": "environment-bb5bce9ca64e8d25b0c402084ad8cab7",
+ "controlRef": {
+ "runId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MWU1MzcxNzdiNzNmZTIxN2Q3MDVkMmJhOTY4MmRkM2Q5ZDEwZDEwYjJmNWYyODU3ODAwZmM0ODUxNTJlOWQ5MiIsInhWVXNvSVRNaFF6cHI0NFowWUJmVGdjQ1ZTWl9PQTZXRk1USGVnQkgwbUUiXQ",
+ "sessionId": "session-braid-run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "executionId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "requestDigest": "sha256:b51a1720388396717a2614576dd8ce3f64dfa8de1a74b3b840d73ebcbd8e5856"
+ },
+ "materializationDigest": "faabb0a303987ddff008991ec732a5232d876783f54b424c8d9b418037e26dd5",
+ "cursor": "51",
+ "cursorCommittedSequence": 62,
+ "contentBytes": 208,
+ "receipt": {
+ "version": 1,
+ "runId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "turnId": "turn-07fb8c44-1ec1-47cd-9e35-5f26da5ba3c1",
+ "operationId": "op-codex-cross-runner-handoff-source-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:31:59.135Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_HANDOFF_SOURCE_OK",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "interactions": {
+ "kinds": "[depth-limited]",
+ "answerFieldTypes": "[depth-limited]",
+ "responseScopes": "[depth-limited]",
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-e7df2b83-df02-46ed-baac-de95826d9a75",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "869eebf7e07cd3f9e63dc050cd77719abd95838a967d3ec422ea7347ee77329c",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "faabb0a303987ddff008991ec732a5232d876783f54b424c8d9b418037e26dd5",
+ "digest": "e4614fdf983de149060e25289a3542f2028b593040c8e077f98f4c761279210d"
+ }
+ },
+ "destinationRun": {
+ "id": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "turnId": "turn-10f22304-d306-4424-90f7-ce13ca57a6ab",
+ "operationId": "operation-588fa3008ef24c12b2a1911ba57be31274fabae4a911889e",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:32:08.200Z",
+ "updatedAt": "2026-08-29T18:32:22.121Z",
+ "terminalAt": "2026-08-29T18:32:22.121Z",
+ "durationMs": 13921,
+ "inputTokens": 14723,
+ "outputTokens": 15,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "codex/default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "completeness": "complete",
+ "providerSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "environmentId": "environment-2670734595aa9d8835adde09df96278e",
+ "controlRef": {
+ "runId": "run-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "provider": "cli-bridge",
+ "environmentId": "environment-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "sessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "executionId": "execution-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "requestDigest": "sha256:55e1500ee9e12ffb621bc64c59065773227f3ef3fd937a1dfbd776c5ee517bab"
+ },
+ "materializationDigest": "14c244d45f3b361282eedcb860384c26960ce295337721913c9ba7769199138e",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 77,
+ "contentBytes": 89,
+ "receipt": {
+ "version": 1,
+ "runId": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "turnId": "turn-10f22304-d306-4424-90f7-ce13ca57a6ab",
+ "operationId": "operation-588fa3008ef24c12b2a1911ba57be31274fabae4a911889e",
+ "conversationId": "conv-1",
+ "branchId": "branch-028682fe57a02ae1238fab5232ebda5f",
+ "admittedAt": "2026-08-29T18:32:08.199Z",
+ "profileDigest": "cacd611307b6fc338eb0b04bf568333ff6b6079673a73a4739edc9350eae65bf",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_HANDOFF_OK",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "default",
+ "reasoningEffort": "none"
+ },
+ "harness": "codex"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "default",
+ "runner": "codex",
+ "contextPlanDigest": "sha256:9e7260138b5fbcf6b9f18c86e8235f609bdbabb2e6a45614f312bd50975a782b"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "environmentId": "environment-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "providerSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-e7df2b83-df02-46ed-baac-de95826d9a75",
+ "model": "default",
+ "route": "codex/default",
+ "runner": "codex",
+ "environmentId": "environment-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "providerRunId": "execution-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "contextTransfer": {
+ "planDigest": "sha256:9e7260138b5fbcf6b9f18c86e8235f609bdbabb2e6a45614f312bd50975a782b",
+ "sourceRunId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "destinationRunId": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "destinationSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "acceptedAt": "2026-08-29T18:32:07.640Z"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "4cd0a6cf04ea8ae4b5e030859f2ecbb09d82bcf918d453f6e43db99c4f32a01f",
+ "capabilitiesDigest": "7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a",
+ "materializationDigest": "14c244d45f3b361282eedcb860384c26960ce295337721913c9ba7769199138e",
+ "digest": "74f9f1a6ae3eab48b79cda38e9447bab2c58d525ec376088f67080df59277e41"
+ }
+ },
+ "sourceUsage": {
+ "inputTokens": 1013,
+ "outputTokens": 30
+ },
+ "destinationUsage": {
+ "inputTokens": 14723,
+ "outputTokens": 15
+ },
+ "sourceRunId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "destinationRunId": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "sourceProviderSessionId": "session-braid-run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "destinationProviderSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "sourceMessageId": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "sourceBoundary": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "destinationBranchId": "branch-028682fe57a02ae1238fab5232ebda5f",
+ "planDigest": "69483da4e05095661921965a4ee207aad1bd81a9212758094cffc2d62992db3f",
+ "contextPlanDigest": "72648eb3a3f57936a9930f6beacef7e5cc100b3be6d1a15e242b44b3000bce90",
+ "providerSession": "new",
+ "acceptance": {
+ "required": false
+ },
+ "transfer": {
+ "sourceRunId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "sourceMessageId": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "contextDigest": "sha256:65a47203791f43eed080932f67014366a80945567b131dd8e6a3eef1470b207c",
+ "planDigest": "sha256:9e7260138b5fbcf6b9f18c86e8235f609bdbabb2e6a45614f312bd50975a782b",
+ "forkPlanDigest": "69483da4e05095661921965a4ee207aad1bd81a9212758094cffc2d62992db3f",
+ "transfer": {
+ "planDigest": "sha256:9e7260138b5fbcf6b9f18c86e8235f609bdbabb2e6a45614f312bd50975a782b",
+ "sourceRunId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "destinationRunId": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "destinationSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "acceptedAt": "2026-08-29T18:32:07.640Z"
+ }
+ },
+ "plan": {
+ "kind": "cross-runner",
+ "operationId": "op-codex-cross-runner-handoff-fork-pi-tangle-router-deepseek-v4-flash-codex-default",
+ "sourceConversationId": "conv-1",
+ "sourceBranchId": "branch-1",
+ "throughMessageId": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "destinationBranchId": "branch-028682fe57a02ae1238fab5232ebda5f",
+ "context": {
+ "sourceRunId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "sourceBoundary": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "destinationRunner": "codex",
+ "messages": [
+ {
+ "id": "message-25a60803-1e7c-456e-bdc9-e7fff0d78428",
+ "role": "user",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "id": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "role": "assistant",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "omittedPartIds": [],
+ "transformedPartIds": [],
+ "complete": true,
+ "tokenEstimate": 140,
+ "digest": "72648eb3a3f57936a9930f6beacef7e5cc100b3be6d1a15e242b44b3000bce90"
+ },
+ "portableContextPlan": {
+ "planId": "context-plan-ec7c4c7baefae74254abb732020ea249",
+ "source": {
+ "source": {
+ "runId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "messageId": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MWU1MzcxNzdiNzNmZTIxN2Q3MDVkMmJhOTY4MmRkM2Q5ZDEwZDEwYjJmNWYyODU3ODAwZmM0ODUxNTJlOWQ5MiIsInhWVXNvSVRNaFF6cHI0NFowWUJmVGdjQ1ZTWl9PQTZXRk1USGVnQkgwbUUiXQ",
+ "sessionId": "session-braid-run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "executionId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "requestDigest": "sha256:b51a1720388396717a2614576dd8ce3f64dfa8de1a74b3b840d73ebcbd8e5856",
+ "branchId": "branch-1"
+ },
+ "completeness": "complete",
+ "messages": [
+ {
+ "id": "message-25a60803-1e7c-456e-bdc9-e7fff0d78428",
+ "role": "user",
+ "parts": "[depth-limited]",
+ "timestamp": "2026-08-29T18:31:59.149Z"
+ },
+ {
+ "id": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "role": "assistant",
+ "parts": "[depth-limited]",
+ "timestamp": "2026-08-29T18:31:59.149Z"
+ }
+ ],
+ "attachments": [],
+ "digest": "sha256:65a47203791f43eed080932f67014366a80945567b131dd8e6a3eef1470b207c"
+ },
+ "destination": {
+ "runner": "codex",
+ "provider": "cli-bridge",
+ "environmentId": "environment-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "sessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "runId": "run-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "executionId": "execution-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "model": "default",
+ "profileDigest": "sha256:cacd611307b6fc338eb0b04bf568333ff6b6079673a73a4739edc9350eae65bf"
+ },
+ "messages": [
+ {
+ "messageId": "message-25a60803-1e7c-456e-bdc9-e7fff0d78428",
+ "action": "include",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "messageId": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "action": "include",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "context": {
+ "source": {
+ "runId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "messageId": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MWU1MzcxNzdiNzNmZTIxN2Q3MDVkMmJhOTY4MmRkM2Q5ZDEwZDEwYjJmNWYyODU3ODAwZmM0ODUxNTJlOWQ5MiIsInhWVXNvSVRNaFF6cHI0NFowWUJmVGdjQ1ZTWl9PQTZXRk1USGVnQkgwbUUiXQ",
+ "sessionId": "session-braid-run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "executionId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "requestDigest": "sha256:b51a1720388396717a2614576dd8ce3f64dfa8de1a74b3b840d73ebcbd8e5856",
+ "branchId": "branch-1"
+ },
+ "completeness": "complete",
+ "messages": [
+ {
+ "id": "message-25a60803-1e7c-456e-bdc9-e7fff0d78428",
+ "role": "user",
+ "parts": "[depth-limited]",
+ "timestamp": "2026-08-29T18:31:59.149Z"
+ },
+ {
+ "id": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "role": "assistant",
+ "parts": "[depth-limited]",
+ "timestamp": "2026-08-29T18:31:59.149Z"
+ }
+ ],
+ "attachments": [],
+ "digest": "sha256:65a47203791f43eed080932f67014366a80945567b131dd8e6a3eef1470b207c"
+ },
+ "estimatedTokens": 311,
+ "requiresAcceptance": false,
+ "digest": "sha256:9e7260138b5fbcf6b9f18c86e8235f609bdbabb2e6a45614f312bd50975a782b"
+ },
+ "sourceRunId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "sourceEnvironmentId": "environment-bb5bce9ca64e8d25b0c402084ad8cab7",
+ "destinationEnvironmentId": "environment-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_HANDOFF_OK",
+ "environment": "new",
+ "providerSession": "new",
+ "checkpoint": "none",
+ "allowed": true,
+ "digest": "69483da4e05095661921965a4ee207aad1bd81a9212758094cffc2d62992db3f"
+ },
+ "execution": {
+ "id": "branch-028682fe57a02ae1238fab5232ebda5f",
+ "conversationId": "conv-1",
+ "source": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "throughMessageId": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "throughTurnId": "turn-07fb8c44-1ec1-47cd-9e35-5f26da5ba3c1"
+ },
+ "overrides": {
+ "runner": "codex",
+ "model": "default",
+ "effort": "none"
+ },
+ "environmentId": "environment-handoff-73bc996f3abbc602bf4e4d0e7de38d45",
+ "draftId": "draft-6bf8708eec5a6006a1f63f9eaccabb45",
+ "queueId": "queue-6bf8708eec5a6006a1f63f9eaccabb45",
+ "tipMessageId": "message-c45b0aa1-d83c-4565-9f7b-b44e128d7b9c",
+ "status": "active",
+ "createdAt": "2026-08-29T18:32:07.670Z",
+ "updatedAt": "2026-08-29T18:32:07.670Z"
+ },
+ "destinationAdmission": {
+ "version": 1,
+ "type": "event",
+ "sequence": 70,
+ "revision": 70,
+ "event": {
+ "sequence": 70,
+ "revision": 70,
+ "kind": "run.requested",
+ "payload": {
+ "runId": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_HANDOFF_OK",
+ "admission": {
+ "version": 1,
+ "runId": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "turnId": "turn-10f22304-d306-4424-90f7-ce13ca57a6ab",
+ "operationId": "operation-588fa3008ef24c12b2a1911ba57be31274fabae4a911889e",
+ "conversationId": "conv-1",
+ "branchId": "branch-028682fe57a02ae1238fab5232ebda5f",
+ "admittedAt": "2026-08-29T18:32:08.199Z",
+ "profileDigest": "cacd611307b6fc338eb0b04bf568333ff6b6079673a73a4739edc9350eae65bf",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_HANDOFF_OK",
+ "profile": "[depth-limited]",
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": "[depth-limited]",
+ "model": "default",
+ "runner": "codex",
+ "contextPlanDigest": "sha256:9e7260138b5fbcf6b9f18c86e8235f609bdbabb2e6a45614f312bd50975a782b"
+ },
+ "capabilities": {
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "controls": "[depth-limited]",
+ "events": "[depth-limited]",
+ "usage": true,
+ "environment": "[depth-limited]"
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "environmentId": "environment-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "providerSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-e7df2b83-df02-46ed-baac-de95826d9a75",
+ "model": "default",
+ "route": "codex/default",
+ "runner": "codex",
+ "environmentId": "environment-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "providerRunId": "execution-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "contextTransfer": {
+ "planDigest": "sha256:9e7260138b5fbcf6b9f18c86e8235f609bdbabb2e6a45614f312bd50975a782b",
+ "sourceRunId": "run-10176367-7bcd-4881-b164-1311e4431a9d",
+ "destinationRunId": "run-d02512d1-9094-4c7e-a9e6-7cfca06e1d8b",
+ "destinationSessionId": "session-handoff-16a21baeb4bb8fc08af591896fd88335",
+ "acceptedAt": "2026-08-29T18:32:07.640Z"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "4cd0a6cf04ea8ae4b5e030859f2ecbb09d82bcf918d453f6e43db99c4f32a01f",
+ "capabilitiesDigest": "7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a",
+ "materializationDigest": "14c244d45f3b361282eedcb860384c26960ce295337721913c9ba7769199138e",
+ "digest": "74f9f1a6ae3eab48b79cda38e9447bab2c58d525ec376088f67080df59277e41"
+ },
+ "status": "admitted"
+ }
+ }
+ },
+ "destinationPrompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_HANDOFF_OK",
+ "destinationMarker": "LIVE_BRAID_CODEX-DEFAULT_HANDOFF_OK",
+ "destinationMarkerObserved": true
+ }
+ },
+ {
+ "requirementId": "LIVE-03",
+ "operation": "cli-bridge.interactive-protocol",
+ "target": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "evidence": {
+ "runId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "interactionId": "interaction-893fe85f3df3f2bbabff5c4859e0adf1e04ac9f40bf5094e",
+ "interaction": {
+ "runId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "interactionId": "interaction-893fe85f3df3f2bbabff5c4859e0adf1e04ac9f40bf5094e",
+ "request": {
+ "id": "interaction-893fe85f3df3f2bbabff5c4859e0adf1e04ac9f40bf5094e",
+ "kind": "permission",
+ "title": "Permission: read",
+ "answerSpec": {
+ "fields": [
+ {
+ "type": "select",
+ "name": "grant",
+ "label": "Decision",
+ "required": true,
+ "options": "[depth-limited]"
+ }
+ ]
+ },
+ "responseScopes": [
+ "interaction"
+ ]
+ }
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "interactive-protocol-2976b912-0875-4685-beca-15f502f3c4ea-respond-pi-tangle-router-deepseek-v4-flash",
+ "revision": 52,
+ "operationId": "op-interactive-protocol-2976b912-0875-4685-beca-15f502f3c4ea-respond-pi-tangle-router-deepseek-v4-flash",
+ "command": "respond_interaction",
+ "runId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "control": "respond_interaction",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "staleDuplicate": {
+ "version": 1,
+ "type": "error",
+ "requestId": "interactive-protocol-2976b912-0875-4685-beca-15f502f3c4ea-duplicate-pi-tangle-router-deepseek-v4-flash",
+ "code": "INTERACTION_STALE",
+ "message": "The interaction is already declined",
+ "retryable": false
+ },
+ "providerProgress": {
+ "kind": "run.provider.event",
+ "sequence": 55,
+ "revision": 55,
+ "providerSequence": 39,
+ "cursor": "38"
+ },
+ "postResponseStatus": "streaming",
+ "cleanupCancel": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "interactive-protocol-2976b912-0875-4685-beca-15f502f3c4ea-cleanup-cancel-pi-tangle-router-deepseek-v4-flash",
+ "revision": 66,
+ "operationId": "op-interactive-protocol-2976b912-0875-4685-beca-15f502f3c4ea-cleanup-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "runId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "terminalRun": {
+ "id": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "turnId": "turn-521175b9-ab8e-49ed-901b-94cd2d153b41",
+ "operationId": "op-interactive-protocol-2976b912-0875-4685-beca-15f502f3c4ea-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:32:24.308Z",
+ "updatedAt": "2026-08-29T18:32:29.494Z",
+ "terminalAt": "2026-08-29T18:32:29.494Z",
+ "durationMs": 5186,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "environmentId": "environment-ec3003bcd850e11e9f5410b921741b1f",
+ "controlRef": {
+ "runId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGQwN2I2YzZmZDNjNjBkNDY1ZWU4MTNlYWU3NjhkMWZlZmMxNTc3MTlhNmZmMzllYWJjZjllMTdkNTY0MWUzMSIsIi1nblhtZzFsWFZXdHg4WXg5Qy1UX1NhQ3dRNnN3LTktQkNhSnlVZl80R3ciXQ",
+ "sessionId": "session-braid-run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "executionId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "requestDigest": "sha256:4b09e9a8c22127eff1b1e6be192ab838fea1a8bb40ee3f5ad595ae971e2d5ea9"
+ },
+ "materializationDigest": "8dc8b7d82e3c2c974583fe8a8cb2e49e4383eb6170577d875744d0fe51aa38ea",
+ "cursor": "44",
+ "cursorCommittedSequence": 61,
+ "contentBytes": 1279,
+ "receipt": {
+ "version": 1,
+ "runId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "turnId": "turn-521175b9-ab8e-49ed-901b-94cd2d153b41",
+ "operationId": "op-interactive-protocol-2976b912-0875-4685-beca-15f502f3c4ea-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:32:24.278Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "Use the read tool now to read ./interaction-proof-pi-tangle-router-deepseek-v4-flash.txt. Do not guess its contents or answer without the tool call. After the permission response, report what happened.",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "interactions": {
+ "kinds": "[depth-limited]",
+ "answerFieldTypes": "[depth-limited]",
+ "responseScopes": "[depth-limited]",
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-2976b912-0875-4685-beca-15f502f3c4ea",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-e1b63c49-7e18-4f57-b0db-d85826bd911c",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "6252db037fdd3d61713180c451f0d7f0b422b8210dd242c9a5ed7eec8153b2f4",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "8dc8b7d82e3c2c974583fe8a8cb2e49e4383eb6170577d875744d0fe51aa38ea",
+ "digest": "c70c9360ef5f3d4c819bced981fd804ec1e596b8b820a03d4e2f019c0e42ff52"
+ }
+ },
+ "interactionStatus": "declined",
+ "responseOutcome": "declined",
+ "usage": {
+ "terminalStatus": "aborted",
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "settled": false,
+ "reason": "The interactive proof cancels after provider progress"
+ }
+ }
+ },
+ {
+ "requirementId": "LIVE-04",
+ "operation": "cli-bridge.restart-reconciliation",
+ "target": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "evidence": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "forcedProcess": {
+ "processIdentity": {
+ "instanceId": "6a521ccb-7f16-4b0b-b9d0-e222e56dca7a",
+ "pid": 3387645,
+ "startedAt": 1788028351286
+ },
+ "termination": {
+ "strategy": "process-group",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": true,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3387645
+ ],
+ "roots": [
+ 3387645
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "term",
+ "termSignal": {
+ "method": "process-group",
+ "sent": true
+ },
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "natural": {
+ "cleanupStatus": "forced-exit",
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true
+ },
+ "exit": {
+ "code": null,
+ "signal": "SIGTERM"
+ }
+ },
+ "oldProcess": {
+ "instanceId": "6a521ccb-7f16-4b0b-b9d0-e222e56dca7a",
+ "pid": 3387645,
+ "startedAt": 1788028351286
+ },
+ "newProcess": {
+ "instanceId": "45ee97af-03b6-4d66-b7ef-4877790b61f9",
+ "pid": 3388666,
+ "startedAt": 1788028356602
+ },
+ "activeModel": {
+ "admission": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "requestId": "restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "responseIndex": 2,
+ "revision": 4
+ },
+ "state": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "activeRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "status": "streaming",
+ "responseIndex": 8,
+ "revision": 8
+ },
+ "progress": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "kind": "run.part.updated",
+ "responseIndex": 18,
+ "sequence": 18,
+ "revision": 18,
+ "providerSequence": 8,
+ "cursor": "7"
+ }
+ },
+ "activeStream": {
+ "version": 1,
+ "type": "event",
+ "sequence": 18,
+ "revision": 18,
+ "event": {
+ "sequence": 18,
+ "revision": 18,
+ "kind": "run.part.updated",
+ "payload": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "source": {
+ "eventId": "run-bd391962-dada-4972-998f-f4138190c24f:7",
+ "providerSequence": 8,
+ "cursor": "7",
+ "receivedAt": "2026-08-29T18:32:36.369Z"
+ },
+ "part": {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f:message:0:text",
+ "kind": "text",
+ "text": "",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:7"
+ }
+ }
+ }
+ },
+ "streamedState": {
+ "version": 1,
+ "type": "state",
+ "requestId": "restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-state-streamed-pi-tangle-router-deepseek-v4-flash",
+ "revision": 20,
+ "projection": "full",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 20,
+ "sequence": 20,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-223d11c4-cc13-450e-9986-033597482a25",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "runConfiguration": {
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "connectionId": "connection-live-cli-bridge",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-9edf9877-e45e-4de0-8e1b-fca53d84a0c6",
+ "role": "user",
+ "text": "Do not use tools. Reply directly with LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART, then count from 1 to 1000 with one integer per line.",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "id": "message-2b7305c3-247a-4532-a2bf-bc4b475ceacc",
+ "role": "assistant",
+ "text": "LIVE",
+ "status": "streaming",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "turnId": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:32:32.612Z",
+ "updatedAt": "2026-08-29T18:32:36.395Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "environmentId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "controlRef": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "sessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "executionId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "requestDigest": "sha256:66cfc8aec5c2a0b3cdf1dbd540fcfb2bdbc7b8ecd15ea641d480c1a144499cdd"
+ },
+ "materializationDigest": "a09e9826f20161d49b1bb8d176ba1959e635cc80319caee5392e5a19f4bf7319",
+ "cursor": "9",
+ "cursorCommittedSequence": 20,
+ "contentBytes": 4
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:32:32.272Z",
+ "updatedAt": "2026-08-29T18:32:34.385Z"
+ }
+ ],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "focusedRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "activeRuns": [
+ {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "conversationId": "conv-1",
+ "branchId": "branch-1"
+ }
+ ],
+ "lastError": null
+ },
+ "view": {
+ "revision": 20,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-223d11c4-cc13-450e-9986-033597482a25",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "Live local CLI Bridge",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "running",
+ "statusText": "streaming",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-9edf9877-e45e-4de0-8e1b-fca53d84a0c6",
+ "role": "user",
+ "text": "Do not use tools. Reply directly with LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART, then count from 1 to 1000 with one integer per line.",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "id": "message-2b7305c3-247a-4532-a2bf-bc4b475ceacc",
+ "role": "assistant",
+ "text": "LIVE",
+ "status": "streaming",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "turnId": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "running",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "cursor": "9",
+ "providerSessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash"
+ },
+ "runner": "pi",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "completeness": "incomplete",
+ "contentBytes": 4
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:32:32.272Z",
+ "updatedAt": "2026-08-29T18:32:34.385Z"
+ }
+ ],
+ "activeRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "focusedRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-bd391962-dada-4972-998f-f4138190c24f",
+ "kind": "run",
+ "title": "run run-bd391962-dada-4972-998f-f4138190c24f",
+ "status": "running",
+ "startedAt": "2026-08-29T18:32:32.612Z",
+ "occurredAt": "2026-08-29T18:32:32.612Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "environment:environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "kind": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "detail": "local-process · local · explicit",
+ "startedAt": "2026-08-29T18:32:32.272Z",
+ "occurredAt": "2026-08-29T18:32:34.385Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "environment",
+ "entityId": "environment-d324f6bdb5f854a75f9b2ffb629b5001"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "running",
+ "detail": "profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "occurredAt": "2026-08-29T18:32:36.395Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "running",
+ "occurredAt": "2026-08-29T18:32:36.395Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "running",
+ "occurredAt": "2026-08-29T18:32:36.395Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "running",
+ "occurredAt": "2026-08-29T18:32:36.395Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:4",
+ "kind": "system",
+ "title": "event raw",
+ "status": "running",
+ "detail": "sequence 5",
+ "occurredAt": "2026-08-29T18:32:36.395Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:4",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:5",
+ "kind": "system",
+ "title": "event raw",
+ "status": "running",
+ "detail": "sequence 6",
+ "occurredAt": "2026-08-29T18:32:36.395Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:5",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:6",
+ "kind": "system",
+ "title": "event raw",
+ "status": "running",
+ "detail": "sequence 7",
+ "occurredAt": "2026-08-29T18:32:36.395Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:6",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-29T18:32:31.802Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-29T18:32:31.802Z"
+ },
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "type": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "depth": 4,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "run:run-bd391962-dada-4972-998f-f4138190c24f"
+ ],
+ "runner": "cli-bridge",
+ "startedAt": "2026-08-29T18:32:32.272Z"
+ },
+ {
+ "id": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "type": "turn",
+ "title": "Turn",
+ "status": "running",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:32:32.612Z"
+ },
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "type": "run",
+ "title": "Run",
+ "status": "running",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e"
+ ],
+ "runner": "pi",
+ "startedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "environment",
+ "entityId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "title": "cli-bridge execution",
+ "status": "ready",
+ "lines": [
+ "provider: cli-bridge",
+ "execution: local-process · local",
+ "provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "connection: connection-live-cli-bridge",
+ "lifecycle: ready · retained · cleanup explicit",
+ "continuity: session",
+ "runtime endpoint host: 127.0.0.1",
+ "placement: requested not specified · verified unavailable",
+ "machine: unavailable · physical IP is not exposed",
+ "created: 2026-08-29T18:32:32.272Z",
+ "observed: 2026-08-29T18:32:34.385Z",
+ "unavailable: cli-subscription-and-quota:not-exposed-by-provider",
+ "unavailable: effective-resources:not-exposed-by-provider",
+ "unavailable: machine-specs:not-exposed-by-provider",
+ "unavailable: runtime-cpu-memory-usage:not-exposed-by-provider"
+ ]
+ }
+ ],
+ "details": {
+ "title": "run run-bd391962-dada-4972-998f-f4138190c24f",
+ "fields": [
+ {
+ "label": "status",
+ "value": "streaming"
+ },
+ {
+ "label": "input tokens",
+ "value": "0"
+ },
+ {
+ "label": "output tokens",
+ "value": "0"
+ },
+ {
+ "label": "model",
+ "value": "deepseek-v4-flash"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": false,
+ "source": "application",
+ "reason": "A run is already active"
+ },
+ "run.cancel": {
+ "available": true,
+ "source": "runtime"
+ },
+ "run.queue": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report steering support"
+ },
+ "run.detach": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect while another run is active"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile while another run is active"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "none",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ }
+ },
+ "detachedEvent": {
+ "version": 1,
+ "type": "event",
+ "sequence": 26,
+ "revision": 26,
+ "event": {
+ "sequence": 26,
+ "revision": 26,
+ "kind": "run.detached",
+ "payload": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "status": "detached",
+ "completeness": "streaming",
+ "cursor": "9",
+ "detail": "CONTROL_ACKNOWLEDGED"
+ }
+ }
+ },
+ "detachedState": {
+ "version": 1,
+ "type": "state",
+ "requestId": "restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-state-detached-pi-tangle-router-deepseek-v4-flash",
+ "revision": 26,
+ "projection": "full",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 26,
+ "sequence": 26,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-223d11c4-cc13-450e-9986-033597482a25",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "runConfiguration": {
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "connectionId": "connection-live-cli-bridge",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-9edf9877-e45e-4de0-8e1b-fca53d84a0c6",
+ "role": "user",
+ "text": "Do not use tools. Reply directly with LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART, then count from 1 to 1000 with one integer per line.",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "id": "message-2b7305c3-247a-4532-a2bf-bc4b475ceacc",
+ "role": "assistant",
+ "text": "LIVE",
+ "status": "streaming",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "turnId": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "detached",
+ "startedAt": "2026-08-29T18:32:32.612Z",
+ "updatedAt": "2026-08-29T18:32:36.494Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "environmentId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "controlRef": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "sessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "executionId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "requestDigest": "sha256:66cfc8aec5c2a0b3cdf1dbd540fcfb2bdbc7b8ecd15ea641d480c1a144499cdd"
+ },
+ "materializationDigest": "a09e9826f20161d49b1bb8d176ba1959e635cc80319caee5392e5a19f4bf7319",
+ "cursor": "9",
+ "cursorCommittedSequence": 20,
+ "contentBytes": 4
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:32:32.272Z",
+ "updatedAt": "2026-08-29T18:32:34.385Z"
+ }
+ ],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "focusedRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "activeRuns": [
+ {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "conversationId": "conv-1",
+ "branchId": "branch-1"
+ }
+ ],
+ "lastError": null
+ },
+ "view": {
+ "revision": 26,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-223d11c4-cc13-450e-9986-033597482a25",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "Live local CLI Bridge",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "detached",
+ "statusText": "detached",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-9edf9877-e45e-4de0-8e1b-fca53d84a0c6",
+ "role": "user",
+ "text": "Do not use tools. Reply directly with LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART, then count from 1 to 1000 with one integer per line.",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "id": "message-2b7305c3-247a-4532-a2bf-bc4b475ceacc",
+ "role": "assistant",
+ "text": "LIVE",
+ "status": "streaming",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "turnId": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "detached",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "cursor": "9",
+ "providerSessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash"
+ },
+ "runner": "pi",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "completeness": "incomplete",
+ "contentBytes": 4
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:32:32.272Z",
+ "updatedAt": "2026-08-29T18:32:34.385Z"
+ }
+ ],
+ "activeRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "focusedRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-bd391962-dada-4972-998f-f4138190c24f",
+ "kind": "run",
+ "title": "run run-bd391962-dada-4972-998f-f4138190c24f",
+ "status": "detached",
+ "startedAt": "2026-08-29T18:32:32.612Z",
+ "occurredAt": "2026-08-29T18:32:32.612Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "environment:environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "kind": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "detail": "local-process · local · explicit",
+ "startedAt": "2026-08-29T18:32:32.272Z",
+ "occurredAt": "2026-08-29T18:32:34.385Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "environment",
+ "entityId": "environment-d324f6bdb5f854a75f9b2ffb629b5001"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "detached",
+ "detail": "profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "detached",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "detached",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "detached",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:control:local:detach",
+ "kind": "system",
+ "title": "detach",
+ "status": "detached",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:control.ack:local:detach",
+ "kind": "system",
+ "title": "detach",
+ "status": "detached",
+ "detail": "accepted",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:lifecycle:local:detached",
+ "kind": "system",
+ "title": "detached",
+ "status": "detached",
+ "detail": "CONTROL_ACKNOWLEDGED",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:4",
+ "kind": "system",
+ "title": "event raw",
+ "status": "detached",
+ "detail": "sequence 5",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:4",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:5",
+ "kind": "system",
+ "title": "event raw",
+ "status": "detached",
+ "detail": "sequence 6",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:5",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:6",
+ "kind": "system",
+ "title": "event raw",
+ "status": "detached",
+ "detail": "sequence 7",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:6",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-29T18:32:31.802Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-29T18:32:31.802Z"
+ },
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "type": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "depth": 4,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "run:run-bd391962-dada-4972-998f-f4138190c24f"
+ ],
+ "runner": "cli-bridge",
+ "startedAt": "2026-08-29T18:32:32.272Z"
+ },
+ {
+ "id": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "type": "turn",
+ "title": "Turn",
+ "status": "complete",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:32:32.612Z"
+ },
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "type": "run",
+ "title": "Run",
+ "status": "detached",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e"
+ ],
+ "runner": "pi",
+ "startedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "environment",
+ "entityId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "title": "cli-bridge execution",
+ "status": "ready",
+ "lines": [
+ "provider: cli-bridge",
+ "execution: local-process · local",
+ "provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "connection: connection-live-cli-bridge",
+ "lifecycle: ready · retained · cleanup explicit",
+ "continuity: session",
+ "runtime endpoint host: 127.0.0.1",
+ "placement: requested not specified · verified unavailable",
+ "machine: unavailable · physical IP is not exposed",
+ "created: 2026-08-29T18:32:32.272Z",
+ "observed: 2026-08-29T18:32:34.385Z",
+ "unavailable: cli-subscription-and-quota:not-exposed-by-provider",
+ "unavailable: effective-resources:not-exposed-by-provider",
+ "unavailable: machine-specs:not-exposed-by-provider",
+ "unavailable: runtime-cpu-memory-usage:not-exposed-by-provider"
+ ]
+ }
+ ],
+ "details": {
+ "title": "run run-bd391962-dada-4972-998f-f4138190c24f",
+ "fields": [
+ {
+ "label": "status",
+ "value": "detached"
+ },
+ {
+ "label": "input tokens",
+ "value": "0"
+ },
+ {
+ "label": "output tokens",
+ "value": "0"
+ },
+ {
+ "label": "model",
+ "value": "deepseek-v4-flash"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": false,
+ "source": "application",
+ "reason": "A run is already active"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report queued input support"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report steering support"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report detach support"
+ },
+ "run.reconnect": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.reconcile": {
+ "available": true,
+ "source": "provider"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "none",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ }
+ },
+ "savedCursor": "9",
+ "savedProviderSequence": 10,
+ "savedCursorBoundary": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "kind": "run.part.updated",
+ "responseIndex": 20,
+ "sequence": 20,
+ "revision": 20,
+ "cursor": "9",
+ "providerSequence": 10
+ },
+ "reopenedState": {
+ "version": 1,
+ "type": "state",
+ "requestId": "restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-state-reopened-pi-tangle-router-deepseek-v4-flash",
+ "revision": 26,
+ "projection": "full",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 26,
+ "sequence": 26,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-223d11c4-cc13-450e-9986-033597482a25",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "runConfiguration": {
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "connectionId": "connection-live-cli-bridge",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-9edf9877-e45e-4de0-8e1b-fca53d84a0c6",
+ "role": "user",
+ "text": "Do not use tools. Reply directly with LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART, then count from 1 to 1000 with one integer per line.",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "id": "message-2b7305c3-247a-4532-a2bf-bc4b475ceacc",
+ "role": "assistant",
+ "text": "LIVE",
+ "status": "streaming",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "turnId": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "detached",
+ "startedAt": "2026-08-29T18:32:32.612Z",
+ "updatedAt": "2026-08-29T18:32:36.494Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "environmentId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "controlRef": {
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "executionId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "provider": "cli-bridge",
+ "requestDigest": "sha256:66cfc8aec5c2a0b3cdf1dbd540fcfb2bdbc7b8ecd15ea641d480c1a144499cdd",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "sessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ "materializationDigest": "a09e9826f20161d49b1bb8d176ba1959e635cc80319caee5392e5a19f4bf7319",
+ "cursor": "9",
+ "cursorCommittedSequence": 20,
+ "contentBytes": 4
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:32:32.272Z",
+ "updatedAt": "2026-08-29T18:32:34.385Z"
+ }
+ ],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "focusedRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "activeRuns": [
+ {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "conversationId": "conv-1",
+ "branchId": "branch-1"
+ }
+ ],
+ "lastError": null
+ },
+ "view": {
+ "revision": 26,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-223d11c4-cc13-450e-9986-033597482a25",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "Live local CLI Bridge",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "detached",
+ "statusText": "detached",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-9edf9877-e45e-4de0-8e1b-fca53d84a0c6",
+ "role": "user",
+ "text": "Do not use tools. Reply directly with LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART, then count from 1 to 1000 with one integer per line.",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "id": "message-2b7305c3-247a-4532-a2bf-bc4b475ceacc",
+ "role": "assistant",
+ "text": "LIVE",
+ "status": "streaming",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "turnId": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "detached",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "cursor": "9",
+ "providerSessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash"
+ },
+ "runner": "pi",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "completeness": "incomplete",
+ "contentBytes": 4
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:32:32.272Z",
+ "updatedAt": "2026-08-29T18:32:34.385Z"
+ }
+ ],
+ "activeRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "focusedRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-bd391962-dada-4972-998f-f4138190c24f",
+ "kind": "run",
+ "title": "run run-bd391962-dada-4972-998f-f4138190c24f",
+ "status": "detached",
+ "startedAt": "2026-08-29T18:32:32.612Z",
+ "occurredAt": "2026-08-29T18:32:32.612Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "environment:environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "kind": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "detail": "local-process · local · explicit",
+ "startedAt": "2026-08-29T18:32:32.272Z",
+ "occurredAt": "2026-08-29T18:32:34.385Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "environment",
+ "entityId": "environment-d324f6bdb5f854a75f9b2ffb629b5001"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "detached",
+ "detail": "profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "detached",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "detached",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "detached",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:control:local:detach",
+ "kind": "system",
+ "title": "detach",
+ "status": "detached",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:control.ack:local:detach",
+ "kind": "system",
+ "title": "detach",
+ "status": "detached",
+ "detail": "accepted",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:lifecycle:local:detached",
+ "kind": "system",
+ "title": "detached",
+ "status": "detached",
+ "detail": "CONTROL_ACKNOWLEDGED",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:4",
+ "kind": "system",
+ "title": "event raw",
+ "status": "detached",
+ "detail": "sequence 5",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:4",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:5",
+ "kind": "system",
+ "title": "event raw",
+ "status": "detached",
+ "detail": "sequence 6",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:5",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:6",
+ "kind": "system",
+ "title": "event raw",
+ "status": "detached",
+ "detail": "sequence 7",
+ "occurredAt": "2026-08-29T18:32:36.494Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:6",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-29T18:32:31.802Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-29T18:32:31.802Z"
+ },
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "type": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "depth": 4,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "run:run-bd391962-dada-4972-998f-f4138190c24f"
+ ],
+ "runner": "cli-bridge",
+ "startedAt": "2026-08-29T18:32:32.272Z"
+ },
+ {
+ "id": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "type": "turn",
+ "title": "Turn",
+ "status": "complete",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:32:32.612Z"
+ },
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "type": "run",
+ "title": "Run",
+ "status": "detached",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e"
+ ],
+ "runner": "pi",
+ "startedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "environment",
+ "entityId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "title": "cli-bridge execution",
+ "status": "ready",
+ "lines": [
+ "provider: cli-bridge",
+ "execution: local-process · local",
+ "provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "connection: connection-live-cli-bridge",
+ "lifecycle: ready · retained · cleanup explicit",
+ "continuity: session",
+ "runtime endpoint host: 127.0.0.1",
+ "placement: requested not specified · verified unavailable",
+ "machine: unavailable · physical IP is not exposed",
+ "created: 2026-08-29T18:32:32.272Z",
+ "observed: 2026-08-29T18:32:34.385Z",
+ "unavailable: cli-subscription-and-quota:not-exposed-by-provider",
+ "unavailable: effective-resources:not-exposed-by-provider",
+ "unavailable: machine-specs:not-exposed-by-provider",
+ "unavailable: runtime-cpu-memory-usage:not-exposed-by-provider"
+ ]
+ }
+ ],
+ "details": {
+ "title": "run run-bd391962-dada-4972-998f-f4138190c24f",
+ "fields": [
+ {
+ "label": "status",
+ "value": "detached"
+ },
+ {
+ "label": "input tokens",
+ "value": "0"
+ },
+ {
+ "label": "output tokens",
+ "value": "0"
+ },
+ {
+ "label": "model",
+ "value": "deepseek-v4-flash"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": false,
+ "source": "application",
+ "reason": "A run is already active"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report queued input support"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report steering support"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report detach support"
+ },
+ "run.reconnect": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.reconcile": {
+ "available": true,
+ "source": "provider"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "none",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ }
+ },
+ "detach": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-detach-pi-tangle-router-deepseek-v4-flash",
+ "revision": 24,
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-detach-pi-tangle-router-deepseek-v4-flash",
+ "command": "detach",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "control": "detach",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "reconnect": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-reconnect-pi-tangle-router-deepseek-v4-flash",
+ "revision": 2059,
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-reconnect-pi-tangle-router-deepseek-v4-flash",
+ "command": "reconnect"
+ },
+ "reconnectBoundary": {
+ "version": 1,
+ "type": "event",
+ "sequence": 27,
+ "revision": 27,
+ "event": {
+ "sequence": 27,
+ "revision": 27,
+ "kind": "run.reconnecting",
+ "payload": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "status": "reconnecting",
+ "completeness": "streaming",
+ "cursor": "9"
+ }
+ }
+ },
+ "replayEvent": {
+ "version": 1,
+ "type": "event",
+ "sequence": 28,
+ "revision": 28,
+ "event": {
+ "sequence": 28,
+ "revision": 28,
+ "kind": "run.part.updated",
+ "payload": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "source": {
+ "eventId": "run-bd391962-dada-4972-998f-f4138190c24f:10",
+ "providerSequence": 11,
+ "cursor": "10",
+ "receivedAt": "2026-08-29T18:32:42.959Z"
+ },
+ "part": {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f:message:0:text",
+ "kind": "text",
+ "text": "LIVE_B",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:10"
+ },
+ "delta": "_"
+ }
+ }
+ },
+ "terminalReceipts": [
+ {
+ "session": "45ee97af-03b6-4d66-b7ef-4877790b61f9",
+ "responseIndex": 2035,
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "sequence": 2059,
+ "revision": 2059,
+ "status": "completed",
+ "providerEventId": "run-bd391962-dada-4972-998f-f4138190c24f:final",
+ "providerSequence": 2042,
+ "cursor": null
+ }
+ ],
+ "finalState": {
+ "version": 1,
+ "type": "state",
+ "requestId": "restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-state-poll-0-pi-tangle-router-deepseek-v4-flash",
+ "revision": 2059,
+ "projection": "full",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 2059,
+ "sequence": 2059,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-223d11c4-cc13-450e-9986-033597482a25",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "runConfiguration": {
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "connectionId": "connection-live-cli-bridge",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-9edf9877-e45e-4de0-8e1b-fca53d84a0c6",
+ "role": "user",
+ "text": "Do not use tools. Reply directly with LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART, then count from 1 to 1000 with one integer per line.",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "id": "message-2b7305c3-247a-4532-a2bf-bc4b475ceacc",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART\n\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n74\n75\n76\n77\n78\n79\n80\n81\n82\n83\n84\n85\n86\n87\n88\n89\n90\n91\n92\n93\n94\n95\n96\n97\n98\n99\n100\n101\n102\n103\n104\n105\n106\n107\n108\n109\n110\n111\n112\n113\n114\n115\n116\n117\n118\n119\n120\n121\n122\n123\n124\n125\n126\n127\n128\n129\n130\n131\n132\n133\n134\n135\n136\n137\n138\n139\n140\n141\n142\n143\n144\n145\n146\n147\n148\n149\n150\n151\n152\n153\n154\n155\n156\n157\n158\n159\n160\n161\n162\n163\n164\n165\n166\n167\n168\n169\n170\n171\n172\n173\n174\n175\n176\n177\n178\n179\n180\n181\n182\n183\n184\n185\n186\n187\n188\n189\n190\n191\n192\n193\n194\n195\n196\n197\n198\n199\n200\n201\n202\n203\n204\n205\n206\n207\n208\n209\n210\n211\n212\n213\n214\n215\n216\n217\n218\n219\n220\n221\n222\n223\n224\n225\n226\n227\n228\n229\n230\n231\n232\n233\n234\n235\n236\n237\n238\n239\n240\n241\n242\n243\n244\n245\n246\n247\n248\n249\n250\n251\n252\n253\n254\n255\n256\n257\n258\n259\n260\n261\n262\n263\n264\n265\n266\n267\n268\n269\n270\n271\n272\n273\n274\n275\n276\n277\n278\n279\n280\n281\n282\n283\n284\n285\n286\n287\n288\n289\n290\n291\n292\n293\n294\n295\n296\n297\n298\n299\n300\n301\n302\n303\n304\n305\n306\n307\n308\n309\n310\n311\n312\n313\n314\n315\n316\n317\n318\n319\n320\n321\n322\n323\n324\n325\n326\n327\n328\n329\n330\n331\n332\n333\n334\n335\n336\n337\n338\n339\n340\n341\n342\n343\n344\n345\n346\n347\n348\n349\n350\n351\n352\n353\n354\n355\n356\n357\n358\n359\n360\n361\n362\n363\n364\n365\n366\n367\n368\n369\n370\n371\n372\n373\n374\n375\n376\n377\n378\n379\n380\n381\n382\n383\n384\n385\n386\n387\n388\n389\n390\n391\n392\n393\n394\n395\n396\n397\n398\n399\n400\n401\n402\n403\n404\n405\n406\n407\n408\n409\n410\n411\n412\n413\n414\n415\n416\n417\n418\n419\n420\n421\n422\n423\n424\n425\n426\n427\n428\n429\n430\n431\n432\n433\n434\n435\n436\n437\n438\n439\n440\n441\n442\n443\n444\n445\n446\n447\n448\n449\n450\n451\n452\n453\n454\n455\n456\n457\n458\n459\n460\n461\n462\n463\n464\n465\n466\n467\n468\n469\n470\n471\n472\n473\n474\n475\n476\n477\n478\n479\n480\n481\n482\n483\n484\n485\n486\n487\n488\n489\n490\n491\n492\n493\n494\n495\n496\n497\n498\n499\n500\n501\n502\n503\n504\n505\n506\n507\n508\n509\n510\n511\n512\n513\n514\n515\n516\n517\n518\n519\n520\n521\n522\n523\n524\n525\n526\n527\n528\n529\n530\n531\n532\n533\n534\n535\n536\n537\n538\n539\n540\n541\n542\n543\n544\n545\n546\n547\n548\n549\n550\n551\n552\n553\n554\n555\n556\n557\n558\n559\n560\n561\n562\n563\n564\n565\n566\n567\n568\n569\n570\n571\n572\n573\n574\n575\n576\n577\n578\n579\n580\n581\n582\n583\n584\n585\n586\n587\n588\n589\n590\n591\n592\n593\n594\n595\n596\n597\n598\n599\n600\n601\n602\n603\n604\n605\n606\n607\n608\n609\n610\n611\n612\n613\n614\n615\n616\n617\n618\n619\n620\n621\n622\n623\n624\n625\n626\n627\n628\n629\n630\n631\n632\n633\n634\n635\n636\n637\n638\n639\n640\n641\n642\n643\n644\n645\n646\n647\n648\n649\n650\n651\n652\n653\n654\n655\n656\n657\n658\n659\n660\n661\n662\n663\n664\n665\n666\n667\n668\n669\n670\n671\n672\n673\n674\n675\n676\n677\n678\n679\n680\n681\n682\n683\n684\n685\n686\n687\n688\n689\n690\n691\n692\n693\n694\n695\n696\n697\n698\n699\n700\n701\n702\n703\n704\n705\n706\n707\n708\n709\n710\n711\n712\n713\n714\n715\n716\n717\n718\n719\n720\n721\n722\n723\n724\n725\n726\n727\n728\n729\n730\n731\n732\n733\n734\n735\n736\n737\n738\n739\n740\n741\n742\n743\n744\n745\n746\n747\n748\n749\n750\n751\n752\n753\n754\n755\n756\n757\n758\n759\n760\n761\n762\n763\n764\n765\n766\n767\n768\n769\n770\n771\n772\n773\n774\n775\n776\n777\n778\n779\n780\n781\n782\n783\n784\n785\n786\n787\n788\n789\n790\n791\n792\n793\n794\n795\n796\n797\n798\n799\n800\n801\n802\n803\n804\n805\n806\n807\n808\n809\n810\n811\n812\n813\n814\n815\n816\n817\n818\n819\n820\n821\n822\n823\n824\n825\n826\n827\n828\n829\n830\n831\n832\n833\n834\n835\n836\n837\n838\n839\n840\n841\n842\n843\n844\n845\n846\n847\n848\n849\n850\n851\n852\n853\n854\n855\n856\n857\n858\n859\n860\n861\n862\n863\n864\n865\n866\n867\n868\n869\n870\n871\n872\n873\n874\n875\n876\n877\n878\n879\n880\n881\n882\n883\n884\n885\n886\n887\n888\n889\n890\n891\n892\n893\n894\n895\n896\n897\n898\n899\n900\n901\n902\n903\n904\n905\n906\n907\n908\n909\n910\n911\n912\n913\n914\n915\n916\n917\n918\n919\n920\n921\n922\n923\n924\n925\n926\n927\n928\n929\n930\n931\n932\n933\n934\n935\n936\n937\n938\n939\n940\n941\n942\n943\n944\n945\n946\n947\n948\n949\n950\n951\n952\n953\n954\n955\n956\n957\n958\n959\n960\n961\n962\n963\n964\n965\n966\n967\n968\n969\n970\n971\n972\n973\n974\n975\n976\n977\n978\n979\n980\n981\n982\n983\n984\n985\n986\n987\n988\n989\n990\n991\n992\n993\n994\n995\n996\n997\n998\n999\n1000",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "turnId": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:32:32.612Z",
+ "updatedAt": "2026-08-29T18:33:04.464Z",
+ "terminalAt": "2026-08-29T18:33:04.464Z",
+ "durationMs": 31852,
+ "inputTokens": 1022,
+ "outputTokens": 2028,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 0,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "environmentId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "controlRef": {
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "executionId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "provider": "cli-bridge",
+ "requestDigest": "sha256:66cfc8aec5c2a0b3cdf1dbd540fcfb2bdbc7b8ecd15ea641d480c1a144499cdd",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "sessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ "materializationDigest": "a09e9826f20161d49b1bb8d176ba1959e635cc80319caee5392e5a19f4bf7319",
+ "cursor": "2040",
+ "cursorCommittedSequence": 2058,
+ "contentBytes": 11861
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 1022,
+ "output": 2028,
+ "reasoning": 0,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:32:32.272Z",
+ "updatedAt": "2026-08-29T18:32:34.385Z"
+ }
+ ],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": null,
+ "focusedRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "activeRuns": [],
+ "lastError": null
+ },
+ "view": {
+ "revision": 2059,
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-223d11c4-cc13-450e-9986-033597482a25",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "Live local CLI Bridge",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "completed",
+ "statusText": "completed",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-9edf9877-e45e-4de0-8e1b-fca53d84a0c6",
+ "role": "user",
+ "text": "Do not use tools. Reply directly with LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART, then count from 1 to 1000 with one integer per line.",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ },
+ {
+ "id": "message-2b7305c3-247a-4532-a2bf-bc4b475ceacc",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_RESTART\n\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n62\n63\n64\n65\n66\n67\n68\n69\n70\n71\n72\n73\n74\n75\n76\n77\n78\n79\n80\n81\n82\n83\n84\n85\n86\n87\n88\n89\n90\n91\n92\n93\n94\n95\n96\n97\n98\n99\n100\n101\n102\n103\n104\n105\n106\n107\n108\n109\n110\n111\n112\n113\n114\n115\n116\n117\n118\n119\n120\n121\n122\n123\n124\n125\n126\n127\n128\n129\n130\n131\n132\n133\n134\n135\n136\n137\n138\n139\n140\n141\n142\n143\n144\n145\n146\n147\n148\n149\n150\n151\n152\n153\n154\n155\n156\n157\n158\n159\n160\n161\n162\n163\n164\n165\n166\n167\n168\n169\n170\n171\n172\n173\n174\n175\n176\n177\n178\n179\n180\n181\n182\n183\n184\n185\n186\n187\n188\n189\n190\n191\n192\n193\n194\n195\n196\n197\n198\n199\n200\n201\n202\n203\n204\n205\n206\n207\n208\n209\n210\n211\n212\n213\n214\n215\n216\n217\n218\n219\n220\n221\n222\n223\n224\n225\n226\n227\n228\n229\n230\n231\n232\n233\n234\n235\n236\n237\n238\n239\n240\n241\n242\n243\n244\n245\n246\n247\n248\n249\n250\n251\n252\n253\n254\n255\n256\n257\n258\n259\n260\n261\n262\n263\n264\n265\n266\n267\n268\n269\n270\n271\n272\n273\n274\n275\n276\n277\n278\n279\n280\n281\n282\n283\n284\n285\n286\n287\n288\n289\n290\n291\n292\n293\n294\n295\n296\n297\n298\n299\n300\n301\n302\n303\n304\n305\n306\n307\n308\n309\n310\n311\n312\n313\n314\n315\n316\n317\n318\n319\n320\n321\n322\n323\n324\n325\n326\n327\n328\n329\n330\n331\n332\n333\n334\n335\n336\n337\n338\n339\n340\n341\n342\n343\n344\n345\n346\n347\n348\n349\n350\n351\n352\n353\n354\n355\n356\n357\n358\n359\n360\n361\n362\n363\n364\n365\n366\n367\n368\n369\n370\n371\n372\n373\n374\n375\n376\n377\n378\n379\n380\n381\n382\n383\n384\n385\n386\n387\n388\n389\n390\n391\n392\n393\n394\n395\n396\n397\n398\n399\n400\n401\n402\n403\n404\n405\n406\n407\n408\n409\n410\n411\n412\n413\n414\n415\n416\n417\n418\n419\n420\n421\n422\n423\n424\n425\n426\n427\n428\n429\n430\n431\n432\n433\n434\n435\n436\n437\n438\n439\n440\n441\n442\n443\n444\n445\n446\n447\n448\n449\n450\n451\n452\n453\n454\n455\n456\n457\n458\n459\n460\n461\n462\n463\n464\n465\n466\n467\n468\n469\n470\n471\n472\n473\n474\n475\n476\n477\n478\n479\n480\n481\n482\n483\n484\n485\n486\n487\n488\n489\n490\n491\n492\n493\n494\n495\n496\n497\n498\n499\n500\n501\n502\n503\n504\n505\n506\n507\n508\n509\n510\n511\n512\n513\n514\n515\n516\n517\n518\n519\n520\n521\n522\n523\n524\n525\n526\n527\n528\n529\n530\n531\n532\n533\n534\n535\n536\n537\n538\n539\n540\n541\n542\n543\n544\n545\n546\n547\n548\n549\n550\n551\n552\n553\n554\n555\n556\n557\n558\n559\n560\n561\n562\n563\n564\n565\n566\n567\n568\n569\n570\n571\n572\n573\n574\n575\n576\n577\n578\n579\n580\n581\n582\n583\n584\n585\n586\n587\n588\n589\n590\n591\n592\n593\n594\n595\n596\n597\n598\n599\n600\n601\n602\n603\n604\n605\n606\n607\n608\n609\n610\n611\n612\n613\n614\n615\n616\n617\n618\n619\n620\n621\n622\n623\n624\n625\n626\n627\n628\n629\n630\n631\n632\n633\n634\n635\n636\n637\n638\n639\n640\n641\n642\n643\n644\n645\n646\n647\n648\n649\n650\n651\n652\n653\n654\n655\n656\n657\n658\n659\n660\n661\n662\n663\n664\n665\n666\n667\n668\n669\n670\n671\n672\n673\n674\n675\n676\n677\n678\n679\n680\n681\n682\n683\n684\n685\n686\n687\n688\n689\n690\n691\n692\n693\n694\n695\n696\n697\n698\n699\n700\n701\n702\n703\n704\n705\n706\n707\n708\n709\n710\n711\n712\n713\n714\n715\n716\n717\n718\n719\n720\n721\n722\n723\n724\n725\n726\n727\n728\n729\n730\n731\n732\n733\n734\n735\n736\n737\n738\n739\n740\n741\n742\n743\n744\n745\n746\n747\n748\n749\n750\n751\n752\n753\n754\n755\n756\n757\n758\n759\n760\n761\n762\n763\n764\n765\n766\n767\n768\n769\n770\n771\n772\n773\n774\n775\n776\n777\n778\n779\n780\n781\n782\n783\n784\n785\n786\n787\n788\n789\n790\n791\n792\n793\n794\n795\n796\n797\n798\n799\n800\n801\n802\n803\n804\n805\n806\n807\n808\n809\n810\n811\n812\n813\n814\n815\n816\n817\n818\n819\n820\n821\n822\n823\n824\n825\n826\n827\n828\n829\n830\n831\n832\n833\n834\n835\n836\n837\n838\n839\n840\n841\n842\n843\n844\n845\n846\n847\n848\n849\n850\n851\n852\n853\n854\n855\n856\n857\n858\n859\n860\n861\n862\n863\n864\n865\n866\n867\n868\n869\n870\n871\n872\n873\n874\n875\n876\n877\n878\n879\n880\n881\n882\n883\n884\n885\n886\n887\n888\n889\n890\n891\n892\n893\n894\n895\n896\n897\n898\n899\n900\n901\n902\n903\n904\n905\n906\n907\n908\n909\n910\n911\n912\n913\n914\n915\n916\n917\n918\n919\n920\n921\n922\n923\n924\n925\n926\n927\n928\n929\n930\n931\n932\n933\n934\n935\n936\n937\n938\n939\n940\n941\n942\n943\n944\n945\n946\n947\n948\n949\n950\n951\n952\n953\n954\n955\n956\n957\n958\n959\n960\n961\n962\n963\n964\n965\n966\n967\n968\n969\n970\n971\n972\n973\n974\n975\n976\n977\n978\n979\n980\n981\n982\n983\n984\n985\n986\n987\n988\n989\n990\n991\n992\n993\n994\n995\n996\n997\n998\n999\n1000",
+ "status": "complete",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "parts": [
+ "[depth-limited]"
+ ]
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "turnId": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "effort": "none",
+ "cursor": "2040",
+ "providerSessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "usage": {
+ "input": 1022,
+ "output": 2028,
+ "reasoning": 0,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "elapsedMs": 31852
+ },
+ "runner": "pi",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "completeness": "complete",
+ "contentBytes": 11861
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 1022,
+ "output": 2028,
+ "reasoning": 0,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "providerEnvironmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T18:32:32.272Z",
+ "updatedAt": "2026-08-29T18:32:34.385Z"
+ }
+ ],
+ "focusedRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-bd391962-dada-4972-998f-f4138190c24f",
+ "kind": "run",
+ "title": "run run-bd391962-dada-4972-998f-f4138190c24f",
+ "status": "completed",
+ "elapsedMs": 31852,
+ "startedAt": "2026-08-29T18:32:32.612Z",
+ "occurredAt": "2026-08-29T18:32:32.612Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "environment:environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "kind": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "detail": "local-process · local · explicit",
+ "startedAt": "2026-08-29T18:32:32.272Z",
+ "occurredAt": "2026-08-29T18:32:34.385Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "environment",
+ "entityId": "environment-d324f6bdb5f854a75f9b2ffb629b5001"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "completed",
+ "detail": "profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "completed",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "completed",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "completed",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:control:local:detach",
+ "kind": "system",
+ "title": "detach",
+ "status": "completed",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:control.ack:local:detach",
+ "kind": "system",
+ "title": "detach",
+ "status": "completed",
+ "detail": "accepted",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:lifecycle:local:detached",
+ "kind": "system",
+ "title": "detached",
+ "status": "completed",
+ "detail": "CONTROL_ACKNOWLEDGED",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:lifecycle:local:reconnecting",
+ "kind": "system",
+ "title": "reconnecting",
+ "status": "completed",
+ "detail": "9",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "activity:run-bd391962-dada-4972-998f-f4138190c24f:status:local:running",
+ "kind": "system",
+ "title": "running",
+ "status": "completed",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:4",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 5",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:4",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:5",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 6",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:5",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:6",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 7",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:6",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:2036",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 2037",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:2036",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:2037",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 2038",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:2037",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:2038",
+ "kind": "system",
+ "title": "event model-processing",
+ "status": "completed",
+ "detail": "sequence 2039",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:2038",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ {
+ "id": "event:run-bd391962-dada-4972-998f-f4138190c24f:run-bd391962-dada-4972-998f-f4138190c24f:2039",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 2040",
+ "occurredAt": "2026-08-29T18:33:04.464Z",
+ "sourceEventId": "run-bd391962-dada-4972-998f-f4138190c24f:2039",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "entityType": "run",
+ "entityId": "run-bd391962-dada-4972-998f-f4138190c24f"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-29T18:32:31.802Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-29T18:32:31.802Z"
+ },
+ {
+ "id": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "type": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "depth": 4,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "run:run-bd391962-dada-4972-998f-f4138190c24f"
+ ],
+ "runner": "cli-bridge",
+ "startedAt": "2026-08-29T18:32:32.272Z"
+ },
+ {
+ "id": "turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e",
+ "type": "turn",
+ "title": "Turn",
+ "status": "complete",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T18:32:32.612Z"
+ },
+ {
+ "id": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "type": "run",
+ "title": "Run",
+ "status": "completed",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-f16c4b1b-c97e-4beb-8c63-0a3119fb107e"
+ ],
+ "runner": "pi",
+ "elapsedMs": 31852,
+ "startedAt": "2026-08-29T18:32:32.612Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "environment",
+ "entityId": "environment-d324f6bdb5f854a75f9b2ffb629b5001",
+ "title": "cli-bridge execution",
+ "status": "ready",
+ "lines": [
+ "provider: cli-bridge",
+ "execution: local-process · local",
+ "provider environment: cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "connection: connection-live-cli-bridge",
+ "lifecycle: ready · retained · cleanup explicit",
+ "continuity: session",
+ "runtime endpoint host: 127.0.0.1",
+ "placement: requested not specified · verified unavailable",
+ "machine: unavailable · physical IP is not exposed",
+ "created: 2026-08-29T18:32:32.272Z",
+ "observed: 2026-08-29T18:32:34.385Z",
+ "unavailable: cli-subscription-and-quota:not-exposed-by-provider",
+ "unavailable: effective-resources:not-exposed-by-provider",
+ "unavailable: machine-specs:not-exposed-by-provider",
+ "unavailable: runtime-cpu-memory-usage:not-exposed-by-provider"
+ ]
+ }
+ ],
+ "details": {
+ "title": "run run-bd391962-dada-4972-998f-f4138190c24f",
+ "fields": [
+ {
+ "label": "status",
+ "value": "completed"
+ },
+ {
+ "label": "input tokens",
+ "value": "1022"
+ },
+ {
+ "label": "output tokens",
+ "value": "2028"
+ },
+ {
+ "label": "token measurement",
+ "value": "complete"
+ },
+ {
+ "label": "model",
+ "value": "pi/tangle-router/deepseek-v4-flash"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.recipe": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "none",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ }
+ },
+ "restartProof": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "savedCursor": "9",
+ "savedProviderSequence": 10,
+ "providerSessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f",
+ "controlRef": {
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YmJjOTE1NjNkOGI4ODlkZWZjOWQxOTZiY2M4YmVmM2Q4YTUwMmNjMTA0YmYwOTUyMzdiZjAzZjdmMjQ0YTQwNSIsInlYQnhIMDNUTXZhUXh4ZHB6TkRWNy1oSy16aVZXeTRhb0tfaDAwSWVuZkEiXQ",
+ "executionId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "provider": "cli-bridge",
+ "requestDigest": "sha256:66cfc8aec5c2a0b3cdf1dbd540fcfb2bdbc7b8ecd15ea641d480c1a144499cdd",
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "sessionId": "session-braid-run-bd391962-dada-4972-998f-f4138190c24f"
+ },
+ "process": {
+ "oldPid": 3387645,
+ "newPid": 3388666,
+ "oldProcessInstanceId": "6a521ccb-7f16-4b0b-b9d0-e222e56dca7a",
+ "newProcessInstanceId": "45ee97af-03b6-4d66-b7ef-4877790b61f9",
+ "signal": "SIGTERM",
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3387645
+ ],
+ "roots": [
+ 3387645
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "cleanupStatus": "term"
+ },
+ "activeModel": {
+ "admission": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "requestId": "restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-send-pi-tangle-router-deepseek-v4-flash",
+ "responseIndex": 2,
+ "revision": 4
+ },
+ "state": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "activeRunId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "status": "streaming",
+ "responseIndex": 8,
+ "revision": 8
+ },
+ "progress": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "kind": "run.part.updated",
+ "responseIndex": 18,
+ "sequence": 18,
+ "revision": 18,
+ "providerSequence": 8,
+ "cursor": "7"
+ }
+ },
+ "savedCursorBoundary": {
+ "kind": "run.part.updated",
+ "responseIndex": 20,
+ "sequence": 20,
+ "revision": 20,
+ "cursor": "9",
+ "providerSequence": 10
+ },
+ "reconnect": {
+ "requestId": "restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-reconnect-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-restart-reconciliation-223d11c4-cc13-450e-9986-033597482a25-reconnect-pi-tangle-router-deepseek-v4-flash",
+ "ackRevision": 2059,
+ "boundary": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "kind": "run.reconnecting",
+ "responseIndex": 3,
+ "sequence": 27,
+ "revision": 27,
+ "savedCursor": "9"
+ },
+ "replay": {
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "kind": "run.part.updated",
+ "responseIndex": 4,
+ "sequence": 28,
+ "revision": 28,
+ "providerSequence": 11,
+ "cursor": "10"
+ }
+ },
+ "terminal": {
+ "deliveryCount": 1,
+ "receipt": {
+ "session": "45ee97af-03b6-4d66-b7ef-4877790b61f9",
+ "responseIndex": 2035,
+ "runId": "run-bd391962-dada-4972-998f-f4138190c24f",
+ "sequence": 2059,
+ "revision": 2059,
+ "status": "completed",
+ "providerEventId": "run-bd391962-dada-4972-998f-f4138190c24f:final",
+ "providerSequence": 2042,
+ "cursor": null
+ },
+ "durableRevision": 2059,
+ "durableCursor": "2040"
+ }
+ },
+ "usage": {
+ "inputTokens": 1022,
+ "outputTokens": 2028
+ },
+ "statePath": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-223d11c4-cc13-450e-9986-033597482a25/braid.sqlite",
+ "endpoint": "http://127.0.0.1:3344",
+ "resubmitted": false
+ }
+ },
+ {
+ "requirementId": "LIVE-05",
+ "operation": "cli-bridge.runner-conformance",
+ "target": {
+ "key": "glm-5.2",
+ "harness": "opencode",
+ "provider": "zai-coding-plan",
+ "model": "glm-5.2"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "evidence": {
+ "normal": {
+ "status": "completed",
+ "runId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "run": {
+ "id": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "turnId": "turn-eb3a5109-f39a-4855-9097-5418bc2ef817",
+ "operationId": "op-runner-conformance-send-glm-5.2",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:33:07.254Z",
+ "updatedAt": "2026-08-29T18:33:12.119Z",
+ "terminalAt": "2026-08-29T18:33:12.119Z",
+ "durationMs": 4865,
+ "inputTokens": 7209,
+ "outputTokens": 49,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "opencode/zai-coding-plan/glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "environmentId": "environment-c5f3b043607d4b48bd5f6ef1d633995c",
+ "controlRef": {
+ "runId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmY1ZGI5OTU2ODI2MDk3MmE1NGFkOTZmZDUzYTA0NWY5ZTQ0Y2MwNzc2MDVhZDJiOTExZGI5NmQzYzk0Y2E2MDIiLCJETXdqcDhkVWZ5aTFsVWlMdC1QM1FMWDlleGZKZ1pJeEhocndyV29hTnJvIl0",
+ "sessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "executionId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "requestDigest": "sha256:c1d44afa3dd4f7f158dffc1337e9bb0fea0fd6e3b981c7174cd769e7c3bf3bd8"
+ },
+ "materializationDigest": "e553ffd0ee98ae80dac1c103d8f501ca0ac17ec85a327cb55b909e7bb44d77fc",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 12,
+ "contentBytes": 61,
+ "receipt": {
+ "version": 1,
+ "runId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "turnId": "turn-eb3a5109-f39a-4855-9097-5418bc2ef817",
+ "operationId": "op-runner-conformance-send-glm-5.2",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:33:07.240Z",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK",
+ "profile": {
+ "name": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "opencode"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "glm-5.2",
+ "runner": "opencode"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-d5a4bc88-fa1f-42f2-b472-e5d6c8c53ff3",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runner": "opencode",
+ "providerRunId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "40e40badb645f83cc3db4ce13c774bd8dceca2cedc05a350e556a8300f9b214e",
+ "capabilitiesDigest": "b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6",
+ "materializationDigest": "e553ffd0ee98ae80dac1c103d8f501ca0ac17ec85a327cb55b909e7bb44d77fc",
+ "digest": "b6a7aa72fb16f74786369a5ea9b9d3223bba69291318388ee75a06bf5ed9eb08"
+ }
+ },
+ "assistant": {
+ "id": "message-fb846034-03c9-4135-bda1-fdfed093a5be",
+ "role": "assistant",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "status": "complete",
+ "runId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "parts": [
+ {
+ "id": "op-runner-conformance-send-glm-5.2:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_GLM-5_2_OK",
+ "sourceEventId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_GLM-5_2_OK",
+ "marker": "LIVE_BRAID_GLM-5_2_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_GLM-5_2_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "runner-conformance-cancel-send-glm-5.2",
+ "operationId": "op-runner-conformance-cancel-send-glm-5.2",
+ "revision": 14,
+ "replayed": false,
+ "runId": "run-478987f0-5f07-411b-acd2-9b0166672c42",
+ "admission": {
+ "version": 1,
+ "runId": "run-478987f0-5f07-411b-acd2-9b0166672c42",
+ "turnId": "turn-def886b1-2c2b-4a1e-9897-c680d961e0d6",
+ "operationId": "op-runner-conformance-cancel-send-glm-5.2",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:33:12.989Z",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "requested": {
+ "text": "For LIVE_BRAID_GLM-5_2_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live opencode/zai-coding-plan/glm-5.2",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "opencode"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "glm-5.2",
+ "runner": "opencode"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "providerSessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-opencode-zai-coding-plan-glm-5-2-d5a4bc88-fa1f-42f2-b472-e5d6c8c53ff3",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runner": "opencode",
+ "providerRunId": "run-478987f0-5f07-411b-acd2-9b0166672c42",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "ca4c641f44178f593e1683753d84af698aa9ebb98cb9afda4a6ca1e2ccc4948b",
+ "capabilitiesDigest": "b2460314693e3192955c8d5e6905858d6eb7456a6448e6c3c78223e7edcd4dc6",
+ "materializationDigest": "36ce4db181d49248f36ecbf332b9a055eda108d7799b79da52e31af57fce553d",
+ "digest": "5d2136eaf2871276b0a7ed4f8605207304d9181e341025e5899512456a157122"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-478987f0-5f07-411b-acd2-9b0166672c42",
+ "activeRun": {
+ "id": "run-478987f0-5f07-411b-acd2-9b0166672c42",
+ "turnId": "turn-def886b1-2c2b-4a1e-9897-c680d961e0d6",
+ "operationId": "op-runner-conformance-cancel-send-glm-5.2",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:33:12.998Z",
+ "updatedAt": "2026-08-29T18:33:12.998Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "materializationDigest": "36ce4db181d49248f36ecbf332b9a055eda108d7799b79da52e31af57fce553d"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "runner-conformance-cancel-glm-5.2",
+ "revision": 26,
+ "operationId": "op-runner-conformance-cancel-glm-5.2",
+ "command": "cancel_run",
+ "runId": "run-478987f0-5f07-411b-acd2-9b0166672c42",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-478987f0-5f07-411b-acd2-9b0166672c42",
+ "turnId": "turn-def886b1-2c2b-4a1e-9897-c680d961e0d6",
+ "operationId": "op-runner-conformance-cancel-send-glm-5.2",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:33:12.998Z",
+ "updatedAt": "2026-08-29T18:33:13.962Z",
+ "terminalAt": "2026-08-29T18:33:13.962Z",
+ "durationMs": 964,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "glm-5.2",
+ "provider": "cli-bridge",
+ "runner": "opencode",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "environmentId": "environment-c5f3b043607d4b48bd5f6ef1d633995c",
+ "controlRef": {
+ "runId": "run-478987f0-5f07-411b-acd2-9b0166672c42",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJvcGVuY29kZSIsIm9wZW5jb2RlL3phaS1jb2RpbmctcGxhbi9nbG0tNS4yIiwic2hhMjU2OmY1ZGI5OTU2ODI2MDk3MmE1NGFkOTZmZDUzYTA0NWY5ZTQ0Y2MwNzc2MDVhZDJiOTExZGI5NmQzYzk0Y2E2MDIiLCJETXdqcDhkVWZ5aTFsVWlMdC1QM1FMWDlleGZKZ1pJeEhocndyV29hTnJvIl0",
+ "sessionId": "session-braid-run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "executionId": "run-478987f0-5f07-411b-acd2-9b0166672c42",
+ "requestDigest": "sha256:1f9bb32573ff64a69b1fa85f1b8ace5bb5a01684d35d88f2244eca85f51ed264"
+ },
+ "materializationDigest": "36ce4db181d49248f36ecbf332b9a055eda108d7799b79da52e31af57fce553d",
+ "contentBytes": 14
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": false,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "targetProof": {
+ "key": "glm-5.2",
+ "harness": "opencode",
+ "provider": "zai-coding-plan",
+ "model": "glm-5.2",
+ "route": "opencode/zai-coding-plan/glm-5.2",
+ "runId": "run-ea3615c3-933c-43d4-b559-c263ae172d7e",
+ "profileDigest": "b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd",
+ "materializationDigest": "e553ffd0ee98ae80dac1c103d8f501ca0ac17ec85a327cb55b909e7bb44d77fc"
+ }
+ }
+ },
+ {
+ "requirementId": "LIVE-05",
+ "operation": "cli-bridge.runner-conformance",
+ "target": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "evidence": {
+ "normal": {
+ "status": "completed",
+ "runId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "run": {
+ "id": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "turnId": "turn-5a851004-aabe-44c2-91d1-8138740263d9",
+ "operationId": "op-runner-conformance-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:33:17.051Z",
+ "updatedAt": "2026-08-29T18:33:21.544Z",
+ "terminalAt": "2026-08-29T18:33:21.544Z",
+ "durationMs": 4493,
+ "inputTokens": 1006,
+ "outputTokens": 36,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 11,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "environmentId": "environment-ae218b2583a1db50b16b5448dcf65c73",
+ "controlRef": {
+ "runId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NWM2NzY5NjEyOTUxYzI4YTVhZGI0YTdhYjcwY2U2ZTgxOWZlYzVjYTdiOGUwMmY0MjNmM2Y4OGQ3YzhiN2IyYyIsIlVyeDJTZmZrMHVrZEpnQzBEMHdSSzh4WWNzT0RnOGRpVXAwOXNKYlhORkUiXQ",
+ "sessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "executionId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "requestDigest": "sha256:963b88ad80ffaac36b9a5ae6423d3bd268f0ca9ef7cad67b01049305837e60fa"
+ },
+ "materializationDigest": "ac68099e1030fbdd9bf14c3ffdfbe5aa02207ac7e90b106a6df94ae0c8edff47",
+ "cursor": "50",
+ "cursorCommittedSequence": 61,
+ "contentBytes": 263,
+ "receipt": {
+ "version": 1,
+ "runId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "turnId": "turn-5a851004-aabe-44c2-91d1-8138740263d9",
+ "operationId": "op-runner-conformance-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:33:17.042Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "nativeContinuation": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "interactions": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a6597134-25ae-408b-9978-f3d8216715bb",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "11efc502774d952c8622c2a2352a2a57a656b329a88bf5c3e6a682b2b1f3913c",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "ac68099e1030fbdd9bf14c3ffdfbe5aa02207ac7e90b106a6df94ae0c8edff47",
+ "digest": "7ee644d424245abad2fc25ec0c9e3757a9c9c1f72e3d017348aa8374ff710a89"
+ }
+ },
+ "assistant": {
+ "id": "message-d63dd4c4-cf58-460c-82ca-8e42b3d64053",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "parts": [
+ {
+ "id": "run-be080a09-aa58-4fdb-802e-580c7d37cfba:message:0:reasoning",
+ "kind": "reasoning",
+ "text": "The user wants me to output only a specific token.",
+ "sourceEventId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba:44"
+ },
+ {
+ "id": "run-be080a09-aa58-4fdb-802e-580c7d37cfba:message:1:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "marker": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "runner-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-runner-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "revision": 63,
+ "replayed": false,
+ "runId": "run-58f7359a-5f8c-4914-a97c-8331c16a1e02",
+ "admission": {
+ "version": 1,
+ "runId": "run-58f7359a-5f8c-4914-a97c-8331c16a1e02",
+ "turnId": "turn-ca9750ab-3efa-4daf-a258-74fb8f1f5950",
+ "operationId": "op-runner-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:33:22.505Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "nativeContinuation": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "interactions": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "providerSessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-pi-tangle-router-deepseek-v4-flash-a6597134-25ae-408b-9978-f3d8216715bb",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-58f7359a-5f8c-4914-a97c-8331c16a1e02",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "nativeContextBoundaryProof": {
+ "runId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NWM2NzY5NjEyOTUxYzI4YTVhZGI0YTdhYjcwY2U2ZTgxOWZlYzVjYTdiOGUwMmY0MjNmM2Y4OGQ3YzhiN2IyYyIsIlVyeDJTZmZrMHVrZEpnQzBEMHdSSzh4WWNzT0RnOGRpVXAwOXNKYlhORkUiXQ",
+ "sessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "executionId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "requestDigest": "sha256:963b88ad80ffaac36b9a5ae6423d3bd268f0ca9ef7cad67b01049305837e60fa",
+ "boundary": {
+ "kind": "revision",
+ "revision": "pi:6c111f69-5bc4-4e89-b80d-948d54350712:2"
+ },
+ "observedAt": "2026-08-29T18:33:21.448Z"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "1f87441cfb76a6c6590a3321528e8c92fe502bc1e30968247bd17d28107c73c5",
+ "capabilitiesDigest": "87fad3fc4f85aeb0204d71af98d4fbe18722d84f8b76aa3416fb9d4d20584626",
+ "materializationDigest": "4989dd6d89b3724eac441b74bebf78437d6504a041cbd600e75d2803c85d322c",
+ "digest": "5bb8947360af136b700501caf564764bf8d1d1c73540fd927d075cc6e9fd9576"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-58f7359a-5f8c-4914-a97c-8331c16a1e02",
+ "activeRun": {
+ "id": "run-58f7359a-5f8c-4914-a97c-8331c16a1e02",
+ "turnId": "turn-ca9750ab-3efa-4daf-a258-74fb8f1f5950",
+ "operationId": "op-runner-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:33:22.516Z",
+ "updatedAt": "2026-08-29T18:33:22.516Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "materializationDigest": "4989dd6d89b3724eac441b74bebf78437d6504a041cbd600e75d2803c85d322c"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "runner-conformance-cancel-pi-tangle-router-deepseek-v4-flash",
+ "revision": 80,
+ "operationId": "op-runner-conformance-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "runId": "run-58f7359a-5f8c-4914-a97c-8331c16a1e02",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-58f7359a-5f8c-4914-a97c-8331c16a1e02",
+ "turnId": "turn-ca9750ab-3efa-4daf-a258-74fb8f1f5950",
+ "operationId": "op-runner-conformance-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T18:33:22.516Z",
+ "updatedAt": "2026-08-29T18:33:24.072Z",
+ "terminalAt": "2026-08-29T18:33:24.072Z",
+ "durationMs": 1556,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "environmentId": "environment-ae218b2583a1db50b16b5448dcf65c73",
+ "controlRef": {
+ "runId": "run-58f7359a-5f8c-4914-a97c-8331c16a1e02",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NWM2NzY5NjEyOTUxYzI4YTVhZGI0YTdhYjcwY2U2ZTgxOWZlYzVjYTdiOGUwMmY0MjNmM2Y4OGQ3YzhiN2IyYyIsIlVyeDJTZmZrMHVrZEpnQzBEMHdSSzh4WWNzT0RnOGRpVXAwOXNKYlhORkUiXQ",
+ "sessionId": "session-braid-run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "executionId": "run-58f7359a-5f8c-4914-a97c-8331c16a1e02",
+ "requestDigest": "sha256:92ce6b32f335ce0fc1bf99b4f9415bd77d0a406860acbbdfe423911c0247e625"
+ },
+ "materializationDigest": "4989dd6d89b3724eac441b74bebf78437d6504a041cbd600e75d2803c85d322c",
+ "cursor": "5",
+ "cursorCommittedSequence": 78,
+ "contentBytes": 14
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": true,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "provider": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "targetProof": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runId": "run-be080a09-aa58-4fdb-802e-580c7d37cfba",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "materializationDigest": "ac68099e1030fbdd9bf14c3ffdfbe5aa02207ac7e90b106a6df94ae0c8edff47"
+ }
+ }
+ },
+ {
+ "requirementId": "LIVE-05",
+ "operation": "cli-bridge.runner-conformance",
+ "target": {
+ "key": "codex-default",
+ "harness": "codex",
+ "model": "default"
+ },
+ "status": "passed",
+ "packed": true,
+ "runId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "evidence": {
+ "normal": {
+ "status": "completed",
+ "runId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "run": {
+ "id": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "turnId": "turn-72ccae6a-31f4-49c5-907d-457a222503b8",
+ "operationId": "op-runner-conformance-send-codex-default",
+ "status": "completed",
+ "startedAt": "2026-08-29T18:33:27.133Z",
+ "updatedAt": "2026-08-29T18:33:33.125Z",
+ "terminalAt": "2026-08-29T18:33:33.125Z",
+ "durationMs": 5992,
+ "inputTokens": 14632,
+ "outputTokens": 13,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "codex/default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "environmentId": "environment-e65a6f287da5ef40810a059930ffd61b",
+ "controlRef": {
+ "runId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6YjVmOWNlYWJmMWU1ZmFiYjJhMjcyNjI5MmJkMDU1ZjZiOTZkNWMzODQ0Mjk3ODc5ZGMyNWFkZDNjYzA3NjJmNiIsImV6cjdVUlVoa0NmRlRsNFQ1ZGJZUWtNNlRCRnZPc2xXNk5rVWFwSUUtSnciXQ",
+ "sessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "executionId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "requestDigest": "sha256:064a747702ece5ed1e2464357abf94fc75784f0a5eced50a059f6acde936cc30"
+ },
+ "materializationDigest": "3a46ef18bd114b3469028125e6b239ebf58390ed6e452d5858b3fc4de7b2dbe5",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 12,
+ "contentBytes": 73,
+ "receipt": {
+ "version": 1,
+ "runId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "turnId": "turn-72ccae6a-31f4-49c5-907d-457a222503b8",
+ "operationId": "op-runner-conformance-send-codex-default",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:33:27.117Z",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK",
+ "profile": {
+ "name": "Braid live codex/default",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "codex"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "default",
+ "runner": "codex"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-02b0aac2-16d0-44e3-a72b-70f3de0d0080",
+ "model": "default",
+ "route": "codex/default",
+ "runner": "codex",
+ "providerRunId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "a156a6835f353061dd5ba846487e703843f2b80835163fd1ef4017450ae8ff01",
+ "capabilitiesDigest": "7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a",
+ "materializationDigest": "3a46ef18bd114b3469028125e6b239ebf58390ed6e452d5858b3fc4de7b2dbe5",
+ "digest": "797f8b60010f17ff8084a32e094b3ffff5a6f3c2cbfa0a33e84303a1f8b447fb"
+ }
+ },
+ "assistant": {
+ "id": "message-aa317d50-df19-4766-99a5-fc06f427ea4d",
+ "role": "assistant",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "status": "complete",
+ "runId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "parts": [
+ {
+ "id": "op-runner-conformance-send-codex-default:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "sourceEventId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "marker": "LIVE_BRAID_CODEX-DEFAULT_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_CODEX-DEFAULT_OK",
+ "lastError": null
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "runner-conformance-cancel-send-codex-default",
+ "operationId": "op-runner-conformance-cancel-send-codex-default",
+ "revision": 14,
+ "replayed": false,
+ "runId": "run-97b4e8b8-62a6-4a02-9f7c-b2052ff235e5",
+ "admission": {
+ "version": 1,
+ "runId": "run-97b4e8b8-62a6-4a02-9f7c-b2052ff235e5",
+ "turnId": "turn-cac2f5b1-5403-49e2-9281-afcdb1b1e2a5",
+ "operationId": "op-runner-conformance-cancel-send-codex-default",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T18:33:34.473Z",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "requested": {
+ "text": "For LIVE_BRAID_CODEX-DEFAULT_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live codex/default",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "codex"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {},
+ "model": "default",
+ "runner": "codex"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "contextTransfer": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "providerSessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "provider-owned",
+ "workspace": "/tmp/braid-live-targets-ABQ0I5/workspace-codex-default-02b0aac2-16d0-44e3-a72b-70f3de0d0080",
+ "model": "default",
+ "route": "codex/default",
+ "runner": "codex",
+ "providerRunId": "run-97b4e8b8-62a6-4a02-9f7c-b2052ff235e5",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "30649bbcbd5b3e0a99e6bf622af8169a0b937d2c4cf79ebf40b84d669782849f",
+ "capabilitiesDigest": "7986011fd2c78c8c952ee8a2a2a9ad3ccce87022acf06d66630323da74a7739a",
+ "materializationDigest": "17b4f04c7ecc4260e95f5e118a54fa04b510667527f60bb898cf9377d59b65aa",
+ "digest": "5244c170817f44ca6fb1c75b3370f328536727eed616717038fb4666398fdf1f"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-97b4e8b8-62a6-4a02-9f7c-b2052ff235e5",
+ "activeRun": {
+ "id": "run-97b4e8b8-62a6-4a02-9f7c-b2052ff235e5",
+ "turnId": "turn-cac2f5b1-5403-49e2-9281-afcdb1b1e2a5",
+ "operationId": "op-runner-conformance-cancel-send-codex-default",
+ "status": "streaming",
+ "startedAt": "2026-08-29T18:33:34.490Z",
+ "updatedAt": "2026-08-29T18:33:34.490Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "materializationDigest": "17b4f04c7ecc4260e95f5e118a54fa04b510667527f60bb898cf9377d59b65aa"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "runner-conformance-cancel-codex-default",
+ "revision": 26,
+ "operationId": "op-runner-conformance-cancel-codex-default",
+ "command": "cancel_run",
+ "runId": "run-97b4e8b8-62a6-4a02-9f7c-b2052ff235e5",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-97b4e8b8-62a6-4a02-9f7c-b2052ff235e5",
+ "turnId": "turn-cac2f5b1-5403-49e2-9281-afcdb1b1e2a5",
+ "operationId": "op-runner-conformance-cancel-send-codex-default",
+ "status": "cancelled",
+ "startedAt": "2026-08-29T18:33:34.490Z",
+ "updatedAt": "2026-08-29T18:33:35.853Z",
+ "terminalAt": "2026-08-29T18:33:35.815Z",
+ "durationMs": 1325,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "default",
+ "provider": "cli-bridge",
+ "runner": "codex",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "environmentId": "environment-e65a6f287da5ef40810a059930ffd61b",
+ "controlRef": {
+ "runId": "run-97b4e8b8-62a6-4a02-9f7c-b2052ff235e5",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJjb2RleCIsImNvZGV4L2RlZmF1bHQiLCJzaGEyNTY6YjVmOWNlYWJmMWU1ZmFiYjJhMjcyNjI5MmJkMDU1ZjZiOTZkNWMzODQ0Mjk3ODc5ZGMyNWFkZDNjYzA3NjJmNiIsImV6cjdVUlVoa0NmRlRsNFQ1ZGJZUWtNNlRCRnZPc2xXNk5rVWFwSUUtSnciXQ",
+ "sessionId": "session-braid-run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "executionId": "run-97b4e8b8-62a6-4a02-9f7c-b2052ff235e5",
+ "requestDigest": "sha256:1a607716c063b15c2a429c717219eb306b3a39c30b7e758ddb02fde5c1b8454d"
+ },
+ "materializationDigest": "17b4f04c7ecc4260e95f5e118a54fa04b510667527f60bb898cf9377d59b65aa",
+ "cursor": "2:0",
+ "cursorCommittedSequence": 25
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": false,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "targetProof": {
+ "key": "codex-default",
+ "harness": "codex",
+ "model": "default",
+ "route": "codex/default",
+ "runId": "run-4a4f19bb-5fd6-4340-88a1-cf0fda1fa7e0",
+ "profileDigest": "6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8",
+ "materializationDigest": "3a46ef18bd114b3469028125e6b239ebf58390ed6e452d5858b3fc4de7b2dbe5"
+ }
+ }
+ }
+ ],
+ "bridge": {
+ "initialHealth": {
+ "ok": false,
+ "error": "fetch failed"
+ },
+ "launch": {
+ "requested": true,
+ "directory": "/home/drew/code/cli-bridge-braid-context-transfer-20260829",
+ "command": "pnpm start",
+ "health": {
+ "status": 200,
+ "ok": true,
+ "body": {
+ "status": "ok",
+ "cached_verdicts": false,
+ "oldest_probed_at": "2026-08-29T18:31:11.670Z",
+ "backends": [
+ {
+ "name": "codex",
+ "state": "ready",
+ "version": "codex-cli 0.150.1",
+ "probed_at": "2026-08-29T18:31:11.670Z",
+ "cached": false
+ },
+ {
+ "name": "opencode",
+ "state": "ready",
+ "version": "1.18.18",
+ "probed_at": "2026-08-29T18:31:11.670Z",
+ "cached": false
+ },
+ {
+ "name": "pi",
+ "state": "ready",
+ "version": "0.83.0",
+ "probed_at": "2026-08-29T18:31:11.670Z",
+ "cached": false
+ }
+ ],
+ "admission": {
+ "active": 0,
+ "live": 0,
+ "stale": 0,
+ "unbound": 0,
+ "oldestHeldMs": null,
+ "reclaimed": 0,
+ "queued": 0,
+ "maxActive": 8,
+ "maxQueue": 16,
+ "reservedActive": 2,
+ "bulkMaxActive": 6,
+ "activeByClass": {
+ "reserved": 0,
+ "bulk": 0
+ },
+ "queuedByClass": {
+ "reserved": 0,
+ "bulk": 0
+ }
+ },
+ "executor": {
+ "in_flight": 0,
+ "max": 4,
+ "queued": 0,
+ "acquire_deadline_ms": 60000,
+ "max_acquire_deadline_ms": 900000,
+ "acquires": 0,
+ "timeouts": 0,
+ "scoped_host": {
+ "in_flight": 0,
+ "max": 4,
+ "queued": 0,
+ "acquire_deadline_ms": 60000,
+ "max_acquire_deadline_ms": 900000,
+ "acquires": 3,
+ "timeouts": 0,
+ "reserved": 2,
+ "bulk_in_flight": 0,
+ "bulk_max": 2,
+ "queued_reserved": 0,
+ "queued_bulk": 0
+ }
+ },
+ "memory": {
+ "heap_used_bytes": 65372936,
+ "heap_total_bytes": 108605440,
+ "heap_limit_bytes": 4496293888,
+ "heap_used_pct": 1.5,
+ "rss_bytes": 170426368,
+ "external_bytes": 6985484,
+ "runs_retained": 0,
+ "run_replay_bytes": 0
+ },
+ "ts": "2026-08-29T18:31:11.670Z"
+ },
+ "text": "{\"status\":\"ok\",\"cached_verdicts\":false,\"oldest_probed_at\":\"2026-08-29T18:31:11.670Z\",\"backends\":[{\"name\":\"codex\",\"state\":\"ready\",\"version\":\"codex-cli 0.150.1\",\"probed_at\":\"2026-08-29T18:31:11.670Z\",\"cached\":false},{\"name\":\"opencode\",\"state\":\"ready\",\"version\":\"1.18.18\",\"probed_at\":\"2026-08-29T18:31:11.670Z\",\"cached\":false},{\"name\":\"pi\",\"state\":\"ready\",\"version\":\"0.83.0\",\"probed_at\":\"2026-08-29T18:31:11.670Z\",\"cached\":false}],\"admission\":{\"active\":0,\"live\":0,\"stale\":0,\"unbound\":0,\"oldestHeldMs\":null,\"reclaimed\":0,\"queued\":0,\"maxActive\":8,\"maxQueue\":16,\"reservedActive\":2,\"bulkMaxActive\":6,\"activeByClass\":{\"reserved\":0,\"bulk\":0},\"queuedByClass\":{\"reserved\":0,\"bulk\":0}},\"executor\":{\"in_flight\":0,\"max\":4,\"queued\":0,\"acquire_deadline_ms\":60000,\"max_acquire_deadline_ms\":900000,\"acquires\":0,\"timeouts\":0,\"scoped_host\":{\"in_flight\":0,\"max\":4,\"queued\":0,\"acquire_deadline_ms\":60000,\"max_acquire_deadline_ms\":900000,\"acquires\":3,\"timeouts\":0,\"reserved\":2,\"bulk_in_flight\":0,\"bulk_max\":2,\"queued_reserved\":0,\"queued_bulk\":0}},\"memory\":{\"heap_used_bytes\":65372936,\"heap_total_bytes\":108605440,\"heap_limit_bytes\":4496293888,\"heap_used_pct\":1.5,\"rss_bytes\":170426368,\"external_bytes\":6985484,\"runs_retained\":0,\"run_replay_bytes\":0},\"ts\":\"2026-08-29T18:31:11.670Z\"}"
+ },
+ "process": {
+ "stdout": "[cli-bridge] listening on http://127.0.0.1:3344 (host=127.0.0.1)\n[cli-bridge] backends: opencode, pi, codex\n[cli-bridge] bearer: required\n[cli-bridge] host admission: maxActive=8 maxQueue=16/class reservedActive=2 (bulk ceiling 6) queueTimeoutMs=30000 bulkQueueTimeoutMs=240000\n[cli-bridge] reserved-lane clients: pr-reviewer\n[cli-bridge] traces: /tmp/braid-bridge-final-exact.MwB7Kx/traces/spans.jsonl (max 16777216 bytes × 2 files)\n[cli-bridge] jail default: fs-jail root=/.agent-home\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"harness\":\"opencode\",\"provider\":\"zai-coding-plan\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:33518b13903a532eb86c9ead586aaca152a17eb02e4e8e276d6a7afebe608005\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"harness\":\"opencode\",\"provider\":\"zai-coding-plan\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:33518b13903a532eb86c9ead586aaca152a17eb02e4e8e276d6a7afebe608005\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:cacd611307b6fc338eb0b04bf568333ff6b6079673a73a4739edc9350eae65bf\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"harness\":\"opencode\",\"provider\":\"zai-coding-plan\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:33518b13903a532eb86c9ead586aaca152a17eb02e4e8e276d6a7afebe608005\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"harness\":\"opencode\",\"provider\":\"zai-coding-plan\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:33518b13903a532eb86c9ead586aaca152a17eb02e4e8e276d6a7afebe608005\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] SIGTERM — shutting down\n",
+ "stderr": "(node:3342141) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n\u001b[2m$ tsx src/server.ts\u001b[22m\n(node:3342156) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n(node:3342172) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n[cli-bridge] admission maxActive=8 exceeds scoped-executor concurrency=4: the executor is the real ceiling. Lower BRIDGE_HOST_CHAT_MAX_ACTIVE or raise CLI_BRIDGE_SCOPE_MAX_CONCURRENCY so one gate owns the limit.\n",
+ "termination": {
+ "strategy": "process-group",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": true,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3342141,
+ 3342155,
+ 3342156,
+ 3342172
+ ],
+ "roots": [
+ 3342141
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "term",
+ "termSignal": {
+ "method": "process-group",
+ "sent": true
+ },
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "exit": {
+ "code": null,
+ "signal": "SIGTERM"
+ }
+ }
+ },
+ "runtimeContract": {
+ "status": 200,
+ "ok": true,
+ "body": {
+ "name": "cli-bridge",
+ "version": "0.3.0",
+ "scheme": "bridge//",
+ "capabilities": {
+ "profileMaterialization": "cli-bridge.profile-materialization.v2",
+ "usageCostProvenance": "cli-bridge.usage-cost.v1",
+ "runtimeAttachments": {
+ "mcp": true
+ }
+ },
+ "backends": [
+ "codex",
+ "opencode",
+ "pi"
+ ],
+ "endpoints": [
+ "/health",
+ "/v1/models",
+ "/v1/chat/completions",
+ "/v1/sessions",
+ "/v1/capabilities",
+ "/v1/context-transfers",
+ "/v1/context-transfers/:operationId",
+ "/v1/context-transfer-environments/:environmentId",
+ "/v1/sessions/:id/turns",
+ "/v1/sessions/:id/input",
+ "/v1/sessions/:id/events",
+ "/v1/sessions/:id/status",
+ "/v1/sessions/:id/transcript",
+ "/v1/sessions/:id/steer",
+ "/v1/sessions/:id/cancel",
+ "/v1/sessions/:id/detach",
+ "/v1/sessions/:id/close",
+ "/v1/runs/:id",
+ "/v1/runs/:id/events",
+ "/v1/runs/:id/cancel",
+ "/v1/runs/:runId/interactions/:interactionId/respond",
+ "/cad/render",
+ "/images/generate"
+ ]
+ },
+ "text": "{\"name\":\"cli-bridge\",\"version\":\"0.3.0\",\"scheme\":\"bridge//\",\"capabilities\":{\"profileMaterialization\":\"cli-bridge.profile-materialization.v2\",\"usageCostProvenance\":\"cli-bridge.usage-cost.v1\",\"runtimeAttachments\":{\"mcp\":true}},\"backends\":[\"codex\",\"opencode\",\"pi\"],\"endpoints\":[\"/health\",\"/v1/models\",\"/v1/chat/completions\",\"/v1/sessions\",\"/v1/capabilities\",\"/v1/context-transfers\",\"/v1/context-transfers/:operationId\",\"/v1/context-transfer-environments/:environmentId\",\"/v1/sessions/:id/turns\",\"/v1/sessions/:id/input\",\"/v1/sessions/:id/events\",\"/v1/sessions/:id/status\",\"/v1/sessions/:id/transcript\",\"/v1/sessions/:id/steer\",\"/v1/sessions/:id/cancel\",\"/v1/sessions/:id/detach\",\"/v1/sessions/:id/close\",\"/v1/runs/:id\",\"/v1/runs/:id/events\",\"/v1/runs/:id/cancel\",\"/v1/runs/:runId/interactions/:interactionId/respond\",\"/cad/render\",\"/images/generate\"]}"
+ },
+ "models": {
+ "status": 200,
+ "ok": true,
+ "body": {
+ "object": "list",
+ "data": [
+ {
+ "id": "codex/default",
+ "object": "model",
+ "backend": "codex"
+ },
+ {
+ "id": "codex/gpt-5-codex",
+ "object": "model",
+ "backend": "codex"
+ },
+ {
+ "id": "codex/gpt-5.4",
+ "object": "model",
+ "backend": "codex"
+ },
+ {
+ "id": "codex/gpt-5.5",
+ "object": "model",
+ "backend": "codex"
+ },
+ {
+ "id": "opencode/deepseek/deepseek-v4-flash",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/deepseek/deepseek-v4-flash-vision-exp",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/deepseek/deepseek-v4-pro",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/kimi-for-coding/k3",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/kimi-for-coding/k3-256k",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/kimi-for-coding/kimi-for-coding",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/kimi-for-coding/kimi-for-coding-highspeed",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/zai-coding-plan/glm-4.7",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/zai-coding-plan/glm-5-turbo",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/zai-coding-plan/glm-5.2",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/zai-coding-plan/glm-5.2-highspeed",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/zai-coding-plan/glm-5.3",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/zai-coding-plan/glm-5.3-flash",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "opencode/zai-coding-plan/glm-5.3-highspeed",
+ "object": "model",
+ "backend": "opencode"
+ },
+ {
+ "id": "pi/deepseek/deepseek-v4-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/deepseek/deepseek-v4-pro",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/kimi-for-coding-oauth/kimi-for-coding",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/moonshot/kimi-k2-thinking",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/moonshot/kimi-k2.5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.3-codex-spark",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.4",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.4-mini",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.6-luna",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.6-sol",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.6-terra",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/claude-haiku-4-5-20251001",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/claude-opus-4-6",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/claude-sonnet-4-6",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/deepseek-v4-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/deepseek-v4-pro",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/deepseek/deepseek-chat",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/fireworks/deepseek-v4-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gemini-2.5-flash-lite",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gemini-3-pro-preview",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/glm-5.2",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gpt-4o-mini",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gpt-5-mini",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gpt-5.4",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gpt-5.4-mini",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/groq/llama-3.1-8b-instant",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/moonshotai/kimi-k2.5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/openai/gpt-5.6-luna",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/openrouter/auto",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-coding-paas/glm-5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-coding-paas/glm-5-code",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-coding-paas/glm-5-turbo",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-coding-paas/glm-5.1",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5-air",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5-airx",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5-x",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.6",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.7",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.7-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.7-flashx",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-5-code",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-5-turbo",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-5.1",
+ "object": "model",
+ "backend": "pi"
+ }
+ ]
+ },
+ "text": "{\"object\":\"list\",\"data\":[{\"id\":\"codex/default\",\"object\":\"model\",\"backend\":\"codex\"},{\"id\":\"codex/gpt-5-codex\",\"object\":\"model\",\"backend\":\"codex\"},{\"id\":\"codex/gpt-5.4\",\"object\":\"model\",\"backend\":\"codex\"},{\"id\":\"codex/gpt-5.5\",\"object\":\"model\",\"backend\":\"codex\"},{\"id\":\"opencode/deepseek/deepseek-v4-flash\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/deepseek/deepseek-v4-flash-vision-exp\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/deepseek/deepseek-v4-pro\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/kimi-for-coding/k3\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/kimi-for-coding/k3-256k\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/kimi-for-coding/kimi-for-coding\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/kimi-for-coding/kimi-for-coding-highspeed\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/zai-coding-plan/glm-4.7\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/zai-coding-plan/glm-5-turbo\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/zai-coding-plan/glm-5.2\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/zai-coding-plan/glm-5.2-highspeed\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/zai-coding-plan/glm-5.3\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/zai-coding-plan/glm-5.3-flash\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"opencode/zai-coding-plan/glm-5.3-highspeed\",\"object\":\"model\",\"backend\":\"opencode\"},{\"id\":\"pi/deepseek/deepseek-v4-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/deepseek/deepseek-v4-pro\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/kimi-for-coding-oauth/kimi-for-coding\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/moonshot/kimi-k2-thinking\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/moonshot/kimi-k2.5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.3-codex-spark\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.4\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.4-mini\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.6-luna\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.6-sol\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.6-terra\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/claude-haiku-4-5-20251001\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/claude-opus-4-6\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/claude-sonnet-4-6\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/deepseek-v4-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/deepseek-v4-pro\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/deepseek/deepseek-chat\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/fireworks/deepseek-v4-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gemini-2.5-flash-lite\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gemini-3-pro-preview\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/glm-5.2\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gpt-4o-mini\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gpt-5-mini\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gpt-5.4\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gpt-5.4-mini\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/groq/llama-3.1-8b-instant\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/moonshotai/kimi-k2.5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/openai/gpt-5.6-luna\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/openrouter/auto\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-coding-paas/glm-5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-coding-paas/glm-5-code\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-coding-paas/glm-5-turbo\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-coding-paas/glm-5.1\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5-air\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5-airx\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5-x\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.6\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.7\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.7-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.7-flashx\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-5-code\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-5-turbo\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-5.1\",\"object\":\"model\",\"backend\":\"pi\"}]}"
+ },
+ "requiredHealth": {
+ "status": 200,
+ "ok": true,
+ "body": {
+ "status": "ok",
+ "cached_verdicts": true,
+ "oldest_probed_at": "2026-08-29T18:31:11.670Z",
+ "backends": [
+ {
+ "name": "codex",
+ "state": "ready",
+ "version": "codex-cli 0.150.1",
+ "probed_at": "2026-08-29T18:31:11.670Z",
+ "cached": true
+ },
+ {
+ "name": "opencode",
+ "state": "ready",
+ "version": "1.18.18",
+ "probed_at": "2026-08-29T18:31:11.670Z",
+ "cached": true
+ },
+ {
+ "name": "pi",
+ "state": "ready",
+ "version": "0.83.0",
+ "probed_at": "2026-08-29T18:31:11.670Z",
+ "cached": true
+ }
+ ],
+ "admission": {
+ "active": 0,
+ "live": 0,
+ "stale": 0,
+ "unbound": 0,
+ "oldestHeldMs": null,
+ "reclaimed": 0,
+ "queued": 0,
+ "maxActive": 8,
+ "maxQueue": 16,
+ "reservedActive": 2,
+ "bulkMaxActive": 6,
+ "activeByClass": {
+ "reserved": 0,
+ "bulk": 0
+ },
+ "queuedByClass": {
+ "reserved": 0,
+ "bulk": 0
+ }
+ },
+ "executor": {
+ "in_flight": 0,
+ "max": 4,
+ "queued": 0,
+ "acquire_deadline_ms": 60000,
+ "max_acquire_deadline_ms": 900000,
+ "acquires": 0,
+ "timeouts": 0,
+ "scoped_host": {
+ "in_flight": 0,
+ "max": 4,
+ "queued": 0,
+ "acquire_deadline_ms": 60000,
+ "max_acquire_deadline_ms": 900000,
+ "acquires": 6,
+ "timeouts": 0,
+ "reserved": 2,
+ "bulk_in_flight": 0,
+ "bulk_max": 2,
+ "queued_reserved": 0,
+ "queued_bulk": 0
+ }
+ },
+ "memory": {
+ "heap_used_bytes": 51738568,
+ "heap_total_bytes": 191283200,
+ "heap_limit_bytes": 4496293888,
+ "heap_used_pct": 1.2,
+ "rss_bytes": 186155008,
+ "external_bytes": 6502601,
+ "runs_retained": 0,
+ "run_replay_bytes": 0
+ },
+ "ts": "2026-08-29T18:31:15.478Z"
+ },
+ "text": "{\"status\":\"ok\",\"cached_verdicts\":true,\"oldest_probed_at\":\"2026-08-29T18:31:11.670Z\",\"backends\":[{\"name\":\"codex\",\"state\":\"ready\",\"version\":\"codex-cli 0.150.1\",\"probed_at\":\"2026-08-29T18:31:11.670Z\",\"cached\":true},{\"name\":\"opencode\",\"state\":\"ready\",\"version\":\"1.18.18\",\"probed_at\":\"2026-08-29T18:31:11.670Z\",\"cached\":true},{\"name\":\"pi\",\"state\":\"ready\",\"version\":\"0.83.0\",\"probed_at\":\"2026-08-29T18:31:11.670Z\",\"cached\":true}],\"admission\":{\"active\":0,\"live\":0,\"stale\":0,\"unbound\":0,\"oldestHeldMs\":null,\"reclaimed\":0,\"queued\":0,\"maxActive\":8,\"maxQueue\":16,\"reservedActive\":2,\"bulkMaxActive\":6,\"activeByClass\":{\"reserved\":0,\"bulk\":0},\"queuedByClass\":{\"reserved\":0,\"bulk\":0}},\"executor\":{\"in_flight\":0,\"max\":4,\"queued\":0,\"acquire_deadline_ms\":60000,\"max_acquire_deadline_ms\":900000,\"acquires\":0,\"timeouts\":0,\"scoped_host\":{\"in_flight\":0,\"max\":4,\"queued\":0,\"acquire_deadline_ms\":60000,\"max_acquire_deadline_ms\":900000,\"acquires\":6,\"timeouts\":0,\"reserved\":2,\"bulk_in_flight\":0,\"bulk_max\":2,\"queued_reserved\":0,\"queued_bulk\":0}},\"memory\":{\"heap_used_bytes\":51738568,\"heap_total_bytes\":191283200,\"heap_limit_bytes\":4496293888,\"heap_used_pct\":1.2,\"rss_bytes\":186155008,\"external_bytes\":6502601,\"runs_retained\":0,\"run_replay_bytes\":0},\"ts\":\"2026-08-29T18:31:15.478Z\"}"
+ },
+ "advertisedModels": [
+ "codex/default",
+ "codex/gpt-5-codex",
+ "codex/gpt-5.4",
+ "codex/gpt-5.5",
+ "opencode/deepseek/deepseek-v4-flash",
+ "opencode/deepseek/deepseek-v4-flash-vision-exp",
+ "opencode/deepseek/deepseek-v4-pro",
+ "opencode/kimi-for-coding/k3",
+ "opencode/kimi-for-coding/k3-256k",
+ "opencode/kimi-for-coding/kimi-for-coding",
+ "opencode/kimi-for-coding/kimi-for-coding-highspeed",
+ "opencode/zai-coding-plan/glm-4.7",
+ "opencode/zai-coding-plan/glm-5-turbo",
+ "opencode/zai-coding-plan/glm-5.2",
+ "opencode/zai-coding-plan/glm-5.2-highspeed",
+ "opencode/zai-coding-plan/glm-5.3",
+ "opencode/zai-coding-plan/glm-5.3-flash",
+ "opencode/zai-coding-plan/glm-5.3-highspeed",
+ "pi/deepseek/deepseek-v4-flash",
+ "pi/deepseek/deepseek-v4-pro",
+ "pi/kimi-for-coding-oauth/kimi-for-coding",
+ "pi/moonshot/kimi-k2-thinking",
+ "pi/moonshot/kimi-k2.5",
+ "pi/openai-codex/gpt-5.3-codex-spark",
+ "pi/openai-codex/gpt-5.4",
+ "pi/openai-codex/gpt-5.4-mini",
+ "pi/openai-codex/gpt-5.5",
+ "pi/openai-codex/gpt-5.6-luna",
+ "pi/openai-codex/gpt-5.6-sol",
+ "pi/openai-codex/gpt-5.6-terra",
+ "pi/tangle-router/claude-haiku-4-5-20251001",
+ "pi/tangle-router/claude-opus-4-6",
+ "pi/tangle-router/claude-sonnet-4-6",
+ "pi/tangle-router/deepseek-v4-flash",
+ "pi/tangle-router/deepseek-v4-pro",
+ "pi/tangle-router/deepseek/deepseek-chat",
+ "pi/tangle-router/fireworks/deepseek-v4-flash",
+ "pi/tangle-router/gemini-2.5-flash-lite",
+ "pi/tangle-router/gemini-3-pro-preview",
+ "pi/tangle-router/glm-5.2",
+ "pi/tangle-router/gpt-4o-mini",
+ "pi/tangle-router/gpt-5-mini",
+ "pi/tangle-router/gpt-5.4",
+ "pi/tangle-router/gpt-5.4-mini",
+ "pi/tangle-router/groq/llama-3.1-8b-instant",
+ "pi/tangle-router/moonshotai/kimi-k2.5",
+ "pi/tangle-router/openai/gpt-5.6-luna",
+ "pi/tangle-router/openrouter/auto",
+ "pi/zai-coding-paas/glm-5",
+ "pi/zai-coding-paas/glm-5-code",
+ "pi/zai-coding-paas/glm-5-turbo",
+ "pi/zai-coding-paas/glm-5.1",
+ "pi/zai-glm/glm-4.5",
+ "pi/zai-glm/glm-4.5-air",
+ "pi/zai-glm/glm-4.5-airx",
+ "pi/zai-glm/glm-4.5-flash",
+ "pi/zai-glm/glm-4.5-x",
+ "pi/zai-glm/glm-4.6",
+ "pi/zai-glm/glm-4.7",
+ "pi/zai-glm/glm-4.7-flash",
+ "pi/zai-glm/glm-4.7-flashx",
+ "pi/zai-glm/glm-5",
+ "pi/zai-glm/glm-5-code",
+ "pi/zai-glm/glm-5-turbo",
+ "pi/zai-glm/glm-5.1"
+ ],
+ "missingTargets": [],
+ "selectedTargets": [
+ {
+ "key": "glm-5.2",
+ "label": "GLM 5.2",
+ "modelId": "opencode/zai-coding-plan/glm-5.2"
+ },
+ {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "label": "Pi with Tangle Router DeepSeek V4 Flash",
+ "modelId": "pi/tangle-router/deepseek-v4-flash"
+ },
+ {
+ "key": "codex-default",
+ "label": "Codex default",
+ "modelId": "codex/default"
+ }
+ ]
+ },
+ "selectedTargets": [
+ {
+ "key": "glm-5.2",
+ "label": "GLM 5.2",
+ "modelId": "opencode/zai-coding-plan/glm-5.2"
+ },
+ {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "label": "Pi with Tangle Router DeepSeek V4 Flash",
+ "modelId": "pi/tangle-router/deepseek-v4-flash"
+ },
+ {
+ "key": "codex-default",
+ "label": "Codex default",
+ "modelId": "codex/default"
+ }
+ ],
+ "temp": {
+ "packRoot": "/tmp/braid-live-pack-FH1bzh",
+ "installRoot": "/tmp/braid-live-install-LwdJOl"
+ },
+ "build": {
+ "command": "pnpm",
+ "args": [
+ "run",
+ "build"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "",
+ "stderr": "\u001b[2m$ node scripts/clean.mjs && tsc -p tsconfig.build.json && node scripts/build-startup.mjs\u001b[22m\n",
+ "durationMs": 1667,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "packCommand": {
+ "command": "pnpm",
+ "args": [
+ "pack",
+ "--pack-destination",
+ "/tmp/braid-live-pack-FH1bzh"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "package: @tangle-network/braid@0.3.0\n\u001b[94mTarball Contents\u001b[39m\ndist/adapters/agent-interface/harness-runtime.d.ts\ndist/adapters/agent-interface/harness-runtime.d.ts.map\ndist/adapters/agent-interface/harness-runtime.js\ndist/adapters/agent-interface/harness-runtime.js.map\ndist/adapters/agent-interface/interaction-runtime.d.ts\ndist/adapters/agent-interface/interaction-runtime.d.ts.map\ndist/adapters/agent-interface/interaction-runtime.js\ndist/adapters/agent-interface/interaction-runtime.js.map\ndist/adapters/agent-interface/module-url.d.ts\ndist/adapters/agent-interface/module-url.d.ts.map\ndist/adapters/agent-interface/module-url.js\ndist/adapters/agent-interface/module-url.js.map\ndist/adapters/agent-interface/profile-runtime.d.ts\ndist/adapters/agent-interface/profile-runtime.d.ts.map\ndist/adapters/agent-interface/profile-runtime.js\ndist/adapters/agent-interface/profile-runtime.js.map\ndist/adapters/analysis/agent-eval-version.d.ts\ndist/adapters/analysis/agent-eval-version.d.ts.map\ndist/adapters/analysis/agent-eval-version.js\ndist/adapters/analysis/agent-eval-version.js.map\ndist/adapters/analysis/citations.d.ts\ndist/adapters/analysis/citations.d.ts.map\ndist/adapters/analysis/citations.js\ndist/adapters/analysis/citations.js.map\ndist/adapters/analysis/eval-analyst.d.ts\ndist/adapters/analysis/eval-analyst.d.ts.map\ndist/adapters/analysis/eval-analyst.js\ndist/adapters/analysis/eval-analyst.js.map\ndist/adapters/analysis/managed-analysis-runtime.d.ts\ndist/adapters/analysis/managed-analysis-runtime.d.ts.map\ndist/adapters/analysis/managed-analysis-runtime.js\ndist/adapters/analysis/managed-analysis-runtime.js.map\ndist/adapters/analysis/model-execution-scope.d.ts\ndist/adapters/analysis/model-execution-scope.d.ts.map\ndist/adapters/analysis/model-execution-scope.js\ndist/adapters/analysis/model-execution-scope.js.map\ndist/adapters/analysis/production-analysis-analyst.d.ts\ndist/adapters/analysis/production-analysis-analyst.d.ts.map\ndist/adapters/analysis/production-analysis-analyst.js\ndist/adapters/analysis/production-analysis-analyst.js.map\ndist/adapters/analysis/python-runner.d.ts\ndist/adapters/analysis/python-runner.d.ts.map\ndist/adapters/analysis/python-runner.js\ndist/adapters/analysis/python-runner.js.map\ndist/adapters/analysis/question-analyst.d.ts\ndist/adapters/analysis/question-analyst.d.ts.map\ndist/adapters/analysis/question-analyst.js\ndist/adapters/analysis/question-analyst.js.map\ndist/adapters/analysis/runtime-model-owner.d.ts\ndist/adapters/analysis/runtime-model-owner.d.ts.map\ndist/adapters/analysis/runtime-model-owner.js\ndist/adapters/analysis/runtime-model-owner.js.map\ndist/adapters/analysis/runtime-retained-model-call.d.ts\ndist/adapters/analysis/runtime-retained-model-call.d.ts.map\ndist/adapters/analysis/runtime-retained-model-call.js\ndist/adapters/analysis/runtime-retained-model-call.js.map\ndist/adapters/analysis/trace-analysis-adapter.d.ts\ndist/adapters/analysis/trace-analysis-adapter.d.ts.map\ndist/adapters/analysis/trace-analysis-adapter.js\ndist/adapters/analysis/trace-analysis-adapter.js.map\ndist/adapters/analysis/trace-event-projection.d.ts\ndist/adapters/analysis/trace-event-projection.d.ts.map\ndist/adapters/analysis/trace-event-projection.js\ndist/adapters/analysis/trace-event-projection.js.map\ndist/adapters/analysis/trace-store.d.ts\ndist/adapters/analysis/trace-store.d.ts.map\ndist/adapters/analysis/trace-store.js\ndist/adapters/analysis/trace-store.js.map\ndist/adapters/connections/aws-nitro-root-g1.d.ts\ndist/adapters/connections/aws-nitro-root-g1.d.ts.map\ndist/adapters/connections/aws-nitro-root-g1.js\ndist/adapters/connections/aws-nitro-root-g1.js.map\ndist/adapters/connections/cli-bridge-health.d.ts\ndist/adapters/connections/cli-bridge-health.d.ts.map\ndist/adapters/connections/cli-bridge-health.js\ndist/adapters/connections/cli-bridge-health.js.map\ndist/adapters/connections/cli-bridge-model-route.d.ts\ndist/adapters/connections/cli-bridge-model-route.d.ts.map\ndist/adapters/connections/cli-bridge-model-route.js\ndist/adapters/connections/cli-bridge-model-route.js.map\ndist/adapters/connections/cli-bridge-model-validation.d.ts\ndist/adapters/connections/cli-bridge-model-validation.d.ts.map\ndist/adapters/connections/cli-bridge-model-validation.js\ndist/adapters/connections/cli-bridge-model-validation.js.map\ndist/adapters/connections/nitro-confidential-attestation.d.ts\ndist/adapters/connections/nitro-confidential-attestation.d.ts.map\ndist/adapters/connections/nitro-confidential-attestation.js\ndist/adapters/connections/nitro-confidential-attestation.js.map\ndist/adapters/connections/production-connection-credentials.d.ts\ndist/adapters/connections/production-connection-credentials.d.ts.map\ndist/adapters/connections/production-connection-credentials.js\ndist/adapters/connections/production-connection-credentials.js.map\ndist/adapters/connections/production-connection-endpoints.d.ts\ndist/adapters/connections/production-connection-endpoints.d.ts.map\ndist/adapters/connections/production-connection-endpoints.js\ndist/adapters/connections/production-connection-endpoints.js.map\ndist/adapters/connections/production-connection-health.d.ts\ndist/adapters/connections/production-connection-health.d.ts.map\ndist/adapters/connections/production-connection-health.js\ndist/adapters/connections/production-connection-health.js.map\ndist/adapters/connections/production-connection-providers.d.ts\ndist/adapters/connections/production-connection-providers.d.ts.map\ndist/adapters/connections/production-connection-providers.js\ndist/adapters/connections/production-connection-providers.js.map\ndist/adapters/connections/production-connection-types.d.ts\ndist/adapters/connections/production-connection-types.d.ts.map\ndist/adapters/connections/production-connection-types.js\ndist/adapters/connections/production-connection-types.js.map\ndist/adapters/connections/production-connections.d.ts\ndist/adapters/connections/production-connections.d.ts.map\ndist/adapters/connections/production-connections.js\ndist/adapters/connections/production-connections.js.map\ndist/adapters/connections/tangle-retained-control-lookup.d.ts\ndist/adapters/connections/tangle-retained-control-lookup.d.ts.map\ndist/adapters/connections/tangle-retained-control-lookup.js\ndist/adapters/connections/tangle-retained-control-lookup.js.map\ndist/adapters/credentials/headless-key.d.ts\ndist/adapters/credentials/headless-key.d.ts.map\ndist/adapters/credentials/headless-key.js\ndist/adapters/credentials/headless-key.js.map\ndist/adapters/credentials/headless-store.d.ts\ndist/adapters/credentials/headless-store.d.ts.map\ndist/adapters/credentials/headless-store.js\ndist/adapters/credentials/headless-store.js.map\ndist/adapters/credentials/memory.d.ts\ndist/adapters/credentials/memory.d.ts.map\ndist/adapters/credentials/memory.js\ndist/adapters/credentials/memory.js.map\ndist/adapters/credentials/os.d.ts\ndist/adapters/credentials/os.d.ts.map\ndist/adapters/credentials/os.js\ndist/adapters/credentials/os.js.map\ndist/adapters/persistence/posix-at.d.ts\ndist/adapters/persistence/posix-at.d.ts.map\ndist/adapters/persistence/posix-at.js\ndist/adapters/persistence/posix-at.js.map\ndist/adapters/persistence/safe-file-descriptor.d.ts\ndist/adapters/persistence/safe-file-descriptor.d.ts.map\ndist/adapters/persistence/safe-file-descriptor.js\ndist/adapters/persistence/safe-file-descriptor.js.map\ndist/adapters/persistence/safe-file-io.d.ts\ndist/adapters/persistence/safe-file-io.d.ts.map\ndist/adapters/persistence/safe-file-io.js\ndist/adapters/persistence/safe-file-io.js.map\ndist/adapters/persistence/safe-file.d.ts\ndist/adapters/persistence/safe-file.d.ts.map\ndist/adapters/persistence/safe-file.js\ndist/adapters/persistence/safe-file.js.map\ndist/adapters/runtime/agent-runtime-execution.d.ts\ndist/adapters/runtime/agent-runtime-execution.d.ts.map\ndist/adapters/runtime/agent-runtime-execution.js\ndist/adapters/runtime/agent-runtime-execution.js.map\ndist/adapters/runtime/agent-runtime-version.d.ts\ndist/adapters/runtime/agent-runtime-version.d.ts.map\ndist/adapters/runtime/agent-runtime-version.js\ndist/adapters/runtime/agent-runtime-version.js.map\ndist/adapters/runtime/cli-bridge-context-transfer.d.ts\ndist/adapters/runtime/cli-bridge-context-transfer.d.ts.map\ndist/adapters/runtime/cli-bridge-context-transfer.js\ndist/adapters/runtime/cli-bridge-context-transfer.js.map\ndist/adapters/runtime/cli-bridge-retained-execution.d.ts\ndist/adapters/runtime/cli-bridge-retained-execution.d.ts.map\ndist/adapters/runtime/cli-bridge-retained-execution.js\ndist/adapters/runtime/cli-bridge-retained-execution.js.map\ndist/adapters/runtime/cli-bridge-retained-run.d.ts\ndist/adapters/runtime/cli-bridge-retained-run.d.ts.map\ndist/adapters/runtime/cli-bridge-retained-run.js\ndist/adapters/runtime/cli-bridge-retained-run.js.map\ndist/adapters/runtime/execution-observation-source.d.ts\ndist/adapters/runtime/execution-observation-source.d.ts.map\ndist/adapters/runtime/execution-observation-source.js\ndist/adapters/runtime/execution-observation-source.js.map\ndist/adapters/runtime/lazy-execution.d.ts\ndist/adapters/runtime/lazy-execution.d.ts.map\ndist/adapters/runtime/lazy-execution.js\ndist/adapters/runtime/lazy-execution.js.map\ndist/adapters/runtime/mode-routing-execution.d.ts\ndist/adapters/runtime/mode-routing-execution.d.ts.map\ndist/adapters/runtime/mode-routing-execution.js\ndist/adapters/runtime/mode-routing-execution.js.map\ndist/adapters/runtime/native-interactive-run-broker.d.ts\ndist/adapters/runtime/native-interactive-run-broker.d.ts.map\ndist/adapters/runtime/native-interactive-run-broker.js\ndist/adapters/runtime/native-interactive-run-broker.js.map\ndist/adapters/runtime/prepared-execution.d.ts\ndist/adapters/runtime/prepared-execution.d.ts.map\ndist/adapters/runtime/prepared-execution.js\ndist/adapters/runtime/prepared-execution.js.map\ndist/adapters/runtime/production-backend-common.d.ts\ndist/adapters/runtime/production-backend-common.d.ts.map\ndist/adapters/runtime/production-backend-common.js\ndist/adapters/runtime/production-backend-common.js.map\ndist/adapters/runtime/production-backend-resolver.d.ts\ndist/adapters/runtime/production-backend-resolver.d.ts.map\ndist/adapters/runtime/production-backend-resolver.js\ndist/adapters/runtime/production-backend-resolver.js.map\ndist/adapters/runtime/production-cli-bridge-backend.d.ts\ndist/adapters/runtime/production-cli-bridge-backend.d.ts.map\ndist/adapters/runtime/production-cli-bridge-backend.js\ndist/adapters/runtime/production-cli-bridge-backend.js.map\ndist/adapters/runtime/production-tangle-inference-backend.d.ts\ndist/adapters/runtime/production-tangle-inference-backend.d.ts.map\ndist/adapters/runtime/production-tangle-inference-backend.js\ndist/adapters/runtime/production-tangle-inference-backend.js.map\ndist/adapters/runtime/production-tangle-sandbox-backend.d.ts\ndist/adapters/runtime/production-tangle-sandbox-backend.d.ts.map\ndist/adapters/runtime/production-tangle-sandbox-backend.js\ndist/adapters/runtime/production-tangle-sandbox-backend.js.map\ndist/adapters/runtime/retained-execution-contract.d.ts\ndist/adapters/runtime/retained-execution-contract.d.ts.map\ndist/adapters/runtime/retained-execution-contract.js\ndist/adapters/runtime/retained-execution-contract.js.map\ndist/adapters/runtime/retained-execution-projection.d.ts\ndist/adapters/runtime/retained-execution-projection.d.ts.map\ndist/adapters/runtime/retained-execution-projection.js\ndist/adapters/runtime/retained-execution-projection.js.map\ndist/adapters/runtime/retained-execution-state.d.ts\ndist/adapters/runtime/retained-execution-state.d.ts.map\ndist/adapters/runtime/retained-execution-state.js\ndist/adapters/runtime/retained-execution-state.js.map\ndist/adapters/runtime/retained-execution-stream.d.ts\ndist/adapters/runtime/retained-execution-stream.d.ts.map\ndist/adapters/runtime/retained-execution-stream.js\ndist/adapters/runtime/retained-execution-stream.js.map\ndist/adapters/runtime/retained-execution.d.ts\ndist/adapters/runtime/retained-execution.d.ts.map\ndist/adapters/runtime/retained-execution.js\ndist/adapters/runtime/retained-execution.js.map\ndist/adapters/runtime/retained-native-continuation.d.ts\ndist/adapters/runtime/retained-native-continuation.d.ts.map\ndist/adapters/runtime/retained-native-continuation.js\ndist/adapters/runtime/retained-native-continuation.js.map\ndist/adapters/runtime/sandbox-account-observation.d.ts\ndist/adapters/runtime/sandbox-account-observation.d.ts.map\ndist/adapters/runtime/sandbox-account-observation.js\ndist/adapters/runtime/sandbox-account-observation.js.map\ndist/adapters/runtime/sandbox-instance-observation.d.ts\ndist/adapters/runtime/sandbox-instance-observation.d.ts.map\ndist/adapters/runtime/sandbox-instance-observation.js\ndist/adapters/runtime/sandbox-instance-observation.js.map\ndist/adapters/runtime/sandbox-observation-types.d.ts\ndist/adapters/runtime/sandbox-observation-types.d.ts.map\ndist/adapters/runtime/sandbox-observation-types.js\ndist/adapters/runtime/sandbox-observation-types.js.map\ndist/adapters/runtime/sandbox-observation.d.ts\ndist/adapters/runtime/sandbox-observation.d.ts.map\ndist/adapters/runtime/sandbox-observation.js\ndist/adapters/runtime/sandbox-observation.js.map\ndist/adapters/runtime/supervisor-control.d.ts\ndist/adapters/runtime/supervisor-control.d.ts.map\ndist/adapters/runtime/supervisor-control.js\ndist/adapters/runtime/supervisor-control.js.map\ndist/adapters/runtime/supervisor-watch.d.ts\ndist/adapters/runtime/supervisor-watch.d.ts.map\ndist/adapters/runtime/supervisor-watch.js\ndist/adapters/runtime/supervisor-watch.js.map\ndist/adapters/runtime/tangle-retained-execution.d.ts\ndist/adapters/runtime/tangle-retained-execution.d.ts.map\ndist/adapters/runtime/tangle-retained-execution.js\ndist/adapters/runtime/tangle-retained-execution.js.map\ndist/adapters/runtime/tangle-retained-interactive-contract.d.ts\ndist/adapters/runtime/tangle-retained-interactive-contract.d.ts.map\ndist/adapters/runtime/tangle-retained-interactive-contract.js\ndist/adapters/runtime/tangle-retained-interactive-contract.js.map\ndist/adapters/runtime/tangle-retained-interactive-execution.d.ts\ndist/adapters/runtime/tangle-retained-interactive-execution.d.ts.map\ndist/adapters/runtime/tangle-retained-interactive-execution.js\ndist/adapters/runtime/tangle-retained-interactive-execution.js.map\ndist/adapters/runtime/tangle-retained-interactive-projection.d.ts\ndist/adapters/runtime/tangle-retained-interactive-projection.d.ts.map\ndist/adapters/runtime/tangle-retained-interactive-projection.js\ndist/adapters/runtime/tangle-retained-interactive-projection.js.map\ndist/adapters/runtime/tangle-retained-run.d.ts\ndist/adapters/runtime/tangle-retained-run.d.ts.map\ndist/adapters/runtime/tangle-retained-run.js\ndist/adapters/runtime/tangle-retained-run.js.map\ndist/adapters/runtime/tangle-sandbox-retention.d.ts\ndist/adapters/runtime/tangle-sandbox-retention.d.ts.map\ndist/adapters/runtime/tangle-sandbox-retention.js\ndist/adapters/runtime/tangle-sandbox-retention.js.map\ndist/adapters/runtime/unavailable-execution.d.ts\ndist/adapters/runtime/unavailable-execution.d.ts.map\ndist/adapters/runtime/unavailable-execution.js\ndist/adapters/runtime/unavailable-execution.js.map\ndist/adapters/storage/memory-base.d.ts\ndist/adapters/storage/memory-base.d.ts.map\ndist/adapters/storage/memory-base.js\ndist/adapters/storage/memory-base.js.map\ndist/adapters/storage/memory-effects.d.ts\ndist/adapters/storage/memory-effects.d.ts.map\ndist/adapters/storage/memory-effects.js\ndist/adapters/storage/memory-effects.js.map\ndist/adapters/storage/memory-journal.d.ts\ndist/adapters/storage/memory-journal.d.ts.map\ndist/adapters/storage/memory-journal.js\ndist/adapters/storage/memory-journal.js.map\ndist/adapters/storage/memory-maintenance.d.ts\ndist/adapters/storage/memory-maintenance.d.ts.map\ndist/adapters/storage/memory-maintenance.js\ndist/adapters/storage/memory-maintenance.js.map\ndist/adapters/storage/memory-operations.d.ts\ndist/adapters/storage/memory-operations.d.ts.map\ndist/adapters/storage/memory-operations.js\ndist/adapters/storage/memory-operations.js.map\ndist/adapters/storage/memory-retention.d.ts\ndist/adapters/storage/memory-retention.d.ts.map\ndist/adapters/storage/memory-retention.js\ndist/adapters/storage/memory-retention.js.map\ndist/adapters/storage/memory.d.ts\ndist/adapters/storage/memory.d.ts.map\ndist/adapters/storage/memory.js\ndist/adapters/storage/memory.js.map\ndist/adapters/storage/sqlite-base.d.ts\ndist/adapters/storage/sqlite-base.d.ts.map\ndist/adapters/storage/sqlite-base.js\ndist/adapters/storage/sqlite-base.js.map\ndist/adapters/storage/sqlite-bound-open.d.ts\ndist/adapters/storage/sqlite-bound-open.d.ts.map\ndist/adapters/storage/sqlite-bound-open.js\ndist/adapters/storage/sqlite-bound-open.js.map\ndist/adapters/storage/sqlite-content.d.ts\ndist/adapters/storage/sqlite-content.d.ts.map\ndist/adapters/storage/sqlite-content.js\ndist/adapters/storage/sqlite-content.js.map\ndist/adapters/storage/sqlite-crypto.d.ts\ndist/adapters/storage/sqlite-crypto.d.ts.map\ndist/adapters/storage/sqlite-crypto.js\ndist/adapters/storage/sqlite-crypto.js.map\ndist/adapters/storage/sqlite-driver.d.ts\ndist/adapters/storage/sqlite-driver.d.ts.map\ndist/adapters/storage/sqlite-driver.js\ndist/adapters/storage/sqlite-driver.js.map\ndist/adapters/storage/sqlite-effects.d.ts\ndist/adapters/storage/sqlite-effects.d.ts.map\ndist/adapters/storage/sqlite-effects.js\ndist/adapters/storage/sqlite-effects.js.map\ndist/adapters/storage/sqlite-errors.d.ts\ndist/adapters/storage/sqlite-errors.d.ts.map\ndist/adapters/storage/sqlite-errors.js\ndist/adapters/storage/sqlite-errors.js.map\ndist/adapters/storage/sqlite-initialization.d.ts\ndist/adapters/storage/sqlite-initialization.d.ts.map\ndist/adapters/storage/sqlite-initialization.js\ndist/adapters/storage/sqlite-initialization.js.map\ndist/adapters/storage/sqlite-journal.d.ts\ndist/adapters/storage/sqlite-journal.d.ts.map\ndist/adapters/storage/sqlite-journal.js\ndist/adapters/storage/sqlite-journal.js.map\ndist/adapters/storage/sqlite-lifecycle.d.ts\ndist/adapters/storage/sqlite-lifecycle.d.ts.map\ndist/adapters/storage/sqlite-lifecycle.js\ndist/adapters/storage/sqlite-lifecycle.js.map\ndist/adapters/storage/sqlite-maintenance.d.ts\ndist/adapters/storage/sqlite-maintenance.d.ts.map\ndist/adapters/storage/sqlite-maintenance.js\ndist/adapters/storage/sqlite-maintenance.js.map\ndist/adapters/storage/sqlite-operations.d.ts\ndist/adapters/storage/sqlite-operations.d.ts.map\ndist/adapters/storage/sqlite-operations.js\ndist/adapters/storage/sqlite-operations.js.map\ndist/adapters/storage/sqlite-paths.d.ts\ndist/adapters/storage/sqlite-paths.d.ts.map\ndist/adapters/storage/sqlite-paths.js\ndist/adapters/storage/sqlite-paths.js.map\ndist/adapters/storage/sqlite-projection.d.ts\ndist/adapters/storage/sqlite-projection.d.ts.map\ndist/adapters/storage/sqlite-projection.js\ndist/adapters/storage/sqlite-projection.js.map\ndist/adapters/storage/sqlite-queue.d.ts\ndist/adapters/storage/sqlite-queue.d.ts.map\ndist/adapters/storage/sqlite-queue.js\ndist/adapters/storage/sqlite-queue.js.map\ndist/adapters/storage/sqlite-recovery.d.ts\ndist/adapters/storage/sqlite-recovery.d.ts.map\ndist/adapters/storage/sqlite-recovery.js\ndist/adapters/storage/sqlite-recovery.js.map\ndist/adapters/storage/sqlite-redaction.d.ts\ndist/adapters/storage/sqlite-redaction.d.ts.map\ndist/adapters/storage/sqlite-redaction.js\ndist/adapters/storage/sqlite-redaction.js.map\ndist/adapters/storage/sqlite-rows.d.ts\ndist/adapters/storage/sqlite-rows.d.ts.map\ndist/adapters/storage/sqlite-rows.js\ndist/adapters/storage/sqlite-rows.js.map\ndist/adapters/storage/sqlite-schema.d.ts\ndist/adapters/storage/sqlite-schema.d.ts.map\ndist/adapters/storage/sqlite-schema.js\ndist/adapters/storage/sqlite-schema.js.map\ndist/adapters/storage/sqlite-state-snapshot-codec.d.ts\ndist/adapters/storage/sqlite-state-snapshot-codec.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-codec.js\ndist/adapters/storage/sqlite-state-snapshot-codec.js.map\ndist/adapters/storage/sqlite-state-snapshot-keys.d.ts\ndist/adapters/storage/sqlite-state-snapshot-keys.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-keys.js\ndist/adapters/storage/sqlite-state-snapshot-keys.js.map\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.d.ts\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.js\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.js.map\ndist/adapters/storage/sqlite-state-snapshot-read.d.ts\ndist/adapters/storage/sqlite-state-snapshot-read.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-read.js\ndist/adapters/storage/sqlite-state-snapshot-read.js.map\ndist/adapters/storage/sqlite-state-snapshot-transaction.d.ts\ndist/adapters/storage/sqlite-state-snapshot-transaction.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-transaction.js\ndist/adapters/storage/sqlite-state-snapshot-transaction.js.map\ndist/adapters/storage/sqlite-state-snapshot-types.d.ts\ndist/adapters/storage/sqlite-state-snapshot-types.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-types.js\ndist/adapters/storage/sqlite-state-snapshot-types.js.map\ndist/adapters/storage/sqlite-state-snapshot-write.d.ts\ndist/adapters/storage/sqlite-state-snapshot-write.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-write.js\ndist/adapters/storage/sqlite-state-snapshot-write.js.map\ndist/adapters/storage/sqlite-state-snapshots.d.ts\ndist/adapters/storage/sqlite-state-snapshots.d.ts.map\ndist/adapters/storage/sqlite-state-snapshots.js\ndist/adapters/storage/sqlite-state-snapshots.js.map\ndist/adapters/storage/sqlite-types.d.ts\ndist/adapters/storage/sqlite-types.d.ts.map\ndist/adapters/storage/sqlite-types.js\ndist/adapters/storage/sqlite-types.js.map\ndist/adapters/storage/sqlite.d.ts\ndist/adapters/storage/sqlite.d.ts.map\ndist/adapters/storage/sqlite.js\ndist/adapters/storage/sqlite.js.map\ndist/adapters/storage/storage-validation.d.ts\ndist/adapters/storage/storage-validation.d.ts.map\ndist/adapters/storage/storage-validation.js\ndist/adapters/storage/storage-validation.js.map\ndist/adapters/tui/alternate-screen-terminal.d.ts\ndist/adapters/tui/alternate-screen-terminal.d.ts.map\ndist/adapters/tui/alternate-screen-terminal.js\ndist/adapters/tui/alternate-screen-terminal.js.map\ndist/adapters/tui/application-ui-controller.d.ts\ndist/adapters/tui/application-ui-controller.d.ts.map\ndist/adapters/tui/application-ui-controller.js\ndist/adapters/tui/application-ui-controller.js.map\ndist/adapters/tui/native-terminal-transport.d.ts\ndist/adapters/tui/native-terminal-transport.d.ts.map\ndist/adapters/tui/native-terminal-transport.js\ndist/adapters/tui/native-terminal-transport.js.map\ndist/adapters/tui/profile-connection-dispatch.d.ts\ndist/adapters/tui/profile-connection-dispatch.d.ts.map\ndist/adapters/tui/profile-connection-dispatch.js\ndist/adapters/tui/profile-connection-dispatch.js.map\ndist/adapters/tui/ui-automation-command.d.ts\ndist/adapters/tui/ui-automation-command.d.ts.map\ndist/adapters/tui/ui-automation-command.js\ndist/adapters/tui/ui-automation-command.js.map\ndist/adapters/tui/ui-automation-dispatch.d.ts\ndist/adapters/tui/ui-automation-dispatch.d.ts.map\ndist/adapters/tui/ui-automation-dispatch.js\ndist/adapters/tui/ui-automation-dispatch.js.map\ndist/adapters/tui/ui-capabilities.d.ts\ndist/adapters/tui/ui-capabilities.d.ts.map\ndist/adapters/tui/ui-capabilities.js\ndist/adapters/tui/ui-capabilities.js.map\ndist/adapters/tui/ui-command-dispatch.d.ts\ndist/adapters/tui/ui-command-dispatch.d.ts.map\ndist/adapters/tui/ui-command-dispatch.js\ndist/adapters/tui/ui-command-dispatch.js.map\ndist/adapters/tui/ui-conversation-dispatch.d.ts\ndist/adapters/tui/ui-conversation-dispatch.d.ts.map\ndist/adapters/tui/ui-conversation-dispatch.js\ndist/adapters/tui/ui-conversation-dispatch.js.map\ndist/adapters/tui/ui-core-dispatch.d.ts\ndist/adapters/tui/ui-core-dispatch.d.ts.map\ndist/adapters/tui/ui-core-dispatch.js\ndist/adapters/tui/ui-core-dispatch.js.map\ndist/adapters/tui/ui-dispatch-context.d.ts\ndist/adapters/tui/ui-dispatch-context.d.ts.map\ndist/adapters/tui/ui-dispatch-context.js\ndist/adapters/tui/ui-dispatch-context.js.map\ndist/adapters/tui/ui-dispatch-error.d.ts\ndist/adapters/tui/ui-dispatch-error.d.ts.map\ndist/adapters/tui/ui-dispatch-error.js\ndist/adapters/tui/ui-dispatch-error.js.map\ndist/adapters/tui/ui-dispatch.d.ts\ndist/adapters/tui/ui-dispatch.d.ts.map\ndist/adapters/tui/ui-dispatch.js\ndist/adapters/tui/ui-dispatch.js.map\ndist/adapters/tui/ui-entity-details.d.ts\ndist/adapters/tui/ui-entity-details.d.ts.map\ndist/adapters/tui/ui-entity-details.js\ndist/adapters/tui/ui-entity-details.js.map\ndist/adapters/tui/ui-fixtures.d.ts\ndist/adapters/tui/ui-fixtures.d.ts.map\ndist/adapters/tui/ui-fixtures.js\ndist/adapters/tui/ui-fixtures.js.map\ndist/adapters/tui/ui-headless-dispatch.d.ts\ndist/adapters/tui/ui-headless-dispatch.d.ts.map\ndist/adapters/tui/ui-headless-dispatch.js\ndist/adapters/tui/ui-headless-dispatch.js.map\ndist/adapters/tui/ui-intelligence-dispatch.d.ts\ndist/adapters/tui/ui-intelligence-dispatch.d.ts.map\ndist/adapters/tui/ui-intelligence-dispatch.js\ndist/adapters/tui/ui-intelligence-dispatch.js.map\ndist/adapters/tui/ui-intelligence-fixtures.d.ts\ndist/adapters/tui/ui-intelligence-fixtures.d.ts.map\ndist/adapters/tui/ui-intelligence-fixtures.js\ndist/adapters/tui/ui-intelligence-fixtures.js.map\ndist/adapters/tui/ui-intelligence-result-view.d.ts\ndist/adapters/tui/ui-intelligence-result-view.d.ts.map\ndist/adapters/tui/ui-intelligence-result-view.js\ndist/adapters/tui/ui-intelligence-result-view.js.map\ndist/adapters/tui/ui-interaction-receipt.d.ts\ndist/adapters/tui/ui-interaction-receipt.d.ts.map\ndist/adapters/tui/ui-interaction-receipt.js\ndist/adapters/tui/ui-interaction-receipt.js.map\ndist/adapters/tui/ui-projection.d.ts\ndist/adapters/tui/ui-projection.d.ts.map\ndist/adapters/tui/ui-projection.js\ndist/adapters/tui/ui-projection.js.map\ndist/adapters/tui/ui-semantic-state.d.ts\ndist/adapters/tui/ui-semantic-state.d.ts.map\ndist/adapters/tui/ui-semantic-state.js\ndist/adapters/tui/ui-semantic-state.js.map\ndist/adapters/tui/ui-subscriber-delivery.d.ts\ndist/adapters/tui/ui-subscriber-delivery.d.ts.map\ndist/adapters/tui/ui-subscriber-delivery.js\ndist/adapters/tui/ui-subscriber-delivery.js.map\ndist/adapters/tui/ui-view-model.d.ts\ndist/adapters/tui/ui-view-model.d.ts.map\ndist/adapters/tui/ui-view-model.js\ndist/adapters/tui/ui-view-model.js.map\ndist/app/action-host.d.ts\ndist/app/action-host.d.ts.map\ndist/app/action-host.js\ndist/app/action-host.js.map\ndist/app/action-serialization.d.ts\ndist/app/action-serialization.d.ts.map\ndist/app/action-serialization.js\ndist/app/action-serialization.js.map\ndist/app/analysis-comparison-contracts.d.ts\ndist/app/analysis-comparison-contracts.d.ts.map\ndist/app/analysis-comparison-contracts.js\ndist/app/analysis-comparison-contracts.js.map\ndist/app/analysis-comparison-evidence.d.ts\ndist/app/analysis-comparison-evidence.d.ts.map\ndist/app/analysis-comparison-evidence.js\ndist/app/analysis-comparison-evidence.js.map\ndist/app/analysis-comparison-facts.d.ts\ndist/app/analysis-comparison-facts.d.ts.map\ndist/app/analysis-comparison-facts.js\ndist/app/analysis-comparison-facts.js.map\ndist/app/analysis-comparison-graph.d.ts\ndist/app/analysis-comparison-graph.d.ts.map\ndist/app/analysis-comparison-graph.js\ndist/app/analysis-comparison-graph.js.map\ndist/app/analysis-comparison-lifecycle.d.ts\ndist/app/analysis-comparison-lifecycle.d.ts.map\ndist/app/analysis-comparison-lifecycle.js\ndist/app/analysis-comparison-lifecycle.js.map\ndist/app/analysis-comparison-record.d.ts\ndist/app/analysis-comparison-record.d.ts.map\ndist/app/analysis-comparison-record.js\ndist/app/analysis-comparison-record.js.map\ndist/app/analysis-comparison-request.d.ts\ndist/app/analysis-comparison-request.d.ts.map\ndist/app/analysis-comparison-request.js\ndist/app/analysis-comparison-request.js.map\ndist/app/analysis-comparison.d.ts\ndist/app/analysis-comparison.d.ts.map\ndist/app/analysis-comparison.js\ndist/app/analysis-comparison.js.map\ndist/app/analysis-execution-session.d.ts\ndist/app/analysis-execution-session.d.ts.map\ndist/app/analysis-execution-session.js\ndist/app/analysis-execution-session.js.map\ndist/app/analysis-execution-target.d.ts\ndist/app/analysis-execution-target.d.ts.map\ndist/app/analysis-execution-target.js\ndist/app/analysis-execution-target.js.map\ndist/app/analysis-graph-projector.d.ts\ndist/app/analysis-graph-projector.d.ts.map\ndist/app/analysis-graph-projector.js\ndist/app/analysis-graph-projector.js.map\ndist/app/analysis-lifecycle.d.ts\ndist/app/analysis-lifecycle.d.ts.map\ndist/app/analysis-lifecycle.js\ndist/app/analysis-lifecycle.js.map\ndist/app/analysis-model-call-records.d.ts\ndist/app/analysis-model-call-records.d.ts.map\ndist/app/analysis-model-call-records.js\ndist/app/analysis-model-call-records.js.map\ndist/app/analysis-operation.d.ts\ndist/app/analysis-operation.d.ts.map\ndist/app/analysis-operation.js\ndist/app/analysis-operation.js.map\ndist/app/analysis-persistence.d.ts\ndist/app/analysis-persistence.d.ts.map\ndist/app/analysis-persistence.js\ndist/app/analysis-persistence.js.map\ndist/app/analysis-promotion.d.ts\ndist/app/analysis-promotion.d.ts.map\ndist/app/analysis-promotion.js\ndist/app/analysis-promotion.js.map\ndist/app/analysis-request.d.ts\ndist/app/analysis-request.d.ts.map\ndist/app/analysis-request.js\ndist/app/analysis-request.js.map\ndist/app/analysis-result-mapper.d.ts\ndist/app/analysis-result-mapper.d.ts.map\ndist/app/analysis-result-mapper.js\ndist/app/analysis-result-mapper.js.map\ndist/app/analysis-retained-admission.d.ts\ndist/app/analysis-retained-admission.d.ts.map\ndist/app/analysis-retained-admission.js\ndist/app/analysis-retained-admission.js.map\ndist/app/analysis-service.d.ts\ndist/app/analysis-service.d.ts.map\ndist/app/analysis-service.js\ndist/app/analysis-service.js.map\ndist/app/analysis-source.d.ts\ndist/app/analysis-source.d.ts.map\ndist/app/analysis-source.js\ndist/app/analysis-source.js.map\ndist/app/analysis-types.d.ts\ndist/app/analysis-types.d.ts.map\ndist/app/analysis-types.js\ndist/app/analysis-types.js.map\ndist/app/application-guards.d.ts\ndist/app/application-guards.d.ts.map\ndist/app/application-guards.js\ndist/app/application-guards.js.map\ndist/app/application-interaction-actions.d.ts\ndist/app/application-interaction-actions.d.ts.map\ndist/app/application-interaction-actions.js\ndist/app/application-interaction-actions.js.map\ndist/app/application-lifecycle.d.ts\ndist/app/application-lifecycle.d.ts.map\ndist/app/application-lifecycle.js\ndist/app/application-lifecycle.js.map\ndist/app/application-options.d.ts\ndist/app/application-options.d.ts.map\ndist/app/application-options.js\ndist/app/application-options.js.map\ndist/app/application-port-builder.d.ts\ndist/app/application-port-builder.d.ts.map\ndist/app/application-port-builder.js\ndist/app/application-port-builder.js.map\ndist/app/application-port-runtime.d.ts\ndist/app/application-port-runtime.d.ts.map\ndist/app/application-port-runtime.js\ndist/app/application-port-runtime.js.map\ndist/app/application-ports.d.ts\ndist/app/application-ports.d.ts.map\ndist/app/application-ports.js\ndist/app/application-ports.js.map\ndist/app/application-runtime-wiring.d.ts\ndist/app/application-runtime-wiring.d.ts.map\ndist/app/application-runtime-wiring.js\ndist/app/application-runtime-wiring.js.map\ndist/app/application-support.d.ts\ndist/app/application-support.d.ts.map\ndist/app/application-support.js\ndist/app/application-support.js.map\ndist/app/application-transition.d.ts\ndist/app/application-transition.d.ts.map\ndist/app/application-transition.js\ndist/app/application-transition.js.map\ndist/app/application-types.d.ts\ndist/app/application-types.d.ts.map\ndist/app/application-types.js\ndist/app/application-types.js.map\ndist/app/application.d.ts\ndist/app/application.d.ts.map\ndist/app/application.js\ndist/app/application.js.map\ndist/app/automation-actions.d.ts\ndist/app/automation-actions.d.ts.map\ndist/app/automation-actions.js\ndist/app/automation-actions.js.map\ndist/app/automation-matching.d.ts\ndist/app/automation-matching.d.ts.map\ndist/app/automation-matching.js\ndist/app/automation-matching.js.map\ndist/app/automation-rule-audit.d.ts\ndist/app/automation-rule-audit.d.ts.map\ndist/app/automation-rule-audit.js\ndist/app/automation-rule-audit.js.map\ndist/app/automation-rule-persistence.d.ts\ndist/app/automation-rule-persistence.d.ts.map\ndist/app/automation-rule-persistence.js\ndist/app/automation-rule-persistence.js.map\ndist/app/automation-rule-store.d.ts\ndist/app/automation-rule-store.d.ts.map\ndist/app/automation-rule-store.js\ndist/app/automation-rule-store.js.map\ndist/app/automation-rule-types.d.ts\ndist/app/automation-rule-types.d.ts.map\ndist/app/automation-rule-types.js\ndist/app/automation-rule-types.js.map\ndist/app/automation-rule-update.d.ts\ndist/app/automation-rule-update.d.ts.map\ndist/app/automation-rule-update.js\ndist/app/automation-rule-update.js.map\ndist/app/automation-rule-validation.d.ts\ndist/app/automation-rule-validation.d.ts.map\ndist/app/automation-rule-validation.js\ndist/app/automation-rule-validation.js.map\ndist/app/automation-rules.d.ts\ndist/app/automation-rules.d.ts.map\ndist/app/automation-rules.js\ndist/app/automation-rules.js.map\ndist/app/composition-options.d.ts\ndist/app/composition-options.d.ts.map\ndist/app/composition-options.js\ndist/app/composition-options.js.map\ndist/app/composition.d.ts\ndist/app/composition.d.ts.map\ndist/app/composition.js\ndist/app/composition.js.map\ndist/app/configuration-action-transition.d.ts\ndist/app/configuration-action-transition.d.ts.map\ndist/app/configuration-action-transition.js\ndist/app/configuration-action-transition.js.map\ndist/app/configuration-session.d.ts\ndist/app/configuration-session.d.ts.map\ndist/app/configuration-session.js\ndist/app/configuration-session.js.map\ndist/app/connection-action-support.d.ts\ndist/app/connection-action-support.d.ts.map\ndist/app/connection-action-support.js\ndist/app/connection-action-support.js.map\ndist/app/connection-action-types.d.ts\ndist/app/connection-action-types.d.ts.map\ndist/app/connection-action-types.js\ndist/app/connection-action-types.js.map\ndist/app/connection-actions.d.ts\ndist/app/connection-actions.d.ts.map\ndist/app/connection-actions.js\ndist/app/connection-actions.js.map\ndist/app/connection-errors.d.ts\ndist/app/connection-errors.d.ts.map\ndist/app/connection-errors.js\ndist/app/connection-errors.js.map\ndist/app/connection-probe.d.ts\ndist/app/connection-probe.d.ts.map\ndist/app/connection-probe.js\ndist/app/connection-probe.js.map\ndist/app/connection-record-factory.d.ts\ndist/app/connection-record-factory.d.ts.map\ndist/app/connection-record-factory.js\ndist/app/connection-record-factory.js.map\ndist/app/connections.d.ts\ndist/app/connections.d.ts.map\ndist/app/connections.js\ndist/app/connections.js.map\ndist/app/control-effects.d.ts\ndist/app/control-effects.d.ts.map\ndist/app/control-effects.js\ndist/app/control-effects.js.map\ndist/app/conversation-branch-effects.d.ts\ndist/app/conversation-branch-effects.d.ts.map\ndist/app/conversation-branch-effects.js\ndist/app/conversation-branch-effects.js.map\ndist/app/conversation-branches.d.ts\ndist/app/conversation-branches.d.ts.map\ndist/app/conversation-branches.js\ndist/app/conversation-branches.js.map\ndist/app/conversation-composition.d.ts\ndist/app/conversation-composition.d.ts.map\ndist/app/conversation-composition.js\ndist/app/conversation-composition.js.map\ndist/app/conversation-context.d.ts\ndist/app/conversation-context.d.ts.map\ndist/app/conversation-context.js\ndist/app/conversation-context.js.map\ndist/app/conversation-drafts.d.ts\ndist/app/conversation-drafts.d.ts.map\ndist/app/conversation-drafts.js\ndist/app/conversation-drafts.js.map\ndist/app/conversation-exports.d.ts\ndist/app/conversation-exports.d.ts.map\ndist/app/conversation-exports.js\ndist/app/conversation-exports.js.map\ndist/app/conversation-import-analyses.d.ts\ndist/app/conversation-import-analyses.d.ts.map\ndist/app/conversation-import-analyses.js\ndist/app/conversation-import-analyses.js.map\ndist/app/conversation-import-builder.d.ts\ndist/app/conversation-import-builder.d.ts.map\ndist/app/conversation-import-builder.js\ndist/app/conversation-import-builder.js.map\ndist/app/conversation-import-document.d.ts\ndist/app/conversation-import-document.d.ts.map\ndist/app/conversation-import-document.js\ndist/app/conversation-import-document.js.map\ndist/app/conversation-import-graph.d.ts\ndist/app/conversation-import-graph.d.ts.map\ndist/app/conversation-import-graph.js\ndist/app/conversation-import-graph.js.map\ndist/app/conversation-import-messages.d.ts\ndist/app/conversation-import-messages.d.ts.map\ndist/app/conversation-import-messages.js\ndist/app/conversation-import-messages.js.map\ndist/app/conversation-import-runs.d.ts\ndist/app/conversation-import-runs.d.ts.map\ndist/app/conversation-import-runs.js\ndist/app/conversation-import-runs.js.map\ndist/app/conversation-import-validation.d.ts\ndist/app/conversation-import-validation.d.ts.map\ndist/app/conversation-import-validation.js\ndist/app/conversation-import-validation.js.map\ndist/app/conversation-import-values.d.ts\ndist/app/conversation-import-values.d.ts.map\ndist/app/conversation-import-values.js\ndist/app/conversation-import-values.js.map\ndist/app/conversation-imports.d.ts\ndist/app/conversation-imports.d.ts.map\ndist/app/conversation-imports.js\ndist/app/conversation-imports.js.map\ndist/app/conversation-lifecycle.d.ts\ndist/app/conversation-lifecycle.d.ts.map\ndist/app/conversation-lifecycle.js\ndist/app/conversation-lifecycle.js.map\ndist/app/conversation-operation-coordinator.d.ts\ndist/app/conversation-operation-coordinator.d.ts.map\ndist/app/conversation-operation-coordinator.js\ndist/app/conversation-operation-coordinator.js.map\ndist/app/conversation-records.d.ts\ndist/app/conversation-records.d.ts.map\ndist/app/conversation-records.js\ndist/app/conversation-records.js.map\ndist/app/conversation-support.d.ts\ndist/app/conversation-support.d.ts.map\ndist/app/conversation-support.js\ndist/app/conversation-support.js.map\ndist/app/conversation-types.d.ts\ndist/app/conversation-types.d.ts.map\ndist/app/conversation-types.js\ndist/app/conversation-types.js.map\ndist/app/conversation-visibility.d.ts\ndist/app/conversation-visibility.d.ts.map\ndist/app/conversation-visibility.js\ndist/app/conversation-visibility.js.map\ndist/app/conversations.d.ts\ndist/app/conversations.d.ts.map\ndist/app/conversations.js\ndist/app/conversations.js.map\ndist/app/default-profiles.d.ts\ndist/app/default-profiles.d.ts.map\ndist/app/default-profiles.js\ndist/app/default-profiles.js.map\ndist/app/durable-send.d.ts\ndist/app/durable-send.d.ts.map\ndist/app/durable-send.js\ndist/app/durable-send.js.map\ndist/app/effect-coordinator.d.ts\ndist/app/effect-coordinator.d.ts.map\ndist/app/effect-coordinator.js\ndist/app/effect-coordinator.js.map\ndist/app/effect-projection.d.ts\ndist/app/effect-projection.d.ts.map\ndist/app/effect-projection.js\ndist/app/effect-projection.js.map\ndist/app/effective-run-configuration.d.ts\ndist/app/effective-run-configuration.d.ts.map\ndist/app/effective-run-configuration.js\ndist/app/effective-run-configuration.js.map\ndist/app/errors.d.ts\ndist/app/errors.d.ts.map\ndist/app/errors.js\ndist/app/errors.js.map\ndist/app/fail-closed-journal.d.ts\ndist/app/fail-closed-journal.d.ts.map\ndist/app/fail-closed-journal.js\ndist/app/fail-closed-journal.js.map\ndist/app/intelligence-actions.d.ts\ndist/app/intelligence-actions.d.ts.map\ndist/app/intelligence-actions.js\ndist/app/intelligence-actions.js.map\ndist/app/interaction-automation-coordinator.d.ts\ndist/app/interaction-automation-coordinator.d.ts.map\ndist/app/interaction-automation-coordinator.js\ndist/app/interaction-automation-coordinator.js.map\ndist/app/interaction-controller.d.ts\ndist/app/interaction-controller.d.ts.map\ndist/app/interaction-controller.js\ndist/app/interaction-controller.js.map\ndist/app/interaction-effects.d.ts\ndist/app/interaction-effects.d.ts.map\ndist/app/interaction-effects.js\ndist/app/interaction-effects.js.map\ndist/app/interaction-request.d.ts\ndist/app/interaction-request.d.ts.map\ndist/app/interaction-request.js\ndist/app/interaction-request.js.map\ndist/app/interaction-response-replay.d.ts\ndist/app/interaction-response-replay.d.ts.map\ndist/app/interaction-response-replay.js\ndist/app/interaction-response-replay.js.map\ndist/app/interaction-response.d.ts\ndist/app/interaction-response.d.ts.map\ndist/app/interaction-response.js\ndist/app/interaction-response.js.map\ndist/app/journal.d.ts\ndist/app/journal.d.ts.map\ndist/app/journal.js\ndist/app/journal.js.map\ndist/app/legacy-cancel.d.ts\ndist/app/legacy-cancel.d.ts.map\ndist/app/legacy-cancel.js\ndist/app/legacy-cancel.js.map\ndist/app/operation-fingerprint.d.ts\ndist/app/operation-fingerprint.d.ts.map\ndist/app/operation-fingerprint.js\ndist/app/operation-fingerprint.js.map\ndist/app/operation-ledger.d.ts\ndist/app/operation-ledger.d.ts.map\ndist/app/operation-ledger.js\ndist/app/operation-ledger.js.map\ndist/app/production-composition.d.ts\ndist/app/production-composition.d.ts.map\ndist/app/production-composition.js\ndist/app/production-composition.js.map\ndist/app/profile-action-support.d.ts\ndist/app/profile-action-support.d.ts.map\ndist/app/profile-action-support.js\ndist/app/profile-action-support.js.map\ndist/app/profile-actions.d.ts\ndist/app/profile-actions.d.ts.map\ndist/app/profile-actions.js\ndist/app/profile-actions.js.map\ndist/app/profile-draft.d.ts\ndist/app/profile-draft.d.ts.map\ndist/app/profile-draft.js\ndist/app/profile-draft.js.map\ndist/app/profile-model-settings.d.ts\ndist/app/profile-model-settings.d.ts.map\ndist/app/profile-model-settings.js\ndist/app/profile-model-settings.js.map\ndist/app/profile-persistence.d.ts\ndist/app/profile-persistence.d.ts.map\ndist/app/profile-persistence.js\ndist/app/profile-persistence.js.map\ndist/app/profile-save-recovery.d.ts\ndist/app/profile-save-recovery.d.ts.map\ndist/app/profile-save-recovery.js\ndist/app/profile-save-recovery.js.map\ndist/app/profile-selection.d.ts\ndist/app/profile-selection.d.ts.map\ndist/app/profile-selection.js\ndist/app/profile-selection.js.map\ndist/app/profile-snapshots.d.ts\ndist/app/profile-snapshots.d.ts.map\ndist/app/profile-snapshots.js\ndist/app/profile-snapshots.js.map\ndist/app/profile-sources.d.ts\ndist/app/profile-sources.d.ts.map\ndist/app/profile-sources.js\ndist/app/profile-sources.js.map\ndist/app/profile-types.d.ts\ndist/app/profile-types.d.ts.map\ndist/app/profile-types.js\ndist/app/profile-types.js.map\ndist/app/profile-validation.d.ts\ndist/app/profile-validation.d.ts.map\ndist/app/profile-validation.js\ndist/app/profile-validation.js.map\ndist/app/profiles.d.ts\ndist/app/profiles.d.ts.map\ndist/app/profiles.js\ndist/app/profiles.js.map\ndist/app/provider-snapshot.d.ts\ndist/app/provider-snapshot.d.ts.map\ndist/app/provider-snapshot.js\ndist/app/provider-snapshot.js.map\ndist/app/provider-values.d.ts\ndist/app/provider-values.d.ts.map\ndist/app/provider-values.js\ndist/app/provider-values.js.map\ndist/app/run-admission-context.d.ts\ndist/app/run-admission-context.d.ts.map\ndist/app/run-admission-context.js\ndist/app/run-admission-context.js.map\ndist/app/run-admission-continuation.d.ts\ndist/app/run-admission-continuation.d.ts.map\ndist/app/run-admission-continuation.js\ndist/app/run-admission-continuation.js.map\ndist/app/run-admission-dispatch.d.ts\ndist/app/run-admission-dispatch.d.ts.map\ndist/app/run-admission-dispatch.js\ndist/app/run-admission-dispatch.js.map\ndist/app/run-admission-receipt.d.ts\ndist/app/run-admission-receipt.d.ts.map\ndist/app/run-admission-receipt.js\ndist/app/run-admission-receipt.js.map\ndist/app/run-admission-request.d.ts\ndist/app/run-admission-request.d.ts.map\ndist/app/run-admission-request.js\ndist/app/run-admission-request.js.map\ndist/app/run-admission-validation.d.ts\ndist/app/run-admission-validation.d.ts.map\ndist/app/run-admission-validation.js\ndist/app/run-admission-validation.js.map\ndist/app/run-admission.d.ts\ndist/app/run-admission.d.ts.map\ndist/app/run-admission.js\ndist/app/run-admission.js.map\ndist/app/run-continuation.d.ts\ndist/app/run-continuation.d.ts.map\ndist/app/run-continuation.js\ndist/app/run-continuation.js.map\ndist/app/run-controls.d.ts\ndist/app/run-controls.d.ts.map\ndist/app/run-controls.js\ndist/app/run-controls.js.map\ndist/app/run-event-mapper.d.ts\ndist/app/run-event-mapper.d.ts.map\ndist/app/run-event-mapper.js\ndist/app/run-event-mapper.js.map\ndist/app/run-execution-snapshot.d.ts\ndist/app/run-execution-snapshot.d.ts.map\ndist/app/run-execution-snapshot.js\ndist/app/run-execution-snapshot.js.map\ndist/app/run-execution.d.ts\ndist/app/run-execution.d.ts.map\ndist/app/run-execution.js\ndist/app/run-execution.js.map\ndist/app/run-ingestion.d.ts\ndist/app/run-ingestion.d.ts.map\ndist/app/run-ingestion.js\ndist/app/run-ingestion.js.map\ndist/app/run-ledger.d.ts\ndist/app/run-ledger.d.ts.map\ndist/app/run-ledger.js\ndist/app/run-ledger.js.map\ndist/app/run-recovery-context.d.ts\ndist/app/run-recovery-context.d.ts.map\ndist/app/run-recovery-context.js\ndist/app/run-recovery-context.js.map\ndist/app/run-replay.d.ts\ndist/app/run-replay.d.ts.map\ndist/app/run-replay.js\ndist/app/run-replay.js.map\ndist/app/run-status.d.ts\ndist/app/run-status.d.ts.map\ndist/app/run-status.js\ndist/app/run-status.js.map\ndist/app/run-stream-sanitizer.d.ts\ndist/app/run-stream-sanitizer.d.ts.map\ndist/app/run-stream-sanitizer.js\ndist/app/run-stream-sanitizer.js.map\ndist/app/runtime-selection.d.ts\ndist/app/runtime-selection.d.ts.map\ndist/app/runtime-selection.js\ndist/app/runtime-selection.js.map\ndist/app/shutdown-controller.d.ts\ndist/app/shutdown-controller.d.ts.map\ndist/app/shutdown-controller.js\ndist/app/shutdown-controller.js.map\ndist/app/storage-journal-support.d.ts\ndist/app/storage-journal-support.d.ts.map\ndist/app/storage-journal-support.js\ndist/app/storage-journal-support.js.map\ndist/app/storage-journal.d.ts\ndist/app/storage-journal.d.ts.map\ndist/app/storage-journal.js\ndist/app/storage-journal.js.map\ndist/app/supervisor-projection.d.ts\ndist/app/supervisor-projection.d.ts.map\ndist/app/supervisor-projection.js\ndist/app/supervisor-projection.js.map\ndist/app/supervisor-service.d.ts\ndist/app/supervisor-service.d.ts.map\ndist/app/supervisor-service.js\ndist/app/supervisor-service.js.map\ndist/app/unavailable-analyst.d.ts\ndist/app/unavailable-analyst.d.ts.map\ndist/app/unavailable-analyst.js\ndist/app/unavailable-analyst.js.map\ndist/bin/args.d.ts\ndist/bin/args.d.ts.map\ndist/bin/args.js\ndist/bin/args.js.map\ndist/bin/braid-runtime.d.ts\ndist/bin/braid-runtime.d.ts.map\ndist/bin/braid-runtime.js\ndist/bin/braid-runtime.js.map\ndist/bin/braid.d.ts\ndist/bin/braid.d.ts.map\ndist/bin/braid.js\ndist/bin/braid.js.map\ndist/bin/fixture-application.d.ts\ndist/bin/fixture-application.d.ts.map\ndist/bin/fixture-application.js\ndist/bin/fixture-application.js.map\ndist/bin/interface-runner.d.ts\ndist/bin/interface-runner.d.ts.map\ndist/bin/interface-runner.js\ndist/bin/interface-runner.js.map\ndist/bin/interface-signal-lifecycle.d.ts\ndist/bin/interface-signal-lifecycle.d.ts.map\ndist/bin/interface-signal-lifecycle.js\ndist/bin/interface-signal-lifecycle.js.map\ndist/bin/interface-state-recorder.d.ts\ndist/bin/interface-state-recorder.d.ts.map\ndist/bin/interface-state-recorder.js\ndist/bin/interface-state-recorder.js.map\ndist/bin/native-interactive-actions.d.ts\ndist/bin/native-interactive-actions.d.ts.map\ndist/bin/native-interactive-actions.js\ndist/bin/native-interactive-actions.js.map\ndist/bin/plain.d.ts\ndist/bin/plain.d.ts.map\ndist/bin/plain.js\ndist/bin/plain.js.map\ndist/bin/production-active-profile.d.ts\ndist/bin/production-active-profile.d.ts.map\ndist/bin/production-active-profile.js\ndist/bin/production-active-profile.js.map\ndist/bin/production-application.d.ts\ndist/bin/production-application.d.ts.map\ndist/bin/production-application.js\ndist/bin/production-application.js.map\ndist/bin/production-bridge-client.d.ts\ndist/bin/production-bridge-client.d.ts.map\ndist/bin/production-bridge-client.js\ndist/bin/production-bridge-client.js.map\ndist/bin/production-bridge-discovery.d.ts\ndist/bin/production-bridge-discovery.d.ts.map\ndist/bin/production-bridge-discovery.js\ndist/bin/production-bridge-discovery.js.map\ndist/bin/production-config-mutation-lock.d.ts\ndist/bin/production-config-mutation-lock.d.ts.map\ndist/bin/production-config-mutation-lock.js\ndist/bin/production-config-mutation-lock.js.map\ndist/bin/production-connection-action-options.d.ts\ndist/bin/production-connection-action-options.d.ts.map\ndist/bin/production-connection-action-options.js\ndist/bin/production-connection-action-options.js.map\ndist/bin/production-connection-actions.d.ts\ndist/bin/production-connection-actions.d.ts.map\ndist/bin/production-connection-actions.js\ndist/bin/production-connection-actions.js.map\ndist/bin/production-connection-catalog.d.ts\ndist/bin/production-connection-catalog.d.ts.map\ndist/bin/production-connection-catalog.js\ndist/bin/production-connection-catalog.js.map\ndist/bin/production-connection-credential-cleanup.d.ts\ndist/bin/production-connection-credential-cleanup.d.ts.map\ndist/bin/production-connection-credential-cleanup.js\ndist/bin/production-connection-credential-cleanup.js.map\ndist/bin/production-connection-credential-removal-record.d.ts\ndist/bin/production-connection-credential-removal-record.d.ts.map\ndist/bin/production-connection-credential-removal-record.js\ndist/bin/production-connection-credential-removal-record.js.map\ndist/bin/production-connection-removal.d.ts\ndist/bin/production-connection-removal.d.ts.map\ndist/bin/production-connection-removal.js\ndist/bin/production-connection-removal.js.map\ndist/bin/production-connection-replay.d.ts\ndist/bin/production-connection-replay.d.ts.map\ndist/bin/production-connection-replay.js\ndist/bin/production-connection-replay.js.map\ndist/bin/production-credential-context.d.ts\ndist/bin/production-credential-context.d.ts.map\ndist/bin/production-credential-context.js\ndist/bin/production-credential-context.js.map\ndist/bin/production-credential-reference.d.ts\ndist/bin/production-credential-reference.d.ts.map\ndist/bin/production-credential-reference.js\ndist/bin/production-credential-reference.js.map\ndist/bin/production-key-path.d.ts\ndist/bin/production-key-path.d.ts.map\ndist/bin/production-key-path.js\ndist/bin/production-key-path.js.map\ndist/bin/production-profile-projection.d.ts\ndist/bin/production-profile-projection.d.ts.map\ndist/bin/production-profile-projection.js\ndist/bin/production-profile-projection.js.map\ndist/bin/production-setup-credentials.d.ts\ndist/bin/production-setup-credentials.d.ts.map\ndist/bin/production-setup-credentials.js\ndist/bin/production-setup-credentials.js.map\ndist/bin/production-setup-discovery.d.ts\ndist/bin/production-setup-discovery.d.ts.map\ndist/bin/production-setup-discovery.js\ndist/bin/production-setup-discovery.js.map\ndist/bin/production-setup-persistence.d.ts\ndist/bin/production-setup-persistence.d.ts.map\ndist/bin/production-setup-persistence.js\ndist/bin/production-setup-persistence.js.map\ndist/bin/production-setup-transition.d.ts\ndist/bin/production-setup-transition.d.ts.map\ndist/bin/production-setup-transition.js\ndist/bin/production-setup-transition.js.map\ndist/bin/production-setup-types.d.ts\ndist/bin/production-setup-types.d.ts.map\ndist/bin/production-setup-types.js\ndist/bin/production-setup-types.js.map\ndist/bin/production-setup-validation.d.ts\ndist/bin/production-setup-validation.d.ts.map\ndist/bin/production-setup-validation.js\ndist/bin/production-setup-validation.js.map\ndist/bin/production-setup.d.ts\ndist/bin/production-setup.d.ts.map\ndist/bin/production-setup.js\ndist/bin/production-setup.js.map\ndist/bin/production-startup.d.ts\ndist/bin/production-startup.d.ts.map\ndist/bin/production-startup.js\ndist/bin/production-startup.js.map\ndist/bin/runtime-startup-options.d.ts\ndist/bin/runtime-startup-options.d.ts.map\ndist/bin/runtime-startup-options.js\ndist/bin/runtime-startup-options.js.map\ndist/bin/state-path.d.ts\ndist/bin/state-path.d.ts.map\ndist/bin/state-path.js\ndist/bin/state-path.js.map\ndist/domain/analysis-model-call.d.ts\ndist/domain/analysis-model-call.d.ts.map\ndist/domain/analysis-model-call.js\ndist/domain/analysis-model-call.js.map\ndist/domain/bounded-structured.d.ts\ndist/domain/bounded-structured.d.ts.map\ndist/domain/bounded-structured.js\ndist/domain/bounded-structured.js.map\ndist/domain/canonical-json.d.ts\ndist/domain/canonical-json.d.ts.map\ndist/domain/canonical-json.js\ndist/domain/canonical-json.js.map\ndist/domain/canonical.d.ts\ndist/domain/canonical.d.ts.map\ndist/domain/canonical.js\ndist/domain/canonical.js.map\ndist/domain/code-unit-order.d.ts\ndist/domain/code-unit-order.d.ts.map\ndist/domain/code-unit-order.js\ndist/domain/code-unit-order.js.map\ndist/domain/connection-removal.d.ts\ndist/domain/connection-removal.d.ts.map\ndist/domain/connection-removal.js\ndist/domain/connection-removal.js.map\ndist/domain/content-budget.d.ts\ndist/domain/content-budget.d.ts.map\ndist/domain/content-budget.js\ndist/domain/content-budget.js.map\ndist/domain/entities-base.d.ts\ndist/domain/entities-base.d.ts.map\ndist/domain/entities-base.js\ndist/domain/entities-base.js.map\ndist/domain/entities-core.d.ts\ndist/domain/entities-core.d.ts.map\ndist/domain/entities-core.js\ndist/domain/entities-core.js.map\ndist/domain/entities-graph.d.ts\ndist/domain/entities-graph.d.ts.map\ndist/domain/entities-graph.js\ndist/domain/entities-graph.js.map\ndist/domain/entities-interactions.d.ts\ndist/domain/entities-interactions.d.ts.map\ndist/domain/entities-interactions.js\ndist/domain/entities-interactions.js.map\ndist/domain/entities-messages.d.ts\ndist/domain/entities-messages.d.ts.map\ndist/domain/entities-messages.js\ndist/domain/entities-messages.js.map\ndist/domain/entities-runtime.d.ts\ndist/domain/entities-runtime.d.ts.map\ndist/domain/entities-runtime.js\ndist/domain/entities-runtime.js.map\ndist/domain/entities.d.ts\ndist/domain/entities.d.ts.map\ndist/domain/entities.js\ndist/domain/entities.js.map\ndist/domain/events-legacy.d.ts\ndist/domain/events-legacy.d.ts.map\ndist/domain/events-legacy.js\ndist/domain/events-legacy.js.map\ndist/domain/events.d.ts\ndist/domain/events.d.ts.map\ndist/domain/events.js\ndist/domain/events.js.map\ndist/domain/execution-observation.d.ts\ndist/domain/execution-observation.d.ts.map\ndist/domain/execution-observation.js\ndist/domain/execution-observation.js.map\ndist/domain/graph-records.d.ts\ndist/domain/graph-records.d.ts.map\ndist/domain/graph-records.js\ndist/domain/graph-records.js.map\ndist/domain/ids-core.d.ts\ndist/domain/ids-core.d.ts.map\ndist/domain/ids-core.js\ndist/domain/ids-core.js.map\ndist/domain/ids-types.d.ts\ndist/domain/ids-types.d.ts.map\ndist/domain/ids-types.js\ndist/domain/ids-types.js.map\ndist/domain/ids-values.d.ts\ndist/domain/ids-values.d.ts.map\ndist/domain/ids-values.js\ndist/domain/ids-values.js.map\ndist/domain/ids.d.ts\ndist/domain/ids.d.ts.map\ndist/domain/ids.js\ndist/domain/ids.js.map\ndist/domain/interaction-identity.d.ts\ndist/domain/interaction-identity.d.ts.map\ndist/domain/interaction-identity.js\ndist/domain/interaction-identity.js.map\ndist/domain/interaction-timeout.d.ts\ndist/domain/interaction-timeout.d.ts.map\ndist/domain/interaction-timeout.js\ndist/domain/interaction-timeout.js.map\ndist/domain/invariants-base.d.ts\ndist/domain/invariants-base.d.ts.map\ndist/domain/invariants-base.js\ndist/domain/invariants-base.js.map\ndist/domain/invariants-conversation.d.ts\ndist/domain/invariants-conversation.d.ts.map\ndist/domain/invariants-conversation.js\ndist/domain/invariants-conversation.js.map\ndist/domain/invariants-profile.d.ts\ndist/domain/invariants-profile.d.ts.map\ndist/domain/invariants-profile.js\ndist/domain/invariants-profile.js.map\ndist/domain/invariants-relations.d.ts\ndist/domain/invariants-relations.d.ts.map\ndist/domain/invariants-relations.js\ndist/domain/invariants-relations.js.map\ndist/domain/invariants-retained-admission.d.ts\ndist/domain/invariants-retained-admission.d.ts.map\ndist/domain/invariants-retained-admission.js\ndist/domain/invariants-retained-admission.js.map\ndist/domain/invariants-run.d.ts\ndist/domain/invariants-run.d.ts.map\ndist/domain/invariants-run.js\ndist/domain/invariants-run.js.map\ndist/domain/invariants-runtime.d.ts\ndist/domain/invariants-runtime.d.ts.map\ndist/domain/invariants-runtime.js\ndist/domain/invariants-runtime.js.map\ndist/domain/invariants-state.d.ts\ndist/domain/invariants-state.d.ts.map\ndist/domain/invariants-state.js\ndist/domain/invariants-state.js.map\ndist/domain/invariants.d.ts\ndist/domain/invariants.d.ts.map\ndist/domain/invariants.js\ndist/domain/invariants.js.map\ndist/domain/legacy-interaction-snapshot.d.ts\ndist/domain/legacy-interaction-snapshot.d.ts.map\ndist/domain/legacy-interaction-snapshot.js\ndist/domain/legacy-interaction-snapshot.js.map\ndist/domain/materialization-receipt.d.ts\ndist/domain/materialization-receipt.d.ts.map\ndist/domain/materialization-receipt.js\ndist/domain/materialization-receipt.js.map\ndist/domain/materialized-state-snapshot.d.ts\ndist/domain/materialized-state-snapshot.d.ts.map\ndist/domain/materialized-state-snapshot.js\ndist/domain/materialized-state-snapshot.js.map\ndist/domain/materialized-state.d.ts\ndist/domain/materialized-state.d.ts.map\ndist/domain/materialized-state.js\ndist/domain/materialized-state.js.map\ndist/domain/projection-checksum.d.ts\ndist/domain/projection-checksum.d.ts.map\ndist/domain/projection-checksum.js\ndist/domain/projection-checksum.js.map\ndist/domain/provider-values.d.ts\ndist/domain/provider-values.d.ts.map\ndist/domain/provider-values.js\ndist/domain/provider-values.js.map\ndist/domain/public-metadata.d.ts\ndist/domain/public-metadata.d.ts.map\ndist/domain/public-metadata.js\ndist/domain/public-metadata.js.map\ndist/domain/receipts.d.ts\ndist/domain/receipts.d.ts.map\ndist/domain/receipts.js\ndist/domain/receipts.js.map\ndist/domain/redaction.d.ts\ndist/domain/redaction.d.ts.map\ndist/domain/redaction.js\ndist/domain/redaction.js.map\ndist/domain/reducer-content.d.ts\ndist/domain/reducer-content.d.ts.map\ndist/domain/reducer-content.js\ndist/domain/reducer-content.js.map\ndist/domain/reducer-conversation-events.d.ts\ndist/domain/reducer-conversation-events.d.ts.map\ndist/domain/reducer-conversation-events.js\ndist/domain/reducer-conversation-events.js.map\ndist/domain/reducer-domain-events.d.ts\ndist/domain/reducer-domain-events.d.ts.map\ndist/domain/reducer-domain-events.js\ndist/domain/reducer-domain-events.js.map\ndist/domain/reducer-execution-observation.d.ts\ndist/domain/reducer-execution-observation.d.ts.map\ndist/domain/reducer-execution-observation.js\ndist/domain/reducer-execution-observation.js.map\ndist/domain/reducer-helpers.d.ts\ndist/domain/reducer-helpers.d.ts.map\ndist/domain/reducer-helpers.js\ndist/domain/reducer-helpers.js.map\ndist/domain/reducer-interactions.d.ts\ndist/domain/reducer-interactions.d.ts.map\ndist/domain/reducer-interactions.js\ndist/domain/reducer-interactions.js.map\ndist/domain/reducer-legacy.d.ts\ndist/domain/reducer-legacy.d.ts.map\ndist/domain/reducer-legacy.js\ndist/domain/reducer-legacy.js.map\ndist/domain/reducer-lifecycle.d.ts\ndist/domain/reducer-lifecycle.d.ts.map\ndist/domain/reducer-lifecycle.js\ndist/domain/reducer-lifecycle.js.map\ndist/domain/reducer-replay.d.ts\ndist/domain/reducer-replay.d.ts.map\ndist/domain/reducer-replay.js\ndist/domain/reducer-replay.js.map\ndist/domain/reducer-retained-admission.d.ts\ndist/domain/reducer-retained-admission.d.ts.map\ndist/domain/reducer-retained-admission.js\ndist/domain/reducer-retained-admission.js.map\ndist/domain/reducer-run-graph.d.ts\ndist/domain/reducer-run-graph.d.ts.map\ndist/domain/reducer-run-graph.js\ndist/domain/reducer-run-graph.js.map\ndist/domain/reducer-runtime.d.ts\ndist/domain/reducer-runtime.d.ts.map\ndist/domain/reducer-runtime.js\ndist/domain/reducer-runtime.js.map\ndist/domain/reducer-support.d.ts\ndist/domain/reducer-support.d.ts.map\ndist/domain/reducer-support.js\ndist/domain/reducer-support.js.map\ndist/domain/reducer.d.ts\ndist/domain/reducer.d.ts.map\ndist/domain/reducer.js\ndist/domain/reducer.js.map\ndist/domain/run-contracts.d.ts\ndist/domain/run-contracts.d.ts.map\ndist/domain/run-contracts.js\ndist/domain/run-contracts.js.map\ndist/domain/run-interactions.d.ts\ndist/domain/run-interactions.d.ts.map\ndist/domain/run-interactions.js\ndist/domain/run-interactions.js.map\ndist/domain/run-usage.d.ts\ndist/domain/run-usage.d.ts.map\ndist/domain/run-usage.js\ndist/domain/run-usage.js.map\ndist/domain/runtime-diagnostics.d.ts\ndist/domain/runtime-diagnostics.d.ts.map\ndist/domain/runtime-diagnostics.js\ndist/domain/runtime-diagnostics.js.map\ndist/domain/runtime-events.d.ts\ndist/domain/runtime-events.d.ts.map\ndist/domain/runtime-events.js\ndist/domain/runtime-events.js.map\ndist/domain/runtime-projection.d.ts\ndist/domain/runtime-projection.d.ts.map\ndist/domain/runtime-projection.js\ndist/domain/runtime-projection.js.map\ndist/domain/secret-sanitizer.d.ts\ndist/domain/secret-sanitizer.d.ts.map\ndist/domain/secret-sanitizer.js\ndist/domain/secret-sanitizer.js.map\ndist/domain/state.d.ts\ndist/domain/state.d.ts.map\ndist/domain/state.js\ndist/domain/state.js.map\ndist/domain/terminal-sanitizer.d.ts\ndist/domain/terminal-sanitizer.d.ts.map\ndist/domain/terminal-sanitizer.js\ndist/domain/terminal-sanitizer.js.map\ndist/domain/text.d.ts\ndist/domain/text.d.ts.map\ndist/domain/text.js\ndist/domain/text.js.map\ndist/eval/calibration.d.ts\ndist/eval/calibration.d.ts.map\ndist/eval/calibration.js\ndist/eval/calibration.js.map\ndist/eval/campaigns.d.ts\ndist/eval/campaigns.d.ts.map\ndist/eval/campaigns.js\ndist/eval/campaigns.js.map\ndist/eval/cases.d.ts\ndist/eval/cases.d.ts.map\ndist/eval/cases.js\ndist/eval/cases.js.map\ndist/eval/execution.d.ts\ndist/eval/execution.d.ts.map\ndist/eval/execution.js\ndist/eval/execution.js.map\ndist/eval/fixtures.d.ts\ndist/eval/fixtures.d.ts.map\ndist/eval/fixtures.js\ndist/eval/fixtures.js.map\ndist/eval/product-path.d.ts\ndist/eval/product-path.d.ts.map\ndist/eval/product-path.js\ndist/eval/product-path.js.map\ndist/eval/record-builder.d.ts\ndist/eval/record-builder.d.ts.map\ndist/eval/record-builder.js\ndist/eval/record-builder.js.map\ndist/eval/records.d.ts\ndist/eval/records.d.ts.map\ndist/eval/records.js\ndist/eval/records.js.map\ndist/eval/release-decision.d.ts\ndist/eval/release-decision.d.ts.map\ndist/eval/release-decision.js\ndist/eval/release-decision.js.map\ndist/eval/release-markers.d.ts\ndist/eval/release-markers.d.ts.map\ndist/eval/release-markers.js\ndist/eval/release-markers.js.map\ndist/eval/runner.d.ts\ndist/eval/runner.d.ts.map\ndist/eval/runner.js\ndist/eval/runner.js.map\ndist/eval/types.d.ts\ndist/eval/types.d.ts.map\ndist/eval/types.js\ndist/eval/types.js.map\ndist/index.d.ts\ndist/index.d.ts.map\ndist/index.js\ndist/index.js.map\ndist/installed-package-version.d.ts\ndist/installed-package-version.d.ts.map\ndist/installed-package-version.js\ndist/installed-package-version.js.map\ndist/ports/clock.d.ts\ndist/ports/clock.d.ts.map\ndist/ports/clock.js\ndist/ports/clock.js.map\ndist/ports/connection-lifecycle.d.ts\ndist/ports/connection-lifecycle.d.ts.map\ndist/ports/connection-lifecycle.js\ndist/ports/connection-lifecycle.js.map\ndist/ports/credentials.d.ts\ndist/ports/credentials.d.ts.map\ndist/ports/credentials.js\ndist/ports/credentials.js.map\ndist/ports/effect-storage.d.ts\ndist/ports/effect-storage.d.ts.map\ndist/ports/effect-storage.js\ndist/ports/effect-storage.js.map\ndist/ports/execution.d.ts\ndist/ports/execution.d.ts.map\ndist/ports/execution.js\ndist/ports/execution.js.map\ndist/ports/ids.d.ts\ndist/ports/ids.d.ts.map\ndist/ports/ids.js\ndist/ports/ids.js.map\ndist/ports/native-interactive-execution.d.ts\ndist/ports/native-interactive-execution.d.ts.map\ndist/ports/native-interactive-execution.js\ndist/ports/native-interactive-execution.js.map\ndist/ports/native-terminal-transport.d.ts\ndist/ports/native-terminal-transport.d.ts.map\ndist/ports/native-terminal-transport.js\ndist/ports/native-terminal-transport.js.map\ndist/ports/storage.d.ts\ndist/ports/storage.d.ts.map\ndist/ports/storage.js\ndist/ports/storage.js.map\ndist/startup/chunks/analysis-comparison-facts-I3OYGYE5.js\ndist/startup/chunks/analysis-comparison-facts-I3OYGYE5.js.map\ndist/startup/chunks/analysis-comparison-record-VMUVZPUV.js\ndist/startup/chunks/analysis-comparison-record-VMUVZPUV.js.map\ndist/startup/chunks/chunk-2B6P3EZQ.js\ndist/startup/chunks/chunk-2B6P3EZQ.js.map\ndist/startup/chunks/chunk-2DHVQBG3.js\ndist/startup/chunks/chunk-2DHVQBG3.js.map\ndist/startup/chunks/chunk-3SLVNOQZ.js\ndist/startup/chunks/chunk-3SLVNOQZ.js.map\ndist/startup/chunks/chunk-4GTWJJDM.js\ndist/startup/chunks/chunk-4GTWJJDM.js.map\ndist/startup/chunks/chunk-5PAWXR2Q.js\ndist/startup/chunks/chunk-5PAWXR2Q.js.map\ndist/startup/chunks/chunk-6G7QKB6J.js\ndist/startup/chunks/chunk-6G7QKB6J.js.map\ndist/startup/chunks/chunk-7XGO5BXD.js\ndist/startup/chunks/chunk-7XGO5BXD.js.map\ndist/startup/chunks/chunk-A4OPONUD.js\ndist/startup/chunks/chunk-A4OPONUD.js.map\ndist/startup/chunks/chunk-AUQCJYW5.js\ndist/startup/chunks/chunk-AUQCJYW5.js.map\ndist/startup/chunks/chunk-B5RO4NKE.js\ndist/startup/chunks/chunk-B5RO4NKE.js.map\ndist/startup/chunks/chunk-C7EOPPW6.js\ndist/startup/chunks/chunk-C7EOPPW6.js.map\ndist/startup/chunks/chunk-DLR6FLQV.js\ndist/startup/chunks/chunk-DLR6FLQV.js.map\ndist/startup/chunks/chunk-ECJN6YKR.js\ndist/startup/chunks/chunk-ECJN6YKR.js.map\ndist/startup/chunks/chunk-EJNMDNTG.js\ndist/startup/chunks/chunk-EJNMDNTG.js.map\ndist/startup/chunks/chunk-END4OHSH.js\ndist/startup/chunks/chunk-END4OHSH.js.map\ndist/startup/chunks/chunk-GDBW3ONY.js\ndist/startup/chunks/chunk-GDBW3ONY.js.map\ndist/startup/chunks/chunk-ICSUOC5L.js\ndist/startup/chunks/chunk-ICSUOC5L.js.map\ndist/startup/chunks/chunk-JVFU2XN5.js\ndist/startup/chunks/chunk-JVFU2XN5.js.map\ndist/startup/chunks/chunk-LBHLC2S6.js\ndist/startup/chunks/chunk-LBHLC2S6.js.map\ndist/startup/chunks/chunk-LIQFLF7X.js\ndist/startup/chunks/chunk-LIQFLF7X.js.map\ndist/startup/chunks/chunk-NLHRVY4W.js\ndist/startup/chunks/chunk-NLHRVY4W.js.map\ndist/startup/chunks/chunk-PAPTIOCL.js\ndist/startup/chunks/chunk-PAPTIOCL.js.map\ndist/startup/chunks/chunk-PHF25LHJ.js\ndist/startup/chunks/chunk-PHF25LHJ.js.map\ndist/startup/chunks/chunk-PXRVFPRL.js\ndist/startup/chunks/chunk-PXRVFPRL.js.map\ndist/startup/chunks/chunk-RG4XF34O.js\ndist/startup/chunks/chunk-RG4XF34O.js.map\ndist/startup/chunks/chunk-S2GV43RS.js\ndist/startup/chunks/chunk-S2GV43RS.js.map\ndist/startup/chunks/chunk-TD2TPAGY.js\ndist/startup/chunks/chunk-TD2TPAGY.js.map\ndist/startup/chunks/chunk-UTHORCP6.js\ndist/startup/chunks/chunk-UTHORCP6.js.map\ndist/startup/chunks/chunk-V7LWVMBP.js\ndist/startup/chunks/chunk-V7LWVMBP.js.map\ndist/startup/chunks/chunk-V7ZXNCA7.js\ndist/startup/chunks/chunk-V7ZXNCA7.js.map\ndist/startup/chunks/chunk-VRWZ5M2N.js\ndist/startup/chunks/chunk-VRWZ5M2N.js.map\ndist/startup/chunks/chunk-VTNLVERY.js\ndist/startup/chunks/chunk-VTNLVERY.js.map\ndist/startup/chunks/chunk-X4CECC3O.js\ndist/startup/chunks/chunk-X4CECC3O.js.map\ndist/startup/chunks/chunk-XBKCXOJW.js\ndist/startup/chunks/chunk-XBKCXOJW.js.map\ndist/startup/chunks/chunk-Z3GH7NPB.js\ndist/startup/chunks/chunk-Z3GH7NPB.js.map\ndist/startup/chunks/chunk-ZOX5AIG5.js\ndist/startup/chunks/chunk-ZOX5AIG5.js.map\ndist/startup/chunks/chunk-ZUTIVWML.js\ndist/startup/chunks/chunk-ZUTIVWML.js.map\ndist/startup/chunks/configuration-wizard-CW4DGU64.js\ndist/startup/chunks/configuration-wizard-CW4DGU64.js.map\ndist/startup/chunks/production-composition-32ZB3SSV.js\ndist/startup/chunks/production-composition-32ZB3SSV.js.map\ndist/startup/chunks/production-connection-providers-WDIVTX5W.js\ndist/startup/chunks/production-connection-providers-WDIVTX5W.js.map\ndist/startup/chunks/production-connections-22QMPHBX.js\ndist/startup/chunks/production-connections-22QMPHBX.js.map\ndist/startup/chunks/profile-connection-dispatch-MQVRUHHD.js\ndist/startup/chunks/profile-connection-dispatch-MQVRUHHD.js.map\ndist/startup/chunks/supervisor-control-F4IMJYTH.js\ndist/startup/chunks/supervisor-control-F4IMJYTH.js.map\ndist/startup/chunks/supervisor-watch-X6TXO6GN.js\ndist/startup/chunks/supervisor-watch-X6TXO6GN.js.map\ndist/startup/chunks/trace-store-7SBEF7ZG.js\ndist/startup/chunks/trace-store-7SBEF7ZG.js.map\ndist/startup/chunks/ui-dispatch-BX7VRXL7.js\ndist/startup/chunks/ui-dispatch-BX7VRXL7.js.map\ndist/startup/durable-runtime.d.ts\ndist/startup/durable-runtime.d.ts.map\ndist/startup/durable-runtime.js\ndist/startup/durable-runtime.js.map\ndist/startup/preview-runtime.d.ts\ndist/startup/preview-runtime.d.ts.map\ndist/startup/preview-runtime.js\ndist/startup/preview-runtime.js.map\ndist/startup/terminal-runtime.d.ts\ndist/startup/terminal-runtime.d.ts.map\ndist/startup/terminal-runtime.js\ndist/startup/terminal-runtime.js.map\ndist/startup/terminal-signal-latch.d.ts\ndist/startup/terminal-signal-latch.d.ts.map\ndist/startup/terminal-signal-latch.js\ndist/startup/terminal-signal-latch.js.map\ndist/testing/deterministic-backend.d.ts\ndist/testing/deterministic-backend.d.ts.map\ndist/testing/deterministic-backend.js\ndist/testing/deterministic-backend.js.map\ndist/testing/product-demo-fixture.d.ts\ndist/testing/product-demo-fixture.d.ts.map\ndist/testing/product-demo-fixture.js\ndist/testing/product-demo-fixture.js.map\ndist/testing/runtime-contract-fixtures.d.ts\ndist/testing/runtime-contract-fixtures.d.ts.map\ndist/testing/runtime-contract-fixtures.js\ndist/testing/runtime-contract-fixtures.js.map\ndist/testing/supervision-fixture.d.ts\ndist/testing/supervision-fixture.d.ts.map\ndist/testing/supervision-fixture.js\ndist/testing/supervision-fixture.js.map\ndist/testing/supervision-ui-fixture.d.ts\ndist/testing/supervision-ui-fixture.d.ts.map\ndist/testing/supervision-ui-fixture.js\ndist/testing/supervision-ui-fixture.js.map\ndist/version.d.ts\ndist/version.d.ts.map\ndist/version.js\ndist/version.js.map\ndist/views/headless/bounded-output.d.ts\ndist/views/headless/bounded-output.d.ts.map\ndist/views/headless/bounded-output.js\ndist/views/headless/bounded-output.js.map\ndist/views/headless/protocol-limits.d.ts\ndist/views/headless/protocol-limits.d.ts.map\ndist/views/headless/protocol-limits.js\ndist/views/headless/protocol-limits.js.map\ndist/views/headless/protocol.d.ts\ndist/views/headless/protocol.d.ts.map\ndist/views/headless/protocol.js\ndist/views/headless/protocol.js.map\ndist/views/headless/rpc-automation-commands.d.ts\ndist/views/headless/rpc-automation-commands.d.ts.map\ndist/views/headless/rpc-automation-commands.js\ndist/views/headless/rpc-automation-commands.js.map\ndist/views/headless/rpc-errors.d.ts\ndist/views/headless/rpc-errors.d.ts.map\ndist/views/headless/rpc-errors.js\ndist/views/headless/rpc-errors.js.map\ndist/views/headless/rpc-interaction-commands.d.ts\ndist/views/headless/rpc-interaction-commands.d.ts.map\ndist/views/headless/rpc-interaction-commands.js\ndist/views/headless/rpc-interaction-commands.js.map\ndist/views/headless/rpc-parser.d.ts\ndist/views/headless/rpc-parser.d.ts.map\ndist/views/headless/rpc-parser.js\ndist/views/headless/rpc-parser.js.map\ndist/views/headless/rpc-types.d.ts\ndist/views/headless/rpc-types.d.ts.map\ndist/views/headless/rpc-types.js\ndist/views/headless/rpc-types.js.map\ndist/views/headless/rpc.d.ts\ndist/views/headless/rpc.d.ts.map\ndist/views/headless/rpc.js\ndist/views/headless/rpc.js.map\ndist/views/shared/analysis-model-call-presentation.d.ts\ndist/views/shared/analysis-model-call-presentation.d.ts.map\ndist/views/shared/analysis-model-call-presentation.js\ndist/views/shared/analysis-model-call-presentation.js.map\ndist/views/shared/analysis-presentation.d.ts\ndist/views/shared/analysis-presentation.d.ts.map\ndist/views/shared/analysis-presentation.js\ndist/views/shared/analysis-presentation.js.map\ndist/views/shared/appearance.d.ts\ndist/views/shared/appearance.d.ts.map\ndist/views/shared/appearance.js\ndist/views/shared/appearance.js.map\ndist/views/shared/canonical.d.ts\ndist/views/shared/canonical.d.ts.map\ndist/views/shared/canonical.js\ndist/views/shared/canonical.js.map\ndist/views/shared/command-registry.d.ts\ndist/views/shared/command-registry.d.ts.map\ndist/views/shared/command-registry.js\ndist/views/shared/command-registry.js.map\ndist/views/shared/command-table.d.ts\ndist/views/shared/command-table.d.ts.map\ndist/views/shared/command-table.js\ndist/views/shared/command-table.js.map\ndist/views/shared/comparison-presentation.d.ts\ndist/views/shared/comparison-presentation.d.ts.map\ndist/views/shared/comparison-presentation.js\ndist/views/shared/comparison-presentation.js.map\ndist/views/shared/connection-lifecycle.d.ts\ndist/views/shared/connection-lifecycle.d.ts.map\ndist/views/shared/connection-lifecycle.js\ndist/views/shared/connection-lifecycle.js.map\ndist/views/shared/duration.d.ts\ndist/views/shared/duration.d.ts.map\ndist/views/shared/duration.js\ndist/views/shared/duration.js.map\ndist/views/shared/environment-presentation.d.ts\ndist/views/shared/environment-presentation.d.ts.map\ndist/views/shared/environment-presentation.js\ndist/views/shared/environment-presentation.js.map\ndist/views/shared/headless-commands.d.ts\ndist/views/shared/headless-commands.d.ts.map\ndist/views/shared/headless-commands.js\ndist/views/shared/headless-commands.js.map\ndist/views/shared/intents.d.ts\ndist/views/shared/intents.d.ts.map\ndist/views/shared/intents.js\ndist/views/shared/intents.js.map\ndist/views/shared/models.d.ts\ndist/views/shared/models.d.ts.map\ndist/views/shared/models.js\ndist/views/shared/models.js.map\ndist/views/shared/native-interactive-actions.d.ts\ndist/views/shared/native-interactive-actions.d.ts.map\ndist/views/shared/native-interactive-actions.js\ndist/views/shared/native-interactive-actions.js.map\ndist/views/shared/plain-accessibility.d.ts\ndist/views/shared/plain-accessibility.d.ts.map\ndist/views/shared/plain-accessibility.js\ndist/views/shared/plain-accessibility.js.map\ndist/views/shared/sanitize.d.ts\ndist/views/shared/sanitize.d.ts.map\ndist/views/shared/sanitize.js\ndist/views/shared/sanitize.js.map\ndist/views/shared/semantic-activity-limit.d.ts\ndist/views/shared/semantic-activity-limit.d.ts.map\ndist/views/shared/semantic-activity-limit.js\ndist/views/shared/semantic-activity-limit.js.map\ndist/views/shared/semantic-activity.d.ts\ndist/views/shared/semantic-activity.d.ts.map\ndist/views/shared/semantic-activity.js\ndist/views/shared/semantic-activity.js.map\ndist/views/shared/semantic-details.d.ts\ndist/views/shared/semantic-details.d.ts.map\ndist/views/shared/semantic-details.js\ndist/views/shared/semantic-details.js.map\ndist/views/shared/semantic-graph-edges.d.ts\ndist/views/shared/semantic-graph-edges.d.ts.map\ndist/views/shared/semantic-graph-edges.js\ndist/views/shared/semantic-graph-edges.js.map\ndist/views/shared/semantic-graph-filters.d.ts\ndist/views/shared/semantic-graph-filters.d.ts.map\ndist/views/shared/semantic-graph-filters.js\ndist/views/shared/semantic-graph-filters.js.map\ndist/views/shared/semantic-graph-nodes.d.ts\ndist/views/shared/semantic-graph-nodes.d.ts.map\ndist/views/shared/semantic-graph-nodes.js\ndist/views/shared/semantic-graph-nodes.js.map\ndist/views/shared/semantic-graph.d.ts\ndist/views/shared/semantic-graph.d.ts.map\ndist/views/shared/semantic-graph.js\ndist/views/shared/semantic-graph.js.map\ndist/views/shared/semantic-projection.d.ts\ndist/views/shared/semantic-projection.d.ts.map\ndist/views/shared/semantic-projection.js\ndist/views/shared/semantic-projection.js.map\ndist/views/shared/semantic-query-scope.d.ts\ndist/views/shared/semantic-query-scope.d.ts.map\ndist/views/shared/semantic-query-scope.js\ndist/views/shared/semantic-query-scope.js.map\ndist/views/shared/semantic-query-types.d.ts\ndist/views/shared/semantic-query-types.d.ts.map\ndist/views/shared/semantic-query-types.js\ndist/views/shared/semantic-query-types.js.map\ndist/views/shared/usage-projection.d.ts\ndist/views/shared/usage-projection.d.ts.map\ndist/views/shared/usage-projection.js\ndist/views/shared/usage-projection.js.map\ndist/views/tui/activity-browser.d.ts\ndist/views/tui/activity-browser.d.ts.map\ndist/views/tui/activity-browser.js\ndist/views/tui/activity-browser.js.map\ndist/views/tui/activity-document.d.ts\ndist/views/tui/activity-document.d.ts.map\ndist/views/tui/activity-document.js\ndist/views/tui/activity-document.js.map\ndist/views/tui/activity.d.ts\ndist/views/tui/activity.d.ts.map\ndist/views/tui/activity.js\ndist/views/tui/activity.js.map\ndist/views/tui/analysis.d.ts\ndist/views/tui/analysis.d.ts.map\ndist/views/tui/analysis.js\ndist/views/tui/analysis.js.map\ndist/views/tui/autocomplete-guard.d.ts\ndist/views/tui/autocomplete-guard.d.ts.map\ndist/views/tui/autocomplete-guard.js\ndist/views/tui/autocomplete-guard.js.map\ndist/views/tui/automation-overlay-workflow.d.ts\ndist/views/tui/automation-overlay-workflow.d.ts.map\ndist/views/tui/automation-overlay-workflow.js\ndist/views/tui/automation-overlay-workflow.js.map\ndist/views/tui/automation-rule-panel.d.ts\ndist/views/tui/automation-rule-panel.d.ts.map\ndist/views/tui/automation-rule-panel.js\ndist/views/tui/automation-rule-panel.js.map\ndist/views/tui/automation-rule-presentation.d.ts\ndist/views/tui/automation-rule-presentation.d.ts.map\ndist/views/tui/automation-rule-presentation.js\ndist/views/tui/automation-rule-presentation.js.map\ndist/views/tui/automation-rule-response-editor.d.ts\ndist/views/tui/automation-rule-response-editor.d.ts.map\ndist/views/tui/automation-rule-response-editor.js\ndist/views/tui/automation-rule-response-editor.js.map\ndist/views/tui/command-palette.d.ts\ndist/views/tui/command-palette.d.ts.map\ndist/views/tui/command-palette.js\ndist/views/tui/command-palette.js.map\ndist/views/tui/comparison.d.ts\ndist/views/tui/comparison.d.ts.map\ndist/views/tui/comparison.js\ndist/views/tui/comparison.js.map\ndist/views/tui/composer-view.d.ts\ndist/views/tui/composer-view.d.ts.map\ndist/views/tui/composer-view.js\ndist/views/tui/composer-view.js.map\ndist/views/tui/configuration-credential.d.ts\ndist/views/tui/configuration-credential.d.ts.map\ndist/views/tui/configuration-credential.js\ndist/views/tui/configuration-credential.js.map\ndist/views/tui/configuration-presenters.d.ts\ndist/views/tui/configuration-presenters.d.ts.map\ndist/views/tui/configuration-presenters.js\ndist/views/tui/configuration-presenters.js.map\ndist/views/tui/configuration-responsive-text.d.ts\ndist/views/tui/configuration-responsive-text.d.ts.map\ndist/views/tui/configuration-responsive-text.js\ndist/views/tui/configuration-responsive-text.js.map\ndist/views/tui/configuration-review.d.ts\ndist/views/tui/configuration-review.d.ts.map\ndist/views/tui/configuration-review.js\ndist/views/tui/configuration-review.js.map\ndist/views/tui/configuration-wizard-presentation.d.ts\ndist/views/tui/configuration-wizard-presentation.d.ts.map\ndist/views/tui/configuration-wizard-presentation.js\ndist/views/tui/configuration-wizard-presentation.js.map\ndist/views/tui/configuration-wizard.d.ts\ndist/views/tui/configuration-wizard.d.ts.map\ndist/views/tui/configuration-wizard.js\ndist/views/tui/configuration-wizard.js.map\ndist/views/tui/connection-metadata-editor-actions.d.ts\ndist/views/tui/connection-metadata-editor-actions.d.ts.map\ndist/views/tui/connection-metadata-editor-actions.js\ndist/views/tui/connection-metadata-editor-actions.js.map\ndist/views/tui/connection-metadata-editor-inputs.d.ts\ndist/views/tui/connection-metadata-editor-inputs.d.ts.map\ndist/views/tui/connection-metadata-editor-inputs.js\ndist/views/tui/connection-metadata-editor-inputs.js.map\ndist/views/tui/connection-metadata-editor-model.d.ts\ndist/views/tui/connection-metadata-editor-model.d.ts.map\ndist/views/tui/connection-metadata-editor-model.js\ndist/views/tui/connection-metadata-editor-model.js.map\ndist/views/tui/connection-metadata-editor-presentation.d.ts\ndist/views/tui/connection-metadata-editor-presentation.d.ts.map\ndist/views/tui/connection-metadata-editor-presentation.js\ndist/views/tui/connection-metadata-editor-presentation.js.map\ndist/views/tui/connection-metadata-editor-rendering.d.ts\ndist/views/tui/connection-metadata-editor-rendering.d.ts.map\ndist/views/tui/connection-metadata-editor-rendering.js\ndist/views/tui/connection-metadata-editor-rendering.js.map\ndist/views/tui/connection-metadata-editor.d.ts\ndist/views/tui/connection-metadata-editor.d.ts.map\ndist/views/tui/connection-metadata-editor.js\ndist/views/tui/connection-metadata-editor.js.map\ndist/views/tui/connection-overlay-workflow.d.ts\ndist/views/tui/connection-overlay-workflow.d.ts.map\ndist/views/tui/connection-overlay-workflow.js\ndist/views/tui/connection-overlay-workflow.js.map\ndist/views/tui/connection-setup-actions.d.ts\ndist/views/tui/connection-setup-actions.d.ts.map\ndist/views/tui/connection-setup-actions.js\ndist/views/tui/connection-setup-actions.js.map\ndist/views/tui/connection-setup-rendering.d.ts\ndist/views/tui/connection-setup-rendering.d.ts.map\ndist/views/tui/connection-setup-rendering.js\ndist/views/tui/connection-setup-rendering.js.map\ndist/views/tui/connection-setup.d.ts\ndist/views/tui/connection-setup.d.ts.map\ndist/views/tui/connection-setup.js\ndist/views/tui/connection-setup.js.map\ndist/views/tui/conversation-dialogs.d.ts\ndist/views/tui/conversation-dialogs.d.ts.map\ndist/views/tui/conversation-dialogs.js\ndist/views/tui/conversation-dialogs.js.map\ndist/views/tui/conversation-overlay-actions.d.ts\ndist/views/tui/conversation-overlay-actions.d.ts.map\ndist/views/tui/conversation-overlay-actions.js\ndist/views/tui/conversation-overlay-actions.js.map\ndist/views/tui/conversation-overlay-helpers.d.ts\ndist/views/tui/conversation-overlay-helpers.d.ts.map\ndist/views/tui/conversation-overlay-helpers.js\ndist/views/tui/conversation-overlay-helpers.js.map\ndist/views/tui/conversation-overlays.d.ts\ndist/views/tui/conversation-overlays.d.ts.map\ndist/views/tui/conversation-overlays.js\ndist/views/tui/conversation-overlays.js.map\ndist/views/tui/details.d.ts\ndist/views/tui/details.d.ts.map\ndist/views/tui/details.js\ndist/views/tui/details.js.map\ndist/views/tui/dynamic-autocomplete.d.ts\ndist/views/tui/dynamic-autocomplete.d.ts.map\ndist/views/tui/dynamic-autocomplete.js\ndist/views/tui/dynamic-autocomplete.js.map\ndist/views/tui/entity-browser-layout.d.ts\ndist/views/tui/entity-browser-layout.d.ts.map\ndist/views/tui/entity-browser-layout.js\ndist/views/tui/entity-browser-layout.js.map\ndist/views/tui/entity-browser.d.ts\ndist/views/tui/entity-browser.d.ts.map\ndist/views/tui/entity-browser.js\ndist/views/tui/entity-browser.js.map\ndist/views/tui/execution-target.d.ts\ndist/views/tui/execution-target.d.ts.map\ndist/views/tui/execution-target.js\ndist/views/tui/execution-target.js.map\ndist/views/tui/focused-surface.d.ts\ndist/views/tui/focused-surface.d.ts.map\ndist/views/tui/focused-surface.js\ndist/views/tui/focused-surface.js.map\ndist/views/tui/fork-preview.d.ts\ndist/views/tui/fork-preview.d.ts.map\ndist/views/tui/fork-preview.js\ndist/views/tui/fork-preview.js.map\ndist/views/tui/graph.d.ts\ndist/views/tui/graph.d.ts.map\ndist/views/tui/graph.js\ndist/views/tui/graph.js.map\ndist/views/tui/help.d.ts\ndist/views/tui/help.d.ts.map\ndist/views/tui/help.js\ndist/views/tui/help.js.map\ndist/views/tui/interaction-automation-response.d.ts\ndist/views/tui/interaction-automation-response.d.ts.map\ndist/views/tui/interaction-automation-response.js\ndist/views/tui/interaction-automation-response.js.map\ndist/views/tui/interaction-decisions.d.ts\ndist/views/tui/interaction-decisions.d.ts.map\ndist/views/tui/interaction-decisions.js\ndist/views/tui/interaction-decisions.js.map\ndist/views/tui/interaction-input-response.d.ts\ndist/views/tui/interaction-input-response.d.ts.map\ndist/views/tui/interaction-input-response.js\ndist/views/tui/interaction-input-response.js.map\ndist/views/tui/interaction-presentation.d.ts\ndist/views/tui/interaction-presentation.d.ts.map\ndist/views/tui/interaction-presentation.js\ndist/views/tui/interaction-presentation.js.map\ndist/views/tui/interaction.d.ts\ndist/views/tui/interaction.d.ts.map\ndist/views/tui/interaction.js\ndist/views/tui/interaction.js.map\ndist/views/tui/keyboard.d.ts\ndist/views/tui/keyboard.d.ts.map\ndist/views/tui/keyboard.js\ndist/views/tui/keyboard.js.map\ndist/views/tui/layout.d.ts\ndist/views/tui/layout.d.ts.map\ndist/views/tui/layout.js\ndist/views/tui/layout.js.map\ndist/views/tui/measurement-display.d.ts\ndist/views/tui/measurement-display.d.ts.map\ndist/views/tui/measurement-display.js\ndist/views/tui/measurement-display.js.map\ndist/views/tui/modal-coordinator.d.ts\ndist/views/tui/modal-coordinator.d.ts.map\ndist/views/tui/modal-coordinator.js\ndist/views/tui/modal-coordinator.js.map\ndist/views/tui/profile-compatibility.d.ts\ndist/views/tui/profile-compatibility.d.ts.map\ndist/views/tui/profile-compatibility.js\ndist/views/tui/profile-compatibility.js.map\ndist/views/tui/profile-editor-actions.d.ts\ndist/views/tui/profile-editor-actions.d.ts.map\ndist/views/tui/profile-editor-actions.js\ndist/views/tui/profile-editor-actions.js.map\ndist/views/tui/profile-editor-rendering.d.ts\ndist/views/tui/profile-editor-rendering.d.ts.map\ndist/views/tui/profile-editor-rendering.js\ndist/views/tui/profile-editor-rendering.js.map\ndist/views/tui/profile-editor.d.ts\ndist/views/tui/profile-editor.d.ts.map\ndist/views/tui/profile-editor.js\ndist/views/tui/profile-editor.js.map\ndist/views/tui/safe-markdown.d.ts\ndist/views/tui/safe-markdown.d.ts.map\ndist/views/tui/safe-markdown.js\ndist/views/tui/safe-markdown.js.map\ndist/views/tui/secret-input.d.ts\ndist/views/tui/secret-input.d.ts.map\ndist/views/tui/secret-input.js\ndist/views/tui/secret-input.js.map\ndist/views/tui/selector.d.ts\ndist/views/tui/selector.d.ts.map\ndist/views/tui/selector.js\ndist/views/tui/selector.js.map\ndist/views/tui/supervisor-actions.d.ts\ndist/views/tui/supervisor-actions.d.ts.map\ndist/views/tui/supervisor-actions.js\ndist/views/tui/supervisor-actions.js.map\ndist/views/tui/terminal-app.d.ts\ndist/views/tui/terminal-app.d.ts.map\ndist/views/tui/terminal-app.js\ndist/views/tui/terminal-app.js.map\ndist/views/tui/terminal-chrome.d.ts\ndist/views/tui/terminal-chrome.d.ts.map\ndist/views/tui/terminal-chrome.js\ndist/views/tui/terminal-chrome.js.map\ndist/views/tui/terminal-command-controller.d.ts\ndist/views/tui/terminal-command-controller.d.ts.map\ndist/views/tui/terminal-command-controller.js\ndist/views/tui/terminal-command-controller.js.map\ndist/views/tui/terminal-compatibility.d.ts\ndist/views/tui/terminal-compatibility.d.ts.map\ndist/views/tui/terminal-compatibility.js\ndist/views/tui/terminal-compatibility.js.map\ndist/views/tui/terminal-drafts.d.ts\ndist/views/tui/terminal-drafts.d.ts.map\ndist/views/tui/terminal-drafts.js\ndist/views/tui/terminal-drafts.js.map\ndist/views/tui/terminal-identity.d.ts\ndist/views/tui/terminal-identity.d.ts.map\ndist/views/tui/terminal-identity.js\ndist/views/tui/terminal-identity.js.map\ndist/views/tui/terminal-input-controller.d.ts\ndist/views/tui/terminal-input-controller.d.ts.map\ndist/views/tui/terminal-input-controller.js\ndist/views/tui/terminal-input-controller.js.map\ndist/views/tui/terminal-interaction-controller.d.ts\ndist/views/tui/terminal-interaction-controller.d.ts.map\ndist/views/tui/terminal-interaction-controller.js\ndist/views/tui/terminal-interaction-controller.js.map\ndist/views/tui/terminal-overlays.d.ts\ndist/views/tui/terminal-overlays.d.ts.map\ndist/views/tui/terminal-overlays.js\ndist/views/tui/terminal-overlays.js.map\ndist/views/tui/terminal-shell.d.ts\ndist/views/tui/terminal-shell.d.ts.map\ndist/views/tui/terminal-shell.js\ndist/views/tui/terminal-shell.js.map\ndist/views/tui/terminal-surface-overlays.d.ts\ndist/views/tui/terminal-surface-overlays.d.ts.map\ndist/views/tui/terminal-surface-overlays.js\ndist/views/tui/terminal-surface-overlays.js.map\ndist/views/tui/terminal-usage.d.ts\ndist/views/tui/terminal-usage.d.ts.map\ndist/views/tui/terminal-usage.js\ndist/views/tui/terminal-usage.js.map\ndist/views/tui/theme.d.ts\ndist/views/tui/theme.d.ts.map\ndist/views/tui/theme.js\ndist/views/tui/theme.js.map\ndist/views/tui/transcript.d.ts\ndist/views/tui/transcript.d.ts.map\ndist/views/tui/transcript.js\ndist/views/tui/transcript.js.map\nLICENSE\npackage.json\nREADME.md\nTHIRD_PARTY_LICENSES.json\nTHIRD_PARTY_NOTICES.md\n\u001b[94mTarball Details\u001b[39m\n/tmp/braid-live-pack-FH1bzh/tangle-network-braid-0.3.0.tgz\n",
+ "stderr": "",
+ "durationMs": 1064,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "install": {
+ "command": "npm",
+ "args": [
+ "install",
+ "--no-audit",
+ "--no-fund",
+ "/tmp/braid-live-pack-FH1bzh/tangle-network-braid-0.3.0.tgz"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "\nadded 68 packages in 2s\n",
+ "stderr": "npm warn allow-scripts 2 packages have install scripts not yet covered by allowScripts:\nnpm warn allow-scripts @dataiku/uv@0.12.0 (postinstall: node install.cjs)\nnpm warn allow-scripts koffi@3.1.6 (install: node ./cnoke.cjs -P . -D src/koffi --prebuild --release)\nnpm warn allow-scripts\nnpm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts ` to allow.\n",
+ "durationMs": 2142,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "version": {
+ "command": "/home/drew/.nvm/versions/node/v24.18.0/bin/node",
+ "args": [
+ "/tmp/braid-live-install-LwdJOl/node_modules/@tangle-network/braid/dist/bin/braid.js",
+ "--version"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "0.3.0\n",
+ "stderr": "",
+ "durationMs": 58,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "artifact": {
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "sha256": "a531b3264d6f84b111fe4a6ef1de616ac13013359686e2f1e0e84d07859ae056",
+ "binary": "node_modules/@tangle-network/braid/dist/bin/braid.js"
+ },
+ "provider": {
+ "package": "@tangle-network/agent-provider-cli-bridge",
+ "capabilitiesByBackend": {
+ "opencode": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": false,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ },
+ "pi": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ },
+ "codex": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": false
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "contextTransfer": {
+ "freshSession": true,
+ "requestIdempotency": true,
+ "lookup": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ }
+ },
+ "analysis": {
+ "claim": "packed-analysis-readiness-only",
+ "python": {
+ "status": "ready",
+ "readiness": "ready"
+ },
+ "ask": {
+ "readiness": "ready",
+ "status": "engine-configured",
+ "diagnostics": []
+ }
+ },
+ "credentialState": {
+ "configured": true,
+ "facility": "encrypted-headless",
+ "targetCount": 3,
+ "storedCount": 3,
+ "removedCount": 3
+ },
+ "bridgeCleanup": {
+ "stopped": {
+ "termination": {
+ "strategy": "process-group",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": true,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 3342141,
+ 3342155,
+ 3342156,
+ 3342172
+ ],
+ "roots": [
+ 3342141
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "term",
+ "termSignal": {
+ "method": "process-group",
+ "sent": true
+ },
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "exit": {
+ "code": null,
+ "signal": "SIGTERM"
+ },
+ "stdout": "[cli-bridge] listening on http://127.0.0.1:3344 (host=127.0.0.1)\n[cli-bridge] backends: opencode, pi, codex\n[cli-bridge] bearer: required\n[cli-bridge] host admission: maxActive=8 maxQueue=16/class reservedActive=2 (bulk ceiling 6) queueTimeoutMs=30000 bulkQueueTimeoutMs=240000\n[cli-bridge] reserved-lane clients: pr-reviewer\n[cli-bridge] traces: /tmp/braid-bridge-final-exact.MwB7Kx/traces/spans.jsonl (max 16777216 bytes × 2 files)\n[cli-bridge] jail default: fs-jail root=/.agent-home\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"harness\":\"opencode\",\"provider\":\"zai-coding-plan\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:33518b13903a532eb86c9ead586aaca152a17eb02e4e8e276d6a7afebe608005\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"harness\":\"opencode\",\"provider\":\"zai-coding-plan\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:33518b13903a532eb86c9ead586aaca152a17eb02e4e8e276d6a7afebe608005\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:cacd611307b6fc338eb0b04bf568333ff6b6079673a73a4739edc9350eae65bf\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"harness\":\"opencode\",\"provider\":\"zai-coding-plan\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:33518b13903a532eb86c9ead586aaca152a17eb02e4e8e276d6a7afebe608005\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:b5f1c4d1083ed8b15a991640b4150c82084f59d0725ffe00110e35e8208db1dd\",\"harness\":\"opencode\",\"provider\":\"zai-coding-plan\",\"model\":\"opencode/zai-coding-plan/glm-5.2\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:33518b13903a532eb86c9ead586aaca152a17eb02e4e8e276d6a7afebe608005\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:6525605d0716e56511da5fa74adafab3c7005594a913fe59ac1212a4ea74b3d8\",\"harness\":\"codex\",\"provider\":null,\"model\":\"codex/default\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"none\"},\"workspacePlanDigest\":\"sha256:4d77c3c772a6e4e51147810e5ddf060b6f676dfd8025697db53fd10ce00a7657\",\"files\":[],\"unsupported\":[]}\n[cli-bridge] SIGTERM — shutting down\n",
+ "stderr": "(node:3342141) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n\u001b[2m$ tsx src/server.ts\u001b[22m\n(node:3342156) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n(node:3342172) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n[cli-bridge] admission maxActive=8 exceeds scoped-executor concurrency=4: the executor is the real ceiling. Lower BRIDGE_HOST_CHAT_MAX_ACTIVE or raise CLI_BRIDGE_SCOPE_MAX_CONCURRENCY so one gate owns the limit.\n"
+ }
+ },
+ "cleanup": {
+ "ok": true,
+ "results": [
+ {
+ "path": "/tmp/braid-live-pack-FH1bzh",
+ "removed": true
+ },
+ {
+ "path": "/tmp/braid-live-install-LwdJOl",
+ "removed": true
+ },
+ {
+ "path": "/tmp/braid-live-targets-ABQ0I5",
+ "removed": true
+ }
+ ]
+ },
+ "status": "passed",
+ "exitCode": 0,
+ "finishedAt": "2026-08-29T18:33:36.280Z"
+}
diff --git a/artifacts/verification/live/bridge/native-continuation.json b/artifacts/verification/live/bridge/native-continuation.json
new file mode 100644
index 0000000..c954eed
--- /dev/null
+++ b/artifacts/verification/live/bridge/native-continuation.json
@@ -0,0 +1,388 @@
+{
+ "schema": "braid.live-bridge.native-continuation.v1",
+ "command": "pnpm test:live:bridge:continuation",
+ "scope": {
+ "claims": [
+ "admission before terminal output",
+ "active status and event access",
+ "exact cancellation",
+ "cancelled terminal replay",
+ "byte-identical duplicate admission",
+ "successful native continuation"
+ ],
+ "provider": "real Pi through Tangle Router"
+ },
+ "startedAt": "2026-08-29T04:25:26.025Z",
+ "runtime": {
+ "node": "v24.18.0",
+ "platform": "linux",
+ "arch": "x64"
+ },
+ "environment": {
+ "endpoint": "http://127.0.0.1:3478",
+ "bearerConfigured": true,
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "provider": "tangle-router",
+ "timeoutMs": 120000
+ },
+ "capabilities": {
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ }
+ },
+ "bridgeCapabilities": {
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": true,
+ "messages": true
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ }
+ },
+ "provider": {
+ "name": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "real": true
+ },
+ "cleanup": [
+ {
+ "scope": "session",
+ "sessionId": "braid-live-native-1787977526323-cancel-session",
+ "continuationObserved": true,
+ "cancellation": {
+ "attempted": false
+ },
+ "status": 200,
+ "closed": true,
+ "session": {
+ "status": "closed"
+ }
+ },
+ {
+ "scope": "session",
+ "sessionId": "braid-live-native-1787977526323-success-session",
+ "continuationObserved": true,
+ "cancellation": {
+ "attempted": false
+ },
+ "status": 200,
+ "closed": true,
+ "session": {
+ "status": "closed"
+ }
+ },
+ {
+ "scope": "environment",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "destroyed": true
+ }
+ ],
+ "cancellation": {
+ "sessionId": "braid-live-native-1787977526323-cancel-session",
+ "first": {
+ "success": true,
+ "status": "done",
+ "elapsedMs": 4218,
+ "run": {
+ "runId": "braid-live-native-1787977526323-cancel-execution-1",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "sessionId": "braid-live-native-1787977526323-cancel-session",
+ "executionId": "braid-live-native-1787977526323-cancel-execution-1",
+ "requestDigest": "sha256:ad922cab8b37cf530e3a83877b14ae3eaa66452b970c0a23f459f2499a542912"
+ },
+ "boundary": {
+ "runId": "braid-live-native-1787977526323-cancel-execution-1",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "sessionId": "braid-live-native-1787977526323-cancel-session",
+ "executionId": "braid-live-native-1787977526323-cancel-execution-1",
+ "requestDigest": "sha256:ad922cab8b37cf530e3a83877b14ae3eaa66452b970c0a23f459f2499a542912",
+ "kind": "revision",
+ "observedAt": "2026-08-29T04:25:30.533Z"
+ },
+ "session": {
+ "id": "braid-live-native-1787977526323-cancel-session",
+ "backend": "pi",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "status": "idle",
+ "runId": "braid-live-native-1787977526323-cancel-execution-1"
+ }
+ },
+ "admission": {
+ "controlRef": {
+ "runId": "native-continuation:sha256:1d7e9aaeba9c1c4a64f86778eccbe8e49e98b8c8c2cd23ae6c2fd4b6a9e763d0",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "sessionId": "braid-live-native-1787977526323-cancel-session",
+ "executionId": "native-continuation:sha256:1d7e9aaeba9c1c4a64f86778eccbe8e49e98b8c8c2cd23ae6c2fd4b6a9e763d0",
+ "requestDigest": "sha256:287f9fcf416ddcfb178be42747cf77f61255514ac713159f15b490dc6eaf2749"
+ },
+ "elapsedMs": 39,
+ "request": {
+ "operationId": "braid-live-native-1787977526323-cancel-continue",
+ "requestDigest": "sha256:128e00589b94fb4229e0bb62e88b84392acc32c38cdddc93b43d989d27d8b856",
+ "turnDigest": "sha256:3898278147dbc94641bc32f0c7e87e3c9e2011debc7ec70840fa65302cab7875"
+ }
+ },
+ "active": {
+ "status": {
+ "status": "running",
+ "terminal": false,
+ "state": "detached",
+ "canonicalLastSeq": 5
+ },
+ "events": {
+ "status": 200,
+ "contentType": "text/event-stream",
+ "count": 12,
+ "types": [
+ "status",
+ "raw",
+ "message.part.updated"
+ ],
+ "session": {
+ "id": "braid-live-native-1787977526323-cancel-session",
+ "backend": "pi",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "status": "idle",
+ "runId": "braid-live-native-1787977526323-cancel-execution-1"
+ },
+ "backends": [
+ "pi"
+ ],
+ "providers": [
+ "tangle-router"
+ ],
+ "models": [
+ "deepseek-v4-flash"
+ ]
+ }
+ },
+ "cancellation": {
+ "request": {
+ "operationId": "braid-live-native-1787977526323-cancel-cancel",
+ "requestDigest": "sha256:1594647aa48426bcb09ed7f04ca7ee22da4942a01710d198c68c97cb54a3eb8a"
+ },
+ "acknowledgement": {
+ "status": "accepted",
+ "effect": "cancel_requested"
+ },
+ "elapsedMs": 14
+ },
+ "terminal": {
+ "status": {
+ "status": "cancelled",
+ "terminal": true,
+ "state": "terminal",
+ "canonicalLastSeq": 16
+ },
+ "acknowledgement": "accepted",
+ "result": {
+ "success": false,
+ "status": "cancelled",
+ "error": "pi native turn aborted"
+ },
+ "elapsedMs": 55
+ },
+ "terminalReplay": {
+ "status": 200,
+ "acknowledgement": "replayed",
+ "result": {
+ "success": false,
+ "status": "cancelled"
+ }
+ },
+ "duplicateAdmission": {
+ "statuses": [
+ 202,
+ 202
+ ],
+ "phases": [
+ "admitted",
+ "admitted"
+ ],
+ "controlRefs": [
+ {
+ "runId": "native-continuation:sha256:1d7e9aaeba9c1c4a64f86778eccbe8e49e98b8c8c2cd23ae6c2fd4b6a9e763d0",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "sessionId": "braid-live-native-1787977526323-cancel-session",
+ "executionId": "native-continuation:sha256:1d7e9aaeba9c1c4a64f86778eccbe8e49e98b8c8c2cd23ae6c2fd4b6a9e763d0",
+ "requestDigest": "sha256:287f9fcf416ddcfb178be42747cf77f61255514ac713159f15b490dc6eaf2749"
+ },
+ {
+ "runId": "native-continuation:sha256:1d7e9aaeba9c1c4a64f86778eccbe8e49e98b8c8c2cd23ae6c2fd4b6a9e763d0",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "sessionId": "braid-live-native-1787977526323-cancel-session",
+ "executionId": "native-continuation:sha256:1d7e9aaeba9c1c4a64f86778eccbe8e49e98b8c8c2cd23ae6c2fd4b6a9e763d0",
+ "requestDigest": "sha256:287f9fcf416ddcfb178be42747cf77f61255514ac713159f15b490dc6eaf2749"
+ }
+ ],
+ "byteIdentical": true,
+ "wire": {
+ "bytes": 1528,
+ "digest": "sha256:2206cde3049f02181404deca6ecd716737a352fd6199695ed6bc567a9a1c7ffb"
+ }
+ },
+ "assertions": {
+ "admissionBeforeTerminal": true,
+ "activeStatus": true,
+ "activeEvents": true,
+ "exactCancel": true,
+ "cancelledTerminalReplay": true,
+ "duplicateAdmissionByteIdentical": true,
+ "timing": {
+ "admissionElapsedMs": 39,
+ "cancelElapsedMs": 14,
+ "terminalElapsedMs": 55,
+ "terminalObservedAfterCancel": true
+ }
+ }
+ },
+ "success": {
+ "sessionId": "braid-live-native-1787977526323-success-session",
+ "first": {
+ "success": true,
+ "status": "done",
+ "elapsedMs": 3023,
+ "run": {
+ "runId": "braid-live-native-1787977526323-success-execution-1",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "sessionId": "braid-live-native-1787977526323-success-session",
+ "executionId": "braid-live-native-1787977526323-success-execution-1",
+ "requestDigest": "sha256:380bd3caa7da82acc325ba7a41569b3145f69be883cfb7e86663138d12e78fbd"
+ },
+ "boundary": {
+ "runId": "braid-live-native-1787977526323-success-execution-1",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "sessionId": "braid-live-native-1787977526323-success-session",
+ "executionId": "braid-live-native-1787977526323-success-execution-1",
+ "requestDigest": "sha256:380bd3caa7da82acc325ba7a41569b3145f69be883cfb7e86663138d12e78fbd",
+ "kind": "revision",
+ "observedAt": "2026-08-29T04:25:35.073Z"
+ },
+ "session": {
+ "id": "braid-live-native-1787977526323-success-session",
+ "backend": "pi",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "status": "idle",
+ "runId": "braid-live-native-1787977526323-success-execution-1"
+ }
+ },
+ "admission": {
+ "controlRef": {
+ "runId": "native-continuation:sha256:d88bfaa3f984051fee54ae5844d147bc579bf92af86ab9b7035678d9bf8e0ec2",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6MGMwYzRiNTY1OTU4NGQwNjM0NmZlNmQ1NjJlM2Q5M2ZmODE4ZTQ1YTA5ODFiNzEzMGE5NTQ0NDE4ZDY1N2VmZCIsIjFmNGExZTZmLWE3OTYtNDAwNC1iNmEzLTZlNWFmM2ViOTZiOCJd",
+ "sessionId": "braid-live-native-1787977526323-success-session",
+ "executionId": "native-continuation:sha256:d88bfaa3f984051fee54ae5844d147bc579bf92af86ab9b7035678d9bf8e0ec2",
+ "requestDigest": "sha256:4f33ac1f127965e28aba747378d1bc803fed5bdb234a6f66f0530bea46513bd9"
+ },
+ "elapsedMs": 33,
+ "request": {
+ "operationId": "braid-live-native-1787977526323-success-continue",
+ "requestDigest": "sha256:1980e5fa4847a296ee1fb6b11954078cdcb3b58887e0a2147765c7300ef378b3",
+ "turnDigest": "sha256:80df5bc4c46ba4475450fdd8d13508ead8459e3d71a31942998cbeff9f35d39c"
+ }
+ },
+ "terminal": {
+ "status": {
+ "status": "done",
+ "terminal": true,
+ "state": "terminal",
+ "canonicalLastSeq": 19
+ },
+ "acknowledgement": "accepted",
+ "result": {
+ "success": true,
+ "status": "done",
+ "text": "Braid live continuation success."
+ }
+ },
+ "assertions": {
+ "admissionBeforeTerminal": true,
+ "successfulContinuation": true
+ }
+ },
+ "assertions": {
+ "admissionBeforeTerminal": true,
+ "activeStatus": true,
+ "activeEvents": true,
+ "exactCancel": true,
+ "cancelledTerminalReplay": true,
+ "duplicateAdmissionByteIdentical": true,
+ "successfulContinuation": true
+ },
+ "status": "passed",
+ "finishedAt": "2026-08-29T04:25:37.348Z"
+}
diff --git a/artifacts/verification/live/bridge/pi-canonical-current.json b/artifacts/verification/live/bridge/pi-canonical-current.json
new file mode 100644
index 0000000..8f3ae52
--- /dev/null
+++ b/artifacts/verification/live/bridge/pi-canonical-current.json
@@ -0,0 +1,3524 @@
+{
+ "schemaVersion": 1,
+ "command": "pnpm test:live:bridge",
+ "scope": {
+ "name": "one-shot-production-target-proof",
+ "claims": [
+ "packed startup",
+ "exact marker response for each required target",
+ "advertised cancel and interaction semantics",
+ "bounded process cleanup"
+ ],
+ "excludes": [
+ "LIVE-01..05 full interactive runner conformance"
+ ]
+ },
+ "optIn": true,
+ "startedAt": "2026-08-29T05:06:55.300Z",
+ "runtime": {
+ "node": "v24.18.0",
+ "platform": "linux",
+ "arch": "x64",
+ "cwd": "/home/drew/code/.worktrees/braid-10-complete"
+ },
+ "environment": {
+ "endpoint": "http://127.0.0.1:3480",
+ "bearerConfigured": false,
+ "launchRequested": true
+ },
+ "targetPolicy": {
+ "source": "default:health-discovered",
+ "required": [
+ {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "label": "Pi with Tangle Router DeepSeek V4 Flash",
+ "modelId": "pi/tangle-router/deepseek-v4-flash",
+ "backend": "pi"
+ }
+ ]
+ },
+ "targets": [
+ {
+ "label": "Pi with Tangle Router DeepSeek V4 Flash",
+ "target": "pi/tangle-router/deepseek-v4-flash",
+ "profile": {
+ "path": ".braid/profiles/profile-pi-tangle-router-deepseek-v4-flash.json",
+ "harness": "pi",
+ "model": "deepseek-v4-flash",
+ "provider": "tangle-router"
+ },
+ "connection": {
+ "id": "connection-live-cli-bridge",
+ "kind": "cli-bridge",
+ "endpoint": "http://127.0.0.1:3480",
+ "credentialConfigured": false
+ },
+ "providerCapabilities": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ },
+ "requests": [
+ {
+ "version": 1,
+ "requestId": "init-pi-tangle-router-deepseek-v4-flash",
+ "command": "initialize",
+ "params": {
+ "workspace": "/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash",
+ "subscribe": true
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "command": "send",
+ "params": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "command": "send",
+ "params": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "cancel-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "params": {
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "reason": "live packed smoke cancellation"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "final-state-pi-tangle-router-deepseek-v4-flash",
+ "command": "get_state",
+ "params": {
+ "projection": "full"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "shutdown-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-shutdown-pi-tangle-router-deepseek-v4-flash",
+ "command": "shutdown",
+ "params": {
+ "mode": "wait"
+ }
+ }
+ ],
+ "operation": "cli-bridge.target-smoke",
+ "credentialLifecycle": {
+ "configured": false,
+ "stored": false,
+ "removed": true
+ },
+ "initialize": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "init-pi-tangle-router-deepseek-v4-flash",
+ "revision": 4,
+ "command": "initialize"
+ },
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "initialCapabilities": {
+ "view": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "analysisAsk": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "run": {}
+ },
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "revision": 4,
+ "replayed": false,
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "admission": {
+ "version": 1,
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "turnId": "turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T05:07:16.176Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": false,
+ "instructions": true,
+ "tools": false,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "unavailable",
+ "workspace": "/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "2e7be28d7144b26b5b852604e612feb374d4c000f71f76afc279b902c7fd45fd",
+ "capabilitiesDigest": "ddc6284b3633f963459e1d4573baf9f16d2db828706ec2603a7ae9d4c0771559",
+ "materializationDigest": "9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e",
+ "digest": "cbfa72f1147c61f4d5af7108ad7dcd4566929d25e8608b77479e2f1e93b5bf30"
+ },
+ "command": "send"
+ },
+ "activeCapabilities": {
+ "view": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": false,
+ "source": "application",
+ "reason": "A run is already active"
+ },
+ "run.cancel": {
+ "available": true,
+ "source": "runtime"
+ },
+ "run.queue": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report steering support"
+ },
+ "run.detach": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "Detach the active run before reconnecting it"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "Detach the active run before reconciling it"
+ }
+ },
+ "analysisAsk": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "run": {}
+ },
+ "normal": {
+ "status": "completed",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "run": {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "turnId": "turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T05:07:16.187Z",
+ "updatedAt": "2026-08-29T05:07:21.497Z",
+ "terminalAt": "2026-08-29T05:07:21.497Z",
+ "durationMs": 5310,
+ "inputTokens": 985,
+ "outputTokens": 41,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 16,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "environmentId": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "controlRef": {
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "executionId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "requestDigest": "sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd"
+ },
+ "materializationDigest": "9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e",
+ "cursor": "55",
+ "cursorCommittedSequence": 66,
+ "contentBytes": 333
+ },
+ "assistant": {
+ "id": "message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "parts": [
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning",
+ "kind": "reasoning",
+ "text": "The user wants me to output only a specific token with no punctuation or explanation.",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:49"
+ },
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "marker": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK"
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "revision": 68,
+ "replayed": false,
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "admission": {
+ "version": 1,
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "turnId": "turn-61af125a-5404-405b-bf60-7658bf3a0276",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T05:07:22.139Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": "[depth-limited]",
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": "[depth-limited]",
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "interactions": {
+ "kinds": "[depth-limited]",
+ "answerFieldTypes": "[depth-limited]",
+ "responseScopes": "[depth-limited]",
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "unavailable",
+ "workspace": "/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "nativeContextBoundaryProof": {
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "executionId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "requestDigest": "sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd",
+ "boundary": {
+ "kind": "revision",
+ "revision": "pi:c2a57878-8c9f-4d35-8a3e-aa2e760f1eef:2"
+ },
+ "observedAt": "2026-08-29T05:07:21.417Z"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "4e7ad98a6f6b723f6891148d2176907c0ae907822131aef0a1ee996705524962",
+ "capabilitiesDigest": "ddc6284b3633f963459e1d4573baf9f16d2db828706ec2603a7ae9d4c0771559",
+ "materializationDigest": "92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d",
+ "digest": "221d7140445090562118a215937d99b0704057e4db47a25dd937f9a3bccafc10"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "activeRun": {
+ "id": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "turnId": "turn-61af125a-5404-405b-bf60-7658bf3a0276",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "streaming",
+ "startedAt": "2026-08-29T05:07:22.150Z",
+ "updatedAt": "2026-08-29T05:07:22.150Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "materializationDigest": "92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-pi-tangle-router-deepseek-v4-flash",
+ "revision": 85,
+ "operationId": "op-live-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "turnId": "turn-61af125a-5404-405b-bf60-7658bf3a0276",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T05:07:22.150Z",
+ "updatedAt": "2026-08-29T05:07:23.188Z",
+ "terminalAt": "2026-08-29T05:07:23.188Z",
+ "durationMs": 1038,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "environmentId": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "controlRef": {
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "executionId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "requestDigest": "sha256:8ccb11f8942e4eb8496e5f324790d1af124339a27d297b8e0c1097245122b2f1"
+ },
+ "materializationDigest": "92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d",
+ "cursor": "5",
+ "cursorCommittedSequence": 83,
+ "contentBytes": 14
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": true,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "provider": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ },
+ "semanticAssertions": {
+ "cancel": "verified",
+ "interaction": "reported-unavailable"
+ },
+ "finalState": {
+ "version": 1,
+ "type": "state",
+ "requestId": "final-state-pi-tangle-router-deepseek-v4-flash",
+ "revision": 87,
+ "projection": "full",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 87,
+ "sequence": 87,
+ "workspace": "/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-29T05:07:22.150Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "runConfiguration": {
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "connectionId": "connection-live-cli-bridge",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-7f281582-c0b6-4974-aae2-f153906672d4",
+ "role": "user",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "parts": [
+ {
+ "id": "part-message-7f281582-c0b6-4974-aae2-f153906672d4",
+ "kind": "text",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK"
+ }
+ ]
+ },
+ {
+ "id": "message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "parts": [
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning",
+ "kind": "reasoning",
+ "text": "The user wants me to output only a specific token with no punctuation or explanation.",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:49"
+ },
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:final"
+ }
+ ]
+ },
+ {
+ "id": "message-cb8ddc20-6cab-4626-aab0-d1dcf6903995",
+ "role": "user",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "status": "complete",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "parts": [
+ {
+ "id": "part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995",
+ "kind": "text",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ ]
+ },
+ {
+ "id": "message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "parts": []
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "turnId": "turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T05:07:16.187Z",
+ "updatedAt": "2026-08-29T05:07:21.497Z",
+ "terminalAt": "2026-08-29T05:07:21.497Z",
+ "durationMs": 5310,
+ "inputTokens": 985,
+ "outputTokens": 41,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 16,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "environmentId": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "controlRef": {
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "executionId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "requestDigest": "sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd"
+ },
+ "materializationDigest": "9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e",
+ "cursor": "55",
+ "cursorCommittedSequence": 66,
+ "contentBytes": 333
+ },
+ {
+ "id": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "turnId": "turn-61af125a-5404-405b-bf60-7658bf3a0276",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T05:07:22.150Z",
+ "updatedAt": "2026-08-29T05:07:23.188Z",
+ "terminalAt": "2026-08-29T05:07:23.188Z",
+ "durationMs": 1038,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "environmentId": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "controlRef": {
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "executionId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "requestDigest": "sha256:8ccb11f8942e4eb8496e5f324790d1af124339a27d297b8e0c1097245122b2f1"
+ },
+ "materializationDigest": "92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d",
+ "cursor": "5",
+ "cursorCommittedSequence": 83,
+ "contentBytes": 14
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 2,
+ "input": 985,
+ "output": 41,
+ "reasoning": 16,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 2,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 2,
+ "unknownLatencySources": 2
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T05:07:15.562Z",
+ "updatedAt": "2026-08-29T05:07:23.086Z"
+ }
+ ],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": null,
+ "focusedRunId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "activeRuns": [],
+ "lastError": null
+ },
+ "view": {
+ "revision": 87,
+ "workspace": "/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "Live local CLI Bridge",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-29T05:07:22.150Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "cancelled",
+ "statusText": "cancelled",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-7f281582-c0b6-4974-aae2-f153906672d4",
+ "role": "user",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "parts": [
+ {
+ "id": "part-message-7f281582-c0b6-4974-aae2-f153906672d4",
+ "kind": "text",
+ "text": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK"
+ }
+ ]
+ },
+ {
+ "id": "message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "parts": [
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning",
+ "kind": "reasoning",
+ "text": "The user wants me to output only a specific token with no punctuation or explanation.",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:49"
+ },
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:final"
+ }
+ ]
+ },
+ {
+ "id": "message-cb8ddc20-6cab-4626-aab0-d1dcf6903995",
+ "role": "user",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "status": "complete",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "parts": [
+ {
+ "id": "part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995",
+ "kind": "text",
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line."
+ }
+ ]
+ },
+ {
+ "id": "message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "parts": []
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "turnId": "turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "effort": "none",
+ "cursor": "55",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "usage": {
+ "input": 985,
+ "output": 41,
+ "reasoning": 16,
+ "tokenStatus": "complete",
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "elapsedMs": 5310
+ },
+ "runner": "pi",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "completeness": "complete",
+ "contentBytes": 333
+ },
+ {
+ "id": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "turnId": "turn-61af125a-5404-405b-bf60-7658bf3a0276",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "cancelled",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "cursor": "5",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "requestedSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "elapsedMs": 1038
+ },
+ "runner": "pi",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "completeness": "complete",
+ "contentBytes": 14
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 2,
+ "input": 985,
+ "output": 41,
+ "reasoning": 16,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 2,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 2,
+ "unknownLatencySources": 2
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T05:07:15.562Z",
+ "updatedAt": "2026-08-29T05:07:23.086Z"
+ }
+ ],
+ "focusedRunId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "kind": "run",
+ "title": "run run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "status": "completed",
+ "elapsedMs": 5310,
+ "startedAt": "2026-08-29T05:07:16.187Z",
+ "occurredAt": "2026-08-29T05:07:16.187Z",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "completed",
+ "detail": "profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "completed",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "completed",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "completed",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:running",
+ "kind": "system",
+ "title": "running",
+ "status": "completed",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:4",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 5",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:4",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:5",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 6",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:5",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:6",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 7",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:6",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:51",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 52",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:51",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:52",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 53",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:52",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:53",
+ "kind": "system",
+ "title": "event model-processing",
+ "status": "completed",
+ "detail": "sequence 54",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:53",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:54",
+ "kind": "system",
+ "title": "event raw",
+ "status": "completed",
+ "detail": "sequence 55",
+ "occurredAt": "2026-08-29T05:07:21.497Z",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:54",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "run",
+ "entityId": "run-a4c4a821-54f0-4e58-971c-f55621c01041"
+ },
+ {
+ "id": "run:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "kind": "run",
+ "title": "run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "status": "cancelled",
+ "elapsedMs": 1038,
+ "startedAt": "2026-08-29T05:07:22.150Z",
+ "occurredAt": "2026-08-29T05:07:22.150Z",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ },
+ {
+ "id": "environment:environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "kind": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "detail": "local-process · local · explicit",
+ "startedAt": "2026-08-29T05:07:15.562Z",
+ "occurredAt": "2026-08-29T05:07:23.086Z",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "entityType": "environment",
+ "entityId": "environment-dbebe77e25e68ce00a506d93a97ff95d"
+ },
+ {
+ "id": "activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "cancelled",
+ "detail": "profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "occurredAt": "2026-08-29T05:07:23.188Z",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ },
+ {
+ "id": "activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:control:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "live packed smoke cancellation",
+ "occurredAt": "2026-08-29T05:07:23.188Z",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ },
+ {
+ "id": "activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T05:07:23.188Z",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ },
+ {
+ "id": "activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T05:07:23.188Z",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ },
+ {
+ "id": "activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T05:07:23.188Z",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ },
+ {
+ "id": "activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:lifecycle:local:reconnecting",
+ "kind": "system",
+ "title": "reconnecting",
+ "status": "cancelled",
+ "detail": "5",
+ "occurredAt": "2026-08-29T05:07:23.188Z",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ },
+ {
+ "id": "activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:control.ack:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "accepted",
+ "occurredAt": "2026-08-29T05:07:23.188Z",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ },
+ {
+ "id": "event:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:4",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 5",
+ "occurredAt": "2026-08-29T05:07:23.188Z",
+ "sourceEventId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:4",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ },
+ {
+ "id": "event:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:5",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 6",
+ "occurredAt": "2026-08-29T05:07:23.188Z",
+ "sourceEventId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:5",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "entityType": "run",
+ "entityId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-29T05:07:15.069Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-29T05:07:15.069Z"
+ },
+ {
+ "id": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "type": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "depth": 4,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "run:run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "run:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7"
+ ],
+ "runner": "cli-bridge",
+ "startedAt": "2026-08-29T05:07:15.562Z"
+ },
+ {
+ "id": "turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8",
+ "type": "turn",
+ "title": "Turn",
+ "status": "complete",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T05:07:16.187Z"
+ },
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "type": "run",
+ "title": "Run",
+ "status": "completed",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8"
+ ],
+ "runner": "pi",
+ "elapsedMs": 5310,
+ "startedAt": "2026-08-29T05:07:16.187Z"
+ },
+ {
+ "id": "turn-61af125a-5404-405b-bf60-7658bf3a0276",
+ "type": "turn",
+ "title": "Turn",
+ "status": "cancelled",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T05:07:22.150Z"
+ },
+ {
+ "id": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "type": "run",
+ "title": "Run",
+ "status": "cancelled",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-61af125a-5404-405b-bf60-7658bf3a0276"
+ ],
+ "runner": "pi",
+ "elapsedMs": 1038,
+ "startedAt": "2026-08-29T05:07:22.150Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "environment",
+ "entityId": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "title": "cli-bridge execution",
+ "status": "ready",
+ "lines": [
+ "provider: cli-bridge",
+ "execution: local-process · local",
+ "connection: connection-live-cli-bridge",
+ "lifecycle: ready · retained · cleanup explicit",
+ "continuity: session",
+ "runtime endpoint host: 127.0.0.1",
+ "placement: requested not specified · verified unavailable",
+ "machine: unavailable · physical IP is not exposed",
+ "created: 2026-08-29T05:07:15.562Z",
+ "observed: 2026-08-29T05:07:23.086Z",
+ "unavailable: cli-subscription-and-quota:not-exposed-by-provider",
+ "unavailable: effective-resources:not-exposed-by-provider",
+ "unavailable: machine-specs:not-exposed-by-provider",
+ "unavailable: runtime-cpu-memory-usage:not-exposed-by-provider"
+ ]
+ }
+ ],
+ "details": {
+ "title": "run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "fields": [
+ {
+ "label": "status",
+ "value": "aborted"
+ },
+ {
+ "label": "input tokens",
+ "value": "0"
+ },
+ {
+ "label": "output tokens",
+ "value": "0"
+ },
+ {
+ "label": "model",
+ "value": "deepseek-v4-flash"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.recipe": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "none",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ }
+ },
+ "shutdown": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "shutdown-pi-tangle-router-deepseek-v4-flash",
+ "revision": 87,
+ "operationId": "op-live-shutdown-pi-tangle-router-deepseek-v4-flash",
+ "command": "shutdown"
+ },
+ "operationEvidence": {
+ "normal": {
+ "status": "completed",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "run": {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "turnId": "turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8",
+ "operationId": "op-live-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "completed",
+ "startedAt": "2026-08-29T05:07:16.187Z",
+ "updatedAt": "2026-08-29T05:07:21.497Z",
+ "terminalAt": "2026-08-29T05:07:21.497Z",
+ "durationMs": 5310,
+ "inputTokens": 985,
+ "outputTokens": 41,
+ "tokensKnown": true,
+ "usdKnown": false,
+ "tokenStatus": "complete",
+ "reasoningTokens": 16,
+ "costStatus": "unknown",
+ "model": "pi/tangle-router/deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "environmentId": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "controlRef": {
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "executionId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "requestDigest": "sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd"
+ },
+ "materializationDigest": "9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e",
+ "cursor": "55",
+ "cursorCommittedSequence": 66,
+ "contentBytes": 333
+ },
+ "assistant": {
+ "id": "message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7",
+ "role": "assistant",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "status": "complete",
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "parts": [
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning",
+ "kind": "reasoning",
+ "text": "The user wants me to output only a specific token with no punctuation or explanation.",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:49"
+ },
+ {
+ "id": "run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text",
+ "kind": "text",
+ "text": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "sourceEventId": "run-a4c4a821-54f0-4e58-971c-f55621c01041:final"
+ }
+ ]
+ },
+ "finalText": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "marker": "LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK",
+ "markerObserved": true,
+ "prompt": "Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK"
+ },
+ "cancel": {
+ "prompt": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "send": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "revision": 68,
+ "replayed": false,
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "admission": {
+ "version": 1,
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "turnId": "turn-61af125a-5404-405b-bf60-7658bf3a0276",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T05:07:22.139Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": "[depth-limited]",
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": "[depth-limited]",
+ "streaming": "[depth-limited]",
+ "sessions": "[depth-limited]",
+ "retainedControl": "[depth-limited]",
+ "nativeContinuation": "[depth-limited]",
+ "interactions": "[depth-limited]",
+ "workspace": "[depth-limited]",
+ "branching": "[depth-limited]",
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": "[depth-limited]"
+ }
+ },
+ "provider": "cli-bridge",
+ "requestedSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "unavailable",
+ "workspace": "/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "nativeContextBoundaryProof": {
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "executionId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "requestDigest": "sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd",
+ "boundary": {
+ "kind": "revision",
+ "revision": "pi:c2a57878-8c9f-4d35-8a3e-aa2e760f1eef:2"
+ },
+ "observedAt": "2026-08-29T05:07:21.417Z"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "4e7ad98a6f6b723f6891148d2176907c0ae907822131aef0a1ee996705524962",
+ "capabilitiesDigest": "ddc6284b3633f963459e1d4573baf9f16d2db828706ec2603a7ae9d4c0771559",
+ "materializationDigest": "92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d",
+ "digest": "221d7140445090562118a215937d99b0704057e4db47a25dd937f9a3bccafc10"
+ },
+ "command": "send"
+ },
+ "advertisedByProvider": true,
+ "advertisedByNormalAdmission": true,
+ "advertisedByNormalRun": false,
+ "advertisedByRun": true,
+ "advertised": true,
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "activeRun": {
+ "id": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "turnId": "turn-61af125a-5404-405b-bf60-7658bf3a0276",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "streaming",
+ "startedAt": "2026-08-29T05:07:22.150Z",
+ "updatedAt": "2026-08-29T05:07:22.150Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "completeness": "incomplete",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "materializationDigest": "92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d"
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "cancel-pi-tangle-router-deepseek-v4-flash",
+ "revision": 85,
+ "operationId": "op-live-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "run": {
+ "id": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "turnId": "turn-61af125a-5404-405b-bf60-7658bf3a0276",
+ "operationId": "op-live-cancel-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T05:07:22.150Z",
+ "updatedAt": "2026-08-29T05:07:23.188Z",
+ "terminalAt": "2026-08-29T05:07:23.188Z",
+ "durationMs": 1038,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "requestedSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "environmentId": "environment-dbebe77e25e68ce00a506d93a97ff95d",
+ "controlRef": {
+ "runId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ",
+ "sessionId": "session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "executionId": "run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7",
+ "requestDigest": "sha256:8ccb11f8942e4eb8496e5f324790d1af124339a27d297b8e0c1097245122b2f1"
+ },
+ "materializationDigest": "92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d",
+ "cursor": "5",
+ "cursorCommittedSequence": 83,
+ "contentBytes": 14
+ },
+ "attemptedRun": true,
+ "status": "verified"
+ },
+ "interaction": {
+ "status": "reported-unavailable",
+ "advertisedByProvider": true,
+ "advertisedByBraid": false,
+ "advertised": false,
+ "provider": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "braid": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "attempted": false
+ }
+ },
+ "operationReceipt": {
+ "operation": "cli-bridge.target-smoke",
+ "packed": true,
+ "runId": "run-a4c4a821-54f0-4e58-971c-f55621c01041",
+ "status": "passed"
+ },
+ "status": "passed",
+ "stderr": "",
+ "stdout": "{\"version\":1,\"type\":\"ack\",\"requestId\":\"init-pi-tangle-router-deepseek-v4-flash\",\"revision\":4,\"command\":\"initialize\"}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"init-pi-tangle-router-deepseek-v4-flash\",\"revision\":4,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":4,\"sequence\":4,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:07:15.069Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[],\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":null,\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":4,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:07:15.069Z\"}],\"branch\":\"branch-1\",\"status\":\"empty\",\"statusText\":\"ready for a message\",\"queueCount\":0,\"queue\":[],\"messages\":[],\"hiddenMessageCount\":0,\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"activity\":[],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:07:15.069Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"send-pi-tangle-router-deepseek-v4-flash\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":4,\"replayed\":false,\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"admission\":{\"version\":1,\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T05:07:16.176Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"unavailable\",\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"model\":\"deepseek-v4-flash\",\"route\":\"pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"providerRunId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"2e7be28d7144b26b5b852604e612feb374d4c000f71f76afc279b902c7fd45fd\",\"capabilitiesDigest\":\"ddc6284b3633f963459e1d4573baf9f16d2db828706ec2603a7ae9d4c0771559\",\"materializationDigest\":\"9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e\",\"digest\":\"cbfa72f1147c61f4d5af7108ad7dcd4566929d25e8608b77479e2f1e93b5bf30\"},\"command\":\"send\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":5,\"revision\":5,\"event\":{\"sequence\":5,\"revision\":5,\"kind\":\"draft.changed\",\"payload\":{\"value\":{\"kind\":\"draft.changed\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":6,\"revision\":6,\"event\":{\"sequence\":6,\"revision\":6,\"kind\":\"run.requested\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"admission\":{\"version\":1,\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T05:07:16.176Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"unavailable\",\"__braidTruncated\":true},\"__braidTruncated\":true},\"status\":\"admitted\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":7,\"revision\":7,\"event\":{\"sequence\":7,\"revision\":7,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-send-pi-tangle-router-deepseek-v4-flash-cb9191f630ae0e76636ff2ff\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"cb9191f630ae0e76636ff2ff38feedf3f6ed7d46254ec39ee9a1464a79dcfcbd\",\"kind\":\"send\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T05:07:16.199Z\",\"updatedAt\":\"2026-08-29T05:07:16.199Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":8,\"revision\":8,\"event\":{\"sequence\":8,\"revision\":8,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"admission\":{\"phase\":\"intent\",\"provider\":\"cli-bridge\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"runId\":\"retained-intent-run:89fc0197f0cac0dc655eb859866bba1b263033aa4f3324ae48cce40bfa78ad87\",\"requestedProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requestDigest\":\"sha256:89fc0197f0cac0dc655eb859866bba1b263033aa4f3324ae48cce40bfa78ad87\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"send-pi-tangle-router-deepseek-v4-flash\",\"revision\":6,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":6,\"sequence\":6,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:07:16.187Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[]}],\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"updatedAt\":\"2026-08-29T05:07:16.187Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"materializationDigest\":\"9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"focusedRunId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"activeRuns\":[{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":6,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:07:16.187Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"running\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\"},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"activeRunId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"focusedRunId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"kind\":\"run\",\"title\":\"run run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"running\",\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"occurredAt\":\"2026-08-29T05:07:16.187Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:16.187Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\"],\"runner\":\"pi\",\"startedAt\":\"2026-08-29T05:07:16.187Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"details\":{\"title\":\"run run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"Detach the active run before reconnecting it\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"Detach the active run before reconciling it\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":9,\"revision\":9,\"event\":{\"sequence\":9,\"revision\":9,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"admission\":{\"phase\":\"environment\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":10,\"revision\":10,\"event\":{\"sequence\":10,\"revision\":10,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"admission\":{\"phase\":\"dispatched\",\"controlRef\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestDigest\":\"sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd\"},\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":11,\"revision\":11,\"event\":{\"sequence\":11,\"revision\":11,\"kind\":\"run.environment.observed\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T05:07:17.828Z\"},\"value\":{\"kind\":\"run.environment.observed\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"observation\":{\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"unavailable\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"observedAt\":\"2026-08-29T05:07:17.828Z\"},\"controlRef\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestDigest\":\"sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd\"},\"provider\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T05:07:17.828Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":12,\"revision\":12,\"event\":{\"sequence\":12,\"revision\":12,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T05:07:17.845Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T05:07:17.845Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":13,\"revision\":13,\"event\":{\"sequence\":13,\"revision\":13,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T05:07:18.154Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T05:07:18.154Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":14,\"revision\":14,\"event\":{\"sequence\":14,\"revision\":14,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T05:07:18.162Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"streaming\",\"provider\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T05:07:18.162Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":15,\"revision\":15,\"event\":{\"sequence\":15,\"revision\":15,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"providerSequence\":5,\"cursor\":\"4\",\"receivedAt\":\"2026-08-29T05:07:18.169Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":16,\"revision\":16,\"event\":{\"sequence\":16,\"revision\":16,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"providerSequence\":6,\"cursor\":\"5\",\"receivedAt\":\"2026-08-29T05:07:18.175Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":17,\"revision\":17,\"event\":{\"sequence\":17,\"revision\":17,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"providerSequence\":7,\"cursor\":\"6\",\"receivedAt\":\"2026-08-29T05:07:20.220Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":18,\"revision\":18,\"event\":{\"sequence\":18,\"revision\":18,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:7\",\"providerSequence\":8,\"cursor\":\"7\",\"receivedAt\":\"2026-08-29T05:07:20.624Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:7\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":19,\"revision\":19,\"event\":{\"sequence\":19,\"revision\":19,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:8\",\"providerSequence\":9,\"cursor\":\"8\",\"receivedAt\":\"2026-08-29T05:07:20.632Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:8\"},\"delta\":\"T\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":20,\"revision\":20,\"event\":{\"sequence\":20,\"revision\":20,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:9\",\"providerSequence\":10,\"cursor\":\"9\",\"receivedAt\":\"2026-08-29T05:07:20.735Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:9\"},\"delta\":\"he user\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":21,\"revision\":21,\"event\":{\"sequence\":21,\"revision\":21,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:10\",\"providerSequence\":11,\"cursor\":\"10\",\"receivedAt\":\"2026-08-29T05:07:20.745Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:10\"},\"delta\":\" want\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":22,\"revision\":22,\"event\":{\"sequence\":22,\"revision\":22,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:11\",\"providerSequence\":12,\"cursor\":\"11\",\"receivedAt\":\"2026-08-29T05:07:20.752Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:11\"},\"delta\":\"s me\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":23,\"revision\":23,\"event\":{\"sequence\":23,\"revision\":23,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:12\",\"providerSequence\":13,\"cursor\":\"12\",\"receivedAt\":\"2026-08-29T05:07:20.760Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:12\"},\"delta\":\" \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":24,\"revision\":24,\"event\":{\"sequence\":24,\"revision\":24,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:13\",\"providerSequence\":14,\"cursor\":\"13\",\"receivedAt\":\"2026-08-29T05:07:20.767Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:13\"},\"delta\":\"to outpu\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":25,\"revision\":25,\"event\":{\"sequence\":25,\"revision\":25,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:14\",\"providerSequence\":15,\"cursor\":\"14\",\"receivedAt\":\"2026-08-29T05:07:20.773Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:14\"},\"delta\":\"t only\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":26,\"revision\":26,\"event\":{\"sequence\":26,\"revision\":26,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:15\",\"providerSequence\":16,\"cursor\":\"15\",\"receivedAt\":\"2026-08-29T05:07:20.783Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:15\"},\"delta\":\" \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":27,\"revision\":27,\"event\":{\"sequence\":27,\"revision\":27,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:16\",\"providerSequence\":17,\"cursor\":\"16\",\"receivedAt\":\"2026-08-29T05:07:20.801Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:16\"},\"delta\":\"a specifi\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":28,\"revision\":28,\"event\":{\"sequence\":28,\"revision\":28,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:17\",\"providerSequence\":18,\"cursor\":\"17\",\"receivedAt\":\"2026-08-29T05:07:20.811Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:17\"},\"delta\":\"c \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":29,\"revision\":29,\"event\":{\"sequence\":29,\"revision\":29,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:18\",\"providerSequence\":19,\"cursor\":\"18\",\"receivedAt\":\"2026-08-29T05:07:20.818Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:18\"},\"delta\":\"token wit\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":30,\"revision\":30,\"event\":{\"sequence\":30,\"revision\":30,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:19\",\"providerSequence\":20,\"cursor\":\"19\",\"receivedAt\":\"2026-08-29T05:07:20.825Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:19\"},\"delta\":\"h no\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":31,\"revision\":31,\"event\":{\"sequence\":31,\"revision\":31,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:20\",\"providerSequence\":21,\"cursor\":\"20\",\"receivedAt\":\"2026-08-29T05:07:20.832Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:20\"},\"delta\":\" punctuation\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":32,\"revision\":32,\"event\":{\"sequence\":32,\"revision\":32,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:21\",\"providerSequence\":22,\"cursor\":\"21\",\"receivedAt\":\"2026-08-29T05:07:20.839Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:21\"},\"delta\":\" or\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":33,\"revision\":33,\"event\":{\"sequence\":33,\"revision\":33,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:22\",\"providerSequence\":23,\"cursor\":\"22\",\"receivedAt\":\"2026-08-29T05:07:20.846Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:22\"},\"delta\":\" explanation\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":34,\"revision\":34,\"event\":{\"sequence\":34,\"revision\":34,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:23\",\"providerSequence\":24,\"cursor\":\"23\",\"receivedAt\":\"2026-08-29T05:07:20.854Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:23\"},\"delta\":\".\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":35,\"revision\":35,\"event\":{\"sequence\":35,\"revision\":35,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:24\",\"providerSequence\":25,\"cursor\":\"24\",\"receivedAt\":\"2026-08-29T05:07:20.861Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:24\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":36,\"revision\":36,\"event\":{\"sequence\":36,\"revision\":36,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:25\",\"providerSequence\":26,\"cursor\":\"25\",\"receivedAt\":\"2026-08-29T05:07:20.868Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"L\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:25\"},\"delta\":\"L\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":37,\"revision\":37,\"event\":{\"sequence\":37,\"revision\":37,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:26\",\"providerSequence\":27,\"cursor\":\"26\",\"receivedAt\":\"2026-08-29T05:07:20.879Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:26\"},\"delta\":\"IVE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":38,\"revision\":38,\"event\":{\"sequence\":38,\"revision\":38,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:27\",\"providerSequence\":28,\"cursor\":\"27\",\"receivedAt\":\"2026-08-29T05:07:20.885Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_B\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:27\"},\"delta\":\"_\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":39,\"revision\":39,\"event\":{\"sequence\":39,\"revision\":39,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:28\",\"providerSequence\":29,\"cursor\":\"28\",\"receivedAt\":\"2026-08-29T05:07:20.892Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRA\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:28\"},\"delta\":\"BR\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":40,\"revision\":40,\"event\":{\"sequence\":40,\"revision\":40,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:29\",\"providerSequence\":30,\"cursor\":\"29\",\"receivedAt\":\"2026-08-29T05:07:20.899Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:29\"},\"delta\":\"AID\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":41,\"revision\":41,\"event\":{\"sequence\":41,\"revision\":41,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:30\",\"providerSequence\":31,\"cursor\":\"30\",\"receivedAt\":\"2026-08-29T05:07:20.906Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_P\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:30\"},\"delta\":\"_\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":42,\"revision\":42,\"event\":{\"sequence\":42,\"revision\":42,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:31\",\"providerSequence\":32,\"cursor\":\"31\",\"receivedAt\":\"2026-08-29T05:07:20.925Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:31\"},\"delta\":\"PI\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":43,\"revision\":43,\"event\":{\"sequence\":43,\"revision\":43,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:32\",\"providerSequence\":33,\"cursor\":\"32\",\"receivedAt\":\"2026-08-29T05:07:20.934Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-T\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:32\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":44,\"revision\":44,\"event\":{\"sequence\":44,\"revision\":44,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:33\",\"providerSequence\":34,\"cursor\":\"33\",\"receivedAt\":\"2026-08-29T05:07:20.941Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANG\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:33\"},\"delta\":\"TANG\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":45,\"revision\":45,\"event\":{\"sequence\":45,\"revision\":45,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:34\",\"providerSequence\":35,\"cursor\":\"34\",\"receivedAt\":\"2026-08-29T05:07:20.948Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:34\"},\"delta\":\"LE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":46,\"revision\":46,\"event\":{\"sequence\":46,\"revision\":46,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:35\",\"providerSequence\":36,\"cursor\":\"35\",\"receivedAt\":\"2026-08-29T05:07:20.955Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:35\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":47,\"revision\":47,\"event\":{\"sequence\":47,\"revision\":47,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:36\",\"providerSequence\":37,\"cursor\":\"36\",\"receivedAt\":\"2026-08-29T05:07:20.963Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-RO\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:36\"},\"delta\":\"RO\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":48,\"revision\":48,\"event\":{\"sequence\":48,\"revision\":48,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:37\",\"providerSequence\":38,\"cursor\":\"37\",\"receivedAt\":\"2026-08-29T05:07:20.969Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUT\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:37\"},\"delta\":\"U\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":49,\"revision\":49,\"event\":{\"sequence\":49,\"revision\":49,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:38\",\"providerSequence\":39,\"cursor\":\"38\",\"receivedAt\":\"2026-08-29T05:07:20.975Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:38\"},\"delta\":\"TER\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":50,\"revision\":50,\"event\":{\"sequence\":50,\"revision\":50,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:39\",\"providerSequence\":40,\"cursor\":\"39\",\"receivedAt\":\"2026-08-29T05:07:20.982Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-D\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:39\"},\"delta\":\"-D\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":51,\"revision\":51,\"event\":{\"sequence\":51,\"revision\":51,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:40\",\"providerSequence\":41,\"cursor\":\"40\",\"receivedAt\":\"2026-08-29T05:07:20.988Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEP\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:40\"},\"delta\":\"EE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":52,\"revision\":52,\"event\":{\"sequence\":52,\"revision\":52,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:41\",\"providerSequence\":42,\"cursor\":\"41\",\"receivedAt\":\"2026-08-29T05:07:20.994Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEE\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:41\"},\"delta\":\"PSEE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":53,\"revision\":53,\"event\":{\"sequence\":53,\"revision\":53,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:42\",\"providerSequence\":43,\"cursor\":\"42\",\"receivedAt\":\"2026-08-29T05:07:21.001Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:42\"},\"delta\":\"\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":54,\"revision\":54,\"event\":{\"sequence\":54,\"revision\":54,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:43\",\"providerSequence\":44,\"cursor\":\"43\",\"receivedAt\":\"2026-08-29T05:07:21.007Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:43\"},\"delta\":\"K-V\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":55,\"revision\":55,\"event\":{\"sequence\":55,\"revision\":55,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:44\",\"providerSequence\":45,\"cursor\":\"44\",\"receivedAt\":\"2026-08-29T05:07:21.013Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:44\"},\"delta\":\"4\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":56,\"revision\":56,\"event\":{\"sequence\":56,\"revision\":56,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:45\",\"providerSequence\":46,\"cursor\":\"45\",\"receivedAt\":\"2026-08-29T05:07:21.018Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-F\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:45\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":57,\"revision\":57,\"event\":{\"sequence\":57,\"revision\":57,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:46\",\"providerSequence\":47,\"cursor\":\"46\",\"receivedAt\":\"2026-08-29T05:07:21.024Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FL\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:46\"},\"delta\":\"FL\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":58,\"revision\":58,\"event\":{\"sequence\":58,\"revision\":58,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:47\",\"providerSequence\":48,\"cursor\":\"47\",\"receivedAt\":\"2026-08-29T05:07:21.030Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:47\"},\"delta\":\"AS\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":59,\"revision\":59,\"event\":{\"sequence\":59,\"revision\":59,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:48\",\"providerSequence\":49,\"cursor\":\"48\",\"receivedAt\":\"2026-08-29T05:07:21.036Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:48\"},\"delta\":\"H_O\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":60,\"revision\":60,\"event\":{\"sequence\":60,\"revision\":60,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\",\"providerSequence\":50,\"cursor\":\"49\",\"receivedAt\":\"2026-08-29T05:07:21.430Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":61,\"revision\":61,\"event\":{\"sequence\":61,\"revision\":61,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:50\",\"providerSequence\":51,\"cursor\":\"50\",\"receivedAt\":\"2026-08-29T05:07:21.437Z\"},\"part\":{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:50\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":62,\"revision\":62,\"event\":{\"sequence\":62,\"revision\":62,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"providerSequence\":52,\"cursor\":\"51\",\"receivedAt\":\"2026-08-29T05:07:21.445Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":63,\"revision\":63,\"event\":{\"sequence\":63,\"revision\":63,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"providerSequence\":53,\"cursor\":\"52\",\"receivedAt\":\"2026-08-29T05:07:21.452Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":64,\"revision\":64,\"event\":{\"sequence\":64,\"revision\":64,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"providerSequence\":54,\"cursor\":\"53\",\"receivedAt\":\"2026-08-29T05:07:21.460Z\"},\"unknown\":{\"type\":\"model-processing\",\"phase\":\"generating\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":65,\"revision\":65,\"event\":{\"sequence\":65,\"revision\":65,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"providerSequence\":55,\"cursor\":\"54\",\"receivedAt\":\"2026-08-29T05:07:21.468Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":66,\"revision\":66,\"event\":{\"sequence\":66,\"revision\":66,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:55\",\"providerSequence\":56,\"cursor\":\"55\",\"receivedAt\":\"2026-08-29T05:07:21.478Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"running\",\"provider\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:55\",\"providerSequence\":56,\"cursor\":\"55\",\"receivedAt\":\"2026-08-29T05:07:21.478Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":67,\"revision\":67,\"event\":{\"sequence\":67,\"revision\":67,\"kind\":\"run.finished\",\"payload\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"source\":{\"eventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\",\"providerSequence\":57,\"receivedAt\":\"2026-08-29T05:07:21.496Z\"},\"status\":\"completed\",\"completeness\":\"complete\",\"finalText\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"usage\":{\"input\":985,\"output\":41,\"reasoning\":16,\"usdKnown\":false,\"model\":\"pi/tangle-router/deepseek-v4-flash\"},\"reason\":\"RUNTIME_FINAL_REASON\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":68,\"revision\":68,\"event\":{\"sequence\":68,\"revision\":68,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-send-pi-tangle-router-deepseek-v4-flash-cb9191f630ae0e76636ff2ff\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"cb9191f630ae0e76636ff2ff38feedf3f6ed7d46254ec39ee9a1464a79dcfcbd\",\"kind\":\"send\",\"status\":\"terminal\",\"attempt\":1,\"outcomeDigest\":\"b82069d6893c46ce5ac5dc805ef96d7f3999afb6c6ecd8ec2e4332ec92d0b067\",\"createdAt\":\"2026-08-29T05:07:16.199Z\",\"updatedAt\":\"2026-08-29T05:07:21.514Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"send-pi-tangle-router-deepseek-v4-flash\",\"revision\":68,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":68,\"sequence\":68,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:07:16.187Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]}],\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"updatedAt\":\"2026-08-29T05:07:21.497Z\",\"terminalAt\":\"2026-08-29T05:07:21.497Z\",\"durationMs\":5310,\"inputTokens\":985,\"outputTokens\":41,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":16,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"controlRef\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestDigest\":\"sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd\"},\"materializationDigest\":\"9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e\",\"cursor\":\"55\",\"cursorCommittedSequence\":66,\"contentBytes\":333}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:17.828Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":68,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:07:16.187Z\"}],\"branch\":\"branch-1\",\"status\":\"completed\",\"statusText\":\"completed\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"55\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":5310},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"completeness\":\"complete\",\"contentBytes\":333}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:17.828Z\"}],\"focusedRunId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"kind\":\"run\",\"title\":\"run run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"completed\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"occurredAt\":\"2026-08-29T05:07:16.187Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"environment:environment-dbebe77e25e68ce00a506d93a97ff95d\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:07:15.562Z\",\"occurredAt\":\"2026-08-29T05:07:17.828Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 52\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 53\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 54\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 55\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:07:15.562Z\"},{\"id\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\"],\"runner\":\"pi\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:07:15.562Z\",\"observed: 2026-08-29T05:07:17.828Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"fields\":[{\"label\":\"status\",\"value\":\"completed\"},{\"label\":\"input tokens\",\"value\":\"985\"},{\"label\":\"output tokens\",\"value\":\"41\"},{\"label\":\"token measurement\",\"value\":\"complete\"},{\"label\":\"model\",\"value\":\"pi/tangle-router/deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"cancel-send-pi-tangle-router-deepseek-v4-flash\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":68,\"replayed\":false,\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"admission\":{\"version\":1,\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T05:07:22.139Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"unavailable\",\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"model\":\"deepseek-v4-flash\",\"route\":\"pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"providerRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"retainedControl\":\"exact-after-dispatch\"},\"nativeContextBoundaryProof\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestDigest\":\"sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd\",\"boundary\":{\"kind\":\"revision\",\"revision\":\"pi:c2a57878-8c9f-4d35-8a3e-aa2e760f1eef:2\"},\"observedAt\":\"2026-08-29T05:07:21.417Z\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"4e7ad98a6f6b723f6891148d2176907c0ae907822131aef0a1ee996705524962\",\"capabilitiesDigest\":\"ddc6284b3633f963459e1d4573baf9f16d2db828706ec2603a7ae9d4c0771559\",\"materializationDigest\":\"92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d\",\"digest\":\"221d7140445090562118a215937d99b0704057e4db47a25dd937f9a3bccafc10\"},\"command\":\"send\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":69,\"revision\":69,\"event\":{\"sequence\":69,\"revision\":69,\"kind\":\"draft.changed\",\"payload\":{\"value\":{\"kind\":\"draft.changed\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":70,\"revision\":70,\"event\":{\"sequence\":70,\"revision\":70,\"kind\":\"run.requested\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"admission\":{\"version\":1,\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T05:07:22.139Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"__braidTruncated\":true},\"__braidTruncated\":true},\"status\":\"admitted\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":71,\"revision\":71,\"event\":{\"sequence\":71,\"revision\":71,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-send-pi-tangle-router-deepseek-v4-flash-27ab54fb7795df6f5470b0b5\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"27ab54fb7795df6f5470b0b5030292dd63a50164e678edd694e4e8d14e143c3d\",\"kind\":\"send\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T05:07:22.158Z\",\"updatedAt\":\"2026-08-29T05:07:22.158Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":72,\"revision\":72,\"event\":{\"sequence\":72,\"revision\":72,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"admission\":{\"phase\":\"intent\",\"provider\":\"cli-bridge\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"runId\":\"retained-intent-run:3603340c808e1a7a55267fb3e98cf88d6cb111cd332239479bc49b3c9ded92d1\",\"requestedProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requestDigest\":\"sha256:3603340c808e1a7a55267fb3e98cf88d6cb111cd332239479bc49b3c9ded92d1\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":70,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":70,\"sequence\":70,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:07:22.150Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]},{\"id\":\"message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[{\"id\":\"part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[]}],\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"updatedAt\":\"2026-08-29T05:07:21.497Z\",\"terminalAt\":\"2026-08-29T05:07:21.497Z\",\"durationMs\":5310,\"inputTokens\":985,\"outputTokens\":41,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":16,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"controlRef\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestDigest\":\"sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd\"},\"materializationDigest\":\"9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e\",\"cursor\":\"55\",\"cursorCommittedSequence\":66,\"contentBytes\":333},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T05:07:22.150Z\",\"updatedAt\":\"2026-08-29T05:07:22.150Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"materializationDigest\":\"92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:17.828Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"focusedRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"activeRuns\":[{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":70,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:07:22.150Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]},{\"id\":\"message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[{\"id\":\"part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"55\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":5310},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"completeness\":\"complete\",\"contentBytes\":333},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"running\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\"},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:17.828Z\"}],\"activeRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"focusedRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"kind\":\"run\",\"title\":\"run run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"completed\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"occurredAt\":\"2026-08-29T05:07:16.187Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"environment:environment-dbebe77e25e68ce00a506d93a97ff95d\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:07:15.562Z\",\"occurredAt\":\"2026-08-29T05:07:17.828Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 52\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 53\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 54\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 55\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"run:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"kind\":\"run\",\"title\":\"run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"status\":\"running\",\"startedAt\":\"2026-08-29T05:07:22.150Z\",\"occurredAt\":\"2026-08-29T05:07:22.150Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:22.150Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:07:15.562Z\"},{\"id\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\"],\"runner\":\"pi\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:22.150Z\"},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-61af125a-5404-405b-bf60-7658bf3a0276\"],\"runner\":\"pi\",\"startedAt\":\"2026-08-29T05:07:22.150Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:07:15.562Z\",\"observed: 2026-08-29T05:07:17.828Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"Detach the active run before reconnecting it\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"Detach the active run before reconciling it\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"cancel-pi-tangle-router-deepseek-v4-flash\",\"revision\":85,\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"command\":\"cancel_run\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"control\":\"cancel\",\"outcome\":\"accepted\",\"replayed\":false}\n{\"version\":1,\"type\":\"event\",\"sequence\":73,\"revision\":73,\"event\":{\"sequence\":73,\"revision\":73,\"kind\":\"run.control.requested\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"control\":{\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live packed smoke cancellation\",\"text\":\"[unavailable]\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":74,\"revision\":74,\"event\":{\"sequence\":74,\"revision\":74,\"kind\":\"run.cancel.requested\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"control\":{\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live packed smoke cancellation\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":75,\"revision\":75,\"event\":{\"sequence\":75,\"revision\":75,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-pi-tangle-router-deepseek-v4-flash-0acc84832a1aa4118d7c5e43\",\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"0acc84832a1aa4118d7c5e43d276fe0521b1cf99a83e1193c3372c379fa67fa7\",\"kind\":\"custom\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T05:07:22.236Z\",\"updatedAt\":\"2026-08-29T05:07:22.236Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":76,\"revision\":76,\"event\":{\"sequence\":76,\"revision\":76,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"admission\":{\"phase\":\"environment\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":77,\"revision\":77,\"event\":{\"sequence\":77,\"revision\":77,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"admission\":{\"phase\":\"dispatched\",\"controlRef\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"requestDigest\":\"sha256:8ccb11f8942e4eb8496e5f324790d1af124339a27d297b8e0c1097245122b2f1\"},\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":78,\"revision\":78,\"event\":{\"sequence\":78,\"revision\":78,\"kind\":\"run.environment.observed\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"source\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T05:07:23.086Z\"},\"value\":{\"kind\":\"run.environment.observed\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"observation\":{\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"createdAt\":\"2026-08-29T05:07:21.544Z\",\"unavailable\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"observedAt\":\"2026-08-29T05:07:23.086Z\"},\"controlRef\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"requestDigest\":\"sha256:8ccb11f8942e4eb8496e5f324790d1af124339a27d297b8e0c1097245122b2f1\"},\"provider\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T05:07:23.086Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":79,\"revision\":79,\"event\":{\"sequence\":79,\"revision\":79,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"source\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T05:07:23.114Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T05:07:23.114Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":80,\"revision\":80,\"event\":{\"sequence\":80,\"revision\":80,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"source\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T05:07:23.121Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T05:07:23.121Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":81,\"revision\":81,\"event\":{\"sequence\":81,\"revision\":81,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"source\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T05:07:23.129Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"status\":\"streaming\",\"provider\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T05:07:23.129Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":82,\"revision\":82,\"event\":{\"sequence\":82,\"revision\":82,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"source\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:4\",\"providerSequence\":5,\"cursor\":\"4\",\"receivedAt\":\"2026-08-29T05:07:23.136Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":83,\"revision\":83,\"event\":{\"sequence\":83,\"revision\":83,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"source\":{\"eventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:5\",\"providerSequence\":6,\"cursor\":\"5\",\"receivedAt\":\"2026-08-29T05:07:23.144Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":84,\"revision\":84,\"event\":{\"sequence\":84,\"revision\":84,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-pi-tangle-router-deepseek-v4-flash-0acc84832a1aa4118d7c5e43\",\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"0acc84832a1aa4118d7c5e43d276fe0521b1cf99a83e1193c3372c379fa67fa7\",\"kind\":\"custom\",\"status\":\"acknowledged\",\"attempt\":1,\"outcomeDigest\":\"f430d9c9c101fec536eed9da90bf212be94a7c138332862d1e9774b1266d9187\",\"createdAt\":\"2026-08-29T05:07:22.236Z\",\"updatedAt\":\"2026-08-29T05:07:23.159Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":85,\"revision\":85,\"event\":{\"sequence\":85,\"revision\":85,\"kind\":\"run.reconnecting\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"status\":\"reconnecting\",\"completeness\":\"streaming\",\"cursor\":\"5\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":86,\"revision\":86,\"event\":{\"sequence\":86,\"revision\":86,\"kind\":\"run.control.acknowledged\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"control\":{\"operationId\":\"op-live-cancel-pi-tangle-router-deepseek-v4-flash\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"control\":\"cancel\",\"status\":\"accepted\",\"detail\":\"CONTROL_DETAIL\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":87,\"revision\":87,\"event\":{\"sequence\":87,\"revision\":87,\"kind\":\"run.finished\",\"payload\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"status\":\"aborted\",\"completeness\":\"complete\",\"finalText\":\"\",\"usage\":{\"input\":0,\"output\":0,\"tokensKnown\":false,\"usdKnown\":false,\"model\":\"deepseek-v4-flash\"},\"reason\":\"CONTROL_DETAIL\"}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-pi-tangle-router-deepseek-v4-flash\",\"revision\":87,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":87,\"sequence\":87,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:07:22.150Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]},{\"id\":\"message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[{\"id\":\"part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[]}],\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"updatedAt\":\"2026-08-29T05:07:21.497Z\",\"terminalAt\":\"2026-08-29T05:07:21.497Z\",\"durationMs\":5310,\"inputTokens\":985,\"outputTokens\":41,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":16,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"controlRef\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestDigest\":\"sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd\"},\"materializationDigest\":\"9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e\",\"cursor\":\"55\",\"cursorCommittedSequence\":66,\"contentBytes\":333},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T05:07:22.150Z\",\"updatedAt\":\"2026-08-29T05:07:23.188Z\",\"terminalAt\":\"2026-08-29T05:07:23.188Z\",\"durationMs\":1038,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"controlRef\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"requestDigest\":\"sha256:8ccb11f8942e4eb8496e5f324790d1af124339a27d297b8e0c1097245122b2f1\"},\"materializationDigest\":\"92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d\",\"cursor\":\"5\",\"cursorCommittedSequence\":83,\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:23.086Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":87,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:07:22.150Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]},{\"id\":\"message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[{\"id\":\"part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"55\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":5310},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"completeness\":\"complete\",\"contentBytes\":333},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"5\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":1038},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"completeness\":\"complete\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:23.086Z\"}],\"focusedRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"kind\":\"run\",\"title\":\"run run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"completed\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"occurredAt\":\"2026-08-29T05:07:16.187Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 52\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 53\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 54\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 55\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"run:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"kind\":\"run\",\"title\":\"run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"status\":\"cancelled\",\"elapsedMs\":1038,\"startedAt\":\"2026-08-29T05:07:22.150Z\",\"occurredAt\":\"2026-08-29T05:07:22.150Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"environment:environment-dbebe77e25e68ce00a506d93a97ff95d\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:07:15.562Z\",\"occurredAt\":\"2026-08-29T05:07:23.086Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"5\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"event:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"sourceEventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:4\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"event:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"sourceEventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:5\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"run:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:07:15.562Z\"},{\"id\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\"],\"runner\":\"pi\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:22.150Z\"},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-61af125a-5404-405b-bf60-7658bf3a0276\"],\"runner\":\"pi\",\"elapsedMs\":1038,\"startedAt\":\"2026-08-29T05:07:22.150Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:07:15.562Z\",\"observed: 2026-08-29T05:07:23.086Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"final-state-pi-tangle-router-deepseek-v4-flash\",\"revision\":87,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":87,\"sequence\":87,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:07:22.150Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]},{\"id\":\"message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[{\"id\":\"part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[]}],\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"updatedAt\":\"2026-08-29T05:07:21.497Z\",\"terminalAt\":\"2026-08-29T05:07:21.497Z\",\"durationMs\":5310,\"inputTokens\":985,\"outputTokens\":41,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":16,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"controlRef\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestDigest\":\"sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd\"},\"materializationDigest\":\"9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e\",\"cursor\":\"55\",\"cursorCommittedSequence\":66,\"contentBytes\":333},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T05:07:22.150Z\",\"updatedAt\":\"2026-08-29T05:07:23.188Z\",\"terminalAt\":\"2026-08-29T05:07:23.188Z\",\"durationMs\":1038,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"controlRef\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"requestDigest\":\"sha256:8ccb11f8942e4eb8496e5f324790d1af124339a27d297b8e0c1097245122b2f1\"},\"materializationDigest\":\"92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d\",\"cursor\":\"5\",\"cursorCommittedSequence\":83,\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:23.086Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":87,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:07:22.150Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]},{\"id\":\"message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[{\"id\":\"part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"55\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":5310},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"completeness\":\"complete\",\"contentBytes\":333},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"5\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":1038},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"completeness\":\"complete\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:23.086Z\"}],\"focusedRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"kind\":\"run\",\"title\":\"run run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"completed\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"occurredAt\":\"2026-08-29T05:07:16.187Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 52\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 53\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 54\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 55\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"run:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"kind\":\"run\",\"title\":\"run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"status\":\"cancelled\",\"elapsedMs\":1038,\"startedAt\":\"2026-08-29T05:07:22.150Z\",\"occurredAt\":\"2026-08-29T05:07:22.150Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"environment:environment-dbebe77e25e68ce00a506d93a97ff95d\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:07:15.562Z\",\"occurredAt\":\"2026-08-29T05:07:23.086Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"5\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"event:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"sourceEventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:4\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"event:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"sourceEventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:5\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"run:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:07:15.562Z\"},{\"id\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\"],\"runner\":\"pi\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:22.150Z\"},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-61af125a-5404-405b-bf60-7658bf3a0276\"],\"runner\":\"pi\",\"elapsedMs\":1038,\"startedAt\":\"2026-08-29T05:07:22.150Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:07:15.562Z\",\"observed: 2026-08-29T05:07:23.086Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"shutdown-pi-tangle-router-deepseek-v4-flash\",\"revision\":87,\"operationId\":\"op-live-shutdown-pi-tangle-router-deepseek-v4-flash\",\"command\":\"shutdown\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":88,\"revision\":88,\"event\":{\"sequence\":88,\"revision\":88,\"kind\":\"application.shutdown.requested\",\"payload\":{\"value\":{\"kind\":\"application.shutdown.requested\",\"operationId\":\"op-live-shutdown-pi-tangle-router-deepseek-v4-flash\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":89,\"revision\":89,\"event\":{\"sequence\":89,\"revision\":89,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-live-cancel-send-pi-tangle-router-deepseek-v4-flash-27ab54fb7795df6f5470b0b5\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"27ab54fb7795df6f5470b0b5030292dd63a50164e678edd694e4e8d14e143c3d\",\"kind\":\"send\",\"status\":\"failed\",\"attempt\":1,\"outcomeDigest\":\"709050be156660bc04bed3766c3160fcc713b9a8ebb19bfd0cd66bbe285c86e9\",\"createdAt\":\"2026-08-29T05:07:22.158Z\",\"updatedAt\":\"2026-08-29T05:07:24.423Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"cancel-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":89,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":89,\"sequence\":89,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:07:22.150Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]},{\"id\":\"message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[{\"id\":\"part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[]}],\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"updatedAt\":\"2026-08-29T05:07:21.497Z\",\"terminalAt\":\"2026-08-29T05:07:21.497Z\",\"durationMs\":5310,\"inputTokens\":985,\"outputTokens\":41,\"tokensKnown\":true,\"usdKnown\":false,\"tokenStatus\":\"complete\",\"reasoningTokens\":16,\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"controlRef\":{\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestDigest\":\"sha256:e5ac7136a22d99a04a6c231985e0a7db5f1806d450a12560907815f0f1e6d3bd\"},\"materializationDigest\":\"9aa50c8a310acc80d7ff50155832b964882fc4ab4b53eed7c34d865fd2102e3e\",\"cursor\":\"55\",\"cursorCommittedSequence\":66,\"contentBytes\":333},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T05:07:22.150Z\",\"updatedAt\":\"2026-08-29T05:07:23.188Z\",\"terminalAt\":\"2026-08-29T05:07:23.188Z\",\"durationMs\":1038,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"controlRef\":{\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6NDJjYTJkM2QxYTYyNDBhODk3ODY2MDViMzU3YTZkYWI1NTczMzgxZmVmNDE1MTNjYzA3YTNmM2UzOGRkYmRlNyIsIm5JVkw5Y0ZFNDlwTzdFSTg2RFY5UXFPb2FYdzhHbzgwLXlkWnhobVE0VHMiXQ\",\"sessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"executionId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"requestDigest\":\"sha256:8ccb11f8942e4eb8496e5f324790d1af124339a27d297b8e0c1097245122b2f1\"},\"materializationDigest\":\"92257048624d30b0d9fef21a9cf18bdf8d5a58e011aa8d91275187da9882a62d\",\"cursor\":\"5\",\"cursorCommittedSequence\":83,\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:23.086Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":89,\"workspace\":\"/tmp/braid-live-targets-hVb5BS/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:07:22.150Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-7f281582-c0b6-4974-aae2-f153906672d4\",\"role\":\"user\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"part-message-7f281582-c0b6-4974-aae2-f153906672d4\",\"kind\":\"text\",\"text\":\"Output only this token, with no punctuation or explanation: LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\"}]},{\"id\":\"message-e9508c4e-3e21-4ef1-83f4-3001d7b812c7\",\"role\":\"assistant\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"status\":\"complete\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"parts\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user wants me to output only a specific token with no punctuation or explanation.\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:49\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:message:1:text\",\"kind\":\"text\",\"text\":\"LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_OK\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:final\"}]},{\"id\":\"message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"role\":\"user\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\",\"status\":\"complete\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[{\"id\":\"part-message-cb8ddc20-6cab-4626-aab0-d1dcf6903995\",\"kind\":\"text\",\"text\":\"For LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.\"}]},{\"id\":\"message-a7d2a920-130e-4184-bad6-7bc7c1a8b1ed\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"turnId\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"completed\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"55\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"complete\",\"costStatus\":\"unknown\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"elapsedMs\":5310},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"completeness\":\"complete\",\"contentBytes\":333},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"turnId\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-live-cancel-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"5\",\"providerSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"requestedSessionId\":\"session-braid-run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":1038},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"completeness\":\"complete\",\"contentBytes\":14}],\"sessionUsage\":{\"turns\":{\"sourceCount\":2,\"input\":985,\"output\":41,\"reasoning\":16,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":2,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":2,\"unknownLatencySources\":2},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:07:15.562Z\",\"updatedAt\":\"2026-08-29T05:07:23.086Z\"}],\"focusedRunId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"kind\":\"run\",\"title\":\"run run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"status\":\"completed\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\",\"occurredAt\":\"2026-08-29T05:07:16.187Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"completed\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"activity:run-a4c4a821-54f0-4e58-971c-f55621c01041:status:local:running\",\"kind\":\"system\",\"title\":\"running\",\"status\":\"completed\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:4\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:5\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:6\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 52\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:51\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 53\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:52\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"completed\",\"detail\":\"sequence 54\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:53\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"event:run-a4c4a821-54f0-4e58-971c-f55621c01041:run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"completed\",\"detail\":\"sequence 55\",\"occurredAt\":\"2026-08-29T05:07:21.497Z\",\"sourceEventId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041:54\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"run\",\"entityId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\"},{\"id\":\"run:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"kind\":\"run\",\"title\":\"run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"status\":\"cancelled\",\"elapsedMs\":1038,\"startedAt\":\"2026-08-29T05:07:22.150Z\",\"occurredAt\":\"2026-08-29T05:07:22.150Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"environment:environment-dbebe77e25e68ce00a506d93a97ff95d\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:07:15.562Z\",\"occurredAt\":\"2026-08-29T05:07:23.086Z\",\"runId\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live packed smoke cancellation\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"5\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"activity:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"event:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"sourceEventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:4\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"},{\"id\":\"event:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:07:23.188Z\",\"sourceEventId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7:5\",\"runId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"entityType\":\"run\",\"entityId\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:07:15.069Z\"},{\"id\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"run:run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:07:15.562Z\"},{\"id\":\"turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"complete\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"run-a4c4a821-54f0-4e58-971c-f55621c01041\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"completed\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-535759c8-2a13-4e32-bc7a-c93ed9aa09b8\"],\"runner\":\"pi\",\"elapsedMs\":5310,\"startedAt\":\"2026-08-29T05:07:16.187Z\"},{\"id\":\"turn-61af125a-5404-405b-bf60-7658bf3a0276\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:07:22.150Z\"},{\"id\":\"run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-61af125a-5404-405b-bf60-7658bf3a0276\"],\"runner\":\"pi\",\"elapsedMs\":1038,\"startedAt\":\"2026-08-29T05:07:22.150Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-dbebe77e25e68ce00a506d93a97ff95d\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:07:15.562Z\",\"observed: 2026-08-29T05:07:23.086Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-d4f5dd6c-7968-4049-bcc8-08dee556a4d7\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":true,\"source\":\"application\"},\"analysis.recipe\":{\"available\":true,\"source\":\"application\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n",
+ "process": {
+ "processIdentity": {
+ "instanceId": "07f9c7b1-b000-43cd-9740-185a05f1093f",
+ "pid": 1852716,
+ "startedAt": 1787980034459
+ },
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 1852716
+ ],
+ "roots": [
+ 1852716
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "natural": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 1852716
+ ],
+ "roots": [
+ 1852716
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "exit": {
+ "code": 0,
+ "signal": null
+ }
+ }
+ }
+ ],
+ "bridge": {
+ "initialHealth": {
+ "ok": false,
+ "error": "fetch failed"
+ },
+ "launch": {
+ "requested": true,
+ "directory": "/home/drew/code/.worktrees/cli-bridge-continuation-control",
+ "command": "pnpm start",
+ "health": {
+ "status": 200,
+ "ok": true,
+ "body": {
+ "status": "ok",
+ "cached_verdicts": false,
+ "oldest_probed_at": "2026-08-29T05:06:56.428Z",
+ "backends": [
+ {
+ "name": "pi",
+ "state": "ready",
+ "version": "0.83.0",
+ "probed_at": "2026-08-29T05:06:56.428Z",
+ "cached": false
+ }
+ ],
+ "admission": {
+ "active": 0,
+ "live": 0,
+ "stale": 0,
+ "unbound": 0,
+ "oldestHeldMs": null,
+ "reclaimed": 0,
+ "queued": 0,
+ "maxActive": 8,
+ "maxQueue": 16,
+ "reservedActive": 2,
+ "bulkMaxActive": 6,
+ "activeByClass": {
+ "reserved": 0,
+ "bulk": 0
+ },
+ "queuedByClass": {
+ "reserved": 0,
+ "bulk": 0
+ }
+ },
+ "executor": {
+ "in_flight": 0,
+ "max": 4,
+ "queued": 0,
+ "acquire_deadline_ms": 60000,
+ "max_acquire_deadline_ms": 900000,
+ "acquires": 0,
+ "timeouts": 0,
+ "scoped_host": {
+ "in_flight": 0,
+ "max": 4,
+ "queued": 0,
+ "acquire_deadline_ms": 60000,
+ "max_acquire_deadline_ms": 900000,
+ "acquires": 1,
+ "timeouts": 0,
+ "reserved": 2,
+ "bulk_in_flight": 0,
+ "bulk_max": 2,
+ "queued_reserved": 0,
+ "queued_bulk": 0
+ }
+ },
+ "memory": {
+ "heap_used_bytes": 48048152,
+ "heap_total_bytes": 119754752,
+ "heap_limit_bytes": 4496293888,
+ "heap_used_pct": 1.1,
+ "rss_bytes": 160186368,
+ "external_bytes": 6669380,
+ "runs_retained": 0,
+ "run_replay_bytes": 0
+ },
+ "ts": "2026-08-29T05:06:56.428Z"
+ },
+ "text": "{\"status\":\"ok\",\"cached_verdicts\":false,\"oldest_probed_at\":\"2026-08-29T05:06:56.428Z\",\"backends\":[{\"name\":\"pi\",\"state\":\"ready\",\"version\":\"0.83.0\",\"probed_at\":\"2026-08-29T05:06:56.428Z\",\"cached\":false}],\"admission\":{\"active\":0,\"live\":0,\"stale\":0,\"unbound\":0,\"oldestHeldMs\":null,\"reclaimed\":0,\"queued\":0,\"maxActive\":8,\"maxQueue\":16,\"reservedActive\":2,\"bulkMaxActive\":6,\"activeByClass\":{\"reserved\":0,\"bulk\":0},\"queuedByClass\":{\"reserved\":0,\"bulk\":0}},\"executor\":{\"in_flight\":0,\"max\":4,\"queued\":0,\"acquire_deadline_ms\":60000,\"max_acquire_deadline_ms\":900000,\"acquires\":0,\"timeouts\":0,\"scoped_host\":{\"in_flight\":0,\"max\":4,\"queued\":0,\"acquire_deadline_ms\":60000,\"max_acquire_deadline_ms\":900000,\"acquires\":1,\"timeouts\":0,\"reserved\":2,\"bulk_in_flight\":0,\"bulk_max\":2,\"queued_reserved\":0,\"queued_bulk\":0}},\"memory\":{\"heap_used_bytes\":48048152,\"heap_total_bytes\":119754752,\"heap_limit_bytes\":4496293888,\"heap_used_pct\":1.1,\"rss_bytes\":160186368,\"external_bytes\":6669380,\"runs_retained\":0,\"run_replay_bytes\":0},\"ts\":\"2026-08-29T05:06:56.428Z\"}"
+ },
+ "process": {
+ "stdout": "[cli-bridge] listening on http://127.0.0.1:3480 (host=127.0.0.1)\n[cli-bridge] backends: pi\n[cli-bridge] bearer: none (loopback only)\n[cli-bridge] host admission: maxActive=8 maxQueue=16/class reservedActive=2 (bulk ceiling 6) queueTimeoutMs=30000 bulkQueueTimeoutMs=240000\n[cli-bridge] reserved-lane clients: pr-reviewer\n[cli-bridge] traces: /home/drew/code/.worktrees/cli-bridge-continuation-control/data/traces/spans.jsonl (max 16777216 bytes × 2 files)\n[cli-bridge] jail default: fs-jail root=/.agent-home\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] SIGTERM — shutting down\n\u001b[41m\u001b[31m[\u001b[39m\u001b[49m\u001b[41m\u001b[30mELIFECYCLE\u001b[39m\u001b[49m\u001b[41m\u001b[31m]\u001b[39m\u001b[49m \u001b[31mCommand failed.\u001b[39m\n",
+ "stderr": "(node:1826905) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n\u001b[2m$ tsx src/server.ts\u001b[22m\n(node:1826923) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n(node:1826940) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n[cli-bridge] admission maxActive=8 exceeds scoped-executor concurrency=4: the executor is the real ceiling. Lower BRIDGE_HOST_CHAT_MAX_ACTIVE or raise CLI_BRIDGE_SCOPE_MAX_CONCURRENCY so one gate owns the limit.\n",
+ "termination": {
+ "strategy": "process-group",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": true,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 1826905,
+ 1826922,
+ 1826923,
+ 1826940
+ ],
+ "roots": [
+ 1826905
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "term",
+ "termSignal": {
+ "method": "process-group",
+ "sent": true
+ },
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "exit": {
+ "code": null,
+ "signal": "SIGTERM"
+ }
+ }
+ },
+ "runtimeContract": {
+ "status": 200,
+ "ok": true,
+ "body": {
+ "name": "cli-bridge",
+ "version": "0.3.0",
+ "scheme": "bridge//",
+ "capabilities": {
+ "profileMaterialization": "cli-bridge.profile-materialization.v2",
+ "usageCostProvenance": "cli-bridge.usage-cost.v1",
+ "runtimeAttachments": {
+ "mcp": true
+ }
+ },
+ "backends": [
+ "pi"
+ ],
+ "endpoints": [
+ "/health",
+ "/v1/models",
+ "/v1/chat/completions",
+ "/v1/sessions",
+ "/v1/capabilities",
+ "/v1/sessions/:id/turns",
+ "/v1/sessions/:id/input",
+ "/v1/sessions/:id/events",
+ "/v1/sessions/:id/status",
+ "/v1/sessions/:id/transcript",
+ "/v1/sessions/:id/steer",
+ "/v1/sessions/:id/cancel",
+ "/v1/sessions/:id/detach",
+ "/v1/sessions/:id/close",
+ "/v1/runs/:id",
+ "/v1/runs/:id/events",
+ "/v1/runs/:id/cancel",
+ "/v1/runs/:runId/interactions/:interactionId/respond",
+ "/cad/render",
+ "/images/generate"
+ ]
+ },
+ "text": "{\"name\":\"cli-bridge\",\"version\":\"0.3.0\",\"scheme\":\"bridge//\",\"capabilities\":{\"profileMaterialization\":\"cli-bridge.profile-materialization.v2\",\"usageCostProvenance\":\"cli-bridge.usage-cost.v1\",\"runtimeAttachments\":{\"mcp\":true}},\"backends\":[\"pi\"],\"endpoints\":[\"/health\",\"/v1/models\",\"/v1/chat/completions\",\"/v1/sessions\",\"/v1/capabilities\",\"/v1/sessions/:id/turns\",\"/v1/sessions/:id/input\",\"/v1/sessions/:id/events\",\"/v1/sessions/:id/status\",\"/v1/sessions/:id/transcript\",\"/v1/sessions/:id/steer\",\"/v1/sessions/:id/cancel\",\"/v1/sessions/:id/detach\",\"/v1/sessions/:id/close\",\"/v1/runs/:id\",\"/v1/runs/:id/events\",\"/v1/runs/:id/cancel\",\"/v1/runs/:runId/interactions/:interactionId/respond\",\"/cad/render\",\"/images/generate\"]}"
+ },
+ "models": {
+ "status": 200,
+ "ok": true,
+ "body": {
+ "object": "list",
+ "data": [
+ {
+ "id": "pi/deepseek/deepseek-v4-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/deepseek/deepseek-v4-pro",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/kimi-for-coding-oauth/kimi-for-coding",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/moonshot/kimi-k2-thinking",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/moonshot/kimi-k2.5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.3-codex-spark",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.4",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.4-mini",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.6-luna",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.6-sol",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/openai-codex/gpt-5.6-terra",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/claude-haiku-4-5-20251001",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/claude-opus-4-6",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/claude-sonnet-4-6",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/deepseek-v4-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/deepseek-v4-pro",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/deepseek/deepseek-chat",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/fireworks/deepseek-v4-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gemini-2.5-flash-lite",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gemini-3-pro-preview",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/glm-5.2",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gpt-4o-mini",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gpt-5-mini",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gpt-5.4",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/gpt-5.4-mini",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/groq/llama-3.1-8b-instant",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/moonshotai/kimi-k2.5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/openai/gpt-5.6-luna",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/tangle-router/openrouter/auto",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-coding-paas/glm-5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-coding-paas/glm-5-code",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-coding-paas/glm-5-turbo",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-coding-paas/glm-5.1",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5-air",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5-airx",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.5-x",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.6",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.7",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.7-flash",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-4.7-flashx",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-5",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-5-code",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-5-turbo",
+ "object": "model",
+ "backend": "pi"
+ },
+ {
+ "id": "pi/zai-glm/glm-5.1",
+ "object": "model",
+ "backend": "pi"
+ }
+ ]
+ },
+ "text": "{\"object\":\"list\",\"data\":[{\"id\":\"pi/deepseek/deepseek-v4-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/deepseek/deepseek-v4-pro\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/kimi-for-coding-oauth/kimi-for-coding\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/moonshot/kimi-k2-thinking\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/moonshot/kimi-k2.5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.3-codex-spark\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.4\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.4-mini\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.6-luna\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.6-sol\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/openai-codex/gpt-5.6-terra\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/claude-haiku-4-5-20251001\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/claude-opus-4-6\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/claude-sonnet-4-6\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/deepseek-v4-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/deepseek-v4-pro\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/deepseek/deepseek-chat\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/fireworks/deepseek-v4-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gemini-2.5-flash-lite\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gemini-3-pro-preview\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/glm-5.2\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gpt-4o-mini\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gpt-5-mini\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gpt-5.4\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/gpt-5.4-mini\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/groq/llama-3.1-8b-instant\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/moonshotai/kimi-k2.5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/openai/gpt-5.6-luna\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/tangle-router/openrouter/auto\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-coding-paas/glm-5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-coding-paas/glm-5-code\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-coding-paas/glm-5-turbo\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-coding-paas/glm-5.1\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5-air\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5-airx\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.5-x\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.6\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.7\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.7-flash\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-4.7-flashx\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-5\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-5-code\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-5-turbo\",\"object\":\"model\",\"backend\":\"pi\"},{\"id\":\"pi/zai-glm/glm-5.1\",\"object\":\"model\",\"backend\":\"pi\"}]}"
+ },
+ "requiredHealth": {
+ "status": 200,
+ "ok": true,
+ "body": {
+ "status": "ok",
+ "cached_verdicts": true,
+ "oldest_probed_at": "2026-08-29T05:06:56.428Z",
+ "backends": [
+ {
+ "name": "pi",
+ "state": "ready",
+ "version": "0.83.0",
+ "probed_at": "2026-08-29T05:06:56.428Z",
+ "cached": true
+ }
+ ],
+ "admission": {
+ "active": 0,
+ "live": 0,
+ "stale": 0,
+ "unbound": 0,
+ "oldestHeldMs": null,
+ "reclaimed": 0,
+ "queued": 0,
+ "maxActive": 8,
+ "maxQueue": 16,
+ "reservedActive": 2,
+ "bulkMaxActive": 6,
+ "activeByClass": {
+ "reserved": 0,
+ "bulk": 0
+ },
+ "queuedByClass": {
+ "reserved": 0,
+ "bulk": 0
+ }
+ },
+ "executor": {
+ "in_flight": 0,
+ "max": 4,
+ "queued": 0,
+ "acquire_deadline_ms": 60000,
+ "max_acquire_deadline_ms": 900000,
+ "acquires": 0,
+ "timeouts": 0,
+ "scoped_host": {
+ "in_flight": 0,
+ "max": 4,
+ "queued": 0,
+ "acquire_deadline_ms": 60000,
+ "max_acquire_deadline_ms": 900000,
+ "acquires": 2,
+ "timeouts": 0,
+ "reserved": 2,
+ "bulk_in_flight": 0,
+ "bulk_max": 2,
+ "queued_reserved": 0,
+ "queued_bulk": 0
+ }
+ },
+ "memory": {
+ "heap_used_bytes": 49848344,
+ "heap_total_bytes": 119754752,
+ "heap_limit_bytes": 4496293888,
+ "heap_used_pct": 1.1,
+ "rss_bytes": 160186368,
+ "external_bytes": 6809992,
+ "runs_retained": 0,
+ "run_replay_bytes": 0
+ },
+ "ts": "2026-08-29T05:07:01.911Z"
+ },
+ "text": "{\"status\":\"ok\",\"cached_verdicts\":true,\"oldest_probed_at\":\"2026-08-29T05:06:56.428Z\",\"backends\":[{\"name\":\"pi\",\"state\":\"ready\",\"version\":\"0.83.0\",\"probed_at\":\"2026-08-29T05:06:56.428Z\",\"cached\":true}],\"admission\":{\"active\":0,\"live\":0,\"stale\":0,\"unbound\":0,\"oldestHeldMs\":null,\"reclaimed\":0,\"queued\":0,\"maxActive\":8,\"maxQueue\":16,\"reservedActive\":2,\"bulkMaxActive\":6,\"activeByClass\":{\"reserved\":0,\"bulk\":0},\"queuedByClass\":{\"reserved\":0,\"bulk\":0}},\"executor\":{\"in_flight\":0,\"max\":4,\"queued\":0,\"acquire_deadline_ms\":60000,\"max_acquire_deadline_ms\":900000,\"acquires\":0,\"timeouts\":0,\"scoped_host\":{\"in_flight\":0,\"max\":4,\"queued\":0,\"acquire_deadline_ms\":60000,\"max_acquire_deadline_ms\":900000,\"acquires\":2,\"timeouts\":0,\"reserved\":2,\"bulk_in_flight\":0,\"bulk_max\":2,\"queued_reserved\":0,\"queued_bulk\":0}},\"memory\":{\"heap_used_bytes\":49848344,\"heap_total_bytes\":119754752,\"heap_limit_bytes\":4496293888,\"heap_used_pct\":1.1,\"rss_bytes\":160186368,\"external_bytes\":6809992,\"runs_retained\":0,\"run_replay_bytes\":0},\"ts\":\"2026-08-29T05:07:01.911Z\"}"
+ },
+ "advertisedModels": [
+ "pi/deepseek/deepseek-v4-flash",
+ "pi/deepseek/deepseek-v4-pro",
+ "pi/kimi-for-coding-oauth/kimi-for-coding",
+ "pi/moonshot/kimi-k2-thinking",
+ "pi/moonshot/kimi-k2.5",
+ "pi/openai-codex/gpt-5.3-codex-spark",
+ "pi/openai-codex/gpt-5.4",
+ "pi/openai-codex/gpt-5.4-mini",
+ "pi/openai-codex/gpt-5.5",
+ "pi/openai-codex/gpt-5.6-luna",
+ "pi/openai-codex/gpt-5.6-sol",
+ "pi/openai-codex/gpt-5.6-terra",
+ "pi/tangle-router/claude-haiku-4-5-20251001",
+ "pi/tangle-router/claude-opus-4-6",
+ "pi/tangle-router/claude-sonnet-4-6",
+ "pi/tangle-router/deepseek-v4-flash",
+ "pi/tangle-router/deepseek-v4-pro",
+ "pi/tangle-router/deepseek/deepseek-chat",
+ "pi/tangle-router/fireworks/deepseek-v4-flash",
+ "pi/tangle-router/gemini-2.5-flash-lite",
+ "pi/tangle-router/gemini-3-pro-preview",
+ "pi/tangle-router/glm-5.2",
+ "pi/tangle-router/gpt-4o-mini",
+ "pi/tangle-router/gpt-5-mini",
+ "pi/tangle-router/gpt-5.4",
+ "pi/tangle-router/gpt-5.4-mini",
+ "pi/tangle-router/groq/llama-3.1-8b-instant",
+ "pi/tangle-router/moonshotai/kimi-k2.5",
+ "pi/tangle-router/openai/gpt-5.6-luna",
+ "pi/tangle-router/openrouter/auto",
+ "pi/zai-coding-paas/glm-5",
+ "pi/zai-coding-paas/glm-5-code",
+ "pi/zai-coding-paas/glm-5-turbo",
+ "pi/zai-coding-paas/glm-5.1",
+ "pi/zai-glm/glm-4.5",
+ "pi/zai-glm/glm-4.5-air",
+ "pi/zai-glm/glm-4.5-airx",
+ "pi/zai-glm/glm-4.5-flash",
+ "pi/zai-glm/glm-4.5-x",
+ "pi/zai-glm/glm-4.6",
+ "pi/zai-glm/glm-4.7",
+ "pi/zai-glm/glm-4.7-flash",
+ "pi/zai-glm/glm-4.7-flashx",
+ "pi/zai-glm/glm-5",
+ "pi/zai-glm/glm-5-code",
+ "pi/zai-glm/glm-5-turbo",
+ "pi/zai-glm/glm-5.1"
+ ],
+ "missingTargets": [],
+ "selectedTargets": [
+ {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "label": "Pi with Tangle Router DeepSeek V4 Flash",
+ "modelId": "pi/tangle-router/deepseek-v4-flash"
+ }
+ ]
+ },
+ "selectedTargets": [
+ {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "label": "Pi with Tangle Router DeepSeek V4 Flash",
+ "modelId": "pi/tangle-router/deepseek-v4-flash"
+ }
+ ],
+ "temp": {
+ "packRoot": "/tmp/braid-live-pack-ZfeUUH",
+ "installRoot": "/tmp/braid-live-install-KIUvQZ"
+ },
+ "build": {
+ "command": "pnpm",
+ "args": [
+ "run",
+ "build"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "",
+ "stderr": "\u001b[2m$ node scripts/clean.mjs && tsc -p tsconfig.build.json && node scripts/build-startup.mjs\u001b[22m\n",
+ "durationMs": 3133,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "packCommand": {
+ "command": "pnpm",
+ "args": [
+ "pack",
+ "--pack-destination",
+ "/tmp/braid-live-pack-ZfeUUH"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "package: @tangle-network/braid@0.3.0\n\u001b[94mTarball Contents\u001b[39m\ndist/adapters/agent-interface/harness-runtime.d.ts\ndist/adapters/agent-interface/harness-runtime.d.ts.map\ndist/adapters/agent-interface/harness-runtime.js\ndist/adapters/agent-interface/harness-runtime.js.map\ndist/adapters/agent-interface/interaction-runtime.d.ts\ndist/adapters/agent-interface/interaction-runtime.d.ts.map\ndist/adapters/agent-interface/interaction-runtime.js\ndist/adapters/agent-interface/interaction-runtime.js.map\ndist/adapters/agent-interface/module-url.d.ts\ndist/adapters/agent-interface/module-url.d.ts.map\ndist/adapters/agent-interface/module-url.js\ndist/adapters/agent-interface/module-url.js.map\ndist/adapters/agent-interface/profile-runtime.d.ts\ndist/adapters/agent-interface/profile-runtime.d.ts.map\ndist/adapters/agent-interface/profile-runtime.js\ndist/adapters/agent-interface/profile-runtime.js.map\ndist/adapters/analysis/agent-eval-version.d.ts\ndist/adapters/analysis/agent-eval-version.d.ts.map\ndist/adapters/analysis/agent-eval-version.js\ndist/adapters/analysis/agent-eval-version.js.map\ndist/adapters/analysis/citations.d.ts\ndist/adapters/analysis/citations.d.ts.map\ndist/adapters/analysis/citations.js\ndist/adapters/analysis/citations.js.map\ndist/adapters/analysis/eval-analyst.d.ts\ndist/adapters/analysis/eval-analyst.d.ts.map\ndist/adapters/analysis/eval-analyst.js\ndist/adapters/analysis/eval-analyst.js.map\ndist/adapters/analysis/managed-analysis-runtime.d.ts\ndist/adapters/analysis/managed-analysis-runtime.d.ts.map\ndist/adapters/analysis/managed-analysis-runtime.js\ndist/adapters/analysis/managed-analysis-runtime.js.map\ndist/adapters/analysis/model-execution-scope.d.ts\ndist/adapters/analysis/model-execution-scope.d.ts.map\ndist/adapters/analysis/model-execution-scope.js\ndist/adapters/analysis/model-execution-scope.js.map\ndist/adapters/analysis/production-analysis-analyst.d.ts\ndist/adapters/analysis/production-analysis-analyst.d.ts.map\ndist/adapters/analysis/production-analysis-analyst.js\ndist/adapters/analysis/production-analysis-analyst.js.map\ndist/adapters/analysis/python-runner.d.ts\ndist/adapters/analysis/python-runner.d.ts.map\ndist/adapters/analysis/python-runner.js\ndist/adapters/analysis/python-runner.js.map\ndist/adapters/analysis/question-analyst.d.ts\ndist/adapters/analysis/question-analyst.d.ts.map\ndist/adapters/analysis/question-analyst.js\ndist/adapters/analysis/question-analyst.js.map\ndist/adapters/analysis/runtime-model-owner.d.ts\ndist/adapters/analysis/runtime-model-owner.d.ts.map\ndist/adapters/analysis/runtime-model-owner.js\ndist/adapters/analysis/runtime-model-owner.js.map\ndist/adapters/analysis/runtime-retained-model-call.d.ts\ndist/adapters/analysis/runtime-retained-model-call.d.ts.map\ndist/adapters/analysis/runtime-retained-model-call.js\ndist/adapters/analysis/runtime-retained-model-call.js.map\ndist/adapters/analysis/trace-analysis-adapter.d.ts\ndist/adapters/analysis/trace-analysis-adapter.d.ts.map\ndist/adapters/analysis/trace-analysis-adapter.js\ndist/adapters/analysis/trace-analysis-adapter.js.map\ndist/adapters/analysis/trace-event-projection.d.ts\ndist/adapters/analysis/trace-event-projection.d.ts.map\ndist/adapters/analysis/trace-event-projection.js\ndist/adapters/analysis/trace-event-projection.js.map\ndist/adapters/analysis/trace-store.d.ts\ndist/adapters/analysis/trace-store.d.ts.map\ndist/adapters/analysis/trace-store.js\ndist/adapters/analysis/trace-store.js.map\ndist/adapters/connections/aws-nitro-root-g1.d.ts\ndist/adapters/connections/aws-nitro-root-g1.d.ts.map\ndist/adapters/connections/aws-nitro-root-g1.js\ndist/adapters/connections/aws-nitro-root-g1.js.map\ndist/adapters/connections/cli-bridge-health.d.ts\ndist/adapters/connections/cli-bridge-health.d.ts.map\ndist/adapters/connections/cli-bridge-health.js\ndist/adapters/connections/cli-bridge-health.js.map\ndist/adapters/connections/cli-bridge-model-route.d.ts\ndist/adapters/connections/cli-bridge-model-route.d.ts.map\ndist/adapters/connections/cli-bridge-model-route.js\ndist/adapters/connections/cli-bridge-model-route.js.map\ndist/adapters/connections/cli-bridge-model-validation.d.ts\ndist/adapters/connections/cli-bridge-model-validation.d.ts.map\ndist/adapters/connections/cli-bridge-model-validation.js\ndist/adapters/connections/cli-bridge-model-validation.js.map\ndist/adapters/connections/nitro-confidential-attestation.d.ts\ndist/adapters/connections/nitro-confidential-attestation.d.ts.map\ndist/adapters/connections/nitro-confidential-attestation.js\ndist/adapters/connections/nitro-confidential-attestation.js.map\ndist/adapters/connections/production-connection-credentials.d.ts\ndist/adapters/connections/production-connection-credentials.d.ts.map\ndist/adapters/connections/production-connection-credentials.js\ndist/adapters/connections/production-connection-credentials.js.map\ndist/adapters/connections/production-connection-endpoints.d.ts\ndist/adapters/connections/production-connection-endpoints.d.ts.map\ndist/adapters/connections/production-connection-endpoints.js\ndist/adapters/connections/production-connection-endpoints.js.map\ndist/adapters/connections/production-connection-health.d.ts\ndist/adapters/connections/production-connection-health.d.ts.map\ndist/adapters/connections/production-connection-health.js\ndist/adapters/connections/production-connection-health.js.map\ndist/adapters/connections/production-connection-providers.d.ts\ndist/adapters/connections/production-connection-providers.d.ts.map\ndist/adapters/connections/production-connection-providers.js\ndist/adapters/connections/production-connection-providers.js.map\ndist/adapters/connections/production-connection-types.d.ts\ndist/adapters/connections/production-connection-types.d.ts.map\ndist/adapters/connections/production-connection-types.js\ndist/adapters/connections/production-connection-types.js.map\ndist/adapters/connections/production-connections.d.ts\ndist/adapters/connections/production-connections.d.ts.map\ndist/adapters/connections/production-connections.js\ndist/adapters/connections/production-connections.js.map\ndist/adapters/connections/tangle-retained-control-lookup.d.ts\ndist/adapters/connections/tangle-retained-control-lookup.d.ts.map\ndist/adapters/connections/tangle-retained-control-lookup.js\ndist/adapters/connections/tangle-retained-control-lookup.js.map\ndist/adapters/credentials/headless-key.d.ts\ndist/adapters/credentials/headless-key.d.ts.map\ndist/adapters/credentials/headless-key.js\ndist/adapters/credentials/headless-key.js.map\ndist/adapters/credentials/headless-store.d.ts\ndist/adapters/credentials/headless-store.d.ts.map\ndist/adapters/credentials/headless-store.js\ndist/adapters/credentials/headless-store.js.map\ndist/adapters/credentials/memory.d.ts\ndist/adapters/credentials/memory.d.ts.map\ndist/adapters/credentials/memory.js\ndist/adapters/credentials/memory.js.map\ndist/adapters/credentials/os.d.ts\ndist/adapters/credentials/os.d.ts.map\ndist/adapters/credentials/os.js\ndist/adapters/credentials/os.js.map\ndist/adapters/persistence/posix-at.d.ts\ndist/adapters/persistence/posix-at.d.ts.map\ndist/adapters/persistence/posix-at.js\ndist/adapters/persistence/posix-at.js.map\ndist/adapters/persistence/safe-file-descriptor.d.ts\ndist/adapters/persistence/safe-file-descriptor.d.ts.map\ndist/adapters/persistence/safe-file-descriptor.js\ndist/adapters/persistence/safe-file-descriptor.js.map\ndist/adapters/persistence/safe-file-io.d.ts\ndist/adapters/persistence/safe-file-io.d.ts.map\ndist/adapters/persistence/safe-file-io.js\ndist/adapters/persistence/safe-file-io.js.map\ndist/adapters/persistence/safe-file.d.ts\ndist/adapters/persistence/safe-file.d.ts.map\ndist/adapters/persistence/safe-file.js\ndist/adapters/persistence/safe-file.js.map\ndist/adapters/runtime/agent-runtime-execution.d.ts\ndist/adapters/runtime/agent-runtime-execution.d.ts.map\ndist/adapters/runtime/agent-runtime-execution.js\ndist/adapters/runtime/agent-runtime-execution.js.map\ndist/adapters/runtime/agent-runtime-version.d.ts\ndist/adapters/runtime/agent-runtime-version.d.ts.map\ndist/adapters/runtime/agent-runtime-version.js\ndist/adapters/runtime/agent-runtime-version.js.map\ndist/adapters/runtime/cli-bridge-retained-execution.d.ts\ndist/adapters/runtime/cli-bridge-retained-execution.d.ts.map\ndist/adapters/runtime/cli-bridge-retained-execution.js\ndist/adapters/runtime/cli-bridge-retained-execution.js.map\ndist/adapters/runtime/cli-bridge-retained-run.d.ts\ndist/adapters/runtime/cli-bridge-retained-run.d.ts.map\ndist/adapters/runtime/cli-bridge-retained-run.js\ndist/adapters/runtime/cli-bridge-retained-run.js.map\ndist/adapters/runtime/execution-observation-source.d.ts\ndist/adapters/runtime/execution-observation-source.d.ts.map\ndist/adapters/runtime/execution-observation-source.js\ndist/adapters/runtime/execution-observation-source.js.map\ndist/adapters/runtime/lazy-execution.d.ts\ndist/adapters/runtime/lazy-execution.d.ts.map\ndist/adapters/runtime/lazy-execution.js\ndist/adapters/runtime/lazy-execution.js.map\ndist/adapters/runtime/mode-routing-execution.d.ts\ndist/adapters/runtime/mode-routing-execution.d.ts.map\ndist/adapters/runtime/mode-routing-execution.js\ndist/adapters/runtime/mode-routing-execution.js.map\ndist/adapters/runtime/native-interactive-run-broker.d.ts\ndist/adapters/runtime/native-interactive-run-broker.d.ts.map\ndist/adapters/runtime/native-interactive-run-broker.js\ndist/adapters/runtime/native-interactive-run-broker.js.map\ndist/adapters/runtime/prepared-execution.d.ts\ndist/adapters/runtime/prepared-execution.d.ts.map\ndist/adapters/runtime/prepared-execution.js\ndist/adapters/runtime/prepared-execution.js.map\ndist/adapters/runtime/production-backend-common.d.ts\ndist/adapters/runtime/production-backend-common.d.ts.map\ndist/adapters/runtime/production-backend-common.js\ndist/adapters/runtime/production-backend-common.js.map\ndist/adapters/runtime/production-backend-resolver.d.ts\ndist/adapters/runtime/production-backend-resolver.d.ts.map\ndist/adapters/runtime/production-backend-resolver.js\ndist/adapters/runtime/production-backend-resolver.js.map\ndist/adapters/runtime/production-cli-bridge-backend.d.ts\ndist/adapters/runtime/production-cli-bridge-backend.d.ts.map\ndist/adapters/runtime/production-cli-bridge-backend.js\ndist/adapters/runtime/production-cli-bridge-backend.js.map\ndist/adapters/runtime/production-tangle-inference-backend.d.ts\ndist/adapters/runtime/production-tangle-inference-backend.d.ts.map\ndist/adapters/runtime/production-tangle-inference-backend.js\ndist/adapters/runtime/production-tangle-inference-backend.js.map\ndist/adapters/runtime/production-tangle-sandbox-backend.d.ts\ndist/adapters/runtime/production-tangle-sandbox-backend.d.ts.map\ndist/adapters/runtime/production-tangle-sandbox-backend.js\ndist/adapters/runtime/production-tangle-sandbox-backend.js.map\ndist/adapters/runtime/retained-execution-contract.d.ts\ndist/adapters/runtime/retained-execution-contract.d.ts.map\ndist/adapters/runtime/retained-execution-contract.js\ndist/adapters/runtime/retained-execution-contract.js.map\ndist/adapters/runtime/retained-execution-projection.d.ts\ndist/adapters/runtime/retained-execution-projection.d.ts.map\ndist/adapters/runtime/retained-execution-projection.js\ndist/adapters/runtime/retained-execution-projection.js.map\ndist/adapters/runtime/retained-execution-state.d.ts\ndist/adapters/runtime/retained-execution-state.d.ts.map\ndist/adapters/runtime/retained-execution-state.js\ndist/adapters/runtime/retained-execution-state.js.map\ndist/adapters/runtime/retained-execution-stream.d.ts\ndist/adapters/runtime/retained-execution-stream.d.ts.map\ndist/adapters/runtime/retained-execution-stream.js\ndist/adapters/runtime/retained-execution-stream.js.map\ndist/adapters/runtime/retained-execution.d.ts\ndist/adapters/runtime/retained-execution.d.ts.map\ndist/adapters/runtime/retained-execution.js\ndist/adapters/runtime/retained-execution.js.map\ndist/adapters/runtime/retained-native-continuation.d.ts\ndist/adapters/runtime/retained-native-continuation.d.ts.map\ndist/adapters/runtime/retained-native-continuation.js\ndist/adapters/runtime/retained-native-continuation.js.map\ndist/adapters/runtime/sandbox-account-observation.d.ts\ndist/adapters/runtime/sandbox-account-observation.d.ts.map\ndist/adapters/runtime/sandbox-account-observation.js\ndist/adapters/runtime/sandbox-account-observation.js.map\ndist/adapters/runtime/sandbox-instance-observation.d.ts\ndist/adapters/runtime/sandbox-instance-observation.d.ts.map\ndist/adapters/runtime/sandbox-instance-observation.js\ndist/adapters/runtime/sandbox-instance-observation.js.map\ndist/adapters/runtime/sandbox-observation-types.d.ts\ndist/adapters/runtime/sandbox-observation-types.d.ts.map\ndist/adapters/runtime/sandbox-observation-types.js\ndist/adapters/runtime/sandbox-observation-types.js.map\ndist/adapters/runtime/sandbox-observation.d.ts\ndist/adapters/runtime/sandbox-observation.d.ts.map\ndist/adapters/runtime/sandbox-observation.js\ndist/adapters/runtime/sandbox-observation.js.map\ndist/adapters/runtime/supervisor-control.d.ts\ndist/adapters/runtime/supervisor-control.d.ts.map\ndist/adapters/runtime/supervisor-control.js\ndist/adapters/runtime/supervisor-control.js.map\ndist/adapters/runtime/supervisor-watch.d.ts\ndist/adapters/runtime/supervisor-watch.d.ts.map\ndist/adapters/runtime/supervisor-watch.js\ndist/adapters/runtime/supervisor-watch.js.map\ndist/adapters/runtime/tangle-retained-execution.d.ts\ndist/adapters/runtime/tangle-retained-execution.d.ts.map\ndist/adapters/runtime/tangle-retained-execution.js\ndist/adapters/runtime/tangle-retained-execution.js.map\ndist/adapters/runtime/tangle-retained-interactive-contract.d.ts\ndist/adapters/runtime/tangle-retained-interactive-contract.d.ts.map\ndist/adapters/runtime/tangle-retained-interactive-contract.js\ndist/adapters/runtime/tangle-retained-interactive-contract.js.map\ndist/adapters/runtime/tangle-retained-interactive-execution.d.ts\ndist/adapters/runtime/tangle-retained-interactive-execution.d.ts.map\ndist/adapters/runtime/tangle-retained-interactive-execution.js\ndist/adapters/runtime/tangle-retained-interactive-execution.js.map\ndist/adapters/runtime/tangle-retained-interactive-projection.d.ts\ndist/adapters/runtime/tangle-retained-interactive-projection.d.ts.map\ndist/adapters/runtime/tangle-retained-interactive-projection.js\ndist/adapters/runtime/tangle-retained-interactive-projection.js.map\ndist/adapters/runtime/tangle-retained-run.d.ts\ndist/adapters/runtime/tangle-retained-run.d.ts.map\ndist/adapters/runtime/tangle-retained-run.js\ndist/adapters/runtime/tangle-retained-run.js.map\ndist/adapters/runtime/tangle-sandbox-retention.d.ts\ndist/adapters/runtime/tangle-sandbox-retention.d.ts.map\ndist/adapters/runtime/tangle-sandbox-retention.js\ndist/adapters/runtime/tangle-sandbox-retention.js.map\ndist/adapters/runtime/unavailable-execution.d.ts\ndist/adapters/runtime/unavailable-execution.d.ts.map\ndist/adapters/runtime/unavailable-execution.js\ndist/adapters/runtime/unavailable-execution.js.map\ndist/adapters/storage/memory-base.d.ts\ndist/adapters/storage/memory-base.d.ts.map\ndist/adapters/storage/memory-base.js\ndist/adapters/storage/memory-base.js.map\ndist/adapters/storage/memory-effects.d.ts\ndist/adapters/storage/memory-effects.d.ts.map\ndist/adapters/storage/memory-effects.js\ndist/adapters/storage/memory-effects.js.map\ndist/adapters/storage/memory-journal.d.ts\ndist/adapters/storage/memory-journal.d.ts.map\ndist/adapters/storage/memory-journal.js\ndist/adapters/storage/memory-journal.js.map\ndist/adapters/storage/memory-maintenance.d.ts\ndist/adapters/storage/memory-maintenance.d.ts.map\ndist/adapters/storage/memory-maintenance.js\ndist/adapters/storage/memory-maintenance.js.map\ndist/adapters/storage/memory-operations.d.ts\ndist/adapters/storage/memory-operations.d.ts.map\ndist/adapters/storage/memory-operations.js\ndist/adapters/storage/memory-operations.js.map\ndist/adapters/storage/memory-retention.d.ts\ndist/adapters/storage/memory-retention.d.ts.map\ndist/adapters/storage/memory-retention.js\ndist/adapters/storage/memory-retention.js.map\ndist/adapters/storage/memory.d.ts\ndist/adapters/storage/memory.d.ts.map\ndist/adapters/storage/memory.js\ndist/adapters/storage/memory.js.map\ndist/adapters/storage/sqlite-base.d.ts\ndist/adapters/storage/sqlite-base.d.ts.map\ndist/adapters/storage/sqlite-base.js\ndist/adapters/storage/sqlite-base.js.map\ndist/adapters/storage/sqlite-bound-open.d.ts\ndist/adapters/storage/sqlite-bound-open.d.ts.map\ndist/adapters/storage/sqlite-bound-open.js\ndist/adapters/storage/sqlite-bound-open.js.map\ndist/adapters/storage/sqlite-content.d.ts\ndist/adapters/storage/sqlite-content.d.ts.map\ndist/adapters/storage/sqlite-content.js\ndist/adapters/storage/sqlite-content.js.map\ndist/adapters/storage/sqlite-crypto.d.ts\ndist/adapters/storage/sqlite-crypto.d.ts.map\ndist/adapters/storage/sqlite-crypto.js\ndist/adapters/storage/sqlite-crypto.js.map\ndist/adapters/storage/sqlite-driver.d.ts\ndist/adapters/storage/sqlite-driver.d.ts.map\ndist/adapters/storage/sqlite-driver.js\ndist/adapters/storage/sqlite-driver.js.map\ndist/adapters/storage/sqlite-effects.d.ts\ndist/adapters/storage/sqlite-effects.d.ts.map\ndist/adapters/storage/sqlite-effects.js\ndist/adapters/storage/sqlite-effects.js.map\ndist/adapters/storage/sqlite-errors.d.ts\ndist/adapters/storage/sqlite-errors.d.ts.map\ndist/adapters/storage/sqlite-errors.js\ndist/adapters/storage/sqlite-errors.js.map\ndist/adapters/storage/sqlite-initialization.d.ts\ndist/adapters/storage/sqlite-initialization.d.ts.map\ndist/adapters/storage/sqlite-initialization.js\ndist/adapters/storage/sqlite-initialization.js.map\ndist/adapters/storage/sqlite-journal.d.ts\ndist/adapters/storage/sqlite-journal.d.ts.map\ndist/adapters/storage/sqlite-journal.js\ndist/adapters/storage/sqlite-journal.js.map\ndist/adapters/storage/sqlite-lifecycle.d.ts\ndist/adapters/storage/sqlite-lifecycle.d.ts.map\ndist/adapters/storage/sqlite-lifecycle.js\ndist/adapters/storage/sqlite-lifecycle.js.map\ndist/adapters/storage/sqlite-maintenance.d.ts\ndist/adapters/storage/sqlite-maintenance.d.ts.map\ndist/adapters/storage/sqlite-maintenance.js\ndist/adapters/storage/sqlite-maintenance.js.map\ndist/adapters/storage/sqlite-operations.d.ts\ndist/adapters/storage/sqlite-operations.d.ts.map\ndist/adapters/storage/sqlite-operations.js\ndist/adapters/storage/sqlite-operations.js.map\ndist/adapters/storage/sqlite-paths.d.ts\ndist/adapters/storage/sqlite-paths.d.ts.map\ndist/adapters/storage/sqlite-paths.js\ndist/adapters/storage/sqlite-paths.js.map\ndist/adapters/storage/sqlite-projection.d.ts\ndist/adapters/storage/sqlite-projection.d.ts.map\ndist/adapters/storage/sqlite-projection.js\ndist/adapters/storage/sqlite-projection.js.map\ndist/adapters/storage/sqlite-queue.d.ts\ndist/adapters/storage/sqlite-queue.d.ts.map\ndist/adapters/storage/sqlite-queue.js\ndist/adapters/storage/sqlite-queue.js.map\ndist/adapters/storage/sqlite-recovery.d.ts\ndist/adapters/storage/sqlite-recovery.d.ts.map\ndist/adapters/storage/sqlite-recovery.js\ndist/adapters/storage/sqlite-recovery.js.map\ndist/adapters/storage/sqlite-redaction.d.ts\ndist/adapters/storage/sqlite-redaction.d.ts.map\ndist/adapters/storage/sqlite-redaction.js\ndist/adapters/storage/sqlite-redaction.js.map\ndist/adapters/storage/sqlite-rows.d.ts\ndist/adapters/storage/sqlite-rows.d.ts.map\ndist/adapters/storage/sqlite-rows.js\ndist/adapters/storage/sqlite-rows.js.map\ndist/adapters/storage/sqlite-schema.d.ts\ndist/adapters/storage/sqlite-schema.d.ts.map\ndist/adapters/storage/sqlite-schema.js\ndist/adapters/storage/sqlite-schema.js.map\ndist/adapters/storage/sqlite-state-snapshot-codec.d.ts\ndist/adapters/storage/sqlite-state-snapshot-codec.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-codec.js\ndist/adapters/storage/sqlite-state-snapshot-codec.js.map\ndist/adapters/storage/sqlite-state-snapshot-keys.d.ts\ndist/adapters/storage/sqlite-state-snapshot-keys.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-keys.js\ndist/adapters/storage/sqlite-state-snapshot-keys.js.map\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.d.ts\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.js\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.js.map\ndist/adapters/storage/sqlite-state-snapshot-read.d.ts\ndist/adapters/storage/sqlite-state-snapshot-read.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-read.js\ndist/adapters/storage/sqlite-state-snapshot-read.js.map\ndist/adapters/storage/sqlite-state-snapshot-transaction.d.ts\ndist/adapters/storage/sqlite-state-snapshot-transaction.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-transaction.js\ndist/adapters/storage/sqlite-state-snapshot-transaction.js.map\ndist/adapters/storage/sqlite-state-snapshot-types.d.ts\ndist/adapters/storage/sqlite-state-snapshot-types.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-types.js\ndist/adapters/storage/sqlite-state-snapshot-types.js.map\ndist/adapters/storage/sqlite-state-snapshot-write.d.ts\ndist/adapters/storage/sqlite-state-snapshot-write.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-write.js\ndist/adapters/storage/sqlite-state-snapshot-write.js.map\ndist/adapters/storage/sqlite-state-snapshots.d.ts\ndist/adapters/storage/sqlite-state-snapshots.d.ts.map\ndist/adapters/storage/sqlite-state-snapshots.js\ndist/adapters/storage/sqlite-state-snapshots.js.map\ndist/adapters/storage/sqlite-types.d.ts\ndist/adapters/storage/sqlite-types.d.ts.map\ndist/adapters/storage/sqlite-types.js\ndist/adapters/storage/sqlite-types.js.map\ndist/adapters/storage/sqlite.d.ts\ndist/adapters/storage/sqlite.d.ts.map\ndist/adapters/storage/sqlite.js\ndist/adapters/storage/sqlite.js.map\ndist/adapters/storage/storage-validation.d.ts\ndist/adapters/storage/storage-validation.d.ts.map\ndist/adapters/storage/storage-validation.js\ndist/adapters/storage/storage-validation.js.map\ndist/adapters/tui/alternate-screen-terminal.d.ts\ndist/adapters/tui/alternate-screen-terminal.d.ts.map\ndist/adapters/tui/alternate-screen-terminal.js\ndist/adapters/tui/alternate-screen-terminal.js.map\ndist/adapters/tui/application-ui-controller.d.ts\ndist/adapters/tui/application-ui-controller.d.ts.map\ndist/adapters/tui/application-ui-controller.js\ndist/adapters/tui/application-ui-controller.js.map\ndist/adapters/tui/native-terminal-transport.d.ts\ndist/adapters/tui/native-terminal-transport.d.ts.map\ndist/adapters/tui/native-terminal-transport.js\ndist/adapters/tui/native-terminal-transport.js.map\ndist/adapters/tui/profile-connection-dispatch.d.ts\ndist/adapters/tui/profile-connection-dispatch.d.ts.map\ndist/adapters/tui/profile-connection-dispatch.js\ndist/adapters/tui/profile-connection-dispatch.js.map\ndist/adapters/tui/ui-automation-command.d.ts\ndist/adapters/tui/ui-automation-command.d.ts.map\ndist/adapters/tui/ui-automation-command.js\ndist/adapters/tui/ui-automation-command.js.map\ndist/adapters/tui/ui-automation-dispatch.d.ts\ndist/adapters/tui/ui-automation-dispatch.d.ts.map\ndist/adapters/tui/ui-automation-dispatch.js\ndist/adapters/tui/ui-automation-dispatch.js.map\ndist/adapters/tui/ui-capabilities.d.ts\ndist/adapters/tui/ui-capabilities.d.ts.map\ndist/adapters/tui/ui-capabilities.js\ndist/adapters/tui/ui-capabilities.js.map\ndist/adapters/tui/ui-command-dispatch.d.ts\ndist/adapters/tui/ui-command-dispatch.d.ts.map\ndist/adapters/tui/ui-command-dispatch.js\ndist/adapters/tui/ui-command-dispatch.js.map\ndist/adapters/tui/ui-conversation-dispatch.d.ts\ndist/adapters/tui/ui-conversation-dispatch.d.ts.map\ndist/adapters/tui/ui-conversation-dispatch.js\ndist/adapters/tui/ui-conversation-dispatch.js.map\ndist/adapters/tui/ui-core-dispatch.d.ts\ndist/adapters/tui/ui-core-dispatch.d.ts.map\ndist/adapters/tui/ui-core-dispatch.js\ndist/adapters/tui/ui-core-dispatch.js.map\ndist/adapters/tui/ui-dispatch-context.d.ts\ndist/adapters/tui/ui-dispatch-context.d.ts.map\ndist/adapters/tui/ui-dispatch-context.js\ndist/adapters/tui/ui-dispatch-context.js.map\ndist/adapters/tui/ui-dispatch-error.d.ts\ndist/adapters/tui/ui-dispatch-error.d.ts.map\ndist/adapters/tui/ui-dispatch-error.js\ndist/adapters/tui/ui-dispatch-error.js.map\ndist/adapters/tui/ui-dispatch.d.ts\ndist/adapters/tui/ui-dispatch.d.ts.map\ndist/adapters/tui/ui-dispatch.js\ndist/adapters/tui/ui-dispatch.js.map\ndist/adapters/tui/ui-entity-details.d.ts\ndist/adapters/tui/ui-entity-details.d.ts.map\ndist/adapters/tui/ui-entity-details.js\ndist/adapters/tui/ui-entity-details.js.map\ndist/adapters/tui/ui-fixtures.d.ts\ndist/adapters/tui/ui-fixtures.d.ts.map\ndist/adapters/tui/ui-fixtures.js\ndist/adapters/tui/ui-fixtures.js.map\ndist/adapters/tui/ui-headless-dispatch.d.ts\ndist/adapters/tui/ui-headless-dispatch.d.ts.map\ndist/adapters/tui/ui-headless-dispatch.js\ndist/adapters/tui/ui-headless-dispatch.js.map\ndist/adapters/tui/ui-intelligence-dispatch.d.ts\ndist/adapters/tui/ui-intelligence-dispatch.d.ts.map\ndist/adapters/tui/ui-intelligence-dispatch.js\ndist/adapters/tui/ui-intelligence-dispatch.js.map\ndist/adapters/tui/ui-intelligence-fixtures.d.ts\ndist/adapters/tui/ui-intelligence-fixtures.d.ts.map\ndist/adapters/tui/ui-intelligence-fixtures.js\ndist/adapters/tui/ui-intelligence-fixtures.js.map\ndist/adapters/tui/ui-intelligence-result-view.d.ts\ndist/adapters/tui/ui-intelligence-result-view.d.ts.map\ndist/adapters/tui/ui-intelligence-result-view.js\ndist/adapters/tui/ui-intelligence-result-view.js.map\ndist/adapters/tui/ui-interaction-receipt.d.ts\ndist/adapters/tui/ui-interaction-receipt.d.ts.map\ndist/adapters/tui/ui-interaction-receipt.js\ndist/adapters/tui/ui-interaction-receipt.js.map\ndist/adapters/tui/ui-projection.d.ts\ndist/adapters/tui/ui-projection.d.ts.map\ndist/adapters/tui/ui-projection.js\ndist/adapters/tui/ui-projection.js.map\ndist/adapters/tui/ui-semantic-state.d.ts\ndist/adapters/tui/ui-semantic-state.d.ts.map\ndist/adapters/tui/ui-semantic-state.js\ndist/adapters/tui/ui-semantic-state.js.map\ndist/adapters/tui/ui-subscriber-delivery.d.ts\ndist/adapters/tui/ui-subscriber-delivery.d.ts.map\ndist/adapters/tui/ui-subscriber-delivery.js\ndist/adapters/tui/ui-subscriber-delivery.js.map\ndist/adapters/tui/ui-view-model.d.ts\ndist/adapters/tui/ui-view-model.d.ts.map\ndist/adapters/tui/ui-view-model.js\ndist/adapters/tui/ui-view-model.js.map\ndist/app/action-host.d.ts\ndist/app/action-host.d.ts.map\ndist/app/action-host.js\ndist/app/action-host.js.map\ndist/app/action-serialization.d.ts\ndist/app/action-serialization.d.ts.map\ndist/app/action-serialization.js\ndist/app/action-serialization.js.map\ndist/app/analysis-comparison-contracts.d.ts\ndist/app/analysis-comparison-contracts.d.ts.map\ndist/app/analysis-comparison-contracts.js\ndist/app/analysis-comparison-contracts.js.map\ndist/app/analysis-comparison-evidence.d.ts\ndist/app/analysis-comparison-evidence.d.ts.map\ndist/app/analysis-comparison-evidence.js\ndist/app/analysis-comparison-evidence.js.map\ndist/app/analysis-comparison-facts.d.ts\ndist/app/analysis-comparison-facts.d.ts.map\ndist/app/analysis-comparison-facts.js\ndist/app/analysis-comparison-facts.js.map\ndist/app/analysis-comparison-graph.d.ts\ndist/app/analysis-comparison-graph.d.ts.map\ndist/app/analysis-comparison-graph.js\ndist/app/analysis-comparison-graph.js.map\ndist/app/analysis-comparison-lifecycle.d.ts\ndist/app/analysis-comparison-lifecycle.d.ts.map\ndist/app/analysis-comparison-lifecycle.js\ndist/app/analysis-comparison-lifecycle.js.map\ndist/app/analysis-comparison-record.d.ts\ndist/app/analysis-comparison-record.d.ts.map\ndist/app/analysis-comparison-record.js\ndist/app/analysis-comparison-record.js.map\ndist/app/analysis-comparison-request.d.ts\ndist/app/analysis-comparison-request.d.ts.map\ndist/app/analysis-comparison-request.js\ndist/app/analysis-comparison-request.js.map\ndist/app/analysis-comparison.d.ts\ndist/app/analysis-comparison.d.ts.map\ndist/app/analysis-comparison.js\ndist/app/analysis-comparison.js.map\ndist/app/analysis-execution-session.d.ts\ndist/app/analysis-execution-session.d.ts.map\ndist/app/analysis-execution-session.js\ndist/app/analysis-execution-session.js.map\ndist/app/analysis-execution-target.d.ts\ndist/app/analysis-execution-target.d.ts.map\ndist/app/analysis-execution-target.js\ndist/app/analysis-execution-target.js.map\ndist/app/analysis-graph-projector.d.ts\ndist/app/analysis-graph-projector.d.ts.map\ndist/app/analysis-graph-projector.js\ndist/app/analysis-graph-projector.js.map\ndist/app/analysis-lifecycle.d.ts\ndist/app/analysis-lifecycle.d.ts.map\ndist/app/analysis-lifecycle.js\ndist/app/analysis-lifecycle.js.map\ndist/app/analysis-model-call-records.d.ts\ndist/app/analysis-model-call-records.d.ts.map\ndist/app/analysis-model-call-records.js\ndist/app/analysis-model-call-records.js.map\ndist/app/analysis-operation.d.ts\ndist/app/analysis-operation.d.ts.map\ndist/app/analysis-operation.js\ndist/app/analysis-operation.js.map\ndist/app/analysis-persistence.d.ts\ndist/app/analysis-persistence.d.ts.map\ndist/app/analysis-persistence.js\ndist/app/analysis-persistence.js.map\ndist/app/analysis-promotion.d.ts\ndist/app/analysis-promotion.d.ts.map\ndist/app/analysis-promotion.js\ndist/app/analysis-promotion.js.map\ndist/app/analysis-request.d.ts\ndist/app/analysis-request.d.ts.map\ndist/app/analysis-request.js\ndist/app/analysis-request.js.map\ndist/app/analysis-result-mapper.d.ts\ndist/app/analysis-result-mapper.d.ts.map\ndist/app/analysis-result-mapper.js\ndist/app/analysis-result-mapper.js.map\ndist/app/analysis-retained-admission.d.ts\ndist/app/analysis-retained-admission.d.ts.map\ndist/app/analysis-retained-admission.js\ndist/app/analysis-retained-admission.js.map\ndist/app/analysis-service.d.ts\ndist/app/analysis-service.d.ts.map\ndist/app/analysis-service.js\ndist/app/analysis-service.js.map\ndist/app/analysis-source.d.ts\ndist/app/analysis-source.d.ts.map\ndist/app/analysis-source.js\ndist/app/analysis-source.js.map\ndist/app/analysis-types.d.ts\ndist/app/analysis-types.d.ts.map\ndist/app/analysis-types.js\ndist/app/analysis-types.js.map\ndist/app/application-guards.d.ts\ndist/app/application-guards.d.ts.map\ndist/app/application-guards.js\ndist/app/application-guards.js.map\ndist/app/application-interaction-actions.d.ts\ndist/app/application-interaction-actions.d.ts.map\ndist/app/application-interaction-actions.js\ndist/app/application-interaction-actions.js.map\ndist/app/application-lifecycle.d.ts\ndist/app/application-lifecycle.d.ts.map\ndist/app/application-lifecycle.js\ndist/app/application-lifecycle.js.map\ndist/app/application-options.d.ts\ndist/app/application-options.d.ts.map\ndist/app/application-options.js\ndist/app/application-options.js.map\ndist/app/application-port-builder.d.ts\ndist/app/application-port-builder.d.ts.map\ndist/app/application-port-builder.js\ndist/app/application-port-builder.js.map\ndist/app/application-port-runtime.d.ts\ndist/app/application-port-runtime.d.ts.map\ndist/app/application-port-runtime.js\ndist/app/application-port-runtime.js.map\ndist/app/application-ports.d.ts\ndist/app/application-ports.d.ts.map\ndist/app/application-ports.js\ndist/app/application-ports.js.map\ndist/app/application-runtime-wiring.d.ts\ndist/app/application-runtime-wiring.d.ts.map\ndist/app/application-runtime-wiring.js\ndist/app/application-runtime-wiring.js.map\ndist/app/application-support.d.ts\ndist/app/application-support.d.ts.map\ndist/app/application-support.js\ndist/app/application-support.js.map\ndist/app/application-transition.d.ts\ndist/app/application-transition.d.ts.map\ndist/app/application-transition.js\ndist/app/application-transition.js.map\ndist/app/application-types.d.ts\ndist/app/application-types.d.ts.map\ndist/app/application-types.js\ndist/app/application-types.js.map\ndist/app/application.d.ts\ndist/app/application.d.ts.map\ndist/app/application.js\ndist/app/application.js.map\ndist/app/automation-actions.d.ts\ndist/app/automation-actions.d.ts.map\ndist/app/automation-actions.js\ndist/app/automation-actions.js.map\ndist/app/automation-matching.d.ts\ndist/app/automation-matching.d.ts.map\ndist/app/automation-matching.js\ndist/app/automation-matching.js.map\ndist/app/automation-rule-audit.d.ts\ndist/app/automation-rule-audit.d.ts.map\ndist/app/automation-rule-audit.js\ndist/app/automation-rule-audit.js.map\ndist/app/automation-rule-persistence.d.ts\ndist/app/automation-rule-persistence.d.ts.map\ndist/app/automation-rule-persistence.js\ndist/app/automation-rule-persistence.js.map\ndist/app/automation-rule-store.d.ts\ndist/app/automation-rule-store.d.ts.map\ndist/app/automation-rule-store.js\ndist/app/automation-rule-store.js.map\ndist/app/automation-rule-types.d.ts\ndist/app/automation-rule-types.d.ts.map\ndist/app/automation-rule-types.js\ndist/app/automation-rule-types.js.map\ndist/app/automation-rule-update.d.ts\ndist/app/automation-rule-update.d.ts.map\ndist/app/automation-rule-update.js\ndist/app/automation-rule-update.js.map\ndist/app/automation-rule-validation.d.ts\ndist/app/automation-rule-validation.d.ts.map\ndist/app/automation-rule-validation.js\ndist/app/automation-rule-validation.js.map\ndist/app/automation-rules.d.ts\ndist/app/automation-rules.d.ts.map\ndist/app/automation-rules.js\ndist/app/automation-rules.js.map\ndist/app/composition-options.d.ts\ndist/app/composition-options.d.ts.map\ndist/app/composition-options.js\ndist/app/composition-options.js.map\ndist/app/composition.d.ts\ndist/app/composition.d.ts.map\ndist/app/composition.js\ndist/app/composition.js.map\ndist/app/configuration-action-transition.d.ts\ndist/app/configuration-action-transition.d.ts.map\ndist/app/configuration-action-transition.js\ndist/app/configuration-action-transition.js.map\ndist/app/configuration-session.d.ts\ndist/app/configuration-session.d.ts.map\ndist/app/configuration-session.js\ndist/app/configuration-session.js.map\ndist/app/connection-action-support.d.ts\ndist/app/connection-action-support.d.ts.map\ndist/app/connection-action-support.js\ndist/app/connection-action-support.js.map\ndist/app/connection-action-types.d.ts\ndist/app/connection-action-types.d.ts.map\ndist/app/connection-action-types.js\ndist/app/connection-action-types.js.map\ndist/app/connection-actions.d.ts\ndist/app/connection-actions.d.ts.map\ndist/app/connection-actions.js\ndist/app/connection-actions.js.map\ndist/app/connection-errors.d.ts\ndist/app/connection-errors.d.ts.map\ndist/app/connection-errors.js\ndist/app/connection-errors.js.map\ndist/app/connection-probe.d.ts\ndist/app/connection-probe.d.ts.map\ndist/app/connection-probe.js\ndist/app/connection-probe.js.map\ndist/app/connection-record-factory.d.ts\ndist/app/connection-record-factory.d.ts.map\ndist/app/connection-record-factory.js\ndist/app/connection-record-factory.js.map\ndist/app/connections.d.ts\ndist/app/connections.d.ts.map\ndist/app/connections.js\ndist/app/connections.js.map\ndist/app/control-effects.d.ts\ndist/app/control-effects.d.ts.map\ndist/app/control-effects.js\ndist/app/control-effects.js.map\ndist/app/conversation-branch-effects.d.ts\ndist/app/conversation-branch-effects.d.ts.map\ndist/app/conversation-branch-effects.js\ndist/app/conversation-branch-effects.js.map\ndist/app/conversation-branches.d.ts\ndist/app/conversation-branches.d.ts.map\ndist/app/conversation-branches.js\ndist/app/conversation-branches.js.map\ndist/app/conversation-composition.d.ts\ndist/app/conversation-composition.d.ts.map\ndist/app/conversation-composition.js\ndist/app/conversation-composition.js.map\ndist/app/conversation-context.d.ts\ndist/app/conversation-context.d.ts.map\ndist/app/conversation-context.js\ndist/app/conversation-context.js.map\ndist/app/conversation-drafts.d.ts\ndist/app/conversation-drafts.d.ts.map\ndist/app/conversation-drafts.js\ndist/app/conversation-drafts.js.map\ndist/app/conversation-exports.d.ts\ndist/app/conversation-exports.d.ts.map\ndist/app/conversation-exports.js\ndist/app/conversation-exports.js.map\ndist/app/conversation-import-analyses.d.ts\ndist/app/conversation-import-analyses.d.ts.map\ndist/app/conversation-import-analyses.js\ndist/app/conversation-import-analyses.js.map\ndist/app/conversation-import-builder.d.ts\ndist/app/conversation-import-builder.d.ts.map\ndist/app/conversation-import-builder.js\ndist/app/conversation-import-builder.js.map\ndist/app/conversation-import-document.d.ts\ndist/app/conversation-import-document.d.ts.map\ndist/app/conversation-import-document.js\ndist/app/conversation-import-document.js.map\ndist/app/conversation-import-graph.d.ts\ndist/app/conversation-import-graph.d.ts.map\ndist/app/conversation-import-graph.js\ndist/app/conversation-import-graph.js.map\ndist/app/conversation-import-messages.d.ts\ndist/app/conversation-import-messages.d.ts.map\ndist/app/conversation-import-messages.js\ndist/app/conversation-import-messages.js.map\ndist/app/conversation-import-runs.d.ts\ndist/app/conversation-import-runs.d.ts.map\ndist/app/conversation-import-runs.js\ndist/app/conversation-import-runs.js.map\ndist/app/conversation-import-validation.d.ts\ndist/app/conversation-import-validation.d.ts.map\ndist/app/conversation-import-validation.js\ndist/app/conversation-import-validation.js.map\ndist/app/conversation-import-values.d.ts\ndist/app/conversation-import-values.d.ts.map\ndist/app/conversation-import-values.js\ndist/app/conversation-import-values.js.map\ndist/app/conversation-imports.d.ts\ndist/app/conversation-imports.d.ts.map\ndist/app/conversation-imports.js\ndist/app/conversation-imports.js.map\ndist/app/conversation-lifecycle.d.ts\ndist/app/conversation-lifecycle.d.ts.map\ndist/app/conversation-lifecycle.js\ndist/app/conversation-lifecycle.js.map\ndist/app/conversation-operation-coordinator.d.ts\ndist/app/conversation-operation-coordinator.d.ts.map\ndist/app/conversation-operation-coordinator.js\ndist/app/conversation-operation-coordinator.js.map\ndist/app/conversation-records.d.ts\ndist/app/conversation-records.d.ts.map\ndist/app/conversation-records.js\ndist/app/conversation-records.js.map\ndist/app/conversation-support.d.ts\ndist/app/conversation-support.d.ts.map\ndist/app/conversation-support.js\ndist/app/conversation-support.js.map\ndist/app/conversation-types.d.ts\ndist/app/conversation-types.d.ts.map\ndist/app/conversation-types.js\ndist/app/conversation-types.js.map\ndist/app/conversation-visibility.d.ts\ndist/app/conversation-visibility.d.ts.map\ndist/app/conversation-visibility.js\ndist/app/conversation-visibility.js.map\ndist/app/conversations.d.ts\ndist/app/conversations.d.ts.map\ndist/app/conversations.js\ndist/app/conversations.js.map\ndist/app/default-profiles.d.ts\ndist/app/default-profiles.d.ts.map\ndist/app/default-profiles.js\ndist/app/default-profiles.js.map\ndist/app/durable-send.d.ts\ndist/app/durable-send.d.ts.map\ndist/app/durable-send.js\ndist/app/durable-send.js.map\ndist/app/effect-coordinator.d.ts\ndist/app/effect-coordinator.d.ts.map\ndist/app/effect-coordinator.js\ndist/app/effect-coordinator.js.map\ndist/app/effect-projection.d.ts\ndist/app/effect-projection.d.ts.map\ndist/app/effect-projection.js\ndist/app/effect-projection.js.map\ndist/app/effective-run-configuration.d.ts\ndist/app/effective-run-configuration.d.ts.map\ndist/app/effective-run-configuration.js\ndist/app/effective-run-configuration.js.map\ndist/app/errors.d.ts\ndist/app/errors.d.ts.map\ndist/app/errors.js\ndist/app/errors.js.map\ndist/app/fail-closed-journal.d.ts\ndist/app/fail-closed-journal.d.ts.map\ndist/app/fail-closed-journal.js\ndist/app/fail-closed-journal.js.map\ndist/app/intelligence-actions.d.ts\ndist/app/intelligence-actions.d.ts.map\ndist/app/intelligence-actions.js\ndist/app/intelligence-actions.js.map\ndist/app/interaction-automation-coordinator.d.ts\ndist/app/interaction-automation-coordinator.d.ts.map\ndist/app/interaction-automation-coordinator.js\ndist/app/interaction-automation-coordinator.js.map\ndist/app/interaction-controller.d.ts\ndist/app/interaction-controller.d.ts.map\ndist/app/interaction-controller.js\ndist/app/interaction-controller.js.map\ndist/app/interaction-effects.d.ts\ndist/app/interaction-effects.d.ts.map\ndist/app/interaction-effects.js\ndist/app/interaction-effects.js.map\ndist/app/interaction-request.d.ts\ndist/app/interaction-request.d.ts.map\ndist/app/interaction-request.js\ndist/app/interaction-request.js.map\ndist/app/interaction-response-replay.d.ts\ndist/app/interaction-response-replay.d.ts.map\ndist/app/interaction-response-replay.js\ndist/app/interaction-response-replay.js.map\ndist/app/interaction-response.d.ts\ndist/app/interaction-response.d.ts.map\ndist/app/interaction-response.js\ndist/app/interaction-response.js.map\ndist/app/journal.d.ts\ndist/app/journal.d.ts.map\ndist/app/journal.js\ndist/app/journal.js.map\ndist/app/legacy-cancel.d.ts\ndist/app/legacy-cancel.d.ts.map\ndist/app/legacy-cancel.js\ndist/app/legacy-cancel.js.map\ndist/app/operation-fingerprint.d.ts\ndist/app/operation-fingerprint.d.ts.map\ndist/app/operation-fingerprint.js\ndist/app/operation-fingerprint.js.map\ndist/app/operation-ledger.d.ts\ndist/app/operation-ledger.d.ts.map\ndist/app/operation-ledger.js\ndist/app/operation-ledger.js.map\ndist/app/production-composition.d.ts\ndist/app/production-composition.d.ts.map\ndist/app/production-composition.js\ndist/app/production-composition.js.map\ndist/app/profile-action-support.d.ts\ndist/app/profile-action-support.d.ts.map\ndist/app/profile-action-support.js\ndist/app/profile-action-support.js.map\ndist/app/profile-actions.d.ts\ndist/app/profile-actions.d.ts.map\ndist/app/profile-actions.js\ndist/app/profile-actions.js.map\ndist/app/profile-draft.d.ts\ndist/app/profile-draft.d.ts.map\ndist/app/profile-draft.js\ndist/app/profile-draft.js.map\ndist/app/profile-model-settings.d.ts\ndist/app/profile-model-settings.d.ts.map\ndist/app/profile-model-settings.js\ndist/app/profile-model-settings.js.map\ndist/app/profile-persistence.d.ts\ndist/app/profile-persistence.d.ts.map\ndist/app/profile-persistence.js\ndist/app/profile-persistence.js.map\ndist/app/profile-save-recovery.d.ts\ndist/app/profile-save-recovery.d.ts.map\ndist/app/profile-save-recovery.js\ndist/app/profile-save-recovery.js.map\ndist/app/profile-selection.d.ts\ndist/app/profile-selection.d.ts.map\ndist/app/profile-selection.js\ndist/app/profile-selection.js.map\ndist/app/profile-snapshots.d.ts\ndist/app/profile-snapshots.d.ts.map\ndist/app/profile-snapshots.js\ndist/app/profile-snapshots.js.map\ndist/app/profile-sources.d.ts\ndist/app/profile-sources.d.ts.map\ndist/app/profile-sources.js\ndist/app/profile-sources.js.map\ndist/app/profile-types.d.ts\ndist/app/profile-types.d.ts.map\ndist/app/profile-types.js\ndist/app/profile-types.js.map\ndist/app/profile-validation.d.ts\ndist/app/profile-validation.d.ts.map\ndist/app/profile-validation.js\ndist/app/profile-validation.js.map\ndist/app/profiles.d.ts\ndist/app/profiles.d.ts.map\ndist/app/profiles.js\ndist/app/profiles.js.map\ndist/app/provider-snapshot.d.ts\ndist/app/provider-snapshot.d.ts.map\ndist/app/provider-snapshot.js\ndist/app/provider-snapshot.js.map\ndist/app/provider-values.d.ts\ndist/app/provider-values.d.ts.map\ndist/app/provider-values.js\ndist/app/provider-values.js.map\ndist/app/run-admission-continuation.d.ts\ndist/app/run-admission-continuation.d.ts.map\ndist/app/run-admission-continuation.js\ndist/app/run-admission-continuation.js.map\ndist/app/run-admission-dispatch.d.ts\ndist/app/run-admission-dispatch.d.ts.map\ndist/app/run-admission-dispatch.js\ndist/app/run-admission-dispatch.js.map\ndist/app/run-admission-receipt.d.ts\ndist/app/run-admission-receipt.d.ts.map\ndist/app/run-admission-receipt.js\ndist/app/run-admission-receipt.js.map\ndist/app/run-admission-request.d.ts\ndist/app/run-admission-request.d.ts.map\ndist/app/run-admission-request.js\ndist/app/run-admission-request.js.map\ndist/app/run-admission-validation.d.ts\ndist/app/run-admission-validation.d.ts.map\ndist/app/run-admission-validation.js\ndist/app/run-admission-validation.js.map\ndist/app/run-admission.d.ts\ndist/app/run-admission.d.ts.map\ndist/app/run-admission.js\ndist/app/run-admission.js.map\ndist/app/run-continuation.d.ts\ndist/app/run-continuation.d.ts.map\ndist/app/run-continuation.js\ndist/app/run-continuation.js.map\ndist/app/run-controls.d.ts\ndist/app/run-controls.d.ts.map\ndist/app/run-controls.js\ndist/app/run-controls.js.map\ndist/app/run-event-mapper.d.ts\ndist/app/run-event-mapper.d.ts.map\ndist/app/run-event-mapper.js\ndist/app/run-event-mapper.js.map\ndist/app/run-execution-snapshot.d.ts\ndist/app/run-execution-snapshot.d.ts.map\ndist/app/run-execution-snapshot.js\ndist/app/run-execution-snapshot.js.map\ndist/app/run-execution.d.ts\ndist/app/run-execution.d.ts.map\ndist/app/run-execution.js\ndist/app/run-execution.js.map\ndist/app/run-ingestion.d.ts\ndist/app/run-ingestion.d.ts.map\ndist/app/run-ingestion.js\ndist/app/run-ingestion.js.map\ndist/app/run-ledger.d.ts\ndist/app/run-ledger.d.ts.map\ndist/app/run-ledger.js\ndist/app/run-ledger.js.map\ndist/app/run-recovery-context.d.ts\ndist/app/run-recovery-context.d.ts.map\ndist/app/run-recovery-context.js\ndist/app/run-recovery-context.js.map\ndist/app/run-replay.d.ts\ndist/app/run-replay.d.ts.map\ndist/app/run-replay.js\ndist/app/run-replay.js.map\ndist/app/run-status.d.ts\ndist/app/run-status.d.ts.map\ndist/app/run-status.js\ndist/app/run-status.js.map\ndist/app/run-stream-sanitizer.d.ts\ndist/app/run-stream-sanitizer.d.ts.map\ndist/app/run-stream-sanitizer.js\ndist/app/run-stream-sanitizer.js.map\ndist/app/runtime-selection.d.ts\ndist/app/runtime-selection.d.ts.map\ndist/app/runtime-selection.js\ndist/app/runtime-selection.js.map\ndist/app/shutdown-controller.d.ts\ndist/app/shutdown-controller.d.ts.map\ndist/app/shutdown-controller.js\ndist/app/shutdown-controller.js.map\ndist/app/storage-journal-support.d.ts\ndist/app/storage-journal-support.d.ts.map\ndist/app/storage-journal-support.js\ndist/app/storage-journal-support.js.map\ndist/app/storage-journal.d.ts\ndist/app/storage-journal.d.ts.map\ndist/app/storage-journal.js\ndist/app/storage-journal.js.map\ndist/app/supervisor-projection.d.ts\ndist/app/supervisor-projection.d.ts.map\ndist/app/supervisor-projection.js\ndist/app/supervisor-projection.js.map\ndist/app/supervisor-service.d.ts\ndist/app/supervisor-service.d.ts.map\ndist/app/supervisor-service.js\ndist/app/supervisor-service.js.map\ndist/app/unavailable-analyst.d.ts\ndist/app/unavailable-analyst.d.ts.map\ndist/app/unavailable-analyst.js\ndist/app/unavailable-analyst.js.map\ndist/bin/args.d.ts\ndist/bin/args.d.ts.map\ndist/bin/args.js\ndist/bin/args.js.map\ndist/bin/braid-runtime.d.ts\ndist/bin/braid-runtime.d.ts.map\ndist/bin/braid-runtime.js\ndist/bin/braid-runtime.js.map\ndist/bin/braid.d.ts\ndist/bin/braid.d.ts.map\ndist/bin/braid.js\ndist/bin/braid.js.map\ndist/bin/fixture-application.d.ts\ndist/bin/fixture-application.d.ts.map\ndist/bin/fixture-application.js\ndist/bin/fixture-application.js.map\ndist/bin/interface-runner.d.ts\ndist/bin/interface-runner.d.ts.map\ndist/bin/interface-runner.js\ndist/bin/interface-runner.js.map\ndist/bin/interface-signal-lifecycle.d.ts\ndist/bin/interface-signal-lifecycle.d.ts.map\ndist/bin/interface-signal-lifecycle.js\ndist/bin/interface-signal-lifecycle.js.map\ndist/bin/interface-state-recorder.d.ts\ndist/bin/interface-state-recorder.d.ts.map\ndist/bin/interface-state-recorder.js\ndist/bin/interface-state-recorder.js.map\ndist/bin/native-interactive-actions.d.ts\ndist/bin/native-interactive-actions.d.ts.map\ndist/bin/native-interactive-actions.js\ndist/bin/native-interactive-actions.js.map\ndist/bin/plain.d.ts\ndist/bin/plain.d.ts.map\ndist/bin/plain.js\ndist/bin/plain.js.map\ndist/bin/production-active-profile.d.ts\ndist/bin/production-active-profile.d.ts.map\ndist/bin/production-active-profile.js\ndist/bin/production-active-profile.js.map\ndist/bin/production-application.d.ts\ndist/bin/production-application.d.ts.map\ndist/bin/production-application.js\ndist/bin/production-application.js.map\ndist/bin/production-bridge-client.d.ts\ndist/bin/production-bridge-client.d.ts.map\ndist/bin/production-bridge-client.js\ndist/bin/production-bridge-client.js.map\ndist/bin/production-bridge-discovery.d.ts\ndist/bin/production-bridge-discovery.d.ts.map\ndist/bin/production-bridge-discovery.js\ndist/bin/production-bridge-discovery.js.map\ndist/bin/production-config-mutation-lock.d.ts\ndist/bin/production-config-mutation-lock.d.ts.map\ndist/bin/production-config-mutation-lock.js\ndist/bin/production-config-mutation-lock.js.map\ndist/bin/production-connection-action-options.d.ts\ndist/bin/production-connection-action-options.d.ts.map\ndist/bin/production-connection-action-options.js\ndist/bin/production-connection-action-options.js.map\ndist/bin/production-connection-actions.d.ts\ndist/bin/production-connection-actions.d.ts.map\ndist/bin/production-connection-actions.js\ndist/bin/production-connection-actions.js.map\ndist/bin/production-connection-catalog.d.ts\ndist/bin/production-connection-catalog.d.ts.map\ndist/bin/production-connection-catalog.js\ndist/bin/production-connection-catalog.js.map\ndist/bin/production-connection-credential-cleanup.d.ts\ndist/bin/production-connection-credential-cleanup.d.ts.map\ndist/bin/production-connection-credential-cleanup.js\ndist/bin/production-connection-credential-cleanup.js.map\ndist/bin/production-connection-credential-removal-record.d.ts\ndist/bin/production-connection-credential-removal-record.d.ts.map\ndist/bin/production-connection-credential-removal-record.js\ndist/bin/production-connection-credential-removal-record.js.map\ndist/bin/production-connection-removal.d.ts\ndist/bin/production-connection-removal.d.ts.map\ndist/bin/production-connection-removal.js\ndist/bin/production-connection-removal.js.map\ndist/bin/production-connection-replay.d.ts\ndist/bin/production-connection-replay.d.ts.map\ndist/bin/production-connection-replay.js\ndist/bin/production-connection-replay.js.map\ndist/bin/production-credential-context.d.ts\ndist/bin/production-credential-context.d.ts.map\ndist/bin/production-credential-context.js\ndist/bin/production-credential-context.js.map\ndist/bin/production-credential-reference.d.ts\ndist/bin/production-credential-reference.d.ts.map\ndist/bin/production-credential-reference.js\ndist/bin/production-credential-reference.js.map\ndist/bin/production-key-path.d.ts\ndist/bin/production-key-path.d.ts.map\ndist/bin/production-key-path.js\ndist/bin/production-key-path.js.map\ndist/bin/production-profile-projection.d.ts\ndist/bin/production-profile-projection.d.ts.map\ndist/bin/production-profile-projection.js\ndist/bin/production-profile-projection.js.map\ndist/bin/production-setup-credentials.d.ts\ndist/bin/production-setup-credentials.d.ts.map\ndist/bin/production-setup-credentials.js\ndist/bin/production-setup-credentials.js.map\ndist/bin/production-setup-discovery.d.ts\ndist/bin/production-setup-discovery.d.ts.map\ndist/bin/production-setup-discovery.js\ndist/bin/production-setup-discovery.js.map\ndist/bin/production-setup-persistence.d.ts\ndist/bin/production-setup-persistence.d.ts.map\ndist/bin/production-setup-persistence.js\ndist/bin/production-setup-persistence.js.map\ndist/bin/production-setup-transition.d.ts\ndist/bin/production-setup-transition.d.ts.map\ndist/bin/production-setup-transition.js\ndist/bin/production-setup-transition.js.map\ndist/bin/production-setup-types.d.ts\ndist/bin/production-setup-types.d.ts.map\ndist/bin/production-setup-types.js\ndist/bin/production-setup-types.js.map\ndist/bin/production-setup-validation.d.ts\ndist/bin/production-setup-validation.d.ts.map\ndist/bin/production-setup-validation.js\ndist/bin/production-setup-validation.js.map\ndist/bin/production-setup.d.ts\ndist/bin/production-setup.d.ts.map\ndist/bin/production-setup.js\ndist/bin/production-setup.js.map\ndist/bin/production-startup.d.ts\ndist/bin/production-startup.d.ts.map\ndist/bin/production-startup.js\ndist/bin/production-startup.js.map\ndist/bin/runtime-startup-options.d.ts\ndist/bin/runtime-startup-options.d.ts.map\ndist/bin/runtime-startup-options.js\ndist/bin/runtime-startup-options.js.map\ndist/bin/state-path.d.ts\ndist/bin/state-path.d.ts.map\ndist/bin/state-path.js\ndist/bin/state-path.js.map\ndist/domain/analysis-model-call.d.ts\ndist/domain/analysis-model-call.d.ts.map\ndist/domain/analysis-model-call.js\ndist/domain/analysis-model-call.js.map\ndist/domain/bounded-structured.d.ts\ndist/domain/bounded-structured.d.ts.map\ndist/domain/bounded-structured.js\ndist/domain/bounded-structured.js.map\ndist/domain/canonical-json.d.ts\ndist/domain/canonical-json.d.ts.map\ndist/domain/canonical-json.js\ndist/domain/canonical-json.js.map\ndist/domain/canonical.d.ts\ndist/domain/canonical.d.ts.map\ndist/domain/canonical.js\ndist/domain/canonical.js.map\ndist/domain/code-unit-order.d.ts\ndist/domain/code-unit-order.d.ts.map\ndist/domain/code-unit-order.js\ndist/domain/code-unit-order.js.map\ndist/domain/connection-removal.d.ts\ndist/domain/connection-removal.d.ts.map\ndist/domain/connection-removal.js\ndist/domain/connection-removal.js.map\ndist/domain/content-budget.d.ts\ndist/domain/content-budget.d.ts.map\ndist/domain/content-budget.js\ndist/domain/content-budget.js.map\ndist/domain/entities-base.d.ts\ndist/domain/entities-base.d.ts.map\ndist/domain/entities-base.js\ndist/domain/entities-base.js.map\ndist/domain/entities-core.d.ts\ndist/domain/entities-core.d.ts.map\ndist/domain/entities-core.js\ndist/domain/entities-core.js.map\ndist/domain/entities-graph.d.ts\ndist/domain/entities-graph.d.ts.map\ndist/domain/entities-graph.js\ndist/domain/entities-graph.js.map\ndist/domain/entities-interactions.d.ts\ndist/domain/entities-interactions.d.ts.map\ndist/domain/entities-interactions.js\ndist/domain/entities-interactions.js.map\ndist/domain/entities-messages.d.ts\ndist/domain/entities-messages.d.ts.map\ndist/domain/entities-messages.js\ndist/domain/entities-messages.js.map\ndist/domain/entities-runtime.d.ts\ndist/domain/entities-runtime.d.ts.map\ndist/domain/entities-runtime.js\ndist/domain/entities-runtime.js.map\ndist/domain/entities.d.ts\ndist/domain/entities.d.ts.map\ndist/domain/entities.js\ndist/domain/entities.js.map\ndist/domain/events-legacy.d.ts\ndist/domain/events-legacy.d.ts.map\ndist/domain/events-legacy.js\ndist/domain/events-legacy.js.map\ndist/domain/events.d.ts\ndist/domain/events.d.ts.map\ndist/domain/events.js\ndist/domain/events.js.map\ndist/domain/execution-observation.d.ts\ndist/domain/execution-observation.d.ts.map\ndist/domain/execution-observation.js\ndist/domain/execution-observation.js.map\ndist/domain/graph-records.d.ts\ndist/domain/graph-records.d.ts.map\ndist/domain/graph-records.js\ndist/domain/graph-records.js.map\ndist/domain/ids-core.d.ts\ndist/domain/ids-core.d.ts.map\ndist/domain/ids-core.js\ndist/domain/ids-core.js.map\ndist/domain/ids-types.d.ts\ndist/domain/ids-types.d.ts.map\ndist/domain/ids-types.js\ndist/domain/ids-types.js.map\ndist/domain/ids-values.d.ts\ndist/domain/ids-values.d.ts.map\ndist/domain/ids-values.js\ndist/domain/ids-values.js.map\ndist/domain/ids.d.ts\ndist/domain/ids.d.ts.map\ndist/domain/ids.js\ndist/domain/ids.js.map\ndist/domain/interaction-timeout.d.ts\ndist/domain/interaction-timeout.d.ts.map\ndist/domain/interaction-timeout.js\ndist/domain/interaction-timeout.js.map\ndist/domain/invariants-base.d.ts\ndist/domain/invariants-base.d.ts.map\ndist/domain/invariants-base.js\ndist/domain/invariants-base.js.map\ndist/domain/invariants-conversation.d.ts\ndist/domain/invariants-conversation.d.ts.map\ndist/domain/invariants-conversation.js\ndist/domain/invariants-conversation.js.map\ndist/domain/invariants-profile.d.ts\ndist/domain/invariants-profile.d.ts.map\ndist/domain/invariants-profile.js\ndist/domain/invariants-profile.js.map\ndist/domain/invariants-relations.d.ts\ndist/domain/invariants-relations.d.ts.map\ndist/domain/invariants-relations.js\ndist/domain/invariants-relations.js.map\ndist/domain/invariants-retained-admission.d.ts\ndist/domain/invariants-retained-admission.d.ts.map\ndist/domain/invariants-retained-admission.js\ndist/domain/invariants-retained-admission.js.map\ndist/domain/invariants-run.d.ts\ndist/domain/invariants-run.d.ts.map\ndist/domain/invariants-run.js\ndist/domain/invariants-run.js.map\ndist/domain/invariants-runtime.d.ts\ndist/domain/invariants-runtime.d.ts.map\ndist/domain/invariants-runtime.js\ndist/domain/invariants-runtime.js.map\ndist/domain/invariants-state.d.ts\ndist/domain/invariants-state.d.ts.map\ndist/domain/invariants-state.js\ndist/domain/invariants-state.js.map\ndist/domain/invariants.d.ts\ndist/domain/invariants.d.ts.map\ndist/domain/invariants.js\ndist/domain/invariants.js.map\ndist/domain/legacy-interaction-snapshot.d.ts\ndist/domain/legacy-interaction-snapshot.d.ts.map\ndist/domain/legacy-interaction-snapshot.js\ndist/domain/legacy-interaction-snapshot.js.map\ndist/domain/materialization-receipt.d.ts\ndist/domain/materialization-receipt.d.ts.map\ndist/domain/materialization-receipt.js\ndist/domain/materialization-receipt.js.map\ndist/domain/materialized-state-snapshot.d.ts\ndist/domain/materialized-state-snapshot.d.ts.map\ndist/domain/materialized-state-snapshot.js\ndist/domain/materialized-state-snapshot.js.map\ndist/domain/materialized-state.d.ts\ndist/domain/materialized-state.d.ts.map\ndist/domain/materialized-state.js\ndist/domain/materialized-state.js.map\ndist/domain/projection-checksum.d.ts\ndist/domain/projection-checksum.d.ts.map\ndist/domain/projection-checksum.js\ndist/domain/projection-checksum.js.map\ndist/domain/provider-values.d.ts\ndist/domain/provider-values.d.ts.map\ndist/domain/provider-values.js\ndist/domain/provider-values.js.map\ndist/domain/public-metadata.d.ts\ndist/domain/public-metadata.d.ts.map\ndist/domain/public-metadata.js\ndist/domain/public-metadata.js.map\ndist/domain/receipts.d.ts\ndist/domain/receipts.d.ts.map\ndist/domain/receipts.js\ndist/domain/receipts.js.map\ndist/domain/redaction.d.ts\ndist/domain/redaction.d.ts.map\ndist/domain/redaction.js\ndist/domain/redaction.js.map\ndist/domain/reducer-content.d.ts\ndist/domain/reducer-content.d.ts.map\ndist/domain/reducer-content.js\ndist/domain/reducer-content.js.map\ndist/domain/reducer-conversation-events.d.ts\ndist/domain/reducer-conversation-events.d.ts.map\ndist/domain/reducer-conversation-events.js\ndist/domain/reducer-conversation-events.js.map\ndist/domain/reducer-domain-events.d.ts\ndist/domain/reducer-domain-events.d.ts.map\ndist/domain/reducer-domain-events.js\ndist/domain/reducer-domain-events.js.map\ndist/domain/reducer-execution-observation.d.ts\ndist/domain/reducer-execution-observation.d.ts.map\ndist/domain/reducer-execution-observation.js\ndist/domain/reducer-execution-observation.js.map\ndist/domain/reducer-helpers.d.ts\ndist/domain/reducer-helpers.d.ts.map\ndist/domain/reducer-helpers.js\ndist/domain/reducer-helpers.js.map\ndist/domain/reducer-interactions.d.ts\ndist/domain/reducer-interactions.d.ts.map\ndist/domain/reducer-interactions.js\ndist/domain/reducer-interactions.js.map\ndist/domain/reducer-legacy.d.ts\ndist/domain/reducer-legacy.d.ts.map\ndist/domain/reducer-legacy.js\ndist/domain/reducer-legacy.js.map\ndist/domain/reducer-lifecycle.d.ts\ndist/domain/reducer-lifecycle.d.ts.map\ndist/domain/reducer-lifecycle.js\ndist/domain/reducer-lifecycle.js.map\ndist/domain/reducer-replay.d.ts\ndist/domain/reducer-replay.d.ts.map\ndist/domain/reducer-replay.js\ndist/domain/reducer-replay.js.map\ndist/domain/reducer-retained-admission.d.ts\ndist/domain/reducer-retained-admission.d.ts.map\ndist/domain/reducer-retained-admission.js\ndist/domain/reducer-retained-admission.js.map\ndist/domain/reducer-run-graph.d.ts\ndist/domain/reducer-run-graph.d.ts.map\ndist/domain/reducer-run-graph.js\ndist/domain/reducer-run-graph.js.map\ndist/domain/reducer-runtime.d.ts\ndist/domain/reducer-runtime.d.ts.map\ndist/domain/reducer-runtime.js\ndist/domain/reducer-runtime.js.map\ndist/domain/reducer-support.d.ts\ndist/domain/reducer-support.d.ts.map\ndist/domain/reducer-support.js\ndist/domain/reducer-support.js.map\ndist/domain/reducer.d.ts\ndist/domain/reducer.d.ts.map\ndist/domain/reducer.js\ndist/domain/reducer.js.map\ndist/domain/run-contracts.d.ts\ndist/domain/run-contracts.d.ts.map\ndist/domain/run-contracts.js\ndist/domain/run-contracts.js.map\ndist/domain/run-interactions.d.ts\ndist/domain/run-interactions.d.ts.map\ndist/domain/run-interactions.js\ndist/domain/run-interactions.js.map\ndist/domain/run-usage.d.ts\ndist/domain/run-usage.d.ts.map\ndist/domain/run-usage.js\ndist/domain/run-usage.js.map\ndist/domain/runtime-diagnostics.d.ts\ndist/domain/runtime-diagnostics.d.ts.map\ndist/domain/runtime-diagnostics.js\ndist/domain/runtime-diagnostics.js.map\ndist/domain/runtime-events.d.ts\ndist/domain/runtime-events.d.ts.map\ndist/domain/runtime-events.js\ndist/domain/runtime-events.js.map\ndist/domain/runtime-projection.d.ts\ndist/domain/runtime-projection.d.ts.map\ndist/domain/runtime-projection.js\ndist/domain/runtime-projection.js.map\ndist/domain/secret-sanitizer.d.ts\ndist/domain/secret-sanitizer.d.ts.map\ndist/domain/secret-sanitizer.js\ndist/domain/secret-sanitizer.js.map\ndist/domain/state.d.ts\ndist/domain/state.d.ts.map\ndist/domain/state.js\ndist/domain/state.js.map\ndist/domain/terminal-sanitizer.d.ts\ndist/domain/terminal-sanitizer.d.ts.map\ndist/domain/terminal-sanitizer.js\ndist/domain/terminal-sanitizer.js.map\ndist/domain/text.d.ts\ndist/domain/text.d.ts.map\ndist/domain/text.js\ndist/domain/text.js.map\ndist/eval/calibration.d.ts\ndist/eval/calibration.d.ts.map\ndist/eval/calibration.js\ndist/eval/calibration.js.map\ndist/eval/campaigns.d.ts\ndist/eval/campaigns.d.ts.map\ndist/eval/campaigns.js\ndist/eval/campaigns.js.map\ndist/eval/cases.d.ts\ndist/eval/cases.d.ts.map\ndist/eval/cases.js\ndist/eval/cases.js.map\ndist/eval/execution.d.ts\ndist/eval/execution.d.ts.map\ndist/eval/execution.js\ndist/eval/execution.js.map\ndist/eval/fixtures.d.ts\ndist/eval/fixtures.d.ts.map\ndist/eval/fixtures.js\ndist/eval/fixtures.js.map\ndist/eval/product-path.d.ts\ndist/eval/product-path.d.ts.map\ndist/eval/product-path.js\ndist/eval/product-path.js.map\ndist/eval/record-builder.d.ts\ndist/eval/record-builder.d.ts.map\ndist/eval/record-builder.js\ndist/eval/record-builder.js.map\ndist/eval/records.d.ts\ndist/eval/records.d.ts.map\ndist/eval/records.js\ndist/eval/records.js.map\ndist/eval/release-decision.d.ts\ndist/eval/release-decision.d.ts.map\ndist/eval/release-decision.js\ndist/eval/release-decision.js.map\ndist/eval/release-markers.d.ts\ndist/eval/release-markers.d.ts.map\ndist/eval/release-markers.js\ndist/eval/release-markers.js.map\ndist/eval/runner.d.ts\ndist/eval/runner.d.ts.map\ndist/eval/runner.js\ndist/eval/runner.js.map\ndist/eval/types.d.ts\ndist/eval/types.d.ts.map\ndist/eval/types.js\ndist/eval/types.js.map\ndist/index.d.ts\ndist/index.d.ts.map\ndist/index.js\ndist/index.js.map\ndist/installed-package-version.d.ts\ndist/installed-package-version.d.ts.map\ndist/installed-package-version.js\ndist/installed-package-version.js.map\ndist/ports/clock.d.ts\ndist/ports/clock.d.ts.map\ndist/ports/clock.js\ndist/ports/clock.js.map\ndist/ports/connection-lifecycle.d.ts\ndist/ports/connection-lifecycle.d.ts.map\ndist/ports/connection-lifecycle.js\ndist/ports/connection-lifecycle.js.map\ndist/ports/credentials.d.ts\ndist/ports/credentials.d.ts.map\ndist/ports/credentials.js\ndist/ports/credentials.js.map\ndist/ports/effect-storage.d.ts\ndist/ports/effect-storage.d.ts.map\ndist/ports/effect-storage.js\ndist/ports/effect-storage.js.map\ndist/ports/execution.d.ts\ndist/ports/execution.d.ts.map\ndist/ports/execution.js\ndist/ports/execution.js.map\ndist/ports/ids.d.ts\ndist/ports/ids.d.ts.map\ndist/ports/ids.js\ndist/ports/ids.js.map\ndist/ports/native-interactive-execution.d.ts\ndist/ports/native-interactive-execution.d.ts.map\ndist/ports/native-interactive-execution.js\ndist/ports/native-interactive-execution.js.map\ndist/ports/native-terminal-transport.d.ts\ndist/ports/native-terminal-transport.d.ts.map\ndist/ports/native-terminal-transport.js\ndist/ports/native-terminal-transport.js.map\ndist/ports/storage.d.ts\ndist/ports/storage.d.ts.map\ndist/ports/storage.js\ndist/ports/storage.js.map\ndist/startup/chunks/analysis-comparison-facts-4HBRMPC5.js\ndist/startup/chunks/analysis-comparison-facts-4HBRMPC5.js.map\ndist/startup/chunks/analysis-comparison-record-VMUVZPUV.js\ndist/startup/chunks/analysis-comparison-record-VMUVZPUV.js.map\ndist/startup/chunks/chunk-23EX3F5F.js\ndist/startup/chunks/chunk-23EX3F5F.js.map\ndist/startup/chunks/chunk-2B6P3EZQ.js\ndist/startup/chunks/chunk-2B6P3EZQ.js.map\ndist/startup/chunks/chunk-3SLVNOQZ.js\ndist/startup/chunks/chunk-3SLVNOQZ.js.map\ndist/startup/chunks/chunk-4GTWJJDM.js\ndist/startup/chunks/chunk-4GTWJJDM.js.map\ndist/startup/chunks/chunk-5LULVGCK.js\ndist/startup/chunks/chunk-5LULVGCK.js.map\ndist/startup/chunks/chunk-5PAWXR2Q.js\ndist/startup/chunks/chunk-5PAWXR2Q.js.map\ndist/startup/chunks/chunk-67SGXJUO.js\ndist/startup/chunks/chunk-67SGXJUO.js.map\ndist/startup/chunks/chunk-6G7QKB6J.js\ndist/startup/chunks/chunk-6G7QKB6J.js.map\ndist/startup/chunks/chunk-ACDTVSAU.js\ndist/startup/chunks/chunk-ACDTVSAU.js.map\ndist/startup/chunks/chunk-AUQCJYW5.js\ndist/startup/chunks/chunk-AUQCJYW5.js.map\ndist/startup/chunks/chunk-CS5FUFHS.js\ndist/startup/chunks/chunk-CS5FUFHS.js.map\ndist/startup/chunks/chunk-D3IM3CS6.js\ndist/startup/chunks/chunk-D3IM3CS6.js.map\ndist/startup/chunks/chunk-DLR6FLQV.js\ndist/startup/chunks/chunk-DLR6FLQV.js.map\ndist/startup/chunks/chunk-EG7UPV4Q.js\ndist/startup/chunks/chunk-EG7UPV4Q.js.map\ndist/startup/chunks/chunk-EMKXHR2V.js\ndist/startup/chunks/chunk-EMKXHR2V.js.map\ndist/startup/chunks/chunk-EMP3DK5W.js\ndist/startup/chunks/chunk-EMP3DK5W.js.map\ndist/startup/chunks/chunk-EZFTDPNQ.js\ndist/startup/chunks/chunk-EZFTDPNQ.js.map\ndist/startup/chunks/chunk-H6G73VXZ.js\ndist/startup/chunks/chunk-H6G73VXZ.js.map\ndist/startup/chunks/chunk-HLJ57SGD.js\ndist/startup/chunks/chunk-HLJ57SGD.js.map\ndist/startup/chunks/chunk-HLP7TC7Z.js\ndist/startup/chunks/chunk-HLP7TC7Z.js.map\ndist/startup/chunks/chunk-IRPDBFFT.js\ndist/startup/chunks/chunk-IRPDBFFT.js.map\ndist/startup/chunks/chunk-JAKKUJKI.js\ndist/startup/chunks/chunk-JAKKUJKI.js.map\ndist/startup/chunks/chunk-L2HDP2QD.js\ndist/startup/chunks/chunk-L2HDP2QD.js.map\ndist/startup/chunks/chunk-PAPTIOCL.js\ndist/startup/chunks/chunk-PAPTIOCL.js.map\ndist/startup/chunks/chunk-PXRVFPRL.js\ndist/startup/chunks/chunk-PXRVFPRL.js.map\ndist/startup/chunks/chunk-QSPEMKTL.js\ndist/startup/chunks/chunk-QSPEMKTL.js.map\ndist/startup/chunks/chunk-SZE3RHE6.js\ndist/startup/chunks/chunk-SZE3RHE6.js.map\ndist/startup/chunks/chunk-TYQ67ZUK.js\ndist/startup/chunks/chunk-TYQ67ZUK.js.map\ndist/startup/chunks/chunk-UDYGU3OR.js\ndist/startup/chunks/chunk-UDYGU3OR.js.map\ndist/startup/chunks/chunk-UTHORCP6.js\ndist/startup/chunks/chunk-UTHORCP6.js.map\ndist/startup/chunks/chunk-V7LWVMBP.js\ndist/startup/chunks/chunk-V7LWVMBP.js.map\ndist/startup/chunks/chunk-V7ZXNCA7.js\ndist/startup/chunks/chunk-V7ZXNCA7.js.map\ndist/startup/chunks/chunk-VCOQDTVF.js\ndist/startup/chunks/chunk-VCOQDTVF.js.map\ndist/startup/chunks/chunk-VRWZ5M2N.js\ndist/startup/chunks/chunk-VRWZ5M2N.js.map\ndist/startup/chunks/chunk-VTNLVERY.js\ndist/startup/chunks/chunk-VTNLVERY.js.map\ndist/startup/chunks/chunk-XTBGNV4V.js\ndist/startup/chunks/chunk-XTBGNV4V.js.map\ndist/startup/chunks/chunk-Z7OGIFF2.js\ndist/startup/chunks/chunk-Z7OGIFF2.js.map\ndist/startup/chunks/configuration-wizard-DGU4QOC6.js\ndist/startup/chunks/configuration-wizard-DGU4QOC6.js.map\ndist/startup/chunks/production-composition-5DSH2KDK.js\ndist/startup/chunks/production-composition-5DSH2KDK.js.map\ndist/startup/chunks/production-connection-providers-UFLPUSBW.js\ndist/startup/chunks/production-connection-providers-UFLPUSBW.js.map\ndist/startup/chunks/production-connections-CMBTBCVI.js\ndist/startup/chunks/production-connections-CMBTBCVI.js.map\ndist/startup/chunks/profile-connection-dispatch-QQH6FNGB.js\ndist/startup/chunks/profile-connection-dispatch-QQH6FNGB.js.map\ndist/startup/chunks/supervisor-control-F4IMJYTH.js\ndist/startup/chunks/supervisor-control-F4IMJYTH.js.map\ndist/startup/chunks/supervisor-watch-X6TXO6GN.js\ndist/startup/chunks/supervisor-watch-X6TXO6GN.js.map\ndist/startup/chunks/trace-store-ZBAU3RS3.js\ndist/startup/chunks/trace-store-ZBAU3RS3.js.map\ndist/startup/chunks/ui-dispatch-OIMRFHPQ.js\ndist/startup/chunks/ui-dispatch-OIMRFHPQ.js.map\ndist/startup/durable-runtime.d.ts\ndist/startup/durable-runtime.d.ts.map\ndist/startup/durable-runtime.js\ndist/startup/durable-runtime.js.map\ndist/startup/preview-runtime.d.ts\ndist/startup/preview-runtime.d.ts.map\ndist/startup/preview-runtime.js\ndist/startup/preview-runtime.js.map\ndist/startup/terminal-runtime.d.ts\ndist/startup/terminal-runtime.d.ts.map\ndist/startup/terminal-runtime.js\ndist/startup/terminal-runtime.js.map\ndist/startup/terminal-signal-latch.d.ts\ndist/startup/terminal-signal-latch.d.ts.map\ndist/startup/terminal-signal-latch.js\ndist/startup/terminal-signal-latch.js.map\ndist/testing/deterministic-backend.d.ts\ndist/testing/deterministic-backend.d.ts.map\ndist/testing/deterministic-backend.js\ndist/testing/deterministic-backend.js.map\ndist/testing/product-demo-fixture.d.ts\ndist/testing/product-demo-fixture.d.ts.map\ndist/testing/product-demo-fixture.js\ndist/testing/product-demo-fixture.js.map\ndist/testing/runtime-contract-fixtures.d.ts\ndist/testing/runtime-contract-fixtures.d.ts.map\ndist/testing/runtime-contract-fixtures.js\ndist/testing/runtime-contract-fixtures.js.map\ndist/testing/supervision-fixture.d.ts\ndist/testing/supervision-fixture.d.ts.map\ndist/testing/supervision-fixture.js\ndist/testing/supervision-fixture.js.map\ndist/testing/supervision-ui-fixture.d.ts\ndist/testing/supervision-ui-fixture.d.ts.map\ndist/testing/supervision-ui-fixture.js\ndist/testing/supervision-ui-fixture.js.map\ndist/version.d.ts\ndist/version.d.ts.map\ndist/version.js\ndist/version.js.map\ndist/views/headless/bounded-output.d.ts\ndist/views/headless/bounded-output.d.ts.map\ndist/views/headless/bounded-output.js\ndist/views/headless/bounded-output.js.map\ndist/views/headless/protocol-limits.d.ts\ndist/views/headless/protocol-limits.d.ts.map\ndist/views/headless/protocol-limits.js\ndist/views/headless/protocol-limits.js.map\ndist/views/headless/protocol.d.ts\ndist/views/headless/protocol.d.ts.map\ndist/views/headless/protocol.js\ndist/views/headless/protocol.js.map\ndist/views/headless/rpc-automation-commands.d.ts\ndist/views/headless/rpc-automation-commands.d.ts.map\ndist/views/headless/rpc-automation-commands.js\ndist/views/headless/rpc-automation-commands.js.map\ndist/views/headless/rpc-errors.d.ts\ndist/views/headless/rpc-errors.d.ts.map\ndist/views/headless/rpc-errors.js\ndist/views/headless/rpc-errors.js.map\ndist/views/headless/rpc-interaction-commands.d.ts\ndist/views/headless/rpc-interaction-commands.d.ts.map\ndist/views/headless/rpc-interaction-commands.js\ndist/views/headless/rpc-interaction-commands.js.map\ndist/views/headless/rpc-parser.d.ts\ndist/views/headless/rpc-parser.d.ts.map\ndist/views/headless/rpc-parser.js\ndist/views/headless/rpc-parser.js.map\ndist/views/headless/rpc-types.d.ts\ndist/views/headless/rpc-types.d.ts.map\ndist/views/headless/rpc-types.js\ndist/views/headless/rpc-types.js.map\ndist/views/headless/rpc.d.ts\ndist/views/headless/rpc.d.ts.map\ndist/views/headless/rpc.js\ndist/views/headless/rpc.js.map\ndist/views/shared/analysis-model-call-presentation.d.ts\ndist/views/shared/analysis-model-call-presentation.d.ts.map\ndist/views/shared/analysis-model-call-presentation.js\ndist/views/shared/analysis-model-call-presentation.js.map\ndist/views/shared/analysis-presentation.d.ts\ndist/views/shared/analysis-presentation.d.ts.map\ndist/views/shared/analysis-presentation.js\ndist/views/shared/analysis-presentation.js.map\ndist/views/shared/appearance.d.ts\ndist/views/shared/appearance.d.ts.map\ndist/views/shared/appearance.js\ndist/views/shared/appearance.js.map\ndist/views/shared/canonical.d.ts\ndist/views/shared/canonical.d.ts.map\ndist/views/shared/canonical.js\ndist/views/shared/canonical.js.map\ndist/views/shared/command-registry.d.ts\ndist/views/shared/command-registry.d.ts.map\ndist/views/shared/command-registry.js\ndist/views/shared/command-registry.js.map\ndist/views/shared/command-table.d.ts\ndist/views/shared/command-table.d.ts.map\ndist/views/shared/command-table.js\ndist/views/shared/command-table.js.map\ndist/views/shared/comparison-presentation.d.ts\ndist/views/shared/comparison-presentation.d.ts.map\ndist/views/shared/comparison-presentation.js\ndist/views/shared/comparison-presentation.js.map\ndist/views/shared/connection-lifecycle.d.ts\ndist/views/shared/connection-lifecycle.d.ts.map\ndist/views/shared/connection-lifecycle.js\ndist/views/shared/connection-lifecycle.js.map\ndist/views/shared/duration.d.ts\ndist/views/shared/duration.d.ts.map\ndist/views/shared/duration.js\ndist/views/shared/duration.js.map\ndist/views/shared/environment-presentation.d.ts\ndist/views/shared/environment-presentation.d.ts.map\ndist/views/shared/environment-presentation.js\ndist/views/shared/environment-presentation.js.map\ndist/views/shared/headless-commands.d.ts\ndist/views/shared/headless-commands.d.ts.map\ndist/views/shared/headless-commands.js\ndist/views/shared/headless-commands.js.map\ndist/views/shared/intents.d.ts\ndist/views/shared/intents.d.ts.map\ndist/views/shared/intents.js\ndist/views/shared/intents.js.map\ndist/views/shared/models.d.ts\ndist/views/shared/models.d.ts.map\ndist/views/shared/models.js\ndist/views/shared/models.js.map\ndist/views/shared/native-interactive-actions.d.ts\ndist/views/shared/native-interactive-actions.d.ts.map\ndist/views/shared/native-interactive-actions.js\ndist/views/shared/native-interactive-actions.js.map\ndist/views/shared/plain-accessibility.d.ts\ndist/views/shared/plain-accessibility.d.ts.map\ndist/views/shared/plain-accessibility.js\ndist/views/shared/plain-accessibility.js.map\ndist/views/shared/sanitize.d.ts\ndist/views/shared/sanitize.d.ts.map\ndist/views/shared/sanitize.js\ndist/views/shared/sanitize.js.map\ndist/views/shared/semantic-activity-limit.d.ts\ndist/views/shared/semantic-activity-limit.d.ts.map\ndist/views/shared/semantic-activity-limit.js\ndist/views/shared/semantic-activity-limit.js.map\ndist/views/shared/semantic-activity.d.ts\ndist/views/shared/semantic-activity.d.ts.map\ndist/views/shared/semantic-activity.js\ndist/views/shared/semantic-activity.js.map\ndist/views/shared/semantic-details.d.ts\ndist/views/shared/semantic-details.d.ts.map\ndist/views/shared/semantic-details.js\ndist/views/shared/semantic-details.js.map\ndist/views/shared/semantic-graph-edges.d.ts\ndist/views/shared/semantic-graph-edges.d.ts.map\ndist/views/shared/semantic-graph-edges.js\ndist/views/shared/semantic-graph-edges.js.map\ndist/views/shared/semantic-graph-filters.d.ts\ndist/views/shared/semantic-graph-filters.d.ts.map\ndist/views/shared/semantic-graph-filters.js\ndist/views/shared/semantic-graph-filters.js.map\ndist/views/shared/semantic-graph-nodes.d.ts\ndist/views/shared/semantic-graph-nodes.d.ts.map\ndist/views/shared/semantic-graph-nodes.js\ndist/views/shared/semantic-graph-nodes.js.map\ndist/views/shared/semantic-graph.d.ts\ndist/views/shared/semantic-graph.d.ts.map\ndist/views/shared/semantic-graph.js\ndist/views/shared/semantic-graph.js.map\ndist/views/shared/semantic-projection.d.ts\ndist/views/shared/semantic-projection.d.ts.map\ndist/views/shared/semantic-projection.js\ndist/views/shared/semantic-projection.js.map\ndist/views/shared/semantic-query-scope.d.ts\ndist/views/shared/semantic-query-scope.d.ts.map\ndist/views/shared/semantic-query-scope.js\ndist/views/shared/semantic-query-scope.js.map\ndist/views/shared/semantic-query-types.d.ts\ndist/views/shared/semantic-query-types.d.ts.map\ndist/views/shared/semantic-query-types.js\ndist/views/shared/semantic-query-types.js.map\ndist/views/shared/usage-projection.d.ts\ndist/views/shared/usage-projection.d.ts.map\ndist/views/shared/usage-projection.js\ndist/views/shared/usage-projection.js.map\ndist/views/tui/activity-browser.d.ts\ndist/views/tui/activity-browser.d.ts.map\ndist/views/tui/activity-browser.js\ndist/views/tui/activity-browser.js.map\ndist/views/tui/activity-document.d.ts\ndist/views/tui/activity-document.d.ts.map\ndist/views/tui/activity-document.js\ndist/views/tui/activity-document.js.map\ndist/views/tui/activity.d.ts\ndist/views/tui/activity.d.ts.map\ndist/views/tui/activity.js\ndist/views/tui/activity.js.map\ndist/views/tui/analysis.d.ts\ndist/views/tui/analysis.d.ts.map\ndist/views/tui/analysis.js\ndist/views/tui/analysis.js.map\ndist/views/tui/autocomplete-guard.d.ts\ndist/views/tui/autocomplete-guard.d.ts.map\ndist/views/tui/autocomplete-guard.js\ndist/views/tui/autocomplete-guard.js.map\ndist/views/tui/automation-overlay-workflow.d.ts\ndist/views/tui/automation-overlay-workflow.d.ts.map\ndist/views/tui/automation-overlay-workflow.js\ndist/views/tui/automation-overlay-workflow.js.map\ndist/views/tui/automation-rule-panel.d.ts\ndist/views/tui/automation-rule-panel.d.ts.map\ndist/views/tui/automation-rule-panel.js\ndist/views/tui/automation-rule-panel.js.map\ndist/views/tui/automation-rule-presentation.d.ts\ndist/views/tui/automation-rule-presentation.d.ts.map\ndist/views/tui/automation-rule-presentation.js\ndist/views/tui/automation-rule-presentation.js.map\ndist/views/tui/automation-rule-response-editor.d.ts\ndist/views/tui/automation-rule-response-editor.d.ts.map\ndist/views/tui/automation-rule-response-editor.js\ndist/views/tui/automation-rule-response-editor.js.map\ndist/views/tui/command-palette.d.ts\ndist/views/tui/command-palette.d.ts.map\ndist/views/tui/command-palette.js\ndist/views/tui/command-palette.js.map\ndist/views/tui/comparison.d.ts\ndist/views/tui/comparison.d.ts.map\ndist/views/tui/comparison.js\ndist/views/tui/comparison.js.map\ndist/views/tui/composer-view.d.ts\ndist/views/tui/composer-view.d.ts.map\ndist/views/tui/composer-view.js\ndist/views/tui/composer-view.js.map\ndist/views/tui/configuration-credential.d.ts\ndist/views/tui/configuration-credential.d.ts.map\ndist/views/tui/configuration-credential.js\ndist/views/tui/configuration-credential.js.map\ndist/views/tui/configuration-presenters.d.ts\ndist/views/tui/configuration-presenters.d.ts.map\ndist/views/tui/configuration-presenters.js\ndist/views/tui/configuration-presenters.js.map\ndist/views/tui/configuration-responsive-text.d.ts\ndist/views/tui/configuration-responsive-text.d.ts.map\ndist/views/tui/configuration-responsive-text.js\ndist/views/tui/configuration-responsive-text.js.map\ndist/views/tui/configuration-review.d.ts\ndist/views/tui/configuration-review.d.ts.map\ndist/views/tui/configuration-review.js\ndist/views/tui/configuration-review.js.map\ndist/views/tui/configuration-wizard-presentation.d.ts\ndist/views/tui/configuration-wizard-presentation.d.ts.map\ndist/views/tui/configuration-wizard-presentation.js\ndist/views/tui/configuration-wizard-presentation.js.map\ndist/views/tui/configuration-wizard.d.ts\ndist/views/tui/configuration-wizard.d.ts.map\ndist/views/tui/configuration-wizard.js\ndist/views/tui/configuration-wizard.js.map\ndist/views/tui/connection-metadata-editor-actions.d.ts\ndist/views/tui/connection-metadata-editor-actions.d.ts.map\ndist/views/tui/connection-metadata-editor-actions.js\ndist/views/tui/connection-metadata-editor-actions.js.map\ndist/views/tui/connection-metadata-editor-inputs.d.ts\ndist/views/tui/connection-metadata-editor-inputs.d.ts.map\ndist/views/tui/connection-metadata-editor-inputs.js\ndist/views/tui/connection-metadata-editor-inputs.js.map\ndist/views/tui/connection-metadata-editor-model.d.ts\ndist/views/tui/connection-metadata-editor-model.d.ts.map\ndist/views/tui/connection-metadata-editor-model.js\ndist/views/tui/connection-metadata-editor-model.js.map\ndist/views/tui/connection-metadata-editor-presentation.d.ts\ndist/views/tui/connection-metadata-editor-presentation.d.ts.map\ndist/views/tui/connection-metadata-editor-presentation.js\ndist/views/tui/connection-metadata-editor-presentation.js.map\ndist/views/tui/connection-metadata-editor-rendering.d.ts\ndist/views/tui/connection-metadata-editor-rendering.d.ts.map\ndist/views/tui/connection-metadata-editor-rendering.js\ndist/views/tui/connection-metadata-editor-rendering.js.map\ndist/views/tui/connection-metadata-editor.d.ts\ndist/views/tui/connection-metadata-editor.d.ts.map\ndist/views/tui/connection-metadata-editor.js\ndist/views/tui/connection-metadata-editor.js.map\ndist/views/tui/connection-overlay-workflow.d.ts\ndist/views/tui/connection-overlay-workflow.d.ts.map\ndist/views/tui/connection-overlay-workflow.js\ndist/views/tui/connection-overlay-workflow.js.map\ndist/views/tui/connection-setup-actions.d.ts\ndist/views/tui/connection-setup-actions.d.ts.map\ndist/views/tui/connection-setup-actions.js\ndist/views/tui/connection-setup-actions.js.map\ndist/views/tui/connection-setup-rendering.d.ts\ndist/views/tui/connection-setup-rendering.d.ts.map\ndist/views/tui/connection-setup-rendering.js\ndist/views/tui/connection-setup-rendering.js.map\ndist/views/tui/connection-setup.d.ts\ndist/views/tui/connection-setup.d.ts.map\ndist/views/tui/connection-setup.js\ndist/views/tui/connection-setup.js.map\ndist/views/tui/conversation-dialogs.d.ts\ndist/views/tui/conversation-dialogs.d.ts.map\ndist/views/tui/conversation-dialogs.js\ndist/views/tui/conversation-dialogs.js.map\ndist/views/tui/conversation-overlay-actions.d.ts\ndist/views/tui/conversation-overlay-actions.d.ts.map\ndist/views/tui/conversation-overlay-actions.js\ndist/views/tui/conversation-overlay-actions.js.map\ndist/views/tui/conversation-overlay-helpers.d.ts\ndist/views/tui/conversation-overlay-helpers.d.ts.map\ndist/views/tui/conversation-overlay-helpers.js\ndist/views/tui/conversation-overlay-helpers.js.map\ndist/views/tui/conversation-overlays.d.ts\ndist/views/tui/conversation-overlays.d.ts.map\ndist/views/tui/conversation-overlays.js\ndist/views/tui/conversation-overlays.js.map\ndist/views/tui/details.d.ts\ndist/views/tui/details.d.ts.map\ndist/views/tui/details.js\ndist/views/tui/details.js.map\ndist/views/tui/dynamic-autocomplete.d.ts\ndist/views/tui/dynamic-autocomplete.d.ts.map\ndist/views/tui/dynamic-autocomplete.js\ndist/views/tui/dynamic-autocomplete.js.map\ndist/views/tui/entity-browser-layout.d.ts\ndist/views/tui/entity-browser-layout.d.ts.map\ndist/views/tui/entity-browser-layout.js\ndist/views/tui/entity-browser-layout.js.map\ndist/views/tui/entity-browser.d.ts\ndist/views/tui/entity-browser.d.ts.map\ndist/views/tui/entity-browser.js\ndist/views/tui/entity-browser.js.map\ndist/views/tui/execution-target.d.ts\ndist/views/tui/execution-target.d.ts.map\ndist/views/tui/execution-target.js\ndist/views/tui/execution-target.js.map\ndist/views/tui/focused-surface.d.ts\ndist/views/tui/focused-surface.d.ts.map\ndist/views/tui/focused-surface.js\ndist/views/tui/focused-surface.js.map\ndist/views/tui/fork-preview.d.ts\ndist/views/tui/fork-preview.d.ts.map\ndist/views/tui/fork-preview.js\ndist/views/tui/fork-preview.js.map\ndist/views/tui/graph.d.ts\ndist/views/tui/graph.d.ts.map\ndist/views/tui/graph.js\ndist/views/tui/graph.js.map\ndist/views/tui/help.d.ts\ndist/views/tui/help.d.ts.map\ndist/views/tui/help.js\ndist/views/tui/help.js.map\ndist/views/tui/interaction-automation-response.d.ts\ndist/views/tui/interaction-automation-response.d.ts.map\ndist/views/tui/interaction-automation-response.js\ndist/views/tui/interaction-automation-response.js.map\ndist/views/tui/interaction-decisions.d.ts\ndist/views/tui/interaction-decisions.d.ts.map\ndist/views/tui/interaction-decisions.js\ndist/views/tui/interaction-decisions.js.map\ndist/views/tui/interaction-input-response.d.ts\ndist/views/tui/interaction-input-response.d.ts.map\ndist/views/tui/interaction-input-response.js\ndist/views/tui/interaction-input-response.js.map\ndist/views/tui/interaction-presentation.d.ts\ndist/views/tui/interaction-presentation.d.ts.map\ndist/views/tui/interaction-presentation.js\ndist/views/tui/interaction-presentation.js.map\ndist/views/tui/interaction.d.ts\ndist/views/tui/interaction.d.ts.map\ndist/views/tui/interaction.js\ndist/views/tui/interaction.js.map\ndist/views/tui/keyboard.d.ts\ndist/views/tui/keyboard.d.ts.map\ndist/views/tui/keyboard.js\ndist/views/tui/keyboard.js.map\ndist/views/tui/layout.d.ts\ndist/views/tui/layout.d.ts.map\ndist/views/tui/layout.js\ndist/views/tui/layout.js.map\ndist/views/tui/measurement-display.d.ts\ndist/views/tui/measurement-display.d.ts.map\ndist/views/tui/measurement-display.js\ndist/views/tui/measurement-display.js.map\ndist/views/tui/modal-coordinator.d.ts\ndist/views/tui/modal-coordinator.d.ts.map\ndist/views/tui/modal-coordinator.js\ndist/views/tui/modal-coordinator.js.map\ndist/views/tui/profile-compatibility.d.ts\ndist/views/tui/profile-compatibility.d.ts.map\ndist/views/tui/profile-compatibility.js\ndist/views/tui/profile-compatibility.js.map\ndist/views/tui/profile-editor-actions.d.ts\ndist/views/tui/profile-editor-actions.d.ts.map\ndist/views/tui/profile-editor-actions.js\ndist/views/tui/profile-editor-actions.js.map\ndist/views/tui/profile-editor-rendering.d.ts\ndist/views/tui/profile-editor-rendering.d.ts.map\ndist/views/tui/profile-editor-rendering.js\ndist/views/tui/profile-editor-rendering.js.map\ndist/views/tui/profile-editor.d.ts\ndist/views/tui/profile-editor.d.ts.map\ndist/views/tui/profile-editor.js\ndist/views/tui/profile-editor.js.map\ndist/views/tui/safe-markdown.d.ts\ndist/views/tui/safe-markdown.d.ts.map\ndist/views/tui/safe-markdown.js\ndist/views/tui/safe-markdown.js.map\ndist/views/tui/secret-input.d.ts\ndist/views/tui/secret-input.d.ts.map\ndist/views/tui/secret-input.js\ndist/views/tui/secret-input.js.map\ndist/views/tui/selector.d.ts\ndist/views/tui/selector.d.ts.map\ndist/views/tui/selector.js\ndist/views/tui/selector.js.map\ndist/views/tui/supervisor-actions.d.ts\ndist/views/tui/supervisor-actions.d.ts.map\ndist/views/tui/supervisor-actions.js\ndist/views/tui/supervisor-actions.js.map\ndist/views/tui/terminal-app.d.ts\ndist/views/tui/terminal-app.d.ts.map\ndist/views/tui/terminal-app.js\ndist/views/tui/terminal-app.js.map\ndist/views/tui/terminal-chrome.d.ts\ndist/views/tui/terminal-chrome.d.ts.map\ndist/views/tui/terminal-chrome.js\ndist/views/tui/terminal-chrome.js.map\ndist/views/tui/terminal-command-controller.d.ts\ndist/views/tui/terminal-command-controller.d.ts.map\ndist/views/tui/terminal-command-controller.js\ndist/views/tui/terminal-command-controller.js.map\ndist/views/tui/terminal-compatibility.d.ts\ndist/views/tui/terminal-compatibility.d.ts.map\ndist/views/tui/terminal-compatibility.js\ndist/views/tui/terminal-compatibility.js.map\ndist/views/tui/terminal-drafts.d.ts\ndist/views/tui/terminal-drafts.d.ts.map\ndist/views/tui/terminal-drafts.js\ndist/views/tui/terminal-drafts.js.map\ndist/views/tui/terminal-identity.d.ts\ndist/views/tui/terminal-identity.d.ts.map\ndist/views/tui/terminal-identity.js\ndist/views/tui/terminal-identity.js.map\ndist/views/tui/terminal-input-controller.d.ts\ndist/views/tui/terminal-input-controller.d.ts.map\ndist/views/tui/terminal-input-controller.js\ndist/views/tui/terminal-input-controller.js.map\ndist/views/tui/terminal-interaction-controller.d.ts\ndist/views/tui/terminal-interaction-controller.d.ts.map\ndist/views/tui/terminal-interaction-controller.js\ndist/views/tui/terminal-interaction-controller.js.map\ndist/views/tui/terminal-overlays.d.ts\ndist/views/tui/terminal-overlays.d.ts.map\ndist/views/tui/terminal-overlays.js\ndist/views/tui/terminal-overlays.js.map\ndist/views/tui/terminal-shell.d.ts\ndist/views/tui/terminal-shell.d.ts.map\ndist/views/tui/terminal-shell.js\ndist/views/tui/terminal-shell.js.map\ndist/views/tui/terminal-surface-overlays.d.ts\ndist/views/tui/terminal-surface-overlays.d.ts.map\ndist/views/tui/terminal-surface-overlays.js\ndist/views/tui/terminal-surface-overlays.js.map\ndist/views/tui/terminal-usage.d.ts\ndist/views/tui/terminal-usage.d.ts.map\ndist/views/tui/terminal-usage.js\ndist/views/tui/terminal-usage.js.map\ndist/views/tui/theme.d.ts\ndist/views/tui/theme.d.ts.map\ndist/views/tui/theme.js\ndist/views/tui/theme.js.map\ndist/views/tui/transcript.d.ts\ndist/views/tui/transcript.d.ts.map\ndist/views/tui/transcript.js\ndist/views/tui/transcript.js.map\nLICENSE\npackage.json\nREADME.md\nTHIRD_PARTY_LICENSES.json\nTHIRD_PARTY_NOTICES.md\n\u001b[94mTarball Details\u001b[39m\n/tmp/braid-live-pack-ZfeUUH/tangle-network-braid-0.3.0.tgz\n",
+ "stderr": "",
+ "durationMs": 1577,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "install": {
+ "command": "npm",
+ "args": [
+ "install",
+ "--no-audit",
+ "--no-fund",
+ "/tmp/braid-live-pack-ZfeUUH/tangle-network-braid-0.3.0.tgz"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "\nadded 68 packages in 7s\n",
+ "stderr": "npm warn deprecated koffi@3.1.4: Unstable Windows builds\nnpm warn allow-scripts 2 packages have install scripts not yet covered by allowScripts:\nnpm warn allow-scripts @dataiku/uv@0.12.0 (postinstall: node install.cjs)\nnpm warn allow-scripts koffi@3.1.4 (install: node ./cnoke.cjs -P . -D src/koffi --prebuild --release)\nnpm warn allow-scripts\nnpm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts ` to allow.\n",
+ "durationMs": 7257,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "version": {
+ "command": "/home/drew/.nvm/versions/node/v24.18.0/bin/node",
+ "args": [
+ "/tmp/braid-live-install-KIUvQZ/node_modules/@tangle-network/braid/dist/bin/braid.js",
+ "--version"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "0.3.0\n",
+ "stderr": "",
+ "durationMs": 71,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "artifact": {
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "sha256": "88b3ad3b320350f25752e8161455cec9f7d752665992cb124a5685303b561237",
+ "binary": "node_modules/@tangle-network/braid/dist/bin/braid.js"
+ },
+ "provider": {
+ "package": "@tangle-network/agent-provider-cli-bridge",
+ "capabilitiesByBackend": {
+ "pi": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ }
+ },
+ "analysis": {
+ "claim": "packed-analysis-readiness-only",
+ "python": {
+ "status": "ready",
+ "readiness": "ready"
+ },
+ "ask": {
+ "readiness": "ready",
+ "status": "engine-configured",
+ "diagnostics": []
+ }
+ },
+ "credentialState": {
+ "configured": false,
+ "facility": "none",
+ "targetCount": 1,
+ "storedCount": 0,
+ "removedCount": 1
+ },
+ "bridgeCleanup": {
+ "stopped": {
+ "termination": {
+ "strategy": "process-group",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": true,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 1826905,
+ 1826922,
+ 1826923,
+ 1826940
+ ],
+ "roots": [
+ 1826905
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "term",
+ "termSignal": {
+ "method": "process-group",
+ "sent": true
+ },
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "exit": {
+ "code": null,
+ "signal": "SIGTERM"
+ },
+ "stdout": "[cli-bridge] listening on http://127.0.0.1:3480 (host=127.0.0.1)\n[cli-bridge] backends: pi\n[cli-bridge] bearer: none (loopback only)\n[cli-bridge] host admission: maxActive=8 maxQueue=16/class reservedActive=2 (bulk ceiling 6) queueTimeoutMs=30000 bulkQueueTimeoutMs=240000\n[cli-bridge] reserved-lane clients: pr-reviewer\n[cli-bridge] traces: /home/drew/code/.worktrees/cli-bridge-continuation-control/data/traces/spans.jsonl (max 16777216 bytes × 2 files)\n[cli-bridge] jail default: fs-jail root=/.agent-home\n[cli-bridge] profile materialization receipt {\"schema\":\"cli-bridge.profile-materialization.v2\",\"effectiveProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"harness\":\"pi\",\"provider\":\"tangle-router\",\"model\":\"pi/tangle-router/deepseek-v4-flash\",\"reasoningEffort\":{\"requested\":\"none\",\"applied\":\"off\"},\"workspacePlanDigest\":\"sha256:2e0962913b2ebd66008754f9574c59b0ff54539a9e92dc161c2c67b5e5d99bf7\",\"files\":[],\"unsupported\":[],\"inference\":{\"effectiveEndpoint\":\"https://router.tangle.tools/v1\",\"apiMode\":\"openai-completions\",\"transport\":\"scoped-loopback\"}}\n[cli-bridge] SIGTERM — shutting down\n\u001b[41m\u001b[31m[\u001b[39m\u001b[49m\u001b[41m\u001b[30mELIFECYCLE\u001b[39m\u001b[49m\u001b[41m\u001b[31m]\u001b[39m\u001b[49m \u001b[31mCommand failed.\u001b[39m\n",
+ "stderr": "(node:1826905) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n\u001b[2m$ tsx src/server.ts\u001b[22m\n(node:1826923) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n(node:1826940) Warning: The 'NO_COLOR' env is ignored due to the 'FORCE_COLOR' env being set.\n(Use `node --trace-warnings ...` to show where the warning was created)\n[cli-bridge] admission maxActive=8 exceeds scoped-executor concurrency=4: the executor is the real ceiling. Lower BRIDGE_HOST_CHAT_MAX_ACTIVE or raise CLI_BRIDGE_SCOPE_MAX_CONCURRENCY so one gate owns the limit.\n"
+ }
+ },
+ "cleanup": {
+ "ok": true,
+ "results": [
+ {
+ "path": "/tmp/braid-live-pack-ZfeUUH",
+ "removed": true
+ },
+ {
+ "path": "/tmp/braid-live-install-KIUvQZ",
+ "removed": true
+ },
+ {
+ "path": "/tmp/braid-live-targets-hVb5BS",
+ "removed": true
+ }
+ ]
+ },
+ "status": "passed",
+ "exitCode": 0,
+ "finishedAt": "2026-08-29T05:07:24.725Z"
+}
diff --git a/artifacts/verification/live/bridge/pi-interaction-current.json b/artifacts/verification/live/bridge/pi-interaction-current.json
new file mode 100644
index 0000000..5ab9dc7
--- /dev/null
+++ b/artifacts/verification/live/bridge/pi-interaction-current.json
@@ -0,0 +1,1947 @@
+{
+ "startedAt": "2026-08-29T05:40:54.248Z",
+ "temp": {
+ "packRoot": "/tmp/braid-live-pack-mIMgBK",
+ "installRoot": "/tmp/braid-live-install-MpZxkH"
+ },
+ "build": {
+ "command": "pnpm",
+ "args": [
+ "run",
+ "build"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "",
+ "stderr": "\u001b[2m$ node scripts/clean.mjs && tsc -p tsconfig.build.json && node scripts/build-startup.mjs\u001b[22m\n",
+ "durationMs": 2172,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "packCommand": {
+ "command": "pnpm",
+ "args": [
+ "pack",
+ "--pack-destination",
+ "/tmp/braid-live-pack-mIMgBK"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "package: @tangle-network/braid@0.3.0\n\u001b[94mTarball Contents\u001b[39m\ndist/adapters/agent-interface/harness-runtime.d.ts\ndist/adapters/agent-interface/harness-runtime.d.ts.map\ndist/adapters/agent-interface/harness-runtime.js\ndist/adapters/agent-interface/harness-runtime.js.map\ndist/adapters/agent-interface/interaction-runtime.d.ts\ndist/adapters/agent-interface/interaction-runtime.d.ts.map\ndist/adapters/agent-interface/interaction-runtime.js\ndist/adapters/agent-interface/interaction-runtime.js.map\ndist/adapters/agent-interface/module-url.d.ts\ndist/adapters/agent-interface/module-url.d.ts.map\ndist/adapters/agent-interface/module-url.js\ndist/adapters/agent-interface/module-url.js.map\ndist/adapters/agent-interface/profile-runtime.d.ts\ndist/adapters/agent-interface/profile-runtime.d.ts.map\ndist/adapters/agent-interface/profile-runtime.js\ndist/adapters/agent-interface/profile-runtime.js.map\ndist/adapters/analysis/agent-eval-version.d.ts\ndist/adapters/analysis/agent-eval-version.d.ts.map\ndist/adapters/analysis/agent-eval-version.js\ndist/adapters/analysis/agent-eval-version.js.map\ndist/adapters/analysis/citations.d.ts\ndist/adapters/analysis/citations.d.ts.map\ndist/adapters/analysis/citations.js\ndist/adapters/analysis/citations.js.map\ndist/adapters/analysis/eval-analyst.d.ts\ndist/adapters/analysis/eval-analyst.d.ts.map\ndist/adapters/analysis/eval-analyst.js\ndist/adapters/analysis/eval-analyst.js.map\ndist/adapters/analysis/managed-analysis-runtime.d.ts\ndist/adapters/analysis/managed-analysis-runtime.d.ts.map\ndist/adapters/analysis/managed-analysis-runtime.js\ndist/adapters/analysis/managed-analysis-runtime.js.map\ndist/adapters/analysis/model-execution-scope.d.ts\ndist/adapters/analysis/model-execution-scope.d.ts.map\ndist/adapters/analysis/model-execution-scope.js\ndist/adapters/analysis/model-execution-scope.js.map\ndist/adapters/analysis/production-analysis-analyst.d.ts\ndist/adapters/analysis/production-analysis-analyst.d.ts.map\ndist/adapters/analysis/production-analysis-analyst.js\ndist/adapters/analysis/production-analysis-analyst.js.map\ndist/adapters/analysis/python-runner.d.ts\ndist/adapters/analysis/python-runner.d.ts.map\ndist/adapters/analysis/python-runner.js\ndist/adapters/analysis/python-runner.js.map\ndist/adapters/analysis/question-analyst.d.ts\ndist/adapters/analysis/question-analyst.d.ts.map\ndist/adapters/analysis/question-analyst.js\ndist/adapters/analysis/question-analyst.js.map\ndist/adapters/analysis/runtime-model-owner.d.ts\ndist/adapters/analysis/runtime-model-owner.d.ts.map\ndist/adapters/analysis/runtime-model-owner.js\ndist/adapters/analysis/runtime-model-owner.js.map\ndist/adapters/analysis/runtime-retained-model-call.d.ts\ndist/adapters/analysis/runtime-retained-model-call.d.ts.map\ndist/adapters/analysis/runtime-retained-model-call.js\ndist/adapters/analysis/runtime-retained-model-call.js.map\ndist/adapters/analysis/trace-analysis-adapter.d.ts\ndist/adapters/analysis/trace-analysis-adapter.d.ts.map\ndist/adapters/analysis/trace-analysis-adapter.js\ndist/adapters/analysis/trace-analysis-adapter.js.map\ndist/adapters/analysis/trace-event-projection.d.ts\ndist/adapters/analysis/trace-event-projection.d.ts.map\ndist/adapters/analysis/trace-event-projection.js\ndist/adapters/analysis/trace-event-projection.js.map\ndist/adapters/analysis/trace-store.d.ts\ndist/adapters/analysis/trace-store.d.ts.map\ndist/adapters/analysis/trace-store.js\ndist/adapters/analysis/trace-store.js.map\ndist/adapters/connections/aws-nitro-root-g1.d.ts\ndist/adapters/connections/aws-nitro-root-g1.d.ts.map\ndist/adapters/connections/aws-nitro-root-g1.js\ndist/adapters/connections/aws-nitro-root-g1.js.map\ndist/adapters/connections/cli-bridge-health.d.ts\ndist/adapters/connections/cli-bridge-health.d.ts.map\ndist/adapters/connections/cli-bridge-health.js\ndist/adapters/connections/cli-bridge-health.js.map\ndist/adapters/connections/cli-bridge-model-route.d.ts\ndist/adapters/connections/cli-bridge-model-route.d.ts.map\ndist/adapters/connections/cli-bridge-model-route.js\ndist/adapters/connections/cli-bridge-model-route.js.map\ndist/adapters/connections/cli-bridge-model-validation.d.ts\ndist/adapters/connections/cli-bridge-model-validation.d.ts.map\ndist/adapters/connections/cli-bridge-model-validation.js\ndist/adapters/connections/cli-bridge-model-validation.js.map\ndist/adapters/connections/nitro-confidential-attestation.d.ts\ndist/adapters/connections/nitro-confidential-attestation.d.ts.map\ndist/adapters/connections/nitro-confidential-attestation.js\ndist/adapters/connections/nitro-confidential-attestation.js.map\ndist/adapters/connections/production-connection-credentials.d.ts\ndist/adapters/connections/production-connection-credentials.d.ts.map\ndist/adapters/connections/production-connection-credentials.js\ndist/adapters/connections/production-connection-credentials.js.map\ndist/adapters/connections/production-connection-endpoints.d.ts\ndist/adapters/connections/production-connection-endpoints.d.ts.map\ndist/adapters/connections/production-connection-endpoints.js\ndist/adapters/connections/production-connection-endpoints.js.map\ndist/adapters/connections/production-connection-health.d.ts\ndist/adapters/connections/production-connection-health.d.ts.map\ndist/adapters/connections/production-connection-health.js\ndist/adapters/connections/production-connection-health.js.map\ndist/adapters/connections/production-connection-providers.d.ts\ndist/adapters/connections/production-connection-providers.d.ts.map\ndist/adapters/connections/production-connection-providers.js\ndist/adapters/connections/production-connection-providers.js.map\ndist/adapters/connections/production-connection-types.d.ts\ndist/adapters/connections/production-connection-types.d.ts.map\ndist/adapters/connections/production-connection-types.js\ndist/adapters/connections/production-connection-types.js.map\ndist/adapters/connections/production-connections.d.ts\ndist/adapters/connections/production-connections.d.ts.map\ndist/adapters/connections/production-connections.js\ndist/adapters/connections/production-connections.js.map\ndist/adapters/connections/tangle-retained-control-lookup.d.ts\ndist/adapters/connections/tangle-retained-control-lookup.d.ts.map\ndist/adapters/connections/tangle-retained-control-lookup.js\ndist/adapters/connections/tangle-retained-control-lookup.js.map\ndist/adapters/credentials/headless-key.d.ts\ndist/adapters/credentials/headless-key.d.ts.map\ndist/adapters/credentials/headless-key.js\ndist/adapters/credentials/headless-key.js.map\ndist/adapters/credentials/headless-store.d.ts\ndist/adapters/credentials/headless-store.d.ts.map\ndist/adapters/credentials/headless-store.js\ndist/adapters/credentials/headless-store.js.map\ndist/adapters/credentials/memory.d.ts\ndist/adapters/credentials/memory.d.ts.map\ndist/adapters/credentials/memory.js\ndist/adapters/credentials/memory.js.map\ndist/adapters/credentials/os.d.ts\ndist/adapters/credentials/os.d.ts.map\ndist/adapters/credentials/os.js\ndist/adapters/credentials/os.js.map\ndist/adapters/persistence/posix-at.d.ts\ndist/adapters/persistence/posix-at.d.ts.map\ndist/adapters/persistence/posix-at.js\ndist/adapters/persistence/posix-at.js.map\ndist/adapters/persistence/safe-file-descriptor.d.ts\ndist/adapters/persistence/safe-file-descriptor.d.ts.map\ndist/adapters/persistence/safe-file-descriptor.js\ndist/adapters/persistence/safe-file-descriptor.js.map\ndist/adapters/persistence/safe-file-io.d.ts\ndist/adapters/persistence/safe-file-io.d.ts.map\ndist/adapters/persistence/safe-file-io.js\ndist/adapters/persistence/safe-file-io.js.map\ndist/adapters/persistence/safe-file.d.ts\ndist/adapters/persistence/safe-file.d.ts.map\ndist/adapters/persistence/safe-file.js\ndist/adapters/persistence/safe-file.js.map\ndist/adapters/runtime/agent-runtime-execution.d.ts\ndist/adapters/runtime/agent-runtime-execution.d.ts.map\ndist/adapters/runtime/agent-runtime-execution.js\ndist/adapters/runtime/agent-runtime-execution.js.map\ndist/adapters/runtime/agent-runtime-version.d.ts\ndist/adapters/runtime/agent-runtime-version.d.ts.map\ndist/adapters/runtime/agent-runtime-version.js\ndist/adapters/runtime/agent-runtime-version.js.map\ndist/adapters/runtime/cli-bridge-retained-execution.d.ts\ndist/adapters/runtime/cli-bridge-retained-execution.d.ts.map\ndist/adapters/runtime/cli-bridge-retained-execution.js\ndist/adapters/runtime/cli-bridge-retained-execution.js.map\ndist/adapters/runtime/cli-bridge-retained-run.d.ts\ndist/adapters/runtime/cli-bridge-retained-run.d.ts.map\ndist/adapters/runtime/cli-bridge-retained-run.js\ndist/adapters/runtime/cli-bridge-retained-run.js.map\ndist/adapters/runtime/execution-observation-source.d.ts\ndist/adapters/runtime/execution-observation-source.d.ts.map\ndist/adapters/runtime/execution-observation-source.js\ndist/adapters/runtime/execution-observation-source.js.map\ndist/adapters/runtime/lazy-execution.d.ts\ndist/adapters/runtime/lazy-execution.d.ts.map\ndist/adapters/runtime/lazy-execution.js\ndist/adapters/runtime/lazy-execution.js.map\ndist/adapters/runtime/mode-routing-execution.d.ts\ndist/adapters/runtime/mode-routing-execution.d.ts.map\ndist/adapters/runtime/mode-routing-execution.js\ndist/adapters/runtime/mode-routing-execution.js.map\ndist/adapters/runtime/native-interactive-run-broker.d.ts\ndist/adapters/runtime/native-interactive-run-broker.d.ts.map\ndist/adapters/runtime/native-interactive-run-broker.js\ndist/adapters/runtime/native-interactive-run-broker.js.map\ndist/adapters/runtime/prepared-execution.d.ts\ndist/adapters/runtime/prepared-execution.d.ts.map\ndist/adapters/runtime/prepared-execution.js\ndist/adapters/runtime/prepared-execution.js.map\ndist/adapters/runtime/production-backend-common.d.ts\ndist/adapters/runtime/production-backend-common.d.ts.map\ndist/adapters/runtime/production-backend-common.js\ndist/adapters/runtime/production-backend-common.js.map\ndist/adapters/runtime/production-backend-resolver.d.ts\ndist/adapters/runtime/production-backend-resolver.d.ts.map\ndist/adapters/runtime/production-backend-resolver.js\ndist/adapters/runtime/production-backend-resolver.js.map\ndist/adapters/runtime/production-cli-bridge-backend.d.ts\ndist/adapters/runtime/production-cli-bridge-backend.d.ts.map\ndist/adapters/runtime/production-cli-bridge-backend.js\ndist/adapters/runtime/production-cli-bridge-backend.js.map\ndist/adapters/runtime/production-tangle-inference-backend.d.ts\ndist/adapters/runtime/production-tangle-inference-backend.d.ts.map\ndist/adapters/runtime/production-tangle-inference-backend.js\ndist/adapters/runtime/production-tangle-inference-backend.js.map\ndist/adapters/runtime/production-tangle-sandbox-backend.d.ts\ndist/adapters/runtime/production-tangle-sandbox-backend.d.ts.map\ndist/adapters/runtime/production-tangle-sandbox-backend.js\ndist/adapters/runtime/production-tangle-sandbox-backend.js.map\ndist/adapters/runtime/retained-execution-contract.d.ts\ndist/adapters/runtime/retained-execution-contract.d.ts.map\ndist/adapters/runtime/retained-execution-contract.js\ndist/adapters/runtime/retained-execution-contract.js.map\ndist/adapters/runtime/retained-execution-projection.d.ts\ndist/adapters/runtime/retained-execution-projection.d.ts.map\ndist/adapters/runtime/retained-execution-projection.js\ndist/adapters/runtime/retained-execution-projection.js.map\ndist/adapters/runtime/retained-execution-state.d.ts\ndist/adapters/runtime/retained-execution-state.d.ts.map\ndist/adapters/runtime/retained-execution-state.js\ndist/adapters/runtime/retained-execution-state.js.map\ndist/adapters/runtime/retained-execution-stream.d.ts\ndist/adapters/runtime/retained-execution-stream.d.ts.map\ndist/adapters/runtime/retained-execution-stream.js\ndist/adapters/runtime/retained-execution-stream.js.map\ndist/adapters/runtime/retained-execution.d.ts\ndist/adapters/runtime/retained-execution.d.ts.map\ndist/adapters/runtime/retained-execution.js\ndist/adapters/runtime/retained-execution.js.map\ndist/adapters/runtime/retained-native-continuation.d.ts\ndist/adapters/runtime/retained-native-continuation.d.ts.map\ndist/adapters/runtime/retained-native-continuation.js\ndist/adapters/runtime/retained-native-continuation.js.map\ndist/adapters/runtime/sandbox-account-observation.d.ts\ndist/adapters/runtime/sandbox-account-observation.d.ts.map\ndist/adapters/runtime/sandbox-account-observation.js\ndist/adapters/runtime/sandbox-account-observation.js.map\ndist/adapters/runtime/sandbox-instance-observation.d.ts\ndist/adapters/runtime/sandbox-instance-observation.d.ts.map\ndist/adapters/runtime/sandbox-instance-observation.js\ndist/adapters/runtime/sandbox-instance-observation.js.map\ndist/adapters/runtime/sandbox-observation-types.d.ts\ndist/adapters/runtime/sandbox-observation-types.d.ts.map\ndist/adapters/runtime/sandbox-observation-types.js\ndist/adapters/runtime/sandbox-observation-types.js.map\ndist/adapters/runtime/sandbox-observation.d.ts\ndist/adapters/runtime/sandbox-observation.d.ts.map\ndist/adapters/runtime/sandbox-observation.js\ndist/adapters/runtime/sandbox-observation.js.map\ndist/adapters/runtime/supervisor-control.d.ts\ndist/adapters/runtime/supervisor-control.d.ts.map\ndist/adapters/runtime/supervisor-control.js\ndist/adapters/runtime/supervisor-control.js.map\ndist/adapters/runtime/supervisor-watch.d.ts\ndist/adapters/runtime/supervisor-watch.d.ts.map\ndist/adapters/runtime/supervisor-watch.js\ndist/adapters/runtime/supervisor-watch.js.map\ndist/adapters/runtime/tangle-retained-execution.d.ts\ndist/adapters/runtime/tangle-retained-execution.d.ts.map\ndist/adapters/runtime/tangle-retained-execution.js\ndist/adapters/runtime/tangle-retained-execution.js.map\ndist/adapters/runtime/tangle-retained-interactive-contract.d.ts\ndist/adapters/runtime/tangle-retained-interactive-contract.d.ts.map\ndist/adapters/runtime/tangle-retained-interactive-contract.js\ndist/adapters/runtime/tangle-retained-interactive-contract.js.map\ndist/adapters/runtime/tangle-retained-interactive-execution.d.ts\ndist/adapters/runtime/tangle-retained-interactive-execution.d.ts.map\ndist/adapters/runtime/tangle-retained-interactive-execution.js\ndist/adapters/runtime/tangle-retained-interactive-execution.js.map\ndist/adapters/runtime/tangle-retained-interactive-projection.d.ts\ndist/adapters/runtime/tangle-retained-interactive-projection.d.ts.map\ndist/adapters/runtime/tangle-retained-interactive-projection.js\ndist/adapters/runtime/tangle-retained-interactive-projection.js.map\ndist/adapters/runtime/tangle-retained-run.d.ts\ndist/adapters/runtime/tangle-retained-run.d.ts.map\ndist/adapters/runtime/tangle-retained-run.js\ndist/adapters/runtime/tangle-retained-run.js.map\ndist/adapters/runtime/tangle-sandbox-retention.d.ts\ndist/adapters/runtime/tangle-sandbox-retention.d.ts.map\ndist/adapters/runtime/tangle-sandbox-retention.js\ndist/adapters/runtime/tangle-sandbox-retention.js.map\ndist/adapters/runtime/unavailable-execution.d.ts\ndist/adapters/runtime/unavailable-execution.d.ts.map\ndist/adapters/runtime/unavailable-execution.js\ndist/adapters/runtime/unavailable-execution.js.map\ndist/adapters/storage/memory-base.d.ts\ndist/adapters/storage/memory-base.d.ts.map\ndist/adapters/storage/memory-base.js\ndist/adapters/storage/memory-base.js.map\ndist/adapters/storage/memory-effects.d.ts\ndist/adapters/storage/memory-effects.d.ts.map\ndist/adapters/storage/memory-effects.js\ndist/adapters/storage/memory-effects.js.map\ndist/adapters/storage/memory-journal.d.ts\ndist/adapters/storage/memory-journal.d.ts.map\ndist/adapters/storage/memory-journal.js\ndist/adapters/storage/memory-journal.js.map\ndist/adapters/storage/memory-maintenance.d.ts\ndist/adapters/storage/memory-maintenance.d.ts.map\ndist/adapters/storage/memory-maintenance.js\ndist/adapters/storage/memory-maintenance.js.map\ndist/adapters/storage/memory-operations.d.ts\ndist/adapters/storage/memory-operations.d.ts.map\ndist/adapters/storage/memory-operations.js\ndist/adapters/storage/memory-operations.js.map\ndist/adapters/storage/memory-retention.d.ts\ndist/adapters/storage/memory-retention.d.ts.map\ndist/adapters/storage/memory-retention.js\ndist/adapters/storage/memory-retention.js.map\ndist/adapters/storage/memory.d.ts\ndist/adapters/storage/memory.d.ts.map\ndist/adapters/storage/memory.js\ndist/adapters/storage/memory.js.map\ndist/adapters/storage/sqlite-base.d.ts\ndist/adapters/storage/sqlite-base.d.ts.map\ndist/adapters/storage/sqlite-base.js\ndist/adapters/storage/sqlite-base.js.map\ndist/adapters/storage/sqlite-bound-open.d.ts\ndist/adapters/storage/sqlite-bound-open.d.ts.map\ndist/adapters/storage/sqlite-bound-open.js\ndist/adapters/storage/sqlite-bound-open.js.map\ndist/adapters/storage/sqlite-content.d.ts\ndist/adapters/storage/sqlite-content.d.ts.map\ndist/adapters/storage/sqlite-content.js\ndist/adapters/storage/sqlite-content.js.map\ndist/adapters/storage/sqlite-crypto.d.ts\ndist/adapters/storage/sqlite-crypto.d.ts.map\ndist/adapters/storage/sqlite-crypto.js\ndist/adapters/storage/sqlite-crypto.js.map\ndist/adapters/storage/sqlite-driver.d.ts\ndist/adapters/storage/sqlite-driver.d.ts.map\ndist/adapters/storage/sqlite-driver.js\ndist/adapters/storage/sqlite-driver.js.map\ndist/adapters/storage/sqlite-effects.d.ts\ndist/adapters/storage/sqlite-effects.d.ts.map\ndist/adapters/storage/sqlite-effects.js\ndist/adapters/storage/sqlite-effects.js.map\ndist/adapters/storage/sqlite-errors.d.ts\ndist/adapters/storage/sqlite-errors.d.ts.map\ndist/adapters/storage/sqlite-errors.js\ndist/adapters/storage/sqlite-errors.js.map\ndist/adapters/storage/sqlite-initialization.d.ts\ndist/adapters/storage/sqlite-initialization.d.ts.map\ndist/adapters/storage/sqlite-initialization.js\ndist/adapters/storage/sqlite-initialization.js.map\ndist/adapters/storage/sqlite-journal.d.ts\ndist/adapters/storage/sqlite-journal.d.ts.map\ndist/adapters/storage/sqlite-journal.js\ndist/adapters/storage/sqlite-journal.js.map\ndist/adapters/storage/sqlite-lifecycle.d.ts\ndist/adapters/storage/sqlite-lifecycle.d.ts.map\ndist/adapters/storage/sqlite-lifecycle.js\ndist/adapters/storage/sqlite-lifecycle.js.map\ndist/adapters/storage/sqlite-maintenance.d.ts\ndist/adapters/storage/sqlite-maintenance.d.ts.map\ndist/adapters/storage/sqlite-maintenance.js\ndist/adapters/storage/sqlite-maintenance.js.map\ndist/adapters/storage/sqlite-operations.d.ts\ndist/adapters/storage/sqlite-operations.d.ts.map\ndist/adapters/storage/sqlite-operations.js\ndist/adapters/storage/sqlite-operations.js.map\ndist/adapters/storage/sqlite-paths.d.ts\ndist/adapters/storage/sqlite-paths.d.ts.map\ndist/adapters/storage/sqlite-paths.js\ndist/adapters/storage/sqlite-paths.js.map\ndist/adapters/storage/sqlite-projection.d.ts\ndist/adapters/storage/sqlite-projection.d.ts.map\ndist/adapters/storage/sqlite-projection.js\ndist/adapters/storage/sqlite-projection.js.map\ndist/adapters/storage/sqlite-queue.d.ts\ndist/adapters/storage/sqlite-queue.d.ts.map\ndist/adapters/storage/sqlite-queue.js\ndist/adapters/storage/sqlite-queue.js.map\ndist/adapters/storage/sqlite-recovery.d.ts\ndist/adapters/storage/sqlite-recovery.d.ts.map\ndist/adapters/storage/sqlite-recovery.js\ndist/adapters/storage/sqlite-recovery.js.map\ndist/adapters/storage/sqlite-redaction.d.ts\ndist/adapters/storage/sqlite-redaction.d.ts.map\ndist/adapters/storage/sqlite-redaction.js\ndist/adapters/storage/sqlite-redaction.js.map\ndist/adapters/storage/sqlite-rows.d.ts\ndist/adapters/storage/sqlite-rows.d.ts.map\ndist/adapters/storage/sqlite-rows.js\ndist/adapters/storage/sqlite-rows.js.map\ndist/adapters/storage/sqlite-schema.d.ts\ndist/adapters/storage/sqlite-schema.d.ts.map\ndist/adapters/storage/sqlite-schema.js\ndist/adapters/storage/sqlite-schema.js.map\ndist/adapters/storage/sqlite-state-snapshot-codec.d.ts\ndist/adapters/storage/sqlite-state-snapshot-codec.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-codec.js\ndist/adapters/storage/sqlite-state-snapshot-codec.js.map\ndist/adapters/storage/sqlite-state-snapshot-keys.d.ts\ndist/adapters/storage/sqlite-state-snapshot-keys.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-keys.js\ndist/adapters/storage/sqlite-state-snapshot-keys.js.map\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.d.ts\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.js\ndist/adapters/storage/sqlite-state-snapshot-lifecycle.js.map\ndist/adapters/storage/sqlite-state-snapshot-read.d.ts\ndist/adapters/storage/sqlite-state-snapshot-read.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-read.js\ndist/adapters/storage/sqlite-state-snapshot-read.js.map\ndist/adapters/storage/sqlite-state-snapshot-transaction.d.ts\ndist/adapters/storage/sqlite-state-snapshot-transaction.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-transaction.js\ndist/adapters/storage/sqlite-state-snapshot-transaction.js.map\ndist/adapters/storage/sqlite-state-snapshot-types.d.ts\ndist/adapters/storage/sqlite-state-snapshot-types.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-types.js\ndist/adapters/storage/sqlite-state-snapshot-types.js.map\ndist/adapters/storage/sqlite-state-snapshot-write.d.ts\ndist/adapters/storage/sqlite-state-snapshot-write.d.ts.map\ndist/adapters/storage/sqlite-state-snapshot-write.js\ndist/adapters/storage/sqlite-state-snapshot-write.js.map\ndist/adapters/storage/sqlite-state-snapshots.d.ts\ndist/adapters/storage/sqlite-state-snapshots.d.ts.map\ndist/adapters/storage/sqlite-state-snapshots.js\ndist/adapters/storage/sqlite-state-snapshots.js.map\ndist/adapters/storage/sqlite-types.d.ts\ndist/adapters/storage/sqlite-types.d.ts.map\ndist/adapters/storage/sqlite-types.js\ndist/adapters/storage/sqlite-types.js.map\ndist/adapters/storage/sqlite.d.ts\ndist/adapters/storage/sqlite.d.ts.map\ndist/adapters/storage/sqlite.js\ndist/adapters/storage/sqlite.js.map\ndist/adapters/storage/storage-validation.d.ts\ndist/adapters/storage/storage-validation.d.ts.map\ndist/adapters/storage/storage-validation.js\ndist/adapters/storage/storage-validation.js.map\ndist/adapters/tui/alternate-screen-terminal.d.ts\ndist/adapters/tui/alternate-screen-terminal.d.ts.map\ndist/adapters/tui/alternate-screen-terminal.js\ndist/adapters/tui/alternate-screen-terminal.js.map\ndist/adapters/tui/application-ui-controller.d.ts\ndist/adapters/tui/application-ui-controller.d.ts.map\ndist/adapters/tui/application-ui-controller.js\ndist/adapters/tui/application-ui-controller.js.map\ndist/adapters/tui/native-terminal-transport.d.ts\ndist/adapters/tui/native-terminal-transport.d.ts.map\ndist/adapters/tui/native-terminal-transport.js\ndist/adapters/tui/native-terminal-transport.js.map\ndist/adapters/tui/profile-connection-dispatch.d.ts\ndist/adapters/tui/profile-connection-dispatch.d.ts.map\ndist/adapters/tui/profile-connection-dispatch.js\ndist/adapters/tui/profile-connection-dispatch.js.map\ndist/adapters/tui/ui-automation-command.d.ts\ndist/adapters/tui/ui-automation-command.d.ts.map\ndist/adapters/tui/ui-automation-command.js\ndist/adapters/tui/ui-automation-command.js.map\ndist/adapters/tui/ui-automation-dispatch.d.ts\ndist/adapters/tui/ui-automation-dispatch.d.ts.map\ndist/adapters/tui/ui-automation-dispatch.js\ndist/adapters/tui/ui-automation-dispatch.js.map\ndist/adapters/tui/ui-capabilities.d.ts\ndist/adapters/tui/ui-capabilities.d.ts.map\ndist/adapters/tui/ui-capabilities.js\ndist/adapters/tui/ui-capabilities.js.map\ndist/adapters/tui/ui-command-dispatch.d.ts\ndist/adapters/tui/ui-command-dispatch.d.ts.map\ndist/adapters/tui/ui-command-dispatch.js\ndist/adapters/tui/ui-command-dispatch.js.map\ndist/adapters/tui/ui-conversation-dispatch.d.ts\ndist/adapters/tui/ui-conversation-dispatch.d.ts.map\ndist/adapters/tui/ui-conversation-dispatch.js\ndist/adapters/tui/ui-conversation-dispatch.js.map\ndist/adapters/tui/ui-core-dispatch.d.ts\ndist/adapters/tui/ui-core-dispatch.d.ts.map\ndist/adapters/tui/ui-core-dispatch.js\ndist/adapters/tui/ui-core-dispatch.js.map\ndist/adapters/tui/ui-dispatch-context.d.ts\ndist/adapters/tui/ui-dispatch-context.d.ts.map\ndist/adapters/tui/ui-dispatch-context.js\ndist/adapters/tui/ui-dispatch-context.js.map\ndist/adapters/tui/ui-dispatch-error.d.ts\ndist/adapters/tui/ui-dispatch-error.d.ts.map\ndist/adapters/tui/ui-dispatch-error.js\ndist/adapters/tui/ui-dispatch-error.js.map\ndist/adapters/tui/ui-dispatch.d.ts\ndist/adapters/tui/ui-dispatch.d.ts.map\ndist/adapters/tui/ui-dispatch.js\ndist/adapters/tui/ui-dispatch.js.map\ndist/adapters/tui/ui-entity-details.d.ts\ndist/adapters/tui/ui-entity-details.d.ts.map\ndist/adapters/tui/ui-entity-details.js\ndist/adapters/tui/ui-entity-details.js.map\ndist/adapters/tui/ui-fixtures.d.ts\ndist/adapters/tui/ui-fixtures.d.ts.map\ndist/adapters/tui/ui-fixtures.js\ndist/adapters/tui/ui-fixtures.js.map\ndist/adapters/tui/ui-headless-dispatch.d.ts\ndist/adapters/tui/ui-headless-dispatch.d.ts.map\ndist/adapters/tui/ui-headless-dispatch.js\ndist/adapters/tui/ui-headless-dispatch.js.map\ndist/adapters/tui/ui-intelligence-dispatch.d.ts\ndist/adapters/tui/ui-intelligence-dispatch.d.ts.map\ndist/adapters/tui/ui-intelligence-dispatch.js\ndist/adapters/tui/ui-intelligence-dispatch.js.map\ndist/adapters/tui/ui-intelligence-fixtures.d.ts\ndist/adapters/tui/ui-intelligence-fixtures.d.ts.map\ndist/adapters/tui/ui-intelligence-fixtures.js\ndist/adapters/tui/ui-intelligence-fixtures.js.map\ndist/adapters/tui/ui-intelligence-result-view.d.ts\ndist/adapters/tui/ui-intelligence-result-view.d.ts.map\ndist/adapters/tui/ui-intelligence-result-view.js\ndist/adapters/tui/ui-intelligence-result-view.js.map\ndist/adapters/tui/ui-interaction-receipt.d.ts\ndist/adapters/tui/ui-interaction-receipt.d.ts.map\ndist/adapters/tui/ui-interaction-receipt.js\ndist/adapters/tui/ui-interaction-receipt.js.map\ndist/adapters/tui/ui-projection.d.ts\ndist/adapters/tui/ui-projection.d.ts.map\ndist/adapters/tui/ui-projection.js\ndist/adapters/tui/ui-projection.js.map\ndist/adapters/tui/ui-semantic-state.d.ts\ndist/adapters/tui/ui-semantic-state.d.ts.map\ndist/adapters/tui/ui-semantic-state.js\ndist/adapters/tui/ui-semantic-state.js.map\ndist/adapters/tui/ui-subscriber-delivery.d.ts\ndist/adapters/tui/ui-subscriber-delivery.d.ts.map\ndist/adapters/tui/ui-subscriber-delivery.js\ndist/adapters/tui/ui-subscriber-delivery.js.map\ndist/adapters/tui/ui-view-model.d.ts\ndist/adapters/tui/ui-view-model.d.ts.map\ndist/adapters/tui/ui-view-model.js\ndist/adapters/tui/ui-view-model.js.map\ndist/app/action-host.d.ts\ndist/app/action-host.d.ts.map\ndist/app/action-host.js\ndist/app/action-host.js.map\ndist/app/action-serialization.d.ts\ndist/app/action-serialization.d.ts.map\ndist/app/action-serialization.js\ndist/app/action-serialization.js.map\ndist/app/analysis-comparison-contracts.d.ts\ndist/app/analysis-comparison-contracts.d.ts.map\ndist/app/analysis-comparison-contracts.js\ndist/app/analysis-comparison-contracts.js.map\ndist/app/analysis-comparison-evidence.d.ts\ndist/app/analysis-comparison-evidence.d.ts.map\ndist/app/analysis-comparison-evidence.js\ndist/app/analysis-comparison-evidence.js.map\ndist/app/analysis-comparison-facts.d.ts\ndist/app/analysis-comparison-facts.d.ts.map\ndist/app/analysis-comparison-facts.js\ndist/app/analysis-comparison-facts.js.map\ndist/app/analysis-comparison-graph.d.ts\ndist/app/analysis-comparison-graph.d.ts.map\ndist/app/analysis-comparison-graph.js\ndist/app/analysis-comparison-graph.js.map\ndist/app/analysis-comparison-lifecycle.d.ts\ndist/app/analysis-comparison-lifecycle.d.ts.map\ndist/app/analysis-comparison-lifecycle.js\ndist/app/analysis-comparison-lifecycle.js.map\ndist/app/analysis-comparison-record.d.ts\ndist/app/analysis-comparison-record.d.ts.map\ndist/app/analysis-comparison-record.js\ndist/app/analysis-comparison-record.js.map\ndist/app/analysis-comparison-request.d.ts\ndist/app/analysis-comparison-request.d.ts.map\ndist/app/analysis-comparison-request.js\ndist/app/analysis-comparison-request.js.map\ndist/app/analysis-comparison.d.ts\ndist/app/analysis-comparison.d.ts.map\ndist/app/analysis-comparison.js\ndist/app/analysis-comparison.js.map\ndist/app/analysis-execution-session.d.ts\ndist/app/analysis-execution-session.d.ts.map\ndist/app/analysis-execution-session.js\ndist/app/analysis-execution-session.js.map\ndist/app/analysis-execution-target.d.ts\ndist/app/analysis-execution-target.d.ts.map\ndist/app/analysis-execution-target.js\ndist/app/analysis-execution-target.js.map\ndist/app/analysis-graph-projector.d.ts\ndist/app/analysis-graph-projector.d.ts.map\ndist/app/analysis-graph-projector.js\ndist/app/analysis-graph-projector.js.map\ndist/app/analysis-lifecycle.d.ts\ndist/app/analysis-lifecycle.d.ts.map\ndist/app/analysis-lifecycle.js\ndist/app/analysis-lifecycle.js.map\ndist/app/analysis-model-call-records.d.ts\ndist/app/analysis-model-call-records.d.ts.map\ndist/app/analysis-model-call-records.js\ndist/app/analysis-model-call-records.js.map\ndist/app/analysis-operation.d.ts\ndist/app/analysis-operation.d.ts.map\ndist/app/analysis-operation.js\ndist/app/analysis-operation.js.map\ndist/app/analysis-persistence.d.ts\ndist/app/analysis-persistence.d.ts.map\ndist/app/analysis-persistence.js\ndist/app/analysis-persistence.js.map\ndist/app/analysis-promotion.d.ts\ndist/app/analysis-promotion.d.ts.map\ndist/app/analysis-promotion.js\ndist/app/analysis-promotion.js.map\ndist/app/analysis-request.d.ts\ndist/app/analysis-request.d.ts.map\ndist/app/analysis-request.js\ndist/app/analysis-request.js.map\ndist/app/analysis-result-mapper.d.ts\ndist/app/analysis-result-mapper.d.ts.map\ndist/app/analysis-result-mapper.js\ndist/app/analysis-result-mapper.js.map\ndist/app/analysis-retained-admission.d.ts\ndist/app/analysis-retained-admission.d.ts.map\ndist/app/analysis-retained-admission.js\ndist/app/analysis-retained-admission.js.map\ndist/app/analysis-service.d.ts\ndist/app/analysis-service.d.ts.map\ndist/app/analysis-service.js\ndist/app/analysis-service.js.map\ndist/app/analysis-source.d.ts\ndist/app/analysis-source.d.ts.map\ndist/app/analysis-source.js\ndist/app/analysis-source.js.map\ndist/app/analysis-types.d.ts\ndist/app/analysis-types.d.ts.map\ndist/app/analysis-types.js\ndist/app/analysis-types.js.map\ndist/app/application-guards.d.ts\ndist/app/application-guards.d.ts.map\ndist/app/application-guards.js\ndist/app/application-guards.js.map\ndist/app/application-interaction-actions.d.ts\ndist/app/application-interaction-actions.d.ts.map\ndist/app/application-interaction-actions.js\ndist/app/application-interaction-actions.js.map\ndist/app/application-lifecycle.d.ts\ndist/app/application-lifecycle.d.ts.map\ndist/app/application-lifecycle.js\ndist/app/application-lifecycle.js.map\ndist/app/application-options.d.ts\ndist/app/application-options.d.ts.map\ndist/app/application-options.js\ndist/app/application-options.js.map\ndist/app/application-port-builder.d.ts\ndist/app/application-port-builder.d.ts.map\ndist/app/application-port-builder.js\ndist/app/application-port-builder.js.map\ndist/app/application-port-runtime.d.ts\ndist/app/application-port-runtime.d.ts.map\ndist/app/application-port-runtime.js\ndist/app/application-port-runtime.js.map\ndist/app/application-ports.d.ts\ndist/app/application-ports.d.ts.map\ndist/app/application-ports.js\ndist/app/application-ports.js.map\ndist/app/application-runtime-wiring.d.ts\ndist/app/application-runtime-wiring.d.ts.map\ndist/app/application-runtime-wiring.js\ndist/app/application-runtime-wiring.js.map\ndist/app/application-support.d.ts\ndist/app/application-support.d.ts.map\ndist/app/application-support.js\ndist/app/application-support.js.map\ndist/app/application-transition.d.ts\ndist/app/application-transition.d.ts.map\ndist/app/application-transition.js\ndist/app/application-transition.js.map\ndist/app/application-types.d.ts\ndist/app/application-types.d.ts.map\ndist/app/application-types.js\ndist/app/application-types.js.map\ndist/app/application.d.ts\ndist/app/application.d.ts.map\ndist/app/application.js\ndist/app/application.js.map\ndist/app/automation-actions.d.ts\ndist/app/automation-actions.d.ts.map\ndist/app/automation-actions.js\ndist/app/automation-actions.js.map\ndist/app/automation-matching.d.ts\ndist/app/automation-matching.d.ts.map\ndist/app/automation-matching.js\ndist/app/automation-matching.js.map\ndist/app/automation-rule-audit.d.ts\ndist/app/automation-rule-audit.d.ts.map\ndist/app/automation-rule-audit.js\ndist/app/automation-rule-audit.js.map\ndist/app/automation-rule-persistence.d.ts\ndist/app/automation-rule-persistence.d.ts.map\ndist/app/automation-rule-persistence.js\ndist/app/automation-rule-persistence.js.map\ndist/app/automation-rule-store.d.ts\ndist/app/automation-rule-store.d.ts.map\ndist/app/automation-rule-store.js\ndist/app/automation-rule-store.js.map\ndist/app/automation-rule-types.d.ts\ndist/app/automation-rule-types.d.ts.map\ndist/app/automation-rule-types.js\ndist/app/automation-rule-types.js.map\ndist/app/automation-rule-update.d.ts\ndist/app/automation-rule-update.d.ts.map\ndist/app/automation-rule-update.js\ndist/app/automation-rule-update.js.map\ndist/app/automation-rule-validation.d.ts\ndist/app/automation-rule-validation.d.ts.map\ndist/app/automation-rule-validation.js\ndist/app/automation-rule-validation.js.map\ndist/app/automation-rules.d.ts\ndist/app/automation-rules.d.ts.map\ndist/app/automation-rules.js\ndist/app/automation-rules.js.map\ndist/app/composition-options.d.ts\ndist/app/composition-options.d.ts.map\ndist/app/composition-options.js\ndist/app/composition-options.js.map\ndist/app/composition.d.ts\ndist/app/composition.d.ts.map\ndist/app/composition.js\ndist/app/composition.js.map\ndist/app/configuration-action-transition.d.ts\ndist/app/configuration-action-transition.d.ts.map\ndist/app/configuration-action-transition.js\ndist/app/configuration-action-transition.js.map\ndist/app/configuration-session.d.ts\ndist/app/configuration-session.d.ts.map\ndist/app/configuration-session.js\ndist/app/configuration-session.js.map\ndist/app/connection-action-support.d.ts\ndist/app/connection-action-support.d.ts.map\ndist/app/connection-action-support.js\ndist/app/connection-action-support.js.map\ndist/app/connection-action-types.d.ts\ndist/app/connection-action-types.d.ts.map\ndist/app/connection-action-types.js\ndist/app/connection-action-types.js.map\ndist/app/connection-actions.d.ts\ndist/app/connection-actions.d.ts.map\ndist/app/connection-actions.js\ndist/app/connection-actions.js.map\ndist/app/connection-errors.d.ts\ndist/app/connection-errors.d.ts.map\ndist/app/connection-errors.js\ndist/app/connection-errors.js.map\ndist/app/connection-probe.d.ts\ndist/app/connection-probe.d.ts.map\ndist/app/connection-probe.js\ndist/app/connection-probe.js.map\ndist/app/connection-record-factory.d.ts\ndist/app/connection-record-factory.d.ts.map\ndist/app/connection-record-factory.js\ndist/app/connection-record-factory.js.map\ndist/app/connections.d.ts\ndist/app/connections.d.ts.map\ndist/app/connections.js\ndist/app/connections.js.map\ndist/app/control-effects.d.ts\ndist/app/control-effects.d.ts.map\ndist/app/control-effects.js\ndist/app/control-effects.js.map\ndist/app/conversation-branch-effects.d.ts\ndist/app/conversation-branch-effects.d.ts.map\ndist/app/conversation-branch-effects.js\ndist/app/conversation-branch-effects.js.map\ndist/app/conversation-branches.d.ts\ndist/app/conversation-branches.d.ts.map\ndist/app/conversation-branches.js\ndist/app/conversation-branches.js.map\ndist/app/conversation-composition.d.ts\ndist/app/conversation-composition.d.ts.map\ndist/app/conversation-composition.js\ndist/app/conversation-composition.js.map\ndist/app/conversation-context.d.ts\ndist/app/conversation-context.d.ts.map\ndist/app/conversation-context.js\ndist/app/conversation-context.js.map\ndist/app/conversation-drafts.d.ts\ndist/app/conversation-drafts.d.ts.map\ndist/app/conversation-drafts.js\ndist/app/conversation-drafts.js.map\ndist/app/conversation-exports.d.ts\ndist/app/conversation-exports.d.ts.map\ndist/app/conversation-exports.js\ndist/app/conversation-exports.js.map\ndist/app/conversation-import-analyses.d.ts\ndist/app/conversation-import-analyses.d.ts.map\ndist/app/conversation-import-analyses.js\ndist/app/conversation-import-analyses.js.map\ndist/app/conversation-import-builder.d.ts\ndist/app/conversation-import-builder.d.ts.map\ndist/app/conversation-import-builder.js\ndist/app/conversation-import-builder.js.map\ndist/app/conversation-import-document.d.ts\ndist/app/conversation-import-document.d.ts.map\ndist/app/conversation-import-document.js\ndist/app/conversation-import-document.js.map\ndist/app/conversation-import-graph.d.ts\ndist/app/conversation-import-graph.d.ts.map\ndist/app/conversation-import-graph.js\ndist/app/conversation-import-graph.js.map\ndist/app/conversation-import-messages.d.ts\ndist/app/conversation-import-messages.d.ts.map\ndist/app/conversation-import-messages.js\ndist/app/conversation-import-messages.js.map\ndist/app/conversation-import-runs.d.ts\ndist/app/conversation-import-runs.d.ts.map\ndist/app/conversation-import-runs.js\ndist/app/conversation-import-runs.js.map\ndist/app/conversation-import-validation.d.ts\ndist/app/conversation-import-validation.d.ts.map\ndist/app/conversation-import-validation.js\ndist/app/conversation-import-validation.js.map\ndist/app/conversation-import-values.d.ts\ndist/app/conversation-import-values.d.ts.map\ndist/app/conversation-import-values.js\ndist/app/conversation-import-values.js.map\ndist/app/conversation-imports.d.ts\ndist/app/conversation-imports.d.ts.map\ndist/app/conversation-imports.js\ndist/app/conversation-imports.js.map\ndist/app/conversation-lifecycle.d.ts\ndist/app/conversation-lifecycle.d.ts.map\ndist/app/conversation-lifecycle.js\ndist/app/conversation-lifecycle.js.map\ndist/app/conversation-operation-coordinator.d.ts\ndist/app/conversation-operation-coordinator.d.ts.map\ndist/app/conversation-operation-coordinator.js\ndist/app/conversation-operation-coordinator.js.map\ndist/app/conversation-records.d.ts\ndist/app/conversation-records.d.ts.map\ndist/app/conversation-records.js\ndist/app/conversation-records.js.map\ndist/app/conversation-support.d.ts\ndist/app/conversation-support.d.ts.map\ndist/app/conversation-support.js\ndist/app/conversation-support.js.map\ndist/app/conversation-types.d.ts\ndist/app/conversation-types.d.ts.map\ndist/app/conversation-types.js\ndist/app/conversation-types.js.map\ndist/app/conversation-visibility.d.ts\ndist/app/conversation-visibility.d.ts.map\ndist/app/conversation-visibility.js\ndist/app/conversation-visibility.js.map\ndist/app/conversations.d.ts\ndist/app/conversations.d.ts.map\ndist/app/conversations.js\ndist/app/conversations.js.map\ndist/app/default-profiles.d.ts\ndist/app/default-profiles.d.ts.map\ndist/app/default-profiles.js\ndist/app/default-profiles.js.map\ndist/app/durable-send.d.ts\ndist/app/durable-send.d.ts.map\ndist/app/durable-send.js\ndist/app/durable-send.js.map\ndist/app/effect-coordinator.d.ts\ndist/app/effect-coordinator.d.ts.map\ndist/app/effect-coordinator.js\ndist/app/effect-coordinator.js.map\ndist/app/effect-projection.d.ts\ndist/app/effect-projection.d.ts.map\ndist/app/effect-projection.js\ndist/app/effect-projection.js.map\ndist/app/effective-run-configuration.d.ts\ndist/app/effective-run-configuration.d.ts.map\ndist/app/effective-run-configuration.js\ndist/app/effective-run-configuration.js.map\ndist/app/errors.d.ts\ndist/app/errors.d.ts.map\ndist/app/errors.js\ndist/app/errors.js.map\ndist/app/fail-closed-journal.d.ts\ndist/app/fail-closed-journal.d.ts.map\ndist/app/fail-closed-journal.js\ndist/app/fail-closed-journal.js.map\ndist/app/intelligence-actions.d.ts\ndist/app/intelligence-actions.d.ts.map\ndist/app/intelligence-actions.js\ndist/app/intelligence-actions.js.map\ndist/app/interaction-automation-coordinator.d.ts\ndist/app/interaction-automation-coordinator.d.ts.map\ndist/app/interaction-automation-coordinator.js\ndist/app/interaction-automation-coordinator.js.map\ndist/app/interaction-controller.d.ts\ndist/app/interaction-controller.d.ts.map\ndist/app/interaction-controller.js\ndist/app/interaction-controller.js.map\ndist/app/interaction-effects.d.ts\ndist/app/interaction-effects.d.ts.map\ndist/app/interaction-effects.js\ndist/app/interaction-effects.js.map\ndist/app/interaction-request.d.ts\ndist/app/interaction-request.d.ts.map\ndist/app/interaction-request.js\ndist/app/interaction-request.js.map\ndist/app/interaction-response-replay.d.ts\ndist/app/interaction-response-replay.d.ts.map\ndist/app/interaction-response-replay.js\ndist/app/interaction-response-replay.js.map\ndist/app/interaction-response.d.ts\ndist/app/interaction-response.d.ts.map\ndist/app/interaction-response.js\ndist/app/interaction-response.js.map\ndist/app/journal.d.ts\ndist/app/journal.d.ts.map\ndist/app/journal.js\ndist/app/journal.js.map\ndist/app/legacy-cancel.d.ts\ndist/app/legacy-cancel.d.ts.map\ndist/app/legacy-cancel.js\ndist/app/legacy-cancel.js.map\ndist/app/operation-fingerprint.d.ts\ndist/app/operation-fingerprint.d.ts.map\ndist/app/operation-fingerprint.js\ndist/app/operation-fingerprint.js.map\ndist/app/operation-ledger.d.ts\ndist/app/operation-ledger.d.ts.map\ndist/app/operation-ledger.js\ndist/app/operation-ledger.js.map\ndist/app/production-composition.d.ts\ndist/app/production-composition.d.ts.map\ndist/app/production-composition.js\ndist/app/production-composition.js.map\ndist/app/profile-action-support.d.ts\ndist/app/profile-action-support.d.ts.map\ndist/app/profile-action-support.js\ndist/app/profile-action-support.js.map\ndist/app/profile-actions.d.ts\ndist/app/profile-actions.d.ts.map\ndist/app/profile-actions.js\ndist/app/profile-actions.js.map\ndist/app/profile-draft.d.ts\ndist/app/profile-draft.d.ts.map\ndist/app/profile-draft.js\ndist/app/profile-draft.js.map\ndist/app/profile-model-settings.d.ts\ndist/app/profile-model-settings.d.ts.map\ndist/app/profile-model-settings.js\ndist/app/profile-model-settings.js.map\ndist/app/profile-persistence.d.ts\ndist/app/profile-persistence.d.ts.map\ndist/app/profile-persistence.js\ndist/app/profile-persistence.js.map\ndist/app/profile-save-recovery.d.ts\ndist/app/profile-save-recovery.d.ts.map\ndist/app/profile-save-recovery.js\ndist/app/profile-save-recovery.js.map\ndist/app/profile-selection.d.ts\ndist/app/profile-selection.d.ts.map\ndist/app/profile-selection.js\ndist/app/profile-selection.js.map\ndist/app/profile-snapshots.d.ts\ndist/app/profile-snapshots.d.ts.map\ndist/app/profile-snapshots.js\ndist/app/profile-snapshots.js.map\ndist/app/profile-sources.d.ts\ndist/app/profile-sources.d.ts.map\ndist/app/profile-sources.js\ndist/app/profile-sources.js.map\ndist/app/profile-types.d.ts\ndist/app/profile-types.d.ts.map\ndist/app/profile-types.js\ndist/app/profile-types.js.map\ndist/app/profile-validation.d.ts\ndist/app/profile-validation.d.ts.map\ndist/app/profile-validation.js\ndist/app/profile-validation.js.map\ndist/app/profiles.d.ts\ndist/app/profiles.d.ts.map\ndist/app/profiles.js\ndist/app/profiles.js.map\ndist/app/provider-snapshot.d.ts\ndist/app/provider-snapshot.d.ts.map\ndist/app/provider-snapshot.js\ndist/app/provider-snapshot.js.map\ndist/app/provider-values.d.ts\ndist/app/provider-values.d.ts.map\ndist/app/provider-values.js\ndist/app/provider-values.js.map\ndist/app/run-admission-continuation.d.ts\ndist/app/run-admission-continuation.d.ts.map\ndist/app/run-admission-continuation.js\ndist/app/run-admission-continuation.js.map\ndist/app/run-admission-dispatch.d.ts\ndist/app/run-admission-dispatch.d.ts.map\ndist/app/run-admission-dispatch.js\ndist/app/run-admission-dispatch.js.map\ndist/app/run-admission-receipt.d.ts\ndist/app/run-admission-receipt.d.ts.map\ndist/app/run-admission-receipt.js\ndist/app/run-admission-receipt.js.map\ndist/app/run-admission-request.d.ts\ndist/app/run-admission-request.d.ts.map\ndist/app/run-admission-request.js\ndist/app/run-admission-request.js.map\ndist/app/run-admission-validation.d.ts\ndist/app/run-admission-validation.d.ts.map\ndist/app/run-admission-validation.js\ndist/app/run-admission-validation.js.map\ndist/app/run-admission.d.ts\ndist/app/run-admission.d.ts.map\ndist/app/run-admission.js\ndist/app/run-admission.js.map\ndist/app/run-continuation.d.ts\ndist/app/run-continuation.d.ts.map\ndist/app/run-continuation.js\ndist/app/run-continuation.js.map\ndist/app/run-controls.d.ts\ndist/app/run-controls.d.ts.map\ndist/app/run-controls.js\ndist/app/run-controls.js.map\ndist/app/run-event-mapper.d.ts\ndist/app/run-event-mapper.d.ts.map\ndist/app/run-event-mapper.js\ndist/app/run-event-mapper.js.map\ndist/app/run-execution-snapshot.d.ts\ndist/app/run-execution-snapshot.d.ts.map\ndist/app/run-execution-snapshot.js\ndist/app/run-execution-snapshot.js.map\ndist/app/run-execution.d.ts\ndist/app/run-execution.d.ts.map\ndist/app/run-execution.js\ndist/app/run-execution.js.map\ndist/app/run-ingestion.d.ts\ndist/app/run-ingestion.d.ts.map\ndist/app/run-ingestion.js\ndist/app/run-ingestion.js.map\ndist/app/run-ledger.d.ts\ndist/app/run-ledger.d.ts.map\ndist/app/run-ledger.js\ndist/app/run-ledger.js.map\ndist/app/run-recovery-context.d.ts\ndist/app/run-recovery-context.d.ts.map\ndist/app/run-recovery-context.js\ndist/app/run-recovery-context.js.map\ndist/app/run-replay.d.ts\ndist/app/run-replay.d.ts.map\ndist/app/run-replay.js\ndist/app/run-replay.js.map\ndist/app/run-status.d.ts\ndist/app/run-status.d.ts.map\ndist/app/run-status.js\ndist/app/run-status.js.map\ndist/app/run-stream-sanitizer.d.ts\ndist/app/run-stream-sanitizer.d.ts.map\ndist/app/run-stream-sanitizer.js\ndist/app/run-stream-sanitizer.js.map\ndist/app/runtime-selection.d.ts\ndist/app/runtime-selection.d.ts.map\ndist/app/runtime-selection.js\ndist/app/runtime-selection.js.map\ndist/app/shutdown-controller.d.ts\ndist/app/shutdown-controller.d.ts.map\ndist/app/shutdown-controller.js\ndist/app/shutdown-controller.js.map\ndist/app/storage-journal-support.d.ts\ndist/app/storage-journal-support.d.ts.map\ndist/app/storage-journal-support.js\ndist/app/storage-journal-support.js.map\ndist/app/storage-journal.d.ts\ndist/app/storage-journal.d.ts.map\ndist/app/storage-journal.js\ndist/app/storage-journal.js.map\ndist/app/supervisor-projection.d.ts\ndist/app/supervisor-projection.d.ts.map\ndist/app/supervisor-projection.js\ndist/app/supervisor-projection.js.map\ndist/app/supervisor-service.d.ts\ndist/app/supervisor-service.d.ts.map\ndist/app/supervisor-service.js\ndist/app/supervisor-service.js.map\ndist/app/unavailable-analyst.d.ts\ndist/app/unavailable-analyst.d.ts.map\ndist/app/unavailable-analyst.js\ndist/app/unavailable-analyst.js.map\ndist/bin/args.d.ts\ndist/bin/args.d.ts.map\ndist/bin/args.js\ndist/bin/args.js.map\ndist/bin/braid-runtime.d.ts\ndist/bin/braid-runtime.d.ts.map\ndist/bin/braid-runtime.js\ndist/bin/braid-runtime.js.map\ndist/bin/braid.d.ts\ndist/bin/braid.d.ts.map\ndist/bin/braid.js\ndist/bin/braid.js.map\ndist/bin/fixture-application.d.ts\ndist/bin/fixture-application.d.ts.map\ndist/bin/fixture-application.js\ndist/bin/fixture-application.js.map\ndist/bin/interface-runner.d.ts\ndist/bin/interface-runner.d.ts.map\ndist/bin/interface-runner.js\ndist/bin/interface-runner.js.map\ndist/bin/interface-signal-lifecycle.d.ts\ndist/bin/interface-signal-lifecycle.d.ts.map\ndist/bin/interface-signal-lifecycle.js\ndist/bin/interface-signal-lifecycle.js.map\ndist/bin/interface-state-recorder.d.ts\ndist/bin/interface-state-recorder.d.ts.map\ndist/bin/interface-state-recorder.js\ndist/bin/interface-state-recorder.js.map\ndist/bin/native-interactive-actions.d.ts\ndist/bin/native-interactive-actions.d.ts.map\ndist/bin/native-interactive-actions.js\ndist/bin/native-interactive-actions.js.map\ndist/bin/plain.d.ts\ndist/bin/plain.d.ts.map\ndist/bin/plain.js\ndist/bin/plain.js.map\ndist/bin/production-active-profile.d.ts\ndist/bin/production-active-profile.d.ts.map\ndist/bin/production-active-profile.js\ndist/bin/production-active-profile.js.map\ndist/bin/production-application.d.ts\ndist/bin/production-application.d.ts.map\ndist/bin/production-application.js\ndist/bin/production-application.js.map\ndist/bin/production-bridge-client.d.ts\ndist/bin/production-bridge-client.d.ts.map\ndist/bin/production-bridge-client.js\ndist/bin/production-bridge-client.js.map\ndist/bin/production-bridge-discovery.d.ts\ndist/bin/production-bridge-discovery.d.ts.map\ndist/bin/production-bridge-discovery.js\ndist/bin/production-bridge-discovery.js.map\ndist/bin/production-config-mutation-lock.d.ts\ndist/bin/production-config-mutation-lock.d.ts.map\ndist/bin/production-config-mutation-lock.js\ndist/bin/production-config-mutation-lock.js.map\ndist/bin/production-connection-action-options.d.ts\ndist/bin/production-connection-action-options.d.ts.map\ndist/bin/production-connection-action-options.js\ndist/bin/production-connection-action-options.js.map\ndist/bin/production-connection-actions.d.ts\ndist/bin/production-connection-actions.d.ts.map\ndist/bin/production-connection-actions.js\ndist/bin/production-connection-actions.js.map\ndist/bin/production-connection-catalog.d.ts\ndist/bin/production-connection-catalog.d.ts.map\ndist/bin/production-connection-catalog.js\ndist/bin/production-connection-catalog.js.map\ndist/bin/production-connection-credential-cleanup.d.ts\ndist/bin/production-connection-credential-cleanup.d.ts.map\ndist/bin/production-connection-credential-cleanup.js\ndist/bin/production-connection-credential-cleanup.js.map\ndist/bin/production-connection-credential-removal-record.d.ts\ndist/bin/production-connection-credential-removal-record.d.ts.map\ndist/bin/production-connection-credential-removal-record.js\ndist/bin/production-connection-credential-removal-record.js.map\ndist/bin/production-connection-removal.d.ts\ndist/bin/production-connection-removal.d.ts.map\ndist/bin/production-connection-removal.js\ndist/bin/production-connection-removal.js.map\ndist/bin/production-connection-replay.d.ts\ndist/bin/production-connection-replay.d.ts.map\ndist/bin/production-connection-replay.js\ndist/bin/production-connection-replay.js.map\ndist/bin/production-credential-context.d.ts\ndist/bin/production-credential-context.d.ts.map\ndist/bin/production-credential-context.js\ndist/bin/production-credential-context.js.map\ndist/bin/production-credential-reference.d.ts\ndist/bin/production-credential-reference.d.ts.map\ndist/bin/production-credential-reference.js\ndist/bin/production-credential-reference.js.map\ndist/bin/production-key-path.d.ts\ndist/bin/production-key-path.d.ts.map\ndist/bin/production-key-path.js\ndist/bin/production-key-path.js.map\ndist/bin/production-profile-projection.d.ts\ndist/bin/production-profile-projection.d.ts.map\ndist/bin/production-profile-projection.js\ndist/bin/production-profile-projection.js.map\ndist/bin/production-setup-credentials.d.ts\ndist/bin/production-setup-credentials.d.ts.map\ndist/bin/production-setup-credentials.js\ndist/bin/production-setup-credentials.js.map\ndist/bin/production-setup-discovery.d.ts\ndist/bin/production-setup-discovery.d.ts.map\ndist/bin/production-setup-discovery.js\ndist/bin/production-setup-discovery.js.map\ndist/bin/production-setup-persistence.d.ts\ndist/bin/production-setup-persistence.d.ts.map\ndist/bin/production-setup-persistence.js\ndist/bin/production-setup-persistence.js.map\ndist/bin/production-setup-transition.d.ts\ndist/bin/production-setup-transition.d.ts.map\ndist/bin/production-setup-transition.js\ndist/bin/production-setup-transition.js.map\ndist/bin/production-setup-types.d.ts\ndist/bin/production-setup-types.d.ts.map\ndist/bin/production-setup-types.js\ndist/bin/production-setup-types.js.map\ndist/bin/production-setup-validation.d.ts\ndist/bin/production-setup-validation.d.ts.map\ndist/bin/production-setup-validation.js\ndist/bin/production-setup-validation.js.map\ndist/bin/production-setup.d.ts\ndist/bin/production-setup.d.ts.map\ndist/bin/production-setup.js\ndist/bin/production-setup.js.map\ndist/bin/production-startup.d.ts\ndist/bin/production-startup.d.ts.map\ndist/bin/production-startup.js\ndist/bin/production-startup.js.map\ndist/bin/runtime-startup-options.d.ts\ndist/bin/runtime-startup-options.d.ts.map\ndist/bin/runtime-startup-options.js\ndist/bin/runtime-startup-options.js.map\ndist/bin/state-path.d.ts\ndist/bin/state-path.d.ts.map\ndist/bin/state-path.js\ndist/bin/state-path.js.map\ndist/domain/analysis-model-call.d.ts\ndist/domain/analysis-model-call.d.ts.map\ndist/domain/analysis-model-call.js\ndist/domain/analysis-model-call.js.map\ndist/domain/bounded-structured.d.ts\ndist/domain/bounded-structured.d.ts.map\ndist/domain/bounded-structured.js\ndist/domain/bounded-structured.js.map\ndist/domain/canonical-json.d.ts\ndist/domain/canonical-json.d.ts.map\ndist/domain/canonical-json.js\ndist/domain/canonical-json.js.map\ndist/domain/canonical.d.ts\ndist/domain/canonical.d.ts.map\ndist/domain/canonical.js\ndist/domain/canonical.js.map\ndist/domain/code-unit-order.d.ts\ndist/domain/code-unit-order.d.ts.map\ndist/domain/code-unit-order.js\ndist/domain/code-unit-order.js.map\ndist/domain/connection-removal.d.ts\ndist/domain/connection-removal.d.ts.map\ndist/domain/connection-removal.js\ndist/domain/connection-removal.js.map\ndist/domain/content-budget.d.ts\ndist/domain/content-budget.d.ts.map\ndist/domain/content-budget.js\ndist/domain/content-budget.js.map\ndist/domain/entities-base.d.ts\ndist/domain/entities-base.d.ts.map\ndist/domain/entities-base.js\ndist/domain/entities-base.js.map\ndist/domain/entities-core.d.ts\ndist/domain/entities-core.d.ts.map\ndist/domain/entities-core.js\ndist/domain/entities-core.js.map\ndist/domain/entities-graph.d.ts\ndist/domain/entities-graph.d.ts.map\ndist/domain/entities-graph.js\ndist/domain/entities-graph.js.map\ndist/domain/entities-interactions.d.ts\ndist/domain/entities-interactions.d.ts.map\ndist/domain/entities-interactions.js\ndist/domain/entities-interactions.js.map\ndist/domain/entities-messages.d.ts\ndist/domain/entities-messages.d.ts.map\ndist/domain/entities-messages.js\ndist/domain/entities-messages.js.map\ndist/domain/entities-runtime.d.ts\ndist/domain/entities-runtime.d.ts.map\ndist/domain/entities-runtime.js\ndist/domain/entities-runtime.js.map\ndist/domain/entities.d.ts\ndist/domain/entities.d.ts.map\ndist/domain/entities.js\ndist/domain/entities.js.map\ndist/domain/events-legacy.d.ts\ndist/domain/events-legacy.d.ts.map\ndist/domain/events-legacy.js\ndist/domain/events-legacy.js.map\ndist/domain/events.d.ts\ndist/domain/events.d.ts.map\ndist/domain/events.js\ndist/domain/events.js.map\ndist/domain/execution-observation.d.ts\ndist/domain/execution-observation.d.ts.map\ndist/domain/execution-observation.js\ndist/domain/execution-observation.js.map\ndist/domain/graph-records.d.ts\ndist/domain/graph-records.d.ts.map\ndist/domain/graph-records.js\ndist/domain/graph-records.js.map\ndist/domain/ids-core.d.ts\ndist/domain/ids-core.d.ts.map\ndist/domain/ids-core.js\ndist/domain/ids-core.js.map\ndist/domain/ids-types.d.ts\ndist/domain/ids-types.d.ts.map\ndist/domain/ids-types.js\ndist/domain/ids-types.js.map\ndist/domain/ids-values.d.ts\ndist/domain/ids-values.d.ts.map\ndist/domain/ids-values.js\ndist/domain/ids-values.js.map\ndist/domain/ids.d.ts\ndist/domain/ids.d.ts.map\ndist/domain/ids.js\ndist/domain/ids.js.map\ndist/domain/interaction-identity.d.ts\ndist/domain/interaction-identity.d.ts.map\ndist/domain/interaction-identity.js\ndist/domain/interaction-identity.js.map\ndist/domain/interaction-timeout.d.ts\ndist/domain/interaction-timeout.d.ts.map\ndist/domain/interaction-timeout.js\ndist/domain/interaction-timeout.js.map\ndist/domain/invariants-base.d.ts\ndist/domain/invariants-base.d.ts.map\ndist/domain/invariants-base.js\ndist/domain/invariants-base.js.map\ndist/domain/invariants-conversation.d.ts\ndist/domain/invariants-conversation.d.ts.map\ndist/domain/invariants-conversation.js\ndist/domain/invariants-conversation.js.map\ndist/domain/invariants-profile.d.ts\ndist/domain/invariants-profile.d.ts.map\ndist/domain/invariants-profile.js\ndist/domain/invariants-profile.js.map\ndist/domain/invariants-relations.d.ts\ndist/domain/invariants-relations.d.ts.map\ndist/domain/invariants-relations.js\ndist/domain/invariants-relations.js.map\ndist/domain/invariants-retained-admission.d.ts\ndist/domain/invariants-retained-admission.d.ts.map\ndist/domain/invariants-retained-admission.js\ndist/domain/invariants-retained-admission.js.map\ndist/domain/invariants-run.d.ts\ndist/domain/invariants-run.d.ts.map\ndist/domain/invariants-run.js\ndist/domain/invariants-run.js.map\ndist/domain/invariants-runtime.d.ts\ndist/domain/invariants-runtime.d.ts.map\ndist/domain/invariants-runtime.js\ndist/domain/invariants-runtime.js.map\ndist/domain/invariants-state.d.ts\ndist/domain/invariants-state.d.ts.map\ndist/domain/invariants-state.js\ndist/domain/invariants-state.js.map\ndist/domain/invariants.d.ts\ndist/domain/invariants.d.ts.map\ndist/domain/invariants.js\ndist/domain/invariants.js.map\ndist/domain/legacy-interaction-snapshot.d.ts\ndist/domain/legacy-interaction-snapshot.d.ts.map\ndist/domain/legacy-interaction-snapshot.js\ndist/domain/legacy-interaction-snapshot.js.map\ndist/domain/materialization-receipt.d.ts\ndist/domain/materialization-receipt.d.ts.map\ndist/domain/materialization-receipt.js\ndist/domain/materialization-receipt.js.map\ndist/domain/materialized-state-snapshot.d.ts\ndist/domain/materialized-state-snapshot.d.ts.map\ndist/domain/materialized-state-snapshot.js\ndist/domain/materialized-state-snapshot.js.map\ndist/domain/materialized-state.d.ts\ndist/domain/materialized-state.d.ts.map\ndist/domain/materialized-state.js\ndist/domain/materialized-state.js.map\ndist/domain/projection-checksum.d.ts\ndist/domain/projection-checksum.d.ts.map\ndist/domain/projection-checksum.js\ndist/domain/projection-checksum.js.map\ndist/domain/provider-values.d.ts\ndist/domain/provider-values.d.ts.map\ndist/domain/provider-values.js\ndist/domain/provider-values.js.map\ndist/domain/public-metadata.d.ts\ndist/domain/public-metadata.d.ts.map\ndist/domain/public-metadata.js\ndist/domain/public-metadata.js.map\ndist/domain/receipts.d.ts\ndist/domain/receipts.d.ts.map\ndist/domain/receipts.js\ndist/domain/receipts.js.map\ndist/domain/redaction.d.ts\ndist/domain/redaction.d.ts.map\ndist/domain/redaction.js\ndist/domain/redaction.js.map\ndist/domain/reducer-content.d.ts\ndist/domain/reducer-content.d.ts.map\ndist/domain/reducer-content.js\ndist/domain/reducer-content.js.map\ndist/domain/reducer-conversation-events.d.ts\ndist/domain/reducer-conversation-events.d.ts.map\ndist/domain/reducer-conversation-events.js\ndist/domain/reducer-conversation-events.js.map\ndist/domain/reducer-domain-events.d.ts\ndist/domain/reducer-domain-events.d.ts.map\ndist/domain/reducer-domain-events.js\ndist/domain/reducer-domain-events.js.map\ndist/domain/reducer-execution-observation.d.ts\ndist/domain/reducer-execution-observation.d.ts.map\ndist/domain/reducer-execution-observation.js\ndist/domain/reducer-execution-observation.js.map\ndist/domain/reducer-helpers.d.ts\ndist/domain/reducer-helpers.d.ts.map\ndist/domain/reducer-helpers.js\ndist/domain/reducer-helpers.js.map\ndist/domain/reducer-interactions.d.ts\ndist/domain/reducer-interactions.d.ts.map\ndist/domain/reducer-interactions.js\ndist/domain/reducer-interactions.js.map\ndist/domain/reducer-legacy.d.ts\ndist/domain/reducer-legacy.d.ts.map\ndist/domain/reducer-legacy.js\ndist/domain/reducer-legacy.js.map\ndist/domain/reducer-lifecycle.d.ts\ndist/domain/reducer-lifecycle.d.ts.map\ndist/domain/reducer-lifecycle.js\ndist/domain/reducer-lifecycle.js.map\ndist/domain/reducer-replay.d.ts\ndist/domain/reducer-replay.d.ts.map\ndist/domain/reducer-replay.js\ndist/domain/reducer-replay.js.map\ndist/domain/reducer-retained-admission.d.ts\ndist/domain/reducer-retained-admission.d.ts.map\ndist/domain/reducer-retained-admission.js\ndist/domain/reducer-retained-admission.js.map\ndist/domain/reducer-run-graph.d.ts\ndist/domain/reducer-run-graph.d.ts.map\ndist/domain/reducer-run-graph.js\ndist/domain/reducer-run-graph.js.map\ndist/domain/reducer-runtime.d.ts\ndist/domain/reducer-runtime.d.ts.map\ndist/domain/reducer-runtime.js\ndist/domain/reducer-runtime.js.map\ndist/domain/reducer-support.d.ts\ndist/domain/reducer-support.d.ts.map\ndist/domain/reducer-support.js\ndist/domain/reducer-support.js.map\ndist/domain/reducer.d.ts\ndist/domain/reducer.d.ts.map\ndist/domain/reducer.js\ndist/domain/reducer.js.map\ndist/domain/run-contracts.d.ts\ndist/domain/run-contracts.d.ts.map\ndist/domain/run-contracts.js\ndist/domain/run-contracts.js.map\ndist/domain/run-interactions.d.ts\ndist/domain/run-interactions.d.ts.map\ndist/domain/run-interactions.js\ndist/domain/run-interactions.js.map\ndist/domain/run-usage.d.ts\ndist/domain/run-usage.d.ts.map\ndist/domain/run-usage.js\ndist/domain/run-usage.js.map\ndist/domain/runtime-diagnostics.d.ts\ndist/domain/runtime-diagnostics.d.ts.map\ndist/domain/runtime-diagnostics.js\ndist/domain/runtime-diagnostics.js.map\ndist/domain/runtime-events.d.ts\ndist/domain/runtime-events.d.ts.map\ndist/domain/runtime-events.js\ndist/domain/runtime-events.js.map\ndist/domain/runtime-projection.d.ts\ndist/domain/runtime-projection.d.ts.map\ndist/domain/runtime-projection.js\ndist/domain/runtime-projection.js.map\ndist/domain/secret-sanitizer.d.ts\ndist/domain/secret-sanitizer.d.ts.map\ndist/domain/secret-sanitizer.js\ndist/domain/secret-sanitizer.js.map\ndist/domain/state.d.ts\ndist/domain/state.d.ts.map\ndist/domain/state.js\ndist/domain/state.js.map\ndist/domain/terminal-sanitizer.d.ts\ndist/domain/terminal-sanitizer.d.ts.map\ndist/domain/terminal-sanitizer.js\ndist/domain/terminal-sanitizer.js.map\ndist/domain/text.d.ts\ndist/domain/text.d.ts.map\ndist/domain/text.js\ndist/domain/text.js.map\ndist/eval/calibration.d.ts\ndist/eval/calibration.d.ts.map\ndist/eval/calibration.js\ndist/eval/calibration.js.map\ndist/eval/campaigns.d.ts\ndist/eval/campaigns.d.ts.map\ndist/eval/campaigns.js\ndist/eval/campaigns.js.map\ndist/eval/cases.d.ts\ndist/eval/cases.d.ts.map\ndist/eval/cases.js\ndist/eval/cases.js.map\ndist/eval/execution.d.ts\ndist/eval/execution.d.ts.map\ndist/eval/execution.js\ndist/eval/execution.js.map\ndist/eval/fixtures.d.ts\ndist/eval/fixtures.d.ts.map\ndist/eval/fixtures.js\ndist/eval/fixtures.js.map\ndist/eval/product-path.d.ts\ndist/eval/product-path.d.ts.map\ndist/eval/product-path.js\ndist/eval/product-path.js.map\ndist/eval/record-builder.d.ts\ndist/eval/record-builder.d.ts.map\ndist/eval/record-builder.js\ndist/eval/record-builder.js.map\ndist/eval/records.d.ts\ndist/eval/records.d.ts.map\ndist/eval/records.js\ndist/eval/records.js.map\ndist/eval/release-decision.d.ts\ndist/eval/release-decision.d.ts.map\ndist/eval/release-decision.js\ndist/eval/release-decision.js.map\ndist/eval/release-markers.d.ts\ndist/eval/release-markers.d.ts.map\ndist/eval/release-markers.js\ndist/eval/release-markers.js.map\ndist/eval/runner.d.ts\ndist/eval/runner.d.ts.map\ndist/eval/runner.js\ndist/eval/runner.js.map\ndist/eval/types.d.ts\ndist/eval/types.d.ts.map\ndist/eval/types.js\ndist/eval/types.js.map\ndist/index.d.ts\ndist/index.d.ts.map\ndist/index.js\ndist/index.js.map\ndist/installed-package-version.d.ts\ndist/installed-package-version.d.ts.map\ndist/installed-package-version.js\ndist/installed-package-version.js.map\ndist/ports/clock.d.ts\ndist/ports/clock.d.ts.map\ndist/ports/clock.js\ndist/ports/clock.js.map\ndist/ports/connection-lifecycle.d.ts\ndist/ports/connection-lifecycle.d.ts.map\ndist/ports/connection-lifecycle.js\ndist/ports/connection-lifecycle.js.map\ndist/ports/credentials.d.ts\ndist/ports/credentials.d.ts.map\ndist/ports/credentials.js\ndist/ports/credentials.js.map\ndist/ports/effect-storage.d.ts\ndist/ports/effect-storage.d.ts.map\ndist/ports/effect-storage.js\ndist/ports/effect-storage.js.map\ndist/ports/execution.d.ts\ndist/ports/execution.d.ts.map\ndist/ports/execution.js\ndist/ports/execution.js.map\ndist/ports/ids.d.ts\ndist/ports/ids.d.ts.map\ndist/ports/ids.js\ndist/ports/ids.js.map\ndist/ports/native-interactive-execution.d.ts\ndist/ports/native-interactive-execution.d.ts.map\ndist/ports/native-interactive-execution.js\ndist/ports/native-interactive-execution.js.map\ndist/ports/native-terminal-transport.d.ts\ndist/ports/native-terminal-transport.d.ts.map\ndist/ports/native-terminal-transport.js\ndist/ports/native-terminal-transport.js.map\ndist/ports/storage.d.ts\ndist/ports/storage.d.ts.map\ndist/ports/storage.js\ndist/ports/storage.js.map\ndist/startup/chunks/analysis-comparison-facts-IOBARSYV.js\ndist/startup/chunks/analysis-comparison-facts-IOBARSYV.js.map\ndist/startup/chunks/analysis-comparison-record-VMUVZPUV.js\ndist/startup/chunks/analysis-comparison-record-VMUVZPUV.js.map\ndist/startup/chunks/chunk-2B6P3EZQ.js\ndist/startup/chunks/chunk-2B6P3EZQ.js.map\ndist/startup/chunks/chunk-2LMYRCIG.js\ndist/startup/chunks/chunk-2LMYRCIG.js.map\ndist/startup/chunks/chunk-3SLVNOQZ.js\ndist/startup/chunks/chunk-3SLVNOQZ.js.map\ndist/startup/chunks/chunk-4GTWJJDM.js\ndist/startup/chunks/chunk-4GTWJJDM.js.map\ndist/startup/chunks/chunk-5DZCAB7D.js\ndist/startup/chunks/chunk-5DZCAB7D.js.map\ndist/startup/chunks/chunk-5PAWXR2Q.js\ndist/startup/chunks/chunk-5PAWXR2Q.js.map\ndist/startup/chunks/chunk-6G7QKB6J.js\ndist/startup/chunks/chunk-6G7QKB6J.js.map\ndist/startup/chunks/chunk-AUQCJYW5.js\ndist/startup/chunks/chunk-AUQCJYW5.js.map\ndist/startup/chunks/chunk-AW7EVAP4.js\ndist/startup/chunks/chunk-AW7EVAP4.js.map\ndist/startup/chunks/chunk-BG5Y2J53.js\ndist/startup/chunks/chunk-BG5Y2J53.js.map\ndist/startup/chunks/chunk-CS5FUFHS.js\ndist/startup/chunks/chunk-CS5FUFHS.js.map\ndist/startup/chunks/chunk-DLR6FLQV.js\ndist/startup/chunks/chunk-DLR6FLQV.js.map\ndist/startup/chunks/chunk-GAAK54Z5.js\ndist/startup/chunks/chunk-GAAK54Z5.js.map\ndist/startup/chunks/chunk-HJIA4IFJ.js\ndist/startup/chunks/chunk-HJIA4IFJ.js.map\ndist/startup/chunks/chunk-J3SNVD3E.js\ndist/startup/chunks/chunk-J3SNVD3E.js.map\ndist/startup/chunks/chunk-J4OIG5BQ.js\ndist/startup/chunks/chunk-J4OIG5BQ.js.map\ndist/startup/chunks/chunk-MY6OJCTQ.js\ndist/startup/chunks/chunk-MY6OJCTQ.js.map\ndist/startup/chunks/chunk-O6K46SFN.js\ndist/startup/chunks/chunk-O6K46SFN.js.map\ndist/startup/chunks/chunk-ONLHSYEO.js\ndist/startup/chunks/chunk-ONLHSYEO.js.map\ndist/startup/chunks/chunk-PAPTIOCL.js\ndist/startup/chunks/chunk-PAPTIOCL.js.map\ndist/startup/chunks/chunk-PEOEX5QP.js\ndist/startup/chunks/chunk-PEOEX5QP.js.map\ndist/startup/chunks/chunk-PXRVFPRL.js\ndist/startup/chunks/chunk-PXRVFPRL.js.map\ndist/startup/chunks/chunk-QBLXCLCU.js\ndist/startup/chunks/chunk-QBLXCLCU.js.map\ndist/startup/chunks/chunk-STK3FQ4H.js\ndist/startup/chunks/chunk-STK3FQ4H.js.map\ndist/startup/chunks/chunk-TUHBQUZU.js\ndist/startup/chunks/chunk-TUHBQUZU.js.map\ndist/startup/chunks/chunk-TYQ67ZUK.js\ndist/startup/chunks/chunk-TYQ67ZUK.js.map\ndist/startup/chunks/chunk-UTHORCP6.js\ndist/startup/chunks/chunk-UTHORCP6.js.map\ndist/startup/chunks/chunk-V7LWVMBP.js\ndist/startup/chunks/chunk-V7LWVMBP.js.map\ndist/startup/chunks/chunk-V7ZXNCA7.js\ndist/startup/chunks/chunk-V7ZXNCA7.js.map\ndist/startup/chunks/chunk-VPNFJK5P.js\ndist/startup/chunks/chunk-VPNFJK5P.js.map\ndist/startup/chunks/chunk-VRWZ5M2N.js\ndist/startup/chunks/chunk-VRWZ5M2N.js.map\ndist/startup/chunks/chunk-VTNLVERY.js\ndist/startup/chunks/chunk-VTNLVERY.js.map\ndist/startup/chunks/chunk-XQHJBQV6.js\ndist/startup/chunks/chunk-XQHJBQV6.js.map\ndist/startup/chunks/chunk-Z2S4GNUU.js\ndist/startup/chunks/chunk-Z2S4GNUU.js.map\ndist/startup/chunks/chunk-ZFNRSBQG.js\ndist/startup/chunks/chunk-ZFNRSBQG.js.map\ndist/startup/chunks/chunk-ZM4JCKGK.js\ndist/startup/chunks/chunk-ZM4JCKGK.js.map\ndist/startup/chunks/chunk-ZW6RVXC2.js\ndist/startup/chunks/chunk-ZW6RVXC2.js.map\ndist/startup/chunks/configuration-wizard-CDE3TSVK.js\ndist/startup/chunks/configuration-wizard-CDE3TSVK.js.map\ndist/startup/chunks/production-composition-NJF25AMK.js\ndist/startup/chunks/production-composition-NJF25AMK.js.map\ndist/startup/chunks/production-connection-providers-4ZGCO4CP.js\ndist/startup/chunks/production-connection-providers-4ZGCO4CP.js.map\ndist/startup/chunks/production-connections-6PC7MQEH.js\ndist/startup/chunks/production-connections-6PC7MQEH.js.map\ndist/startup/chunks/profile-connection-dispatch-KOESUM2H.js\ndist/startup/chunks/profile-connection-dispatch-KOESUM2H.js.map\ndist/startup/chunks/supervisor-control-F4IMJYTH.js\ndist/startup/chunks/supervisor-control-F4IMJYTH.js.map\ndist/startup/chunks/supervisor-watch-X6TXO6GN.js\ndist/startup/chunks/supervisor-watch-X6TXO6GN.js.map\ndist/startup/chunks/trace-store-3NMWKT6T.js\ndist/startup/chunks/trace-store-3NMWKT6T.js.map\ndist/startup/chunks/ui-dispatch-ABDBUPTD.js\ndist/startup/chunks/ui-dispatch-ABDBUPTD.js.map\ndist/startup/durable-runtime.d.ts\ndist/startup/durable-runtime.d.ts.map\ndist/startup/durable-runtime.js\ndist/startup/durable-runtime.js.map\ndist/startup/preview-runtime.d.ts\ndist/startup/preview-runtime.d.ts.map\ndist/startup/preview-runtime.js\ndist/startup/preview-runtime.js.map\ndist/startup/terminal-runtime.d.ts\ndist/startup/terminal-runtime.d.ts.map\ndist/startup/terminal-runtime.js\ndist/startup/terminal-runtime.js.map\ndist/startup/terminal-signal-latch.d.ts\ndist/startup/terminal-signal-latch.d.ts.map\ndist/startup/terminal-signal-latch.js\ndist/startup/terminal-signal-latch.js.map\ndist/testing/deterministic-backend.d.ts\ndist/testing/deterministic-backend.d.ts.map\ndist/testing/deterministic-backend.js\ndist/testing/deterministic-backend.js.map\ndist/testing/product-demo-fixture.d.ts\ndist/testing/product-demo-fixture.d.ts.map\ndist/testing/product-demo-fixture.js\ndist/testing/product-demo-fixture.js.map\ndist/testing/runtime-contract-fixtures.d.ts\ndist/testing/runtime-contract-fixtures.d.ts.map\ndist/testing/runtime-contract-fixtures.js\ndist/testing/runtime-contract-fixtures.js.map\ndist/testing/supervision-fixture.d.ts\ndist/testing/supervision-fixture.d.ts.map\ndist/testing/supervision-fixture.js\ndist/testing/supervision-fixture.js.map\ndist/testing/supervision-ui-fixture.d.ts\ndist/testing/supervision-ui-fixture.d.ts.map\ndist/testing/supervision-ui-fixture.js\ndist/testing/supervision-ui-fixture.js.map\ndist/version.d.ts\ndist/version.d.ts.map\ndist/version.js\ndist/version.js.map\ndist/views/headless/bounded-output.d.ts\ndist/views/headless/bounded-output.d.ts.map\ndist/views/headless/bounded-output.js\ndist/views/headless/bounded-output.js.map\ndist/views/headless/protocol-limits.d.ts\ndist/views/headless/protocol-limits.d.ts.map\ndist/views/headless/protocol-limits.js\ndist/views/headless/protocol-limits.js.map\ndist/views/headless/protocol.d.ts\ndist/views/headless/protocol.d.ts.map\ndist/views/headless/protocol.js\ndist/views/headless/protocol.js.map\ndist/views/headless/rpc-automation-commands.d.ts\ndist/views/headless/rpc-automation-commands.d.ts.map\ndist/views/headless/rpc-automation-commands.js\ndist/views/headless/rpc-automation-commands.js.map\ndist/views/headless/rpc-errors.d.ts\ndist/views/headless/rpc-errors.d.ts.map\ndist/views/headless/rpc-errors.js\ndist/views/headless/rpc-errors.js.map\ndist/views/headless/rpc-interaction-commands.d.ts\ndist/views/headless/rpc-interaction-commands.d.ts.map\ndist/views/headless/rpc-interaction-commands.js\ndist/views/headless/rpc-interaction-commands.js.map\ndist/views/headless/rpc-parser.d.ts\ndist/views/headless/rpc-parser.d.ts.map\ndist/views/headless/rpc-parser.js\ndist/views/headless/rpc-parser.js.map\ndist/views/headless/rpc-types.d.ts\ndist/views/headless/rpc-types.d.ts.map\ndist/views/headless/rpc-types.js\ndist/views/headless/rpc-types.js.map\ndist/views/headless/rpc.d.ts\ndist/views/headless/rpc.d.ts.map\ndist/views/headless/rpc.js\ndist/views/headless/rpc.js.map\ndist/views/shared/analysis-model-call-presentation.d.ts\ndist/views/shared/analysis-model-call-presentation.d.ts.map\ndist/views/shared/analysis-model-call-presentation.js\ndist/views/shared/analysis-model-call-presentation.js.map\ndist/views/shared/analysis-presentation.d.ts\ndist/views/shared/analysis-presentation.d.ts.map\ndist/views/shared/analysis-presentation.js\ndist/views/shared/analysis-presentation.js.map\ndist/views/shared/appearance.d.ts\ndist/views/shared/appearance.d.ts.map\ndist/views/shared/appearance.js\ndist/views/shared/appearance.js.map\ndist/views/shared/canonical.d.ts\ndist/views/shared/canonical.d.ts.map\ndist/views/shared/canonical.js\ndist/views/shared/canonical.js.map\ndist/views/shared/command-registry.d.ts\ndist/views/shared/command-registry.d.ts.map\ndist/views/shared/command-registry.js\ndist/views/shared/command-registry.js.map\ndist/views/shared/command-table.d.ts\ndist/views/shared/command-table.d.ts.map\ndist/views/shared/command-table.js\ndist/views/shared/command-table.js.map\ndist/views/shared/comparison-presentation.d.ts\ndist/views/shared/comparison-presentation.d.ts.map\ndist/views/shared/comparison-presentation.js\ndist/views/shared/comparison-presentation.js.map\ndist/views/shared/connection-lifecycle.d.ts\ndist/views/shared/connection-lifecycle.d.ts.map\ndist/views/shared/connection-lifecycle.js\ndist/views/shared/connection-lifecycle.js.map\ndist/views/shared/duration.d.ts\ndist/views/shared/duration.d.ts.map\ndist/views/shared/duration.js\ndist/views/shared/duration.js.map\ndist/views/shared/environment-presentation.d.ts\ndist/views/shared/environment-presentation.d.ts.map\ndist/views/shared/environment-presentation.js\ndist/views/shared/environment-presentation.js.map\ndist/views/shared/headless-commands.d.ts\ndist/views/shared/headless-commands.d.ts.map\ndist/views/shared/headless-commands.js\ndist/views/shared/headless-commands.js.map\ndist/views/shared/intents.d.ts\ndist/views/shared/intents.d.ts.map\ndist/views/shared/intents.js\ndist/views/shared/intents.js.map\ndist/views/shared/models.d.ts\ndist/views/shared/models.d.ts.map\ndist/views/shared/models.js\ndist/views/shared/models.js.map\ndist/views/shared/native-interactive-actions.d.ts\ndist/views/shared/native-interactive-actions.d.ts.map\ndist/views/shared/native-interactive-actions.js\ndist/views/shared/native-interactive-actions.js.map\ndist/views/shared/plain-accessibility.d.ts\ndist/views/shared/plain-accessibility.d.ts.map\ndist/views/shared/plain-accessibility.js\ndist/views/shared/plain-accessibility.js.map\ndist/views/shared/sanitize.d.ts\ndist/views/shared/sanitize.d.ts.map\ndist/views/shared/sanitize.js\ndist/views/shared/sanitize.js.map\ndist/views/shared/semantic-activity-limit.d.ts\ndist/views/shared/semantic-activity-limit.d.ts.map\ndist/views/shared/semantic-activity-limit.js\ndist/views/shared/semantic-activity-limit.js.map\ndist/views/shared/semantic-activity.d.ts\ndist/views/shared/semantic-activity.d.ts.map\ndist/views/shared/semantic-activity.js\ndist/views/shared/semantic-activity.js.map\ndist/views/shared/semantic-details.d.ts\ndist/views/shared/semantic-details.d.ts.map\ndist/views/shared/semantic-details.js\ndist/views/shared/semantic-details.js.map\ndist/views/shared/semantic-graph-edges.d.ts\ndist/views/shared/semantic-graph-edges.d.ts.map\ndist/views/shared/semantic-graph-edges.js\ndist/views/shared/semantic-graph-edges.js.map\ndist/views/shared/semantic-graph-filters.d.ts\ndist/views/shared/semantic-graph-filters.d.ts.map\ndist/views/shared/semantic-graph-filters.js\ndist/views/shared/semantic-graph-filters.js.map\ndist/views/shared/semantic-graph-nodes.d.ts\ndist/views/shared/semantic-graph-nodes.d.ts.map\ndist/views/shared/semantic-graph-nodes.js\ndist/views/shared/semantic-graph-nodes.js.map\ndist/views/shared/semantic-graph.d.ts\ndist/views/shared/semantic-graph.d.ts.map\ndist/views/shared/semantic-graph.js\ndist/views/shared/semantic-graph.js.map\ndist/views/shared/semantic-projection.d.ts\ndist/views/shared/semantic-projection.d.ts.map\ndist/views/shared/semantic-projection.js\ndist/views/shared/semantic-projection.js.map\ndist/views/shared/semantic-query-scope.d.ts\ndist/views/shared/semantic-query-scope.d.ts.map\ndist/views/shared/semantic-query-scope.js\ndist/views/shared/semantic-query-scope.js.map\ndist/views/shared/semantic-query-types.d.ts\ndist/views/shared/semantic-query-types.d.ts.map\ndist/views/shared/semantic-query-types.js\ndist/views/shared/semantic-query-types.js.map\ndist/views/shared/usage-projection.d.ts\ndist/views/shared/usage-projection.d.ts.map\ndist/views/shared/usage-projection.js\ndist/views/shared/usage-projection.js.map\ndist/views/tui/activity-browser.d.ts\ndist/views/tui/activity-browser.d.ts.map\ndist/views/tui/activity-browser.js\ndist/views/tui/activity-browser.js.map\ndist/views/tui/activity-document.d.ts\ndist/views/tui/activity-document.d.ts.map\ndist/views/tui/activity-document.js\ndist/views/tui/activity-document.js.map\ndist/views/tui/activity.d.ts\ndist/views/tui/activity.d.ts.map\ndist/views/tui/activity.js\ndist/views/tui/activity.js.map\ndist/views/tui/analysis.d.ts\ndist/views/tui/analysis.d.ts.map\ndist/views/tui/analysis.js\ndist/views/tui/analysis.js.map\ndist/views/tui/autocomplete-guard.d.ts\ndist/views/tui/autocomplete-guard.d.ts.map\ndist/views/tui/autocomplete-guard.js\ndist/views/tui/autocomplete-guard.js.map\ndist/views/tui/automation-overlay-workflow.d.ts\ndist/views/tui/automation-overlay-workflow.d.ts.map\ndist/views/tui/automation-overlay-workflow.js\ndist/views/tui/automation-overlay-workflow.js.map\ndist/views/tui/automation-rule-panel.d.ts\ndist/views/tui/automation-rule-panel.d.ts.map\ndist/views/tui/automation-rule-panel.js\ndist/views/tui/automation-rule-panel.js.map\ndist/views/tui/automation-rule-presentation.d.ts\ndist/views/tui/automation-rule-presentation.d.ts.map\ndist/views/tui/automation-rule-presentation.js\ndist/views/tui/automation-rule-presentation.js.map\ndist/views/tui/automation-rule-response-editor.d.ts\ndist/views/tui/automation-rule-response-editor.d.ts.map\ndist/views/tui/automation-rule-response-editor.js\ndist/views/tui/automation-rule-response-editor.js.map\ndist/views/tui/command-palette.d.ts\ndist/views/tui/command-palette.d.ts.map\ndist/views/tui/command-palette.js\ndist/views/tui/command-palette.js.map\ndist/views/tui/comparison.d.ts\ndist/views/tui/comparison.d.ts.map\ndist/views/tui/comparison.js\ndist/views/tui/comparison.js.map\ndist/views/tui/composer-view.d.ts\ndist/views/tui/composer-view.d.ts.map\ndist/views/tui/composer-view.js\ndist/views/tui/composer-view.js.map\ndist/views/tui/configuration-credential.d.ts\ndist/views/tui/configuration-credential.d.ts.map\ndist/views/tui/configuration-credential.js\ndist/views/tui/configuration-credential.js.map\ndist/views/tui/configuration-presenters.d.ts\ndist/views/tui/configuration-presenters.d.ts.map\ndist/views/tui/configuration-presenters.js\ndist/views/tui/configuration-presenters.js.map\ndist/views/tui/configuration-responsive-text.d.ts\ndist/views/tui/configuration-responsive-text.d.ts.map\ndist/views/tui/configuration-responsive-text.js\ndist/views/tui/configuration-responsive-text.js.map\ndist/views/tui/configuration-review.d.ts\ndist/views/tui/configuration-review.d.ts.map\ndist/views/tui/configuration-review.js\ndist/views/tui/configuration-review.js.map\ndist/views/tui/configuration-wizard-presentation.d.ts\ndist/views/tui/configuration-wizard-presentation.d.ts.map\ndist/views/tui/configuration-wizard-presentation.js\ndist/views/tui/configuration-wizard-presentation.js.map\ndist/views/tui/configuration-wizard.d.ts\ndist/views/tui/configuration-wizard.d.ts.map\ndist/views/tui/configuration-wizard.js\ndist/views/tui/configuration-wizard.js.map\ndist/views/tui/connection-metadata-editor-actions.d.ts\ndist/views/tui/connection-metadata-editor-actions.d.ts.map\ndist/views/tui/connection-metadata-editor-actions.js\ndist/views/tui/connection-metadata-editor-actions.js.map\ndist/views/tui/connection-metadata-editor-inputs.d.ts\ndist/views/tui/connection-metadata-editor-inputs.d.ts.map\ndist/views/tui/connection-metadata-editor-inputs.js\ndist/views/tui/connection-metadata-editor-inputs.js.map\ndist/views/tui/connection-metadata-editor-model.d.ts\ndist/views/tui/connection-metadata-editor-model.d.ts.map\ndist/views/tui/connection-metadata-editor-model.js\ndist/views/tui/connection-metadata-editor-model.js.map\ndist/views/tui/connection-metadata-editor-presentation.d.ts\ndist/views/tui/connection-metadata-editor-presentation.d.ts.map\ndist/views/tui/connection-metadata-editor-presentation.js\ndist/views/tui/connection-metadata-editor-presentation.js.map\ndist/views/tui/connection-metadata-editor-rendering.d.ts\ndist/views/tui/connection-metadata-editor-rendering.d.ts.map\ndist/views/tui/connection-metadata-editor-rendering.js\ndist/views/tui/connection-metadata-editor-rendering.js.map\ndist/views/tui/connection-metadata-editor.d.ts\ndist/views/tui/connection-metadata-editor.d.ts.map\ndist/views/tui/connection-metadata-editor.js\ndist/views/tui/connection-metadata-editor.js.map\ndist/views/tui/connection-overlay-workflow.d.ts\ndist/views/tui/connection-overlay-workflow.d.ts.map\ndist/views/tui/connection-overlay-workflow.js\ndist/views/tui/connection-overlay-workflow.js.map\ndist/views/tui/connection-setup-actions.d.ts\ndist/views/tui/connection-setup-actions.d.ts.map\ndist/views/tui/connection-setup-actions.js\ndist/views/tui/connection-setup-actions.js.map\ndist/views/tui/connection-setup-rendering.d.ts\ndist/views/tui/connection-setup-rendering.d.ts.map\ndist/views/tui/connection-setup-rendering.js\ndist/views/tui/connection-setup-rendering.js.map\ndist/views/tui/connection-setup.d.ts\ndist/views/tui/connection-setup.d.ts.map\ndist/views/tui/connection-setup.js\ndist/views/tui/connection-setup.js.map\ndist/views/tui/conversation-dialogs.d.ts\ndist/views/tui/conversation-dialogs.d.ts.map\ndist/views/tui/conversation-dialogs.js\ndist/views/tui/conversation-dialogs.js.map\ndist/views/tui/conversation-overlay-actions.d.ts\ndist/views/tui/conversation-overlay-actions.d.ts.map\ndist/views/tui/conversation-overlay-actions.js\ndist/views/tui/conversation-overlay-actions.js.map\ndist/views/tui/conversation-overlay-helpers.d.ts\ndist/views/tui/conversation-overlay-helpers.d.ts.map\ndist/views/tui/conversation-overlay-helpers.js\ndist/views/tui/conversation-overlay-helpers.js.map\ndist/views/tui/conversation-overlays.d.ts\ndist/views/tui/conversation-overlays.d.ts.map\ndist/views/tui/conversation-overlays.js\ndist/views/tui/conversation-overlays.js.map\ndist/views/tui/details.d.ts\ndist/views/tui/details.d.ts.map\ndist/views/tui/details.js\ndist/views/tui/details.js.map\ndist/views/tui/dynamic-autocomplete.d.ts\ndist/views/tui/dynamic-autocomplete.d.ts.map\ndist/views/tui/dynamic-autocomplete.js\ndist/views/tui/dynamic-autocomplete.js.map\ndist/views/tui/entity-browser-layout.d.ts\ndist/views/tui/entity-browser-layout.d.ts.map\ndist/views/tui/entity-browser-layout.js\ndist/views/tui/entity-browser-layout.js.map\ndist/views/tui/entity-browser.d.ts\ndist/views/tui/entity-browser.d.ts.map\ndist/views/tui/entity-browser.js\ndist/views/tui/entity-browser.js.map\ndist/views/tui/execution-target.d.ts\ndist/views/tui/execution-target.d.ts.map\ndist/views/tui/execution-target.js\ndist/views/tui/execution-target.js.map\ndist/views/tui/focused-surface.d.ts\ndist/views/tui/focused-surface.d.ts.map\ndist/views/tui/focused-surface.js\ndist/views/tui/focused-surface.js.map\ndist/views/tui/fork-preview.d.ts\ndist/views/tui/fork-preview.d.ts.map\ndist/views/tui/fork-preview.js\ndist/views/tui/fork-preview.js.map\ndist/views/tui/graph.d.ts\ndist/views/tui/graph.d.ts.map\ndist/views/tui/graph.js\ndist/views/tui/graph.js.map\ndist/views/tui/help.d.ts\ndist/views/tui/help.d.ts.map\ndist/views/tui/help.js\ndist/views/tui/help.js.map\ndist/views/tui/interaction-automation-response.d.ts\ndist/views/tui/interaction-automation-response.d.ts.map\ndist/views/tui/interaction-automation-response.js\ndist/views/tui/interaction-automation-response.js.map\ndist/views/tui/interaction-decisions.d.ts\ndist/views/tui/interaction-decisions.d.ts.map\ndist/views/tui/interaction-decisions.js\ndist/views/tui/interaction-decisions.js.map\ndist/views/tui/interaction-input-response.d.ts\ndist/views/tui/interaction-input-response.d.ts.map\ndist/views/tui/interaction-input-response.js\ndist/views/tui/interaction-input-response.js.map\ndist/views/tui/interaction-presentation.d.ts\ndist/views/tui/interaction-presentation.d.ts.map\ndist/views/tui/interaction-presentation.js\ndist/views/tui/interaction-presentation.js.map\ndist/views/tui/interaction.d.ts\ndist/views/tui/interaction.d.ts.map\ndist/views/tui/interaction.js\ndist/views/tui/interaction.js.map\ndist/views/tui/keyboard.d.ts\ndist/views/tui/keyboard.d.ts.map\ndist/views/tui/keyboard.js\ndist/views/tui/keyboard.js.map\ndist/views/tui/layout.d.ts\ndist/views/tui/layout.d.ts.map\ndist/views/tui/layout.js\ndist/views/tui/layout.js.map\ndist/views/tui/measurement-display.d.ts\ndist/views/tui/measurement-display.d.ts.map\ndist/views/tui/measurement-display.js\ndist/views/tui/measurement-display.js.map\ndist/views/tui/modal-coordinator.d.ts\ndist/views/tui/modal-coordinator.d.ts.map\ndist/views/tui/modal-coordinator.js\ndist/views/tui/modal-coordinator.js.map\ndist/views/tui/profile-compatibility.d.ts\ndist/views/tui/profile-compatibility.d.ts.map\ndist/views/tui/profile-compatibility.js\ndist/views/tui/profile-compatibility.js.map\ndist/views/tui/profile-editor-actions.d.ts\ndist/views/tui/profile-editor-actions.d.ts.map\ndist/views/tui/profile-editor-actions.js\ndist/views/tui/profile-editor-actions.js.map\ndist/views/tui/profile-editor-rendering.d.ts\ndist/views/tui/profile-editor-rendering.d.ts.map\ndist/views/tui/profile-editor-rendering.js\ndist/views/tui/profile-editor-rendering.js.map\ndist/views/tui/profile-editor.d.ts\ndist/views/tui/profile-editor.d.ts.map\ndist/views/tui/profile-editor.js\ndist/views/tui/profile-editor.js.map\ndist/views/tui/safe-markdown.d.ts\ndist/views/tui/safe-markdown.d.ts.map\ndist/views/tui/safe-markdown.js\ndist/views/tui/safe-markdown.js.map\ndist/views/tui/secret-input.d.ts\ndist/views/tui/secret-input.d.ts.map\ndist/views/tui/secret-input.js\ndist/views/tui/secret-input.js.map\ndist/views/tui/selector.d.ts\ndist/views/tui/selector.d.ts.map\ndist/views/tui/selector.js\ndist/views/tui/selector.js.map\ndist/views/tui/supervisor-actions.d.ts\ndist/views/tui/supervisor-actions.d.ts.map\ndist/views/tui/supervisor-actions.js\ndist/views/tui/supervisor-actions.js.map\ndist/views/tui/terminal-app.d.ts\ndist/views/tui/terminal-app.d.ts.map\ndist/views/tui/terminal-app.js\ndist/views/tui/terminal-app.js.map\ndist/views/tui/terminal-chrome.d.ts\ndist/views/tui/terminal-chrome.d.ts.map\ndist/views/tui/terminal-chrome.js\ndist/views/tui/terminal-chrome.js.map\ndist/views/tui/terminal-command-controller.d.ts\ndist/views/tui/terminal-command-controller.d.ts.map\ndist/views/tui/terminal-command-controller.js\ndist/views/tui/terminal-command-controller.js.map\ndist/views/tui/terminal-compatibility.d.ts\ndist/views/tui/terminal-compatibility.d.ts.map\ndist/views/tui/terminal-compatibility.js\ndist/views/tui/terminal-compatibility.js.map\ndist/views/tui/terminal-drafts.d.ts\ndist/views/tui/terminal-drafts.d.ts.map\ndist/views/tui/terminal-drafts.js\ndist/views/tui/terminal-drafts.js.map\ndist/views/tui/terminal-identity.d.ts\ndist/views/tui/terminal-identity.d.ts.map\ndist/views/tui/terminal-identity.js\ndist/views/tui/terminal-identity.js.map\ndist/views/tui/terminal-input-controller.d.ts\ndist/views/tui/terminal-input-controller.d.ts.map\ndist/views/tui/terminal-input-controller.js\ndist/views/tui/terminal-input-controller.js.map\ndist/views/tui/terminal-interaction-controller.d.ts\ndist/views/tui/terminal-interaction-controller.d.ts.map\ndist/views/tui/terminal-interaction-controller.js\ndist/views/tui/terminal-interaction-controller.js.map\ndist/views/tui/terminal-overlays.d.ts\ndist/views/tui/terminal-overlays.d.ts.map\ndist/views/tui/terminal-overlays.js\ndist/views/tui/terminal-overlays.js.map\ndist/views/tui/terminal-shell.d.ts\ndist/views/tui/terminal-shell.d.ts.map\ndist/views/tui/terminal-shell.js\ndist/views/tui/terminal-shell.js.map\ndist/views/tui/terminal-surface-overlays.d.ts\ndist/views/tui/terminal-surface-overlays.d.ts.map\ndist/views/tui/terminal-surface-overlays.js\ndist/views/tui/terminal-surface-overlays.js.map\ndist/views/tui/terminal-usage.d.ts\ndist/views/tui/terminal-usage.d.ts.map\ndist/views/tui/terminal-usage.js\ndist/views/tui/terminal-usage.js.map\ndist/views/tui/theme.d.ts\ndist/views/tui/theme.d.ts.map\ndist/views/tui/theme.js\ndist/views/tui/theme.js.map\ndist/views/tui/transcript.d.ts\ndist/views/tui/transcript.d.ts.map\ndist/views/tui/transcript.js\ndist/views/tui/transcript.js.map\nLICENSE\npackage.json\nREADME.md\nTHIRD_PARTY_LICENSES.json\nTHIRD_PARTY_NOTICES.md\n\u001b[94mTarball Details\u001b[39m\n/tmp/braid-live-pack-mIMgBK/tangle-network-braid-0.3.0.tgz\n",
+ "stderr": "",
+ "durationMs": 1167,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "install": {
+ "command": "npm",
+ "args": [
+ "install",
+ "--no-audit",
+ "--no-fund",
+ "/tmp/braid-live-pack-mIMgBK/tangle-network-braid-0.3.0.tgz"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "\nadded 68 packages in 8s\n",
+ "stderr": "npm warn deprecated koffi@3.1.4: Unstable Windows builds\nnpm warn allow-scripts 2 packages have install scripts not yet covered by allowScripts:\nnpm warn allow-scripts @dataiku/uv@0.12.0 (postinstall: node install.cjs)\nnpm warn allow-scripts koffi@3.1.4 (install: node ./cnoke.cjs -P . -D src/koffi --prebuild --release)\nnpm warn allow-scripts\nnpm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts ` to allow.\n",
+ "durationMs": 7673,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "version": {
+ "command": "/home/drew/.nvm/versions/node/v24.18.0/bin/node",
+ "args": [
+ "/tmp/braid-live-install-MpZxkH/node_modules/@tangle-network/braid/dist/bin/braid.js",
+ "--version"
+ ],
+ "code": 0,
+ "signal": null,
+ "stdout": "0.3.0\n",
+ "stderr": "",
+ "durationMs": 90,
+ "timedOut": false,
+ "cleanupOk": true,
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": true,
+ "initialTree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ }
+ },
+ "artifact": {
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "sha256": "47602edb3f5f2226dd82d61d78d87018fa9b0e9acb37681cb439f99dae042721",
+ "binary": "node_modules/@tangle-network/braid/dist/bin/braid.js"
+ },
+ "operation": {
+ "operationNamespace": "3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5",
+ "label": "Pi with Tangle Router DeepSeek V4 Flash",
+ "target": "pi/tangle-router/deepseek-v4-flash",
+ "profile": {
+ "path": ".braid/profiles/profile-pi-tangle-router-deepseek-v4-flash.json",
+ "harness": "pi",
+ "model": "deepseek-v4-flash",
+ "provider": "tangle-router"
+ },
+ "connection": {
+ "id": "connection-live-cli-bridge",
+ "kind": "cli-bridge",
+ "endpoint": "http://127.0.0.1:3482",
+ "credentialConfigured": false
+ },
+ "providerCapabilities": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": true,
+ "instructions": true,
+ "tools": true,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ },
+ "requests": [
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-init-pi-tangle-router-deepseek-v4-flash",
+ "command": "initialize",
+ "params": {
+ "workspace": "/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash",
+ "subscribe": true
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash",
+ "command": "send",
+ "params": {
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "text": "Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK."
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-state-active-pi-tangle-router-deepseek-v4-flash",
+ "command": "get_state",
+ "params": {
+ "projection": "full"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash",
+ "command": "respond_interaction",
+ "params": {
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "interactionId": "interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2",
+ "response": {
+ "id": "interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2",
+ "outcome": "declined"
+ }
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-duplicate-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-duplicate-pi-tangle-router-deepseek-v4-flash",
+ "command": "respond_interaction",
+ "params": {
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "interactionId": "interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2",
+ "response": {
+ "id": "interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2",
+ "outcome": "declined"
+ }
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-state-post-response-pi-tangle-router-deepseek-v4-flash",
+ "command": "get_state",
+ "params": {
+ "projection": "full"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "params": {
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "reason": "live interactive proof completed"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-state-poll-0-pi-tangle-router-deepseek-v4-flash",
+ "command": "get_state",
+ "params": {
+ "projection": "full"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-final-state-pi-tangle-router-deepseek-v4-flash",
+ "command": "get_state",
+ "params": {
+ "projection": "full"
+ }
+ },
+ {
+ "version": 1,
+ "requestId": "interactive-protocol-shutdown-pi-tangle-router-deepseek-v4-flash",
+ "operationId": "op-interactive-protocol-shutdown-pi-tangle-router-deepseek-v4-flash",
+ "command": "shutdown",
+ "params": {
+ "mode": "wait"
+ }
+ }
+ ],
+ "operation": "cli-bridge.interactive-protocol",
+ "credentialLifecycle": {
+ "configured": false,
+ "stored": false,
+ "removed": true
+ },
+ "initialize": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "interactive-protocol-init-pi-tangle-router-deepseek-v4-flash",
+ "revision": 4,
+ "command": "initialize"
+ },
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "initialCapabilities": {
+ "view": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "analysisAsk": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "run": {}
+ },
+ "targetProof": {
+ "key": "pi-tangle-router-deepseek-v4-flash",
+ "harness": "pi",
+ "provider": "tangle-router",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "materializationDigest": "f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301"
+ },
+ "runIds": [
+ "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ ],
+ "finalState": {
+ "version": 1,
+ "type": "state",
+ "requestId": "interactive-protocol-final-state-pi-tangle-router-deepseek-v4-flash",
+ "revision": 130,
+ "projection": "full",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 130,
+ "sequence": 130,
+ "workspace": "/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-29T05:41:10.698Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "runConfiguration": {
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "connectionId": "connection-live-cli-bridge",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-65eb78ac-9876-4a42-a93d-366442211c96",
+ "role": "user",
+ "text": "Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.",
+ "status": "complete",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "parts": [
+ {
+ "id": "part-message-65eb78ac-9876-4a42-a93d-366442211c96",
+ "kind": "text",
+ "text": "Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK."
+ }
+ ]
+ },
+ {
+ "id": "message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "parts": [
+ {
+ "id": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning",
+ "kind": "reasoning",
+ "text": "The user is asking me to \"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"\n\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\n\nLet me inspect the workspace first.",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96"
+ },
+ {
+ "id": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367",
+ "kind": "result",
+ "text": "",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102",
+ "toolName": "bash",
+ "callId": "call_00_Rgw8zii2BbEF3AJWeXmw7367",
+ "input": {},
+ "result": {
+ "content": [
+ "[depth-limited]"
+ ],
+ "details": {}
+ },
+ "error": "RUNTIME_TOOL_ERROR"
+ }
+ ]
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "turnId": "turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822",
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T05:41:10.698Z",
+ "updatedAt": "2026-08-29T05:41:17.262Z",
+ "terminalAt": "2026-08-29T05:41:17.262Z",
+ "durationMs": 6564,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "environmentId": "environment-a166528e64ed0873fc9d36864eabfead",
+ "controlRef": {
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ",
+ "sessionId": "session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "executionId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "requestDigest": "sha256:e96ba51a1dadab4289c3e219fd1812c5d3eef0dc6d5afd9330d08e557e6c4390"
+ },
+ "materializationDigest": "f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301",
+ "cursor": "107",
+ "cursorCommittedSequence": 123,
+ "contentBytes": 1051
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-a166528e64ed0873fc9d36864eabfead",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T05:41:09.789Z",
+ "updatedAt": "2026-08-29T05:41:13.057Z"
+ }
+ ],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": null,
+ "focusedRunId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "activeRuns": [],
+ "lastError": null
+ },
+ "view": {
+ "revision": 130,
+ "workspace": "/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "runner": "pi",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "Live local CLI Bridge",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-29T05:41:10.698Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "cancelled",
+ "statusText": "cancelled",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-65eb78ac-9876-4a42-a93d-366442211c96",
+ "role": "user",
+ "text": "Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.",
+ "status": "complete",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "parts": [
+ {
+ "id": "part-message-65eb78ac-9876-4a42-a93d-366442211c96",
+ "kind": "text",
+ "text": "Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK."
+ }
+ ]
+ },
+ {
+ "id": "message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7",
+ "role": "assistant",
+ "text": "",
+ "status": "cancelled",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "parts": [
+ {
+ "id": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning",
+ "kind": "reasoning",
+ "text": "The user is asking me to \"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"\n\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\n\nLet me inspect the workspace first.",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96"
+ },
+ {
+ "id": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367",
+ "kind": "result",
+ "text": "",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102",
+ "toolName": "bash",
+ "callId": "call_00_Rgw8zii2BbEF3AJWeXmw7367",
+ "input": {},
+ "result": {
+ "content": [
+ "[depth-limited]"
+ ],
+ "details": {}
+ },
+ "error": "RUNTIME_TOOL_ERROR"
+ }
+ ]
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "turnId": "turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "cancelled",
+ "profileName": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "model": "deepseek-v4-flash",
+ "effort": "none",
+ "cursor": "107",
+ "providerSessionId": "session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "elapsedMs": 6564
+ },
+ "runner": "pi",
+ "provider": "cli-bridge",
+ "connectionId": "connection-live-cli-bridge",
+ "connection": "Live local CLI Bridge",
+ "environmentId": "environment-a166528e64ed0873fc9d36864eabfead",
+ "completeness": "complete",
+ "contentBytes": 1051
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [
+ {
+ "id": "environment-a166528e64ed0873fc9d36864eabfead",
+ "connectionId": "connection-live-cli-bridge",
+ "kind": "local-process",
+ "provider": "cli-bridge",
+ "lifecycle": "ready",
+ "lifecycleMode": "retained",
+ "cleanup": "explicit",
+ "continuity": "session",
+ "location": "local",
+ "runtimeEndpointHost": "127.0.0.1",
+ "unavailableTelemetry": [
+ "cli-subscription-and-quota:not-exposed-by-provider",
+ "effective-resources:not-exposed-by-provider",
+ "machine-specs:not-exposed-by-provider",
+ "runtime-cpu-memory-usage:not-exposed-by-provider"
+ ],
+ "createdAt": "2026-08-29T05:41:09.789Z",
+ "updatedAt": "2026-08-29T05:41:13.057Z"
+ }
+ ],
+ "focusedRunId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "kind": "run",
+ "title": "run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "status": "cancelled",
+ "elapsedMs": 6564,
+ "startedAt": "2026-08-29T05:41:10.698Z",
+ "occurredAt": "2026-08-29T05:41:10.698Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "environment:environment-a166528e64ed0873fc9d36864eabfead",
+ "kind": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "detail": "local-process · local · explicit",
+ "startedAt": "2026-08-29T05:41:09.789Z",
+ "occurredAt": "2026-08-29T05:41:13.057Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "environment",
+ "entityId": "environment-a166528e64ed0873fc9d36864eabfead"
+ },
+ {
+ "id": "activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:interaction:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100:permission",
+ "kind": "interaction",
+ "title": "permission",
+ "status": "cancelled",
+ "detail": "Permission: bash",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "interaction:interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2",
+ "kind": "interaction",
+ "title": "Permission: bash",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "cancelled",
+ "detail": "profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting",
+ "kind": "system",
+ "title": "starting",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming",
+ "kind": "system",
+ "title": "streaming",
+ "status": "cancelled",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "live interactive proof completed",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:lifecycle:local:reconnecting",
+ "kind": "system",
+ "title": "reconnecting",
+ "status": "cancelled",
+ "detail": "107",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control.ack:local:cancel",
+ "kind": "system",
+ "title": "cancel",
+ "status": "cancelled",
+ "detail": "accepted",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 5",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 6",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 7",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 99",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 102",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 104",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 105",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105",
+ "kind": "system",
+ "title": "event raw",
+ "status": "cancelled",
+ "detail": "sequence 106",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ },
+ {
+ "id": "event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106",
+ "kind": "system",
+ "title": "event model-processing",
+ "status": "cancelled",
+ "detail": "sequence 107",
+ "occurredAt": "2026-08-29T05:41:17.262Z",
+ "sourceEventId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "entityType": "run",
+ "entityId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-29T05:41:06.708Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-29T05:41:06.708Z"
+ },
+ {
+ "id": "environment-a166528e64ed0873fc9d36864eabfead",
+ "type": "environment",
+ "title": "cli-bridge execution",
+ "status": "complete",
+ "depth": 4,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee"
+ ],
+ "runner": "cli-bridge",
+ "startedAt": "2026-08-29T05:41:09.789Z"
+ },
+ {
+ "id": "turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822",
+ "type": "turn",
+ "title": "Turn",
+ "status": "cancelled",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-1"
+ ],
+ "startedAt": "2026-08-29T05:41:10.698Z"
+ },
+ {
+ "id": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "type": "run",
+ "title": "Run",
+ "status": "cancelled",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822"
+ ],
+ "runner": "pi",
+ "elapsedMs": 6564,
+ "startedAt": "2026-08-29T05:41:10.698Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "environment",
+ "entityId": "environment-a166528e64ed0873fc9d36864eabfead",
+ "title": "cli-bridge execution",
+ "status": "ready",
+ "lines": [
+ "provider: cli-bridge",
+ "execution: local-process · local",
+ "connection: connection-live-cli-bridge",
+ "lifecycle: ready · retained · cleanup explicit",
+ "continuity: session",
+ "runtime endpoint host: 127.0.0.1",
+ "placement: requested not specified · verified unavailable",
+ "machine: unavailable · physical IP is not exposed",
+ "created: 2026-08-29T05:41:09.789Z",
+ "observed: 2026-08-29T05:41:13.057Z",
+ "unavailable: cli-subscription-and-quota:not-exposed-by-provider",
+ "unavailable: effective-resources:not-exposed-by-provider",
+ "unavailable: machine-specs:not-exposed-by-provider",
+ "unavailable: runtime-cpu-memory-usage:not-exposed-by-provider"
+ ]
+ }
+ ],
+ "details": {
+ "title": "run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "fields": [
+ {
+ "label": "status",
+ "value": "aborted"
+ },
+ {
+ "label": "input tokens",
+ "value": "0"
+ },
+ {
+ "label": "output tokens",
+ "value": "0"
+ },
+ {
+ "label": "model",
+ "value": "deepseek-v4-flash"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "none",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ }
+ },
+ "shutdown": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "interactive-protocol-shutdown-pi-tangle-router-deepseek-v4-flash",
+ "revision": 130,
+ "operationId": "op-interactive-protocol-shutdown-pi-tangle-router-deepseek-v4-flash",
+ "command": "shutdown"
+ },
+ "operationEvidence": {
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "interactionId": "interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2",
+ "interaction": {
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "interactionId": "interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2",
+ "request": {
+ "id": "interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2",
+ "kind": "permission",
+ "title": "Permission: bash",
+ "answerSpec": {
+ "fields": [
+ {
+ "type": "select",
+ "name": "grant",
+ "label": "Decision",
+ "required": true,
+ "options": [
+ {
+ "value": "allow_once",
+ "label": "Allow once"
+ },
+ {
+ "value": "deny",
+ "label": "Deny"
+ }
+ ]
+ }
+ ]
+ },
+ "responseScopes": [
+ "interaction"
+ ]
+ }
+ },
+ "response": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash",
+ "revision": 114,
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash",
+ "command": "respond_interaction",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "control": "respond_interaction",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "staleDuplicate": {
+ "version": 1,
+ "type": "error",
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-duplicate-pi-tangle-router-deepseek-v4-flash",
+ "code": "INTERACTION_STALE",
+ "message": "The interaction is already declined",
+ "retryable": false
+ },
+ "providerProgress": {
+ "kind": "run.provider.event",
+ "sequence": 117,
+ "revision": 117,
+ "providerSequence": 102,
+ "cursor": "101"
+ },
+ "postResponseStatus": "streaming",
+ "cleanupCancel": {
+ "version": 1,
+ "type": "ack",
+ "requestId": "interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash",
+ "revision": 128,
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash",
+ "command": "cancel_run",
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "control": "cancel",
+ "outcome": "accepted",
+ "replayed": false
+ },
+ "terminalRun": {
+ "id": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "turnId": "turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822",
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash",
+ "status": "aborted",
+ "startedAt": "2026-08-29T05:41:10.698Z",
+ "updatedAt": "2026-08-29T05:41:17.262Z",
+ "terminalAt": "2026-08-29T05:41:17.262Z",
+ "durationMs": 6564,
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "deepseek-v4-flash",
+ "provider": "cli-bridge",
+ "runner": "pi",
+ "connectionId": "connection-live-cli-bridge",
+ "completeness": "complete",
+ "providerSessionId": "session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "environmentId": "environment-a166528e64ed0873fc9d36864eabfead",
+ "controlRef": {
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "provider": "cli-bridge",
+ "environmentId": "cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ",
+ "sessionId": "session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "executionId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "requestDigest": "sha256:e96ba51a1dadab4289c3e219fd1812c5d3eef0dc6d5afd9330d08e557e6c4390"
+ },
+ "materializationDigest": "f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301",
+ "cursor": "107",
+ "cursorCommittedSequence": 123,
+ "contentBytes": 1051,
+ "receipt": {
+ "version": 1,
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "turnId": "turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822",
+ "operationId": "op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "admittedAt": "2026-08-29T05:41:10.683Z",
+ "profileDigest": "2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a",
+ "requested": {
+ "text": "Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.",
+ "profile": {
+ "name": "Braid live pi/tangle-router/deepseek-v4-flash",
+ "description": "Opt-in packed CLI Bridge smoke profile",
+ "version": "0.1.0",
+ "model": {
+ "default": "deepseek-v4-flash",
+ "provider": "tangle-router",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "connectionId": "connection-live-cli-bridge",
+ "interactions": {
+ "permission": true
+ },
+ "model": "deepseek-v4-flash",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": true,
+ "recreate": true
+ },
+ "events": {
+ "stableIdentity": true,
+ "sequence": true,
+ "cursor": true
+ },
+ "usage": true,
+ "environment": {
+ "profile": {
+ "namedProfiles": false,
+ "systemPrompt": {
+ "replace": true,
+ "append": true
+ },
+ "instructions": true,
+ "tools": true,
+ "permissions": true,
+ "mcp": true,
+ "subagents": true,
+ "resources": {
+ "files": false,
+ "instructions": true,
+ "tools": false,
+ "skills": true,
+ "agents": true,
+ "commands": true
+ },
+ "hooks": false,
+ "modes": true,
+ "runtimeUpdate": false,
+ "validation": false
+ },
+ "streaming": {
+ "live": true,
+ "replay": true,
+ "detach": true,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": true,
+ "list": false,
+ "messages": false
+ },
+ "retainedControl": {
+ "exactRunIdentity": true,
+ "resultIdentity": true,
+ "eventIdentity": true,
+ "cancellationIdempotency": true
+ },
+ "nativeContinuation": {
+ "atomicBoundary": true,
+ "requestIdempotency": true,
+ "admissionControl": true
+ },
+ "interactions": {
+ "kinds": [
+ "permission"
+ ],
+ "answerFieldTypes": [
+ "select"
+ ],
+ "responseScopes": [
+ "interaction"
+ ],
+ "secretAnswers": false,
+ "concurrentRequests": false,
+ "replay": true,
+ "responseIdempotency": true
+ },
+ "workspace": {
+ "read": false,
+ "write": false,
+ "exec": false,
+ "git": false,
+ "upload": false,
+ "download": false
+ },
+ "branching": {
+ "checkpoint": false,
+ "fork": false
+ },
+ "placement": true,
+ "usage": true,
+ "confidential": false,
+ "observation": {
+ "identity": true,
+ "lifecycle": true,
+ "endpoint": true,
+ "placement": true,
+ "resources": false,
+ "resourceUse": false,
+ "modelUsage": true,
+ "computeBilling": false,
+ "accountUsage": false
+ }
+ }
+ },
+ "provider": "cli-bridge",
+ "providerSessionId": "session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "materializationReceipt": {
+ "provider": "cli-bridge",
+ "backend": "environment-provider",
+ "connectionId": "connection-live-cli-bridge",
+ "sessionId": "session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "lifecycle": "retained-session",
+ "cleanup": "explicit",
+ "portableContext": "unavailable",
+ "workspace": "/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash",
+ "model": "deepseek-v4-flash",
+ "route": "pi/tangle-router/deepseek-v4-flash",
+ "runner": "pi",
+ "providerRunId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "retainedControl": "exact-after-dispatch"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "42d3e92a9fdf81b4ceef9a6d480ca77c0a60b8dba499dbad56f4f29a612f4afc",
+ "capabilitiesDigest": "ddc6284b3633f963459e1d4573baf9f16d2db828706ec2603a7ae9d4c0771559",
+ "materializationDigest": "f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301",
+ "digest": "f46b776b7cb48b74ffe1df4390f67c91727646eaf5a3486856aec3b40c82023d"
+ }
+ },
+ "interactionStatus": "declined",
+ "responseOutcome": "declined",
+ "usage": {
+ "terminalStatus": "aborted",
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "settled": false,
+ "reason": "The interactive proof cancels after provider progress"
+ }
+ },
+ "operationReceipt": {
+ "operation": "cli-bridge.interactive-protocol",
+ "packed": true,
+ "runId": "run-3c64ec41-ec5d-4681-bf86-7280f808b3ee",
+ "status": "passed"
+ },
+ "status": "passed",
+ "stderr": "",
+ "stdout": "{\"version\":1,\"type\":\"ack\",\"requestId\":\"interactive-protocol-init-pi-tangle-router-deepseek-v4-flash\",\"revision\":4,\"command\":\"initialize\"}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"interactive-protocol-init-pi-tangle-router-deepseek-v4-flash\",\"revision\":4,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":4,\"sequence\":4,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:41:06.708Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[],\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":null,\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":4,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:41:06.708Z\"}],\"branch\":\"branch-1\",\"status\":\"empty\",\"statusText\":\"ready for a message\",\"queueCount\":0,\"queue\":[],\"messages\":[],\"hiddenMessageCount\":0,\"runs\":[],\"sessionUsage\":{\"turns\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"activity\":[],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:41:06.708Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":4,\"replayed\":false,\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"admission\":{\"version\":1,\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T05:41:10.683Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"unavailable\",\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"model\":\"deepseek-v4-flash\",\"route\":\"pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"providerRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"retainedControl\":\"exact-after-dispatch\"},\"admissionStatus\":\"admitted\",\"requestDigest\":\"42d3e92a9fdf81b4ceef9a6d480ca77c0a60b8dba499dbad56f4f29a612f4afc\",\"capabilitiesDigest\":\"ddc6284b3633f963459e1d4573baf9f16d2db828706ec2603a7ae9d4c0771559\",\"materializationDigest\":\"f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301\",\"digest\":\"f46b776b7cb48b74ffe1df4390f67c91727646eaf5a3486856aec3b40c82023d\"},\"command\":\"send\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":5,\"revision\":5,\"event\":{\"sequence\":5,\"revision\":5,\"kind\":\"draft.changed\",\"payload\":{\"value\":{\"kind\":\"draft.changed\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":6,\"revision\":6,\"event\":{\"sequence\":6,\"revision\":6,\"kind\":\"run.requested\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"admission\":{\"version\":1,\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"admittedAt\":\"2026-08-29T05:41:10.683Z\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requested\":{\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"connectionId\":\"connection-live-cli-bridge\",\"interactions\":{\"permission\":true},\"model\":\"deepseek-v4-flash\",\"runner\":\"pi\"},\"capabilities\":{\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"messages\":false},\"controls\":{\"cancel\":true,\"steer\":false,\"queue\":true,\"status\":true,\"recreate\":true},\"events\":{\"stableIdentity\":true,\"sequence\":true,\"cursor\":true},\"usage\":true,\"environment\":{\"profile\":{\"namedProfiles\":false,\"systemPrompt\":{\"replace\":true,\"append\":true},\"instructions\":true,\"tools\":true,\"permissions\":true,\"mcp\":true,\"subagents\":true,\"resources\":{\"files\":false,\"instructions\":true,\"tools\":false,\"skills\":true,\"agents\":true,\"commands\":true},\"hooks\":false,\"modes\":true,\"runtimeUpdate\":false,\"validation\":false},\"streaming\":{\"live\":true,\"replay\":true,\"detach\":true,\"turnIdempotency\":true},\"sessions\":{\"continue\":true,\"list\":false,\"messages\":false},\"retainedControl\":{\"exactRunIdentity\":true,\"resultIdentity\":true,\"eventIdentity\":true,\"cancellationIdempotency\":true},\"nativeContinuation\":{\"atomicBoundary\":true,\"requestIdempotency\":true,\"admissionControl\":true},\"interactions\":{\"kinds\":[\"permission\"],\"answerFieldTypes\":[\"select\"],\"responseScopes\":[\"interaction\"],\"secretAnswers\":false,\"concurrentRequests\":false,\"replay\":true,\"responseIdempotency\":true},\"workspace\":{\"read\":false,\"write\":false,\"exec\":false,\"git\":false,\"upload\":false,\"download\":false},\"branching\":{\"checkpoint\":false,\"fork\":false},\"placement\":true,\"usage\":true,\"confidential\":false,\"observation\":{\"identity\":true,\"lifecycle\":true,\"endpoint\":true,\"placement\":true,\"resources\":false,\"resourceUse\":false,\"modelUsage\":true,\"computeBilling\":false,\"accountUsage\":false}}},\"provider\":\"cli-bridge\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"materializationReceipt\":{\"provider\":\"cli-bridge\",\"backend\":\"environment-provider\",\"connectionId\":\"connection-live-cli-bridge\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"lifecycle\":\"retained-session\",\"cleanup\":\"explicit\",\"portableContext\":\"unavailable\",\"__braidTruncated\":true},\"__braidTruncated\":true},\"status\":\"admitted\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":7,\"revision\":7,\"event\":{\"sequence\":7,\"revision\":7,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash-2251a154c5551c7c86dda8e7\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"2251a154c5551c7c86dda8e703fc57dde3249dbcf4bf79c10eef8046748911ff\",\"kind\":\"send\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T05:41:10.717Z\",\"updatedAt\":\"2026-08-29T05:41:10.717Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":8,\"revision\":8,\"event\":{\"sequence\":8,\"revision\":8,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"admission\":{\"phase\":\"intent\",\"provider\":\"cli-bridge\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"executionId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"runId\":\"retained-intent-run:a9efc7b892eb6546e11b667ab0f04715543e9479cdc9e9a392dbebad456e4bd0\",\"requestedProfileDigest\":\"sha256:2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"requestDigest\":\"sha256:a9efc7b892eb6546e11b667ab0f04715543e9479cdc9e9a392dbebad456e4bd0\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":6,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":6,\"sequence\":6,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[]}],\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"updatedAt\":\"2026-08-29T05:41:10.698Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"materializationDigest\":\"f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"activeRuns\":[{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":6,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"running\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\"},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"activeRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"kind\":\"run\",\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"running\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"occurredAt\":\"2026-08-29T05:41:10.698Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:41:10.698Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:41:10.698Z\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\"],\"runner\":\"pi\",\"startedAt\":\"2026-08-29T05:41:10.698Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"details\":{\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect while another run is active\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile while another run is active\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-state-active-pi-tangle-router-deepseek-v4-flash\",\"revision\":8,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":8,\"sequence\":8,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[]}],\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"updatedAt\":\"2026-08-29T05:41:10.738Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"materializationDigest\":\"f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"activeRuns\":[{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":8,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"running\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\"},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"completeness\":\"incomplete\"}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[],\"activeRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"kind\":\"run\",\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"running\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"occurredAt\":\"2026-08-29T05:41:10.698Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:41:10.738Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:41:10.698Z\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\"],\"runner\":\"pi\",\"startedAt\":\"2026-08-29T05:41:10.698Z\"}],\"graphQuery\":\"\",\"entityDetails\":[],\"details\":{\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect while another run is active\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile while another run is active\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":9,\"revision\":9,\"event\":{\"sequence\":9,\"revision\":9,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"admission\":{\"phase\":\"environment\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ\",\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"executionId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":10,\"revision\":10,\"event\":{\"sequence\":10,\"revision\":10,\"kind\":\"run.retained.admitted\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"value\":{\"kind\":\"run.retained.admitted\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"admission\":{\"phase\":\"dispatched\",\"controlRef\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"executionId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"requestDigest\":\"sha256:e96ba51a1dadab4289c3e219fd1812c5d3eef0dc6d5afd9330d08e557e6c4390\"},\"idempotencyKey\":\"[redacted]\",\"turnId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":11,\"revision\":11,\"event\":{\"sequence\":11,\"revision\":11,\"kind\":\"run.environment.observed\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T05:41:13.057Z\"},\"value\":{\"kind\":\"run.environment.observed\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"observation\":{\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"unavailable\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"observedAt\":\"2026-08-29T05:41:13.057Z\"},\"controlRef\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"executionId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"requestDigest\":\"sha256:e96ba51a1dadab4289c3e219fd1812c5d3eef0dc6d5afd9330d08e557e6c4390\"},\"provider\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:execution-bound\",\"providerSequence\":1,\"receivedAt\":\"2026-08-29T05:41:13.057Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":12,\"revision\":12,\"event\":{\"sequence\":12,\"revision\":12,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T05:41:13.081Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:1\",\"providerSequence\":2,\"cursor\":\"1\",\"receivedAt\":\"2026-08-29T05:41:13.081Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":13,\"revision\":13,\"event\":{\"sequence\":13,\"revision\":13,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T05:41:13.492Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"starting\",\"provider\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:2\",\"providerSequence\":3,\"cursor\":\"2\",\"receivedAt\":\"2026-08-29T05:41:13.492Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":14,\"revision\":14,\"event\":{\"sequence\":14,\"revision\":14,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T05:41:13.501Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"streaming\",\"provider\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:3\",\"providerSequence\":4,\"cursor\":\"3\",\"receivedAt\":\"2026-08-29T05:41:13.501Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":15,\"revision\":15,\"event\":{\"sequence\":15,\"revision\":15,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"providerSequence\":5,\"cursor\":\"4\",\"receivedAt\":\"2026-08-29T05:41:13.509Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":16,\"revision\":16,\"event\":{\"sequence\":16,\"revision\":16,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"providerSequence\":6,\"cursor\":\"5\",\"receivedAt\":\"2026-08-29T05:41:13.517Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":17,\"revision\":17,\"event\":{\"sequence\":17,\"revision\":17,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"providerSequence\":7,\"cursor\":\"6\",\"receivedAt\":\"2026-08-29T05:41:15.306Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":18,\"revision\":18,\"event\":{\"sequence\":18,\"revision\":18,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:7\",\"providerSequence\":8,\"cursor\":\"7\",\"receivedAt\":\"2026-08-29T05:41:15.559Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:7\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":19,\"revision\":19,\"event\":{\"sequence\":19,\"revision\":19,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:8\",\"providerSequence\":9,\"cursor\":\"8\",\"receivedAt\":\"2026-08-29T05:41:15.567Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:8\"},\"delta\":\"T\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":20,\"revision\":20,\"event\":{\"sequence\":20,\"revision\":20,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:9\",\"providerSequence\":10,\"cursor\":\"9\",\"receivedAt\":\"2026-08-29T05:41:15.609Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:9\"},\"delta\":\"he user\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":21,\"revision\":21,\"event\":{\"sequence\":21,\"revision\":21,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:10\",\"providerSequence\":11,\"cursor\":\"10\",\"receivedAt\":\"2026-08-29T05:41:15.617Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:10\"},\"delta\":\" i\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":22,\"revision\":22,\"event\":{\"sequence\":22,\"revision\":22,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:11\",\"providerSequence\":12,\"cursor\":\"11\",\"receivedAt\":\"2026-08-29T05:41:15.667Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:11\"},\"delta\":\"s askin\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":23,\"revision\":23,\"event\":{\"sequence\":23,\"revision\":23,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:12\",\"providerSequence\":13,\"cursor\":\"12\",\"receivedAt\":\"2026-08-29T05:41:15.677Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:12\"},\"delta\":\"g me\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":24,\"revision\":24,\"event\":{\"sequence\":24,\"revision\":24,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:13\",\"providerSequence\":14,\"cursor\":\"13\",\"receivedAt\":\"2026-08-29T05:41:15.685Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:13\"},\"delta\":\" \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":25,\"revision\":25,\"event\":{\"sequence\":25,\"revision\":25,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:14\",\"providerSequence\":15,\"cursor\":\"14\",\"receivedAt\":\"2026-08-29T05:41:15.692Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:14\"},\"delta\":\"to \\\"\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":26,\"revision\":26,\"event\":{\"sequence\":26,\"revision\":26,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:15\",\"providerSequence\":16,\"cursor\":\"15\",\"receivedAt\":\"2026-08-29T05:41:15.700Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:15\"},\"delta\":\"A\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":27,\"revision\":27,\"event\":{\"sequence\":27,\"revision\":27,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:16\",\"providerSequence\":17,\"cursor\":\"16\",\"receivedAt\":\"2026-08-29T05:41:15.707Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:16\"},\"delta\":\"sk one\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":28,\"revision\":28,\"event\":{\"sequence\":28,\"revision\":28,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:17\",\"providerSequence\":18,\"cursor\":\"17\",\"receivedAt\":\"2026-08-29T05:41:15.714Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:17\"},\"delta\":\" user\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":29,\"revision\":29,\"event\":{\"sequence\":29,\"revision\":29,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:18\",\"providerSequence\":19,\"cursor\":\"18\",\"receivedAt\":\"2026-08-29T05:41:15.722Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:18\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":30,\"revision\":30,\"event\":{\"sequence\":30,\"revision\":30,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:19\",\"providerSequence\":20,\"cursor\":\"19\",\"receivedAt\":\"2026-08-29T05:41:15.729Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:19\"},\"delta\":\"visible\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":31,\"revision\":31,\"event\":{\"sequence\":31,\"revision\":31,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:20\",\"providerSequence\":21,\"cursor\":\"20\",\"receivedAt\":\"2026-08-29T05:41:15.737Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:20\"},\"delta\":\" permission\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":32,\"revision\":32,\"event\":{\"sequence\":32,\"revision\":32,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:21\",\"providerSequence\":22,\"cursor\":\"21\",\"receivedAt\":\"2026-08-29T05:41:15.744Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:21\"},\"delta\":\" question\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":33,\"revision\":33,\"event\":{\"sequence\":33,\"revision\":33,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:22\",\"providerSequence\":23,\"cursor\":\"22\",\"receivedAt\":\"2026-08-29T05:41:15.752Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:22\"},\"delta\":\" before\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":34,\"revision\":34,\"event\":{\"sequence\":34,\"revision\":34,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:23\",\"providerSequence\":24,\"cursor\":\"23\",\"receivedAt\":\"2026-08-29T05:41:15.760Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:23\"},\"delta\":\" completin\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":35,\"revision\":35,\"event\":{\"sequence\":35,\"revision\":35,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:24\",\"providerSequence\":25,\"cursor\":\"24\",\"receivedAt\":\"2026-08-29T05:41:15.767Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:24\"},\"delta\":\"g LIVE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":36,\"revision\":36,\"event\":{\"sequence\":36,\"revision\":36,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:25\",\"providerSequence\":26,\"cursor\":\"25\",\"receivedAt\":\"2026-08-29T05:41:15.775Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_B\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:25\"},\"delta\":\"_\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":37,\"revision\":37,\"event\":{\"sequence\":37,\"revision\":37,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:26\",\"providerSequence\":27,\"cursor\":\"26\",\"receivedAt\":\"2026-08-29T05:41:15.783Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRA\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:26\"},\"delta\":\"BR\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":38,\"revision\":38,\"event\":{\"sequence\":38,\"revision\":38,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:27\",\"providerSequence\":28,\"cursor\":\"27\",\"receivedAt\":\"2026-08-29T05:41:15.790Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:27\"},\"delta\":\"AID\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":39,\"revision\":39,\"event\":{\"sequence\":39,\"revision\":39,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:28\",\"providerSequence\":29,\"cursor\":\"28\",\"receivedAt\":\"2026-08-29T05:41:15.798Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_P\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:28\"},\"delta\":\"_\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":40,\"revision\":40,\"event\":{\"sequence\":40,\"revision\":40,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:29\",\"providerSequence\":30,\"cursor\":\"29\",\"receivedAt\":\"2026-08-29T05:41:15.805Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:29\"},\"delta\":\"PI\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":41,\"revision\":41,\"event\":{\"sequence\":41,\"revision\":41,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:30\",\"providerSequence\":31,\"cursor\":\"30\",\"receivedAt\":\"2026-08-29T05:41:15.813Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-T\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:30\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":42,\"revision\":42,\"event\":{\"sequence\":42,\"revision\":42,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:31\",\"providerSequence\":32,\"cursor\":\"31\",\"receivedAt\":\"2026-08-29T05:41:15.824Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANG\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:31\"},\"delta\":\"TANG\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":43,\"revision\":43,\"event\":{\"sequence\":43,\"revision\":43,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:32\",\"providerSequence\":33,\"cursor\":\"32\",\"receivedAt\":\"2026-08-29T05:41:15.831Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:32\"},\"delta\":\"LE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":44,\"revision\":44,\"event\":{\"sequence\":44,\"revision\":44,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:33\",\"providerSequence\":34,\"cursor\":\"33\",\"receivedAt\":\"2026-08-29T05:41:15.839Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:33\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":45,\"revision\":45,\"event\":{\"sequence\":45,\"revision\":45,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:34\",\"providerSequence\":35,\"cursor\":\"34\",\"receivedAt\":\"2026-08-29T05:41:15.850Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-RO\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:34\"},\"delta\":\"RO\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":46,\"revision\":46,\"event\":{\"sequence\":46,\"revision\":46,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:35\",\"providerSequence\":36,\"cursor\":\"35\",\"receivedAt\":\"2026-08-29T05:41:15.858Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUT\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:35\"},\"delta\":\"U\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":47,\"revision\":47,\"event\":{\"sequence\":47,\"revision\":47,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:36\",\"providerSequence\":37,\"cursor\":\"36\",\"receivedAt\":\"2026-08-29T05:41:15.869Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:36\"},\"delta\":\"TER\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":48,\"revision\":48,\"event\":{\"sequence\":48,\"revision\":48,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:37\",\"providerSequence\":38,\"cursor\":\"37\",\"receivedAt\":\"2026-08-29T05:41:15.877Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-D\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:37\"},\"delta\":\"-D\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":49,\"revision\":49,\"event\":{\"sequence\":49,\"revision\":49,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:38\",\"providerSequence\":39,\"cursor\":\"38\",\"receivedAt\":\"2026-08-29T05:41:15.884Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEP\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:38\"},\"delta\":\"EE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":50,\"revision\":50,\"event\":{\"sequence\":50,\"revision\":50,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:39\",\"providerSequence\":40,\"cursor\":\"39\",\"receivedAt\":\"2026-08-29T05:41:15.892Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEE\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:39\"},\"delta\":\"PSEE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":51,\"revision\":51,\"event\":{\"sequence\":51,\"revision\":51,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:40\",\"providerSequence\":41,\"cursor\":\"40\",\"receivedAt\":\"2026-08-29T05:41:15.899Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:40\"},\"delta\":\"\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":52,\"revision\":52,\"event\":{\"sequence\":52,\"revision\":52,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:41\",\"providerSequence\":42,\"cursor\":\"41\",\"receivedAt\":\"2026-08-29T05:41:15.907Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:41\"},\"delta\":\"K-V\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":53,\"revision\":53,\"event\":{\"sequence\":53,\"revision\":53,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:42\",\"providerSequence\":43,\"cursor\":\"42\",\"receivedAt\":\"2026-08-29T05:41:15.914Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:42\"},\"delta\":\"4\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":54,\"revision\":54,\"event\":{\"sequence\":54,\"revision\":54,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:43\",\"providerSequence\":44,\"cursor\":\"43\",\"receivedAt\":\"2026-08-29T05:41:15.921Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-F\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:43\"},\"delta\":\"-\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":55,\"revision\":55,\"event\":{\"sequence\":55,\"revision\":55,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:44\",\"providerSequence\":45,\"cursor\":\"44\",\"receivedAt\":\"2026-08-29T05:41:15.928Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FL\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:44\"},\"delta\":\"FL\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":56,\"revision\":56,\"event\":{\"sequence\":56,\"revision\":56,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:45\",\"providerSequence\":46,\"cursor\":\"45\",\"receivedAt\":\"2026-08-29T05:41:15.940Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:45\"},\"delta\":\"AS\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":57,\"revision\":57,\"event\":{\"sequence\":57,\"revision\":57,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:46\",\"providerSequence\":47,\"cursor\":\"46\",\"receivedAt\":\"2026-08-29T05:41:15.947Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_IN\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:46\"},\"delta\":\"H_IN\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":58,\"revision\":58,\"event\":{\"sequence\":58,\"revision\":58,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:47\",\"providerSequence\":48,\"cursor\":\"47\",\"receivedAt\":\"2026-08-29T05:41:15.954Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTER\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:47\"},\"delta\":\"TER\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":59,\"revision\":59,\"event\":{\"sequence\":59,\"revision\":59,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:48\",\"providerSequence\":49,\"cursor\":\"48\",\"receivedAt\":\"2026-08-29T05:41:15.962Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACT\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:48\"},\"delta\":\"AC\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":60,\"revision\":60,\"event\":{\"sequence\":60,\"revision\":60,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:49\",\"providerSequence\":50,\"cursor\":\"49\",\"receivedAt\":\"2026-08-29T05:41:15.969Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:49\"},\"delta\":\"TIVE\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":61,\"revision\":61,\"event\":{\"sequence\":61,\"revision\":61,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:50\",\"providerSequence\":51,\"cursor\":\"50\",\"receivedAt\":\"2026-08-29T05:41:15.976Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:50\"},\"delta\":\"_O\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":62,\"revision\":62,\"event\":{\"sequence\":62,\"revision\":62,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:51\",\"providerSequence\":52,\"cursor\":\"51\",\"receivedAt\":\"2026-08-29T05:41:15.984Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\n\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:51\"},\"delta\":\"K.\\\"\\n\\n\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":63,\"revision\":63,\"event\":{\"sequence\":63,\"revision\":63,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:52\",\"providerSequence\":53,\"cursor\":\"52\",\"receivedAt\":\"2026-08-29T05:41:15.994Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:52\"},\"delta\":\"Thi\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":64,\"revision\":64,\"event\":{\"sequence\":64,\"revision\":64,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:53\",\"providerSequence\":54,\"cursor\":\"53\",\"receivedAt\":\"2026-08-29T05:41:16.001Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:53\"},\"delta\":\"s appear\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":65,\"revision\":65,\"event\":{\"sequence\":65,\"revision\":65,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:54\",\"providerSequence\":55,\"cursor\":\"54\",\"receivedAt\":\"2026-08-29T05:41:16.009Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:54\"},\"delta\":\"s \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":66,\"revision\":66,\"event\":{\"sequence\":66,\"revision\":66,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:55\",\"providerSequence\":56,\"cursor\":\"55\",\"receivedAt\":\"2026-08-29T05:41:16.016Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:55\"},\"delta\":\"to \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":67,\"revision\":67,\"event\":{\"sequence\":67,\"revision\":67,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:56\",\"providerSequence\":57,\"cursor\":\"56\",\"receivedAt\":\"2026-08-29T05:41:16.023Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:56\"},\"delta\":\"be \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":68,\"revision\":68,\"event\":{\"sequence\":68,\"revision\":68,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:57\",\"providerSequence\":58,\"cursor\":\"57\",\"receivedAt\":\"2026-08-29T05:41:16.032Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:57\"},\"delta\":\"a ta\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":69,\"revision\":69,\"event\":{\"sequence\":69,\"revision\":69,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:58\",\"providerSequence\":59,\"cursor\":\"58\",\"receivedAt\":\"2026-08-29T05:41:16.038Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:58\"},\"delta\":\"sk in\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":70,\"revision\":70,\"event\":{\"sequence\":70,\"revision\":70,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:59\",\"providerSequence\":60,\"cursor\":\"59\",\"receivedAt\":\"2026-08-29T05:41:16.046Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:59\"},\"delta\":\" \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":71,\"revision\":71,\"event\":{\"sequence\":71,\"revision\":71,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:60\",\"providerSequence\":61,\"cursor\":\"60\",\"receivedAt\":\"2026-08-29T05:41:16.053Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:60\"},\"delta\":\"a harnes\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":72,\"revision\":72,\"event\":{\"sequence\":72,\"revision\":72,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:61\",\"providerSequence\":62,\"cursor\":\"61\",\"receivedAt\":\"2026-08-29T05:41:16.061Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:61\"},\"delta\":\"s where\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":73,\"revision\":73,\"event\":{\"sequence\":73,\"revision\":73,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:62\",\"providerSequence\":63,\"cursor\":\"62\",\"receivedAt\":\"2026-08-29T05:41:16.079Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:62\"},\"delta\":\" I\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":74,\"revision\":74,\"event\":{\"sequence\":74,\"revision\":74,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:63\",\"providerSequence\":64,\"cursor\":\"63\",\"receivedAt\":\"2026-08-29T05:41:16.089Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:63\"},\"delta\":\" need\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":75,\"revision\":75,\"event\":{\"sequence\":75,\"revision\":75,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:64\",\"providerSequence\":65,\"cursor\":\"64\",\"receivedAt\":\"2026-08-29T05:41:16.096Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:64\"},\"delta\":\" \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":76,\"revision\":76,\"event\":{\"sequence\":76,\"revision\":76,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:65\",\"providerSequence\":66,\"cursor\":\"65\",\"receivedAt\":\"2026-08-29T05:41:16.103Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:65\"},\"delta\":\"to a\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":77,\"revision\":77,\"event\":{\"sequence\":77,\"revision\":77,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:66\",\"providerSequence\":67,\"cursor\":\"66\",\"receivedAt\":\"2026-08-29T05:41:16.111Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:66\"},\"delta\":\"sk \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":78,\"revision\":78,\"event\":{\"sequence\":78,\"revision\":78,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:67\",\"providerSequence\":68,\"cursor\":\"67\",\"receivedAt\":\"2026-08-29T05:41:16.118Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:67\"},\"delta\":\"a permission\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":79,\"revision\":79,\"event\":{\"sequence\":79,\"revision\":79,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:68\",\"providerSequence\":69,\"cursor\":\"68\",\"receivedAt\":\"2026-08-29T05:41:16.125Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:68\"},\"delta\":\" question\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":80,\"revision\":80,\"event\":{\"sequence\":80,\"revision\":80,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:69\",\"providerSequence\":70,\"cursor\":\"69\",\"receivedAt\":\"2026-08-29T05:41:16.137Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:69\"},\"delta\":\" before\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":81,\"revision\":81,\"event\":{\"sequence\":81,\"revision\":81,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:70\",\"providerSequence\":71,\"cursor\":\"70\",\"receivedAt\":\"2026-08-29T05:41:16.144Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:70\"},\"delta\":\" completin\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":82,\"revision\":82,\"event\":{\"sequence\":82,\"revision\":82,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:71\",\"providerSequence\":72,\"cursor\":\"71\",\"receivedAt\":\"2026-08-29T05:41:16.151Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:71\"},\"delta\":\"g some\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":83,\"revision\":83,\"event\":{\"sequence\":83,\"revision\":83,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:72\",\"providerSequence\":73,\"cursor\":\"72\",\"receivedAt\":\"2026-08-29T05:41:16.163Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:72\"},\"delta\":\" ta\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":84,\"revision\":84,\"event\":{\"sequence\":84,\"revision\":84,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:73\",\"providerSequence\":74,\"cursor\":\"73\",\"receivedAt\":\"2026-08-29T05:41:16.174Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:73\"},\"delta\":\"sk.\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":85,\"revision\":85,\"event\":{\"sequence\":85,\"revision\":85,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:74\",\"providerSequence\":75,\"cursor\":\"74\",\"receivedAt\":\"2026-08-29T05:41:16.181Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:74\"},\"delta\":\" Le\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":86,\"revision\":86,\"event\":{\"sequence\":86,\"revision\":86,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:75\",\"providerSequence\":76,\"cursor\":\"75\",\"receivedAt\":\"2026-08-29T05:41:16.188Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:75\"},\"delta\":\"t me\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":87,\"revision\":87,\"event\":{\"sequence\":87,\"revision\":87,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:76\",\"providerSequence\":77,\"cursor\":\"76\",\"receivedAt\":\"2026-08-29T05:41:16.195Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:76\"},\"delta\":\" loo\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":88,\"revision\":88,\"event\":{\"sequence\":88,\"revision\":88,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:77\",\"providerSequence\":78,\"cursor\":\"77\",\"receivedAt\":\"2026-08-29T05:41:16.202Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:77\"},\"delta\":\"k a\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":89,\"revision\":89,\"event\":{\"sequence\":89,\"revision\":89,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:78\",\"providerSequence\":79,\"cursor\":\"78\",\"receivedAt\":\"2026-08-29T05:41:16.209Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:78\"},\"delta\":\"t t\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":90,\"revision\":90,\"event\":{\"sequence\":90,\"revision\":90,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:79\",\"providerSequence\":80,\"cursor\":\"79\",\"receivedAt\":\"2026-08-29T05:41:16.216Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:79\"},\"delta\":\"he curren\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":91,\"revision\":91,\"event\":{\"sequence\":91,\"revision\":91,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:80\",\"providerSequence\":81,\"cursor\":\"80\",\"receivedAt\":\"2026-08-29T05:41:16.222Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:80\"},\"delta\":\"t workin\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":92,\"revision\":92,\"event\":{\"sequence\":92,\"revision\":92,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:81\",\"providerSequence\":82,\"cursor\":\"81\",\"receivedAt\":\"2026-08-29T05:41:16.229Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:81\"},\"delta\":\"g directory\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":93,\"revision\":93,\"event\":{\"sequence\":93,\"revision\":93,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:82\",\"providerSequence\":83,\"cursor\":\"82\",\"receivedAt\":\"2026-08-29T05:41:16.236Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:82\"},\"delta\":\" \"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":94,\"revision\":94,\"event\":{\"sequence\":94,\"revision\":94,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:83\",\"providerSequence\":84,\"cursor\":\"83\",\"receivedAt\":\"2026-08-29T05:41:16.243Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:83\"},\"delta\":\"to understand\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":95,\"revision\":95,\"event\":{\"sequence\":95,\"revision\":95,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:84\",\"providerSequence\":85,\"cursor\":\"84\",\"receivedAt\":\"2026-08-29T05:41:16.250Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:84\"},\"delta\":\" wha\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":96,\"revision\":96,\"event\":{\"sequence\":96,\"revision\":96,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:85\",\"providerSequence\":86,\"cursor\":\"85\",\"receivedAt\":\"2026-08-29T05:41:16.258Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:85\"},\"delta\":\"t'\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":97,\"revision\":97,\"event\":{\"sequence\":97,\"revision\":97,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:86\",\"providerSequence\":87,\"cursor\":\"86\",\"receivedAt\":\"2026-08-29T05:41:16.265Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:86\"},\"delta\":\"s goin\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":98,\"revision\":98,\"event\":{\"sequence\":98,\"revision\":98,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:87\",\"providerSequence\":88,\"cursor\":\"87\",\"receivedAt\":\"2026-08-29T05:41:16.274Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:87\"},\"delta\":\"g on\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":99,\"revision\":99,\"event\":{\"sequence\":99,\"revision\":99,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:88\",\"providerSequence\":89,\"cursor\":\"88\",\"receivedAt\":\"2026-08-29T05:41:16.281Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\n\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:88\"},\"delta\":\".\\n\\n\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":100,\"revision\":100,\"event\":{\"sequence\":100,\"revision\":100,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:89\",\"providerSequence\":90,\"cursor\":\"89\",\"receivedAt\":\"2026-08-29T05:41:16.288Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:89\"},\"delta\":\"Le\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":101,\"revision\":101,\"event\":{\"sequence\":101,\"revision\":101,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:90\",\"providerSequence\":91,\"cursor\":\"90\",\"receivedAt\":\"2026-08-29T05:41:16.296Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:90\"},\"delta\":\"t me\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":102,\"revision\":102,\"event\":{\"sequence\":102,\"revision\":102,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:91\",\"providerSequence\":92,\"cursor\":\"91\",\"receivedAt\":\"2026-08-29T05:41:16.302Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:91\"},\"delta\":\" inspec\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":103,\"revision\":103,\"event\":{\"sequence\":103,\"revision\":103,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:92\",\"providerSequence\":93,\"cursor\":\"92\",\"receivedAt\":\"2026-08-29T05:41:16.308Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:92\"},\"delta\":\"t t\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":104,\"revision\":104,\"event\":{\"sequence\":104,\"revision\":104,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:93\",\"providerSequence\":94,\"cursor\":\"93\",\"receivedAt\":\"2026-08-29T05:41:16.314Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:93\"},\"delta\":\"he workspace\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":105,\"revision\":105,\"event\":{\"sequence\":105,\"revision\":105,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:94\",\"providerSequence\":95,\"cursor\":\"94\",\"receivedAt\":\"2026-08-29T05:41:16.320Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:94\"},\"delta\":\" firs\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":106,\"revision\":106,\"event\":{\"sequence\":106,\"revision\":106,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:95\",\"providerSequence\":96,\"cursor\":\"95\",\"receivedAt\":\"2026-08-29T05:41:16.327Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:95\"},\"delta\":\"t.\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":107,\"revision\":107,\"event\":{\"sequence\":107,\"revision\":107,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\",\"providerSequence\":97,\"cursor\":\"96\",\"receivedAt\":\"2026-08-29T05:41:16.939Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":108,\"revision\":108,\"event\":{\"sequence\":108,\"revision\":108,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:97\",\"providerSequence\":98,\"cursor\":\"97\",\"receivedAt\":\"2026-08-29T05:41:16.953Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"tool\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:97\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{\"command\":\"pwd && ls -la && echo \\\"---\\\" && ls -la /tmp/braid-live-interaction-9WT2lr/ 2>/dev/null | head -50\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":109,\"revision\":109,\"event\":{\"sequence\":109,\"revision\":109,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"providerSequence\":99,\"cursor\":\"98\",\"receivedAt\":\"2026-08-29T05:41:16.965Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":110,\"revision\":110,\"event\":{\"sequence\":110,\"revision\":110,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:99\",\"providerSequence\":100,\"cursor\":\"99\",\"receivedAt\":\"2026-08-29T05:41:16.972Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"tool\",\"text\":\"\",\"status\":\"running\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:99\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{\"command\":\"pwd && ls -la && echo \\\"---\\\" && ls -la /tmp/braid-live-interaction-9WT2lr/ 2>/dev/null | head -50\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":111,\"revision\":111,\"event\":{\"sequence\":111,\"revision\":111,\"kind\":\"run.interaction\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"providerSequence\":101,\"cursor\":\"100\",\"receivedAt\":\"2026-08-29T05:41:16.981Z\"},\"interaction\":{\"id\":\"interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2\",\"kind\":\"permission\",\"title\":\"Permission: bash\",\"answerSpec\":{\"fields\":[{\"type\":\"select\",\"name\":\"grant\",\"label\":\"Decision\",\"required\":true,\"options\":[{\"value\":\"allow_once\",\"label\":\"Allow once\"},{\"value\":\"deny\",\"label\":\"Deny\"}]}]},\"responseScopes\":[\"interaction\"]}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":112,\"revision\":112,\"event\":{\"sequence\":112,\"revision\":112,\"kind\":\"run.interaction.response.requested\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"value\":{\"kind\":\"run.interaction.response.requested\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"interactionId\":\"interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash\",\"outcome\":\"declined\",\"containsSecret\":false}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":113,\"revision\":113,\"event\":{\"sequence\":113,\"revision\":113,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash-98a68ff2adb18a9ea0a181f1\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"interaction.respond\",\"requestDigest\":\"98a68ff2adb18a9ea0a181f1fe98c874eb5432b6ecbf4dd629fce8b1a98161a4\",\"kind\":\"custom\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T05:41:17.017Z\",\"updatedAt\":\"2026-08-29T05:41:17.017Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":114,\"revision\":114,\"event\":{\"sequence\":114,\"revision\":114,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash-98a68ff2adb18a9ea0a181f1\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"interaction.respond\",\"requestDigest\":\"98a68ff2adb18a9ea0a181f1fe98c874eb5432b6ecbf4dd629fce8b1a98161a4\",\"kind\":\"custom\",\"status\":\"acknowledged\",\"attempt\":1,\"outcomeDigest\":\"26b992cc8aa12fe24a2603f4be22d30c1268dcc824e7088079cfbf0cef8d3263\",\"createdAt\":\"2026-08-29T05:41:17.017Z\",\"updatedAt\":\"2026-08-29T05:41:17.050Z\"}}}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash\",\"revision\":114,\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash\",\"command\":\"respond_interaction\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"control\":\"respond_interaction\",\"outcome\":\"accepted\",\"replayed\":false}\n{\"version\":1,\"type\":\"event\",\"sequence\":115,\"revision\":115,\"event\":{\"sequence\":115,\"revision\":115,\"kind\":\"run.interaction.responded\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"value\":{\"kind\":\"run.interaction.responded\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"interactionId\":\"interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-respond-pi-tangle-router-deepseek-v4-flash\",\"outcome\":\"declined\",\"containsSecret\":false,\"detail\":\"INTERACTION_RESPONSE_ACCEPTED\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":116,\"revision\":116,\"event\":{\"sequence\":116,\"revision\":116,\"kind\":\"feedback.decision.recorded\",\"payload\":{\"value\":{\"kind\":\"feedback.decision.recorded\",\"decision\":{\"id\":\"feedback-fbcae506f3d5d4fd76ecc08b40123afa8de7276e909a9109\",\"conversationId\":\"conv-1\",\"category\":\"rejection\",\"chosenOption\":\"declined\",\"automated\":false,\"createdAt\":\"2026-08-29T05:41:17.077Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":117,\"revision\":117,\"event\":{\"sequence\":117,\"revision\":117,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"providerSequence\":102,\"cursor\":\"101\",\"receivedAt\":\"2026-08-29T05:41:17.089Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"error\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-duplicate-pi-tangle-router-deepseek-v4-flash\",\"code\":\"INTERACTION_STALE\",\"message\":\"The interaction is already declined\",\"retryable\":false}\n{\"version\":1,\"type\":\"event\",\"sequence\":118,\"revision\":118,\"event\":{\"sequence\":118,\"revision\":118,\"kind\":\"run.part.updated\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"providerSequence\":103,\"cursor\":\"102\",\"receivedAt\":\"2026-08-29T05:41:17.102Z\"},\"part\":{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":119,\"revision\":119,\"event\":{\"sequence\":119,\"revision\":119,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"providerSequence\":104,\"cursor\":\"103\",\"receivedAt\":\"2026-08-29T05:41:17.111Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":120,\"revision\":120,\"event\":{\"sequence\":120,\"revision\":120,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"providerSequence\":105,\"cursor\":\"104\",\"receivedAt\":\"2026-08-29T05:41:17.119Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":121,\"revision\":121,\"event\":{\"sequence\":121,\"revision\":121,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"providerSequence\":106,\"cursor\":\"105\",\"receivedAt\":\"2026-08-29T05:41:17.126Z\"},\"unknown\":{\"type\":\"raw\",\"event\":{\"redacted\":true}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":122,\"revision\":122,\"event\":{\"sequence\":122,\"revision\":122,\"kind\":\"run.provider.event\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"providerSequence\":107,\"cursor\":\"106\",\"receivedAt\":\"2026-08-29T05:41:17.134Z\"},\"unknown\":{\"type\":\"model-processing\",\"phase\":\"generating\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":123,\"revision\":123,\"event\":{\"sequence\":123,\"revision\":123,\"kind\":\"run.status.changed\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"source\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:107\",\"providerSequence\":108,\"cursor\":\"107\",\"receivedAt\":\"2026-08-29T05:41:17.141Z\"},\"value\":{\"kind\":\"run.status.changed\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"streaming\",\"provider\":{\"eventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:107\",\"providerSequence\":108,\"cursor\":\"107\",\"receivedAt\":\"2026-08-29T05:41:17.141Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-state-post-response-pi-tangle-router-deepseek-v4-flash\",\"revision\":123,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":123,\"sequence\":123,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"streaming\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"updatedAt\":\"2026-08-29T05:41:17.142Z\",\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"incomplete\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"controlRef\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"executionId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"requestDigest\":\"sha256:e96ba51a1dadab4289c3e219fd1812c5d3eef0dc6d5afd9330d08e557e6c4390\"},\"materializationDigest\":\"f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301\",\"cursor\":\"107\",\"cursorCommittedSequence\":123,\"contentBytes\":1037}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"activeRuns\":[{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\"}],\"lastError\":null},\"view\":{\"revision\":123,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"branch\":\"branch-1\",\"status\":\"running\",\"statusText\":\"streaming\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"streaming\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"running\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"107\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\"},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"completeness\":\"incomplete\",\"contentBytes\":1037}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"activeRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"kind\":\"run\",\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"running\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"occurredAt\":\"2026-08-29T05:41:10.698Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"environment:environment-a166528e64ed0873fc9d36864eabfead\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:41:09.789Z\",\"occurredAt\":\"2026-08-29T05:41:13.057Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:interaction:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100:permission\",\"kind\":\"interaction\",\"title\":\"permission\",\"status\":\"running\",\"detail\":\"Permission: bash\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"interaction:interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2\",\"kind\":\"interaction\",\"title\":\"Permission: bash\",\"status\":\"running\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"running\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"running\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"running\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"running\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"running\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"running\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"running\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"running\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"running\",\"detail\":\"sequence 99\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"running\",\"detail\":\"sequence 102\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"running\",\"detail\":\"sequence 104\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"running\",\"detail\":\"sequence 105\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"running\",\"detail\":\"sequence 106\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"running\",\"detail\":\"sequence 107\",\"occurredAt\":\"2026-08-29T05:41:17.142Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:41:09.789Z\"},{\"id\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"running\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:41:10.698Z\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"running\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\"],\"runner\":\"pi\",\"startedAt\":\"2026-08-29T05:41:10.698Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:41:09.789Z\",\"observed: 2026-08-29T05:41:13.057Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"fields\":[{\"label\":\"status\",\"value\":\"streaming\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":false,\"source\":\"application\",\"reason\":\"A run is already active\"},\"run.cancel\":{\"available\":true,\"source\":\"runtime\"},\"run.queue\":{\"available\":true,\"source\":\"provider\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"The current runtime does not report steering support\"},\"run.detach\":{\"available\":true,\"source\":\"provider\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect while another run is active\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile while another run is active\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash\",\"revision\":128,\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash\",\"command\":\"cancel_run\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"control\":\"cancel\",\"outcome\":\"accepted\",\"replayed\":false}\n{\"version\":1,\"type\":\"event\",\"sequence\":124,\"revision\":124,\"event\":{\"sequence\":124,\"revision\":124,\"kind\":\"run.control.requested\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"control\":{\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live interactive proof completed\",\"text\":\"[unavailable]\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":125,\"revision\":125,\"event\":{\"sequence\":125,\"revision\":125,\"kind\":\"run.cancel.requested\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"control\":{\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"control\":\"cancel\",\"status\":\"requested\",\"reason\":\"live interactive proof completed\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":126,\"revision\":126,\"event\":{\"sequence\":126,\"revision\":126,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash-10b04e21cfa3afb087c48139\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"10b04e21cfa3afb087c481393e4ee2950b2916b1a3b917561edb6c912846a154\",\"kind\":\"custom\",\"status\":\"pending\",\"attempt\":1,\"createdAt\":\"2026-08-29T05:41:17.173Z\",\"updatedAt\":\"2026-08-29T05:41:17.173Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":127,\"revision\":127,\"event\":{\"sequence\":127,\"revision\":127,\"kind\":\"run.reconnecting\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"reconnecting\",\"completeness\":\"streaming\",\"cursor\":\"107\"}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":128,\"revision\":128,\"event\":{\"sequence\":128,\"revision\":128,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash-10b04e21cfa3afb087c48139\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.control.cancel\",\"requestDigest\":\"10b04e21cfa3afb087c481393e4ee2950b2916b1a3b917561edb6c912846a154\",\"kind\":\"custom\",\"status\":\"acknowledged\",\"attempt\":1,\"outcomeDigest\":\"f430d9c9c101fec536eed9da90bf212be94a7c138332862d1e9774b1266d9187\",\"createdAt\":\"2026-08-29T05:41:17.173Z\",\"updatedAt\":\"2026-08-29T05:41:17.228Z\"}}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":129,\"revision\":129,\"event\":{\"sequence\":129,\"revision\":129,\"kind\":\"run.control.acknowledged\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"control\":{\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"control\":\"cancel\",\"status\":\"accepted\",\"detail\":\"CONTROL_DETAIL\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":130,\"revision\":130,\"event\":{\"sequence\":130,\"revision\":130,\"kind\":\"run.finished\",\"payload\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"aborted\",\"completeness\":\"complete\",\"finalText\":\"\",\"usage\":{\"input\":0,\"output\":0,\"tokensKnown\":false,\"usdKnown\":false,\"model\":\"deepseek-v4-flash\"},\"reason\":\"CONTROL_DETAIL\"}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-cleanup-cancel-pi-tangle-router-deepseek-v4-flash\",\"revision\":130,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":130,\"sequence\":130,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"updatedAt\":\"2026-08-29T05:41:17.262Z\",\"terminalAt\":\"2026-08-29T05:41:17.262Z\",\"durationMs\":6564,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"controlRef\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"executionId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"requestDigest\":\"sha256:e96ba51a1dadab4289c3e219fd1812c5d3eef0dc6d5afd9330d08e557e6c4390\"},\"materializationDigest\":\"f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301\",\"cursor\":\"107\",\"cursorCommittedSequence\":123,\"contentBytes\":1051}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":130,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"107\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":6564},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"completeness\":\"complete\",\"contentBytes\":1051}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"kind\":\"run\",\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"cancelled\",\"elapsedMs\":6564,\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"occurredAt\":\"2026-08-29T05:41:10.698Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"environment:environment-a166528e64ed0873fc9d36864eabfead\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:41:09.789Z\",\"occurredAt\":\"2026-08-29T05:41:13.057Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:interaction:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100:permission\",\"kind\":\"interaction\",\"title\":\"permission\",\"status\":\"cancelled\",\"detail\":\"Permission: bash\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"interaction:interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2\",\"kind\":\"interaction\",\"title\":\"Permission: bash\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live interactive proof completed\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"107\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 99\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 102\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 104\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 105\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 106\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"cancelled\",\"detail\":\"sequence 107\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:41:09.789Z\"},{\"id\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:41:10.698Z\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\"],\"runner\":\"pi\",\"elapsedMs\":6564,\"startedAt\":\"2026-08-29T05:41:10.698Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:41:09.789Z\",\"observed: 2026-08-29T05:41:13.057Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-state-poll-0-pi-tangle-router-deepseek-v4-flash\",\"revision\":130,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":130,\"sequence\":130,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"updatedAt\":\"2026-08-29T05:41:17.262Z\",\"terminalAt\":\"2026-08-29T05:41:17.262Z\",\"durationMs\":6564,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"controlRef\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"executionId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"requestDigest\":\"sha256:e96ba51a1dadab4289c3e219fd1812c5d3eef0dc6d5afd9330d08e557e6c4390\"},\"materializationDigest\":\"f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301\",\"cursor\":\"107\",\"cursorCommittedSequence\":123,\"contentBytes\":1051}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":130,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"107\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":6564},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"completeness\":\"complete\",\"contentBytes\":1051}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"kind\":\"run\",\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"cancelled\",\"elapsedMs\":6564,\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"occurredAt\":\"2026-08-29T05:41:10.698Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"environment:environment-a166528e64ed0873fc9d36864eabfead\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:41:09.789Z\",\"occurredAt\":\"2026-08-29T05:41:13.057Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:interaction:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100:permission\",\"kind\":\"interaction\",\"title\":\"permission\",\"status\":\"cancelled\",\"detail\":\"Permission: bash\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"interaction:interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2\",\"kind\":\"interaction\",\"title\":\"Permission: bash\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live interactive proof completed\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"107\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 99\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 102\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 104\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 105\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 106\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"cancelled\",\"detail\":\"sequence 107\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:41:09.789Z\"},{\"id\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:41:10.698Z\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\"],\"runner\":\"pi\",\"elapsedMs\":6564,\"startedAt\":\"2026-08-29T05:41:10.698Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:41:09.789Z\",\"observed: 2026-08-29T05:41:13.057Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"interactive-protocol-final-state-pi-tangle-router-deepseek-v4-flash\",\"revision\":130,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":130,\"sequence\":130,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"updatedAt\":\"2026-08-29T05:41:17.262Z\",\"terminalAt\":\"2026-08-29T05:41:17.262Z\",\"durationMs\":6564,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"controlRef\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"executionId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"requestDigest\":\"sha256:e96ba51a1dadab4289c3e219fd1812c5d3eef0dc6d5afd9330d08e557e6c4390\"},\"materializationDigest\":\"f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301\",\"cursor\":\"107\",\"cursorCommittedSequence\":123,\"contentBytes\":1051}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":130,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"107\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":6564},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"completeness\":\"complete\",\"contentBytes\":1051}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"kind\":\"run\",\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"cancelled\",\"elapsedMs\":6564,\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"occurredAt\":\"2026-08-29T05:41:10.698Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"environment:environment-a166528e64ed0873fc9d36864eabfead\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:41:09.789Z\",\"occurredAt\":\"2026-08-29T05:41:13.057Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:interaction:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100:permission\",\"kind\":\"interaction\",\"title\":\"permission\",\"status\":\"cancelled\",\"detail\":\"Permission: bash\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"interaction:interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2\",\"kind\":\"interaction\",\"title\":\"Permission: bash\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live interactive proof completed\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"107\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 99\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 102\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 104\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 105\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 106\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"cancelled\",\"detail\":\"sequence 107\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:41:09.789Z\"},{\"id\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:41:10.698Z\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\"],\"runner\":\"pi\",\"elapsedMs\":6564,\"startedAt\":\"2026-08-29T05:41:10.698Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:41:09.789Z\",\"observed: 2026-08-29T05:41:13.057Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n{\"version\":1,\"type\":\"ack\",\"requestId\":\"interactive-protocol-shutdown-pi-tangle-router-deepseek-v4-flash\",\"revision\":130,\"operationId\":\"op-interactive-protocol-shutdown-pi-tangle-router-deepseek-v4-flash\",\"command\":\"shutdown\"}\n{\"version\":1,\"type\":\"event\",\"sequence\":131,\"revision\":131,\"event\":{\"sequence\":131,\"revision\":131,\"kind\":\"application.shutdown.requested\",\"payload\":{\"value\":{\"kind\":\"application.shutdown.requested\",\"operationId\":\"op-interactive-protocol-shutdown-pi-tangle-router-deepseek-v4-flash\"}}}}\n{\"version\":1,\"type\":\"event\",\"sequence\":132,\"revision\":132,\"event\":{\"sequence\":132,\"revision\":132,\"kind\":\"effect.upserted\",\"payload\":{\"value\":{\"kind\":\"effect.upserted\",\"effect\":{\"id\":\"effect-op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash-2251a154c5551c7c86dda8e7\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"effectKind\":\"run.execute\",\"requestDigest\":\"2251a154c5551c7c86dda8e703fc57dde3249dbcf4bf79c10eef8046748911ff\",\"kind\":\"send\",\"status\":\"failed\",\"attempt\":1,\"outcomeDigest\":\"709050be156660bc04bed3766c3160fcc713b9a8ebb19bfd0cd66bbe285c86e9\",\"createdAt\":\"2026-08-29T05:41:10.717Z\",\"updatedAt\":\"2026-08-29T05:41:18.530Z\"}}}}}\n{\"version\":1,\"type\":\"state\",\"requestId\":\"interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"revision\":132,\"projection\":\"full\",\"state\":{\"schemaVersion\":2,\"revision\":132,\"sequence\":132,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"profile\":{\"name\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"description\":\"Opt-in packed CLI Bridge smoke profile\",\"version\":\"0.1.0\",\"model\":{\"default\":\"deepseek-v4-flash\",\"provider\":\"tangle-router\",\"reasoningEffort\":\"none\"},\"harness\":\"pi\"},\"runConfiguration\":{\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"connectionId\":\"connection-live-cli-bridge\",\"overrides\":{}},\"draft\":\"\",\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"aborted\",\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"updatedAt\":\"2026-08-29T05:41:17.262Z\",\"terminalAt\":\"2026-08-29T05:41:17.262Z\",\"durationMs\":6564,\"inputTokens\":0,\"outputTokens\":0,\"tokensKnown\":false,\"usdKnown\":false,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"provider\":\"cli-bridge\",\"runner\":\"pi\",\"connectionId\":\"connection-live-cli-bridge\",\"completeness\":\"complete\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"controlRef\":{\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"provider\":\"cli-bridge\",\"environmentId\":\"cb1.WyJwaSIsInBpL3RhbmdsZS1yb3V0ZXIvZGVlcHNlZWstdjQtZmxhc2giLCJzaGEyNTY6YTdmZjg1M2ZjY2ZlNGI1NmIzMDY4NDMxN2NkNDBjNjQ1MDg1ZmFjNjNmY2NlZjA5YzM4YWY2ODNlOGExMWE1MiIsImIzQUlvTENhakxWbVV3eXV3TkFtX2twUjB6eEdHRThPOUJMeEdST0doSkkiXQ\",\"sessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"executionId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"requestDigest\":\"sha256:e96ba51a1dadab4289c3e219fd1812c5d3eef0dc6d5afd9330d08e557e6c4390\"},\"materializationDigest\":\"f6e8d9ef838a829b2fa4a6ce7a625b7d981a977b4f8a6973ed9a4992ed43a301\",\"cursor\":\"107\",\"cursorCommittedSequence\":123,\"contentBytes\":1051}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"interactions\":[],\"queue\":[],\"activeRunId\":null,\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"activeRuns\":[],\"lastError\":null},\"view\":{\"revision\":132,\"workspace\":\"/tmp/braid-live-interaction-9WT2lr/workspace-pi-tangle-router-deepseek-v4-flash\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"runner\":\"pi\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"runOverrides\":{},\"connection\":\"Live local CLI Bridge\",\"conversationId\":\"conv-1\",\"conversationTitle\":\"New conversation\",\"conversations\":[{\"id\":\"conv-1\",\"title\":\"New conversation\",\"branchId\":\"branch-1\",\"archived\":false,\"active\":true,\"updatedAt\":\"2026-08-29T05:41:10.698Z\"}],\"branch\":\"branch-1\",\"status\":\"cancelled\",\"statusText\":\"cancelled\",\"queueCount\":0,\"queue\":[],\"messages\":[{\"id\":\"message-65eb78ac-9876-4a42-a93d-366442211c96\",\"role\":\"user\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\",\"status\":\"complete\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"part-message-65eb78ac-9876-4a42-a93d-366442211c96\",\"kind\":\"text\",\"text\":\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\"}]},{\"id\":\"message-ae13afc6-a5c4-4a9e-b68e-306c6a54f3a7\",\"role\":\"assistant\",\"text\":\"\",\"status\":\"cancelled\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"parts\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:message:0:reasoning\",\"kind\":\"reasoning\",\"text\":\"The user is asking me to \\\"Ask one user-visible permission question before completing LIVE_BRAID_PI-TANGLE-ROUTER-DEEPSEEK-V4-FLASH_INTERACTIVE_OK.\\\"\\n\\nThis appears to be a task in a harness where I need to ask a permission question before completing some task. Let me look at the current working directory to understand what's going on.\\n\\nLet me inspect the workspace first.\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:96\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:tool:call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"kind\":\"result\",\"text\":\"\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:102\",\"toolName\":\"bash\",\"callId\":\"call_00_Rgw8zii2BbEF3AJWeXmw7367\",\"input\":{},\"result\":{\"content\":[{\"type\":\"text\",\"text\":\"permission denied\"}],\"details\":{}},\"error\":\"RUNTIME_TOOL_ERROR\"}]}],\"hiddenMessageCount\":0,\"runs\":[{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"turnId\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"conversationId\":\"conv-1\",\"branchId\":\"branch-1\",\"operationId\":\"op-interactive-protocol-3b3ed1e2-96c3-4b7b-9bf6-f413c140e8d5-send-pi-tangle-router-deepseek-v4-flash\",\"status\":\"cancelled\",\"profileName\":\"Braid live pi/tangle-router/deepseek-v4-flash\",\"profileDigest\":\"2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"model\":\"deepseek-v4-flash\",\"effort\":\"none\",\"cursor\":\"107\",\"providerSessionId\":\"session-braid-run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"usage\":{\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"model\":\"deepseek-v4-flash\",\"elapsedMs\":6564},\"runner\":\"pi\",\"provider\":\"cli-bridge\",\"connectionId\":\"connection-live-cli-bridge\",\"connection\":\"Live local CLI Bridge\",\"environmentId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"completeness\":\"complete\",\"contentBytes\":1051}],\"sessionUsage\":{\"turns\":{\"sourceCount\":1,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":1,\"unknownCostSources\":1,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":1,\"unknownLatencySources\":1},\"analyses\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"delegated\":{\"sourceCount\":0,\"input\":0,\"output\":0,\"tokenStatus\":\"unknown\",\"costStatus\":\"unknown\",\"unknownTokenSources\":0,\"unknownCostSources\":0,\"callStatus\":\"unknown\",\"latencyStatus\":\"unknown\",\"unknownCallSources\":0,\"unknownLatencySources\":0},\"attribution\":\"complete\"},\"environments\":[{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"connectionId\":\"connection-live-cli-bridge\",\"kind\":\"local-process\",\"provider\":\"cli-bridge\",\"lifecycle\":\"ready\",\"lifecycleMode\":\"retained\",\"cleanup\":\"explicit\",\"continuity\":\"session\",\"location\":\"local\",\"runtimeEndpointHost\":\"127.0.0.1\",\"unavailableTelemetry\":[\"cli-subscription-and-quota:not-exposed-by-provider\",\"effective-resources:not-exposed-by-provider\",\"machine-specs:not-exposed-by-provider\",\"runtime-cpu-memory-usage:not-exposed-by-provider\"],\"createdAt\":\"2026-08-29T05:41:09.789Z\",\"updatedAt\":\"2026-08-29T05:41:13.057Z\"}],\"focusedRunId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"interactions\":[],\"activity\":[{\"id\":\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"kind\":\"run\",\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"status\":\"cancelled\",\"elapsedMs\":6564,\"startedAt\":\"2026-08-29T05:41:10.698Z\",\"occurredAt\":\"2026-08-29T05:41:10.698Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"environment:environment-a166528e64ed0873fc9d36864eabfead\",\"kind\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"detail\":\"local-process · local · explicit\",\"startedAt\":\"2026-08-29T05:41:09.789Z\",\"occurredAt\":\"2026-08-29T05:41:13.057Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:interaction:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100:permission\",\"kind\":\"interaction\",\"title\":\"permission\",\"status\":\"cancelled\",\"detail\":\"Permission: bash\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"interaction:interaction-3761c1a6b76a902e8670b44b83510b0d5b40ab928a7f2cc2\",\"kind\":\"interaction\",\"title\":\"Permission: bash\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:100\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:admission:local:admitted\",\"kind\":\"system\",\"title\":\"admitted\",\"status\":\"cancelled\",\"detail\":\"profile 2f1e3af6a4e6f5d48ca0de6acb0c758ac03e386f6c86295ae4536b4a2e75209a\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:starting\",\"kind\":\"system\",\"title\":\"starting\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:status:local:streaming\",\"kind\":\"system\",\"title\":\"streaming\",\"status\":\"cancelled\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"live interactive proof completed\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:lifecycle:local:reconnecting\",\"kind\":\"system\",\"title\":\"reconnecting\",\"status\":\"cancelled\",\"detail\":\"107\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"activity:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:control.ack:local:cancel\",\"kind\":\"system\",\"title\":\"cancel\",\"status\":\"cancelled\",\"detail\":\"accepted\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 5\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:4\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 6\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:5\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 7\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:6\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 99\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:98\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 102\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:101\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 104\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:103\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 105\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:104\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"kind\":\"system\",\"title\":\"event raw\",\"status\":\"cancelled\",\"detail\":\"sequence 106\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:105\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"},{\"id\":\"event:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"kind\":\"system\",\"title\":\"event model-processing\",\"status\":\"cancelled\",\"detail\":\"sequence 107\",\"occurredAt\":\"2026-08-29T05:41:17.262Z\",\"sourceEventId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee:106\",\"runId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"entityType\":\"run\",\"entityId\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"}],\"graph\":[{\"id\":\"conv-1\",\"type\":\"conversation\",\"title\":\"New conversation\",\"status\":\"complete\",\"depth\":0,\"edgeLabel\":\"attached\",\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"branch-1\",\"type\":\"branch\",\"title\":\"Main\",\"status\":\"complete\",\"depth\":1,\"edgeLabel\":\"attached\",\"parentIds\":[\"conversation:conv-1\"],\"startedAt\":\"2026-08-29T05:41:06.708Z\"},{\"id\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"type\":\"environment\",\"title\":\"cli-bridge execution\",\"status\":\"complete\",\"depth\":4,\"edgeLabel\":\"attached\",\"parentIds\":[\"run:run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\"],\"runner\":\"cli-bridge\",\"startedAt\":\"2026-08-29T05:41:09.789Z\"},{\"id\":\"turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\",\"type\":\"turn\",\"title\":\"Turn\",\"status\":\"cancelled\",\"depth\":2,\"edgeLabel\":\"continued\",\"parentIds\":[\"branch:branch-1\"],\"startedAt\":\"2026-08-29T05:41:10.698Z\"},{\"id\":\"run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"type\":\"run\",\"title\":\"Run\",\"status\":\"cancelled\",\"depth\":3,\"edgeLabel\":\"attached\",\"parentIds\":[\"turn:turn-4b9d9c45-8687-4bf2-8537-2ddb683b9822\"],\"runner\":\"pi\",\"elapsedMs\":6564,\"startedAt\":\"2026-08-29T05:41:10.698Z\"}],\"graphQuery\":\"\",\"entityDetails\":[{\"entityType\":\"environment\",\"entityId\":\"environment-a166528e64ed0873fc9d36864eabfead\",\"title\":\"cli-bridge execution\",\"status\":\"ready\",\"lines\":[\"provider: cli-bridge\",\"execution: local-process · local\",\"connection: connection-live-cli-bridge\",\"lifecycle: ready · retained · cleanup explicit\",\"continuity: session\",\"runtime endpoint host: 127.0.0.1\",\"placement: requested not specified · verified unavailable\",\"machine: unavailable · physical IP is not exposed\",\"created: 2026-08-29T05:41:09.789Z\",\"observed: 2026-08-29T05:41:13.057Z\",\"unavailable: cli-subscription-and-quota:not-exposed-by-provider\",\"unavailable: effective-resources:not-exposed-by-provider\",\"unavailable: machine-specs:not-exposed-by-provider\",\"unavailable: runtime-cpu-memory-usage:not-exposed-by-provider\"]}],\"details\":{\"title\":\"run run-3c64ec41-ec5d-4681-bf86-7280f808b3ee\",\"fields\":[{\"label\":\"status\",\"value\":\"aborted\"},{\"label\":\"input tokens\",\"value\":\"0\"},{\"label\":\"output tokens\",\"value\":\"0\"},{\"label\":\"model\",\"value\":\"deepseek-v4-flash\"}]},\"capabilities\":{\"conversation.create\":{\"available\":true,\"source\":\"application\"},\"conversation.open\":{\"available\":true,\"source\":\"application\"},\"run.runner\":{\"available\":true,\"source\":\"application\"},\"run.model\":{\"available\":true,\"source\":\"application\"},\"run.effort\":{\"available\":true,\"source\":\"application\"},\"conversation.branch\":{\"available\":true,\"source\":\"application\"},\"conversation.clone\":{\"available\":true,\"source\":\"application\"},\"conversation.fork\":{\"available\":true,\"source\":\"application\"},\"analysis.ask\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.recipe\":{\"available\":false,\"source\":\"application\",\"reason\":\"Complete or fail a run before analyzing it\"},\"analysis.compare\":{\"available\":false,\"source\":\"application\",\"reason\":\"Two completed or failed runs are required for comparison\"},\"interaction.respond\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Interaction response is not exposed by the current runtime adapter\"},\"interaction.automation\":{\"available\":false,\"source\":\"application\",\"reason\":\"Interaction automation requires the shared response contract\"},\"run.interactive\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal mode requires an interactive TUI and a supported provider\"},\"run.attach\":{\"available\":false,\"source\":\"application\",\"reason\":\"Native terminal attachment requires an interactive TUI and a retained session\"},\"supervisor.worker.attach\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding\"},\"export.create\":{\"available\":true,\"source\":\"application\"},\"analysis.cancel\":{\"available\":false,\"source\":\"application\",\"reason\":\"There is no running analysis to cancel\"},\"application.quit\":{\"available\":true,\"source\":\"local\"},\"help.read\":{\"available\":true,\"source\":\"local\"},\"profile.select\":{\"available\":true,\"source\":\"application\"},\"connection.select\":{\"available\":true,\"source\":\"application\"},\"settings.open\":{\"available\":true,\"source\":\"application\"},\"activity.read\":{\"available\":true,\"source\":\"local\"},\"graph.read\":{\"available\":true,\"source\":\"local\"},\"details.read\":{\"available\":true,\"source\":\"local\"},\"supervisor.refresh\":{\"available\":true,\"source\":\"runtime\"},\"supervisor.worker.steer\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to steer\"},\"supervisor.worker.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervised worker to cancel\"},\"supervisor.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no running supervisor to cancel\"},\"draft.write\":{\"available\":true,\"source\":\"application\"},\"run.send\":{\"available\":true,\"source\":\"provider\"},\"run.cancel\":{\"available\":false,\"source\":\"runtime\",\"reason\":\"There is no active run to cancel\"},\"run.queue\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.steer\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.detach\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no active run\"},\"run.reconnect\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconnect\"},\"run.reconcile\":{\"available\":false,\"source\":\"provider\",\"reason\":\"There is no recoverable run to reconcile\"}},\"draft\":\"\",\"selectedSurface\":\"transcript\",\"appearance\":{\"color\":\"none\",\"highContrast\":false,\"reducedMotion\":false}}}\n",
+ "process": {
+ "processIdentity": {
+ "instanceId": "56e250bf-463c-480d-af68-8db32d4e1e3d",
+ "pid": 2654747,
+ "startedAt": 1787982065619
+ },
+ "termination": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 2654747
+ ],
+ "roots": [
+ 2654747
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "natural": {
+ "strategy": "natural-exit",
+ "termTimeoutMs": 2000,
+ "killTimeoutMs": 2000,
+ "termSent": false,
+ "killSent": false,
+ "forcedKill": false,
+ "initialExited": false,
+ "initialTree": {
+ "supported": true,
+ "gone": false,
+ "present": true,
+ "pids": [
+ 2654747
+ ],
+ "roots": [
+ 2654747
+ ],
+ "version": 0,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ },
+ "exited": true,
+ "descendantsExited": true,
+ "descendantsVerified": true,
+ "cleanupStatus": "natural-exit",
+ "tree": {
+ "supported": true,
+ "gone": true,
+ "present": false,
+ "pids": [],
+ "roots": [],
+ "version": 1,
+ "mechanism": "posix-descendant-tracker",
+ "ownership": "pid-start-time-and-descendant-lineage",
+ "observed": true,
+ "escaped": false
+ }
+ },
+ "exit": {
+ "code": 0,
+ "signal": null
+ }
+ }
+ },
+ "status": "passed",
+ "cleanup": [
+ {
+ "path": "/tmp/braid-live-interaction-9WT2lr",
+ "removed": true
+ },
+ {
+ "path": "/tmp/braid-live-install-MpZxkH",
+ "removed": true
+ },
+ {
+ "path": "/tmp/braid-live-pack-mIMgBK",
+ "removed": true
+ }
+ ],
+ "completedAt": "2026-08-29T05:41:18.738Z"
+}
diff --git a/artifacts/verification/live/tangle-live-07-rerun.json b/artifacts/verification/live/tangle-live-07-rerun.json
new file mode 100644
index 0000000..6c183cf
--- /dev/null
+++ b/artifacts/verification/live/tangle-live-07-rerun.json
@@ -0,0 +1 @@
+{"schemaVersion":"braid.tangle-sandbox-braid-soak.v1","status":"failed","startedAt":"2026-08-29T00:39:53.691Z","completedAt":"2026-08-29T00:40:22.387Z","requestedRuns":3,"attemptedRuns":1,"concurrency":2,"stoppedAfterCanary":true,"failures":["attempted 1 of 3 requested runs","run 1 did not pass exact proof","run 1: status was not passed"],"cleanup":{"exactProofs":1,"exactResourcesRemaining":0,"resourceProofsUnavailable":0,"activeResourceDelta":0,"activeResourceDeltas":[0]},"accountUsage":{"complete":true,"before":{"computeMinutes":146,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":7,"totalSandboxes":14386,"periodStart":{},"periodEnd":{}},"after":{"computeMinutes":146,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":7,"totalSandboxes":14387,"periodStart":{},"periodEnd":{}},"delta":{"activeSandboxes":0,"totalSandboxes":1,"computeMinutes":0,"gpuSeconds":0,"gpuCostUsd":0,"unknownFields":[]}},"latency":{"totalMs":{"n":1,"min":28694.776799000003,"median":28694.776799000003,"p90":28694.776799000003,"max":28694.776799000003},"phases":{}},"sessionSpend":"[REDACTED]","attempts":[{"index":0,"completionSequence":0,"startedAt":"2026-08-29T00:39:53.691Z","completedAt":"2026-08-29T00:40:22.387Z","requireZeroActiveResourceDelta":false,"proof":{"schemaVersion":"braid.tangle-sandbox-braid-stress.v1","proofId":"braid-cloud-stress-1787963993692-2309136-e3a16660","config":{"endpoint":"https://sandbox.tangle.tools","connectionId":"connection-live-tangle-sandbox","connectionKind":"tangle-sandbox","credentialConfigured":true,"model":"tangle-router/glm-5.2","runner":"opencode","lifecycle":"retained","idleTtlSeconds":1800},"timing":{"totalMs":28694.776799000003},"processes":{"binarySha256":"141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f"},"status":"failed","cleanup":{"exactResource":true,"mode":"exact-owned-resource-set","identity":{"confirmed":true,"mode":"exact-owned-resource-set","matchedCount":1,"removedIds":["sandbox-e1df5e0d9f98"],"deletions":[{"id":"sandbox-e1df5e0d9f98","attempts":["[TRUNCATED]"],"confirmed":true}],"remainingIds":[]},"activeResourceDelta":0,"activeResourceDeltaRequired":false,"accountUsageScope":"account-wide","accountUsageAttribution":"unattributed-shared-usage","usageObservationComplete":true,"usageDelta":{"activeSandboxes":0,"totalSandboxes":1,"computeMinutes":0,"gpuSeconds":0,"gpuCostUsd":0,"unknownFields":[]}},"usage":[{"phase":"before","status":"[REDACTED]","value":"[CIRCULAR]"},{"phase":"after","status":"[REDACTED]","value":"[CIRCULAR]"}],"accountIdentities":[{"phase":"before","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}},{"phase":"after","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}}],"accountIdentityConsistency":{"stable":true,"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46"},"workspaceVerification":null,"progress":{"firstRunId":"run-74463b8e-7bcb-4af2-84ba-9108387c89cd","providerEnvironmentId":"sandbox-e1df5e0d9f98","firstControlRef":{"runId":"run-74463b8e-7bcb-4af2-84ba-9108387c89cd","provider":"tangle-sandbox","environmentId":"sandbox-e1df5e0d9f98","sessionId":"[REDACTED]","executionId":"run-74463b8e-7bcb-4af2-84ba-9108387c89cd","requestDigest":"sha256:9322c83217b50aecc0b93ac60ee56dceef27b5f02b35d7af32ee94f4b593fe49"},"resumeFromCursor":"13"},"failure":{"name":"Error","message":"reconnect failed: CAPABILITY_UNAVAILABLE: Detach the active run before reconnecting it","fingerprint":{"name":"Error"}},"diagnostics":{"freshProcess":{"responseCount":3,"run":{"id":"run-74463b8e-7bcb-4af2-84ba-9108387c89cd","operationId":"op-braid-cloud-stress-1787963993692-2309136-e3a16660-turn-1","status":"reconnecting","environmentId":"environment-71b349da5d2af5953b1b48ea77d83208","providerSessionId":"[REDACTED]","materializationDigest":"7056f78561fcb92f793b4854eb6278fa3eeb1e347b8f3b1ce47679b7515fbd77","cursor":"13","observations":{"localEnvironmentId":"environment-71b349da5d2af5953b1b48ea77d83208","providerEnvironmentId":"sandbox-e1df5e0d9f98","environmentRecord":{"id":"[TRUNCATED]","connectionId":"[TRUNCATED]","kind":"[TRUNCATED]","provider":"[TRUNCATED]","providerEnvironmentId":"[TRUNCATED]","lifecycle":"[TRUNCATED]","lifecycleMode":"[TRUNCATED]","cleanup":"[TRUNCATED]","continuity":"[TRUNCATED]","location":"[TRUNCATED]","runtimeEndpointHost":"[TRUNCATED]","storagePersistence":"[TRUNCATED]","accountUsage":"[TRUNCATED]","unavailableTelemetry":"[TRUNCATED]","createdAt":"[TRUNCATED]","updatedAt":"[TRUNCATED]"},"run":{"inputTokens":"[TRUNCATED]","outputTokens":"[TRUNCATED]","reasoningTokens":"[TRUNCATED]","cacheReadTokens":"[TRUNCATED]","cacheWriteTokens":"[TRUNCATED]","costUsd":"[TRUNCATED]","costStatus":"[TRUNCATED]","usage":"[TRUNCATED]","cost":"[TRUNCATED]","tokensKnown":"[TRUNCATED]","usdKnown":"[TRUNCATED]","usageCompleteness":"[TRUNCATED]","latencyMs":"[TRUNCATED]","durationMs":"[TRUNCATED]","model":"[TRUNCATED]","provider":"[TRUNCATED]","runner":"[TRUNCATED]","operationId":"[TRUNCATED]","profileSnapshotId":"[TRUNCATED]","connectionId":"[TRUNCATED]","providerSessionId":"[REDACTED]","environmentId":"[TRUNCATED]","replayCursor":"[TRUNCATED]","lastCursor":"[TRUNCATED]","lastProviderSequence":"[TRUNCATED]","eventCount":"[TRUNCATED]","contentBytes":"[TRUNCATED]","contentTruncated":"[TRUNCATED]","missingSequence":"[TRUNCATED]","terminalReason":"[TRUNCATED]","materializationDigest":"[TRUNCATED]","complete":"[TRUNCATED]","status":"[TRUNCATED]","error":"[TRUNCATED]","startedAt":"[TRUNCATED]","updatedAt":"[TRUNCATED]","terminalAt":"[TRUNCATED]","placement":"[TRUNCATED]","resourceSample":"[TRUNCATED]","requestedResources":"[TRUNCATED]","machineId":"[TRUNCATED]","runtimeEndpointHost":"[TRUNCATED]","requestedRegion":"[TRUNCATED]","verifiedRegion":"[TRUNCATED]","storagePersistence":"[TRUNCATED]","gpu":"[TRUNCATED]"},"environment":{"kind":"[TRUNCATED]","providerEnvironmentId":"[TRUNCATED]","provider":"[TRUNCATED]","name":"[TRUNCATED]","lifecycle":"[TRUNCATED]","lifecycleMode":"[TRUNCATED]","cleanup":"[TRUNCATED]","continuity":"[TRUNCATED]","location":"[TRUNCATED]","region":"[TRUNCATED]","runtimeEndpointHost":"[TRUNCATED]","machineId":"[TRUNCATED]","requestedRegion":"[TRUNCATED]","verifiedRegion":"[TRUNCATED]","storagePersistence":"[TRUNCATED]","requestedResources":"[TRUNCATED]","resourceSample":"[TRUNCATED]","gpu":"[TRUNCATED]","accountUsage":"[TRUNCATED]","unavailableTelemetry":"[TRUNCATED]","placement":"[TRUNCATED]","repository":"[TRUNCATED]","gitRef":"[TRUNCATED]","workingDirectory":"[TRUNCATED]","image":"[TRUNCATED]","createdAt":"[TRUNCATED]","startedAt":"[TRUNCATED]","lastActivityAt":"[TRUNCATED]","expiresAt":"[TRUNCATED]","updatedAt":"[TRUNCATED]"}}},"errors":[{"requestId":"braid-live-reconnect-834f6a2a-9fdc-4309-ab2d-435e7558dec1","code":"CAPABILITY_UNAVAILABLE","message":"Detach the active run before reconnecting it"}]}},"failureProcessCleanup":{"fresh":{"cleanupStatus":"term","exited":true,"descendantsVerified":true,"exit":{"code":null,"signal":"SIGTERM"}}}}}]}
diff --git a/artifacts/verification/live/tangle-sandbox-braid-multirun-production-1787978842355.json b/artifacts/verification/live/tangle-sandbox-braid-multirun-production-1787978842355.json
new file mode 100644
index 0000000..edc1af4
--- /dev/null
+++ b/artifacts/verification/live/tangle-sandbox-braid-multirun-production-1787978842355.json
@@ -0,0 +1 @@
+{"schemaVersion":"braid.live-required.multirun.v2","status":"passed","proofId":"braid-multirun-1787978842355-69bfbe423a29412ea2bd1c4e9660ca18","startedAt":"2026-08-29T04:47:22.354Z","completedAt":"2026-08-29T04:51:13.012Z","elapsedMs":230658.223399,"config":{"endpoint":"https://sandbox.tangle.tools","connectionId":"connection-live-tangle-sandbox","connectionKind":"tangle-sandbox","credentialConfigured":true,"model":"tangle-router/glm-5.2","runner":"opencode","lifecycle":"retained","idleTtlSeconds":1800},"provider":{"endpoint":"https://sandbox.tangle.tools","runner":"opencode","model":"tangle-router/glm-5.2","lifecycle":"retained","credentialConfigured":true},"conversations":{"first":{"conversationId":"conv-1","branchId":"branch-1"},"second":{"conversationId":"conversation-8c1237bc659b77b369aaf1656ed908bb","branchId":"branch-8c1237bc659b77b369aaf1656ed908bb"}},"runs":[{"runId":"run-42b272cb-6953-4778-aab3-31684d2a9ace","conversationId":"conv-1","branchId":"branch-1","turnId":"turn-b6efdc94-d7a3-4757-a013-f71bcd238bbf","operationId":"op-0f74d829-1f6b-4a79-8fab-12ee36f18e77","status":"completed","provider":"tangle-sandbox","runner":"opencode","model":"tangle-router/glm-5.2","localEnvironmentId":"environment-1183ac255d402259966ee23725deb822","providerEnvironmentId":"sandbox-04b63585c0cf","materializationDigest":null,"cursor":"84","contentBytes":3209,"eventCount":44,"eventIdsUnique":true,"identifiers":[{"kind":"provider-environment","id":"sandbox-04b63585c0cf"},{"kind":"provider-session","id":"session-braid-run-42b272cb-6953-4778-aab3-31684d2a9ace"},{"kind":"provider-execution","id":"run-42b272cb-6953-4778-aab3-31684d2a9ace"},{"kind":"provider-run","id":"run-42b272cb-6953-4778-aab3-31684d2a9ace"}]},{"runId":"run-125939e4-97de-4151-bccc-10768bcb0084","conversationId":"conversation-8c1237bc659b77b369aaf1656ed908bb","branchId":"branch-8c1237bc659b77b369aaf1656ed908bb","turnId":"turn-36009a7c-b7ab-48e3-b005-5616fd0ed926","operationId":"op-80ca8b6a-99b7-4c34-89f1-3debd8f9f8a2","status":"aborted","provider":"tangle-sandbox","runner":"opencode","model":"tangle-router/glm-5.2","localEnvironmentId":"environment-84a588c55f49801b839a1ee962f851f1","providerEnvironmentId":"sandbox-78ece38207d0","materializationDigest":null,"cursor":"10","contentBytes":null,"eventCount":2,"eventIdsUnique":true,"identifiers":[{"kind":"provider-environment","id":"sandbox-78ece38207d0"},{"kind":"provider-session","id":"session-braid-run-125939e4-97de-4151-bccc-10768bcb0084"},{"kind":"provider-execution","id":"run-125939e4-97de-4151-bccc-10768bcb0084"},{"kind":"provider-run","id":"run-125939e4-97de-4151-bccc-10768bcb0084"}]}],"overlap":{"activeRunCount":2,"streamEventCounts":[{"runId":"run-42b272cb-6953-4778-aab3-31684d2a9ace","count":8},{"runId":"run-125939e4-97de-4151-bccc-10768bcb0084","count":1}],"workStripCount":2,"renderedWorkStripCount":2,"independentConversations":true},"focus":{"beforeRunId":"run-125939e4-97de-4151-bccc-10768bcb0084","firstSwitchRunId":"run-42b272cb-6953-4778-aab3-31684d2a9ace","secondSwitchRunId":"run-125939e4-97de-4151-bccc-10768bcb0084","firstSwitchPreservedStatuses":true,"secondSwitchPreservedStatuses":true},"cancellation":{"dispatch":{"eventKind":"run.control.requested","control":"cancel","runId":"run-125939e4-97de-4151-bccc-10768bcb0084","operationId":"op-f74a0af2-66d8-46db-978c-3f0952aa40c2","sequence":51},"targetRunId":"run-125939e4-97de-4151-bccc-10768bcb0084","targetStatus":"aborted","unaffectedRunId":"run-42b272cb-6953-4778-aab3-31684d2a9ace","unaffectedStatusAtAck":"streaming","unaffectedFinalStatus":"completed"},"replay":{"restartedRunCount":2,"noDuplicateEventIds":true,"eventSetsStable":true},"terminal":{"columns":120,"rows":40,"phases":{"concurrent":{"screen":" › Use the current Tangle Sandbox working directory for every command in this turn. Write exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B followed by a newline to .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt. Read .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt and print the result. Run git -C . rev-parse --is-inside-work-tree and print its result. Run sleep 180 before the final response so another branch can stream concurrently. Reply with exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B. working… ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › queue #1 ─────────────────────────────────── type / for commands · Alt+Enter newline · paste ──────────────────────────────────── profile Braid live tangle-sandbox · runner opencode · model tangle-router/glm-5.2 starting · Ctrl+C cancel work New conversation · running · opencode/tangle-router/glm-5.2 actions switch/!ask/!steer/cancel focus BRAID_MULTIRUN_BRAID-MULTI… conversation · starting actions switch/!ask/!steer/cancel host sandbox-78ece38207d0.tangle.sh ","outputBytes":281358},"focusA":{"screen":" › Use the current Tangle Sandbox working directory for every command in this turn. Write exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B followed by a newline to .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt. Read .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt and print the result. Run git -C . rev-parse --is-inside-work-tree and print its result. Run sleep 180 before the final response so another branch can stream concurrently. Reply with exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B. working… ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › queue #1 ─────────────────────────────────── type / for commands · Alt+Enter newline · paste ──────────────────────────────────── profile Braid live tangle-sandbox · runner opencode · model tangle-router/glm-5.2 starting · Ctrl+C cancel focus New conversation · running · opencode/tangle-router/glm-5.2 actions switch/!ask/!steer/cancel work BRAID_MULTIRUN_BRAID-MULTI… conversation · starting actions switch/!ask/!steer/cancel host sandbox-78ece38207d0.tangle.sh ","outputBytes":301651},"focusB":{"screen":" › Use the current Tangle Sandbox working directory for every command in this turn. Write exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B followed by a newline to .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt. Read .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt and print the result. Run git -C . rev-parse --is-inside-work-tree and print its result. Run sleep 180 before the final response so another branch can stream concurrently. Reply with exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B. working… ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › queue #1 ─────────────────────────────────── type / for commands · Alt+Enter newline · paste ──────────────────────────────────── profile Braid live tangle-sandbox · runner opencode · model tangle-router/glm-5.2 · backend Sandbox Ctrl+C cancel work New conversation · running · opencode/tangle-router/glm-5.2 actions switch/!ask/!steer/cancel focus BRAID_MULTIRUN_BRAID-MULTI… conversation · running actions switch/!ask/!steer/cancel host sandbox-78ece38207d0.tangle.sh ","outputBytes":320017},"cancelDispatch":{"screen":" › Use the current Tangle Sandbox working directory for every command in this turn. Write exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B followed by a newline to .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt. Read .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt and print the result. Run git -C . rev-parse --is-inside-work-tree and print its result. Run sleep 180 before the final response so another branch can stream concurrently. Reply with exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B. working… ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › queue #1 ─────────────────────────────────── type / for commands · Alt+Enter newline · paste ──────────────────────────────────── profile Braid live tangle-sandbox · runner opencode · model tangle-router/glm-5.2 · backend Sandbox stopping work New conversation · running · opencode/tangle-router/glm-5.2 actions switch/!ask/!steer/cancel focus BRAID_MULTIRUN_BRAID-MULTI… conversation · cancelling actions switch/!ask/!steer/cancel host sandbox-78ece38207d0.tangle.sh ","outputBytes":320451},"cancel":{"screen":" › Use the current Tangle Sandbox working directory for every command in this turn. Write exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B followed by a newline to .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt. Read .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt and print the result. Run git -C . rev-parse --is-inside-work-tree and print its result. Run sleep 180 before the final response so another branch can stream concurrently. Reply with exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B. cancelled ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › new message ─────────────────────────────────── type / for commands · Alt+Enter newline · paste ──────────────────────────────────── profile Braid live tangle-sandbox · runner opencode · model tangle-router/glm-5.2 cancelled · / commands · Ctrl+P ","outputBytes":329706},"final":{"screen":" › Use the current Tangle Sandbox working directory for every command in this turn. Write exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B followed by a newline to .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt. Read .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt and print the result. Run git -C . rev-parse --is-inside-work-tree and print its result. Run sleep 180 before the final response so another branch can stream concurrently. Reply with exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B. cancelled ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › new message ─────────────────────────────────── type / for commands · Alt+Enter newline · paste ──────────────────────────────────── profile Braid live tangle-sandbox · runner opencode · model tangle-router/glm-5.2 Ctrl+C again to quit ","outputBytes":330360},"restart":{"screen":" › Use the current Tangle Sandbox working directory for every command in this turn. Write exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B followed by a newline to .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt. Read .braid-live/BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B/marker.txt and print the result. Run git -C . rev-parse --is-inside-work-tree and print its result. Run sleep 180 before the final response so another branch can stream concurrently. Reply with exactly BRAID_MULTIRUN_BRAID-MULTIRUN-1787978842355-69BFBE423A29412EA2BD1C4E9660CA18_B. cancelled ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── › new message ─────────────────────────────────── type / for commands · Alt+Enter newline · paste ──────────────────────────────────── profile Braid live tangle-sandbox · runner opencode · model tangle-router/glm-5.2 cancelled · / commands · Ctrl+P ","outputBytes":7708}}},"identifiers":[{"kind":"provider-environment","id":"sandbox-04b63585c0cf"},{"kind":"provider-session","id":"session-braid-run-42b272cb-6953-4778-aab3-31684d2a9ace"},{"kind":"provider-execution","id":"run-42b272cb-6953-4778-aab3-31684d2a9ace"},{"kind":"provider-run","id":"run-42b272cb-6953-4778-aab3-31684d2a9ace"},{"kind":"provider-environment","id":"sandbox-78ece38207d0"},{"kind":"provider-session","id":"session-braid-run-125939e4-97de-4151-bccc-10768bcb0084"},{"kind":"provider-execution","id":"run-125939e4-97de-4151-bccc-10768bcb0084"},{"kind":"provider-run","id":"run-125939e4-97de-4151-bccc-10768bcb0084"}],"timings":{"account.before":1352.318951,"binary.resolve":0.19033500000000458,"workspace.prepare":111.23024699999996,"terminal.start":723.4877479999998,"branch-a.send":7883.013297,"branch-a.stream":7905.2617119999995,"conversation-b.create":728.2122789999994,"branch-b.send":7721.235503,"concurrent.stream":7415.946176999998,"focus-a":721.0769930000024,"focus-b":747.353492000002,"cancel-b.dispatch":153.14499599999544,"cancel-b":1433.907392000001,"branch-a.complete":177420.26962700003,"remote.status":2614.214994000009,"terminal.first.close":1137.2593940000224,"terminal.restart":427.710368,"replay.restart":0.76604899999802,"terminal.restart.close":1197.8104199999943,"provider.observe":706.0492609999783},"phases":{"account.before":{"status":"passed","elapsedMs":1352.307609},"binary.resolve":{"status":"passed","elapsedMs":0.1882309999998597},"workspace.prepare":{"status":"passed","elapsedMs":111.22528800000009},"terminal.start":{"status":"passed","elapsedMs":723.480624},"branch-a.send":{"status":"passed","elapsedMs":7883.006423},"branch-a.stream":{"status":"passed","elapsedMs":7905.2552289999985},"conversation-b.create":{"status":"passed","elapsedMs":728.2021989999994},"branch-b.send":{"status":"passed","elapsedMs":7721.228418999999},"concurrent.stream":{"status":"passed","elapsedMs":7415.936588000004},"focus-a":{"status":"passed","elapsedMs":721.0667529999992},"focus-b":{"status":"passed","elapsedMs":747.3394939999998},"cancel-b.dispatch":{"status":"passed","elapsedMs":153.1412779999955},"cancel-b":{"status":"passed","elapsedMs":1433.8994559999992},"branch-a.complete":{"status":"passed","elapsedMs":177420.256521},"remote.status":{"status":"passed","elapsedMs":2614.2094429999997},"terminal.first.close":{"status":"passed","elapsedMs":1137.248653000017},"terminal.restart":{"status":"passed","elapsedMs":427.6942659999768},"replay.restart":{"status":"passed","elapsedMs":0.7594160000153352},"terminal.restart.close":{"status":"passed","elapsedMs":1197.790531000006},"provider.observe":{"status":"passed","elapsedMs":706.0416059999843}},"account":{"before":{"phase":"before","identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","usage":{"activeSandboxes":6,"totalSandboxes":14481,"computeMinutes":1677,"gpuSeconds":0,"gpuCostUsd":0},"resources":[{"id":"sandbox-0f86bdcec11a-branch-mtdnbzqk-0","providerSessionId":"[REDACTED]","displayName":"braid-[REDACTED]","createdAt":{}},{"id":"sandbox-0f86bdcec11a","providerSessionId":"[REDACTED]","displayName":"braid-[REDACTED]","createdAt":{}},{"id":"sandbox-b40d3fb66dc9-branch-mtdnaz53-0","providerSessionId":"[REDACTED]","displayName":"braid-[REDACTED]","createdAt":{}},{"id":"sandbox-b40d3fb66dc9","providerSessionId":"[REDACTED]","displayName":"braid-[REDACTED]","createdAt":{}}]},"after":{"phase":"after","identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","usage":{"activeSandboxes":6,"totalSandboxes":14483,"computeMinutes":1705,"gpuSeconds":0,"gpuCostUsd":0},"resources":[{"id":"sandbox-0f86bdcec11a-branch-mtdnbzqk-0","providerSessionId":"[REDACTED]","displayName":"braid-[REDACTED]","createdAt":{}},{"id":"sandbox-0f86bdcec11a","providerSessionId":"[REDACTED]","displayName":"braid-[REDACTED]","createdAt":{}},{"id":"sandbox-b40d3fb66dc9-branch-mtdnaz53-0","providerSessionId":"[REDACTED]","displayName":"braid-[REDACTED]","createdAt":{}},{"id":"sandbox-b40d3fb66dc9","providerSessionId":"[REDACTED]","displayName":"braid-[REDACTED]","createdAt":{}}]}},"cleanup":{"resources":[{"runId":"run-42b272cb-6953-4778-aab3-31684d2a9ace","providerEnvironmentId":"sandbox-04b63585c0cf","id":"sandbox-04b63585c0cf","attempts":[{"attempt":1,"deleted":true}],"confirmed":true},{"runId":"run-125939e4-97de-4151-bccc-10768bcb0084","providerEnvironmentId":"sandbox-78ece38207d0","id":"sandbox-78ece38207d0","attempts":[{"attempt":1,"deleted":true}],"confirmed":true}],"errors":[],"exact":true,"activeResourceDelta":0,"accountStable":true,"workspace":{"protectedStoreClean":true,"temporaryRootRemoved":true}},"error":null}
diff --git a/artifacts/verification/live/tangle-sandbox-braid-stress-current-canary-proc-fixed.json b/artifacts/verification/live/tangle-sandbox-braid-stress-current-canary-proc-fixed.json
new file mode 100644
index 0000000..a19a879
--- /dev/null
+++ b/artifacts/verification/live/tangle-sandbox-braid-stress-current-canary-proc-fixed.json
@@ -0,0 +1 @@
+{"schemaVersion":"braid.tangle-sandbox-braid-soak.v1","status":"passed","startedAt":"2026-08-29T04:39:15.107Z","completedAt":"2026-08-29T04:40:58.588Z","requestedRuns":1,"attemptedRuns":1,"concurrency":1,"stoppedAfterCanary":false,"failures":[],"cleanup":{"exactProofs":1,"exactResourcesRemaining":0,"resourceProofsUnavailable":0,"activeResourceDelta":0,"activeResourceDeltas":[0]},"accountUsage":{"complete":true,"before":{"computeMinutes":1619,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":6,"totalSandboxes":14475,"periodStart":{},"periodEnd":{}},"after":{"computeMinutes":1633,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":6,"totalSandboxes":14476,"periodStart":{},"periodEnd":{}},"delta":{"activeSandboxes":0,"totalSandboxes":1,"computeMinutes":14,"gpuSeconds":0,"gpuCostUsd":0,"unknownFields":[]}},"latency":{"totalMs":{"n":1,"min":103478.361886,"median":103478.361886,"p90":103478.361886,"max":103478.361886},"phases":{"cancel.first":{"n":1,"min":1316.3715419999935,"median":1316.3715419999935,"p90":1316.3715419999935,"max":1316.3715419999935},"cancel.observeControl":{"n":1,"min":4722.709656999999,"median":4722.709656999999,"p90":4722.709656999999,"max":4722.709656999999},"cancel.restart.closeFirstProcess":{"n":1,"min":77.09555700000783,"median":77.09555700000783,"p90":77.09555700000783,"max":77.09555700000783},"cancel.restart.closeRetryProcess":{"n":1,"min":76.6919329999946,"median":76.6919329999946,"p90":76.6919329999946,"max":76.6919329999946},"cancel.restart.initialize":{"n":1,"min":406.76111399999354,"median":406.76111399999354,"p90":406.76111399999354,"max":406.76111399999354},"cancel.retryChangedBody":{"n":1,"min":1.488152000005357,"median":1.488152000005357,"p90":1.488152000005357,"max":1.488152000005357},"cancel.retrySameBody":{"n":1,"min":18.133082000000286,"median":18.133082000000286,"p90":18.133082000000286,"max":18.133082000000286},"cancel.send":{"n":1,"min":1326.6062390000006,"median":1326.6062390000006,"p90":1326.6062390000006,"max":1326.6062390000006},"cancel.verifyRemote":{"n":1,"min":2887.3814199999906,"median":2887.3814199999906,"p90":2887.3814199999906,"max":2887.3814199999906},"cancel.waitCompletion":{"n":1,"min":51.0732330000028,"median":51.0732330000028,"p90":51.0732330000028,"max":51.0732330000028},"firstProcess.initialize":{"n":1,"min":487.18293800000015,"median":487.18293800000015,"p90":487.18293800000015,"max":487.18293800000015},"firstProcess.observeControl":{"n":1,"min":6829.522201,"median":6829.522201,"p90":6829.522201,"max":6829.522201},"firstProcess.send":{"n":1,"min":1520.441691,"median":1520.441691,"p90":1520.441691,"max":1520.441691},"firstProcess.sigkill":{"n":1,"min":67.82232600000134,"median":67.82232600000134,"p90":67.82232600000134,"max":67.82232600000134},"firstProcess.waitVisible":{"n":1,"min":10280.848214000001,"median":10280.848214000001,"p90":10280.848214000001,"max":10280.848214000001},"followUp.observeControl":{"n":1,"min":0.23437200000626035,"median":0.23437200000626035,"p90":0.23437200000626035,"max":0.23437200000626035},"followUp.prepareContinuityChallenge":{"n":1,"min":1457.6963579999938,"median":1457.6963579999938,"p90":1457.6963579999938,"max":1457.6963579999938},"followUp.send":{"n":1,"min":601.1853370000026,"median":601.1853370000026,"p90":601.1853370000026,"max":601.1853370000026},"followUp.verifyWorkspace":{"n":1,"min":2756.312380999996,"median":2756.312380999996,"p90":2756.312380999996,"max":2756.312380999996},"followUp.waitTerminal":{"n":1,"min":17749.502548999997,"median":17749.502548999997,"p90":17749.502548999997,"max":17749.502548999997},"freshProcess.initialize":{"n":1,"min":401.67595000000074,"median":401.67595000000074,"p90":401.67595000000074,"max":401.67595000000074},"freshProcess.observeControl":{"n":1,"min":0.15602700000454206,"median":0.15602700000454206,"p90":0.15602700000454206,"max":0.15602700000454206},"freshProcess.reconnect":{"n":1,"min":42717.053567,"median":42717.053567,"p90":42717.053567,"max":42717.053567},"freshProcess.waitTerminal":{"n":1,"min":18.181256000003486,"median":18.181256000003486,"p90":18.181256000003486,"max":18.181256000003486},"workspace":{"n":1,"min":29.673814999999877,"median":29.673814999999877,"p90":29.673814999999877,"max":29.673814999999877}}},"sessionSpend":"[REDACTED]","attempts":[{"index":0,"completionSequence":0,"startedAt":"2026-08-29T04:39:15.108Z","completedAt":"2026-08-29T04:40:58.587Z","requireZeroActiveResourceDelta":false,"proof":{"schemaVersion":"braid.tangle-sandbox-braid-stress.v1","status":"passed","proofId":"braid-cloud-stress-1787978355109-594335-3c725ae5","resourceIdentity":{"observed":true,"id":"sandbox-8a7c7179df0c","name":"braid-session-braid-[REDACTED]","metadata":{"owner":"braid","lifecycle":"retained","providerSessionId":"[REDACTED]"}},"config":{"endpoint":"https://sandbox.tangle.tools","connectionId":"connection-live-tangle-sandbox","connectionKind":"tangle-sandbox","credentialConfigured":true,"model":"[REDACTED]","runner":"[REDACTED]","lifecycle":"retained","idleTtlSeconds":1800},"processes":{"first":{"signal":"SIGKILL","code":null,"sent":true,"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":null,"signal":"SIGKILL"}}},"cancelled":{"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":0,"signal":null}}},"retry":{"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":0,"signal":null}}},"localRunCountAfterReconnect":1,"binarySha256":"141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f"},"runs":{"first":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"streaming","environmentId":"environment-2141a56a9f43ec034144be719f37f1bd","providerSessionId":"[REDACTED]","materializationDigest":"7a194ac672e429a2b1f9268fc587a9ef5886a31697110438c913a78c2afdc6e6","cursor":"13","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-8a7c7179df0c","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:7b96801a7ebf1057f60c57b80b0b58a0ff111601eac0cbeaa3872b2aa4ed2ce2"},"observations":{"localEnvironmentId":"environment-2141a56a9f43ec034144be719f37f1bd","providerEnvironmentId":"sandbox-8a7c7179df0c","environmentRecord":{"id":"environment-2141a56a9f43ec034144be719f37f1bd","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-8a7c7179df0c","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-8a7c7179df0c.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:39:20.286Z","updatedAt":"2026-08-29T04:39:23.203Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"resumed":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","environmentId":"environment-2141a56a9f43ec034144be719f37f1bd","providerSessionId":"[REDACTED]","materializationDigest":"7a194ac672e429a2b1f9268fc587a9ef5886a31697110438c913a78c2afdc6e6","cursor":"62","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-8a7c7179df0c","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:7b96801a7ebf1057f60c57b80b0b58a0ff111601eac0cbeaa3872b2aa4ed2ce2"},"observations":{"localEnvironmentId":"environment-2141a56a9f43ec034144be719f37f1bd","providerEnvironmentId":"sandbox-8a7c7179df0c","environmentRecord":{"id":"environment-2141a56a9f43ec034144be719f37f1bd","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-8a7c7179df0c","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-8a7c7179df0c.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:39:20.286Z","updatedAt":"2026-08-29T04:39:23.203Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"followUp":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","environmentId":"environment-2141a56a9f43ec034144be719f37f1bd","providerSessionId":"[REDACTED]","materializationDigest":"e0195b648390dd540add39c689c0e9b36287fdc8a442e57f0a12a9f2d82d8427","cursor":"89","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-8a7c7179df0c","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:3517133c5a629c7c3b36d573c8a315da5cd0ee874f99f7545e624790bee6d348"},"observations":{"localEnvironmentId":"environment-2141a56a9f43ec034144be719f37f1bd","providerEnvironmentId":"sandbox-8a7c7179df0c","environmentRecord":{"id":"environment-2141a56a9f43ec034144be719f37f1bd","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-8a7c7179df0c","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-8a7c7179df0c.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:39:20.286Z","updatedAt":"2026-08-29T04:40:24.443Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"cancelled":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"aborted","environmentId":"environment-2141a56a9f43ec034144be719f37f1bd","providerSessionId":"[REDACTED]","materializationDigest":"479eff7fffbc868a1d52463b3b39dc0840b40ed3b905b72e2052a62f3f9719c8","cursor":"96","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-8a7c7179df0c","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:6a692c578aeceb4518edbea3e26860b6332272d1ee472c6bf82c1561b8b8778c"},"observations":{"localEnvironmentId":"environment-2141a56a9f43ec034144be719f37f1bd","providerEnvironmentId":"sandbox-8a7c7179df0c","environmentRecord":{"id":"environment-2141a56a9f43ec034144be719f37f1bd","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-8a7c7179df0c","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-8a7c7179df0c.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:39:20.286Z","updatedAt":"2026-08-29T04:40:45.940Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}}},"replay":{"firstVisibleEventCount":6,"freshVisibleEventCount":24,"freshVisibleEventIdsUnique":true,"resumeFromCursor":"13","finalCursor":"62","acknowledgedBeforeKillEventIds":["5","6","8","10","11","13"],"freshVisibleEventIds":["17","19","20","22","23","25","29","31","32","34","36","38","42","44","45","47","48","49","50","51","52","53","57","59"],"acknowledgedAndFreshIntersection":[],"progress":{"acknowledgedSequence":9,"firstFreshSequence":11},"reconnectRequest":{"version":1,"requestId":"braid-live-reconnect-e12373dc-73c2-4b70-bdfc-7423ed2633e5","operationId":"op-braid-cloud-stress-1787978355109-594335-3c725ae5-reconnect-1","command":"reconnect","params":{"runId":"[REDACTED]"}}},"cancellation":{"first":{"version":1,"type":"ack","requestId":"braid-live-cancel_run-26fceda2-4bd5-4dc8-a02d-53cbf4c3acab","revision":85,"operationId":"op-braid-cloud-stress-1787978355109-594335-3c725ae5-cancel-1","command":"cancel_run","runId":"[REDACTED]","control":"cancel","outcome":"accepted","replayed":false},"sameBody":{"version":1,"type":"ack","requestId":"braid-live-cancel_run-47a89573-5c84-4a15-bfe0-bbab4867ce8c","revision":89,"operationId":"op-braid-cloud-stress-1787978355109-594335-3c725ae5-cancel-1","command":"cancel_run","runId":"[REDACTED]","control":"cancel","outcome":"accepted","replayed":true},"changedBody":{"version":1,"type":"error","requestId":"braid-live-cancel_run-e5ec9aab-c853-4903-b7f4-17b5755d67cf","code":"OPERATION_CONFLICT","message":"Operation op-braid-cloud-stress-1787978355109-594335-3c725ae5-cancel-1 has different input","retryable":false},"remote":{"controlRef":"[CIRCULAR]","samples":[{"status":"cancelled","activeExecutionId":null,"latestExecutionId":"[REDACTED]","observedAt":"2026-08-29T04:40:50.835Z"}],"settledStatus":"cancelled","exactResult":{"executionId":"[REDACTED]","status":"failed","success":false},"messageCount":5,"lateResult":false}},"account":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","usage":{"computeMinutes":1629,"gpuSeconds":0,"gpuCostUsd":0,"activeSandboxes":7,"totalSandboxes":14476},"sampledAt":"2026-08-29T04:40:22.293Z"},"telemetry":{"completeDisclosure":true,"fields":{"tokens":{"status":"[REDACTED]","input":8375,"output":249},"cost":{"status":"[REDACTED]","usd":0},"endToEndDuration":{"status":"[REDACTED]","milliseconds":17694},"model":{"status":"[REDACTED]","value":"[REDACTED]"},"environment":{"status":"[REDACTED]","value":"sandbox-8a7c7179df0c"},"runtimeEndpoint":{"status":"[REDACTED]","host":"sandbox-8a7c7179df0c.tangle.sh"},"machine":{"status":"[REDACTED]"},"region":{"status":"[REDACTED]"},"requestedResources":{"status":"provider-default"},"resourceSample":{"status":"[REDACTED]","value":{"cgroupVersion":2,"memoryCurrentMb":228,"memoryPeakMb":694,"memoryLimitMb":2048,"cpuUsageUsec":62239102,"sampledAtMs":1787978442291}},"account":{"status":"[REDACTED]","value":"[CIRCULAR]"}},"unavailable":"[CIRCULAR]","runs":{"first":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"},"resumed":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]","input":"[TRUNCATED]","output":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]","usd":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"},"followUp":{"completeDisclosure":true,"fields":"[CIRCULAR]","unavailable":"[CIRCULAR]"},"cancelled":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"}}},"spend":{"scope":"all unique local runs in this cloud proof","rows":[{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]","input":3740,"output":587},"cost":{"status":"[REDACTED]","usd":0,"provenance":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":61028}},{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]","input":8375,"output":249},"cost":{"status":"[REDACTED]","usd":0,"provenance":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":17694}},{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"aborted","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]"},"cost":{"status":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":6073}}],"totals":{"tokens":{"observedRuns":2,"unavailableRuns":1,"missingRuns":0,"input":12115,"output":836},"cost":{"observedRuns":2,"unavailableRuns":1,"missingRuns":0,"usd":0}}},"followUpEvidence":{"visibleProviderEvents":9,"continuity":{"challengePath":".braid-live/braid-cloud-stress-1787978355109-594335-3c725ae5/continuity-challenge.txt","responsePath":".braid-live/braid-cloud-stress-1787978355109-594335-3c725ae5/continuity-response.txt","challengeBytes":65,"expectedDigest":"2323f38ac6eccebcecc57edfec4761929a35ed20c2d11f21f41116dabda660e5","responseDigest":"2323f38ac6eccebcecc57edfec4761929a35ed20c2d11f21f41116dabda660e5","matched":true}},"workspaceVerification":{"environmentId":"sandbox-8a7c7179df0c","markerPath":".braid-live/braid-cloud-stress-1787978355109-594335-3c725ae5/marker.txt","readValue":"BRAID_CLOUD_1787978355109_594335_3c725ae5 ","readMatched":true,"executionAttempt":{"path":".braid-live/braid-cloud-stress-1787978355109-594335-3c725ae5/execution-attempts.log","lineCount":1,"expectedDigest":"sha256:09e7687e48307643e091468bf86a0359c9891621d4ab3e8a604e4be9aa7c6614","observedDigest":"sha256:09e7687e48307643e091468bf86a0359c9891621d4ab3e8a604e4be9aa7c6614","matched":true},"continuity":"[CIRCULAR]","git":{"exitCode":0,"stdout":""},"resourceSample":"[CIRCULAR]"},"timing":{"workspace":{"elapsedMs":29.673814999999877},"firstProcess.initialize":{"elapsedMs":487.18293800000015},"firstProcess.send":{"elapsedMs":1520.441691},"firstProcess.observeControl":{"elapsedMs":6829.522201},"firstProcess.waitVisible":{"elapsedMs":10280.848214000001},"firstProcess.sigkill":{"elapsedMs":67.82232600000134},"freshProcess.initialize":{"elapsedMs":401.67595000000074},"freshProcess.reconnect":{"elapsedMs":42717.053567},"freshProcess.waitTerminal":{"elapsedMs":18.181256000003486},"freshProcess.observeControl":{"elapsedMs":0.15602700000454206},"followUp.prepareContinuityChallenge":{"elapsedMs":1457.6963579999938},"followUp.send":{"elapsedMs":601.1853370000026},"followUp.waitTerminal":{"elapsedMs":17749.502548999997},"followUp.observeControl":{"elapsedMs":0.23437200000626035},"followUp.verifyWorkspace":{"elapsedMs":2756.312380999996},"cancel.send":{"elapsedMs":1326.6062390000006},"cancel.observeControl":{"elapsedMs":4722.709656999999},"cancel.first":{"elapsedMs":1316.3715419999935},"cancel.waitCompletion":{"elapsedMs":51.0732330000028},"cancel.verifyRemote":{"elapsedMs":2887.3814199999906},"cancel.restart.closeFirstProcess":{"elapsedMs":77.09555700000783},"cancel.restart.initialize":{"elapsedMs":406.76111399999354},"cancel.retrySameBody":{"elapsedMs":18.133082000000286},"cancel.retryChangedBody":{"elapsedMs":1.488152000005357},"cancel.restart.closeRetryProcess":{"elapsedMs":76.6919329999946},"totalMs":103478.361886},"cleanup":{"exactResource":true,"mode":"exact-owned-resource-set","identity":{"confirmed":true,"mode":"exact-owned-resource-set","matchedCount":1,"removedIds":["sandbox-8a7c7179df0c"],"deletions":[{"id":"sandbox-8a7c7179df0c","attempts":["[TRUNCATED]"],"confirmed":true}],"remainingIds":[]},"activeResourceDelta":0,"activeResourceDeltaRequired":false,"accountUsageScope":"account-wide","accountUsageAttribution":"unattributed-shared-usage","usageObservationComplete":true,"usageDelta":{"activeSandboxes":0,"totalSandboxes":1,"computeMinutes":14,"gpuSeconds":0,"gpuCostUsd":0,"unknownFields":[]}},"usage":[{"phase":"before","status":"[REDACTED]","value":"[CIRCULAR]"},{"phase":"after","status":"[REDACTED]","value":"[CIRCULAR]"}],"accountIdentities":[{"phase":"before","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}},{"phase":"after","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}}],"accountIdentityConsistency":{"stable":true,"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46"},"progress":{"firstRunId":"[REDACTED]","cancelRunId":"[REDACTED]","providerEnvironmentId":"sandbox-8a7c7179df0c","firstControlRef":"[CIRCULAR]","resumeFromCursor":"13","freshControlRef":"[CIRCULAR]","finalCursor":"62"}}}]}
diff --git a/artifacts/verification/live/tangle-sandbox-braid-stress-current-cohort-proc-fixed.json b/artifacts/verification/live/tangle-sandbox-braid-stress-current-cohort-proc-fixed.json
new file mode 100644
index 0000000..87d1481
--- /dev/null
+++ b/artifacts/verification/live/tangle-sandbox-braid-stress-current-cohort-proc-fixed.json
@@ -0,0 +1 @@
+{"schemaVersion":"braid.tangle-sandbox-braid-soak.v1","status":"passed","startedAt":"2026-08-29T04:41:26.261Z","completedAt":"2026-08-29T04:45:09.555Z","requestedRuns":3,"attemptedRuns":3,"concurrency":2,"stoppedAfterCanary":false,"failures":[],"cleanup":{"exactProofs":3,"exactResourcesRemaining":0,"resourceProofsUnavailable":0,"activeResourceDelta":0,"activeResourceDeltas":[0,1,0]},"accountUsage":{"complete":true,"before":{"computeMinutes":1636,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":6,"totalSandboxes":14476,"periodStart":{},"periodEnd":{}},"after":{"computeMinutes":1662,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":6,"totalSandboxes":14481,"periodStart":{},"periodEnd":{}},"delta":{"activeSandboxes":0,"totalSandboxes":5,"computeMinutes":26,"gpuSeconds":0,"gpuCostUsd":0,"unknownFields":[]}},"latency":{"totalMs":{"n":3,"min":100638.65110399999,"median":108511.577914,"p90":114778.965921,"max":114778.965921},"phases":{"cancel.first":{"n":3,"min":1369.863360999996,"median":1390.1583870000031,"p90":1447.6587350000045,"max":1447.6587350000045},"cancel.observeControl":{"n":3,"min":4543.886706999998,"median":4562.294001000002,"p90":5088.457620000001,"max":5088.457620000001},"cancel.restart.closeFirstProcess":{"n":3,"min":78.10680399999546,"median":79.5632859999896,"p90":117.41563800000586,"max":117.41563800000586},"cancel.restart.closeRetryProcess":{"n":3,"min":69.44933899999887,"median":77.6836829999811,"p90":107.88045300001977,"max":107.88045300001977},"cancel.restart.initialize":{"n":3,"min":411.6954550000082,"median":437.07934700000624,"p90":761.8758670000243,"max":761.8758670000243},"cancel.retryChangedBody":{"n":3,"min":1.230875000008382,"median":4.132320999997319,"p90":17.793123999988893,"max":17.793123999988893},"cancel.retrySameBody":{"n":3,"min":5.7078050000127405,"median":15.151038999989396,"p90":22.831900999997742,"max":22.831900999997742},"cancel.send":{"n":3,"min":125.76695099999779,"median":130.38721299997997,"p90":271.05052100001194,"max":271.05052100001194},"cancel.verifyRemote":{"n":3,"min":2995.3996590000024,"median":3067.5181879999873,"p90":3105.6106410000066,"max":3105.6106410000066},"cancel.waitCompletion":{"n":3,"min":49.367528000002494,"median":49.79504799999995,"p90":102.92078300000867,"max":102.92078300000867},"firstProcess.initialize":{"n":3,"min":486.70759800000815,"median":488.34459000000015,"p90":512.4130389999918,"max":512.4130389999918},"firstProcess.observeControl":{"n":3,"min":5971.305828000011,"median":6517.56878,"p90":6565.403333000009,"max":6565.403333000009},"firstProcess.send":{"n":3,"min":259.08415600000035,"median":321.246742000003,"p90":1071.1765619999933,"max":1071.1765619999933},"firstProcess.sigkill":{"n":3,"min":53.602006999997684,"median":54.131472000008216,"p90":57.32763899999554,"max":57.32763899999554},"firstProcess.waitVisible":{"n":3,"min":14551.70257200001,"median":18501.463623000003,"p90":22881.919364,"max":22881.919364},"followUp.observeControl":{"n":3,"min":0.17704899999080226,"median":0.1880599999858532,"p90":0.26050299999769777,"max":0.26050299999769777},"followUp.prepareContinuityChallenge":{"n":3,"min":1301.8622120000073,"median":1420.0105029999977,"p90":1430.7034649999987,"max":1430.7034649999987},"followUp.send":{"n":3,"min":115.12191799998982,"median":130.3075550000067,"p90":1295.0027110000083,"max":1295.0027110000083},"followUp.verifyWorkspace":{"n":3,"min":1931.2702069999941,"median":2086.7500859999855,"p90":2952.133624000009,"max":2952.133624000009},"followUp.waitTerminal":{"n":3,"min":18232.775288999983,"median":20727.527894000013,"p90":22803.777100000007,"max":22803.777100000007},"freshProcess.initialize":{"n":3,"min":429.2705309999983,"median":431.6718390000169,"p90":432.6593540000031,"max":432.6593540000031},"freshProcess.observeControl":{"n":3,"min":0.08001800000783987,"median":0.10725100000854582,"p90":0.1830210000043735,"max":0.1830210000043735},"freshProcess.reconnect":{"n":3,"min":36038.479315000004,"median":41807.498239,"p90":42427.32603200001,"max":42427.32603200001},"freshProcess.waitTerminal":{"n":3,"min":6.248559999992722,"median":13.952366999990772,"p90":15.183192000025883,"max":15.183192000025883},"workspace":{"n":3,"min":8.756439999997383,"median":11.65107400000852,"p90":24.727975000000015,"max":24.727975000000015}}},"sessionSpend":"[REDACTED]","attempts":[{"index":0,"completionSequence":0,"startedAt":"2026-08-29T04:41:26.261Z","completedAt":"2026-08-29T04:43:21.041Z","requireZeroActiveResourceDelta":false,"proof":{"schemaVersion":"braid.tangle-sandbox-braid-stress.v1","status":"passed","proofId":"braid-cloud-stress-1787978486262-681810-fbee6642","resourceIdentity":{"observed":true,"id":"sandbox-f8b511132bfe","name":"braid-session-braid-[REDACTED]","metadata":{"owner":"braid","lifecycle":"retained","providerSessionId":"[REDACTED]"}},"config":{"endpoint":"https://sandbox.tangle.tools","connectionId":"connection-live-tangle-sandbox","connectionKind":"tangle-sandbox","credentialConfigured":true,"model":"[REDACTED]","runner":"[REDACTED]","lifecycle":"retained","idleTtlSeconds":1800},"processes":{"first":{"signal":"SIGKILL","code":null,"sent":true,"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":null,"signal":"SIGKILL"}}},"cancelled":{"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":0,"signal":null}}},"retry":{"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":0,"signal":null}}},"localRunCountAfterReconnect":1,"binarySha256":"141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f"},"runs":{"first":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"streaming","environmentId":"environment-98bfa83033b96e374a4c92f36a4e9b82","providerSessionId":"[REDACTED]","materializationDigest":"ab445c9771b7d1850bb2dfa02ac95d90c4dc07558b05479bdbe15574f3ca2ebb","cursor":"16","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-f8b511132bfe","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:5e663eb9bc1231d3430bca4cd061e7dd250728948dce930c231db34cee795230"},"observations":{"localEnvironmentId":"environment-98bfa83033b96e374a4c92f36a4e9b82","providerEnvironmentId":"sandbox-f8b511132bfe","environmentRecord":{"id":"environment-98bfa83033b96e374a4c92f36a4e9b82","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-f8b511132bfe","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-f8b511132bfe.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:41:29.508Z","updatedAt":"2026-08-29T04:41:31.963Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"resumed":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","environmentId":"environment-98bfa83033b96e374a4c92f36a4e9b82","providerSessionId":"[REDACTED]","materializationDigest":"ab445c9771b7d1850bb2dfa02ac95d90c4dc07558b05479bdbe15574f3ca2ebb","cursor":"61","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-f8b511132bfe","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:5e663eb9bc1231d3430bca4cd061e7dd250728948dce930c231db34cee795230"},"observations":{"localEnvironmentId":"environment-98bfa83033b96e374a4c92f36a4e9b82","providerEnvironmentId":"sandbox-f8b511132bfe","environmentRecord":{"id":"environment-98bfa83033b96e374a4c92f36a4e9b82","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-f8b511132bfe","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-f8b511132bfe.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:41:29.508Z","updatedAt":"2026-08-29T04:41:31.963Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"followUp":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","environmentId":"environment-98bfa83033b96e374a4c92f36a4e9b82","providerSessionId":"[REDACTED]","materializationDigest":"058c0f718d6a40c0aeb0cb72d35e7b8ce0f804c41e93701956d79e3eb00ac631","cursor":"88","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-f8b511132bfe","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:32e942b006c89188d4d9b7efe0b2e1478706f15d5690183aec941edc4bbbc410"},"observations":{"localEnvironmentId":"environment-98bfa83033b96e374a4c92f36a4e9b82","providerEnvironmentId":"sandbox-f8b511132bfe","environmentRecord":{"id":"environment-98bfa83033b96e374a4c92f36a4e9b82","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-f8b511132bfe","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-f8b511132bfe.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:41:29.508Z","updatedAt":"2026-08-29T04:42:46.108Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"cancelled":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"aborted","environmentId":"environment-98bfa83033b96e374a4c92f36a4e9b82","providerSessionId":"[REDACTED]","materializationDigest":"acfdeb12b226b10ad10fc4c91d52395225e89156c0201700ca770414f9552c95","cursor":"95","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-f8b511132bfe","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:3b0ec3438780b1312f849a8d6da49e90c07bc024305daa5ccfaaba0c4c785c85"},"observations":{"localEnvironmentId":"environment-98bfa83033b96e374a4c92f36a4e9b82","providerEnvironmentId":"sandbox-f8b511132bfe","environmentRecord":{"id":"environment-98bfa83033b96e374a4c92f36a4e9b82","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-f8b511132bfe","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-f8b511132bfe.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:41:29.508Z","updatedAt":"2026-08-29T04:43:08.559Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}}},"replay":{"firstVisibleEventCount":9,"freshVisibleEventCount":21,"freshVisibleEventIdsUnique":true,"resumeFromCursor":"16","finalCursor":"61","acknowledgedBeforeKillEventIds":["5","6","8","10","11","12","13","14","16"],"freshVisibleEventIds":["20","22","23","25","26","28","30","34","36","37","39","41","45","47","48","49","50","51","52","56","58"],"acknowledgedAndFreshIntersection":[],"progress":{"acknowledgedSequence":12,"firstFreshSequence":14},"reconnectRequest":{"version":1,"requestId":"braid-live-reconnect-0a7309df-52ab-43b4-8b47-545f0ba1c17e","operationId":"op-braid-cloud-stress-1787978486262-681810-fbee6642-reconnect-1","command":"reconnect","params":{"runId":"[REDACTED]"}}},"cancellation":{"first":{"version":1,"type":"ack","requestId":"braid-live-cancel_run-8d38c5d0-3f79-4386-9559-b89e826687a1","revision":85,"operationId":"op-braid-cloud-stress-1787978486262-681810-fbee6642-cancel-1","command":"cancel_run","runId":"[REDACTED]","control":"cancel","outcome":"accepted","replayed":false},"sameBody":{"version":1,"type":"ack","requestId":"braid-live-cancel_run-621e5e9f-d90c-4ea9-a288-f8333df7d6ea","revision":89,"operationId":"op-braid-cloud-stress-1787978486262-681810-fbee6642-cancel-1","command":"cancel_run","runId":"[REDACTED]","control":"cancel","outcome":"accepted","replayed":true},"changedBody":{"version":1,"type":"error","requestId":"braid-live-cancel_run-fb8a0368-7004-4cf0-a623-f3a3e1484d26","code":"OPERATION_CONFLICT","message":"Operation op-braid-cloud-stress-1787978486262-681810-fbee6642-cancel-1 has different input","retryable":false},"remote":{"controlRef":"[CIRCULAR]","samples":[{"status":"cancelled","activeExecutionId":null,"latestExecutionId":"[REDACTED]","observedAt":"2026-08-29T04:43:13.913Z"}],"settledStatus":"cancelled","exactResult":{"executionId":"[REDACTED]","status":"failed","success":false},"messageCount":5,"lateResult":false}},"account":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","usage":{"computeMinutes":1643,"gpuSeconds":0,"gpuCostUsd":0,"activeSandboxes":8,"totalSandboxes":14478},"sampledAt":"2026-08-29T04:42:42.812Z"},"telemetry":{"completeDisclosure":true,"fields":{"tokens":{"status":"[REDACTED]","input":6917,"output":214},"cost":{"status":"[REDACTED]","usd":0},"endToEndDuration":{"status":"[REDACTED]","milliseconds":20655},"model":{"status":"[REDACTED]","value":"[REDACTED]"},"environment":{"status":"[REDACTED]","value":"sandbox-f8b511132bfe"},"runtimeEndpoint":{"status":"[REDACTED]","host":"sandbox-f8b511132bfe.tangle.sh"},"machine":{"status":"[REDACTED]"},"region":{"status":"[REDACTED]"},"requestedResources":{"status":"provider-default"},"resourceSample":{"status":"[REDACTED]","value":{"cgroupVersion":2,"memoryCurrentMb":169,"memoryPeakMb":640,"memoryLimitMb":2048,"cpuUsageUsec":58883134,"sampledAtMs":1787978585977}},"account":{"status":"[REDACTED]","value":"[CIRCULAR]"}},"unavailable":"[CIRCULAR]","runs":{"first":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"},"resumed":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]","input":"[TRUNCATED]","output":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]","usd":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"},"followUp":{"completeDisclosure":true,"fields":"[CIRCULAR]","unavailable":"[CIRCULAR]"},"cancelled":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"}}},"spend":{"scope":"all unique local runs in this cloud proof","rows":[{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]","input":3812,"output":574},"cost":{"status":"[REDACTED]","usd":0,"provenance":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":72268}},{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]","input":6917,"output":214},"cost":{"status":"[REDACTED]","usd":0,"provenance":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":20655}},{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"aborted","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]"},"cost":{"status":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":6575}}],"totals":{"tokens":{"observedRuns":2,"unavailableRuns":1,"missingRuns":0,"input":10729,"output":788},"cost":{"observedRuns":2,"unavailableRuns":1,"missingRuns":0,"usd":0}}},"followUpEvidence":{"visibleProviderEvents":9,"continuity":{"challengePath":".braid-live/braid-cloud-stress-1787978486262-681810-fbee6642/continuity-challenge.txt","responsePath":".braid-live/braid-cloud-stress-1787978486262-681810-fbee6642/continuity-response.txt","challengeBytes":65,"expectedDigest":"fb031aa67353d4d6476519e8d6df8ebd2f3ad75f0ec5d70e0f467a620fd7fe02","responseDigest":"fb031aa67353d4d6476519e8d6df8ebd2f3ad75f0ec5d70e0f467a620fd7fe02","matched":true}},"workspaceVerification":{"environmentId":"sandbox-f8b511132bfe","markerPath":".braid-live/braid-cloud-stress-1787978486262-681810-fbee6642/marker.txt","readValue":"BRAID_CLOUD_1787978486262_681810_fbee6642 ","readMatched":true,"executionAttempt":{"path":".braid-live/braid-cloud-stress-1787978486262-681810-fbee6642/execution-attempts.log","lineCount":1,"expectedDigest":"sha256:d212326cfb95b19bfc4d613ba2bac023ed4eaba0c43df3c30cf643dd05857622","observedDigest":"sha256:d212326cfb95b19bfc4d613ba2bac023ed4eaba0c43df3c30cf643dd05857622","matched":true},"continuity":"[CIRCULAR]","git":{"exitCode":0,"stdout":""},"resourceSample":"[CIRCULAR]"},"timing":{"workspace":{"elapsedMs":24.727975000000015},"firstProcess.initialize":{"elapsedMs":488.34459000000015},"firstProcess.send":{"elapsedMs":259.08415600000035},"firstProcess.observeControl":{"elapsedMs":6517.56878},"firstProcess.waitVisible":{"elapsedMs":22881.919364},"firstProcess.sigkill":{"elapsedMs":53.602006999997684},"freshProcess.initialize":{"elapsedMs":429.2705309999983},"freshProcess.reconnect":{"elapsedMs":41807.498239},"freshProcess.waitTerminal":{"elapsedMs":6.248559999992722},"freshProcess.observeControl":{"elapsedMs":0.1830210000043735},"followUp.prepareContinuityChallenge":{"elapsedMs":1430.7034649999987},"followUp.send":{"elapsedMs":1295.0027110000083},"followUp.waitTerminal":{"elapsedMs":20727.527894000013},"followUp.observeControl":{"elapsedMs":0.26050299999769777},"followUp.verifyWorkspace":{"elapsedMs":1931.2702069999941},"cancel.send":{"elapsedMs":271.05052100001194},"cancel.observeControl":{"elapsedMs":5088.457620000001},"cancel.first":{"elapsedMs":1447.6587350000045},"cancel.waitCompletion":{"elapsedMs":49.79504799999995},"cancel.verifyRemote":{"elapsedMs":2995.3996590000024},"cancel.restart.closeFirstProcess":{"elapsedMs":78.10680399999546},"cancel.restart.initialize":{"elapsedMs":437.07934700000624},"cancel.retrySameBody":{"elapsedMs":5.7078050000127405},"cancel.retryChangedBody":{"elapsedMs":4.132320999997319},"cancel.restart.closeRetryProcess":{"elapsedMs":69.44933899999887},"totalMs":114778.965921},"cleanup":{"exactResource":true,"mode":"exact-owned-resource-set","identity":{"confirmed":true,"mode":"exact-owned-resource-set","matchedCount":1,"removedIds":["sandbox-f8b511132bfe"],"deletions":[{"id":"sandbox-f8b511132bfe","attempts":["[TRUNCATED]"],"confirmed":true}],"remainingIds":[]},"activeResourceDelta":0,"activeResourceDeltaRequired":false,"accountUsageScope":"account-wide","accountUsageAttribution":"unattributed-shared-usage","usageObservationComplete":true,"usageDelta":{"activeSandboxes":0,"totalSandboxes":2,"computeMinutes":11,"gpuSeconds":0,"gpuCostUsd":0,"unknownFields":[]}},"usage":[{"phase":"before","status":"[REDACTED]","value":"[CIRCULAR]"},{"phase":"after","status":"[REDACTED]","value":{"computeMinutes":1647,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":6,"totalSandboxes":14478,"periodStart":{},"periodEnd":{}}}],"accountIdentities":[{"phase":"before","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}},{"phase":"after","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}}],"accountIdentityConsistency":{"stable":true,"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46"},"progress":{"firstRunId":"[REDACTED]","cancelRunId":"[REDACTED]","providerEnvironmentId":"sandbox-f8b511132bfe","firstControlRef":"[CIRCULAR]","resumeFromCursor":"16","freshControlRef":"[CIRCULAR]","finalCursor":"61"}}},{"index":1,"completionSequence":1,"startedAt":"2026-08-29T04:43:21.042Z","completedAt":"2026-08-29T04:45:01.681Z","requireZeroActiveResourceDelta":false,"proof":{"schemaVersion":"braid.tangle-sandbox-braid-stress.v1","status":"passed","proofId":"braid-cloud-stress-1787978601042-681810-c1e7a152","resourceIdentity":{"observed":true,"id":"sandbox-3049cbe59267","name":"braid-session-braid-[REDACTED]","metadata":{"owner":"braid","lifecycle":"retained","providerSessionId":"[REDACTED]"}},"config":{"endpoint":"https://sandbox.tangle.tools","connectionId":"connection-live-tangle-sandbox","connectionKind":"tangle-sandbox","credentialConfigured":true,"model":"[REDACTED]","runner":"[REDACTED]","lifecycle":"retained","idleTtlSeconds":1800},"processes":{"first":{"signal":"SIGKILL","code":null,"sent":true,"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":null,"signal":"SIGKILL"}}},"cancelled":{"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":0,"signal":null}}},"retry":{"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":0,"signal":null}}},"localRunCountAfterReconnect":1,"binarySha256":"141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f"},"runs":{"first":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"streaming","environmentId":"environment-5b570df89fb3fb080f1087b87341514a","providerSessionId":"[REDACTED]","materializationDigest":"66594ba7ef166d1c4262ceb54583d7a84ac856c6fea6062cda3492327ce8db96","cursor":"17","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-3049cbe59267","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:1c9db1e28307f78ecb7c9d8a47d3dcf1e50ae9b8d9fdd7658c0376b741c72216"},"observations":{"localEnvironmentId":"environment-5b570df89fb3fb080f1087b87341514a","providerEnvironmentId":"sandbox-3049cbe59267","environmentRecord":{"id":"environment-5b570df89fb3fb080f1087b87341514a","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-3049cbe59267","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-3049cbe59267.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:43:23.222Z","updatedAt":"2026-08-29T04:43:25.622Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"resumed":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","environmentId":"environment-5b570df89fb3fb080f1087b87341514a","providerSessionId":"[REDACTED]","materializationDigest":"66594ba7ef166d1c4262ceb54583d7a84ac856c6fea6062cda3492327ce8db96","cursor":"40","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-3049cbe59267","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:1c9db1e28307f78ecb7c9d8a47d3dcf1e50ae9b8d9fdd7658c0376b741c72216"},"observations":{"localEnvironmentId":"environment-5b570df89fb3fb080f1087b87341514a","providerEnvironmentId":"sandbox-3049cbe59267","environmentRecord":{"id":"environment-5b570df89fb3fb080f1087b87341514a","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-3049cbe59267","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-3049cbe59267.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:43:23.222Z","updatedAt":"2026-08-29T04:43:25.622Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"followUp":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","environmentId":"environment-5b570df89fb3fb080f1087b87341514a","providerSessionId":"[REDACTED]","materializationDigest":"061c889d3d7fe19c91c907631138934a8b1e1316b90e977791d97f55b1d2f89e","cursor":"70","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-3049cbe59267","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:57c013c414c7d50feabbdb39280c2d0fbc86482a695fa03fb5b2f657aed082e7"},"observations":{"localEnvironmentId":"environment-5b570df89fb3fb080f1087b87341514a","providerEnvironmentId":"sandbox-3049cbe59267","environmentRecord":{"id":"environment-5b570df89fb3fb080f1087b87341514a","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-3049cbe59267","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-3049cbe59267.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:43:23.222Z","updatedAt":"2026-08-29T04:44:27.496Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"cancelled":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"aborted","environmentId":"environment-5b570df89fb3fb080f1087b87341514a","providerSessionId":"[REDACTED]","materializationDigest":"283f84213813398c1435487de55a8d20a956e6d13af40e5b9078a081ec4da105","cursor":"77","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-3049cbe59267","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:f25159ba327cb7de672eeaf91328392d5675ea98550ed6a93bed58a79c1569ba"},"observations":{"localEnvironmentId":"environment-5b570df89fb3fb080f1087b87341514a","providerEnvironmentId":"sandbox-3049cbe59267","environmentRecord":{"id":"environment-5b570df89fb3fb080f1087b87341514a","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-3049cbe59267","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-3049cbe59267.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:43:23.222Z","updatedAt":"2026-08-29T04:44:48.761Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}}},"replay":{"firstVisibleEventCount":9,"freshVisibleEventCount":11,"freshVisibleEventIdsUnique":true,"resumeFromCursor":"17","finalCursor":"40","acknowledgedBeforeKillEventIds":["5","6","8","10","11","12","13","15","17"],"freshVisibleEventIds":["21","23","24","26","27","28","29","30","31","35","37"],"acknowledgedAndFreshIntersection":[],"progress":{"acknowledgedSequence":12,"firstFreshSequence":14},"reconnectRequest":{"version":1,"requestId":"braid-live-reconnect-8fcf11ab-ef7c-4e09-bd51-b61407df4b1e","operationId":"op-braid-cloud-stress-1787978601042-681810-c1e7a152-reconnect-1","command":"reconnect","params":{"runId":"[REDACTED]"}}},"cancellation":{"first":{"version":1,"type":"ack","requestId":"braid-live-cancel_run-28f80f9f-fdf8-457a-97ed-4befc48c0f2e","revision":75,"operationId":"op-braid-cloud-stress-1787978601042-681810-c1e7a152-cancel-1","command":"cancel_run","runId":"[REDACTED]","control":"cancel","outcome":"accepted","replayed":false},"sameBody":{"version":1,"type":"ack","requestId":"braid-live-cancel_run-0e88341a-b1d4-4bb6-91f4-6fc3fd1af8c2","revision":79,"operationId":"op-braid-cloud-stress-1787978601042-681810-c1e7a152-cancel-1","command":"cancel_run","runId":"[REDACTED]","control":"cancel","outcome":"accepted","replayed":true},"changedBody":{"version":1,"type":"error","requestId":"braid-live-cancel_run-877fd548-667f-404b-bef5-9e69f89a4583","code":"OPERATION_CONFLICT","message":"Operation op-braid-cloud-stress-1787978601042-681810-c1e7a152-cancel-1 has different input","retryable":false},"remote":{"controlRef":"[CIRCULAR]","samples":[{"status":"cancelled","activeExecutionId":null,"latestExecutionId":"[REDACTED]","observedAt":"2026-08-29T04:44:53.715Z"}],"settledStatus":"cancelled","exactResult":{"executionId":"[REDACTED]","status":"failed","success":false},"messageCount":5,"lateResult":false}},"account":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","usage":{"computeMinutes":1658,"gpuSeconds":0,"gpuCostUsd":0,"activeSandboxes":8,"totalSandboxes":14481},"sampledAt":"2026-08-29T04:44:26.068Z"},"telemetry":{"completeDisclosure":true,"fields":{"tokens":{"status":"[REDACTED]","input":5891,"output":251},"cost":{"status":"[REDACTED]","usd":0},"endToEndDuration":{"status":"[REDACTED]","milliseconds":18195},"model":{"status":"[REDACTED]","value":"[REDACTED]"},"environment":{"status":"[REDACTED]","value":"sandbox-3049cbe59267"},"runtimeEndpoint":{"status":"[REDACTED]","host":"sandbox-3049cbe59267.tangle.sh"},"machine":{"status":"[REDACTED]"},"region":{"status":"[REDACTED]"},"requestedResources":{"status":"provider-default"},"resourceSample":{"status":"[REDACTED]","value":{"cgroupVersion":2,"memoryCurrentMb":164,"memoryPeakMb":623,"memoryLimitMb":2048,"cpuUsageUsec":51831686,"sampledAtMs":1787978686330}},"account":{"status":"[REDACTED]","value":"[CIRCULAR]"}},"unavailable":"[CIRCULAR]","runs":{"first":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"},"resumed":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]","input":"[TRUNCATED]","output":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]","usd":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"},"followUp":{"completeDisclosure":true,"fields":"[CIRCULAR]","unavailable":"[CIRCULAR]"},"cancelled":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"}}},"spend":{"scope":"all unique local runs in this cloud proof","rows":[{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]","input":3301,"output":415},"cost":{"status":"[REDACTED]","usd":0,"provenance":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":61627}},{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]","input":5891,"output":251},"cost":{"status":"[REDACTED]","usd":0,"provenance":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":18195}},{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"aborted","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]"},"cost":{"status":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":5994}}],"totals":{"tokens":{"observedRuns":2,"unavailableRuns":1,"missingRuns":0,"input":9192,"output":666},"cost":{"observedRuns":2,"unavailableRuns":1,"missingRuns":0,"usd":0}}},"followUpEvidence":{"visibleProviderEvents":11,"continuity":{"challengePath":".braid-live/braid-cloud-stress-1787978601042-681810-c1e7a152/continuity-challenge.txt","responsePath":".braid-live/braid-cloud-stress-1787978601042-681810-c1e7a152/continuity-response.txt","challengeBytes":65,"expectedDigest":"7d1e4167403af1e85a35b7961edb1521366f6bebce894ce8b9d57d19fc108033","responseDigest":"7d1e4167403af1e85a35b7961edb1521366f6bebce894ce8b9d57d19fc108033","matched":true}},"workspaceVerification":{"environmentId":"sandbox-3049cbe59267","markerPath":".braid-live/braid-cloud-stress-1787978601042-681810-c1e7a152/marker.txt","readValue":"BRAID_CLOUD_1787978601042_681810_c1e7a152 ","readMatched":true,"executionAttempt":{"path":".braid-live/braid-cloud-stress-1787978601042-681810-c1e7a152/execution-attempts.log","lineCount":1,"expectedDigest":"sha256:8b7cb913e23198b14abb689d7f876dab44ca1eee640f26db213569a284319479","observedDigest":"sha256:8b7cb913e23198b14abb689d7f876dab44ca1eee640f26db213569a284319479","matched":true},"continuity":"[CIRCULAR]","git":{"exitCode":0,"stdout":""},"resourceSample":"[CIRCULAR]"},"timing":{"workspace":{"elapsedMs":8.756439999997383},"firstProcess.initialize":{"elapsedMs":512.4130389999918},"firstProcess.send":{"elapsedMs":321.246742000003},"firstProcess.observeControl":{"elapsedMs":5971.305828000011},"firstProcess.waitVisible":{"elapsedMs":18501.463623000003},"firstProcess.sigkill":{"elapsedMs":54.131472000008216},"freshProcess.initialize":{"elapsedMs":432.6593540000031},"freshProcess.reconnect":{"elapsedMs":36038.479315000004},"freshProcess.waitTerminal":{"elapsedMs":13.952366999990772},"freshProcess.observeControl":{"elapsedMs":0.08001800000783987},"followUp.prepareContinuityChallenge":{"elapsedMs":1420.0105029999977},"followUp.send":{"elapsedMs":115.12191799998982},"followUp.waitTerminal":{"elapsedMs":18232.775288999983},"followUp.observeControl":{"elapsedMs":0.17704899999080226},"followUp.verifyWorkspace":{"elapsedMs":2952.133624000009},"cancel.send":{"elapsedMs":130.38721299997997},"cancel.observeControl":{"elapsedMs":4562.294001000002},"cancel.first":{"elapsedMs":1369.863360999996},"cancel.waitCompletion":{"elapsedMs":49.367528000002494},"cancel.verifyRemote":{"elapsedMs":3067.5181879999873},"cancel.restart.closeFirstProcess":{"elapsedMs":117.41563800000586},"cancel.restart.initialize":{"elapsedMs":761.8758670000243},"cancel.retrySameBody":{"elapsedMs":22.831900999997742},"cancel.retryChangedBody":{"elapsedMs":17.793123999988893},"cancel.restart.closeRetryProcess":{"elapsedMs":107.88045300001977},"totalMs":100638.65110399999},"cleanup":{"exactResource":true,"mode":"exact-owned-resource-set","identity":{"confirmed":true,"mode":"exact-owned-resource-set","matchedCount":1,"removedIds":["sandbox-3049cbe59267"],"deletions":[{"id":"sandbox-3049cbe59267","attempts":["[TRUNCATED]"],"confirmed":true}],"remainingIds":[]},"activeResourceDelta":1,"activeResourceDeltaRequired":false,"accountUsageScope":"account-wide","accountUsageAttribution":"unattributed-shared-usage","usageObservationComplete":true,"usageDelta":{"activeSandboxes":1,"totalSandboxes":3,"computeMinutes":13,"gpuSeconds":0,"gpuCostUsd":0,"unknownFields":[]}},"usage":[{"phase":"before","status":"[REDACTED]","value":{"computeMinutes":1649,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":6,"totalSandboxes":14478,"periodStart":{},"periodEnd":{}}},{"phase":"after","status":"[REDACTED]","value":{"computeMinutes":1662,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":7,"totalSandboxes":14481,"periodStart":{},"periodEnd":{}}}],"accountIdentities":[{"phase":"before","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}},{"phase":"after","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}}],"accountIdentityConsistency":{"stable":true,"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46"},"progress":{"firstRunId":"[REDACTED]","cancelRunId":"[REDACTED]","providerEnvironmentId":"sandbox-3049cbe59267","firstControlRef":"[CIRCULAR]","resumeFromCursor":"17","freshControlRef":"[CIRCULAR]","finalCursor":"40"}}},{"index":2,"completionSequence":2,"startedAt":"2026-08-29T04:43:21.043Z","completedAt":"2026-08-29T04:45:09.554Z","requireZeroActiveResourceDelta":false,"proof":{"schemaVersion":"braid.tangle-sandbox-braid-stress.v1","status":"passed","proofId":"braid-cloud-stress-1787978601043-681810-e62b05c3","resourceIdentity":{"observed":true,"id":"sandbox-b954c767ac46","name":"braid-session-braid-[REDACTED]","metadata":{"owner":"braid","lifecycle":"retained","providerSessionId":"[REDACTED]"}},"config":{"endpoint":"https://sandbox.tangle.tools","connectionId":"connection-live-tangle-sandbox","connectionKind":"tangle-sandbox","credentialConfigured":true,"model":"[REDACTED]","runner":"[REDACTED]","lifecycle":"retained","idleTtlSeconds":1800},"processes":{"first":{"signal":"SIGKILL","code":null,"sent":true,"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":null,"signal":"SIGKILL"}}},"cancelled":{"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":0,"signal":null}}},"retry":{"cleanup":{"cleanupStatus":"natural-exit","exited":true,"descendantsVerified":true,"exit":{"code":0,"signal":null}}},"localRunCountAfterReconnect":1,"binarySha256":"141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f"},"runs":{"first":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"streaming","environmentId":"environment-55f66f4ea658a6fbee97b01987c97d90","providerSessionId":"[REDACTED]","materializationDigest":"e5ed1a954bbb479eec8c8291288cf3a8a984390e265277f23ba1008e1d7dd404","cursor":"14","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-b954c767ac46","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:e7386ec9c7fd561b1495bc80fa37e8050b448571af29f6c29505c26df61e562e"},"observations":{"localEnvironmentId":"environment-55f66f4ea658a6fbee97b01987c97d90","providerEnvironmentId":"sandbox-b954c767ac46","environmentRecord":{"id":"environment-55f66f4ea658a6fbee97b01987c97d90","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-b954c767ac46","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-b954c767ac46.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:43:24.381Z","updatedAt":"2026-08-29T04:43:26.946Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"resumed":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","environmentId":"environment-55f66f4ea658a6fbee97b01987c97d90","providerSessionId":"[REDACTED]","materializationDigest":"e5ed1a954bbb479eec8c8291288cf3a8a984390e265277f23ba1008e1d7dd404","cursor":"61","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-b954c767ac46","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:e7386ec9c7fd561b1495bc80fa37e8050b448571af29f6c29505c26df61e562e"},"observations":{"localEnvironmentId":"environment-55f66f4ea658a6fbee97b01987c97d90","providerEnvironmentId":"sandbox-b954c767ac46","environmentRecord":{"id":"environment-55f66f4ea658a6fbee97b01987c97d90","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-b954c767ac46","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-b954c767ac46.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:43:24.381Z","updatedAt":"2026-08-29T04:43:26.946Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"followUp":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","environmentId":"environment-55f66f4ea658a6fbee97b01987c97d90","providerSessionId":"[REDACTED]","materializationDigest":"4d838f50a6d455e4d5713825cd0a0e994bbd5892109322535bf303a1939ad916","cursor":"104","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-b954c767ac46","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:dd3a118481f0d1441c790424897bc183a75488246667a270a4ae853b69b21e9b"},"observations":{"localEnvironmentId":"environment-55f66f4ea658a6fbee97b01987c97d90","providerEnvironmentId":"sandbox-b954c767ac46","environmentRecord":{"id":"environment-55f66f4ea658a6fbee97b01987c97d90","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-b954c767ac46","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-b954c767ac46.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:43:24.381Z","updatedAt":"2026-08-29T04:44:31.359Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}},"cancelled":{"id":"[REDACTED]","operationId":"[REDACTED]","status":"aborted","environmentId":"environment-55f66f4ea658a6fbee97b01987c97d90","providerSessionId":"[REDACTED]","materializationDigest":"d7e256a993a264e81796ce48fcd122e2372e6b3f6422a9a989a8c2f720022cc5","cursor":"111","controlRef":{"runId":"[REDACTED]","provider":"tangle-sandbox","environmentId":"sandbox-b954c767ac46","sessionId":"[REDACTED]","executionId":"[REDACTED]","requestDigest":"sha256:ecf16c17d6a41bccc63c19563ab1f0423ee042930d10d8c1e51ebc3f6bb269c9"},"observations":{"localEnvironmentId":"environment-55f66f4ea658a6fbee97b01987c97d90","providerEnvironmentId":"sandbox-b954c767ac46","environmentRecord":{"id":"environment-55f66f4ea658a6fbee97b01987c97d90","connectionId":"connection-live-tangle-sandbox","kind":"sandbox","provider":"tangle-sandbox","providerEnvironmentId":"sandbox-b954c767ac46","lifecycle":"ready","lifecycleMode":"retained","cleanup":"explicit","continuity":"session","location":"remote","runtimeEndpointHost":"sandbox-b954c767ac46.tangle.sh","storagePersistence":"persistent-home","accountUsage":{"completeness":"[TRUNCATED]","customerId":"[TRUNCATED]","billingOwnerId":"[TRUNCATED]","computeMinutes":"[TRUNCATED]","gpuSeconds":"[TRUNCATED]","gpuCostUsd":"[TRUNCATED]","activeSandboxes":"[TRUNCATED]","totalSandboxes":"[TRUNCATED]","creditsAvailableUsd":"[TRUNCATED]","creditsUsedUsd":"[TRUNCATED]","monthlyBalanceUsd":"[TRUNCATED]","plan":"[TRUNCATED]","subscriptionStatus":"[TRUNCATED]","maximumConcurrentSandboxes":"[TRUNCATED]","maximumCpuCores":"[TRUNCATED]","maximumRamGB":"[TRUNCATED]","maximumStorageGB":"[TRUNCATED]","usagePeriodStart":"[TRUNCATED]","usagePeriodEnd":"[TRUNCATED]","subscriptionPeriodEnd":"[TRUNCATED]","sampledAt":"[TRUNCATED]"},"unavailableTelemetry":["[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]","[TRUNCATED]"],"createdAt":"2026-08-29T04:43:24.381Z","updatedAt":"2026-08-29T04:44:56.404Z"},"run":{"inputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"outputTokens":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"reasoningTokens":{"status":"[TRUNCATED]"},"cacheReadTokens":{"status":"[TRUNCATED]"},"cacheWriteTokens":{"status":"[TRUNCATED]"},"costUsd":{"status":"[TRUNCATED]"},"costStatus":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usage":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"tokensKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usdKnown":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"usageCompleteness":{"status":"[TRUNCATED]"},"latencyMs":{"status":"[TRUNCATED]"},"durationMs":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runner":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"operationId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"profileSnapshotId":{"status":"[TRUNCATED]"},"connectionId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerSessionId":"[REDACTED]","environmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"replayCursor":{"status":"[TRUNCATED]"},"lastCursor":{"status":"[TRUNCATED]"},"lastProviderSequence":{"status":"[TRUNCATED]"},"eventCount":{"status":"[TRUNCATED]"},"contentBytes":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"contentTruncated":{"status":"[TRUNCATED]"},"missingSequence":{"status":"[TRUNCATED]"},"terminalReason":{"status":"[TRUNCATED]"},"materializationDigest":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"complete":{"status":"[TRUNCATED]"},"status":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"error":{"status":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"terminalAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"}},"environment":{"kind":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"providerEnvironmentId":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"provider":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"name":{"status":"[TRUNCATED]"},"lifecycle":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"lifecycleMode":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"cleanup":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"continuity":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"location":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"runtimeEndpointHost":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"machineId":{"status":"[TRUNCATED]"},"requestedRegion":{"status":"[TRUNCATED]"},"verifiedRegion":{"status":"[TRUNCATED]"},"storagePersistence":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":{"status":"[TRUNCATED]"},"gpu":{"status":"[TRUNCATED]"},"accountUsage":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"unavailableTelemetry":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"placement":{"status":"[TRUNCATED]"},"repository":{"status":"[TRUNCATED]"},"gitRef":{"status":"[TRUNCATED]"},"workingDirectory":{"status":"[TRUNCATED]"},"image":{"status":"[TRUNCATED]"},"createdAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"startedAt":{"status":"[TRUNCATED]"},"lastActivityAt":{"status":"[TRUNCATED]"},"expiresAt":{"status":"[TRUNCATED]"},"updatedAt":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}}}}},"replay":{"firstVisibleEventCount":7,"freshVisibleEventCount":23,"freshVisibleEventIdsUnique":true,"resumeFromCursor":"14","finalCursor":"61","acknowledgedBeforeKillEventIds":["5","6","8","10","11","12","14"],"freshVisibleEventIds":["18","20","21","23","24","26","30","32","33","35","37","41","43","44","46","47","48","49","50","51","52","56","58"],"acknowledgedAndFreshIntersection":[],"progress":{"acknowledgedSequence":10,"firstFreshSequence":12},"reconnectRequest":{"version":1,"requestId":"braid-live-reconnect-f42d3d82-3217-4e31-92ca-c44374494ba6","operationId":"op-braid-cloud-stress-1787978601043-681810-e62b05c3-reconnect-1","command":"reconnect","params":{"runId":"[REDACTED]"}}},"cancellation":{"first":{"version":1,"type":"ack","requestId":"braid-live-cancel_run-caa3b08d-3678-4d4e-840d-c5fc7364a9de","revision":94,"operationId":"op-braid-cloud-stress-1787978601043-681810-e62b05c3-cancel-1","command":"cancel_run","runId":"[REDACTED]","control":"cancel","outcome":"accepted","replayed":false},"sameBody":{"version":1,"type":"ack","requestId":"braid-live-cancel_run-8cdd28a1-1ca8-4c22-a474-2995b9a89c02","revision":98,"operationId":"op-braid-cloud-stress-1787978601043-681810-e62b05c3-cancel-1","command":"cancel_run","runId":"[REDACTED]","control":"cancel","outcome":"accepted","replayed":true},"changedBody":{"version":1,"type":"error","requestId":"braid-live-cancel_run-b5522387-79cd-4140-abe1-ce1bb191448e","code":"OPERATION_CONFLICT","message":"Operation op-braid-cloud-stress-1787978601043-681810-e62b05c3-cancel-1 has different input","retryable":false},"remote":{"controlRef":"[CIRCULAR]","samples":[{"status":"cancelled","activeExecutionId":null,"latestExecutionId":"[REDACTED]","observedAt":"2026-08-29T04:45:01.503Z"}],"settledStatus":"cancelled","exactResult":{"executionId":"[REDACTED]","status":"failed","success":false},"messageCount":5,"lateResult":false}},"account":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","usage":{"computeMinutes":1658,"gpuSeconds":0,"gpuCostUsd":0,"activeSandboxes":8,"totalSandboxes":14481},"sampledAt":"2026-08-29T04:44:30.420Z"},"telemetry":{"completeDisclosure":true,"fields":{"tokens":{"status":"[REDACTED]","input":6145,"output":495},"cost":{"status":"[REDACTED]","usd":0},"endToEndDuration":{"status":"[REDACTED]","milliseconds":22760},"model":{"status":"[REDACTED]","value":"[REDACTED]"},"environment":{"status":"[REDACTED]","value":"sandbox-b954c767ac46"},"runtimeEndpoint":{"status":"[REDACTED]","host":"sandbox-b954c767ac46.tangle.sh"},"machine":{"status":"[REDACTED]"},"region":{"status":"[REDACTED]"},"requestedResources":{"status":"provider-default"},"resourceSample":{"status":"[REDACTED]","value":{"cgroupVersion":2,"memoryCurrentMb":165,"memoryPeakMb":633,"memoryLimitMb":2048,"cpuUsageUsec":67773326,"sampledAtMs":1787978693996}},"account":{"status":"[REDACTED]","value":"[CIRCULAR]"}},"unavailable":"[CIRCULAR]","runs":{"first":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"},"resumed":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]","input":"[TRUNCATED]","output":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]","usd":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"},"followUp":{"completeDisclosure":true,"fields":"[CIRCULAR]","unavailable":"[CIRCULAR]"},"cancelled":{"completeDisclosure":true,"fields":{"tokens":{"status":"[TRUNCATED]"},"cost":{"status":"[TRUNCATED]"},"endToEndDuration":{"status":"[TRUNCATED]","milliseconds":"[TRUNCATED]"},"model":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"environment":{"status":"[TRUNCATED]","value":"[TRUNCATED]"},"runtimeEndpoint":{"status":"[TRUNCATED]","host":"[TRUNCATED]"},"machine":{"status":"[TRUNCATED]"},"region":{"status":"[TRUNCATED]"},"requestedResources":{"status":"[TRUNCATED]"},"resourceSample":"[CIRCULAR]","account":{"status":"[TRUNCATED]","value":"[TRUNCATED]"}},"unavailable":"[CIRCULAR]"}}},"spend":{"scope":"all unique local runs in this cloud proof","rows":[{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]","input":3822,"output":698},"cost":{"status":"[REDACTED]","usd":0,"provenance":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":64508}},{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"[REDACTED]","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]","input":6145,"output":495},"cost":{"status":"[REDACTED]","usd":0,"provenance":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":22760}},{"label":"[REDACTED]","runId":"[REDACTED]","operationId":"[REDACTED]","status":"aborted","model":"[REDACTED]","runner":"[REDACTED]","providerSessionId":"[REDACTED]","tokens":{"status":"[REDACTED]"},"cost":{"status":"[REDACTED]"},"duration":{"status":"[REDACTED]","milliseconds":5994}}],"totals":{"tokens":{"observedRuns":2,"unavailableRuns":1,"missingRuns":0,"input":9967,"output":1193},"cost":{"observedRuns":2,"unavailableRuns":1,"missingRuns":0,"usd":0}}},"followUpEvidence":{"visibleProviderEvents":16,"continuity":{"challengePath":".braid-live/braid-cloud-stress-1787978601043-681810-e62b05c3/continuity-challenge.txt","responsePath":".braid-live/braid-cloud-stress-1787978601043-681810-e62b05c3/continuity-response.txt","challengeBytes":65,"expectedDigest":"079f804882302fd33c8fa98c07f8f002933ad00aaafd28e7dc8c04b2e440145c","responseDigest":"079f804882302fd33c8fa98c07f8f002933ad00aaafd28e7dc8c04b2e440145c","matched":true}},"workspaceVerification":{"environmentId":"sandbox-b954c767ac46","markerPath":".braid-live/braid-cloud-stress-1787978601043-681810-e62b05c3/marker.txt","readValue":"BRAID_CLOUD_1787978601043_681810_e62b05c3 ","readMatched":true,"executionAttempt":{"path":".braid-live/braid-cloud-stress-1787978601043-681810-e62b05c3/execution-attempts.log","lineCount":1,"expectedDigest":"sha256:0d9a0e7f50bbbb2ff26c123c96d70724d20fa3f7b2d0f74793dab7a6a87ba946","observedDigest":"sha256:0d9a0e7f50bbbb2ff26c123c96d70724d20fa3f7b2d0f74793dab7a6a87ba946","matched":true},"continuity":"[CIRCULAR]","git":{"exitCode":0,"stdout":""},"resourceSample":"[CIRCULAR]"},"timing":{"workspace":{"elapsedMs":11.65107400000852},"firstProcess.initialize":{"elapsedMs":486.70759800000815},"firstProcess.send":{"elapsedMs":1071.1765619999933},"firstProcess.observeControl":{"elapsedMs":6565.403333000009},"firstProcess.waitVisible":{"elapsedMs":14551.70257200001},"firstProcess.sigkill":{"elapsedMs":57.32763899999554},"freshProcess.initialize":{"elapsedMs":431.6718390000169},"freshProcess.reconnect":{"elapsedMs":42427.32603200001},"freshProcess.waitTerminal":{"elapsedMs":15.183192000025883},"freshProcess.observeControl":{"elapsedMs":0.10725100000854582},"followUp.prepareContinuityChallenge":{"elapsedMs":1301.8622120000073},"followUp.send":{"elapsedMs":130.3075550000067},"followUp.waitTerminal":{"elapsedMs":22803.777100000007},"followUp.observeControl":{"elapsedMs":0.1880599999858532},"followUp.verifyWorkspace":{"elapsedMs":2086.7500859999855},"cancel.send":{"elapsedMs":125.76695099999779},"cancel.observeControl":{"elapsedMs":4543.886706999998},"cancel.first":{"elapsedMs":1390.1583870000031},"cancel.waitCompletion":{"elapsedMs":102.92078300000867},"cancel.verifyRemote":{"elapsedMs":3105.6106410000066},"cancel.restart.closeFirstProcess":{"elapsedMs":79.5632859999896},"cancel.restart.initialize":{"elapsedMs":411.6954550000082},"cancel.retrySameBody":{"elapsedMs":15.151038999989396},"cancel.retryChangedBody":{"elapsedMs":1.230875000008382},"cancel.restart.closeRetryProcess":{"elapsedMs":77.6836829999811},"totalMs":108511.577914},"cleanup":{"exactResource":true,"mode":"exact-owned-resource-set","identity":{"confirmed":true,"mode":"exact-owned-resource-set","matchedCount":1,"removedIds":["sandbox-b954c767ac46"],"deletions":[{"id":"sandbox-b954c767ac46","attempts":["[TRUNCATED]"],"confirmed":true}],"remainingIds":[]},"activeResourceDelta":0,"activeResourceDeltaRequired":false,"accountUsageScope":"account-wide","accountUsageAttribution":"unattributed-shared-usage","usageObservationComplete":true,"usageDelta":{"activeSandboxes":0,"totalSandboxes":3,"computeMinutes":13,"gpuSeconds":0,"gpuCostUsd":0,"unknownFields":[]}},"usage":[{"phase":"before","status":"[REDACTED]","value":{"computeMinutes":1649,"gpuSeconds":0,"gpuCostUsd":0,"gpuProviderCostUsd":0,"activeSandboxes":6,"totalSandboxes":14478,"periodStart":{},"periodEnd":{}}},{"phase":"after","status":"[REDACTED]","value":"[CIRCULAR]"}],"accountIdentities":[{"phase":"before","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}},{"phase":"after","status":"[REDACTED]","value":{"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46","billingDelegationAuthorized":false}}],"accountIdentityConsistency":{"stable":true,"identityDigest":"46505ff5225e7d5c46dcafdfa3142412c4746e7b317b166f6bafa7f443923c46"},"progress":{"firstRunId":"[REDACTED]","cancelRunId":"[REDACTED]","providerEnvironmentId":"sandbox-b954c767ac46","firstControlRef":"[CIRCULAR]","resumeFromCursor":"14","freshControlRef":"[CIRCULAR]","finalCursor":"61"}}}]}
diff --git a/artifacts/verification/performance/release-measurements.json b/artifacts/verification/performance/release-measurements.json
index 153f655..c41345f 100644
--- a/artifacts/verification/performance/release-measurements.json
+++ b/artifacts/verification/performance/release-measurements.json
@@ -6,12 +6,12 @@
"name": "PERF-01",
"unit": "ms",
"n": 20,
- "minimum": 128.5467520000093,
- "median": 134.52279899999849,
- "p90": 137.93009399999573,
- "p95": 139.9279600000009,
- "p99": 146.11429899999348,
- "maximum": 146.11429899999348,
+ "minimum": 164.54032099999313,
+ "median": 176.76786799999536,
+ "p90": 185.9409539999906,
+ "p95": 186.4503529999929,
+ "p99": 187.6756630000018,
+ "maximum": 187.6756630000018,
"target": {
"metric": "process-start-to-first-visible-frame",
"percentile": "p95",
@@ -20,9 +20,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "warm-10000-event-encrypted-sqlite",
"eventCount": 10000
@@ -35,12 +35,12 @@
"name": "PERF-02",
"unit": "ms",
"n": 20,
- "minimum": 152.1218050000025,
- "median": 168.79698400000052,
- "p90": 184.84830299999157,
- "p95": 198.06498500000453,
- "p99": 202.07973899999342,
- "maximum": 202.07973899999342,
+ "minimum": 202.9691979999916,
+ "median": 210.62579299999925,
+ "p90": 220.14702899999975,
+ "p95": 226.78305099999125,
+ "p99": 236.83298900000227,
+ "maximum": 236.83298900000227,
"target": {
"metric": "process-start-to-first-visible-frame",
"percentile": "p95",
@@ -49,9 +49,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "cold-100000-event-encrypted-sqlite",
"eventCount": 100000
@@ -64,12 +64,12 @@
"name": "PERF-03",
"unit": "ms",
"n": 1000,
- "minimum": 1.572889999995823,
- "median": 3.8978009999991627,
- "p90": 4.429468000002089,
- "p95": 4.630062999989605,
- "p99": 5.886098999995738,
- "maximum": 67.48604000000341,
+ "minimum": 1.5796439999976428,
+ "median": 3.8928199999936623,
+ "p90": 4.518037999994704,
+ "p95": 4.760824999990291,
+ "p99": 5.690161999998963,
+ "maximum": 11.747043000010308,
"target": {
"metric": "idle-key-to-updated-frame",
"percentile": "p95",
@@ -78,9 +78,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "warm-10000-event-encrypted-sqlite",
"eventCount": 10000
@@ -93,12 +93,12 @@
"name": "PERF-04",
"unit": "ms",
"n": 10000,
- "minimum": 3.924732000014046,
- "median": 21.236068000027444,
- "p90": 30.873592999996617,
- "p95": 32.554675000021234,
- "p99": 34.78197299997555,
- "maximum": 43.15914599999087,
+ "minimum": 3.119621999998344,
+ "median": 20.9435339999618,
+ "p90": 30.599323000002187,
+ "p95": 32.16745499998797,
+ "p99": 34.54940700001316,
+ "maximum": 43.03097700001672,
"target": {
"metric": "runtime-event-to-updated-frame",
"percentile": "p95",
@@ -107,9 +107,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "@xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "@xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "memory-journal-runtime-frame-path",
"eventCount": 10000
@@ -122,12 +122,12 @@
"name": "PERF-05",
"unit": "ms",
"n": 20,
- "minimum": 749.9611370000057,
- "median": 803.2254679999896,
- "p90": 837.0514050000347,
- "p95": 872.9583330000169,
- "p99": 910.5310999999638,
- "maximum": 910.5310999999638,
+ "minimum": 1413.2583909999812,
+ "median": 1462.2683589999797,
+ "p90": 1523.1327039999887,
+ "p95": 1527.1304489999893,
+ "p99": 1564.041367000027,
+ "maximum": 1564.041367000027,
"target": {
"metric": "replay-reduce-10000-events",
"percentile": "p95",
@@ -136,8 +136,8 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"terminal": "none; production StorageJournal + reducer",
"dimensions": "none",
"database": "warm-10000-event-encrypted-sqlite",
@@ -151,12 +151,12 @@
"name": "PERF-06",
"unit": "ms",
"n": 20,
- "minimum": 11.109155000012834,
- "median": 12.112230999977328,
- "p90": 15.245353000005707,
- "p95": 15.764255000045523,
- "p99": 15.87886100000469,
- "maximum": 15.87886100000469,
+ "minimum": 10.917339000036009,
+ "median": 11.479974999965634,
+ "p90": 12.449731000000611,
+ "p95": 13.447253000049386,
+ "p99": 19.73856899997918,
+ "maximum": 19.73856899997918,
"target": {
"metric": "open-100000-event-conversation",
"percentile": "p95",
@@ -165,9 +165,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "cold-100000-event-encrypted-sqlite",
"eventCount": 100000
@@ -180,12 +180,12 @@
"name": "PERF-07",
"unit": "ms",
"n": 1000,
- "minimum": 9.40662500000326,
- "median": 16.065145999993547,
- "p90": 18.11038600000029,
- "p95": 18.98701299999084,
- "p99": 19.99051000000327,
- "maximum": 21.398293999998714,
+ "minimum": 10.428272000004654,
+ "median": 16.018557000003057,
+ "p90": 18.029467999993358,
+ "p95": 18.728513000009116,
+ "p99": 20.557576999999583,
+ "maximum": 27.003654000000097,
"target": {
"metric": "resize-during-stream-frame",
"percentile": "p95",
@@ -194,12 +194,12 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "40x12,80x24,120x40,200x60",
"database": "packed headless 100-events-per-second stream",
- "eventCount": 2004
+ "eventCount": 2008
},
"state": "warm",
"repetitions": 1000
@@ -211,10 +211,10 @@
"n": 2,
"minimum": 0,
"median": 0,
- "p90": 0.01666437090266441,
- "p95": 0.01666437090266441,
- "p99": 0.01666437090266441,
- "maximum": 0.01666437090266441,
+ "p90": 0,
+ "p95": 0,
+ "p99": 0,
+ "maximum": 0,
"target": {
"metric": "idle-cpu",
"percentile": "median",
@@ -223,9 +223,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "deterministic-offline-fixture-idle",
"eventCount": 0
@@ -238,12 +238,12 @@
"name": "PERF-09",
"unit": "MiB RSS",
"n": 20,
- "minimum": 86.10546875,
- "median": 87.21484375,
- "p90": 87.56640625,
- "p95": 87.73828125,
- "p99": 88.0703125,
- "maximum": 88.0703125,
+ "minimum": 104.59765625,
+ "median": 110.671875,
+ "p90": 112.43359375,
+ "p95": 112.66796875,
+ "p99": 113.984375,
+ "maximum": 113.984375,
"target": {
"metric": "resident-memory-10000-event-conversation",
"percentile": "p95",
@@ -252,8 +252,8 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"terminal": "packed production view model; child process RSS",
"dimensions": "80x24",
"database": "warm-10000-event-encrypted-sqlite",
@@ -281,8 +281,8 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"terminal": "none; packed production encrypted SQLite artifacts",
"dimensions": "none",
"database": "cold-10000-event-encrypted-sqlite",
diff --git a/artifacts/verification/performance/smoke.json b/artifacts/verification/performance/smoke.json
index e5f2068..2632a65 100644
--- a/artifacts/verification/performance/smoke.json
+++ b/artifacts/verification/performance/smoke.json
@@ -3,7 +3,7 @@
"kind": "braid-performance-proof",
"mode": "smoke",
"status": "passed",
- "generatedAt": "2026-08-10T19:07:26.279Z",
+ "generatedAt": "2026-08-29T00:05:05.171Z",
"command": "pnpm run test:performance",
"thresholds": {
"PERF-01": {
@@ -72,21 +72,21 @@
"reason": "smoke report has no release validation"
},
"provenance": {
- "repository": "/home/drew/code/braid-unified-activity-wt",
- "revision": "fa375f9ef14ecead34d287f294465d46f54bc8f4",
+ "repository": "/home/drew/code/.worktrees/braid-10-complete",
+ "revision": "da27d22d647d862fdbd0425d27657fd5ffd47cda",
"packages": {
- "braid": "0.1.0",
- "piTui": "0.84.1",
+ "braid": "0.3.0",
+ "piTui": "0.84.3",
"nodePty": "1.1.0",
"xtermHeadless": "6.0.0",
"sqlite": "13.0.3"
},
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"arch": "x64",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a",
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325",
"packedCandidate": {
"status": "ready"
},
@@ -115,12 +115,12 @@
"name": "PERF-01",
"unit": "ms",
"n": 1,
- "minimum": 128.22121699999843,
- "median": 128.22121699999843,
- "p90": 128.22121699999843,
- "p95": 128.22121699999843,
- "p99": 128.22121699999843,
- "maximum": 128.22121699999843,
+ "minimum": 172.10708100000193,
+ "median": 172.10708100000193,
+ "p90": 172.10708100000193,
+ "p95": 172.10708100000193,
+ "p99": 172.10708100000193,
+ "maximum": 172.10708100000193,
"target": {
"metric": "process-start-to-first-visible-frame",
"percentile": "p95",
@@ -129,9 +129,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "warm-10000-event-encrypted-sqlite",
"eventCount": 10000
@@ -139,7 +139,7 @@
"state": "warm",
"repetitions": 1,
"rawSamples": [
- 128.22121699999843
+ 172.10708100000193
],
"command": "pnpm run test:performance [PERF-01; smoke]",
"passed": true,
@@ -165,88 +165,88 @@
],
"startupStages": [
{
- "spawnMs": 18.168,
- "scriptMs": 15.133,
- "compileCacheMs": 0.015,
- "applicationImportsMs": 56.456,
- "previewImportsMs": 36.588,
- "startupImportsMs": 56.456,
- "applicationOpenMs": 26.951,
+ "spawnMs": 20.758,
+ "scriptMs": 16.033,
+ "compileCacheMs": 0.011,
+ "applicationImportsMs": 101.694,
+ "previewImportsMs": 76.09,
+ "startupImportsMs": 101.694,
+ "applicationOpenMs": 21.306,
"applicationStages": [
{
"name": "production-composition",
- "durationMs": 4.4343780000000095
+ "durationMs": 0.00818600000000913
},
{
"name": "storage.path-validation",
- "durationMs": 1.5914159999999953
+ "durationMs": 0.569619000000003
},
{
"name": "storage.lock-acquire",
- "durationMs": 0.7996259999999893
+ "durationMs": 0.5767330000000044
},
{
"name": "storage.recovery-check",
- "durationMs": 0.2423780000000022
+ "durationMs": 0.16932299999999145
},
{
"name": "storage.initialization-marker",
- "durationMs": 0.11408500000000288
+ "durationMs": 0.10243099999999572
},
{
"name": "storage.path-lock",
- "durationMs": 2.773715999999993
+ "durationMs": 1.4366930000000053
},
{
"name": "storage.credential",
- "durationMs": 3.790790000000001
+ "durationMs": 2.6082649999999887
},
{
"name": "storage.cipher-open",
- "durationMs": 4.671616999999998
+ "durationMs": 4.743910999999997
},
{
"name": "storage.schema",
- "durationMs": 0.03271399999999858
+ "durationMs": 0.025830999999996607
},
{
"name": "storage.content-keys",
- "durationMs": 0.12290299999999377
+ "durationMs": 0.12230099999999311
},
{
"name": "storage.snapshot-maintenance",
- "durationMs": 0.34834699999998975
+ "durationMs": 0.3548770000000019
},
{
"name": "storage.projection",
- "durationMs": 1.2222879999999918
+ "durationMs": 1.7102500000000163
},
{
"name": "storage.configuration",
- "durationMs": 0.09647999999999968
+ "durationMs": 0.09689000000000192
},
{
"name": "storage.artifact-permissions",
- "durationMs": 2.1415700000000015
+ "durationMs": 0.22424000000000888
},
{
"name": "storage-open",
- "durationMs": 15.76612
+ "durationMs": 11.751620000000003
},
{
"name": "journal-restore",
- "durationMs": 4.933380999999997
+ "durationMs": 7.581556000000006
},
{
"name": "application-create",
- "durationMs": 1.6147920000000084
+ "durationMs": 1.7232960000000048
}
],
- "previewRenderMs": 11.499,
- "terminalImportsMs": 10.046,
- "terminalMs": 0.049,
- "initializeMs": 0.248,
- "interactivePreparationMs": 10.343
+ "previewRenderMs": 12.304,
+ "terminalImportsMs": 3.003,
+ "terminalMs": 0.042,
+ "initializeMs": 0.224,
+ "interactivePreparationMs": 3.269
}
]
},
@@ -257,8 +257,8 @@
"readyMarker": "Completed Braid performance conversation (10000 committed events)",
"frameReadiness": "unique seeded final-content marker plus braid shell and no startup error",
"compileCache": "primed exact packed startup modules; one shared cache across repeat launches",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
},
{
@@ -266,12 +266,12 @@
"name": "PERF-02",
"unit": "ms",
"n": 1,
- "minimum": 162.42808499999956,
- "median": 162.42808499999956,
- "p90": 162.42808499999956,
- "p95": 162.42808499999956,
- "p99": 162.42808499999956,
- "maximum": 162.42808499999956,
+ "minimum": 216.79717000000528,
+ "median": 216.79717000000528,
+ "p90": 216.79717000000528,
+ "p95": 216.79717000000528,
+ "p99": 216.79717000000528,
+ "maximum": 216.79717000000528,
"target": {
"metric": "process-start-to-first-visible-frame",
"percentile": "p95",
@@ -280,9 +280,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "cold-100000-event-encrypted-sqlite",
"eventCount": 100000
@@ -290,7 +290,7 @@
"state": "cold",
"repetitions": 1,
"rawSamples": [
- 162.42808499999956
+ 216.79717000000528
],
"command": "pnpm run test:performance [PERF-02; smoke]",
"passed": true,
@@ -316,88 +316,88 @@
],
"startupStages": [
{
- "spawnMs": 17.876,
- "scriptMs": 18.002,
- "compileCacheMs": 0.025,
- "applicationImportsMs": 80.07,
- "previewImportsMs": 58.123,
- "startupImportsMs": 80.07,
- "applicationOpenMs": 35.462,
+ "spawnMs": 20.336,
+ "scriptMs": 16.49,
+ "compileCacheMs": 0.012,
+ "applicationImportsMs": 138.852,
+ "previewImportsMs": 111.523,
+ "startupImportsMs": 138.852,
+ "applicationOpenMs": 29.365,
"applicationStages": [
{
"name": "production-composition",
- "durationMs": 4.047676999999993
+ "durationMs": 0.008046000000007325
},
{
"name": "storage.path-validation",
- "durationMs": 1.0723430000000036
+ "durationMs": 0.529720999999995
},
{
"name": "storage.lock-acquire",
- "durationMs": 0.7193079999999981
+ "durationMs": 0.6002590000000225
},
{
"name": "storage.recovery-check",
- "durationMs": 0.19650699999999688
+ "durationMs": 0.1656459999999811
},
{
"name": "storage.initialization-marker",
- "durationMs": 0.11744099999999946
+ "durationMs": 0.09951499999999669
},
{
"name": "storage.path-lock",
- "durationMs": 2.127182000000005
+ "durationMs": 1.4127459999999985
},
{
"name": "storage.credential",
- "durationMs": 3.4794669999999996
+ "durationMs": 2.5259029999999996
},
{
"name": "storage.cipher-open",
- "durationMs": 4.884205000000009
+ "durationMs": 4.875901000000027
},
{
"name": "storage.schema",
- "durationMs": 0.030679999999989604
+ "durationMs": 0.03569000000001665
},
{
"name": "storage.content-keys",
- "durationMs": 0.1828000000000003
+ "durationMs": 0.13914300000001845
},
{
"name": "storage.snapshot-maintenance",
- "durationMs": 0.32879799999999193
+ "durationMs": 0.3468610000000183
},
{
"name": "storage.projection",
- "durationMs": 9.082188000000002
+ "durationMs": 8.941617999999977
},
{
"name": "storage.configuration",
- "durationMs": 0.1778200000000112
+ "durationMs": 0.11520699999999806
},
{
"name": "storage.artifact-permissions",
- "durationMs": 3.071222000000006
+ "durationMs": 0.2810219999999788
},
{
"name": "storage-open",
- "durationMs": 23.914146000000002
+ "durationMs": 19.12029799999999
},
{
"name": "journal-restore",
- "durationMs": 5.671656999999996
+ "durationMs": 8.123241000000007
},
{
"name": "application-create",
- "durationMs": 1.627646999999996
+ "durationMs": 1.8886710000000164
}
],
- "previewRenderMs": 10.993,
- "terminalImportsMs": 16.151,
- "terminalMs": 0.042,
- "initializeMs": 0.25,
- "interactivePreparationMs": 16.443
+ "previewRenderMs": 11.741,
+ "terminalImportsMs": 8.482,
+ "terminalMs": 0.052,
+ "initializeMs": 0.256,
+ "interactivePreparationMs": 8.79
}
]
},
@@ -408,8 +408,8 @@
"readyMarker": "Completed Braid performance conversation (100000 committed events)",
"frameReadiness": "unique seeded final-content marker plus braid shell and no startup error",
"compileCache": "fresh empty directory for every launch; no compiled startup modules reused",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
},
{
@@ -417,12 +417,12 @@
"name": "PERF-03",
"unit": "ms",
"n": 1,
- "minimum": 7.092285999999149,
- "median": 7.092285999999149,
- "p90": 7.092285999999149,
- "p95": 7.092285999999149,
- "p99": 7.092285999999149,
- "maximum": 7.092285999999149,
+ "minimum": 8.998489999998128,
+ "median": 8.998489999998128,
+ "p90": 8.998489999998128,
+ "p95": 8.998489999998128,
+ "p99": 8.998489999998128,
+ "maximum": 8.998489999998128,
"target": {
"metric": "idle-key-to-updated-frame",
"percentile": "p95",
@@ -431,9 +431,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "warm-10000-event-encrypted-sqlite",
"eventCount": 10000
@@ -441,7 +441,7 @@
"state": "warm",
"repetitions": 1,
"rawSamples": [
- 7.092285999999149
+ 8.998489999998128
],
"command": "pnpm run test:performance [PERF-03; smoke]",
"passed": true,
@@ -462,11 +462,10 @@
{
"index": 1,
"token": "perf-key-00001",
- "keyFrameVersion": 6,
- "eraseFrameVersion": 7,
+ "keyFrameVersion": 8,
+ "eraseFrameVersion": 9,
"keyFrame": [
- "braid cwd braid-performance-10000-0KnuXR · session New conversation",
- " Performance seed conversation with normalized text events. ",
+ " › Performance seed conversation with normalized text events. ",
" ",
" Completed Braid performance conversation (10000 committed events); recent ",
" event 9997. ",
@@ -485,14 +484,14 @@
" ",
" ",
"────────────────────────────────────────────────────────────────────────────────",
- " perf-key-00001 ",
- "────────────────────────────────────────────────────────────────────────────────",
- "completed model automatic",
- "AgentProfile Braid performance profile · runner pi Ctrl+P commands"
+ "› send unavailable perf-key-00001 ",
+ " ",
+ " ",
+ "─────────────────── type / for commands · Alt+Enter · paste ────────────────────",
+ "profile Braid performance profile · pi / automatic · via not connected"
],
"eraseFrame": [
- "braid cwd braid-performance-10000-0KnuXR · session New conversation",
- " Performance seed conversation with normalized text events. ",
+ " › Performance seed conversation with normalized text events. ",
" ",
" Completed Braid performance conversation (10000 committed events); recent ",
" event 9997. ",
@@ -511,10 +510,11 @@
" ",
" ",
"────────────────────────────────────────────────────────────────────────────────",
+ "› send unavailable ",
" ",
- "────────────────────────────────────────────────────────────────────────────────",
- "completed model automatic",
- "AgentProfile Braid performance profile · runner pi Ctrl+P commands"
+ " ",
+ "─────────────────── type / for commands · Alt+Enter · paste ────────────────────",
+ "profile Braid performance profile · pi / automatic · via not connected"
]
}
]
@@ -525,8 +525,8 @@
"seed": "10000-event-encrypted-sqlite-headless-production",
"inputBinding": "unique perf-key-N text accepted by the real PTY composer",
"eraseBinding": "Ctrl-U followed by a later frame with no perf-key-N token",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
},
{
@@ -534,12 +534,12 @@
"name": "PERF-04",
"unit": "ms",
"n": 100,
- "minimum": 3.0803200000009383,
- "median": 11.934157999996387,
- "p90": 18.613400000002002,
- "p95": 19.67704600000434,
- "p99": 20.905907000000298,
- "maximum": 21.15657099999953,
+ "minimum": 3.89497300000221,
+ "median": 12.317813000001479,
+ "p90": 19.751868999999715,
+ "p95": 20.503766000001633,
+ "p99": 21.001294000001508,
+ "maximum": 21.90387799999735,
"target": {
"metric": "runtime-event-to-updated-frame",
"percentile": "p95",
@@ -548,9 +548,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "@xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "@xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "memory-journal-runtime-frame-path",
"eventCount": 100
@@ -558,106 +558,106 @@
"state": "warm",
"repetitions": 100,
"rawSamples": [
- 6.454660000003059,
- 16.549813000005088,
- 11.832728000001225,
- 6.287530000001425,
- 17.19137700000283,
- 12.261462000002211,
- 6.659191999999166,
- 16.772663000003377,
- 10.966470999999729,
- 6.3028400000039255,
- 15.875083999999333,
- 10.125082999998995,
- 5.524816999997711,
- 15.829192999997758,
- 10.960760000001756,
- 5.312809999995807,
- 14.543369999999413,
- 9.800713999997242,
- 3.0804510000016307,
- 16.69696400000248,
- 5.2541740000015125,
- 16.59304799999518,
- 10.781004999997094,
- 6.176330999995116,
- 15.819092999998247,
- 10.003914000000805,
- 5.099849999998696,
- 16.62251600000309,
- 10.881473000001279,
- 5.254765000005136,
- 15.378344999997353,
- 9.710244999994757,
- 19.67704600000434,
- 14.139913999999408,
- 9.448339000002306,
- 4.904033999999228,
- 15.678255999999237,
- 10.02050700000109,
- 5.128415999999561,
- 15.907628000000841,
- 10.177125000001979,
- 5.60923300000286,
- 16.50764099999651,
- 11.815233999994234,
- 6.278302999999141,
- 16.965582999997423,
- 12.13177700000233,
- 6.979343999999401,
- 18.364589000004344,
- 13.234759999999369,
- 7.690124000000651,
- 18.613400000002002,
- 13.381079000006139,
- 8.517145000005257,
- 21.15657099999953,
- 15.730579000002763,
- 10.980647999997018,
- 19.275854999999865,
- 13.94953899999382,
- 8.83517999999458,
- 18.005521999999473,
- 13.319147000001976,
- 8.624595000001136,
- 3.0803200000009383,
- 15.28435900000477,
- 10.3037850000037,
- 5.550478000004659,
- 17.499504999999772,
- 12.561674999997194,
- 7.191371999993862,
- 19.66910999999527,
- 14.947826999996323,
- 9.856283000000985,
- 20.23484499999904,
- 14.942515999995521,
- 9.677429999996093,
- 20.905907000000298,
- 16.102811999997357,
- 11.037119999993593,
- 6.2722499999945285,
- 17.300171999995655,
- 11.555131000000983,
- 7.0652029999982915,
- 17.013928000000305,
- 11.934157999996387,
- 7.01134699999966,
- 18.50094900000113,
- 12.844281999998202,
- 7.960767999997188,
- 18.64710599999671,
- 12.871894999996584,
- 8.15243499999633,
- 19.420530000003055,
- 14.509561999999278,
- 9.828237000001536,
- 20.713067999997293,
- 15.39007799999672,
- 10.315066999995906,
- 20.479667999999947,
- 14.52245799999946
+ 7.059621000000334,
+ 16.800740999999107,
+ 11.73555800000031,
+ 6.796032999998715,
+ 17.740506999994977,
+ 12.652108999995107,
+ 7.8920169999983045,
+ 20.503766000001633,
+ 15.814984000004188,
+ 11.01070400000026,
+ 21.001294000001508,
+ 16.662067999997817,
+ 11.720958999998402,
+ 5.96070100000361,
+ 15.751177999998617,
+ 10.655295999997179,
+ 5.790296999999555,
+ 15.445808000004035,
+ 9.591776000001119,
+ 3.89497300000221,
+ 15.258099999999104,
+ 10.55609099999856,
+ 5.722434000002977,
+ 16.079653999993752,
+ 11.247699999999895,
+ 5.517971999994188,
+ 16.66302999999607,
+ 11.879831999998714,
+ 7.0392809999975725,
+ 16.547853999996732,
+ 11.648246999997355,
+ 6.942931999998109,
+ 17.70450599999458,
+ 12.774330000000191,
+ 7.523692999995546,
+ 21.90387799999735,
+ 17.163002000001143,
+ 11.565844999997353,
+ 20.986364999997022,
+ 15.726260000003094,
+ 10.741065000001981,
+ 5.89284900000348,
+ 16.242773999998462,
+ 11.380600999997114,
+ 6.420554999996966,
+ 17.18330199999764,
+ 12.3057789999948,
+ 6.389875000000757,
+ 17.42015800000081,
+ 12.317813000001479,
+ 7.151260999999067,
+ 19.674556999998458,
+ 15.078506999998353,
+ 9.35756599999877,
+ 20.389963000001444,
+ 15.627586000002339,
+ 9.914922000003571,
+ 19.751868999999715,
+ 15.15252199999668,
+ 10.08097799999814,
+ 4.232405999995535,
+ 13.97037999999884,
+ 8.949814999999944,
+ 3.9782369999957155,
+ 15.813780999997107,
+ 11.11580099999992,
+ 6.100796999999147,
+ 16.787374999999884,
+ 11.905142000003252,
+ 7.060151999998197,
+ 17.96714200000133,
+ 12.93153799999709,
+ 8.135234000001219,
+ 19.90530099999887,
+ 14.945705999998609,
+ 10.026089999999385,
+ 19.895531000001938,
+ 14.708870000002207,
+ 9.64746500000183,
+ 19.68968699999823,
+ 14.529297000000952,
+ 9.430158000002848,
+ 20.666174999998475,
+ 15.71941599999991,
+ 10.81752399999823,
+ 5.894591999996919,
+ 16.487605000002077,
+ 11.49041600000055,
+ 5.666042000004381,
+ 19.694155999997747,
+ 14.455253000000084,
+ 10.169311999998172,
+ 19.669456999996328,
+ 14.735101999998733,
+ 9.762610999998287,
+ 20.309776000001875,
+ 15.627927000001364,
+ 10.208598999997776,
+ 20.589355000003707,
+ 14.995914999999513
],
"command": "pnpm run test:performance [PERF-04; smoke]",
"passed": true,
@@ -679,10 +679,10 @@
"reason": "Every provider event identifier was unique"
},
"acceptedEvents": 100,
- "frameWrites": 35,
- "producerElapsedMs": 539.2695650000023,
+ "frameWrites": 34,
+ "producerElapsedMs": 531.9705969999995,
"achievedEventsPerSecond": {
- "value": 185.4360165866204,
+ "value": 187.98031425785754,
"reason": "The final event frame completed within the required 100 events/s interval"
},
"finalFrameCompleted": {
@@ -692,9 +692,9 @@
"eventFrameBindings": "Pi TUI doRender completion + xterm flush + each exact visible event marker"
},
"details": {
- "achievedEventsPerSecond": 185.4360165866204,
+ "achievedEventsPerSecond": 187.98031425785754,
"minimumEventsPerSecond": 100,
- "elapsedMs": 539.2695650000023,
+ "elapsedMs": 531.9705969999995,
"finalFrameCompleted": true,
"accepted": 100,
"renderedEvents": 100,
@@ -702,74 +702,74 @@
"stageTimings": {
"applicationCommitMs": {
"n": 100,
- "total": 73.15521199999057,
- "mean": 0.7315521199999057,
- "minimum": 0.40847499999654246,
- "median": 0.6313340000051539,
- "p90": 1.2071090000026743,
- "p95": 1.3283769999979995,
- "p99": 1.4515099999989616,
- "maximum": 1.6061859999972512
+ "total": 83.06254499997885,
+ "mean": 0.8306254499997885,
+ "minimum": 0.48821999999927357,
+ "median": 0.7614470000044093,
+ "p90": 1.1624140000058105,
+ "p95": 1.332709000002069,
+ "p99": 1.423928000003798,
+ "maximum": 1.508153000002494
},
"frameQueueMs": {
- "n": 45,
- "total": 427.40602700002637,
- "mean": 9.497911711111698,
- "minimum": 0.0006310000026132911,
- "median": 12.221364000004542,
- "p90": 14.952425000003132,
- "p95": 15.081951000000117,
- "p99": 15.605131999996956,
- "maximum": 15.605131999996956
+ "n": 44,
+ "total": 416.5177410000033,
+ "mean": 9.466312295454621,
+ "minimum": 0.0006110000031185336,
+ "median": 11.882167000003392,
+ "p90": 15.257127999997465,
+ "p95": 15.600010999994993,
+ "p99": 15.727953000001435,
+ "maximum": 15.727953000001435
},
"viewProjectionMs": {
- "n": 45,
- "total": 16.870583000003535,
- "mean": 0.374901844444523,
- "minimum": 0.1546950000047218,
- "median": 0.3461719999977504,
- "p90": 0.5355649999983143,
- "p95": 0.5768570000000182,
- "p99": 0.759888000000501,
- "maximum": 0.759888000000501
+ "n": 44,
+ "total": 20.202193999983137,
+ "mean": 0.45914077272688947,
+ "minimum": 0.19354000000021188,
+ "median": 0.4329710000019986,
+ "p90": 0.6576419999983045,
+ "p95": 0.7043139999950654,
+ "p99": 0.8498499999986961,
+ "maximum": 0.8498499999986961
},
"terminalViewApplyMs": {
- "n": 45,
- "total": 4.973408999991079,
- "mean": 0.11052019999980177,
- "minimum": 0.017595000004803296,
- "median": 0.10347399999591289,
- "p90": 0.16720899999927497,
- "p95": 0.175134999997681,
- "p99": 0.21890200000052573,
- "maximum": 0.21890200000052573
+ "n": 44,
+ "total": 4.151127000026463,
+ "mean": 0.09434379545514689,
+ "minimum": 0.017864999994344544,
+ "median": 0.09782200000336161,
+ "p90": 0.11878399999841349,
+ "p95": 0.1327309999978752,
+ "p99": 0.2081689999977243,
+ "maximum": 0.2081689999977243
},
"piRenderMs": {
- "n": 35,
- "total": 21.488010000015493,
- "mean": 0.6139431428575856,
- "minimum": 0.42848500000400236,
- "median": 0.5992110000006505,
- "p90": 0.7961290000021108,
- "p95": 0.8950239999976475,
- "p99": 1.018776999997499,
- "maximum": 1.018776999997499
+ "n": 34,
+ "total": 24.894895000012184,
+ "mean": 0.7322027941180054,
+ "minimum": 0.5394299999970826,
+ "median": 0.6762390000003506,
+ "p90": 0.9561089999988326,
+ "p95": 1.2518399999971734,
+ "p99": 1.2670190000062576,
+ "maximum": 1.2670190000062576
},
"terminalFlushMs": {
- "n": 35,
- "total": 50.134050999971805,
- "mean": 1.4324014571420516,
- "minimum": 0.6333480000030249,
- "median": 1.2352539999992587,
- "p90": 1.7943659999946249,
- "p95": 2.018607999998494,
- "p99": 2.507229999995616,
- "maximum": 2.507229999995616
+ "n": 34,
+ "total": 53.00856399995973,
+ "mean": 1.5590754117635215,
+ "minimum": 1.1209729999973206,
+ "median": 1.416983999995864,
+ "p90": 1.993135999997321,
+ "p95": 2.312573999995948,
+ "p99": 2.641580999996222,
+ "maximum": 2.641580999996222
},
"combinedUpdatesPerFrame": {
- "n": 45,
+ "n": 44,
"total": 111,
- "mean": 2.466666666666667,
+ "mean": 2.522727272727273,
"minimum": 1,
"median": 3,
"p90": 3,
@@ -781,12 +781,12 @@
},
"failureReasons": [],
"provenance": {
- "packageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
+ "packageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
"frameBinding": "Pi TUI doRender completion + xterm flush + each exact visible event marker",
"unrelatedWritesExcluded": true,
"rateInterval": "producer start through the final event matching Pi frame completion",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
},
{
@@ -794,12 +794,12 @@
"name": "PERF-05",
"unit": "ms",
"n": 1,
- "minimum": 898.5598299999983,
- "median": 898.5598299999983,
- "p90": 898.5598299999983,
- "p95": 898.5598299999983,
- "p99": 898.5598299999983,
- "maximum": 898.5598299999983,
+ "minimum": 1560.6777469999943,
+ "median": 1560.6777469999943,
+ "p90": 1560.6777469999943,
+ "p95": 1560.6777469999943,
+ "p99": 1560.6777469999943,
+ "maximum": 1560.6777469999943,
"target": {
"metric": "replay-reduce-10000-events",
"percentile": "p95",
@@ -808,8 +808,8 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"terminal": "none; production StorageJournal + reducer",
"dimensions": "none",
"database": "warm-10000-event-encrypted-sqlite",
@@ -818,7 +818,7 @@
"state": "warm",
"repetitions": 1,
"rawSamples": [
- 898.5598299999983
+ 1560.6777469999943
],
"command": "pnpm run test:performance [PERF-05; smoke]",
"passed": true,
@@ -827,64 +827,64 @@
"value": 10000,
"reason": "Every committed event was replayed"
},
- "projectionChecksum": "1a0f209cfc5665cba4bf7a96cf734ae8c871eb3ac1e5708c20931d8d9c56cddb"
+ "projectionChecksum": "4193c7c3a05dd8a87a9d58100ec74e4acf106162434158c7eeaebaa395c8b382"
},
"details": {
"stageTimings": {
"storageOpenMs": {
"n": 1,
- "total": 4.877962999998999,
- "mean": 4.877962999998999,
- "minimum": 4.877962999998999,
- "median": 4.877962999998999,
- "p90": 4.877962999998999,
- "p95": 4.877962999998999,
- "p99": 4.877962999998999,
- "maximum": 4.877962999998999,
+ "total": 3.693396999995457,
+ "mean": 3.693396999995457,
+ "minimum": 3.693396999995457,
+ "median": 3.693396999995457,
+ "p90": 3.693396999995457,
+ "p95": 3.693396999995457,
+ "p99": 3.693396999995457,
+ "maximum": 3.693396999995457,
"rawSamples": [
- 4.877962999998999
+ 3.693396999995457
]
},
"storageReadDecryptMs": {
"n": 1,
- "total": 155.03340000000026,
- "mean": 155.03340000000026,
- "minimum": 155.03340000000026,
- "median": 155.03340000000026,
- "p90": 155.03340000000026,
- "p95": 155.03340000000026,
- "p99": 155.03340000000026,
- "maximum": 155.03340000000026,
+ "total": 284.20510099999956,
+ "mean": 284.20510099999956,
+ "minimum": 284.20510099999956,
+ "median": 284.20510099999956,
+ "p90": 284.20510099999956,
+ "p95": 284.20510099999956,
+ "p99": 284.20510099999956,
+ "maximum": 284.20510099999956,
"rawSamples": [
- 155.03340000000026
+ 284.20510099999956
]
},
"envelopeDecodeMs": {
"n": 1,
- "total": 2.1512089999960153,
- "mean": 2.1512089999960153,
- "minimum": 2.1512089999960153,
- "median": 2.1512089999960153,
- "p90": 2.1512089999960153,
- "p95": 2.1512089999960153,
- "p99": 2.1512089999960153,
- "maximum": 2.1512089999960153,
+ "total": 1.4565920000022743,
+ "mean": 1.4565920000022743,
+ "minimum": 1.4565920000022743,
+ "median": 1.4565920000022743,
+ "p90": 1.4565920000022743,
+ "p95": 1.4565920000022743,
+ "p99": 1.4565920000022743,
+ "maximum": 1.4565920000022743,
"rawSamples": [
- 2.1512089999960153
+ 1.4565920000022743
]
},
"reducerMs": {
"n": 1,
- "total": 736.4972580000031,
- "mean": 736.4972580000031,
- "minimum": 736.4972580000031,
- "median": 736.4972580000031,
- "p90": 736.4972580000031,
- "p95": 736.4972580000031,
- "p99": 736.4972580000031,
- "maximum": 736.4972580000031,
+ "total": 1271.322656999997,
+ "mean": 1271.322656999997,
+ "minimum": 1271.322656999997,
+ "median": 1271.322656999997,
+ "p90": 1271.322656999997,
+ "p95": 1271.322656999997,
+ "p99": 1271.322656999997,
+ "maximum": 1271.322656999997,
"rawSamples": [
- 736.4972580000031
+ 1271.322656999997
]
}
}
@@ -892,8 +892,8 @@
"failureReasons": [],
"provenance": {
"seed": "packed encrypted SQLite production storage; complete receipt-backed run",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
},
{
@@ -901,12 +901,12 @@
"name": "PERF-06",
"unit": "ms",
"n": 1,
- "minimum": 28.890989999999874,
- "median": 28.890989999999874,
- "p90": 28.890989999999874,
- "p95": 28.890989999999874,
- "p99": 28.890989999999874,
- "maximum": 28.890989999999874,
+ "minimum": 20.259799999999814,
+ "median": 20.259799999999814,
+ "p90": 20.259799999999814,
+ "p95": 20.259799999999814,
+ "p99": 20.259799999999814,
+ "maximum": 20.259799999999814,
"target": {
"metric": "open-100000-event-conversation",
"percentile": "p95",
@@ -915,9 +915,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "cold-100000-event-encrypted-sqlite",
"eventCount": 100000
@@ -925,7 +925,7 @@
"state": "cold",
"repetitions": 1,
"rawSamples": [
- 28.890989999999874
+ 20.259799999999814
],
"command": "pnpm run test:performance [PERF-06; smoke]",
"passed": true,
@@ -946,8 +946,8 @@
"failureReasons": [],
"provenance": {
"seed": "packed encrypted SQLite production storage; recent useful content asserted",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
},
{
@@ -955,12 +955,12 @@
"name": "PERF-07",
"unit": "ms",
"n": 10,
- "minimum": 12.3392359999998,
- "median": 15.613979000001564,
- "p90": 16.98489100000006,
- "p95": 18.307356999997864,
- "p99": 18.307356999997864,
- "maximum": 18.307356999997864,
+ "minimum": 12.842043000004196,
+ "median": 14.890056000003824,
+ "p90": 17.089618999998493,
+ "p95": 20.777404000000388,
+ "p99": 20.777404000000388,
+ "maximum": 20.777404000000388,
"target": {
"metric": "resize-during-stream-frame",
"percentile": "p95",
@@ -969,9 +969,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "40x12,80x24,120x40,200x60",
"database": "packed headless 100-events-per-second stream",
"eventCount": 42
@@ -989,10 +989,10 @@
"columns": 40,
"rows": 12
},
- "elapsedMs": 12.969578000003821,
- "resizeCallMs": 0.5130110000027344,
+ "elapsedMs": 20.777404000000388,
+ "resizeCallMs": 0.4712359999975888,
"frameCompletions": 2,
- "frameCompletedAt": 42179.929756,
+ "frameCompletedAt": 49425.264996,
"acceptedEvents": 7,
"active": true,
"invalidCells": 0
@@ -1007,11 +1007,11 @@
"columns": 80,
"rows": 24
},
- "elapsedMs": 18.307356999997864,
- "resizeCallMs": 0.2516459999969811,
+ "elapsedMs": 12.842043000004196,
+ "resizeCallMs": 0.22769800000241958,
"frameCompletions": 3,
- "frameCompletedAt": 42199.342741,
- "acceptedEvents": 12,
+ "frameCompletedAt": 49437.325894,
+ "acceptedEvents": 11,
"active": true,
"invalidCells": 0
},
@@ -1025,11 +1025,11 @@
"columns": 120,
"rows": 40
},
- "elapsedMs": 16.285311999999976,
- "resizeCallMs": 0.18229900000005728,
+ "elapsedMs": 14.221553000003041,
+ "resizeCallMs": 0.15378200000122888,
"frameCompletions": 4,
- "frameCompletedAt": 42215.492757,
- "acceptedEvents": 16,
+ "frameCompletedAt": 49452.212874,
+ "acceptedEvents": 14,
"active": true,
"invalidCells": 0
},
@@ -1043,10 +1043,10 @@
"columns": 200,
"rows": 60
},
- "elapsedMs": 15.401460000000952,
- "resizeCallMs": 0.22603499999968335,
+ "elapsedMs": 17.084649000003992,
+ "resizeCallMs": 0.2139210000023013,
"frameCompletions": 5,
- "frameCompletedAt": 42230.178016,
+ "frameCompletedAt": 49468.411021,
"acceptedEvents": 19,
"active": true,
"invalidCells": 0
@@ -1061,11 +1061,11 @@
"columns": 40,
"rows": 12
},
- "elapsedMs": 15.858570999997028,
- "resizeCallMs": 0.9493809999985388,
+ "elapsedMs": 14.22854599999846,
+ "resizeCallMs": 1.3229890000002342,
"frameCompletions": 6,
- "frameCompletedAt": 42246.119581,
- "acceptedEvents": 24,
+ "frameCompletedAt": 49483.728517,
+ "acceptedEvents": 22,
"active": true,
"invalidCells": 0
},
@@ -1079,11 +1079,11 @@
"columns": 80,
"rows": 24
},
- "elapsedMs": 14.364588000004005,
- "resizeCallMs": 0.0730939999994007,
+ "elapsedMs": 14.184450000000652,
+ "resizeCallMs": 0.07295300000259886,
"frameCompletions": 7,
- "frameCompletedAt": 42260.956399,
- "acceptedEvents": 27,
+ "frameCompletedAt": 49497.301004,
+ "acceptedEvents": 26,
"active": true,
"invalidCells": 0
},
@@ -1097,11 +1097,11 @@
"columns": 120,
"rows": 40
},
- "elapsedMs": 16.981434000001173,
- "resizeCallMs": 0.09575799999583978,
+ "elapsedMs": 15.426189999998314,
+ "resizeCallMs": 0.11767099999997299,
"frameCompletions": 8,
- "frameCompletedAt": 42276.841242,
- "acceptedEvents": 31,
+ "frameCompletedAt": 49513.797337,
+ "acceptedEvents": 30,
"active": true,
"invalidCells": 0
},
@@ -1115,11 +1115,11 @@
"columns": 200,
"rows": 60
},
- "elapsedMs": 15.613979000001564,
- "resizeCallMs": 0.34791600000608014,
+ "elapsedMs": 17.089618999998493,
+ "resizeCallMs": 0.200102999995579,
"frameCompletions": 9,
- "frameCompletedAt": 42293.381717,
- "acceptedEvents": 35,
+ "frameCompletedAt": 49530.698255,
+ "acceptedEvents": 34,
"active": true,
"invalidCells": 0
},
@@ -1133,11 +1133,11 @@
"columns": 40,
"rows": 12
},
- "elapsedMs": 16.98489100000006,
- "resizeCallMs": 0.6030590000009397,
+ "elapsedMs": 15.652734999996028,
+ "resizeCallMs": 0.44141700000182027,
"frameCompletions": 10,
- "frameCompletedAt": 42309.334594,
- "acceptedEvents": 39,
+ "frameCompletedAt": 49545.514306,
+ "acceptedEvents": 38,
"active": true,
"invalidCells": 0
},
@@ -1151,10 +1151,10 @@
"columns": 80,
"rows": 24
},
- "elapsedMs": 12.3392359999998,
- "resizeCallMs": 0.19236900000396417,
+ "elapsedMs": 14.890056000003824,
+ "resizeCallMs": 0.07782299999962561,
"frameCompletions": 11,
- "frameCompletedAt": 42322.905688,
+ "frameCompletedAt": 49561.394898,
"acceptedEvents": 42,
"active": true,
"invalidCells": 0
@@ -1180,23 +1180,23 @@
"reason": "Every resize received a completed Pi render"
},
"elapsedMs": {
- "value": 166.2990839999984,
+ "value": 162.8107549999986,
"reason": "The interval starts at the first generated event and ends after the final resize-bound frame"
},
"offeredEventsPerSecond": {
- "value": 252.55701348301113,
+ "value": 257.9682159203817,
"reason": "Offered rate uses generated events over the measured stream interval"
},
"acceptedEventsPerSecond": {
- "value": 252.55701348301113,
+ "value": 257.9682159203817,
"reason": "Accepted rate met the required 100 events/s"
},
"observedEventsPerSecond": {
- "value": 252.55701348301113,
+ "value": 257.9682159203817,
"reason": "The pass rate is the accepted stream rate through the final resize-bound frame"
},
"producerEventsPerSecond": {
- "value": 256.18339022180874,
+ "value": 257.9009031622087,
"reason": "Producer cadence uses the first through last generated event timestamps"
},
"minimumEventsPerSecond": {
@@ -1250,10 +1250,10 @@
"columns": 40,
"rows": 12
},
- "elapsedMs": 12.969578000003821,
- "resizeCallMs": 0.5130110000027344,
+ "elapsedMs": 20.777404000000388,
+ "resizeCallMs": 0.4712359999975888,
"frameCompletions": 2,
- "frameCompletedAt": 42179.929756,
+ "frameCompletedAt": 49425.264996,
"acceptedEvents": 7,
"active": true,
"invalidCells": 0
@@ -1268,11 +1268,11 @@
"columns": 80,
"rows": 24
},
- "elapsedMs": 18.307356999997864,
- "resizeCallMs": 0.2516459999969811,
+ "elapsedMs": 12.842043000004196,
+ "resizeCallMs": 0.22769800000241958,
"frameCompletions": 3,
- "frameCompletedAt": 42199.342741,
- "acceptedEvents": 12,
+ "frameCompletedAt": 49437.325894,
+ "acceptedEvents": 11,
"active": true,
"invalidCells": 0
},
@@ -1286,11 +1286,11 @@
"columns": 120,
"rows": 40
},
- "elapsedMs": 16.285311999999976,
- "resizeCallMs": 0.18229900000005728,
+ "elapsedMs": 14.221553000003041,
+ "resizeCallMs": 0.15378200000122888,
"frameCompletions": 4,
- "frameCompletedAt": 42215.492757,
- "acceptedEvents": 16,
+ "frameCompletedAt": 49452.212874,
+ "acceptedEvents": 14,
"active": true,
"invalidCells": 0
},
@@ -1304,10 +1304,10 @@
"columns": 200,
"rows": 60
},
- "elapsedMs": 15.401460000000952,
- "resizeCallMs": 0.22603499999968335,
+ "elapsedMs": 17.084649000003992,
+ "resizeCallMs": 0.2139210000023013,
"frameCompletions": 5,
- "frameCompletedAt": 42230.178016,
+ "frameCompletedAt": 49468.411021,
"acceptedEvents": 19,
"active": true,
"invalidCells": 0
@@ -1322,11 +1322,11 @@
"columns": 40,
"rows": 12
},
- "elapsedMs": 15.858570999997028,
- "resizeCallMs": 0.9493809999985388,
+ "elapsedMs": 14.22854599999846,
+ "resizeCallMs": 1.3229890000002342,
"frameCompletions": 6,
- "frameCompletedAt": 42246.119581,
- "acceptedEvents": 24,
+ "frameCompletedAt": 49483.728517,
+ "acceptedEvents": 22,
"active": true,
"invalidCells": 0
},
@@ -1340,11 +1340,11 @@
"columns": 80,
"rows": 24
},
- "elapsedMs": 14.364588000004005,
- "resizeCallMs": 0.0730939999994007,
+ "elapsedMs": 14.184450000000652,
+ "resizeCallMs": 0.07295300000259886,
"frameCompletions": 7,
- "frameCompletedAt": 42260.956399,
- "acceptedEvents": 27,
+ "frameCompletedAt": 49497.301004,
+ "acceptedEvents": 26,
"active": true,
"invalidCells": 0
},
@@ -1358,11 +1358,11 @@
"columns": 120,
"rows": 40
},
- "elapsedMs": 16.981434000001173,
- "resizeCallMs": 0.09575799999583978,
+ "elapsedMs": 15.426189999998314,
+ "resizeCallMs": 0.11767099999997299,
"frameCompletions": 8,
- "frameCompletedAt": 42276.841242,
- "acceptedEvents": 31,
+ "frameCompletedAt": 49513.797337,
+ "acceptedEvents": 30,
"active": true,
"invalidCells": 0
},
@@ -1376,11 +1376,11 @@
"columns": 200,
"rows": 60
},
- "elapsedMs": 15.613979000001564,
- "resizeCallMs": 0.34791600000608014,
+ "elapsedMs": 17.089618999998493,
+ "resizeCallMs": 0.200102999995579,
"frameCompletions": 9,
- "frameCompletedAt": 42293.381717,
- "acceptedEvents": 35,
+ "frameCompletedAt": 49530.698255,
+ "acceptedEvents": 34,
"active": true,
"invalidCells": 0
},
@@ -1394,11 +1394,11 @@
"columns": 40,
"rows": 12
},
- "elapsedMs": 16.98489100000006,
- "resizeCallMs": 0.6030590000009397,
+ "elapsedMs": 15.652734999996028,
+ "resizeCallMs": 0.44141700000182027,
"frameCompletions": 10,
- "frameCompletedAt": 42309.334594,
- "acceptedEvents": 39,
+ "frameCompletedAt": 49545.514306,
+ "acceptedEvents": 38,
"active": true,
"invalidCells": 0
},
@@ -1412,10 +1412,10 @@
"columns": 80,
"rows": 24
},
- "elapsedMs": 12.3392359999998,
- "resizeCallMs": 0.19236900000396417,
+ "elapsedMs": 14.890056000003824,
+ "resizeCallMs": 0.07782299999962561,
"frameCompletions": 11,
- "frameCompletedAt": 42322.905688,
+ "frameCompletedAt": 49561.394898,
"acceptedEvents": 42,
"active": true,
"invalidCells": 0
@@ -1423,95 +1423,95 @@
]
},
"details": {
- "streamElapsedMs": 166.2990839999984,
- "firstGeneratedAt": 42156.606604,
- "lastGeneratedAt": 42320.551659,
- "finalResizeFrameCompletedAt": 42322.905688,
+ "streamElapsedMs": 162.8107549999986,
+ "firstGeneratedAt": 49398.584143,
+ "lastGeneratedAt": 49561.437392,
+ "finalResizeFrameCompletedAt": 49561.394898,
"intendedEventsPerSecond": 250,
- "producerEventsPerSecond": 256.18339022180874,
- "offeredEventsPerSecond": 252.55701348301113,
- "acceptedEventsPerSecond": 252.55701348301113,
- "observedEventsPerSecond": 252.55701348301113,
+ "producerEventsPerSecond": 257.9009031622087,
+ "offeredEventsPerSecond": 257.9682159203817,
+ "acceptedEventsPerSecond": 257.9682159203817,
+ "observedEventsPerSecond": 257.9682159203817,
"minimumEventsPerSecond": 100,
"minimumExpectedEvents": 17,
"ratePassed": true,
"stageTimings": {
"resizeCallMs": {
"n": 10,
- "total": 3.4345680000042194,
- "mean": 0.34345680000042195,
- "minimum": 0.0730939999994007,
- "median": 0.22603499999968335,
- "p90": 0.6030590000009397,
- "p95": 0.9493809999985388,
- "p99": 0.9493809999985388,
- "maximum": 0.9493809999985388
+ "total": 3.2995930000033695,
+ "mean": 0.32995930000033696,
+ "minimum": 0.07295300000259886,
+ "median": 0.200102999995579,
+ "p90": 0.4712359999975888,
+ "p95": 1.3229890000002342,
+ "p99": 1.3229890000002342,
+ "maximum": 1.3229890000002342
},
"frameQueueMs": {
"n": 14,
- "total": 138.4991999999911,
- "mean": 9.892799999999365,
- "minimum": 0.001242999998794403,
- "median": 14.23957099999825,
- "p90": 14.907837999999174,
- "p95": 15.14892300000065,
- "p99": 15.14892300000065,
- "maximum": 15.14892300000065
+ "total": 142.44359800001257,
+ "mean": 10.174542714286613,
+ "minimum": 0.0013120000003254972,
+ "median": 13.518481999999494,
+ "p90": 15.194734999997308,
+ "p95": 15.713694999998552,
+ "p99": 15.713694999998552,
+ "maximum": 15.713694999998552
},
"viewProjectionMs": {
"n": 14,
- "total": 8.934876000028453,
- "mean": 0.638205428573461,
- "minimum": 0.31203500000265194,
- "median": 0.49801100000331644,
- "p90": 1.1277620000037132,
- "p95": 1.855956999999762,
- "p99": 1.855956999999762,
- "maximum": 1.855956999999762
+ "total": 8.25729599998158,
+ "mean": 0.5898068571415414,
+ "minimum": 0.39167999999335734,
+ "median": 0.4997319999965839,
+ "p90": 1.1402610000004643,
+ "p95": 1.1427159999948344,
+ "p99": 1.1427159999948344,
+ "maximum": 1.1427159999948344
},
"terminalViewApplyMs": {
"n": 14,
- "total": 2.4669229999781237,
- "mean": 0.1762087857127231,
- "minimum": 0.04196199999569217,
- "median": 0.11891499999910593,
- "p90": 0.26189599999634083,
- "p95": 0.8661670000001322,
- "p99": 0.8661670000001322,
- "maximum": 0.8661670000001322
+ "total": 1.4402380000028643,
+ "mean": 0.10287414285734744,
+ "minimum": 0.043075000001408625,
+ "median": 0.08050799999909941,
+ "p90": 0.19380000000091968,
+ "p95": 0.21734700000524754,
+ "p99": 0.21734700000524754,
+ "maximum": 0.21734700000524754
},
"piRenderMs": {
"n": 11,
- "total": 21.360153000016,
- "mean": 1.9418320909105453,
- "minimum": 0.48844200000166893,
- "median": 0.9067960000029416,
- "p90": 3.4039080000002286,
- "p95": 10.477738000001409,
- "p99": 10.477738000001409,
- "maximum": 10.477738000001409
+ "total": 21.135429000009026,
+ "mean": 1.921402636364457,
+ "minimum": 0.7156659999964177,
+ "median": 0.9320110000044224,
+ "p90": 4.6986329999999725,
+ "p95": 6.592172999997274,
+ "p99": 6.592172999997274,
+ "maximum": 6.592172999997274
},
"terminalFlushMs": {
"n": 11,
- "total": 20.286355999996886,
- "mean": 1.8442141818178988,
- "minimum": 1.0552089999982854,
- "median": 1.7018039999966277,
- "p90": 2.3222359999999753,
- "p95": 3.691705000004731,
- "p99": 3.691705000004731,
- "maximum": 3.691705000004731
+ "total": 22.234148000003188,
+ "mean": 2.0212861818184717,
+ "minimum": 1.203194000001531,
+ "median": 1.9084900000016205,
+ "p90": 2.7484199999962584,
+ "p95": 3.660953000005975,
+ "p99": 3.660953000005975,
+ "maximum": 3.660953000005975
},
"resizeToVisibleMs": {
"n": 10,
- "total": 155.10640600000625,
- "mean": 15.510640600000624,
- "minimum": 12.3392359999998,
- "median": 15.613979000001564,
- "p90": 16.98489100000006,
- "p95": 18.307356999997864,
- "p99": 18.307356999997864,
- "maximum": 18.307356999997864
+ "total": 156.3972450000074,
+ "mean": 15.639724500000739,
+ "minimum": 12.842043000004196,
+ "median": 14.890056000003824,
+ "p90": 17.089618999998493,
+ "p95": 20.777404000000388,
+ "p99": 20.777404000000388,
+ "maximum": 20.777404000000388
},
"combinedUpdatesPerFrame": {
"n": 14,
@@ -1528,7 +1528,7 @@
},
"failureReasons": [],
"provenance": {
- "packageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
+ "packageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
"stream": "packed Braid application + packed Pi terminal headless path",
"eventReceipt": "application committed uniquely marked run.text.delta events",
"resizeReceipt": "Pi doRender completion followed by xterm flush at each reference size and resize epoch",
@@ -1539,8 +1539,8 @@
"120x40",
"200x60"
],
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
},
{
@@ -1562,9 +1562,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "deterministic-offline-fixture-idle",
"eventCount": 0
@@ -1578,7 +1578,7 @@
"passed": true,
"observations": {
"durationSeconds": [
- 2.0026646649999966
+ 2.003161355000004
],
"cpuSeconds": [
0
@@ -1592,8 +1592,8 @@
"measuredSeconds": 2,
"cpuMeter": "/proc//stat",
"commandPath": "packed deterministic Braid process",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
},
{
@@ -1601,12 +1601,12 @@
"name": "PERF-09",
"unit": "MiB RSS",
"n": 1,
- "minimum": 86.765625,
- "median": 86.765625,
- "p90": 86.765625,
- "p95": 86.765625,
- "p99": 86.765625,
- "maximum": 86.765625,
+ "minimum": 111.84375,
+ "median": 111.84375,
+ "p90": 111.84375,
+ "p95": 111.84375,
+ "p99": 111.84375,
+ "maximum": 111.84375,
"target": {
"metric": "resident-memory-10000-event-conversation",
"percentile": "p95",
@@ -1615,8 +1615,8 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"terminal": "packed production view model; child process RSS",
"dimensions": "80x24",
"database": "warm-10000-event-encrypted-sqlite",
@@ -1625,15 +1625,15 @@
"state": "warm",
"repetitions": 1,
"rawSamples": [
- 86.765625
+ 111.84375
],
"command": "pnpm run test:performance [PERF-09; smoke]",
"passed": true,
"observations": {
"residentMemory": [
{
- "baselineRssMiB": 80.546875,
- "openedRssMiB": 86.765625,
+ "baselineRssMiB": 106.546875,
+ "openedRssMiB": 111.84375,
"loadedTailEventCount": 0,
"renderedRows": 4
}
@@ -1647,8 +1647,8 @@
"failureReasons": [],
"provenance": {
"seed": "packed encrypted SQLite production storage; one fresh child per repetition",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
},
{
@@ -1670,8 +1670,8 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"terminal": "none; packed production encrypted SQLite artifacts",
"dimensions": "none",
"database": "cold-10000-event-encrypted-sqlite",
@@ -1703,8 +1703,8 @@
"provenance": {
"bytes": "database + WAL + shared-memory SQLite artifacts only",
"providerArtifacts": "reported separately and excluded from samples",
- "packedPackageRoot": "/tmp/braid-install-VYfGzP/node_modules/@tangle-network/braid",
- "packedTarballSha256": "644bc390f1ea9ef69429f6ab8a6a583d5798157c7dd4601501ab797d886e151a"
+ "packedPackageRoot": "/tmp/braid-install-6NpOSH/node_modules/@tangle-network/braid",
+ "packedTarballSha256": "a3fefc1e5e23b80e643a8d6bbc407e2eafb792ce9f89da0012b8a51cfbac6325"
}
}
],
@@ -1714,12 +1714,12 @@
"name": "PERF-01",
"unit": "ms",
"n": 1,
- "minimum": 128.22121699999843,
- "median": 128.22121699999843,
- "p90": 128.22121699999843,
- "p95": 128.22121699999843,
- "p99": 128.22121699999843,
- "maximum": 128.22121699999843,
+ "minimum": 172.10708100000193,
+ "median": 172.10708100000193,
+ "p90": 172.10708100000193,
+ "p95": 172.10708100000193,
+ "p99": 172.10708100000193,
+ "maximum": 172.10708100000193,
"target": {
"metric": "process-start-to-first-visible-frame",
"percentile": "p95",
@@ -1728,9 +1728,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "warm-10000-event-encrypted-sqlite",
"eventCount": 10000
@@ -1743,12 +1743,12 @@
"name": "PERF-02",
"unit": "ms",
"n": 1,
- "minimum": 162.42808499999956,
- "median": 162.42808499999956,
- "p90": 162.42808499999956,
- "p95": 162.42808499999956,
- "p99": 162.42808499999956,
- "maximum": 162.42808499999956,
+ "minimum": 216.79717000000528,
+ "median": 216.79717000000528,
+ "p90": 216.79717000000528,
+ "p95": 216.79717000000528,
+ "p99": 216.79717000000528,
+ "maximum": 216.79717000000528,
"target": {
"metric": "process-start-to-first-visible-frame",
"percentile": "p95",
@@ -1757,9 +1757,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "cold-100000-event-encrypted-sqlite",
"eventCount": 100000
@@ -1772,12 +1772,12 @@
"name": "PERF-03",
"unit": "ms",
"n": 1,
- "minimum": 7.092285999999149,
- "median": 7.092285999999149,
- "p90": 7.092285999999149,
- "p95": 7.092285999999149,
- "p99": 7.092285999999149,
- "maximum": 7.092285999999149,
+ "minimum": 8.998489999998128,
+ "median": 8.998489999998128,
+ "p90": 8.998489999998128,
+ "p95": 8.998489999998128,
+ "p99": 8.998489999998128,
+ "maximum": 8.998489999998128,
"target": {
"metric": "idle-key-to-updated-frame",
"percentile": "p95",
@@ -1786,9 +1786,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "warm-10000-event-encrypted-sqlite",
"eventCount": 10000
@@ -1801,12 +1801,12 @@
"name": "PERF-04",
"unit": "ms",
"n": 100,
- "minimum": 3.0803200000009383,
- "median": 11.934157999996387,
- "p90": 18.613400000002002,
- "p95": 19.67704600000434,
- "p99": 20.905907000000298,
- "maximum": 21.15657099999953,
+ "minimum": 3.89497300000221,
+ "median": 12.317813000001479,
+ "p90": 19.751868999999715,
+ "p95": 20.503766000001633,
+ "p99": 21.001294000001508,
+ "maximum": 21.90387799999735,
"target": {
"metric": "runtime-event-to-updated-frame",
"percentile": "p95",
@@ -1815,9 +1815,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "@xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "@xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "memory-journal-runtime-frame-path",
"eventCount": 100
@@ -1830,12 +1830,12 @@
"name": "PERF-05",
"unit": "ms",
"n": 1,
- "minimum": 898.5598299999983,
- "median": 898.5598299999983,
- "p90": 898.5598299999983,
- "p95": 898.5598299999983,
- "p99": 898.5598299999983,
- "maximum": 898.5598299999983,
+ "minimum": 1560.6777469999943,
+ "median": 1560.6777469999943,
+ "p90": 1560.6777469999943,
+ "p95": 1560.6777469999943,
+ "p99": 1560.6777469999943,
+ "maximum": 1560.6777469999943,
"target": {
"metric": "replay-reduce-10000-events",
"percentile": "p95",
@@ -1844,8 +1844,8 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"terminal": "none; production StorageJournal + reducer",
"dimensions": "none",
"database": "warm-10000-event-encrypted-sqlite",
@@ -1859,12 +1859,12 @@
"name": "PERF-06",
"unit": "ms",
"n": 1,
- "minimum": 28.890989999999874,
- "median": 28.890989999999874,
- "p90": 28.890989999999874,
- "p95": 28.890989999999874,
- "p99": 28.890989999999874,
- "maximum": 28.890989999999874,
+ "minimum": 20.259799999999814,
+ "median": 20.259799999999814,
+ "p90": 20.259799999999814,
+ "p95": 20.259799999999814,
+ "p99": 20.259799999999814,
+ "maximum": 20.259799999999814,
"target": {
"metric": "open-100000-event-conversation",
"percentile": "p95",
@@ -1873,9 +1873,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "cold-100000-event-encrypted-sqlite",
"eventCount": 100000
@@ -1888,12 +1888,12 @@
"name": "PERF-07",
"unit": "ms",
"n": 10,
- "minimum": 12.3392359999998,
- "median": 15.613979000001564,
- "p90": 16.98489100000006,
- "p95": 18.307356999997864,
- "p99": 18.307356999997864,
- "maximum": 18.307356999997864,
+ "minimum": 12.842043000004196,
+ "median": 14.890056000003824,
+ "p90": 17.089618999998493,
+ "p95": 20.777404000000388,
+ "p99": 20.777404000000388,
+ "maximum": 20.777404000000388,
"target": {
"metric": "resize-during-stream-frame",
"percentile": "p95",
@@ -1902,9 +1902,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "40x12,80x24,120x40,200x60",
"database": "packed headless 100-events-per-second stream",
"eventCount": 42
@@ -1931,9 +1931,9 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
- "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
+ "terminal": "node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.3",
"dimensions": "80x24",
"database": "deterministic-offline-fixture-idle",
"eventCount": 0
@@ -1946,12 +1946,12 @@
"name": "PERF-09",
"unit": "MiB RSS",
"n": 1,
- "minimum": 86.765625,
- "median": 86.765625,
- "p90": 86.765625,
- "p95": 86.765625,
- "p99": 86.765625,
- "maximum": 86.765625,
+ "minimum": 111.84375,
+ "median": 111.84375,
+ "p90": 111.84375,
+ "p95": 111.84375,
+ "p99": 111.84375,
+ "maximum": 111.84375,
"target": {
"metric": "resident-memory-10000-event-conversation",
"percentile": "p95",
@@ -1960,8 +1960,8 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"terminal": "packed production view model; child process RSS",
"dimensions": "80x24",
"database": "warm-10000-event-encrypted-sqlite",
@@ -1989,8 +1989,8 @@
},
"environment": {
"machine": "drew-GTR-Pro (AMD RYZEN AI MAX+ 395 w/ Radeon 8060S; x64; 32 logical CPUs)",
- "os": "linux 7.0.0-28-generic",
- "node": "v24.13.0",
+ "os": "linux 7.0.0-30-generic",
+ "node": "v24.18.0",
"terminal": "none; packed production encrypted SQLite artifacts",
"dimensions": "none",
"database": "cold-10000-event-encrypted-sqlite",
diff --git a/artifacts/verification/w6/120x40-plain.txt b/artifacts/verification/w6/120x40-plain.txt
index 894047a..987fcf6 100644
--- a/artifacts/verification/w6/120x40-plain.txt
+++ b/artifacts/verification/w6/120x40-plain.txt
@@ -1,4 +1,4 @@
-Braid ready — /home/drew/code/.worktrees/braid-exact-interactive-20260816
+Braid ready — /home/drew/code/.worktrees/braid-keyboard-flow-fix
status: ready for a message
conversation: New conversation; branch: branch-1
profile: Braid starter; runner: pi; connection: deterministic fixture
@@ -6,7 +6,7 @@ appearance: none; high contrast off; reduced motion off
event 2: draft.changed; status: ready for a message
event 3: run.requested; status: admitted: W6 plain proof
event 4: effect.upserted; status: streaming
-event 5: run.provider.event; status: streaming: {"type":"backend_start","task":{"id":"turn-f464b334-bc5f-406b-aed7-ac801fbd20e3","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:f75eb08b6c6a3120e5297421baed1e5e2553899395ec5981e0fda4c9ce725300"}}},"session":{"id":"05bb45e5-a6c1-40e3-b260-359bc2bd56c2","backend":"executor","status":"active","createdAt":"2026-08-16T11:04:57.315Z","updatedAt":"2026-08-16T11:04:57.315Z","metadata":"[unavailable]"},"
+event 5: run.provider.event; status: streaming: {"type":"backend_start","task":{"id":"turn-65367645-2b6b-46ae-a6c2-4603a5b288f8","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:d36c141186589fc69f020dd03cda71443909176c6bbf640d87724c3ad0297c66"}}},"session":{"id":"47f133db-f726-48c9-baf1-703b9a04a47a","backend":"executor","status":"active","createdAt":"2026-08-30T01:57:41.242Z","updatedAt":"2026-08-30T01:57:41.242Z","metadata":"[unavailable]"},"
event 6: run.usage; status: streaming
event 7: run.artifact; status: streaming: agent-turn-result
event 8: run.finished; status: completed: Fixture response through pi: W6 plain proof
diff --git a/artifacts/verification/w6/120x40.png b/artifacts/verification/w6/120x40.png
index e418aa0..3e9079a 100644
Binary files a/artifacts/verification/w6/120x40.png and b/artifacts/verification/w6/120x40.png differ
diff --git a/artifacts/verification/w6/120x40.txt b/artifacts/verification/w6/120x40.txt
index ada10dc..e6e377a 100644
--- a/artifacts/verification/w6/120x40.txt
+++ b/artifacts/verification/w6/120x40.txt
@@ -37,4 +37,4 @@
─────────────────────────────────── type / for commands · Alt+Enter newline · paste ────────────────────────────────────
-profile Braid starter · pi · local Ctrl+E details
+profile Braid starter · runner pi · backend local Ctrl+E details
diff --git a/artifacts/verification/w6/200x60-plain.txt b/artifacts/verification/w6/200x60-plain.txt
index 894047a..987fcf6 100644
--- a/artifacts/verification/w6/200x60-plain.txt
+++ b/artifacts/verification/w6/200x60-plain.txt
@@ -1,4 +1,4 @@
-Braid ready — /home/drew/code/.worktrees/braid-exact-interactive-20260816
+Braid ready — /home/drew/code/.worktrees/braid-keyboard-flow-fix
status: ready for a message
conversation: New conversation; branch: branch-1
profile: Braid starter; runner: pi; connection: deterministic fixture
@@ -6,7 +6,7 @@ appearance: none; high contrast off; reduced motion off
event 2: draft.changed; status: ready for a message
event 3: run.requested; status: admitted: W6 plain proof
event 4: effect.upserted; status: streaming
-event 5: run.provider.event; status: streaming: {"type":"backend_start","task":{"id":"turn-f464b334-bc5f-406b-aed7-ac801fbd20e3","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:f75eb08b6c6a3120e5297421baed1e5e2553899395ec5981e0fda4c9ce725300"}}},"session":{"id":"05bb45e5-a6c1-40e3-b260-359bc2bd56c2","backend":"executor","status":"active","createdAt":"2026-08-16T11:04:57.315Z","updatedAt":"2026-08-16T11:04:57.315Z","metadata":"[unavailable]"},"
+event 5: run.provider.event; status: streaming: {"type":"backend_start","task":{"id":"turn-65367645-2b6b-46ae-a6c2-4603a5b288f8","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:d36c141186589fc69f020dd03cda71443909176c6bbf640d87724c3ad0297c66"}}},"session":{"id":"47f133db-f726-48c9-baf1-703b9a04a47a","backend":"executor","status":"active","createdAt":"2026-08-30T01:57:41.242Z","updatedAt":"2026-08-30T01:57:41.242Z","metadata":"[unavailable]"},"
event 6: run.usage; status: streaming
event 7: run.artifact; status: streaming: agent-turn-result
event 8: run.finished; status: completed: Fixture response through pi: W6 plain proof
diff --git a/artifacts/verification/w6/200x60.png b/artifacts/verification/w6/200x60.png
index 0f26604..98674ad 100644
Binary files a/artifacts/verification/w6/200x60.png and b/artifacts/verification/w6/200x60.png differ
diff --git a/artifacts/verification/w6/200x60.txt b/artifacts/verification/w6/200x60.txt
index 17a093c..ea826f5 100644
--- a/artifacts/verification/w6/200x60.txt
+++ b/artifacts/verification/w6/200x60.txt
@@ -57,4 +57,4 @@
─────────────────────────────────────────────────────────────────────────── type / for commands · Alt+Enter newline · paste ────────────────────────────────────────────────────────────────────────────
-profile Braid starter · pi · local Ctrl+E details
+profile Braid starter · runner pi · backend local Ctrl+E details
diff --git a/artifacts/verification/w6/40x12-plain.txt b/artifacts/verification/w6/40x12-plain.txt
index 894047a..987fcf6 100644
--- a/artifacts/verification/w6/40x12-plain.txt
+++ b/artifacts/verification/w6/40x12-plain.txt
@@ -1,4 +1,4 @@
-Braid ready — /home/drew/code/.worktrees/braid-exact-interactive-20260816
+Braid ready — /home/drew/code/.worktrees/braid-keyboard-flow-fix
status: ready for a message
conversation: New conversation; branch: branch-1
profile: Braid starter; runner: pi; connection: deterministic fixture
@@ -6,7 +6,7 @@ appearance: none; high contrast off; reduced motion off
event 2: draft.changed; status: ready for a message
event 3: run.requested; status: admitted: W6 plain proof
event 4: effect.upserted; status: streaming
-event 5: run.provider.event; status: streaming: {"type":"backend_start","task":{"id":"turn-f464b334-bc5f-406b-aed7-ac801fbd20e3","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:f75eb08b6c6a3120e5297421baed1e5e2553899395ec5981e0fda4c9ce725300"}}},"session":{"id":"05bb45e5-a6c1-40e3-b260-359bc2bd56c2","backend":"executor","status":"active","createdAt":"2026-08-16T11:04:57.315Z","updatedAt":"2026-08-16T11:04:57.315Z","metadata":"[unavailable]"},"
+event 5: run.provider.event; status: streaming: {"type":"backend_start","task":{"id":"turn-65367645-2b6b-46ae-a6c2-4603a5b288f8","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:d36c141186589fc69f020dd03cda71443909176c6bbf640d87724c3ad0297c66"}}},"session":{"id":"47f133db-f726-48c9-baf1-703b9a04a47a","backend":"executor","status":"active","createdAt":"2026-08-30T01:57:41.242Z","updatedAt":"2026-08-30T01:57:41.242Z","metadata":"[unavailable]"},"
event 6: run.usage; status: streaming
event 7: run.artifact; status: streaming: agent-turn-result
event 8: run.finished; status: completed: Fixture response through pi: W6 plain proof
diff --git a/artifacts/verification/w6/40x12.png b/artifacts/verification/w6/40x12.png
index 641f580..90c8ba9 100644
Binary files a/artifacts/verification/w6/40x12.png and b/artifacts/verification/w6/40x12.png differ
diff --git a/artifacts/verification/w6/40x12.txt b/artifacts/verification/w6/40x12.txt
index 405a593..95698d8 100644
--- a/artifacts/verification/w6/40x12.txt
+++ b/artifacts/verification/w6/40x12.txt
@@ -8,5 +8,5 @@
› new message
- type / for commands · Alt+Enter newlin…
+─── type / for commands · Alt+Enter ────
Braid starter
diff --git a/artifacts/verification/w6/80x24-automation.gif b/artifacts/verification/w6/80x24-automation.gif
index f8ab8b1..a8240a0 100644
Binary files a/artifacts/verification/w6/80x24-automation.gif and b/artifacts/verification/w6/80x24-automation.gif differ
diff --git a/artifacts/verification/w6/80x24-plain.txt b/artifacts/verification/w6/80x24-plain.txt
index 894047a..987fcf6 100644
--- a/artifacts/verification/w6/80x24-plain.txt
+++ b/artifacts/verification/w6/80x24-plain.txt
@@ -1,4 +1,4 @@
-Braid ready — /home/drew/code/.worktrees/braid-exact-interactive-20260816
+Braid ready — /home/drew/code/.worktrees/braid-keyboard-flow-fix
status: ready for a message
conversation: New conversation; branch: branch-1
profile: Braid starter; runner: pi; connection: deterministic fixture
@@ -6,7 +6,7 @@ appearance: none; high contrast off; reduced motion off
event 2: draft.changed; status: ready for a message
event 3: run.requested; status: admitted: W6 plain proof
event 4: effect.upserted; status: streaming
-event 5: run.provider.event; status: streaming: {"type":"backend_start","task":{"id":"turn-f464b334-bc5f-406b-aed7-ac801fbd20e3","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:f75eb08b6c6a3120e5297421baed1e5e2553899395ec5981e0fda4c9ce725300"}}},"session":{"id":"05bb45e5-a6c1-40e3-b260-359bc2bd56c2","backend":"executor","status":"active","createdAt":"2026-08-16T11:04:57.315Z","updatedAt":"2026-08-16T11:04:57.315Z","metadata":"[unavailable]"},"
+event 5: run.provider.event; status: streaming: {"type":"backend_start","task":{"id":"turn-65367645-2b6b-46ae-a6c2-4603a5b288f8","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:d36c141186589fc69f020dd03cda71443909176c6bbf640d87724c3ad0297c66"}}},"session":{"id":"47f133db-f726-48c9-baf1-703b9a04a47a","backend":"executor","status":"active","createdAt":"2026-08-30T01:57:41.242Z","updatedAt":"2026-08-30T01:57:41.242Z","metadata":"[unavailable]"},"
event 6: run.usage; status: streaming
event 7: run.artifact; status: streaming: agent-turn-result
event 8: run.finished; status: completed: Fixture response through pi: W6 plain proof
diff --git a/artifacts/verification/w6/80x24-transcript-keyboard.gif b/artifacts/verification/w6/80x24-transcript-keyboard.gif
index 3c3300d..0c8ef17 100644
Binary files a/artifacts/verification/w6/80x24-transcript-keyboard.gif and b/artifacts/verification/w6/80x24-transcript-keyboard.gif differ
diff --git a/artifacts/verification/w6/80x24.png b/artifacts/verification/w6/80x24.png
index abc5e8b..c31ab42 100644
Binary files a/artifacts/verification/w6/80x24.png and b/artifacts/verification/w6/80x24.png differ
diff --git a/artifacts/verification/w6/80x24.txt b/artifacts/verification/w6/80x24.txt
index 09acd77..7758262 100644
--- a/artifacts/verification/w6/80x24.txt
+++ b/artifacts/verification/w6/80x24.txt
@@ -20,5 +20,5 @@
› new message
-─────────────── type / for commands · Alt+Enter newline · paste ────────────────
+─────────────────── type / for commands · Alt+Enter · paste ────────────────────
profile Braid starter · pi · via local Ctrl+E details
diff --git a/artifacts/verification/w6/capture-manifest.json b/artifacts/verification/w6/capture-manifest.json
index c86cf5e..440692f 100644
--- a/artifacts/verification/w6/capture-manifest.json
+++ b/artifacts/verification/w6/capture-manifest.json
@@ -1,21 +1,21 @@
{
"schemaVersion": 3,
- "generatedAt": "2026-08-16T11:05:49.322Z",
+ "generatedAt": "2026-08-30T01:58:27.105Z",
"command": "pnpm capture:visual",
"binary": "clean npm install from generated tarball",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1",
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7",
"stateFixture": "deterministic",
"liveDemoCommand": "pnpm capture:demo:live",
"terminal": "node-pty/xterm-256color",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -39,6 +39,18 @@
"80x24-transcript-keyboard.gif"
]
},
+ "multiRunFlow": {
+ "steps": [
+ "start run A",
+ "create conversation B while A remains active",
+ "start run B",
+ "open Activity",
+ "switch focus to run A"
+ ],
+ "artifacts": [
+ "80x24-multirun.gif"
+ ]
+ },
"states": [
{
"name": "command-palette-40",
@@ -100,6 +112,30 @@
"png": "states/active-streaming.png"
}
},
+ {
+ "name": "multi-run",
+ "columns": 80,
+ "rows": 24,
+ "artifacts": {
+ "semantic-state": "states/multi-run.json",
+ "plain-frame": "states/multi-run.txt",
+ "asciicast": "raw/multi-run.cast",
+ "ansi": "states/multi-run.ansi",
+ "png": "states/multi-run.png"
+ }
+ },
+ {
+ "name": "supervision",
+ "columns": 80,
+ "rows": 24,
+ "artifacts": {
+ "semantic-state": "states/supervision.json",
+ "plain-frame": "states/supervision.txt",
+ "asciicast": "raw/supervision.cast",
+ "ansi": "states/supervision.ansi",
+ "png": "states/supervision.png"
+ }
+ },
{
"name": "interaction",
"columns": 80,
@@ -212,91 +248,91 @@
"artifacts": [
{
"path": "40x12.txt",
- "sha256": "c6a6ebafdf8ab2cab97231bfa0cd20393e97cda253f5e2bb4486d1a2aa5e0841",
+ "sha256": "03b7afba96d928ce9f94f8b811713870849861e9bc8e55fd876a743d35d8c4f4",
"kind": "terminal-frame",
"columns": 40,
"rows": 12
},
{
"path": "40x12-plain.txt",
- "sha256": "b4eba68d5db2676629a7d6004f556f308eb3c6617e3b60c38e6526c3f9f6de37",
+ "sha256": "f6738d2d40b7b3f04c64809530ae99cbdce7b701ef2c02eb5a04da99cc8a7924",
"kind": "plain-frame",
"columns": 40,
"rows": 12
},
{
"path": "40x12.png",
- "sha256": "34b7dd57b9553776c55a6ed3436a33d4244a6151ca961890ebc9d563611b3b92",
+ "sha256": "4be490c7924cc119db0511d0edd59c703354552f1e81b72e6aff132bd9302ae7",
"kind": "png",
"columns": 40,
"rows": 12
},
{
"path": "80x24.txt",
- "sha256": "d4b59289ce1b65a414b2ec51bf7594f83edfbcc0ad998121dc464c06bdb3bad5",
+ "sha256": "7316e8015b0feb1f0156db963c1172281aee781c54397f51df0d48a66fce8a69",
"kind": "terminal-frame",
"columns": 80,
"rows": 24
},
{
"path": "80x24-plain.txt",
- "sha256": "b4eba68d5db2676629a7d6004f556f308eb3c6617e3b60c38e6526c3f9f6de37",
+ "sha256": "f6738d2d40b7b3f04c64809530ae99cbdce7b701ef2c02eb5a04da99cc8a7924",
"kind": "plain-frame",
"columns": 80,
"rows": 24
},
{
"path": "80x24.png",
- "sha256": "8b07e737fd294887162f6ae0a218a8fb255f6221c2f01d6871cf6180dcdeaa9d",
+ "sha256": "21580d87d315f4010eccb04ded27650a1fbd2a2aa096a006f2b5e9fac4ac3188",
"kind": "png",
"columns": 80,
"rows": 24
},
{
"path": "120x40.txt",
- "sha256": "894fa2870be18d8f92ca2a5612f4825ffab0e893d5ead743b97d79ae13226688",
+ "sha256": "58c75392e4b48a12a9e91f419da5d1d4454ea0419c6cb2dae6a245ec1713cb17",
"kind": "terminal-frame",
"columns": 120,
"rows": 40
},
{
"path": "120x40-plain.txt",
- "sha256": "b4eba68d5db2676629a7d6004f556f308eb3c6617e3b60c38e6526c3f9f6de37",
+ "sha256": "f6738d2d40b7b3f04c64809530ae99cbdce7b701ef2c02eb5a04da99cc8a7924",
"kind": "plain-frame",
"columns": 120,
"rows": 40
},
{
"path": "120x40.png",
- "sha256": "d2cb656a14f115efc5efe57bea8412561f43100266a297397cfe9ebcaae30ec4",
+ "sha256": "43466897b66b8d849528dc6503553112da5ff98b094062937a08977fc218ac5e",
"kind": "png",
"columns": 120,
"rows": 40
},
{
"path": "200x60.txt",
- "sha256": "b9e8a5c5e75f5059327e2fcdb22c746e2ddcf0c1e54a5e66745245b3f78fa0e6",
+ "sha256": "d60a1a7b676877e1c00a2c22fedeecc8b1ea7b3dd06040802af722ab28cd3166",
"kind": "terminal-frame",
"columns": 200,
"rows": 60
},
{
"path": "200x60-plain.txt",
- "sha256": "b4eba68d5db2676629a7d6004f556f308eb3c6617e3b60c38e6526c3f9f6de37",
+ "sha256": "f6738d2d40b7b3f04c64809530ae99cbdce7b701ef2c02eb5a04da99cc8a7924",
"kind": "plain-frame",
"columns": 200,
"rows": 60
},
{
"path": "200x60.png",
- "sha256": "e4ca0f0f779b4d98f247d48e0cba901f3c9086bfb2ed1dd0e311226999f5d203",
+ "sha256": "84a3e39e6c8ee10a0e79dd4e335e0f2aea9cf8cfd516817ae9b3856958e09906",
"kind": "png",
"columns": 200,
"rows": 60
},
{
"path": "states/command-palette-40.json",
- "sha256": "5c27b2bd2250517fbe6c2fc421901501f30eb92f6630e2e44d63b899a5b8ac53",
+ "sha256": "0be6083e4b654bde73269982e088495e945d34d2dab50929b35de4e84b072d8e",
"kind": "semantic-state",
"state": "command-palette-40",
"columns": 40,
@@ -304,7 +340,7 @@
},
{
"path": "states/command-palette-40.txt",
- "sha256": "602384fa133295eed00b640cb694a874b45ed14eb7e3ee6a784734a4f3c8fce9",
+ "sha256": "051c6cf635332e6fcf7f5883b3e49c9736d8eb32cef1c9b0121f510d254b28a4",
"kind": "plain-frame",
"state": "command-palette-40",
"columns": 40,
@@ -312,7 +348,7 @@
},
{
"path": "raw/command-palette-40.cast",
- "sha256": "74813c066cfffadfa226c084ecf40d2486afc538e8b252c5eb62af84b394c23e",
+ "sha256": "48f43d5ffab94acb4776e0854cfadc759bbd6c69b5792a6b0c1977c1adbbda28",
"kind": "asciicast",
"state": "command-palette-40",
"columns": 40,
@@ -320,7 +356,7 @@
},
{
"path": "states/command-palette-40.ansi",
- "sha256": "f2d05698de52c9657177427374a713441d384b541744fb47f131cf08a6892d59",
+ "sha256": "4a1bf884d4773f44dd243f81ef778d1540cc7f9fa94bec4bb6a074b43d211bad",
"kind": "ansi",
"state": "command-palette-40",
"columns": 40,
@@ -328,7 +364,7 @@
},
{
"path": "states/command-palette-40.png",
- "sha256": "c309e1dcdcd0edca774cdcdc0dcd7d0b350b6711df057a0149b8bff7afac5895",
+ "sha256": "dd738b530c4396c7331d5e2d7c8a293b06f607bfbe18d575f78f025b2771974f",
"kind": "png",
"state": "command-palette-40",
"columns": 40,
@@ -336,7 +372,7 @@
},
{
"path": "states/command-palette-80.json",
- "sha256": "ccdcf1b381de74a8fb493314661a3903083c59c00effd8f4beefc1d9e501e459",
+ "sha256": "999f89767981b760e4aec43f681117709b078dffee21aec99020aa71e4b88504",
"kind": "semantic-state",
"state": "command-palette-80",
"columns": 80,
@@ -344,7 +380,7 @@
},
{
"path": "states/command-palette-80.txt",
- "sha256": "071efa2fab24affd8ad916f750e1663dee47a7d084b1109b1beaace3fea0aac9",
+ "sha256": "0f870966dfbe08cf0d32f3725f66b604664073b7320e596291dd27c34c2de675",
"kind": "plain-frame",
"state": "command-palette-80",
"columns": 80,
@@ -352,7 +388,7 @@
},
{
"path": "raw/command-palette-80.cast",
- "sha256": "90dba750a60144776b3e0a9c21e0f637adffe7676028382a811266733e4b2c5b",
+ "sha256": "6f1ca089e21062fda27b4062b0a21edc2e900dcb423973c832670eaa3574547f",
"kind": "asciicast",
"state": "command-palette-80",
"columns": 80,
@@ -360,7 +396,7 @@
},
{
"path": "states/command-palette-80.ansi",
- "sha256": "d26c61c53da5a44072602e3588dd46b9388c35da18618ee4759c20e0921cccc1",
+ "sha256": "89498b1a701a8990585e385cf3ba2aa19354bcd68e27c3b8fbd5eb97e13ff615",
"kind": "ansi",
"state": "command-palette-80",
"columns": 80,
@@ -368,7 +404,7 @@
},
{
"path": "states/command-palette-80.png",
- "sha256": "1271f15c60ceb8ec89cdae9c62978cc584696daefb55eeb9e93eea24f8987ef2",
+ "sha256": "dc6cf9d8c40b6adcd347e0f4e8efff5a8bba5bb09843733cd7c9806dc7aee1e4",
"kind": "png",
"state": "command-palette-80",
"columns": 80,
@@ -376,7 +412,7 @@
},
{
"path": "states/command-palette-120.json",
- "sha256": "b8a15b79b21d7c0c4d6217a1b44e2b502516e48048f05b8a6a9aef59d1b57448",
+ "sha256": "2b17900ea7b132768652acd648587bddf1bbb0476de34e423aec99a55c3d191f",
"kind": "semantic-state",
"state": "command-palette-120",
"columns": 120,
@@ -384,7 +420,7 @@
},
{
"path": "states/command-palette-120.txt",
- "sha256": "5cf0994eafd3560f613040a745867cc99cb43a28ceb42e1c9d1a45f568d62655",
+ "sha256": "cc7b41da10b8b5746447069352b7235e51ce058068527a8cd95c1fba0d5c87e2",
"kind": "plain-frame",
"state": "command-palette-120",
"columns": 120,
@@ -392,7 +428,7 @@
},
{
"path": "raw/command-palette-120.cast",
- "sha256": "a8900525607d24ef8eae6e76fdf3a80e79b258e2491d5596f515ef6625c12f87",
+ "sha256": "259760eb0f8d7bbcd206dd948618a3820217b68616137df2acc7783cabb04e08",
"kind": "asciicast",
"state": "command-palette-120",
"columns": 120,
@@ -400,7 +436,7 @@
},
{
"path": "states/command-palette-120.ansi",
- "sha256": "a8daac8e89b2e3485574aae55b83b3a8c9caad0336e4de0fbced1ede57adaf0b",
+ "sha256": "000bdc1eb2836b9f85f11ef378df014810e3b5e7e12d1eaf58acb218e612d586",
"kind": "ansi",
"state": "command-palette-120",
"columns": 120,
@@ -408,7 +444,7 @@
},
{
"path": "states/command-palette-120.png",
- "sha256": "11a66bf2fc2137005b19dcbf2a371abaecfc1dd736617ee9c47321daa6881984",
+ "sha256": "2c3dac0a3b15babf42d4e2feea036d4e6a2a0fe4ff84ce0d3e0cf861f9557adf",
"kind": "png",
"state": "command-palette-120",
"columns": 120,
@@ -416,7 +452,7 @@
},
{
"path": "states/empty.json",
- "sha256": "cb4e42b58931992624f32f601210c61ac26b9bf5fe74200b6cc747d23f61d8f0",
+ "sha256": "032d8fb7fc50bbb1ddfe81d57f351a4b19fd9030e0696d94380339746e10208f",
"kind": "semantic-state",
"state": "empty",
"columns": 80,
@@ -424,7 +460,7 @@
},
{
"path": "states/empty.txt",
- "sha256": "08ff2f6bf30820c2c1e3046b2ebf08b2184464083f876ee75321f3f94b57041f",
+ "sha256": "88960c4f75b37fb7036c9701a7b714118ca14549efff7645ed074a375d35a3de",
"kind": "plain-frame",
"state": "empty",
"columns": 80,
@@ -432,7 +468,7 @@
},
{
"path": "raw/empty.cast",
- "sha256": "89171ef20fb8012225e74af1b7e7e4b33c44acfecefb648f73bd98a839775165",
+ "sha256": "0ab9ba958f5d7f0e09a34805c6524b5be4153ee8dc1d322c9c3a5b0110fd16a5",
"kind": "asciicast",
"state": "empty",
"columns": 80,
@@ -440,7 +476,7 @@
},
{
"path": "states/empty.ansi",
- "sha256": "9bc7c615c17e48643071466dfe4c3da3fed94a908e2e901a4be24f484da647c7",
+ "sha256": "de80c2a0fbaec53ceecd1bc6cd5e22f63a7627983bd5fe7f609fabcb9dbace39",
"kind": "ansi",
"state": "empty",
"columns": 80,
@@ -448,7 +484,7 @@
},
{
"path": "states/empty.png",
- "sha256": "ca2ae68ed2e75b5c2f9db65f60f4e0cea048ce146d87b74287069729576d3dfd",
+ "sha256": "8e153b8bed8dfac8521a2b2cf55d605d302257418d7a4007bdbaebf9fc7306a9",
"kind": "png",
"state": "empty",
"columns": 80,
@@ -456,7 +492,7 @@
},
{
"path": "states/active-streaming.json",
- "sha256": "5d517f31a384c6c60fe76afc7c221ef34d597b1fa8e8369285b97583ad120306",
+ "sha256": "f232dbcca8a358baf49eba2201d2f6e9984bd84193bf070f809c11a8d9572ab4",
"kind": "semantic-state",
"state": "active-streaming",
"columns": 80,
@@ -464,7 +500,7 @@
},
{
"path": "states/active-streaming.txt",
- "sha256": "24aa14b3ba64753421a08d51382ace0829a893912ec6774d6792cac369d11e0d",
+ "sha256": "b4c005263e3ff166d9974a0855be23a96b9076a611432ca6909e07f4caa2bdaf",
"kind": "plain-frame",
"state": "active-streaming",
"columns": 80,
@@ -472,7 +508,7 @@
},
{
"path": "raw/active-streaming.cast",
- "sha256": "1a5b49eb7e6ea678b8c773e6655dd9e9e8ba610a4569b482204d67aaff0fc6c4",
+ "sha256": "70ea4486d0402e11f402ea67b98d670801b2ccd6d1dbece3d22071b6b26b5ae7",
"kind": "asciicast",
"state": "active-streaming",
"columns": 80,
@@ -480,7 +516,7 @@
},
{
"path": "states/active-streaming.ansi",
- "sha256": "bc85b2a0a8d4a819d56ce517831de708f16608c1679f52b331453c733062b8c1",
+ "sha256": "3da9013952f7c12a97464accad9c32d49e5726de2c8931e34763ec2fbd20c0b4",
"kind": "ansi",
"state": "active-streaming",
"columns": 80,
@@ -488,15 +524,95 @@
},
{
"path": "states/active-streaming.png",
- "sha256": "4caf2c408d06ebd44f24a9fe3fd06f16d6bcb201ef6eeee4a8c9b5fb53a89dd9",
+ "sha256": "04a93a58783b6c4aa5a30f80ced64cd0480271bf23fb91f60252a301d355ef74",
"kind": "png",
"state": "active-streaming",
"columns": 80,
"rows": 24
},
+ {
+ "path": "states/multi-run.json",
+ "sha256": "8433d90b0afcc439f343ba1e14ba24531982aa3d6ab447d98d4f05588348f590",
+ "kind": "semantic-state",
+ "state": "multi-run",
+ "columns": 80,
+ "rows": 24
+ },
+ {
+ "path": "states/multi-run.txt",
+ "sha256": "36b0587c50d807d83fc2cecaa1f31f90809019448d88a4e6033a347e99ff6be5",
+ "kind": "plain-frame",
+ "state": "multi-run",
+ "columns": 80,
+ "rows": 24
+ },
+ {
+ "path": "raw/multi-run.cast",
+ "sha256": "460d24038fa54a66beb3c22f6b8708aea9c01a890e8bc324f7064461195b6b24",
+ "kind": "asciicast",
+ "state": "multi-run",
+ "columns": 80,
+ "rows": 24
+ },
+ {
+ "path": "states/multi-run.ansi",
+ "sha256": "1717494819d35fd929583b425e82668f0fcefe4e5f99fcc5ded6b67c14bb1476",
+ "kind": "ansi",
+ "state": "multi-run",
+ "columns": 80,
+ "rows": 24
+ },
+ {
+ "path": "states/multi-run.png",
+ "sha256": "02339b72433be97fdc030478529f218c7384eb5d041648e50e0823b1f28f2409",
+ "kind": "png",
+ "state": "multi-run",
+ "columns": 80,
+ "rows": 24
+ },
+ {
+ "path": "states/supervision.json",
+ "sha256": "24d4cc6a0fd3f941403ebd02ab8df4343af0fa5bfafdbaa14ce54d35f5c8f095",
+ "kind": "semantic-state",
+ "state": "supervision",
+ "columns": 80,
+ "rows": 24
+ },
+ {
+ "path": "states/supervision.txt",
+ "sha256": "6b737edd232bfd5dfe8392bce4a0cd44eeb2a2c6209c93f53b6dff9946af688a",
+ "kind": "plain-frame",
+ "state": "supervision",
+ "columns": 80,
+ "rows": 24
+ },
+ {
+ "path": "raw/supervision.cast",
+ "sha256": "ed769f8e1a6efbf0e53a0662e2936d571dac6f6360565f07ca5b3570fe0d265e",
+ "kind": "asciicast",
+ "state": "supervision",
+ "columns": 80,
+ "rows": 24
+ },
+ {
+ "path": "states/supervision.ansi",
+ "sha256": "609fdfbddfa529d94f108bcba91f3a9563d4b7be79d20be02b0646d5eb3eacb1",
+ "kind": "ansi",
+ "state": "supervision",
+ "columns": 80,
+ "rows": 24
+ },
+ {
+ "path": "states/supervision.png",
+ "sha256": "a8bd4cd852ecb2142ee3c4c7dcbc6c890379add160d827d95e9f013b8f5213e0",
+ "kind": "png",
+ "state": "supervision",
+ "columns": 80,
+ "rows": 24
+ },
{
"path": "states/interaction.json",
- "sha256": "5c580d158ad16f57ece76bc277f5e8da436c54e71f71be5c8c5649d1994bfbf3",
+ "sha256": "1f207085bc0974b5020bbf5b857ff60a296572dc6bdf923ce8cfa38d7200b7d9",
"kind": "semantic-state",
"state": "interaction",
"columns": 80,
@@ -512,7 +628,7 @@
},
{
"path": "raw/interaction.cast",
- "sha256": "c6ee4036e3b085b7f645c481726e5953a97c6648689db02b55422d80e4ea5ade",
+ "sha256": "a3d95fa21515c8608fbb39c298c3c2d1eb74cf4b98e083f965517643f740bd3a",
"kind": "asciicast",
"state": "interaction",
"columns": 80,
@@ -520,7 +636,7 @@
},
{
"path": "states/interaction.ansi",
- "sha256": "d978d6566b75e14b7d4581cb9f9f42396d452efb1341891621ffd68446cfca9d",
+ "sha256": "c49d758dac4fc4d97ef17708abb1634a945aae5098cada80ed6b2476b1710fcd",
"kind": "ansi",
"state": "interaction",
"columns": 80,
@@ -528,7 +644,7 @@
},
{
"path": "states/interaction.png",
- "sha256": "0f898e22a9e713e1efdb9b265568820c22cf218b4ab400bae67040a119f26efc",
+ "sha256": "b8a819550cfc520f5c16aab2372211ad9d18794b3b0d6e5563eec6379ae8ff98",
"kind": "png",
"state": "interaction",
"columns": 80,
@@ -536,7 +652,7 @@
},
{
"path": "states/automation.json",
- "sha256": "224622e910643bc235d06e58297575875520e00acf6c5066fd0f18250b3c38ec",
+ "sha256": "1f8338093c08cf703e2f3bc171a7037a39eaceaf8a4b3ce7ea2de5bc03b02891",
"kind": "semantic-state",
"state": "automation",
"columns": 80,
@@ -552,7 +668,7 @@
},
{
"path": "raw/automation.cast",
- "sha256": "740c3166a5396a4802cc79a96773dfbbde8c224636f0d7ecc5312084c22f87b0",
+ "sha256": "d8d4de391af21be4408cb93199e67c0fbc8cd5f780ebc49ca77f5b44b99451eb",
"kind": "asciicast",
"state": "automation",
"columns": 80,
@@ -560,7 +676,7 @@
},
{
"path": "states/automation.ansi",
- "sha256": "daaa5df4c97b17ba28b6eacbf9b2df647f991357d246091fefc46f4a056209bd",
+ "sha256": "66d2b98519ab6b8b229794f80adfd9a74777276499d82350279632a48a699d04",
"kind": "ansi",
"state": "automation",
"columns": 80,
@@ -568,7 +684,7 @@
},
{
"path": "states/automation.png",
- "sha256": "04cf4e658eb59c8a4685b10045fb4c42b046576d4e5af0fcd8e24a3d1211518d",
+ "sha256": "d8023c1952a6d66a15c2cb1ae3c8ee053520da48121769e7d91d6cf0e3cfdff4",
"kind": "png",
"state": "automation",
"columns": 80,
@@ -576,7 +692,7 @@
},
{
"path": "states/fork-preview.json",
- "sha256": "b0b022cbf9238b93b032dff99bcd1bba9cd38b3747d5801c951be405d3533cda",
+ "sha256": "94374294de2e84dedb620e42c97bfb34b75a79906c5cbc7d49bb08302675ad7c",
"kind": "semantic-state",
"state": "fork-preview",
"columns": 80,
@@ -584,7 +700,7 @@
},
{
"path": "states/fork-preview.txt",
- "sha256": "50255443ac4b8706749cdbcc7e37a082aefaaad32c8ece52be7abe6aad1edcb6",
+ "sha256": "bf3a769b7843aa23421e042c0653f44a2b9810bc72e4c14250a3f84e8b06f5a8",
"kind": "plain-frame",
"state": "fork-preview",
"columns": 80,
@@ -592,7 +708,7 @@
},
{
"path": "raw/fork-preview.cast",
- "sha256": "97827f0a57786bf917f31d0d6f3f036a867fd8b6d31119c2e12378c1c66eee1e",
+ "sha256": "dd4bdf325ead57b2293293c7009f5b128f1a9944e8b6267dba2f22542bc6a086",
"kind": "asciicast",
"state": "fork-preview",
"columns": 80,
@@ -600,7 +716,7 @@
},
{
"path": "states/fork-preview.ansi",
- "sha256": "7d6560dc79aaa38350cb61f61ea4e9005e4866b1a41148312df76237643df36d",
+ "sha256": "b57bd9120c828993340bf5d91dcbb87d635ec406ddb91f90d488eb98334b5983",
"kind": "ansi",
"state": "fork-preview",
"columns": 80,
@@ -608,7 +724,7 @@
},
{
"path": "states/fork-preview.png",
- "sha256": "15e39559a7774e5b44b6c19ea3bfab5566ff90bc5161207b3436bdb7e74ed6c6",
+ "sha256": "0720eb99aac7c8311fe17fb070228aedd23f30cdeca06d4d044a06fcaa22d706",
"kind": "png",
"state": "fork-preview",
"columns": 80,
@@ -616,7 +732,7 @@
},
{
"path": "states/graph-or-analysis.json",
- "sha256": "13d6827d96d105a52f8e609650a1e883c8ac6b258c66f2f1aab89fd97bd4c652",
+ "sha256": "ac62660d394084c6c680871a073450d788e2625394b4fb9d6d346d15b4d3e49a",
"kind": "semantic-state",
"state": "graph-or-analysis",
"columns": 80,
@@ -632,7 +748,7 @@
},
{
"path": "raw/graph-or-analysis.cast",
- "sha256": "43c1968dbc3d5ce4a909a816677c024c38fd10af3b48487c31f30729d011aae7",
+ "sha256": "d14a9cecf7a62c868546be71bb6f5aad81e55e9a77858a2198b85dc7faf369c2",
"kind": "asciicast",
"state": "graph-or-analysis",
"columns": 80,
@@ -640,7 +756,7 @@
},
{
"path": "states/graph-or-analysis.ansi",
- "sha256": "0453b411c8ba4421e88fe8912a2251b9b53ee674379c10316bb750ea5cc91beb",
+ "sha256": "8dffae3bad44b74c817b773a600208072ac8f5a1fd1774e9c10c4d114ddb2b42",
"kind": "ansi",
"state": "graph-or-analysis",
"columns": 80,
@@ -648,7 +764,7 @@
},
{
"path": "states/graph-or-analysis.png",
- "sha256": "228155d434335121ada906c4da860d7c0d81daa78a605215a59ae20a6b0674f2",
+ "sha256": "b2b4afc12c3c5ea0b77ed4f7792ea0f315893796e3e0622d4bbe689412436ed4",
"kind": "png",
"state": "graph-or-analysis",
"columns": 80,
@@ -656,7 +772,7 @@
},
{
"path": "states/analysis.json",
- "sha256": "bebe69c66f8640f4c0d935c558aaf574c5b1c738ccf4aa2fb1502c3ed8a08fde",
+ "sha256": "9ec9d295ab4880e9d415e52bd000483bbb8dc7c034238144a704d55226342569",
"kind": "semantic-state",
"state": "analysis",
"columns": 80,
@@ -664,7 +780,7 @@
},
{
"path": "states/analysis.txt",
- "sha256": "2ec459b6402f320d1b9f1991e3e9572216b3d207db8799e274dfbf56d0d693ea",
+ "sha256": "e038b88f1cf4bc7dbb7cf48f1dd3d62170f1f21f61ffbba5178a66f51aa52a6b",
"kind": "plain-frame",
"state": "analysis",
"columns": 80,
@@ -672,7 +788,7 @@
},
{
"path": "raw/analysis.cast",
- "sha256": "40380b70ef12a5cd9a2a4b4df08c1298c7c17bf8af5314b112417decc46c5efb",
+ "sha256": "95e6669e62d7d6d778a28793bea5aae0d9fdb3a68b2a58512421633a268d71e9",
"kind": "asciicast",
"state": "analysis",
"columns": 80,
@@ -680,7 +796,7 @@
},
{
"path": "states/analysis.ansi",
- "sha256": "a043cf95e099db44b6daa782b9683c3933e66e309391bcf4ede5637c98e9fa1e",
+ "sha256": "db6aeb76bc267dde79a21ca6cc9de8f859ea44c75065c6652570228801cb7197",
"kind": "ansi",
"state": "analysis",
"columns": 80,
@@ -688,7 +804,7 @@
},
{
"path": "states/analysis.png",
- "sha256": "b0d77c88cd27180fe2f9c2a3b82f8c4f6910b402e6066445620735be8fc189d9",
+ "sha256": "b791527c394aeb10e20635b467bfab98b13293a58ebbb4d6245d0852e20bc6f5",
"kind": "png",
"state": "analysis",
"columns": 80,
@@ -696,7 +812,7 @@
},
{
"path": "states/comparison.json",
- "sha256": "043e1fc3b60258b57a6357f9414fdf710a753532079ed8bfa1aee60ae0c998f7",
+ "sha256": "2a1c6893cf09a186f9c15e7a165fcd8a772ebf676f5ac674831ac5cc31a85b91",
"kind": "semantic-state",
"state": "comparison",
"columns": 80,
@@ -704,7 +820,7 @@
},
{
"path": "states/comparison.txt",
- "sha256": "b03447b3bf3ac214b5f0bc739dc50a01f01b5deba258b501e9fc83f525db8a78",
+ "sha256": "ea38ad5ff9f0b7a57ebaf88bc7abd23608c97b0569d2c72a23a392ef88f144f2",
"kind": "plain-frame",
"state": "comparison",
"columns": 80,
@@ -712,7 +828,7 @@
},
{
"path": "raw/comparison.cast",
- "sha256": "b999ba6a713dd400caf1f8628b668a67b4c3102d710fd7ca02b339ddaf7e37c0",
+ "sha256": "3582e3e8796fcf8b190f48d23a3d8c17bffebd7cac53c02af43641c99914a5ca",
"kind": "asciicast",
"state": "comparison",
"columns": 80,
@@ -720,7 +836,7 @@
},
{
"path": "states/comparison.ansi",
- "sha256": "07da7cf3d6e160f36fd85f725760111c070fc9234101716c9cb3135ff6d0b799",
+ "sha256": "cb2f4b4f15ddde18a30d004822a90efa924effeda9128bee7e3133167910219a",
"kind": "ansi",
"state": "comparison",
"columns": 80,
@@ -728,7 +844,7 @@
},
{
"path": "states/comparison.png",
- "sha256": "69d9a11db9864e7f0f2cfa31fbedbe2e1c326c7708ce8ad2ee6798b077244ec1",
+ "sha256": "5c2f3fdb02184b1884d5709776b1a44f88cdfff9a6409e0fce599a8a1156263c",
"kind": "png",
"state": "comparison",
"columns": 80,
@@ -736,7 +852,7 @@
},
{
"path": "states/profile.json",
- "sha256": "7c8b422ab3cb618bc6aca2a9455d5737f66d1395812d35cafaa984cd7622e699",
+ "sha256": "ace9a9d3990233181c0a2f69259952d104f2cda2b98c374eb739833fbf8c080d",
"kind": "semantic-state",
"state": "profile",
"columns": 80,
@@ -744,7 +860,7 @@
},
{
"path": "states/profile.txt",
- "sha256": "25d741a6470f149651a6c7743dd4570a33a5be501678170a23385a4b1f005f3f",
+ "sha256": "739517f84d1e38e9f54e686eacaf0a05b08d01d25d9b2507c6f50ef82696ca70",
"kind": "plain-frame",
"state": "profile",
"columns": 80,
@@ -752,7 +868,7 @@
},
{
"path": "raw/profile.cast",
- "sha256": "216e33d0b15d7eacb809065c3ba4f1a21c6d80026cc085e24e55c8a2ad91803c",
+ "sha256": "0ef5c6e6e726f1cd7108d274866710855aef01724c4d761f6f4f6b065913faa3",
"kind": "asciicast",
"state": "profile",
"columns": 80,
@@ -760,7 +876,7 @@
},
{
"path": "states/profile.ansi",
- "sha256": "8246826589ec2ac40952bb75b9e18d2ea56b7b08d3390127843e96bcdfc086cc",
+ "sha256": "c3e26b310abad6c77acec67b4e8eeb201845ed86e5610c69de7e2ac16ec5e8f3",
"kind": "ansi",
"state": "profile",
"columns": 80,
@@ -768,7 +884,7 @@
},
{
"path": "states/profile.png",
- "sha256": "c3061c68ab192a4518ecc4ae92b385ee5adc791178aaefe0b15d2511562ac254",
+ "sha256": "e489e002fe90431213dddfa02ffcc2c7ffa7ce31ba1152103eeee94c107a8af9",
"kind": "png",
"state": "profile",
"columns": 80,
@@ -776,7 +892,7 @@
},
{
"path": "states/narrow.json",
- "sha256": "6b8ed81e9a68a0fa1af5102550e9f70f71d94a3593a6eb5427b0d3fa282b664e",
+ "sha256": "607492c46a2ff0880d35085d3816af121209473369ba4954c9f1c1140be8472a",
"kind": "semantic-state",
"state": "narrow",
"columns": 40,
@@ -784,7 +900,7 @@
},
{
"path": "states/narrow.txt",
- "sha256": "df26361f3056c15bd93f3a77bd29606b04d52f1294ba2a4d9d14ed75eab558f5",
+ "sha256": "b5d724d41d246bbb9695192e12961a5145d766124271ff8eb5bc3b825085f16f",
"kind": "plain-frame",
"state": "narrow",
"columns": 40,
@@ -792,7 +908,7 @@
},
{
"path": "raw/narrow.cast",
- "sha256": "44dd280999eeaa2c21dfa50fbfdcfd267e38ce0da7c4d0759f92a0a7d472183b",
+ "sha256": "bb5bf8f408ab80ed89f73284f39e7d28fa9cdf99f72efb857849e30d87f66662",
"kind": "asciicast",
"state": "narrow",
"columns": 40,
@@ -800,7 +916,7 @@
},
{
"path": "states/narrow.ansi",
- "sha256": "1361c7b3b857d207c9bbb3f8b4be705d97eabaf2c1df022a33eb9403c60f34b5",
+ "sha256": "cd0bea7f91d925fbd68f9f3d99857613601dc780f578a43c52c7b63c2760fec9",
"kind": "ansi",
"state": "narrow",
"columns": 40,
@@ -808,7 +924,7 @@
},
{
"path": "states/narrow.png",
- "sha256": "a9cd6b6003be8034dfbd1438924c7c4513d684ceff97954e983c96bb9f9ff032",
+ "sha256": "7a3dbc37f30a52afe57951f09bd2db379f3bdcf9f6229c41d3fabcfb354e0834",
"kind": "png",
"state": "narrow",
"columns": 40,
@@ -816,7 +932,7 @@
},
{
"path": "states/failure-or-reconnect.json",
- "sha256": "a8db7dfcc25e3d4d45e4a06f47924ff19d67b7c4e24f245ceefea68b5fd372c7",
+ "sha256": "a459c49dfa17154e20b75780c7f457c1c8edbb753c8991500783f71db298641d",
"kind": "semantic-state",
"state": "failure-or-reconnect",
"columns": 80,
@@ -824,7 +940,7 @@
},
{
"path": "states/failure-or-reconnect.txt",
- "sha256": "b995b865a83e8ae1df59cb81404694422c14b201fae4cec1a33d9347a8c26166",
+ "sha256": "866d7adbc3a7b7c002acccd0feca378a895a1f89089f4463656217432fd2be99",
"kind": "plain-frame",
"state": "failure-or-reconnect",
"columns": 80,
@@ -832,7 +948,7 @@
},
{
"path": "raw/failure-or-reconnect.cast",
- "sha256": "a8e4a4cf1e09de874f86a739f72fd0e63f19cdd24125eed4b41bb24876c18389",
+ "sha256": "051a94cb6c19a4a683e11c9a90d74fc539fbcc448d5e291ac5302263e4269363",
"kind": "asciicast",
"state": "failure-or-reconnect",
"columns": 80,
@@ -840,7 +956,7 @@
},
{
"path": "states/failure-or-reconnect.ansi",
- "sha256": "a4616bcda3d80595bbd0d3630059e1fa4a4df23f9edc6c7076aff5785f62bd7f",
+ "sha256": "1a6a60ac0080c486ed5ad6b6fa47b80d6b3a6d0f328ab85079244467eb08f1f9",
"kind": "ansi",
"state": "failure-or-reconnect",
"columns": 80,
@@ -848,7 +964,7 @@
},
{
"path": "states/failure-or-reconnect.png",
- "sha256": "1437df31f7e0d011d846e01cf67012c5466b2b4dbfd2267a06377aba9ce5b30a",
+ "sha256": "5a431a83ff5392bb23cddbbfc5071595244849bcbfbc8061156758a0df676471",
"kind": "png",
"state": "failure-or-reconnect",
"columns": 80,
@@ -856,29 +972,37 @@
},
{
"path": "80x24-flow.gif",
- "sha256": "2a2a3cb57e17d163c27ff11e00af9b48e64ec6c49589a25758f466e4d7274dd7",
+ "sha256": "1399763ecf0c3faf258de5bbd98acd2c5beb90dd04ef86b976a32bdb2888e2d5",
"kind": "flow",
"columns": 80,
"rows": 24
},
{
"path": "80x24-automation.gif",
- "sha256": "6453b83a25e3d44f28a436209282ed00119334a72d6e2c127b5aa02e97d35e75",
+ "sha256": "78b04b71c3244e051057381adeb6c92c8b2ea22e129ecf8e17de0c3fb868f889",
"kind": "automation-flow",
"state": "automation",
"columns": 80,
"rows": 24
},
+ {
+ "path": "80x24-multirun.gif",
+ "sha256": "5df706e380804174ddfd05c57688065e0903fff3ca8ad7ee4d5dd6262dddb64b",
+ "kind": "multi-run-flow",
+ "state": "multi-run",
+ "columns": 80,
+ "rows": 24
+ },
{
"path": "raw/transcript-keyboard.cast",
- "sha256": "63750f2c24f535e5cfeacf666358746244fa4b3fbbf5a0048b847670dee48b82",
+ "sha256": "d8f07e9bd51fbc0e8f3e43e33409e1ef28a37b25d0adb0093b1261fb5856537a",
"kind": "keyboard-asciicast",
"columns": 80,
"rows": 24
},
{
"path": "80x24-transcript-keyboard.gif",
- "sha256": "a54e70cd45d6095de8696c25c13671308c4760904876e31b4ebbc19de6cd2c7b",
+ "sha256": "408fec6fd99590436ea74313cf4229767fc91cb8f8b4cee97d721c77cdb8fe79",
"kind": "keyboard-flow",
"columns": 80,
"rows": 24
diff --git a/artifacts/verification/w6/package-proof.json b/artifacts/verification/w6/package-proof.json
index aa550da..996f8ff 100644
--- a/artifacts/verification/w6/package-proof.json
+++ b/artifacts/verification/w6/package-proof.json
@@ -1,10 +1,10 @@
{
- "tarball": "tangle-network-braid-0.1.1.tgz",
- "sha256": "9bbd7b5b9f78b3d202dbb09d4375970edfd4965ffc5ad94b04bd7fa6ce01c4c7",
- "version": "0.1.1",
- "gitCommit": "8cce4c6e8aade3b1fc51f558d65a823ac12a5e1a",
- "treeSha256": "43230a9eb82fc93f603a6f3d3996829b3610c265",
- "sourceDigest": "94b73eeb273cbfc5fba6b88b56e6090b812a10c92f459adfef8da18385802dfd",
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "sha256": "2ff0d7cf65eb929cc55b1669821b23c5381f401eb271002c0a16679a450efbe9",
+ "version": "0.3.0",
+ "gitCommit": "515b5af81a69c662713ef4f9a4a5d2d38a906fe6",
+ "treeSha256": "e8dc8ae7d9e68ca1d12a7e8dd547585269dfcd34",
+ "sourceDigest": "f54b865d7e36477b0542bddf8034eedef44ac9f505af776b75282f9bbb2e5919",
"isolatedBuild": true,
"sourceCheckout": "isolated-copy-of-worktree",
"packageFileManifest": {
@@ -17,38 +17,38 @@
},
{
"path": "package/README.md",
- "size": 13851,
- "sha256": "283c26ab5eea55db87f1e6a753a7541e67c0e41519af5fa5c3b83b15b6abd3b7"
+ "size": 17531,
+ "sha256": "b8efadc6585180a2389a49d21d880bc0f17c66654fddf3a01ad29020f41c985f"
},
{
"path": "package/THIRD_PARTY_LICENSES.json",
- "size": 4377,
- "sha256": "326c8d65a2b272a992a7d4d7b500f4617b5c3d54d59dc389f779813bc20f7e19"
+ "size": 4614,
+ "sha256": "54b44a9c890c6162061234159af4286b4655cb91a4c4c9c6f1152c3664c5673e"
},
{
"path": "package/THIRD_PARTY_NOTICES.md",
- "size": 4530,
- "sha256": "eb843989e3fbecd81a4faa5228e828440891cf35eb1ac75d724a3b75a7f8aa58"
+ "size": 5481,
+ "sha256": "478bde66b638361b9c53599b926d4bea8f5e3bc0561a5bf7235cabe24f88984d"
},
{
"path": "package/dist/adapters/agent-interface/harness-runtime.d.ts",
- "size": 1077,
- "sha256": "65206fc50b45849b98c1f8913c9c79bd0fb466b7db8c9b37b3e2f813c929c97e"
+ "size": 1168,
+ "sha256": "0b2a3e09a4de1456c8b7160e8b5732d1e63f953dc3454bbee8282bf64286e6c6"
},
{
"path": "package/dist/adapters/agent-interface/harness-runtime.d.ts.map",
- "size": 403,
- "sha256": "34e2ec6b73e98ddb8c8844fe27f3e83dfdd6eb53bcedb1d1864ac0946e8cc1f6"
+ "size": 461,
+ "sha256": "40856006b04705d81817b357168653e9ede84f900be0487db8aaefc3cf605e40"
},
{
"path": "package/dist/adapters/agent-interface/harness-runtime.js",
- "size": 567,
- "sha256": "bb36615cc8aaa76b19c44ef63b57619db6efbde8016b1d7dd7aa61eaf59078c8"
+ "size": 702,
+ "sha256": "66ece33845b85ad3ca3d7bc699c23ee1f983002519475e413f5f1738ee74d7d1"
},
{
"path": "package/dist/adapters/agent-interface/harness-runtime.js.map",
- "size": 589,
- "sha256": "2f0a1f5c00d1b5d2b08a52dae87d9f1ef67616a02579cd7fe23862be561fa43a"
+ "size": 700,
+ "sha256": "70f944c6ce1232f6f2692ff4e1728f23f8c4d938f13b862eaff928f09ee9a8e2"
},
{
"path": "package/dist/adapters/agent-interface/interaction-runtime.d.ts",
@@ -152,43 +152,43 @@
},
{
"path": "package/dist/adapters/analysis/eval-analyst.d.ts",
- "size": 2214,
- "sha256": "f2d104c63aec10d2b9c17f0051a09315a4f647d3d11666c8ac61da5f8bc39151"
+ "size": 2404,
+ "sha256": "6d5442527a98fb799021b3855293a4d4d2d4b1e19448aea942cff143fee6fb60"
},
{
"path": "package/dist/adapters/analysis/eval-analyst.d.ts.map",
- "size": 1832,
- "sha256": "3ba42627a404e09a96b1e9eeb921faf41de8a10064ef7cf9020bb5919e7cef8e"
+ "size": 1989,
+ "sha256": "9eda24e77c4353fcdb1d5c3de81fad4447ad48dbfc03e7936046273306ba487c"
},
{
"path": "package/dist/adapters/analysis/eval-analyst.js",
- "size": 5656,
- "sha256": "882caaf5f3bef4a6e2d1ac64511d7e9189297a1708db475c28044804ab32f7fa"
+ "size": 6429,
+ "sha256": "b53d2d8d26ad18d6bc087cc0ef11c9baad25e31bd90e96fac7cd1985c92570e3"
},
{
"path": "package/dist/adapters/analysis/eval-analyst.js.map",
- "size": 4992,
- "sha256": "4a463468214cfea58b1eade62d9e27b3d9b419ff83a23852f20298b6f23cf2b4"
+ "size": 5823,
+ "sha256": "0f925050b65e688411cb1277bf9b8469cec07d88240cdfcf30afe36549f677fe"
},
{
"path": "package/dist/adapters/analysis/managed-analysis-runtime.d.ts",
- "size": 897,
- "sha256": "c1439b0218494692e09003bacaf7e753b47951183f99a465d14f258f1f3aa870"
+ "size": 974,
+ "sha256": "090a70873d3799e636b904749797ef292b4f10ea39d783eb6ee2a851dd806ab7"
},
{
"path": "package/dist/adapters/analysis/managed-analysis-runtime.d.ts.map",
- "size": 776,
- "sha256": "b9cbaf6ef311abf0b8d80b482cdf352db3a4758fe1c787e9ac0641047e94ab24"
+ "size": 811,
+ "sha256": "894dc00b0492f93cbcbcb4a3eab620c7083c738f731c5ecb6c8b7819d9f187ca"
},
{
"path": "package/dist/adapters/analysis/managed-analysis-runtime.js",
- "size": 2352,
- "sha256": "ca083a3f19a4027437fa7e91d9cb27c81ba4e5175840ad9ae6ac3d6441561914"
+ "size": 2491,
+ "sha256": "305e34e5396ed72189147d64bc92333fda22ba11a61bf69fb85908a7df1f6a4d"
},
{
"path": "package/dist/adapters/analysis/managed-analysis-runtime.js.map",
- "size": 1803,
- "sha256": "cf8695d4ad8419515c600cbe0ed536f26928ba0e2ed188f1fe0ebb060ee8b925"
+ "size": 1895,
+ "sha256": "d11cfcc693180c160f2e7fb04223955471f08acb0162b03cbfaa8fb2a227328a"
},
{
"path": "package/dist/adapters/analysis/model-execution-scope.d.ts",
@@ -212,23 +212,23 @@
},
{
"path": "package/dist/adapters/analysis/production-analysis-analyst.d.ts",
- "size": 1330,
- "sha256": "e0cbf84f1d3c5542e8868fe1b20b702f60f6b4275919fa7538c724500a3fbe1e"
+ "size": 1354,
+ "sha256": "6d0d3881748a756e4a269b0c26e4c53c71f13d3c2b4a45fe26d9e679f508fcd3"
},
{
"path": "package/dist/adapters/analysis/production-analysis-analyst.d.ts.map",
- "size": 984,
- "sha256": "e1a3e58a46edbbddb495422c186df83734847e6339007e983cef99577ef816ce"
+ "size": 996,
+ "sha256": "36a19bc22347be2e136d19c48530b1b8764957288786154c1d7dc8eb9b26a46b"
},
{
"path": "package/dist/adapters/analysis/production-analysis-analyst.js",
- "size": 3462,
- "sha256": "903060184d2448de17d6bd42f063102f93093175a7d0fdc8b9369ef5328a4d6f"
+ "size": 4228,
+ "sha256": "702e958c23ae5f1a6767a5ad000e52fea1f32aad786d687658ac69cc8e2e4bd6"
},
{
"path": "package/dist/adapters/analysis/production-analysis-analyst.js.map",
- "size": 2984,
- "sha256": "245f8822595763435256dbc7d6b2d43b8984c0a4ca91d431c1e7bf0f5e20475b"
+ "size": 3492,
+ "sha256": "e99fce059735ac49845540e01c0c15856a5766f77e0a96db2a1cfb36ef8b1ffd"
},
{
"path": "package/dist/adapters/analysis/python-runner.d.ts",
@@ -242,93 +242,93 @@
},
{
"path": "package/dist/adapters/analysis/python-runner.js",
- "size": 9108,
- "sha256": "a0666c019074941f9acf48808c6500574e23e35021c17efa6ff793da60948513"
+ "size": 9101,
+ "sha256": "d4cfae24020e851ba83b63ac67eba879b10273fb7230a60bb959db720709278a"
},
{
"path": "package/dist/adapters/analysis/python-runner.js.map",
- "size": 7915,
- "sha256": "7b7bf6d816a45f8bc90b128e6d6386a8e8e7aa82d1f847a2e5770f9a4f953235"
+ "size": 7910,
+ "sha256": "1605957595609cf2c2245ead57e20797f7e3e9ea5a4a800ac42821c9315ff6ba"
},
{
"path": "package/dist/adapters/analysis/question-analyst.d.ts",
"size": 1148,
- "sha256": "f3960c6001cef030b7c04b58b0bb1b05ecf598963bd0c88fddd782fa83a3a19f"
+ "sha256": "0adc6e6b7f75d46d058baa814505f0563ff513080260925cd64f2f8c8aa6884e"
},
{
"path": "package/dist/adapters/analysis/question-analyst.d.ts.map",
- "size": 481,
- "sha256": "48897262ec53f0d1af60bddce189ad66b569f8e68f221d56f2ead0cadb4a973b"
+ "size": 480,
+ "sha256": "0a7932d6330bcbc1b604f883cc354bc3334fa7b84f02045bdf6af6f0ab98c951"
},
{
"path": "package/dist/adapters/analysis/question-analyst.js",
- "size": 4083,
- "sha256": "e38ca07b1b152d64789b6741f762b79a5afd07b9cea1b42502579aced5f8a617"
+ "size": 3657,
+ "sha256": "d7c6a53cb6713f5f2a546e12fa25193cf03740242902fb8537947d36b0509a42"
},
{
"path": "package/dist/adapters/analysis/question-analyst.js.map",
- "size": 2039,
- "sha256": "c2b15889aa1580681ec683c51cc1148f392f8b1fd434f26027b199b0dfa7ca09"
+ "size": 1974,
+ "sha256": "a7b1cabc60a887b58dddfd484811e7e5d0d6be10a286cfbaa07e6e35b92a1d7d"
},
{
"path": "package/dist/adapters/analysis/runtime-model-owner.d.ts",
- "size": 1921,
- "sha256": "299fdbdaa588d86839813329567c38fbba31952de452652f0e2894a67738c077"
+ "size": 2254,
+ "sha256": "0c4bd69e5fc9ebb3ddca9679e6b48fcad0be652c2b9ff403d406ef4b1c714ebd"
},
{
"path": "package/dist/adapters/analysis/runtime-model-owner.d.ts.map",
- "size": 1562,
- "sha256": "7f9332fc49421e118c6256548efa47b3fcc817a1b7d36e5cc500306c0ced8366"
+ "size": 1818,
+ "sha256": "d775149e51600007a282ddc4a2824a84c864a87b285ca5b1ac629aef05fa8113"
},
{
"path": "package/dist/adapters/analysis/runtime-model-owner.js",
- "size": 27038,
- "sha256": "6e13f505c024a1462e95347f7acaf65b6ad9c29349dfcd7520f7298a8a55fd77"
+ "size": 28687,
+ "sha256": "c45801907e59f42dd8e1ba78e2c7e7a4e0c3bf28f9d4159216308b986a148e82"
},
{
"path": "package/dist/adapters/analysis/runtime-model-owner.js.map",
- "size": 24898,
- "sha256": "950e22bdc5838ff9c411796c3a4132e3abe5bd92531a4fa7ecb9b2fa4677d765"
+ "size": 25970,
+ "sha256": "3c86654b33540f282a156232f9a9ccc776ae1046ab7fc054af189000731594ca"
},
{
"path": "package/dist/adapters/analysis/runtime-retained-model-call.d.ts",
- "size": 1122,
- "sha256": "c7a750523df00f22eda9de75aedafc85322fb92aedf5d6a809f6596262a79955"
+ "size": 1261,
+ "sha256": "d2ea9c8a3152bc0fabcbcbc8960462413ebc67f7daaa9e3feb91856cb8aa26f9"
},
{
"path": "package/dist/adapters/analysis/runtime-retained-model-call.d.ts.map",
- "size": 971,
- "sha256": "cacf46c8de5f1506b7d7951ef547f9fdacd9b5ce51eae584f67eca1586571014"
+ "size": 1059,
+ "sha256": "44f2898679b08a8dbde6225ab5c3993320eea28ab95f98f9c648bf154acdc11f"
},
{
"path": "package/dist/adapters/analysis/runtime-retained-model-call.js",
- "size": 3574,
- "sha256": "6e8a395ea4f7024d00bc6588d9bf1458fd776171918534be5ad622be3306352c"
+ "size": 3614,
+ "sha256": "f64eb783650077825ecbb7c331a867bda0d3fa5388fecb2bca55372e90951305"
},
{
"path": "package/dist/adapters/analysis/runtime-retained-model-call.js.map",
- "size": 3343,
- "sha256": "98d85ea86e7bcb26da03568eaea8f8ea32d7006f60c41bcd1cf52af5a0b0369d"
+ "size": 3374,
+ "sha256": "23ef34a5bfb5ca452f39ee8e6785aa92eb9ed841e660f479d2ccbbad371abce8"
},
{
"path": "package/dist/adapters/analysis/trace-analysis-adapter.d.ts",
- "size": 3941,
- "sha256": "77190da966f2a6e28a511d19c8b6c9c79467ff5da9b2a28549e8b09a6cce1fa9"
+ "size": 4175,
+ "sha256": "d2e197f78b242ababd4537aa6918034a56add14fabc8952abb17ba233eb2c7e7"
},
{
"path": "package/dist/adapters/analysis/trace-analysis-adapter.d.ts.map",
- "size": 2788,
- "sha256": "3bcb2d02337a235048c7c29062156e12431a375e6617a82210585730af0bc287"
+ "size": 2988,
+ "sha256": "064ce99c267e3ab35dd39b3df63baef2b64d2ec41316c482b8bdec268177d08b"
},
{
"path": "package/dist/adapters/analysis/trace-analysis-adapter.js",
- "size": 12054,
- "sha256": "6b8361494a47f105213ba2a3a02599abc01011c84bc1becfd58977f58a1b3251"
+ "size": 13295,
+ "sha256": "dcbf03c8bd043475d553c2ff7da1dcf22e752b63edebc87684d6923f2c621b51"
},
{
"path": "package/dist/adapters/analysis/trace-analysis-adapter.js.map",
- "size": 9073,
- "sha256": "5b0928ea0b10e724c18af6f03d3c3d345ca577942fdab792955993dd7213facf"
+ "size": 10238,
+ "sha256": "7e30212fa197e81f72328fd57ddff9c78c00b49c4ea58cc9f894e68f165c23c7"
},
{
"path": "package/dist/adapters/analysis/trace-event-projection.d.ts",
@@ -338,17 +338,17 @@
{
"path": "package/dist/adapters/analysis/trace-event-projection.d.ts.map",
"size": 541,
- "sha256": "a4667adef083ecae2de26aa4da2756d79d0e2f04b14bd91f7f5953879f525b6a"
+ "sha256": "656bfa34a25c9dae54f14adf6110748333a29b1c1cb2d9b22d487e6dcf6be62c"
},
{
"path": "package/dist/adapters/analysis/trace-event-projection.js",
- "size": 8998,
- "sha256": "869cf48146c81faced4c73cd0aa52d3eef2aea69c2918c10677abf4cf16f4e0f"
+ "size": 9289,
+ "sha256": "f3950419a533ef86c484c9ae9bf914d42b49a930bd78c7998e66c8421b96fc32"
},
{
"path": "package/dist/adapters/analysis/trace-event-projection.js.map",
- "size": 8107,
- "sha256": "0859c6e488ab4c6272b78ed765b80d44a0ff17d05be8f54afdbe12dd270a082c"
+ "size": 8297,
+ "sha256": "3a48f8cecb50cc28586e7a824a783c49cf730493b88c7f8734ed34fbcd58acf9"
},
{
"path": "package/dist/adapters/analysis/trace-store.d.ts",
@@ -370,6 +370,26 @@
"size": 8303,
"sha256": "1e6dd6245dccb1c95c4842e628d078dbd4504675501b1aa6fda7d606af127d40"
},
+ {
+ "path": "package/dist/adapters/connections/aws-nitro-root-g1.d.ts",
+ "size": 1353,
+ "sha256": "1e738a55d19a25d38b65a893156765106329735b0268a4bf42180701c0e4db04"
+ },
+ {
+ "path": "package/dist/adapters/connections/aws-nitro-root-g1.d.ts.map",
+ "size": 252,
+ "sha256": "1e571654b5a84b038d69894de80984a707a69ea9dd600380358f5b78dc56f1a8"
+ },
+ {
+ "path": "package/dist/adapters/connections/aws-nitro-root-g1.js",
+ "size": 1322,
+ "sha256": "9281e200d1796fc66b0e28e56281f18c91ba2413520a92de362a499685ec532f"
+ },
+ {
+ "path": "package/dist/adapters/connections/aws-nitro-root-g1.js.map",
+ "size": 282,
+ "sha256": "ea8cd4d6ef9e0e8141c57b2e3ca47e9f835bb49e77ec69f4f94981550e2cdbb9"
+ },
{
"path": "package/dist/adapters/connections/cli-bridge-health.d.ts",
"size": 471,
@@ -392,23 +412,23 @@
},
{
"path": "package/dist/adapters/connections/cli-bridge-model-route.d.ts",
- "size": 1608,
- "sha256": "d9276194dd6970601c24ed641674410bc65ed783174b5d1dbf0c6eb793693034"
+ "size": 1600,
+ "sha256": "4cc30b0a20802514dce0adbc9e52d76e6f894e124dda89a2e493a2015c999f64"
},
{
"path": "package/dist/adapters/connections/cli-bridge-model-route.d.ts.map",
"size": 1098,
- "sha256": "43dfe704afc5ad50be4c25d94843594eb249a18c5cc7f31fc750ebfed2fbf86c"
+ "sha256": "7c8287f819a0ed819f97dbc9a5a42c5af4229e122a67eaae78eb0e8dfb22592b"
},
{
"path": "package/dist/adapters/connections/cli-bridge-model-route.js",
- "size": 2484,
- "sha256": "d2fab728f110d1936914dd1d1dfd5e1fb1343e2b25d843928bdf50ac355318c5"
+ "size": 2740,
+ "sha256": "b3780e45ab2f2807820bf25fbe94eb5c212d12e2c479d70c8a27d7f827939386"
},
{
"path": "package/dist/adapters/connections/cli-bridge-model-route.js.map",
- "size": 2192,
- "sha256": "2496fd78acc05fd7008eac3762355e60c83a627293a113fb6c18d3b5f43e264c"
+ "size": 2435,
+ "sha256": "5259d78e62b2f94e41923168be77b1c293e5b3911e7a6a4250f4482589e7cbbe"
},
{
"path": "package/dist/adapters/connections/cli-bridge-model-validation.d.ts",
@@ -418,17 +438,37 @@
{
"path": "package/dist/adapters/connections/cli-bridge-model-validation.d.ts.map",
"size": 605,
- "sha256": "cd58ae6b34ba23dfd4600f1a7f6f5d59bd63c6736a37efa759514ee6571e8253"
+ "sha256": "a79d3c526d51d85f80c5ba521fbd80db40cc75af2b9fee348a3f839e611d1333"
},
{
"path": "package/dist/adapters/connections/cli-bridge-model-validation.js",
- "size": 1649,
- "sha256": "43eadd6c69bfed3a93966ee8be79a46c1081a94117c46d8b208caf7bb11a1328"
+ "size": 1726,
+ "sha256": "fed2de96800afd695daac060d6adbacf4bf426d88966a46a5780cf0b55d59063"
},
{
"path": "package/dist/adapters/connections/cli-bridge-model-validation.js.map",
- "size": 1250,
- "sha256": "75c2589d2fdd4389d63e4dce4a6a21346a21edef1928acd37f3648fa8f101576"
+ "size": 1258,
+ "sha256": "06000f1b611d870e604b356f89e026e312430255f5c058d1880b31ffd85251bd"
+ },
+ {
+ "path": "package/dist/adapters/connections/nitro-confidential-attestation.d.ts",
+ "size": 2375,
+ "sha256": "16cad34f5fdda0c0ac5ccf2805d223aaa40eee2a7bfbcad5a441f1e00dfd9ead"
+ },
+ {
+ "path": "package/dist/adapters/connections/nitro-confidential-attestation.d.ts.map",
+ "size": 1193,
+ "sha256": "08e8f478867e1409736120e3b55a915094817e4d8cc7378aa68d970e472aeeb5"
+ },
+ {
+ "path": "package/dist/adapters/connections/nitro-confidential-attestation.js",
+ "size": 11531,
+ "sha256": "0e526300b99928df3701d0a367c40e10d1fcef2fc3217868b2329506f8fae145"
+ },
+ {
+ "path": "package/dist/adapters/connections/nitro-confidential-attestation.js.map",
+ "size": 9152,
+ "sha256": "ae42cbf719a97daf048a37f5aa02f108afa271afefe370f889b7f5a9177a9e0a"
},
{
"path": "package/dist/adapters/connections/production-connection-credentials.d.ts",
@@ -492,33 +532,33 @@
},
{
"path": "package/dist/adapters/connections/production-connection-providers.d.ts",
- "size": 637,
- "sha256": "22e351f7ded3dee52a4000fc91398665b0b75cf3f858d22b5e7f79d1c54ca4a4"
+ "size": 1806,
+ "sha256": "3fc04d83649207f075c0f4024e7ae566ebe20087213117983b751a87537df921"
},
{
"path": "package/dist/adapters/connections/production-connection-providers.d.ts.map",
- "size": 573,
- "sha256": "6e8fd2dfde7837aecd3830bd70d38dd08736b78b3b525c77149ff6ad85788161"
+ "size": 1093,
+ "sha256": "2603b17a57f829da49ebb9206db07cfd1326ed97b71733b961f1654ffaea4ef2"
},
{
"path": "package/dist/adapters/connections/production-connection-providers.js",
- "size": 4845,
- "sha256": "0adf71312ba01338f89f74549609ee9205673692b193f510eb6de4e2c123d642"
+ "size": 8771,
+ "sha256": "8bcd0d89587cdc3f211e9e04b31e6507da10fb84dbc39d60b163fe2c689891c1"
},
{
"path": "package/dist/adapters/connections/production-connection-providers.js.map",
- "size": 4118,
- "sha256": "2e22d2dddc33918342c4c5170b5dd60e82455164e86fc88770b245bfe32f201f"
+ "size": 6821,
+ "sha256": "70a99c292ee69f91d72ee6d0c67fe30300e46f5c4b21d3bc802bc22d289e7a72"
},
{
"path": "package/dist/adapters/connections/production-connection-types.d.ts",
- "size": 3959,
- "sha256": "6a68889e53f84100c965cee60c5e24f37ec1a39984e06ebea54482814753d7d0"
+ "size": 5373,
+ "sha256": "c2b4697351c326841707d34d988ebb0a69cd8ab5f5f7d9d42e9f07a7149ab0be"
},
{
"path": "package/dist/adapters/connections/production-connection-types.d.ts.map",
- "size": 3241,
- "sha256": "4f20e2a9b8db02cedf53ced7c18319bb58bcb1e1cd014016330cd3496afbe152"
+ "size": 3942,
+ "sha256": "e867889d650360523e1ca746dff7bf38972c9e607cffd18fc285f53f5de1c04f"
},
{
"path": "package/dist/adapters/connections/production-connection-types.js",
@@ -527,28 +567,48 @@
},
{
"path": "package/dist/adapters/connections/production-connection-types.js.map",
- "size": 216,
- "sha256": "af5ac94850ad47323d4f78b03fd6c87a665e260708dfbc6d570005b89e7020bd"
+ "size": 217,
+ "sha256": "077ebb007cc66dac5c35556d01d675990b17a3c13f73980c571d002bbec70d93"
},
{
"path": "package/dist/adapters/connections/production-connections.d.ts",
- "size": 1112,
- "sha256": "41fb637c36e754ab5b2647762284e50dac02393b1fdb69551bcbf466636029aa"
+ "size": 1667,
+ "sha256": "cead4a5504645beabaded4402a3ffdaa9bcc900835436e42823fe988522d0ca2"
},
{
"path": "package/dist/adapters/connections/production-connections.d.ts.map",
- "size": 750,
- "sha256": "c27361fbdcbd4db28acf8a185650cf4d0b51ed14ed4d2f6b1d17850d3c9e6b22"
+ "size": 975,
+ "sha256": "83410e89628d8c4acf218aa86def85f73cf8a970669ef776556f1d6635da2cb4"
},
{
"path": "package/dist/adapters/connections/production-connections.js",
- "size": 1047,
- "sha256": "59526ef8c79d9064d99565a50c83defc0a2396d96362de779df97e14c7f55d3e"
+ "size": 1300,
+ "sha256": "08630f721ec77ebd1c0da255a3042acd42402bca211016eac4eaadbf1d27367f"
},
{
"path": "package/dist/adapters/connections/production-connections.js.map",
- "size": 872,
- "sha256": "20576bf6a3346b4efc35e95b812f52e27a3b215942349ada41d1a8c843d6b2d1"
+ "size": 971,
+ "sha256": "ba7e49be8c4dd7e8da6b276f82d2c411dda04f9c484ad50d5a1de80913613ac5"
+ },
+ {
+ "path": "package/dist/adapters/connections/tangle-retained-control-lookup.d.ts",
+ "size": 521,
+ "sha256": "a4ae242c27927721d67a1401935979814e1d5d6c2a649977dd55134dffc9e4d6"
+ },
+ {
+ "path": "package/dist/adapters/connections/tangle-retained-control-lookup.d.ts.map",
+ "size": 415,
+ "sha256": "578734ef27c2b80079d7c23960312f5295366c7183de0de1ec64df0f58906b66"
+ },
+ {
+ "path": "package/dist/adapters/connections/tangle-retained-control-lookup.js",
+ "size": 4675,
+ "sha256": "0b5ac7040ed6408f036e94aab504103b06ecdf7be05f028003990414ebfbceac"
+ },
+ {
+ "path": "package/dist/adapters/connections/tangle-retained-control-lookup.js.map",
+ "size": 4188,
+ "sha256": "eea7bf2a3eecffa63152d690e2400402732b4ae4ab5981fb854691e97a35d2fa"
},
{
"path": "package/dist/adapters/credentials/headless-key.d.ts",
@@ -712,23 +772,23 @@
},
{
"path": "package/dist/adapters/runtime/agent-runtime-execution.d.ts",
- "size": 1404,
- "sha256": "a5e8e57dd2ae2867356a33cfcbfb1ca6f9c1a36f6f258addfab7c5edff55a947"
+ "size": 1835,
+ "sha256": "7343d698757211580d6728f468015a31742477f3f5a6c0c050d823f6517921f1"
},
{
"path": "package/dist/adapters/runtime/agent-runtime-execution.d.ts.map",
- "size": 1198,
- "sha256": "6aaf179e085df8c39e2de8dcf4a7fc3a444a1badf718943f182e33dee85c6e45"
+ "size": 1442,
+ "sha256": "36274335b0fd8824015637f24f236bc8c79a845f6f1a91e7de6fc6299e9d4729"
},
{
"path": "package/dist/adapters/runtime/agent-runtime-execution.js",
- "size": 12178,
- "sha256": "5a264648ea3bb1297678242fd312b1661b226701d3aa7a560fb3483eceb1750c"
+ "size": 14104,
+ "sha256": "01197a001f5ebdc66e89ca78510fb60fdaa494f7590cfd38875149d56d34a5b3"
},
{
"path": "package/dist/adapters/runtime/agent-runtime-execution.js.map",
- "size": 10394,
- "sha256": "10312964675206f2a940a038d65b2dac5b4abe1b1722ea4c20163b5bfa0abf25"
+ "size": 11338,
+ "sha256": "ea339656bb2d8de03a631f1044c055ad5989b789bdfa7173bce69e7220744689"
},
{
"path": "package/dist/adapters/runtime/agent-runtime-version.d.ts",
@@ -750,45 +810,65 @@
"size": 262,
"sha256": "2ac975e46e4c95050633d4b59bf66f8168389488a1a66fa4d5f1ec1594939954"
},
+ {
+ "path": "package/dist/adapters/runtime/cli-bridge-context-transfer.d.ts",
+ "size": 861,
+ "sha256": "06d54deb433c36431d2576c86abeca05f4369a447a7b91381d5eda4a22070f08"
+ },
+ {
+ "path": "package/dist/adapters/runtime/cli-bridge-context-transfer.d.ts.map",
+ "size": 626,
+ "sha256": "3e02f6a1f4b3688ec6f53d073fac1a614e3893ff15f76061ee77a67f634aeb5c"
+ },
+ {
+ "path": "package/dist/adapters/runtime/cli-bridge-context-transfer.js",
+ "size": 1778,
+ "sha256": "f16cdcd0d193b129302105c592bd63da27a04b3eefe521dd11b12fe733c7a96b"
+ },
+ {
+ "path": "package/dist/adapters/runtime/cli-bridge-context-transfer.js.map",
+ "size": 1511,
+ "sha256": "679ab8ff08bd87524a19eaf75a318d11881db0fbd0f9c0618bf29ed643848cb1"
+ },
{
"path": "package/dist/adapters/runtime/cli-bridge-retained-execution.d.ts",
- "size": 955,
- "sha256": "40b3737254af5d0e212279083079942ac0d84b1f848402d34728735608971b67"
+ "size": 1199,
+ "sha256": "74ec9a56c40fe76347efd68cc4a1bae34600108628273ef3147c216a522cf46f"
},
{
"path": "package/dist/adapters/runtime/cli-bridge-retained-execution.d.ts.map",
- "size": 760,
- "sha256": "880e01de26c18837c306d0f284bf550b448b773e19fe5fe670ee6a5beb97c509"
+ "size": 928,
+ "sha256": "84846704ec8f77cdc1704bb4877ac5f637392045f811bb66a3d3551e0e08234b"
},
{
"path": "package/dist/adapters/runtime/cli-bridge-retained-execution.js",
- "size": 878,
- "sha256": "744fc62ae467a73cad60cb342ca5cd8cd98082d999a5037510c1f3318fb100b6"
+ "size": 1234,
+ "sha256": "6c32e25be5df2001b125f68e01866ad460215fe0d8551f7bb6af73179ea904af"
},
{
"path": "package/dist/adapters/runtime/cli-bridge-retained-execution.js.map",
- "size": 832,
- "sha256": "664bb4c366b1a9330771718f94deef0ff371d99fc016f76b30813abbd3cf450d"
+ "size": 1207,
+ "sha256": "c123a9ea53910673ece3b3132da57f81df59295e8b01381d2ded6c84cec44db0"
},
{
"path": "package/dist/adapters/runtime/cli-bridge-retained-run.d.ts",
- "size": 1578,
- "sha256": "8fdbc3e344352e37b4c3106e4660372be28c877736a180b2a3007697cda59d73"
+ "size": 1611,
+ "sha256": "2924d90b91cb6554c95290ce93626f3d75e6c8567eedad11d4690b8317fca10f"
},
{
"path": "package/dist/adapters/runtime/cli-bridge-retained-run.d.ts.map",
- "size": 1189,
- "sha256": "9dfae3e8697d0c07efec8bc535e33a394bfc9bf93f3dfe72e00d10de11005a2a"
+ "size": 1218,
+ "sha256": "dad7ebe5f34375c61be9efbeb84fde60299be1e0b40f28d5bae2b00a48aa29c0"
},
{
"path": "package/dist/adapters/runtime/cli-bridge-retained-run.js",
- "size": 6065,
- "sha256": "39fac099974d3502d9c0eccd708d1451ccaba6c21fe89f2e8548c27a43328458"
+ "size": 8609,
+ "sha256": "6694f91541bbb7705dbd1ad0952e4aaa40d4040da15a7ee89d780096a5c2e0ed"
},
{
"path": "package/dist/adapters/runtime/cli-bridge-retained-run.js.map",
- "size": 5455,
- "sha256": "3961a21eba78f18fa19fbd6f2d256cf40579cbec49b253606e33dab0a41d678f"
+ "size": 7183,
+ "sha256": "be734be9c80e092a3488ab5775f058ab28cc7207bc702a69a6f9b5ed6b6befde"
},
{
"path": "package/dist/adapters/runtime/execution-observation-source.d.ts",
@@ -810,15 +890,75 @@
"size": 977,
"sha256": "9224b63f10ae875ad03724048015495b04527a79b322df9768eb1f9acb5eb4f4"
},
+ {
+ "path": "package/dist/adapters/runtime/lazy-execution.d.ts",
+ "size": 3076,
+ "sha256": "0a70337bbc7a2db0c7f09b71f45e69904d709ac7c46c5043fcb41d2ab998b724"
+ },
+ {
+ "path": "package/dist/adapters/runtime/lazy-execution.d.ts.map",
+ "size": 2516,
+ "sha256": "d6862bedb95195293506f0c8e5f076bf3eab975292085c41e3fa7cf9090ee572"
+ },
+ {
+ "path": "package/dist/adapters/runtime/lazy-execution.js",
+ "size": 4012,
+ "sha256": "a85dd4caf5a6cd389457641f130c6c33e2b1f57de59938a8dcfaceb23b9600c6"
+ },
+ {
+ "path": "package/dist/adapters/runtime/lazy-execution.js.map",
+ "size": 3490,
+ "sha256": "1ffc4e6853d81f67329653787ddbf78f369f149d3bd9e89981aed0588c14aa55"
+ },
+ {
+ "path": "package/dist/adapters/runtime/mode-routing-execution.d.ts",
+ "size": 3651,
+ "sha256": "10e78fbf79f93ffcb2dbb29b8ace7b2682601fc19a59ce143703c7db6f496d48"
+ },
+ {
+ "path": "package/dist/adapters/runtime/mode-routing-execution.d.ts.map",
+ "size": 2384,
+ "sha256": "63697b33ade0f5f32535fc9d732388339206ae2c1ca6c15ccc978e7ce143c652"
+ },
+ {
+ "path": "package/dist/adapters/runtime/mode-routing-execution.js",
+ "size": 7707,
+ "sha256": "e7ef5a80a16f292f40b4b944ed87d11340e5fd4311ff42b4b3af79a5bdc31680"
+ },
+ {
+ "path": "package/dist/adapters/runtime/mode-routing-execution.js.map",
+ "size": 6844,
+ "sha256": "e17a2644851cb19325dbb91f2f491cbacc7dfef4eed8289a293bf31ab2f45a73"
+ },
+ {
+ "path": "package/dist/adapters/runtime/native-interactive-run-broker.d.ts",
+ "size": 1115,
+ "sha256": "b194cba1228666a00e9ada3778010d4da5340bd0cfc553f018e33f30cbddd4a0"
+ },
+ {
+ "path": "package/dist/adapters/runtime/native-interactive-run-broker.d.ts.map",
+ "size": 901,
+ "sha256": "9a6e58a15f77fafb08d252015e0aa30cd73718ce0428aee1c69088cb172382af"
+ },
+ {
+ "path": "package/dist/adapters/runtime/native-interactive-run-broker.js",
+ "size": 3447,
+ "sha256": "a28d5549c5a6c20c61d22ef2a169dbe7994f8b561e7a89949501b4ef7edf050f"
+ },
+ {
+ "path": "package/dist/adapters/runtime/native-interactive-run-broker.js.map",
+ "size": 3574,
+ "sha256": "bf19c9abef9e70c4c63c2cc8798fa879712a938fd5225940e8116f792bc24be5"
+ },
{
"path": "package/dist/adapters/runtime/prepared-execution.d.ts",
- "size": 1800,
- "sha256": "5ad813ceefe0aa549856549ee0d1913cd314601f67c7a4cf05cd600e78323719"
+ "size": 1838,
+ "sha256": "77dfc0c0150a04c8c20f003a2187925cdd0511ed05150d213d052d3adaa0a622"
},
{
"path": "package/dist/adapters/runtime/prepared-execution.d.ts.map",
- "size": 1201,
- "sha256": "c8400b3f50e63e26c1ad74e70aa73a1c03695182986d9ed9bd0738a3da1689b4"
+ "size": 1242,
+ "sha256": "a7b8c8deb7c5da4096eb320c05af5e3c05a3d3181786a57f381f7aafb0b69ac6"
},
{
"path": "package/dist/adapters/runtime/prepared-execution.js",
@@ -828,67 +968,67 @@
{
"path": "package/dist/adapters/runtime/prepared-execution.js.map",
"size": 238,
- "sha256": "c5ed26533ab58c92bb1f49a7469023267a842c27f3f0907b1410c3f8f38aee40"
+ "sha256": "016aef3f3acfbc36561cac3c3df9c83cfdd6a2b9690e41dcdbfbe1110348748d"
},
{
"path": "package/dist/adapters/runtime/production-backend-common.d.ts",
- "size": 1879,
- "sha256": "837776aa995c62c3cc86dc0578dd64767879496cd069172b02a49ba6580e61d7"
+ "size": 2040,
+ "sha256": "a45363d09dd5511105c66c1f909bd89c3ad2f4df14c99074439919e6bee76567"
},
{
"path": "package/dist/adapters/runtime/production-backend-common.d.ts.map",
- "size": 1557,
- "sha256": "0024857ced2b7c4e51c7656b303a53d7ba3dc1eab79f39cb5602debeb301228a"
+ "size": 1645,
+ "sha256": "f60ff9a028c5d72dcbf54ec8fc3423e13a2cde95bc89022e2ab503cec91eca18"
},
{
"path": "package/dist/adapters/runtime/production-backend-common.js",
- "size": 3130,
- "sha256": "50604a012228a5cd3fbb408b29e780522697c825a018f61be3ead7f562043d6f"
+ "size": 3814,
+ "sha256": "2d771a78d4034f9543d3157d55914db4516b4d951ba186e86dd32d6c650e6fa9"
},
{
"path": "package/dist/adapters/runtime/production-backend-common.js.map",
- "size": 2671,
- "sha256": "b7b3170c7e6bb3df365b05d7386efade7d4bd5d747805b409855bafb7a11c15a"
+ "size": 3377,
+ "sha256": "3a62a997798e63103f01d25ad99ac112feb8bb2c43a958f01308f53b129aa16d"
},
{
"path": "package/dist/adapters/runtime/production-backend-resolver.d.ts",
- "size": 1225,
- "sha256": "a4e64ebe477e98884b1cd7c24cc54e95eb985e85efe439652a7e0452543c7b52"
+ "size": 1580,
+ "sha256": "ca6cfeb22aca78b5c7dc3785c67905bbac65a47ad93fb3606b62dc4dbff40c3c"
},
{
"path": "package/dist/adapters/runtime/production-backend-resolver.d.ts.map",
- "size": 809,
- "sha256": "6a83f4a3fa25b70b71929882c7015f75946ecc7fcf93c25df07cf2111e7357e2"
+ "size": 972,
+ "sha256": "60aa3970b112646fcdb7687012da8944b5875ee2399eced99f27b74e089812dc"
},
{
"path": "package/dist/adapters/runtime/production-backend-resolver.js",
- "size": 2194,
- "sha256": "4f76944413eaa1857670e7b2af89a0c3098129c9e5ae77e5bc756bad1414d5ae"
+ "size": 2869,
+ "sha256": "a7a0320f40467bad9550998a990e4f6dd0df57b2ab10f455b8a05027de8e82bd"
},
{
"path": "package/dist/adapters/runtime/production-backend-resolver.js.map",
- "size": 1918,
- "sha256": "787b7f76db27cb3480fb11a0c3d4a3163819ed9e0a03a813a6a8f96ea35653ec"
+ "size": 2450,
+ "sha256": "aab8452f94caf71f65d58f2a8bcc36c351652522affe288005faaa5da694b396"
},
{
"path": "package/dist/adapters/runtime/production-cli-bridge-backend.d.ts",
- "size": 1520,
- "sha256": "d66413d46c603cf9db9acf2de37c1a3d7f62eb30e1c39c08aab7c22e2e286de7"
+ "size": 2136,
+ "sha256": "a77680eca0be436561ef9e0a948aeddbc51162de311b9fc7148b6344487d72a1"
},
{
"path": "package/dist/adapters/runtime/production-cli-bridge-backend.d.ts.map",
- "size": 1353,
- "sha256": "ed3b66747ca31dc0c0a7523e7adafe781d2b204d4e027169d4366d8343fd3c82"
+ "size": 1781,
+ "sha256": "76f4930c91bf9b29f794a6d7a4a85861aa1394988abca94ae3201ac443e0156b"
},
{
"path": "package/dist/adapters/runtime/production-cli-bridge-backend.js",
- "size": 4965,
- "sha256": "2432dce768135950165f21404f555ed1bd9875e1d1f30b3931f366460c4970a1"
+ "size": 8805,
+ "sha256": "7ca44ebdc7116e4ca9c813a436c92ee1c431ad0f670fdd29eb3ea09c1978f426"
},
{
"path": "package/dist/adapters/runtime/production-cli-bridge-backend.js.map",
- "size": 3581,
- "sha256": "812770051d69d250c412352f16a9f8df39291cd416491831fe84616d6c7eee1b"
+ "size": 7028,
+ "sha256": "32d3079855bce2a58a83d4e60773b731681ccfdd02c390601ef8e90f22dfc3a4"
},
{
"path": "package/dist/adapters/runtime/production-tangle-inference-backend.d.ts",
@@ -912,33 +1052,33 @@
},
{
"path": "package/dist/adapters/runtime/production-tangle-sandbox-backend.d.ts",
- "size": 593,
- "sha256": "b7d4a9e7242ca6487892946459d2c3952e071afd927b0d1d95e262d79608347e"
+ "size": 1989,
+ "sha256": "d81a480dfa227367a3da620d69c5eef9683a7d868fbe48cb261b205b5c4455a0"
},
{
"path": "package/dist/adapters/runtime/production-tangle-sandbox-backend.d.ts.map",
- "size": 544,
- "sha256": "02ff474d9a1b343a6da1abe6ea7f3290ba7cbac4832f932c14e7e5601355d00a"
+ "size": 1600,
+ "sha256": "b38bc36f8a62c8a5936c405cdeeb469920e7686b06995406d442f8054fedb9cc"
},
{
"path": "package/dist/adapters/runtime/production-tangle-sandbox-backend.js",
- "size": 5492,
- "sha256": "5b4e4363be70dd5b1bb9187333b077fad4e851cf49c4857c97cd58ed10c19efe"
+ "size": 11088,
+ "sha256": "c7377eb4bbea60e755cd8c7dde67b457db7de165bb1395a38784717d2afde38b"
},
{
"path": "package/dist/adapters/runtime/production-tangle-sandbox-backend.js.map",
- "size": 4361,
- "sha256": "9974209934eb6630997f30a962490347436b2cdf922fa0ab61f4c17835168b67"
+ "size": 8311,
+ "sha256": "e15da4d680b7ede373540efa6396270a23cf3b2f65b59ccd5161e0dd2b0e2691"
},
{
"path": "package/dist/adapters/runtime/retained-execution-contract.d.ts",
- "size": 2460,
- "sha256": "b51c721ec24f6c86bba450ff5b9131881e56ea1eaf107c8b1694b41b65947939"
+ "size": 3375,
+ "sha256": "bbdcd5d05bc52b85b54c896cf921d1192fd904de510312b93c2365c1773ec1f6"
},
{
"path": "package/dist/adapters/runtime/retained-execution-contract.d.ts.map",
- "size": 2173,
- "sha256": "9eede1676787269a6e3de00cf8282f610ea5ae33785dd70a33d42fc4cec53660"
+ "size": 2774,
+ "sha256": "82abaf9b01b2169fa729d94210d67a7a51f08087c9deebc92fe6a070b6f2ce0d"
},
{
"path": "package/dist/adapters/runtime/retained-execution-contract.js",
@@ -952,83 +1092,103 @@
},
{
"path": "package/dist/adapters/runtime/retained-execution-projection.d.ts",
- "size": 1162,
- "sha256": "09ed7b813c38a2756955cbb3f0254eaddf702f5b1fcc5f42795ae740284653e5"
+ "size": 1260,
+ "sha256": "8c0e5ed4786e79dffe4d336aff31f03379732e9a76d643d4c6180f91c46462be"
},
{
"path": "package/dist/adapters/runtime/retained-execution-projection.d.ts.map",
- "size": 1002,
- "sha256": "c0b9345c243e4f46d47c043eaf83961912b9d3676c71c409b0e5fdad8ec7850d"
+ "size": 1111,
+ "sha256": "af4664da48eaeaeeb66c69b183fc2664dff786502f94c8866b2d3475256dde12"
},
{
"path": "package/dist/adapters/runtime/retained-execution-projection.js",
- "size": 3639,
- "sha256": "5df00c80762e5bf9f2d6c5bd897f2e843962ed5c86ce3b7d9af84472efb7e62f"
+ "size": 4547,
+ "sha256": "d5d45903b5d3a78c07c5e28641e869ec577c948d730d850a67871d622f8563e2"
},
{
"path": "package/dist/adapters/runtime/retained-execution-projection.js.map",
- "size": 3911,
- "sha256": "14f8a867ce06e87fee84a12f8b71f2b3fd3ac85168fd85ebee3695ba5f9f5432"
+ "size": 4509,
+ "sha256": "ee06c251292230ce29df3ca62c233731a0df1fcfb788d51d57110dc73eacade5"
},
{
"path": "package/dist/adapters/runtime/retained-execution-state.d.ts",
- "size": 2401,
- "sha256": "043622e9805bd870961898982f4d487699d1e1a9aa03cccd6a3427738b7a42ef"
+ "size": 2259,
+ "sha256": "1220d160706eff9240897d2985f1b48a9b7b6605dd7852d53119abe61f078fe7"
},
{
"path": "package/dist/adapters/runtime/retained-execution-state.d.ts.map",
- "size": 2172,
- "sha256": "b2f99ed9d40ef3f1b39931a48e33beaf7aa365c2a259142f68fa23c7c01fb87c"
+ "size": 2034,
+ "sha256": "bae7fd50e4179d5c98eb7aedd6c181682c04b0684afe0937f9ea6b8fd41cf6e9"
},
{
"path": "package/dist/adapters/runtime/retained-execution-state.js",
- "size": 7295,
- "sha256": "3462d0b76d3aeeeff55648c5dbae8e8f76d5a9f8ab938e1c2def9c01c112d5a0"
+ "size": 6587,
+ "sha256": "07127ff573ad652c267a3ba3ed06c1c478e56b0df384faa22ed7644ce64c4284"
},
{
"path": "package/dist/adapters/runtime/retained-execution-state.js.map",
- "size": 7243,
- "sha256": "dced53ef9ca59d3dc3784fcfdf37f3773fc180b8c2118d2d78899f7f8596ba2d"
+ "size": 6464,
+ "sha256": "c71f62558bb6b527a0067342b4d125777a94c6a76e642670a7f2c556eefd5d35"
},
{
"path": "package/dist/adapters/runtime/retained-execution-stream.d.ts",
- "size": 760,
- "sha256": "f3d0a9fc7fe016d11732ca2677bfa4eb95c5fdc1d6f98ea95d2607f12930d711"
+ "size": 839,
+ "sha256": "f271b307609509078049147471102443a4f675b1bac2824db9e7b9a331c9e753"
},
{
"path": "package/dist/adapters/runtime/retained-execution-stream.d.ts.map",
- "size": 741,
- "sha256": "f134ca88b2c7c8d6ad5503fe36c05c8118f87e95fdef50044d3c9770be8572b0"
+ "size": 811,
+ "sha256": "6957487804091829c9d4d49b73b79d4064be0ef059bdb5f0e8290b999a89f6df"
},
{
"path": "package/dist/adapters/runtime/retained-execution-stream.js",
- "size": 1994,
- "sha256": "9cb42c96b9090606894ac83b69eeb479ec8c1058499526db8b1155346edf59be"
+ "size": 2500,
+ "sha256": "e94169a343cde478e151e2b44cb58ec3b6f29ce97bdb66c4ce0c86ffb7da383d"
},
{
"path": "package/dist/adapters/runtime/retained-execution-stream.js.map",
- "size": 2027,
- "sha256": "6754486918f9a3580280a2324ccf70c86c46fb9bdf14479eafed51e42eb20b55"
+ "size": 2298,
+ "sha256": "991577144799427c81a0d51c888ad753df7720e24c5ca4ee7b6361a37b6d4e81"
},
{
"path": "package/dist/adapters/runtime/retained-execution.d.ts",
- "size": 1947,
- "sha256": "93fa949ae8883fa332b86f4b41e2c6a8b2a38825d46d92caa2b98468d1d9c105"
+ "size": 3130,
+ "sha256": "dbaff138260f4c9a488ea32c662722c532b6088674679ad02795913339e52859"
},
{
"path": "package/dist/adapters/runtime/retained-execution.d.ts.map",
- "size": 1696,
- "sha256": "816f6f9bd33619c3048fc6164a0281f39241d2569e78161e0ba10c643ddfd799"
+ "size": 2137,
+ "sha256": "4cbbe0974651b394f2a53525bc4bebff10b019149a75f71e20d09157d79fa433"
},
{
"path": "package/dist/adapters/runtime/retained-execution.js",
- "size": 13100,
- "sha256": "e0aa0856c3fa88c838d7388e08bd1baf5988a037b78d57175bcccc2ec3eb0344"
+ "size": 26924,
+ "sha256": "db2b65fb77269f33e48181a0d72efc24c30b6abff0b97d988d397b9c43eaf697"
},
{
"path": "package/dist/adapters/runtime/retained-execution.js.map",
- "size": 12597,
- "sha256": "b96a06ce39c55146c1de2bb73eb6aa5bf6c19002df107d0939ed4511656ebe53"
+ "size": 23859,
+ "sha256": "346ef0336eb86357927cc28ee96ef177b5c252c89b1ce997bc1a14e5647cfcf8"
+ },
+ {
+ "path": "package/dist/adapters/runtime/retained-native-continuation.d.ts",
+ "size": 1095,
+ "sha256": "1c280aafe60d21d0225da1901574cac0987e63f87fb2a41b57d982dcd387ad88"
+ },
+ {
+ "path": "package/dist/adapters/runtime/retained-native-continuation.d.ts.map",
+ "size": 868,
+ "sha256": "eb44c5e63ce5c412b5e5b6c2db9771a5228ecb647d6988016e32a627737f5751"
+ },
+ {
+ "path": "package/dist/adapters/runtime/retained-native-continuation.js",
+ "size": 4983,
+ "sha256": "8429360baf79cb5104b2fd2ebb3ef64650ad1b6fdc509de94f297eb03c682f1c"
+ },
+ {
+ "path": "package/dist/adapters/runtime/retained-native-continuation.js.map",
+ "size": 4372,
+ "sha256": "ff8719c162b30c78a09224112573eea6958ebfcf94ccd5dd5b049ac63fa9d0bc"
},
{
"path": "package/dist/adapters/runtime/sandbox-account-observation.d.ts",
@@ -1098,57 +1258,37 @@
{
"path": "package/dist/adapters/runtime/sandbox-observation.d.ts.map",
"size": 497,
- "sha256": "99188b347b6a5d439f3a2601cfa1dfea6d0b6d1aa3593ca70d746712447e357a"
+ "sha256": "551f0865e4803208566b09e171e71f9e7753304e3b913f81e1b42927c1f19404"
},
{
"path": "package/dist/adapters/runtime/sandbox-observation.js",
- "size": 5916,
- "sha256": "fb33be6f00cf81f99417d55f726e5e42b5b8f23b774ac4a771b5aa3acd258c03"
+ "size": 6318,
+ "sha256": "a5a9648311b6a9d1b8b4daa38353bf202c45466ae1784724b98453886fe5d042"
},
{
"path": "package/dist/adapters/runtime/sandbox-observation.js.map",
- "size": 5753,
- "sha256": "5dd84952ad0fe15e11371255be3fe386934844a2d5c9d3c38ae69d8f39843267"
- },
- {
- "path": "package/dist/adapters/runtime/sandbox-result-projection.d.ts",
- "size": 647,
- "sha256": "f824e355f41d57657e08940f23c011a4ca0c1e00a471343f78811a0e42ac415b"
- },
- {
- "path": "package/dist/adapters/runtime/sandbox-result-projection.d.ts.map",
- "size": 521,
- "sha256": "b5c89484b8dc4ddf291a1e5de58dc3bd35ee9046110bf4e382fba82d78b6de02"
- },
- {
- "path": "package/dist/adapters/runtime/sandbox-result-projection.js",
- "size": 8735,
- "sha256": "2a605837432b0331608c76b49c30708b8ab8cea2c66260a1fa77df7168d3a106"
- },
- {
- "path": "package/dist/adapters/runtime/sandbox-result-projection.js.map",
- "size": 8907,
- "sha256": "dfa0ae766dd6f7b5b316ea312bbd429350f69626d18a1f87a80de145f8520c64"
+ "size": 6190,
+ "sha256": "46100a915374ad695a11607d505600c44da6ffadfb80f4155f72cc14adc0cade"
},
{
"path": "package/dist/adapters/runtime/supervisor-control.d.ts",
- "size": 1676,
- "sha256": "892123d1f1fd6866af9bd73b4a4bbb6ea5c5d6022f539aace6794fd2a95045e6"
+ "size": 3552,
+ "sha256": "0e326fd2dc7ffa17641574164d78a01f1b6248647006c3fc06264d7ecf920669"
},
{
"path": "package/dist/adapters/runtime/supervisor-control.d.ts.map",
- "size": 1501,
- "sha256": "a31736ef7959cd5d3eb5a0f068582c6918cfef0fce96b534c3a3435952a3ae62"
+ "size": 3171,
+ "sha256": "d03fe35a7b9f5ed194c40a4cacb5cf7726549dcad4e3f208f5460ec99ac3c092"
},
{
"path": "package/dist/adapters/runtime/supervisor-control.js",
- "size": 3539,
- "sha256": "05ae7e1f3046f682baf176fc046004db68e80d047b40925f393a8ff90507a67e"
+ "size": 7003,
+ "sha256": "721003cdef0e661fec41efdfe26f76a715dd2f0ecfc9a3ca6c876bb4547a1004"
},
{
"path": "package/dist/adapters/runtime/supervisor-control.js.map",
- "size": 2402,
- "sha256": "a42b2ddb8c894d532dd488f71aaadd3a665796badfe1d981089885ba3ddf4ff5"
+ "size": 5709,
+ "sha256": "46603aa9bcd151ad3100ec13f09df2cc4fe409922dc6fcb1e7fb2ee1709c40dc"
},
{
"path": "package/dist/adapters/runtime/supervisor-watch.d.ts",
@@ -1170,6 +1310,126 @@
"size": 1461,
"sha256": "ecae6558572831eafd3cb07c4791c85fd6e05774df6fcdc05d8e9de570dba69e"
},
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-execution.d.ts",
+ "size": 1439,
+ "sha256": "6d89bb1cac28426061fc8b113fc2e7b76a62464b0975d88838aca40c8e02e642"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-execution.d.ts.map",
+ "size": 1026,
+ "sha256": "42a2f63d71109ec15c96962dddf6d443835729a134fe5732f988ff5ad41a9700"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-execution.js",
+ "size": 1477,
+ "sha256": "9d85e9ab5773a821da5164c2bd2cf06f820ceba2af5b2dd336debf902ad2c850"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-execution.js.map",
+ "size": 1315,
+ "sha256": "796691af9eef9009f9a54c98b6d247e656c5b6527b72ea58ce4792379ceeba7c"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-contract.d.ts",
+ "size": 3101,
+ "sha256": "b53ac7c072a50d730dd04662151ceba8d722651923d0106300031c7a0ab03d57"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-contract.d.ts.map",
+ "size": 2011,
+ "sha256": "372b403abf8f03de3bfecb480d6bee621cd57331ae530861e91b62c44131d812"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-contract.js",
+ "size": 5619,
+ "sha256": "48593315c351ca0268987835fa06007736fc0da06a496745ccf27963fd0a715f"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-contract.js.map",
+ "size": 4553,
+ "sha256": "ecc6769ddd86aef20b43ec537b9d4ebbaeb18551567186beabb724b454835ade"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-execution.d.ts",
+ "size": 2575,
+ "sha256": "9d2a093e8fc1f89df595ce60064fd0243675043da179fbbde056fdb0d2ddeaec"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-execution.d.ts.map",
+ "size": 1963,
+ "sha256": "0da4065599db190ed0d0937a530e84a7aeff022b84f0e38f8789c7daa1c0c5fb"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-execution.js",
+ "size": 21252,
+ "sha256": "b70f196f1fd36dd055956b7dedff82840935319f8de41079a682c9ee37684b56"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-execution.js.map",
+ "size": 19616,
+ "sha256": "14240ffa329ba14de7d7524a5ce330410d3510c4f3bba30acc99e29fdea258c0"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-projection.d.ts",
+ "size": 1950,
+ "sha256": "1bb605ea167e54edd132329ab11122b280265e6f5de4d8b12cb7f0322e7f1001"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-projection.d.ts.map",
+ "size": 1470,
+ "sha256": "f799bcfb9f1eae69b08db54e645422385b0105df5758ba5b408e445ee86967cb"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-projection.js",
+ "size": 4563,
+ "sha256": "531c2f1a7997a15f87b6020c014fe1830a13fda50b8f7b0c19852754dbe71ae8"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-interactive-projection.js.map",
+ "size": 4409,
+ "sha256": "486915a7c61e6d064823a2975af0050033cd1914d1c3c88d9134103a1e6f33b5"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-run.d.ts",
+ "size": 1210,
+ "sha256": "c0ba623f652c0e05a89affa1100cefffc2d58ce420997f9863c0bb2e78a4850c"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-run.d.ts.map",
+ "size": 934,
+ "sha256": "e1c8d03506c186689ed15fd106b70622111a8fcfb7750f4ceff22f25cda7b443"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-run.js",
+ "size": 7770,
+ "sha256": "a46a0bbad041957f9c493c888fa765c88adbc063b8aae56d2fee9a3f4ba4e568"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-retained-run.js.map",
+ "size": 6383,
+ "sha256": "df596840127781540e33563500e1eaa43971aa7784a571313f8ad1e3fb30c423"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-sandbox-retention.d.ts",
+ "size": 1073,
+ "sha256": "8ac25650a56981bde9e670894159989eacb608c4d67d137df4df98cf56740389"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-sandbox-retention.d.ts.map",
+ "size": 851,
+ "sha256": "f4e100973a0839ffc5e82510fde2c1c9a963e5d2c9c927ce5e26d544070823fd"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-sandbox-retention.js",
+ "size": 2800,
+ "sha256": "ec9477f539334c43488d750618630aa95a237c67d19b38041d7c68631fa5c326"
+ },
+ {
+ "path": "package/dist/adapters/runtime/tangle-sandbox-retention.js.map",
+ "size": 2754,
+ "sha256": "d78a3494745f2a290e57dd12024d03c438754df0ecb327784ac6d54464091a2d"
+ },
{
"path": "package/dist/adapters/runtime/unavailable-execution.d.ts",
"size": 570,
@@ -1218,17 +1478,17 @@
{
"path": "package/dist/adapters/storage/memory-effects.d.ts.map",
"size": 682,
- "sha256": "3e207be7ff2eac9ba9623f6d6376b49e70902eb623caeb30994e51b9b69a1476"
+ "sha256": "03e09d54f4f295ff75b9dc1d6dc7d2e92e67fadd2dc184da7512b5da95f15f62"
},
{
"path": "package/dist/adapters/storage/memory-effects.js",
"size": 2007,
- "sha256": "a1d8da38ab47d48386c27d505e679e4e50e0929e51b580ca39a9fb1a27190987"
+ "sha256": "cdbda1ace342240a8d9111a0526bc174683451236cb90d82f665b4761e78c25e"
},
{
"path": "package/dist/adapters/storage/memory-effects.js.map",
"size": 2087,
- "sha256": "a556f0f64c0dadc374cd4fb83e913f28c0716bc829b8aed3b9dbf197e5cf1ac2"
+ "sha256": "c0297315ee0453cf8cad2d8c03e574f5c82ab4debe2c3fa77344e8e70e6fc603"
},
{
"path": "package/dist/adapters/storage/memory-journal.d.ts",
@@ -1258,17 +1518,17 @@
{
"path": "package/dist/adapters/storage/memory-maintenance.d.ts.map",
"size": 640,
- "sha256": "fd76653d03bf17eeae5ad0eca04f148e4f0748404b0406a225e9d74ba36b30ec"
+ "sha256": "61ea7345e99da6315234cd88742f37dca0bde12e189376841bd08141300f7bf1"
},
{
"path": "package/dist/adapters/storage/memory-maintenance.js",
"size": 2377,
- "sha256": "67584835802cee05c7f18b6e40aa169dbecee3d989c3d45c068e2023e76e70d1"
+ "sha256": "e4d731499349563737663e9531e69fa98b012ebaee3d90024bd122ad57767ebe"
},
{
"path": "package/dist/adapters/storage/memory-maintenance.js.map",
"size": 2331,
- "sha256": "3b4776ce1d93abe178949fcfc02f71f99af9dd571846c888b4d216fa455ecc9b"
+ "sha256": "0f78f03bf7f90a5cd6b3c9aa5e962839a7c8315aa9dc66aecb4ea1c5e8585fb6"
},
{
"path": "package/dist/adapters/storage/memory-operations.d.ts",
@@ -1278,17 +1538,17 @@
{
"path": "package/dist/adapters/storage/memory-operations.d.ts.map",
"size": 1398,
- "sha256": "f222cdd561c03d8290747523936f97b19586b8a89bb0450dabcaf82c74d687da"
+ "sha256": "d2fa6838cdcaccdc3c069c1ecf513d86d5499d0d89d7ae6d76956764a2f2135a"
},
{
"path": "package/dist/adapters/storage/memory-operations.js",
"size": 7343,
- "sha256": "ae1181c31f87e7e37879809a30c5b16165d884dcefae0aaca7f0a1936d6a4584"
+ "sha256": "a6c6a918222b8ce80212ad00b333acdef97339651700cbfd372c2dd915fa290a"
},
{
"path": "package/dist/adapters/storage/memory-operations.js.map",
"size": 6389,
- "sha256": "37807caa482d776efe5fe35d24df4f6f2e234200eb69d9f369e433facb4840f8"
+ "sha256": "329b1d45544d0b2af9a3d8ce34de4b4d59861f14a5135d495786574a3724c5f3"
},
{
"path": "package/dist/adapters/storage/memory-retention.d.ts",
@@ -1298,27 +1558,27 @@
{
"path": "package/dist/adapters/storage/memory-retention.d.ts.map",
"size": 1094,
- "sha256": "7d9441716b7070bfeab9de2c5e2b6203e683a58d2c82bf1facdb775820479efe"
+ "sha256": "7162661621a57d573edb04fda5b5d183e80ebf3b4ac6411f5c137209df85f88a"
},
{
"path": "package/dist/adapters/storage/memory-retention.js",
"size": 6593,
- "sha256": "6c28d58818af8522eb896f91495f623da547637bdea97bea9f26c186eb4019b5"
+ "sha256": "4243772c0c69cd7a267926a7ad39e980703295ba46850b0da62ccca1fba9da18"
},
{
"path": "package/dist/adapters/storage/memory-retention.js.map",
"size": 6026,
- "sha256": "a528a95ea783135950b0a1b69044c5bfad40a0de41a398e509d548f6031a3fd8"
+ "sha256": "53aff00a4a14d865e9079b6131743f149947b551e5938de69fc190ed069e0e2d"
},
{
"path": "package/dist/adapters/storage/memory.d.ts",
"size": 246,
- "sha256": "7824f002fd54f013b7f47eee56a65cff2f8e885b077e1fdb9f7ab71ee5c6de47"
+ "sha256": "c043b19f57df1f6f661bf54f178830ff2f6e6d65d57fbe4150af540a8f19d93f"
},
{
"path": "package/dist/adapters/storage/memory.d.ts.map",
"size": 264,
- "sha256": "4ede2ff42b1d9180fd04ffa5df04b1fa1a8e3f5eb4d0bac94a5f1287c63757d0"
+ "sha256": "dddacb83e8518c64455cac19d3ae4c667eb39575541184bd683d12fbcea29d13"
},
{
"path": "package/dist/adapters/storage/memory.js",
@@ -1328,7 +1588,7 @@
{
"path": "package/dist/adapters/storage/memory.js.map",
"size": 209,
- "sha256": "d1d7239bfd8eccf57a6680863a508dc3609feeb766f3c725009906993fd86858"
+ "sha256": "c68114740a4374c27c25ec4f5d7d7586ebfcd996394fde27a45ee9888699f29e"
},
{
"path": "package/dist/adapters/storage/sqlite-base.d.ts",
@@ -1398,17 +1658,17 @@
{
"path": "package/dist/adapters/storage/sqlite-crypto.d.ts.map",
"size": 500,
- "sha256": "1823e4e6cd6fed42e18db30fe789dca4c4a82e395cacccb1eb7b616af1156220"
+ "sha256": "3177112a040830a8d3a133a8e50a4d4b1a9137c1ab1a6fa768cba29b899d208a"
},
{
"path": "package/dist/adapters/storage/sqlite-crypto.js",
- "size": 7718,
- "sha256": "411b8198d1b957109a4f67844fc62d66b69d7a9f2c51f83f7f0964b14e7523f9"
+ "size": 8494,
+ "sha256": "b24c5dd134cc2ee35aed7cefc78000c02385f1cfa3379149548613d0a685667e"
},
{
"path": "package/dist/adapters/storage/sqlite-crypto.js.map",
- "size": 7233,
- "sha256": "e10c7df7066eaa1b30359b31edefe0cd9aa9de0ee6fac4971e10afd83c4b54ec"
+ "size": 7890,
+ "sha256": "9fb0ad3fb0a686a6cba4c5f70e376f09dbc8a423a60581ee2dc0077a9fa393ea"
},
{
"path": "package/dist/adapters/storage/sqlite-driver.d.ts",
@@ -1438,17 +1698,17 @@
{
"path": "package/dist/adapters/storage/sqlite-effects.d.ts.map",
"size": 1196,
- "sha256": "d4c0bd4162558ef22ff8f4fe9547f053fdc237a777f3311b4395ecae0077174b"
+ "sha256": "44b023c2fad1a4443dbcabc367ac799c48a5b4d8adaf75eb780d687a2dcc89e1"
},
{
"path": "package/dist/adapters/storage/sqlite-effects.js",
"size": 13637,
- "sha256": "37ed976b14867cf53cfa5fd0fae68eeadc0daf8d40e84ab48fa17ceaa07c4f8a"
+ "sha256": "3fe599fc32743cee0ea8effea72069dc3a12942ee11b5c3cb3ffa72a518bac4d"
},
{
"path": "package/dist/adapters/storage/sqlite-effects.js.map",
"size": 10295,
- "sha256": "573e7c29732cd8c3a1c751bb5a90c63655431f2564b65d46348be2032911cf07"
+ "sha256": "0da80e526ddbd534c2b266e6c71b6ab84fc11459ee94a65fe2ebba8279c7c219"
},
{
"path": "package/dist/adapters/storage/sqlite-errors.d.ts",
@@ -1483,12 +1743,12 @@
{
"path": "package/dist/adapters/storage/sqlite-initialization.js",
"size": 4656,
- "sha256": "6fa84de2605f4351c6a76913379dcae68bb0a1959c2fd15dba335712d2e0670d"
+ "sha256": "d5d058565ba16aea7fa9c1f45612f3ec45cfe504a7b7fa7bc7d2b09226f9147a"
},
{
"path": "package/dist/adapters/storage/sqlite-initialization.js.map",
"size": 4544,
- "sha256": "e75e5fd8ed8052237514a4d312296d1eb3c43caf5438341f46c1e8fd9f384915"
+ "sha256": "74f2bf15f633ae193a1b9c2718d0acc523fdde59d2f03d62eb97a13e3a6316cd"
},
{
"path": "package/dist/adapters/storage/sqlite-journal.d.ts",
@@ -1537,18 +1797,18 @@
},
{
"path": "package/dist/adapters/storage/sqlite-maintenance.d.ts.map",
- "size": 644,
- "sha256": "6edc1c663db2bdd8a16cd94005ccb640f24154af02122219945fbd0d9f27fd3b"
+ "size": 645,
+ "sha256": "e1e77f40c4bd2b8899590fff28ea0d2e59e4755049f2fa6215639cf4a2272a04"
},
{
"path": "package/dist/adapters/storage/sqlite-maintenance.js",
- "size": 9960,
- "sha256": "02269bd93ef8030e8b189799dbe71d6b893cb5dae2f01520fb8fce0bf72a3afd"
+ "size": 9924,
+ "sha256": "831f164a4ab9a1631e5d05542fc73c957c6326bb391313384861ef337cfb7f0d"
},
{
"path": "package/dist/adapters/storage/sqlite-maintenance.js.map",
- "size": 8343,
- "sha256": "77a414f271463d2ce097b519893ab8f297fd581041d6d45e1265661dc408f402"
+ "size": 8311,
+ "sha256": "c47ca898cc07b539f40fc2967b27032d0d42e87c1478783dce267930596881f2"
},
{
"path": "package/dist/adapters/storage/sqlite-operations.d.ts",
@@ -1558,17 +1818,17 @@
{
"path": "package/dist/adapters/storage/sqlite-operations.d.ts.map",
"size": 1142,
- "sha256": "030a1e43578dfcc5ab8dc2ec0e7bdc930d8ebf30fc232d10413c8a67a9c8be63"
+ "sha256": "c8d28d37d8d4b583d4b071b145853201a65a050032582c681b13debdd1389932"
},
{
"path": "package/dist/adapters/storage/sqlite-operations.js",
"size": 8976,
- "sha256": "28d9380aacbada0e22acf32c4647cfeb9eb64fbebe67925df899d1ba4ed51c61"
+ "sha256": "c63294470de0b4531826c2c5881da9bb49d9479391bdd600274dcc7a0eafd6a2"
},
{
"path": "package/dist/adapters/storage/sqlite-operations.js.map",
"size": 6711,
- "sha256": "35a721b5443ebe59b36bc5f0b361ceaf84be7dc880ee00c538372b306d10120a"
+ "sha256": "421bd8e7914d9d62bb7be9f5ba9a4bb26357f886c48d9ddfa0ddb384778d7ae7"
},
{
"path": "package/dist/adapters/storage/sqlite-paths.d.ts",
@@ -1678,17 +1938,17 @@
{
"path": "package/dist/adapters/storage/sqlite-rows.d.ts.map",
"size": 1756,
- "sha256": "148a0794445ce4f1476f14149b9a03ee6a315ac00400bdc3c83e866fb236854d"
+ "sha256": "68ab262ef0555340f29fb4b4d3cf985e9e97683cd430ab2f480f65f038587ffd"
},
{
"path": "package/dist/adapters/storage/sqlite-rows.js",
"size": 9390,
- "sha256": "491cdc0a889946b3448c7bfeb40c876d9fc05d4f721c141bd8c280cc6d364287"
+ "sha256": "eee0aaa06b11a706b69768588c0d47231bb0a051ca4a71e48386ae43cfc9f3c9"
},
{
"path": "package/dist/adapters/storage/sqlite-rows.js.map",
"size": 9010,
- "sha256": "5558c74f1aa902cb030f944822cc38e22267456514e398daf416fbe7b377e935"
+ "sha256": "8803cf211615e59b8a4ecc577ea404dee109559afe6e1eaa33dd0cca69eee6a8"
},
{
"path": "package/dist/adapters/storage/sqlite-schema.d.ts",
@@ -1898,7 +2158,7 @@
{
"path": "package/dist/adapters/storage/sqlite.d.ts.map",
"size": 648,
- "sha256": "33ee762ba00a8505af237c607ec3f70de3c3042f0cc2e198b4cb1ac48aa0a773"
+ "sha256": "bf6df7449f18b139ad924b83e3b54c75c773425cdcca21022f7318a17182d771"
},
{
"path": "package/dist/adapters/storage/sqlite.js",
@@ -1957,18 +2217,38 @@
},
{
"path": "package/dist/adapters/tui/application-ui-controller.d.ts.map",
- "size": 1356,
- "sha256": "6a4ee08467cf4c525563440b5762ffabce01ea2109007fd71f7e2ea7f5aa30f2"
+ "size": 1357,
+ "sha256": "6a50daefb20ec4f6b1f7789f285d2bc2076c3cddfe690580bf2e0c6d20cfd456"
},
{
"path": "package/dist/adapters/tui/application-ui-controller.js",
- "size": 10426,
- "sha256": "7072d9aa9ff71cc92248276779ac2895b856d0238c496925723d9da4f59bd8aa"
+ "size": 12337,
+ "sha256": "106ca931a22730ab5340a8d56b651f435fb10b061a6d7d3bf2e5e66bb49a9331"
},
{
"path": "package/dist/adapters/tui/application-ui-controller.js.map",
- "size": 9666,
- "sha256": "fa58391e6ec288b65b8f932c86045dc87b1412840281b10a3f8760afd8096be7"
+ "size": 11138,
+ "sha256": "060e52d425f6a38e18ec860a48278fc3c9942383b13c4e8dbe841b83968fb174"
+ },
+ {
+ "path": "package/dist/adapters/tui/native-terminal-transport.d.ts",
+ "size": 291,
+ "sha256": "9c2ceb65d279a4f22455177cfb3cc0707523ad77b2f1b8a5c2f8d1f9ffd3b826"
+ },
+ {
+ "path": "package/dist/adapters/tui/native-terminal-transport.d.ts.map",
+ "size": 287,
+ "sha256": "262974db57cedfb81e61f3c717edcae8fdbdafc8cad55d1a93f6faf0652a3689"
+ },
+ {
+ "path": "package/dist/adapters/tui/native-terminal-transport.js",
+ "size": 9689,
+ "sha256": "0208e7414a722960d9b2e892aacd5d7db9dae831abdaf6d33975bd1fb771398e"
+ },
+ {
+ "path": "package/dist/adapters/tui/native-terminal-transport.js.map",
+ "size": 9350,
+ "sha256": "086305f8f82b31012e29ca38b6ad8cee89a264d92aedc884b8e8b0a6e92fb1ef"
},
{
"path": "package/dist/adapters/tui/profile-connection-dispatch.d.ts",
@@ -1978,7 +2258,7 @@
{
"path": "package/dist/adapters/tui/profile-connection-dispatch.d.ts.map",
"size": 1857,
- "sha256": "8e161764c887797ead7911b7a1b84f325ef8acda47e9b0a27bd4b897b5d39c93"
+ "sha256": "57e6064692b25c6b7fda66087e682fbefd2e52d2ae8b0857bcd9457240a12613"
},
{
"path": "package/dist/adapters/tui/profile-connection-dispatch.js",
@@ -1988,7 +2268,7 @@
{
"path": "package/dist/adapters/tui/profile-connection-dispatch.js.map",
"size": 10664,
- "sha256": "68e01ce0d8f0ae0b1bd089f6d9c19b06e3e7000be5a032360ea2218f11cb3033"
+ "sha256": "334887decc17b0f782e4d22f7677ae4c42e2545daf0248de15f1fbef35aaeb2b"
},
{
"path": "package/dist/adapters/tui/ui-automation-command.d.ts",
@@ -2032,23 +2312,23 @@
},
{
"path": "package/dist/adapters/tui/ui-capabilities.d.ts",
- "size": 846,
- "sha256": "b09e3c9f64d62188d953dd2afa1beaff683552e764143d85f2d2bd2aef3518e4"
+ "size": 943,
+ "sha256": "e33c9101aa0eb038b924b76bbe7931466c9176a27676dde2633ba17b3c2475fc"
},
{
"path": "package/dist/adapters/tui/ui-capabilities.d.ts.map",
- "size": 445,
- "sha256": "392739a9af3e39d3fb32d09520c348c1fd581a603a3ddb2dfa3bfde0653c5aca"
+ "size": 450,
+ "sha256": "7f6bebf11743178cb7833e4c5203fcc12195818c0146448645f77e7be858f996"
},
{
"path": "package/dist/adapters/tui/ui-capabilities.js",
- "size": 8909,
- "sha256": "b5f11054e7888f62301bdaed54510113d198bdd37a819485ab1b88b559e20bd9"
+ "size": 12165,
+ "sha256": "9082687941171169c4b83ee93040f5668d38f0b2ca3e78e1ac6fd92da8cb8e55"
},
{
"path": "package/dist/adapters/tui/ui-capabilities.js.map",
- "size": 6726,
- "sha256": "a356d8d9dc1246bdf8d77fc6284dae8370cd3118cb866e34ccdc8d605362f91d"
+ "size": 9005,
+ "sha256": "6e4695146200330c551f804f082a64c638aaeb0761b210f4e322e2c407500d46"
},
{
"path": "package/dist/adapters/tui/ui-command-dispatch.d.ts",
@@ -2058,17 +2338,17 @@
{
"path": "package/dist/adapters/tui/ui-command-dispatch.d.ts.map",
"size": 453,
- "sha256": "2fb22d94030da6e516ee32fdcedec48a36f71c5422f2f06cb1be4428c962463c"
+ "sha256": "414b832a6c5cac476de6e0e81a6e52515b462f205e3b190cbef2d29239ec6f15"
},
{
"path": "package/dist/adapters/tui/ui-command-dispatch.js",
- "size": 5553,
- "sha256": "f84ab30c6b0438e80ee57d879a62ada1a4c81e17045bc859ce7410a9773d6642"
+ "size": 6201,
+ "sha256": "72006e6e4f8b9ae8312326452e6465c84284c02296c64359b6c9e67bd6915af4"
},
{
"path": "package/dist/adapters/tui/ui-command-dispatch.js.map",
- "size": 5211,
- "sha256": "97ddbc0161cad21417fd6c5c27d5fd40005bb2e817e0700ce5a645ab229103c9"
+ "size": 5857,
+ "sha256": "2a5667a20159ce792307bf626f773d2b758750896c167c6926f382abac5bd285"
},
{
"path": "package/dist/adapters/tui/ui-conversation-dispatch.d.ts",
@@ -2078,17 +2358,17 @@
{
"path": "package/dist/adapters/tui/ui-conversation-dispatch.d.ts.map",
"size": 935,
- "sha256": "8457ec8172e22fdee293e7a53c289b9b18e90b47d76602c3028fb5d863d35823"
+ "sha256": "7ae67346c0b61acf02372fed08a6b073a7c707ef52a11d9f594180cd6c5b6dcc"
},
{
"path": "package/dist/adapters/tui/ui-conversation-dispatch.js",
- "size": 14021,
- "sha256": "e8484a9812bc1be1b7879eeeba3e9aa01e099580361a464cfa8f493dec811ed1"
+ "size": 17433,
+ "sha256": "b76a124d7dc2b4f29ed1159ca47f5b5d9d7e197a6aec55e02098383318881140"
},
{
"path": "package/dist/adapters/tui/ui-conversation-dispatch.js.map",
- "size": 13030,
- "sha256": "518a6abb0b0f76787393eda0547be438ea5ab328dfea827159b74ea73a956167"
+ "size": 16526,
+ "sha256": "e17294cd493d8819fe2e2bd70687c3c2ef4e0fff54767dffbc17d1fd71b027ab"
},
{
"path": "package/dist/adapters/tui/ui-core-dispatch.d.ts",
@@ -2098,27 +2378,27 @@
{
"path": "package/dist/adapters/tui/ui-core-dispatch.d.ts.map",
"size": 522,
- "sha256": "d13d2913aabc67bfb7e80e23168b646bd395ca4724c5307fa7f6aea0c80c7d4c"
+ "sha256": "89ec7ea3ead9585abaa16e13f013340be7d8cb82f42f63280cac1f499d2a25e0"
},
{
"path": "package/dist/adapters/tui/ui-core-dispatch.js",
- "size": 11338,
- "sha256": "0b4cf54099303f42a4efae87530929becfe09efc9bfe5f8b7fef63c641d2fa8c"
+ "size": 12232,
+ "sha256": "4f1b90247ef73078dcb22781085ecdb33f09cb048340c7e4ae8ce9181e728d0e"
},
{
"path": "package/dist/adapters/tui/ui-core-dispatch.js.map",
- "size": 10009,
- "sha256": "5008cf48a577625f8123f946f2e40fd9e0a2f22d2d0a605e1198edcc816effe0"
+ "size": 10962,
+ "sha256": "87a932a217669a7d207726a79766b730624f46278c6bced42861f89fc39af58e"
},
{
"path": "package/dist/adapters/tui/ui-dispatch-context.d.ts",
- "size": 959,
- "sha256": "640671dbc5eb7bd0b3d483c0c51cefe5c26e45905c0c985c92fa33752fb9e962"
+ "size": 975,
+ "sha256": "c5e71ce69165d850857c3ddc01d557871ebb00b524450b3af30d9579d2e1432f"
},
{
"path": "package/dist/adapters/tui/ui-dispatch-context.d.ts.map",
- "size": 906,
- "sha256": "a5e5d26b9d8c74ffbb8f43a0bb658abfc26301caffbc49d3604639d1d26933fc"
+ "size": 931,
+ "sha256": "4eebbafcdafcaba06f1e79b8c5e186abbcc9408e722e4c3b0715c0371c12955d"
},
{
"path": "package/dist/adapters/tui/ui-dispatch-context.js",
@@ -2178,37 +2458,37 @@
{
"path": "package/dist/adapters/tui/ui-entity-details.d.ts.map",
"size": 367,
- "sha256": "68d3ae22168cb4682ec822e58714d1812870b28f885882adf0cfc77ae0a78960"
+ "sha256": "ac941fa28e5dbe47801aa91caf507a3476135bc3e0599ad647324c306a34512d"
},
{
"path": "package/dist/adapters/tui/ui-entity-details.js",
- "size": 7251,
- "sha256": "69151cbc0b7f989d5436284f2a753b4025aa4e09e754c13e976f7d113651bd8e"
+ "size": 8149,
+ "sha256": "13d099e4a3acdd543bcdba30ce1c5400f19b123b2ef71925fdfff69742c2ce39"
},
{
"path": "package/dist/adapters/tui/ui-entity-details.js.map",
- "size": 7394,
- "sha256": "c3c79e51248a499961add1b925b82768f643127699b50c9c1bd9586e13668394"
+ "size": 8211,
+ "sha256": "0cead7a199e4f2d6e9a705cb829b5d6d1090a8c570ba86fc937c9e8c6f7314cf"
},
{
"path": "package/dist/adapters/tui/ui-fixtures.d.ts",
- "size": 1600,
- "sha256": "dba147877b7c0989248670c12530cb4f208472d195f0ce3ad8fc2a8bee888588"
+ "size": 1616,
+ "sha256": "2f256ca96a9958fac6017c8525b9ae0b66c26f862ad4add948fde877dbca0fb6"
},
{
"path": "package/dist/adapters/tui/ui-fixtures.d.ts.map",
- "size": 594,
- "sha256": "7fff3586cdc106bef66c2ddc1fc4d308b371e77885ee9ea78f82d0134c1bad5c"
+ "size": 605,
+ "sha256": "f625b08b0151be5b3be841ea780b745ae7b74012ac829bf37c60683c2a3a6a81"
},
{
"path": "package/dist/adapters/tui/ui-fixtures.js",
- "size": 10662,
- "sha256": "cce2e53d28f76b474638a1aeabd6b74db8436db6fe34118d4a586c15838ec275"
+ "size": 10487,
+ "sha256": "f3b4549a2d9a92ef721405035a02b946fca07db0df7ce148c772c1e55293afee"
},
{
"path": "package/dist/adapters/tui/ui-fixtures.js.map",
- "size": 7714,
- "sha256": "c9f0c75d2dae6ff6baa67b315360fd17b4cd1900a59abf1a81737d0a119939ca"
+ "size": 7652,
+ "sha256": "64f0ded3779e1a7517019b90d240326e3c902af8f2f853e67f3910561cf05857"
},
{
"path": "package/dist/adapters/tui/ui-headless-dispatch.d.ts",
@@ -2218,37 +2498,37 @@
{
"path": "package/dist/adapters/tui/ui-headless-dispatch.d.ts.map",
"size": 457,
- "sha256": "672df60d8048e51e92f435b490baeb4f1ccefcbd9ddcc801b3ba79b7a8428e4e"
+ "sha256": "f8a15a79e841a0c8dcb67977a0dac925aca07b83bfd9bb139fb5d69a6a2c3e6c"
},
{
"path": "package/dist/adapters/tui/ui-headless-dispatch.js",
- "size": 9512,
- "sha256": "d0ceb080301e6822c59ae442f345f6dcb5023c66f84c349d53b70b7c53d24c72"
+ "size": 9871,
+ "sha256": "c166ce18e353599875c2dfc03e100b4c066dc373ddf1a6c07fbb04a03fcc2557"
},
{
"path": "package/dist/adapters/tui/ui-headless-dispatch.js.map",
- "size": 8528,
- "sha256": "7d1d5fe21d72e8c51ecd3bdcf6eccaa7b444dcd9e9a17baa053af68af39690ee"
+ "size": 8758,
+ "sha256": "6c9974b491ddae53ac31d598de63e86f8c54fae6b5202a1bdc6bada60cdd6561"
},
{
"path": "package/dist/adapters/tui/ui-intelligence-dispatch.d.ts",
- "size": 622,
- "sha256": "3ca5fd7a3cbe7eda37e15b11ece0929a32e19c3df4251b1713722b11301f5d94"
+ "size": 731,
+ "sha256": "06e0299b09cf38a9c36d3bf823540177b3e6a7e4ff62f09991fcb7a5f3c10c95"
},
{
"path": "package/dist/adapters/tui/ui-intelligence-dispatch.d.ts.map",
- "size": 636,
- "sha256": "cfcc60ba650daa6f7e1481932f17693d68e33cca23921dda8ea232457759750d"
+ "size": 725,
+ "sha256": "035fecbe74caf19a3a87687a200a745c54582c1e6fbc7dade2f6e3111ef93ec2"
},
{
"path": "package/dist/adapters/tui/ui-intelligence-dispatch.js",
- "size": 16091,
- "sha256": "1abf86c2baa70055557711269585007cdf28e42a301abb4e1b0a1ab5489bca26"
+ "size": 21281,
+ "sha256": "8d22f53c7521869cb8fe56dfddc0ff21153cfbf4de942530454f7b90c119260a"
},
{
"path": "package/dist/adapters/tui/ui-intelligence-dispatch.js.map",
- "size": 14939,
- "sha256": "3775af77c52e93a9f56a14384a6b75e9d465808aeccf170ebf277023086844a0"
+ "size": 19054,
+ "sha256": "a21d1671c73f0a27faadb1691fc312ecaae01d2cdc107d2b1031dfe0da579a55"
},
{
"path": "package/dist/adapters/tui/ui-intelligence-fixtures.d.ts",
@@ -2278,7 +2558,7 @@
{
"path": "package/dist/adapters/tui/ui-intelligence-result-view.d.ts.map",
"size": 493,
- "sha256": "3bf9fa7f0384234150be01d957cc61c5a033caa3ed2e1e4965d070fde0d2e590"
+ "sha256": "306053a105e9e3f8bcf94f3599d6eb9996ba7924810a829c97d2c606dff1c146"
},
{
"path": "package/dist/adapters/tui/ui-intelligence-result-view.js",
@@ -2288,7 +2568,7 @@
{
"path": "package/dist/adapters/tui/ui-intelligence-result-view.js.map",
"size": 6662,
- "sha256": "8a3f8aa79d8c932cfb4ece570da289f463a795319dd8269c8140adc2982d2393"
+ "sha256": "6e1655f4a7ccf5c4ccbbe0abf601b13f1e69ea693c690941facf9f44130cb9dc"
},
{
"path": "package/dist/adapters/tui/ui-interaction-receipt.d.ts",
@@ -2312,23 +2592,23 @@
},
{
"path": "package/dist/adapters/tui/ui-projection.d.ts",
- "size": 1530,
- "sha256": "61a742883c3de50ab44cc1048333ad028e3d3adffdcdccc3210600227c92e73f"
+ "size": 1746,
+ "sha256": "373b1b2e92ad4ba586cbd4274f94ed309c7f290d114ef1df1e7b2d953fa39e0a"
},
{
"path": "package/dist/adapters/tui/ui-projection.d.ts.map",
- "size": 1420,
- "sha256": "3dcf8a90f96aee0b2d8781cefac8997864c8c8d8b723c6bce4695d173afa4fd6"
+ "size": 1539,
+ "sha256": "0075b21a3109276e4fc27ab71b1ad54dc69e83e7ece719fdfbc00cda2daad136"
},
{
"path": "package/dist/adapters/tui/ui-projection.js",
- "size": 24137,
- "sha256": "13221a70667c4f51bf96adf829050390b5a3028849a0cf0de1e2f54c44368116"
+ "size": 32493,
+ "sha256": "65a1c05ec4cc83d25b5e28c46296a01e4e4e7555b21572e17b97ae34b17a1170"
},
{
"path": "package/dist/adapters/tui/ui-projection.js.map",
- "size": 25155,
- "sha256": "06951a7cca72682a76585a08676ca8d120e32be64bcfe2476cf6cc91a77e6d46"
+ "size": 33537,
+ "sha256": "0d1fde115155ca211c44dd490de619a745a18f671b381728cbe813d1b583df82"
},
{
"path": "package/dist/adapters/tui/ui-semantic-state.d.ts",
@@ -2338,17 +2618,17 @@
{
"path": "package/dist/adapters/tui/ui-semantic-state.d.ts.map",
"size": 359,
- "sha256": "a243e63a4ba1bf129a622346e5db9cabde264a0fb8fb10ff24365f482a887fb8"
+ "sha256": "e4c67207b74a82885c9ae08c1579f999ef025f42b6e410d3a3bf48d167f36eaf"
},
{
"path": "package/dist/adapters/tui/ui-semantic-state.js",
- "size": 3695,
- "sha256": "2c7aa1b91d211aff25f251c614b7abfb8af94c85834bc9bc4cb95001dea361e6"
+ "size": 5329,
+ "sha256": "fc87e3455accc16d47dfccce510772214feef572994a378f2abdd84eda8febad"
},
{
"path": "package/dist/adapters/tui/ui-semantic-state.js.map",
- "size": 4262,
- "sha256": "f7242727e725b5eb430cbeb61b8b86d4f38a3cef312b62aaf291509464be4e8a"
+ "size": 6210,
+ "sha256": "339fc15143d3589b5db3ae921e11330c3b3fa85828d36d90fa7ef8d7c2e5d9f4"
},
{
"path": "package/dist/adapters/tui/ui-subscriber-delivery.d.ts",
@@ -2372,23 +2652,23 @@
},
{
"path": "package/dist/adapters/tui/ui-view-model.d.ts",
- "size": 645,
- "sha256": "93d10a1f26c98a7ef5bf935323583830fd2102162d05dc59d7fcadf7e600e639"
+ "size": 666,
+ "sha256": "3492353e942ae4fa836fb02c9d419ff07cd75072ea9d573f895997cc5f3c9fd6"
},
{
"path": "package/dist/adapters/tui/ui-view-model.d.ts.map",
- "size": 642,
- "sha256": "230bacc31d306f3b7a7ac6f0c36b64f1182685aeb32331fe228959fabdfa0e97"
+ "size": 658,
+ "sha256": "c97a7ca1e1f9c9a972ebdd29e7e200b0db50a032be875b4085fe7407209ae348"
},
{
"path": "package/dist/adapters/tui/ui-view-model.js",
- "size": 7193,
- "sha256": "9e8d77695eed148fd3db0c314b4064db1810489d5de399b55d4bb6c6c65a4ef3"
+ "size": 10498,
+ "sha256": "1b6599553ca5433c881d242328386961fc956629cd9f138179d03ed79d19289b"
},
{
"path": "package/dist/adapters/tui/ui-view-model.js.map",
- "size": 6269,
- "sha256": "679dba30a532e755766b7a8462508a7a2449065f1d501f418f568aef8d21f6b7"
+ "size": 9149,
+ "sha256": "a017074f2412f50ac650da23c4d6d17e0151f776dffc215b45e7468ef860c787"
},
{
"path": "package/dist/app/action-host.d.ts",
@@ -2592,23 +2872,23 @@
},
{
"path": "package/dist/app/analysis-execution-session.d.ts",
- "size": 1741,
- "sha256": "87640b0e16524d7ea857b24feaa2247ba0f59fc1102b731aafeab5fc1d32e4a1"
+ "size": 1931,
+ "sha256": "c68722196aea75fcf74635d6784cd597b3619f1cddaa8567172eac6a684faace"
},
{
"path": "package/dist/app/analysis-execution-session.d.ts.map",
- "size": 1411,
- "sha256": "13396215f156d42ff0735378447680f940be31f3a95c440bb1da2156b31ecb6c"
+ "size": 1563,
+ "sha256": "e3fe64cce50803e232477837c657cb744ae45fa4574a0ab0174d72a51d5010df"
},
{
"path": "package/dist/app/analysis-execution-session.js",
- "size": 2173,
- "sha256": "1009e96f165c74d4b1d9bcd4669f3fd7d42e5b3701904bb6eebe885c0103ca1a"
+ "size": 2233,
+ "sha256": "81edfd10e928edd6f025cfd11322af8e957502709bd3d191534011105fd98145"
},
{
"path": "package/dist/app/analysis-execution-session.js.map",
- "size": 2327,
- "sha256": "a94e370d363090ceb8067718b35b334815d029129884034e113c8341663f9715"
+ "size": 2362,
+ "sha256": "700801c80c1ff5e97ad9a6672b850797b253d6cddeee63afb90ac7d92fcace37"
},
{
"path": "package/dist/app/analysis-execution-target.d.ts",
@@ -2652,23 +2932,23 @@
},
{
"path": "package/dist/app/analysis-lifecycle.d.ts",
- "size": 1104,
- "sha256": "8589d34aa4cfbdc202cf80ca1e9e8e3968cfe9aaf425117bad9ce68b8d698329"
+ "size": 1504,
+ "sha256": "3964a3726076f3cb345971a6516664681cab7e3e60d81e98f7ef67ff46b3cb30"
},
{
"path": "package/dist/app/analysis-lifecycle.d.ts.map",
- "size": 1067,
- "sha256": "7cbb1f4ec6930490aca893118035d4378ca934138547d479cfbeaa750c83c52c"
+ "size": 1389,
+ "sha256": "4424658c69b46751e462ff625ec55123bf1f5dd3d20d4df829fa1918540a6a8c"
},
{
"path": "package/dist/app/analysis-lifecycle.js",
- "size": 4355,
- "sha256": "d55386413b9dd0a4b50be207041659b80e2270af69e010d15160adffbdd1479b"
+ "size": 7550,
+ "sha256": "12c3bbdd449ac4bb5a62b45117c88e802476bbef24c5a38382e17ba5830b6705"
},
{
"path": "package/dist/app/analysis-lifecycle.js.map",
- "size": 4086,
- "sha256": "e2191b398d140d5a8fb0cff3a6555891ed56876443477d3f616d2f1bd7aa72c0"
+ "size": 7357,
+ "sha256": "f2e82029b23f23aaa015797d7ae7f379e3a71d527cd854aaff58923d223b8ce5"
},
{
"path": "package/dist/app/analysis-model-call-records.d.ts",
@@ -2790,6 +3070,26 @@
"size": 10456,
"sha256": "81cd4c55e1a608b848f634bb1bcf8e5626b71fb27c0351b48ac3b698ba39fbd1"
},
+ {
+ "path": "package/dist/app/analysis-retained-admission.d.ts",
+ "size": 529,
+ "sha256": "42a2860a09c96b23c68e03e66ab00059273bbd42e2ee328dc20331b4f79b1a55"
+ },
+ {
+ "path": "package/dist/app/analysis-retained-admission.d.ts.map",
+ "size": 459,
+ "sha256": "6f542f83589f13a1d69c244a36e4e4ad3077cc8b505bd5c2a839df4783dd5903"
+ },
+ {
+ "path": "package/dist/app/analysis-retained-admission.js",
+ "size": 3025,
+ "sha256": "bb633320c8d5d0708751170ead8c4c085846d1a5e790ba06d361101a27933323"
+ },
+ {
+ "path": "package/dist/app/analysis-retained-admission.js.map",
+ "size": 2682,
+ "sha256": "2373729573de37fb3cb0b4df0df2e43fcd97fc7374d217108694b21edaa60608"
+ },
{
"path": "package/dist/app/analysis-service.d.ts",
"size": 1201,
@@ -2798,17 +3098,17 @@
{
"path": "package/dist/app/analysis-service.d.ts.map",
"size": 1041,
- "sha256": "10127fd5c52f8935aaa0a9fdadac8a42c4168e284f7ffcefc0adf087a730de47"
+ "sha256": "d68bf5e6b9a8a2d50faafb6a966f4c399b97803b29ff51161480507474503b90"
},
{
"path": "package/dist/app/analysis-service.js",
- "size": 8666,
- "sha256": "359ac6f5d8bc539e2e94e789a046ca032b5be0f2419dad474bbb2a67638e6681"
+ "size": 8896,
+ "sha256": "bf2b118956a019e4347ef22562fa7c98716553f09f2afa9ec7f753d39e38847d"
},
{
"path": "package/dist/app/analysis-service.js.map",
- "size": 7558,
- "sha256": "2671605691a955f0ee5c40ed7db6d3d1e1c499335e20598fcacc03fd369ae5a3"
+ "size": 7782,
+ "sha256": "d19a88a7a93295573bd65b9c3a0634dc6e7eecec363b774968e9095729bca662"
},
{
"path": "package/dist/app/analysis-source.d.ts",
@@ -2818,7 +3118,7 @@
{
"path": "package/dist/app/analysis-source.d.ts.map",
"size": 1685,
- "sha256": "bd8c057d0ab7d6d49bcea80a15c475ac93eb1accccc675bc270e1829e77b09f9"
+ "sha256": "9ffd2ef88341899135129e5816e00c4e7b5326b675fa6c90ee8040b1701d716d"
},
{
"path": "package/dist/app/analysis-source.js",
@@ -2828,17 +3128,17 @@
{
"path": "package/dist/app/analysis-source.js.map",
"size": 12333,
- "sha256": "e3ad38f99030b87cfb44d564b915c58f42aa6ad0c66ce3714e14ad303860e494"
+ "sha256": "28b77933f9dd5f3c225d92d48833eb53372b75983e215085c0e71f6ab8ba6c68"
},
{
"path": "package/dist/app/analysis-types.d.ts",
- "size": 4888,
- "sha256": "33bc4f0777ee09bb86c97a5262e182e8a3638e21d609b48025a1a2b9c1d0664c"
+ "size": 4973,
+ "sha256": "6aecd48d4d7e2450998acf9f067784cd5c81e75cc6709538eeb652e3764a5ac2"
},
{
"path": "package/dist/app/analysis-types.d.ts.map",
- "size": 4431,
- "sha256": "4e82a615dad1fbbc71b78fc029b88c126a2c86dd83bb16e010e47ca73cc4a222"
+ "size": 4483,
+ "sha256": "3ab6c1254f8ced89abc565f73b357c39c7d4f12cac8dc6b8dfeacd3ebd2e2479"
},
{
"path": "package/dist/app/analysis-types.js",
@@ -2848,7 +3148,7 @@
{
"path": "package/dist/app/analysis-types.js.map",
"size": 945,
- "sha256": "cbfb0fc550cb48654de46f64ffaf65c66a6473fef74033ce59a0920675886eba"
+ "sha256": "b1f56ca4cd8f79c4e5c8e4b3348478563ebf86c83c10c9276d427ed11e761df5"
},
{
"path": "package/dist/app/application-guards.d.ts",
@@ -2858,7 +3158,7 @@
{
"path": "package/dist/app/application-guards.d.ts.map",
"size": 414,
- "sha256": "131f5ddc4cff6faac2a0cee2522fb78ef037763664b3d830541f2938f211f637"
+ "sha256": "7042fbf9d0f25c31d0deb30731d91e6fb658b6d62d2a7a0291054411a6a9f7c5"
},
{
"path": "package/dist/app/application-guards.js",
@@ -2868,47 +3168,47 @@
{
"path": "package/dist/app/application-guards.js.map",
"size": 655,
- "sha256": "fd7ea17e5199865ba3058e2ac703d85955258b2c36eff4f6f7016f98f010f6a2"
+ "sha256": "490be594239896b0132c4fa2b2237dd9c6e35e7798c5567f3b8541c24f20b598"
},
{
"path": "package/dist/app/application-interaction-actions.d.ts",
- "size": 2166,
- "sha256": "7457fadc0b22ef6b29edb73c507dd71ac30285cfcde81bbdc1ce5dfdd6b3b5ae"
+ "size": 2384,
+ "sha256": "3b7830b22174bab036eedc2cb04d3b0fd2a9075b4fffcaabeadd817105d12118"
},
{
"path": "package/dist/app/application-interaction-actions.d.ts.map",
- "size": 1872,
- "sha256": "d462d611966a38fa5d3f1ef9258ddf966e93aaf750e4737ecd49ae2a329154d3"
+ "size": 2044,
+ "sha256": "43381e5b42efffe2119e3cbba926d925fdeab5f5a2e76415f38905fea63d4d97"
},
{
"path": "package/dist/app/application-interaction-actions.js",
- "size": 3242,
- "sha256": "1ef0137eaaa5ae65c52bc0178a9c3bbc8d34c9fed7fba8ee191eab82a7a2735e"
+ "size": 5130,
+ "sha256": "32186b2ffc838cf5d13430bc74c90d95d5f0035b9bfacf07d61bd7992901560a"
},
{
"path": "package/dist/app/application-interaction-actions.js.map",
- "size": 2963,
- "sha256": "35924d626c199a85b310cb2d43d216ef69f7da0069104617ab3d00a0edf7d573"
+ "size": 4697,
+ "sha256": "3be628a2b461231bb27c2cd576915cf3de5a91959e9de765e99c95116baa9e87"
},
{
"path": "package/dist/app/application-lifecycle.d.ts",
- "size": 1218,
- "sha256": "daa31eefd341ac36090a64ea8387f421ba5e24a4644e0b7df5ce8aff6212f411"
+ "size": 1277,
+ "sha256": "ce8943007a5612dfab9fd303b627a72aa6807b0fdba74f744d4f6d8efbf84c93"
},
{
"path": "package/dist/app/application-lifecycle.d.ts.map",
- "size": 1181,
- "sha256": "4a23961b41d05f5b8fc92554f9579a9a8b8902787b600c6e16d207997ad062f8"
+ "size": 1247,
+ "sha256": "d1949ae684ec7936e6b575b75d50836b0f492ed62750d1dc4df8328a87545acd"
},
{
"path": "package/dist/app/application-lifecycle.js",
- "size": 3891,
- "sha256": "08034bd53cb368a98449346e94743e70124c99c5af5b2f811cbb0518838e5306"
+ "size": 4001,
+ "sha256": "fad044fb4b978e5bba2a952734ed9d95d1248e0d61c63854b198eca6b98cbcea"
},
{
"path": "package/dist/app/application-lifecycle.js.map",
- "size": 4413,
- "sha256": "0b467b9aa3df66d2751705bb1391090ac4067f07780910ef67109c526e00fb90"
+ "size": 4550,
+ "sha256": "000e6ac307832aa9fd4c25896fb22a2e513aee3b4803071dbfa1e9cb3779dcf7"
},
{
"path": "package/dist/app/application-options.d.ts",
@@ -2938,17 +3238,17 @@
{
"path": "package/dist/app/application-port-builder.d.ts.map",
"size": 2295,
- "sha256": "a7b96be4fa89040a0e7fb2a441a0422e45c59023508d08bc939897db841895eb"
+ "sha256": "64c5af3298e0f66a5e7f77abd1c28e8ba3ebd47e303787afc81ce171a5544afa"
},
{
"path": "package/dist/app/application-port-builder.js",
- "size": 2762,
- "sha256": "e0c41f1916a5590874496533ae5738adb9fa976756ab12d9c8b5a3f5f9e47c73"
+ "size": 2971,
+ "sha256": "d8b95fba34239f4894505c23d652478dc5803a350bad30281fb788bb0d88c335"
},
{
"path": "package/dist/app/application-port-builder.js.map",
- "size": 2757,
- "sha256": "3169c73a9c7c91bb9c6ac678ae1c049b58b37f6fcd8ddf887eca1d706332a358"
+ "size": 2876,
+ "sha256": "5506ec18c5f8d831c25adb84b94b5b82875fc210984dbf64764848681cb2200e"
},
{
"path": "package/dist/app/application-port-runtime.d.ts",
@@ -2972,13 +3272,13 @@
},
{
"path": "package/dist/app/application-ports.d.ts",
- "size": 5198,
- "sha256": "07473bf969fc45196d35601b8c454059008da13be87fb3c14d61704455262a01"
+ "size": 5560,
+ "sha256": "8b1541f6f598062c852a88c52c326c85c73a7e6bf3260e2ead31e117a59fc16f"
},
{
"path": "package/dist/app/application-ports.d.ts.map",
- "size": 4518,
- "sha256": "29929c71a97717503fc164ef281942937b9044ae5c23093f5f71f21c9c33d67d"
+ "size": 4730,
+ "sha256": "de91730c5c02e5aa4be2a44448f6cc83c485695f21b8204f0a018a2adf7acb15"
},
{
"path": "package/dist/app/application-ports.js",
@@ -3013,22 +3313,22 @@
{
"path": "package/dist/app/application-support.d.ts",
"size": 3270,
- "sha256": "1a9a4bf2b40924affdcd242cc9e739587738500e5573a46a2bcf1b986193eb79"
+ "sha256": "11cfa48bff5e945b0959dcff80273bea081821fc6eb4fe040d7e8051251b5f9b"
},
{
"path": "package/dist/app/application-support.d.ts.map",
"size": 3031,
- "sha256": "4b7c97001b39e369a3a7c423f73d27b254699d8bd980938ec91299189098bb99"
+ "sha256": "1bf80bcbdc9e8111d2f55449ebc113da4b7e6bbbbd6f0b18f86981f2bed6cbfb"
},
{
"path": "package/dist/app/application-support.js",
- "size": 16150,
- "sha256": "47cfe05bf12b3ea36310bdd92b6ac803b080102e1a3071a05a2147d905b7110e"
+ "size": 18919,
+ "sha256": "020ce131b3dd6fe095ca6785c893011f988eedec5fd69fffb8c22a6e8b821c27"
},
{
"path": "package/dist/app/application-support.js.map",
- "size": 15113,
- "sha256": "9aa0fa411c09a8ad5aa84a2e4da78d9fd6b45683f2744e488ad63ee514d534ca"
+ "size": 17589,
+ "sha256": "79741a33780dc743055943cacc77e8f4de66208ae0e82a5326b7f532f03bd9e4"
},
{
"path": "package/dist/app/application-transition.d.ts",
@@ -3052,13 +3352,13 @@
},
{
"path": "package/dist/app/application-types.d.ts",
- "size": 3192,
- "sha256": "3db3bbc4c3b09d5b55bb5b0ca081733e50b5846538ea0a4c98f18b7679464e77"
+ "size": 3945,
+ "sha256": "9e3b4024eb9868c1a5bdda5c76bbbdcef40014a16b7113449d6ec35b0f24ec0a"
},
{
"path": "package/dist/app/application-types.d.ts.map",
- "size": 3081,
- "sha256": "fdb066a4fcaa7fb09cb2a2a969aeac9ff7e020715e344c649d7f0111018b3563"
+ "size": 3445,
+ "sha256": "bfafb924864d02ecd1092d58c7478176fce916c7be2c6a184fdf070342ade322"
},
{
"path": "package/dist/app/application-types.js",
@@ -3072,53 +3372,53 @@
},
{
"path": "package/dist/app/application.d.ts",
- "size": 4025,
- "sha256": "c4c3420722dab227acb7a7782383319dd5f37449b379d40579be4886fed77dd9"
+ "size": 4256,
+ "sha256": "75f91211dd1e78c98d05a6fe936cbbf32de9793d95cce263badf415d976b6d05"
},
{
"path": "package/dist/app/application.d.ts.map",
- "size": 3614,
- "sha256": "4a7120afbe538f28092f2591f4e263e8504f9b9810534e51b4b17ee520750967"
+ "size": 3853,
+ "sha256": "d294409ae6df260e02bb00e34e161166432393c75d13f99701c95326188e8b7f"
},
{
"path": "package/dist/app/application.js",
- "size": 22387,
- "sha256": "fc43ae827a6b8336ef1a2b905c742019bebcb24b6178a5fad39d3274ae7c5866"
+ "size": 25564,
+ "sha256": "7b68a6ec8e3f620f5940cbf6fc8365b42c6244d0129fdf17f818d3fd3d61f825"
},
{
"path": "package/dist/app/application.js.map",
- "size": 20500,
- "sha256": "45844db9eb7dc6fe59b56b64b6952c9a6611867bd13e4e6fed2b6c8f45eaa908"
+ "size": 23539,
+ "sha256": "ac47f7c0561a74e7e781d15895bab9d1a55dd5c4b21f212c15d0fbb38137c6f8"
},
{
"path": "package/dist/app/automation-actions.d.ts",
- "size": 3701,
- "sha256": "fb8e07e90f9e731e90623d2c26c5b68b54f9c10e4e9f165891cac8d1d55c6e6b"
+ "size": 4016,
+ "sha256": "1fa2f19b84e399a0982212914cdccc5572910fd7d5e859460fa015d53a6679b1"
},
{
"path": "package/dist/app/automation-actions.d.ts.map",
- "size": 3414,
- "sha256": "36bcff13c50f0e91dd06bf58d801858633c41f9cd898f9e8571e494bcc7b9b3c"
+ "size": 3638,
+ "sha256": "bc50526b9191e6b43ed3545d55ecdbc7c25f7b3c09cdf320a66a7a4d9d274b2b"
},
{
"path": "package/dist/app/automation-actions.js",
- "size": 6172,
- "sha256": "00ef1ac042b981f122e0d2c105dfbc15e190a6ce868b400e5d42adc12bfc3508"
+ "size": 6789,
+ "sha256": "7c8735923e7d7261f8c13f2963b9275993a6e2690684b6484888ac85d930e65d"
},
{
"path": "package/dist/app/automation-actions.js.map",
- "size": 5708,
- "sha256": "c76519d1488192364365c6742e35c21dfca42573573e51d1a90cb6bd648c96b9"
+ "size": 6236,
+ "sha256": "c84f76fb42e51f8af3d9f19a99fc0331e02c5744c1dec3e4855497587cd4682a"
},
{
"path": "package/dist/app/automation-matching.d.ts",
"size": 2141,
- "sha256": "01e7437cf4468bb292bd450eece53bb230ed24333ccf811bd3869249b142cc7e"
+ "sha256": "2dbab5bb48931782e2cfd6f9da8b528298ed2e335913aee171d16a52cc04d014"
},
{
"path": "package/dist/app/automation-matching.d.ts.map",
"size": 1736,
- "sha256": "45ac959d35be3928e82590b75cb2b70dc2c2fbc11c90dd8fe7929024e315024f"
+ "sha256": "128ea4f137a1424041cd9dd2ba461b48c3e73b0a8ace0b5f7728609ac48107fc"
},
{
"path": "package/dist/app/automation-matching.js",
@@ -3270,25 +3570,45 @@
"size": 360,
"sha256": "c68d82f12b924ec07d25679231818bc797846839767a5bc67d777635f8b92df6"
},
+ {
+ "path": "package/dist/app/composition-options.d.ts",
+ "size": 1436,
+ "sha256": "441d755a8d7c4bd6116351a41b2bdbac7102be6dbc42f2c261da494300254ebd"
+ },
+ {
+ "path": "package/dist/app/composition-options.d.ts.map",
+ "size": 1234,
+ "sha256": "c567ed0133db83aa6d94640ed97b2c7e6f00a9f17c2d055f85e63f7683d8e57f"
+ },
+ {
+ "path": "package/dist/app/composition-options.js",
+ "size": 58,
+ "sha256": "51950878d9728bc0e56db6f3703de591803b65aa33ff115aa85ce8f9b6401c9f"
+ },
+ {
+ "path": "package/dist/app/composition-options.js.map",
+ "size": 137,
+ "sha256": "4340a31d588464a5d7b88eecc21fca20410bc281c64d75962dde6847d82f2eaf"
+ },
{
"path": "package/dist/app/composition.d.ts",
- "size": 3542,
- "sha256": "bd099db31cd067a06d27259d793178ca3107589d726972ac5b49c5e7b2b18a39"
+ "size": 863,
+ "sha256": "c827befe2d2f54e293e318cff727712803975f421afd9d253a709e85e7f8181e"
},
{
"path": "package/dist/app/composition.d.ts.map",
- "size": 2752,
- "sha256": "a847764f429f116559950dd4fa1850986cfa53d70f024067d80e43bb42ba62f7"
+ "size": 617,
+ "sha256": "13caa0616fe1e8946ef1e6d5bcbd0a581fb7e5c71697e7f8d4066993a73656a3"
},
{
"path": "package/dist/app/composition.js",
- "size": 9010,
- "sha256": "5dd0ccaf79c8237c4fe476c161640ad829b69c20eeca6b27b1ae0f671c7bb391"
+ "size": 5103,
+ "sha256": "8ee852b971ded8311ad13b27f8f92edf9307c7e3b8e59a297a18c3f075f397c4"
},
{
"path": "package/dist/app/composition.js.map",
- "size": 7620,
- "sha256": "c9cce0fdddd74d4b5b17874175da67b917e01f950dc0d164aa4eab9e901b820e"
+ "size": 4207,
+ "sha256": "fb433f2dca46cebabf916be9318a990237bb44a717b917680b5ac827be16712f"
},
{
"path": "package/dist/app/configuration-action-transition.d.ts",
@@ -3298,7 +3618,7 @@
{
"path": "package/dist/app/configuration-action-transition.d.ts.map",
"size": 2200,
- "sha256": "fc53bbcf5c04682e69712de21a4d1cd086568e367b3458b7d87568c22660e2ec"
+ "sha256": "f045b83ebebfa1c34b9467687a301ec03d9f0cfc7e0e957d8f5fcdc1c5fc0a62"
},
{
"path": "package/dist/app/configuration-action-transition.js",
@@ -3308,7 +3628,7 @@
{
"path": "package/dist/app/configuration-action-transition.js.map",
"size": 3379,
- "sha256": "a0c94604db964b938a270ad89ac59e1e0e84524b62505df76ad99aacb9ddc08c"
+ "sha256": "17064463d3c34411cf6e290c657e8a02d0d5894ccfb121d4e1e546c3562e9b05"
},
{
"path": "package/dist/app/configuration-session.d.ts",
@@ -3318,7 +3638,7 @@
{
"path": "package/dist/app/configuration-session.d.ts.map",
"size": 2618,
- "sha256": "8817cacfa87b5e5b0ce8506a89b51a3a145f7852f6d79cfd4d35573ec0862980"
+ "sha256": "c2d843bd6ca4391ba62561d07f66530f4bcefc269c1d8e888f0668f62956dbb3"
},
{
"path": "package/dist/app/configuration-session.js",
@@ -3328,7 +3648,7 @@
{
"path": "package/dist/app/configuration-session.js.map",
"size": 8190,
- "sha256": "fc024082369f95d41ce2cef8966c56870c5d79bf839e770e81970f307e22028e"
+ "sha256": "ff065f6ba5a49cb234ccc7e3aae6d15746026bac2a0a6d4c1df61c9cbd26f08f"
},
{
"path": "package/dist/app/connection-action-support.d.ts",
@@ -3438,7 +3758,7 @@
{
"path": "package/dist/app/connection-record-factory.d.ts.map",
"size": 704,
- "sha256": "3afe0669caec6d0603f81e610f0a1f14fa511beff14fd2eaef83d14af2d3ed57"
+ "sha256": "93086840439985d793de28a9d15cfa56c8730e940ed346006441008bc63f8cb2"
},
{
"path": "package/dist/app/connection-record-factory.js",
@@ -3448,7 +3768,7 @@
{
"path": "package/dist/app/connection-record-factory.js.map",
"size": 1372,
- "sha256": "340618c4a28e89ec1663c085f69331ed7d5287776f2cd6605f7801f3e1f79f49"
+ "sha256": "44a70ddf22a7ada47ba827fd602bd3626c4ead1fb0d527c87f9073063710939f"
},
{
"path": "package/dist/app/connections.d.ts",
@@ -3458,17 +3778,17 @@
{
"path": "package/dist/app/connections.d.ts.map",
"size": 1129,
- "sha256": "0e48c1cdd1cb3a607c5d6fd70da24fa159424a616c350a2544a9497bf683e2f0"
+ "sha256": "37430c078ab5093715d69cdea4fe539373f62e71690d106a5362375ddcb2a32f"
},
{
"path": "package/dist/app/connections.js",
- "size": 8176,
- "sha256": "76f63695134bcfccd148646ea316d34edaf292bcfb56c4d7d19f1595bba1749c"
+ "size": 9151,
+ "sha256": "4e00adb571a18511f7d7de4ac9c084953d24b144fe16839a740db717f453cf97"
},
{
"path": "package/dist/app/connections.js.map",
- "size": 6940,
- "sha256": "da1fbff2c7abcedce3bfaeb7c8ea61cc740a8dddb98b742559ac6f9bbd90d102"
+ "size": 7617,
+ "sha256": "f1bd1f8c94c315974bd7a71ebefe0afd74ca6ca49c41d33b038bd626e16eb8ae"
},
{
"path": "package/dist/app/control-effects.d.ts",
@@ -3482,73 +3802,93 @@
},
{
"path": "package/dist/app/control-effects.js",
- "size": 7660,
- "sha256": "2686d57c6465392979e21132f5314419b14607655420e4c54066b54ad36db335"
+ "size": 7931,
+ "sha256": "0aaa8cba88749b82b2cf1ee4445c5351e4fa12fb09db46bab52a5bef32a9f0fe"
},
{
"path": "package/dist/app/control-effects.js.map",
- "size": 7212,
- "sha256": "1e6f5f95447da168b582ed9919d4d2a464b1767b70d6b3f40be9b347bb94c3a2"
+ "size": 7496,
+ "sha256": "4bbb744e43b89b990e7224f695e6aa8118a5d933bb1207b3a063d3550d7a71e6"
},
{
- "path": "package/dist/app/conversation-branches.d.ts",
- "size": 756,
- "sha256": "b804859c5e91c7fabcbc2c5b9bf4a4cd7f4d098390f32354a9043769ffb6fea7"
+ "path": "package/dist/app/conversation-branch-effects.d.ts",
+ "size": 862,
+ "sha256": "4220518c1bafff9c8d10bd14c834c9914fa055bd00c1e397c70a1a3262591d45"
},
{
- "path": "package/dist/app/conversation-branches.d.ts.map",
- "size": 748,
- "sha256": "d4279b4659e7485ca19ec5322a4cf38ddc5970bf7f83515b63fe867649af8fb7"
+ "path": "package/dist/app/conversation-branch-effects.d.ts.map",
+ "size": 714,
+ "sha256": "c337651d665ba2628e784c6e42faed5ef9c9b761f320def8fd345b929a19a06c"
},
{
- "path": "package/dist/app/conversation-branches.js",
- "size": 12944,
- "sha256": "3124514d43e886ee583c38fa31784721fc15b8310a21882518c9682f9ebd7ab3"
+ "path": "package/dist/app/conversation-branch-effects.js",
+ "size": 39113,
+ "sha256": "90ab46c598fbb8c3b05dbb9efc894df64394e0fb0d0823b427adc9446b515ff7"
},
{
- "path": "package/dist/app/conversation-branches.js.map",
- "size": 12279,
- "sha256": "d96b6b8dbc83bcdcc0c609bea73e9a5c9287379fdc3dcfa5f1ce5ae36a87ef24"
+ "path": "package/dist/app/conversation-branch-effects.js.map",
+ "size": 33309,
+ "sha256": "32aaa058cc97e885741beb4dd440b844fdfedd3c4aa0eb32d1131a61689dbd95"
},
{
- "path": "package/dist/app/conversation-composition.d.ts",
- "size": 787,
- "sha256": "11c4f171587d694cd3fd8e8e8628e7387d45d3577007750749b0cd9f62dcd31f"
+ "path": "package/dist/app/conversation-branches.d.ts",
+ "size": 1003,
+ "sha256": "44b29013fe74bd213dff607af5ea7b08887f7377850982906994f652fd77a0b1"
+ },
+ {
+ "path": "package/dist/app/conversation-branches.d.ts.map",
+ "size": 881,
+ "sha256": "8b7c492f3c9c558cdc1332da10721b23d69c00feb3763a56519a12107364b463"
+ },
+ {
+ "path": "package/dist/app/conversation-branches.js",
+ "size": 23481,
+ "sha256": "ab2700a114639e548d82a3e816b19899fbe3ce8193648c1fcd972113da30869c"
+ },
+ {
+ "path": "package/dist/app/conversation-branches.js.map",
+ "size": 21885,
+ "sha256": "70aba7052a8e6aec364400093853c5ddf015166b2b6501202518522e5ced5bef"
+ },
+ {
+ "path": "package/dist/app/conversation-composition.d.ts",
+ "size": 1099,
+ "sha256": "1c1915539df6319fa382339a42375e973c7be06ad7b05847654856c16e7eab04"
},
{
"path": "package/dist/app/conversation-composition.d.ts.map",
- "size": 851,
- "sha256": "31de14552ef6d1546ca5b0b02afe02203a67f13b4c153a6d92f16fcc8d5645b8"
+ "size": 1118,
+ "sha256": "6387d0e025ba9e0225d98f9417816bc2ea21b5791dd08c88a0339f6fa4f3799e"
},
{
"path": "package/dist/app/conversation-composition.js",
- "size": 1396,
- "sha256": "cb295bcd7276f0ec0e506f5a6192c2a273bd297457ed47bc215a8b7a26318099"
+ "size": 1621,
+ "sha256": "2e8d086669f5e055de77b93fd8c8767564bf4827f05ef4e19e42336ced7e7c7f"
},
{
"path": "package/dist/app/conversation-composition.js.map",
- "size": 1038,
- "sha256": "965607fb0d7e567f553deef56263b8682007ce84597c664393167a96e75c1b74"
+ "size": 1387,
+ "sha256": "61e40027f65e1ea131382291aefeea4aa5270460bad2eeba581343a428556c52"
},
{
"path": "package/dist/app/conversation-context.d.ts",
- "size": 592,
- "sha256": "1f9c6996180c1cabf0eb1bd3fffc2fa33a8729c563fb3be8ae6e8b27e5573f45"
+ "size": 1380,
+ "sha256": "50089dc059c93d09128604e87fef6efc2ae124d8bc688fdcca303b549ea46a63"
},
{
"path": "package/dist/app/conversation-context.d.ts.map",
- "size": 538,
- "sha256": "100df5333f9bad226fada4d0dac63c2be757bc897770648f8d04bdfa6cbf425c"
+ "size": 986,
+ "sha256": "c75d4d97360030d4d6d0a3ba2c76558d73f3f1c465c38d8f1778927a81a85542"
},
{
"path": "package/dist/app/conversation-context.js",
- "size": 9194,
- "sha256": "3df88fc0478d3473ef80ab240ed2c9db61cc9153e0b78306b1a8254d4218a274"
+ "size": 20841,
+ "sha256": "2aa16eaf3eb2ff2d1cc650072f44105f56632ca039995bf71eb5dfd530249d29"
},
{
"path": "package/dist/app/conversation-context.js.map",
- "size": 9331,
- "sha256": "efa63f57fbf57603fc067d604dd7b346680ebc3facf7d6bcbce9ddf390c4313d"
+ "size": 20256,
+ "sha256": "f499c7fb2eb2dcb4f299d4dbe186008e83c3e435d193983c9e2183e32e29203e"
},
{
"path": "package/dist/app/conversation-drafts.d.ts",
@@ -3618,17 +3958,17 @@
{
"path": "package/dist/app/conversation-import-builder.d.ts.map",
"size": 742,
- "sha256": "9bf4e14c22f386ff2bf25ca01bc4c16d7aee3cd25a08dc66e38c3bbe78c4c894"
+ "sha256": "d40322fc6184c560eed49cb1a56aaae2d9202701b01fb369549109f38862e8d0"
},
{
"path": "package/dist/app/conversation-import-builder.js",
- "size": 9301,
- "sha256": "6e4676b5530fb8631c0f614e1db47d6750fd873b09842cb92488df8c3ca55165"
+ "size": 9234,
+ "sha256": "3911a97a851eba627ba67a18fd7f3d974846ea0f733ef4d3e144d077caa46a0f"
},
{
"path": "package/dist/app/conversation-import-builder.js.map",
- "size": 7721,
- "sha256": "cac83763473f0c22d10cf0a7ae3f9bb53ff3a2abe718ef6337649ca871ad5c17"
+ "size": 7656,
+ "sha256": "5cc5135b5ddfc554e08e72616a1e473f26c80423137340193c804fe20521668e"
},
{
"path": "package/dist/app/conversation-import-document.d.ts",
@@ -3702,13 +4042,13 @@
},
{
"path": "package/dist/app/conversation-import-runs.js",
- "size": 15278,
- "sha256": "9c10dd846d95bd5a2831ef73d9a6b165ced7d08427041a4ae5569a038a8b08df"
+ "size": 15359,
+ "sha256": "9bdaedc3ab463d4ca3c2f8efe45ec437122bc37133b588b0e3760a428bfd3c47"
},
{
"path": "package/dist/app/conversation-import-runs.js.map",
- "size": 14433,
- "sha256": "05cce2c933b2be798544080d510cfed7ca46781154553c98109fa8a985f0d6c2"
+ "size": 14554,
+ "sha256": "651e388dc22d5557f97c27f85ec2011e65610e179cd05314100d41414cf21acd"
},
{
"path": "package/dist/app/conversation-import-validation.d.ts",
@@ -3778,17 +4118,17 @@
{
"path": "package/dist/app/conversation-lifecycle.d.ts.map",
"size": 885,
- "sha256": "a9628197a5ae2e83e7da5ca594ca9e5d2bbcf3adb152f59c7229de47fe08851a"
+ "sha256": "4652650a70013b17d76415fa1a7f832d61d5dc50e35af4a8051c202b59517c5e"
},
{
"path": "package/dist/app/conversation-lifecycle.js",
- "size": 14478,
- "sha256": "0717ad9083a658176e68fdbf5a489fdd08ca5cff811fa6610823a437b958d3c6"
+ "size": 14672,
+ "sha256": "243432cbd3a90c6711c91dabee8f779ba55ff1b6809809a9c707e147f0c88b39"
},
{
"path": "package/dist/app/conversation-lifecycle.js.map",
- "size": 13073,
- "sha256": "2ccdca3c75af53221ef15d3d3458daab54d3f2bd944793b934d50ee18a2ccd0b"
+ "size": 13199,
+ "sha256": "326ce196fb522df63b70993d9e52b53100763d37d65e460fd8eabe65f30bf9cb"
},
{
"path": "package/dist/app/conversation-operation-coordinator.d.ts",
@@ -3812,53 +4152,53 @@
},
{
"path": "package/dist/app/conversation-records.d.ts",
- "size": 1457,
- "sha256": "75ba551e7fbd28ef8a665dbb9137862dcb360790d6e95f5cad1634edd869c5c5"
+ "size": 1485,
+ "sha256": "eff75250b9630e8c19dddc525e09bb67eb5f88b5506fd5fbfd23c19a4999123f"
},
{
"path": "package/dist/app/conversation-records.d.ts.map",
- "size": 1498,
- "sha256": "f0590c78a3151e08fed7a2da0c9c12361f5743890f75ebe62e655572cf3ebff6"
+ "size": 1541,
+ "sha256": "aaf63af1219ab9e350f6924f62435f88819ff2c8139ab988036667a8711c8fdd"
},
{
"path": "package/dist/app/conversation-records.js",
- "size": 3794,
- "sha256": "225ca1d0ecba94b1a7141740a0cdce6b0d73a04ca34bb46e9ef2c5d4f2c25e60"
+ "size": 4834,
+ "sha256": "fa11a72354de9f5bf2bd573aed360f50e86ee6e3a82ab79502ceb44d231c6afe"
},
{
"path": "package/dist/app/conversation-records.js.map",
- "size": 4215,
- "sha256": "580a7739b483e9ceb1a941fb20732c1eae04497e219a0b4196af3b019a4594c8"
+ "size": 5188,
+ "sha256": "17a17c5cf7aeb4fbfe9c2fe8c810d6e5280bc220718bd6f6ca2d7788895b8c91"
},
{
"path": "package/dist/app/conversation-support.d.ts",
- "size": 2371,
- "sha256": "02eb98d5536bfe116a073152338d3c7c8f9a6ff131c52fca7f0f495412df9efe"
+ "size": 2292,
+ "sha256": "1348d2565796331289a3c1e496f907a1c094479818ba57de544651547abab715"
},
{
"path": "package/dist/app/conversation-support.d.ts.map",
- "size": 2201,
- "sha256": "318495f5a95534549776f5d2a0ce0e22fc98eae92606ed59d4f60c4d15872d41"
+ "size": 2128,
+ "sha256": "670ed7157e76add54139aa1451ac606594fbd504ba6547c5ae4f41cea14925ca"
},
{
"path": "package/dist/app/conversation-support.js",
- "size": 4199,
- "sha256": "7f3d78a6bef9e79efeacc3d365b978ac39f7fbc0cfa856045fc930070a911999"
+ "size": 4014,
+ "sha256": "5a61ca4fcaeb68e3c9ec8b4a903b2aa74e4524057f00024f5fcff404ecf73c50"
},
{
"path": "package/dist/app/conversation-support.js.map",
- "size": 4329,
- "sha256": "e4dc4c625afa714ce6508c306795cae52aa7aaccf2e4c0f01a782e5d4737089d"
+ "size": 4158,
+ "sha256": "45ee762138499d7a1bc6396c45fdb846cc60b64eca8cdea6a5bed202bc7fc622"
},
{
"path": "package/dist/app/conversation-types.d.ts",
- "size": 3279,
- "sha256": "dca36445d8f572586c116c63de8e11438847eb93a733a73fe3fe687ccd3b613a"
+ "size": 5334,
+ "sha256": "ae370c58f4e1061056b5acd911a692f5759472e02d420bacd46fd34ca9477068"
},
{
"path": "package/dist/app/conversation-types.d.ts.map",
- "size": 3365,
- "sha256": "88f32ca7d631acc6f69f215f3d1bf88a57b02cf017011325a4473676c1d1bb54"
+ "size": 5106,
+ "sha256": "b8c70b8be74825f19cab057507fca091e8af2d9b12a23838e87b9888e7449b15"
},
{
"path": "package/dist/app/conversation-types.js",
@@ -3892,13 +4232,13 @@
},
{
"path": "package/dist/app/conversations.d.ts",
- "size": 1628,
- "sha256": "de8d8d448a6fd9975df48b988ea75da49d42fbf47214ed13c3d77ec0c9536df6"
+ "size": 1735,
+ "sha256": "eda2a2180f80aeed41f84f92d9b342c469fd96bf3b6764adb9f84f413ba5e22b"
},
{
"path": "package/dist/app/conversations.d.ts.map",
- "size": 1078,
- "sha256": "7ae3d9cb456e97d21a2fe5488a3ef0c4f43c100b17f998b979c22eb6859ef5a6"
+ "size": 1130,
+ "sha256": "74e23af92d383da8ef969d8542a50e2590469447dea5bece355608c72610bb19"
},
{
"path": "package/dist/app/conversations.js",
@@ -3910,25 +4250,45 @@
"size": 913,
"sha256": "f2a26035fddd5c902ad2c0aa42ece21f6e8b61de0d6c82154fb033b00bff1efd"
},
+ {
+ "path": "package/dist/app/default-profiles.d.ts",
+ "size": 245,
+ "sha256": "44235eaa4b648e9642f46d56e2d322e8eb42bee4bf37836389049ce10b00ab0d"
+ },
+ {
+ "path": "package/dist/app/default-profiles.d.ts.map",
+ "size": 284,
+ "sha256": "41659325c83a7147a319e7c1eb897ba9f2667df1d0d16ea947b49756e7a0b954"
+ },
+ {
+ "path": "package/dist/app/default-profiles.js",
+ "size": 584,
+ "sha256": "6c8ede70f95d1351c8824607e711ec6a6326945ced9c41ab1e9ec253d5fbd085"
+ },
+ {
+ "path": "package/dist/app/default-profiles.js.map",
+ "size": 488,
+ "sha256": "dfab73857dbf60e041cf1032062e747c55be0e909656873d4dc6b6670e75f636"
+ },
{
"path": "package/dist/app/durable-send.d.ts",
"size": 1767,
- "sha256": "431a9b1c1440ffa6e609cd1cffa779aba5554e1530b9db093020e46e2a75461e"
+ "sha256": "733e1ff84ccf13c13d254373851df4556e541c92d51c8cbf0b7d2ac6ce5ddae3"
},
{
"path": "package/dist/app/durable-send.d.ts.map",
- "size": 1697,
- "sha256": "ace0a99f1f0550ec8f2a62600a8a6a8055730ab62ade2c1d1d2dc403825e943f"
+ "size": 1698,
+ "sha256": "5353c2084df9f348db51b09e4c7edf4e8f5357316a19a532319adb61e4aa9e5a"
},
{
"path": "package/dist/app/durable-send.js",
- "size": 4021,
- "sha256": "b708d70c65e4e9bbfe4c4a684aa5d59be5a43f206e29e20ace7c0615877812b0"
+ "size": 4386,
+ "sha256": "c3636e0e0d2a485b726eb75f4a33c6bc338acaa73d8342ae8dd9e42eb0088afe"
},
{
"path": "package/dist/app/durable-send.js.map",
- "size": 3776,
- "sha256": "b23c1b6cf577fbb22b6fda1846b36e1195e64917adaefb9d4cabcdfdaae17b11"
+ "size": 4205,
+ "sha256": "d75b9eef8e41985e0237ab8463f4dc62d5204afe934cf8c520610f2fe439b8a3"
},
{
"path": "package/dist/app/effect-coordinator.d.ts",
@@ -3970,6 +4330,26 @@
"size": 1110,
"sha256": "c47e9e0b3d0c634b625c193d54970b544b4fad317afd55aa4a18dbd717f1e155"
},
+ {
+ "path": "package/dist/app/effective-run-configuration.d.ts",
+ "size": 920,
+ "sha256": "4fa3833dded7f4a00b364dfebfb0d88b8b48bdd3ddd43532156f8166c41b9887"
+ },
+ {
+ "path": "package/dist/app/effective-run-configuration.d.ts.map",
+ "size": 745,
+ "sha256": "57c17a2bb2d1790f87ffa7b04fbf9ef44201e49b6a4874b65ff1095f032cea52"
+ },
+ {
+ "path": "package/dist/app/effective-run-configuration.js",
+ "size": 2956,
+ "sha256": "3a6cdc3f335afab940934873fbe67f307b0900e1a846ecabfbdb2be31a7a6f66"
+ },
+ {
+ "path": "package/dist/app/effective-run-configuration.js.map",
+ "size": 3037,
+ "sha256": "c8c57bd87c6f1baf7f9215647ce9e22ce8047cb7540bf4fee970b17263a002ca"
+ },
{
"path": "package/dist/app/errors.d.ts",
"size": 159,
@@ -3998,27 +4378,27 @@
{
"path": "package/dist/app/fail-closed-journal.d.ts.map",
"size": 746,
- "sha256": "1800cbf712fc5190ae59bdc7bb73cbf4ef458caa0d5574a63348a4084c03e4e8"
+ "sha256": "9f02c1f8f25f1a0c34ea2ff267aba0093c4fd14b32aaf5b4723c1832181883b6"
},
{
"path": "package/dist/app/fail-closed-journal.js",
- "size": 1007,
- "sha256": "4b9a99ff51be73621af905a8762eec202fdafbc5b45bb5ea7f562eb98d13847e"
+ "size": 1278,
+ "sha256": "76fac0557ab4fa66e712a15a0af1e317a8ea31b99fbcac0c289ce1b015ebf5ac"
},
{
"path": "package/dist/app/fail-closed-journal.js.map",
- "size": 807,
- "sha256": "938307c743f3980f369963212bd15ae553bd450c12918db700f2672d8d872ec8"
+ "size": 1078,
+ "sha256": "ae7ae930cc88fba4a67c63ae4858afdf989622ea525717a5cb9816665d0ae3cd"
},
{
"path": "package/dist/app/intelligence-actions.d.ts",
"size": 1527,
- "sha256": "8eb57deea943e3ea777d6410caf41600f5bc0a6e55c611698c56863b30290e77"
+ "sha256": "e619222b5ab9032346602699ebc90260874e17b5169ba0b09e1644898c536d3d"
},
{
"path": "package/dist/app/intelligence-actions.d.ts.map",
"size": 1002,
- "sha256": "0d85baee153f3cf4e32894114d1e1856ceb2482abc46b41162cff81d3124796f"
+ "sha256": "d144d0a043dac44b14b06bb913088549b5ef453c71340d126752025fd83f2dd6"
},
{
"path": "package/dist/app/intelligence-actions.js",
@@ -4028,7 +4408,7 @@
{
"path": "package/dist/app/intelligence-actions.js.map",
"size": 1097,
- "sha256": "32d2656a6388be0a204586efe124df7cde5dab1cfe5a3a9c471cbfc1dc6afd0d"
+ "sha256": "f6cb121045f859466b0a0181331736af6f86455bf8695673c7ed64268da9d596"
},
{
"path": "package/dist/app/interaction-automation-coordinator.d.ts",
@@ -4053,42 +4433,42 @@
{
"path": "package/dist/app/interaction-controller.d.ts",
"size": 1648,
- "sha256": "b44b7b750bf8b1a07694f245623cb65859df914e96b5ddc7ffb09ee8bfcd0614"
+ "sha256": "a71dcc238f654739cfcff4458ea99c053c997e574488fb58639a38b963db96ee"
},
{
"path": "package/dist/app/interaction-controller.d.ts.map",
- "size": 1550,
- "sha256": "8e634597f2ef0d877a530373ee3911afe8179042191ab2fd333a876ecb702658"
+ "size": 1551,
+ "sha256": "adba7f01cb6ddd581c6bcd939f63ce0ac476e66309002eea78188c6ec5823617"
},
{
"path": "package/dist/app/interaction-controller.js",
- "size": 9887,
- "sha256": "063656c58597137cc23dc6d13c8ec6dad964a0f646c69917d6ecca7759a42714"
+ "size": 12447,
+ "sha256": "581f5a37e45141e2afd5ad69f1ad4c3ca52b6069af2e30db48ea0d7c6009abea"
},
{
"path": "package/dist/app/interaction-controller.js.map",
- "size": 8768,
- "sha256": "732902a742ae6546888855678bea8b52ad8fe1cad698cc332004504f90204bd5"
+ "size": 10741,
+ "sha256": "4c92f41d0ea8744ca619df8ec995fa311aed37ffa496d9b967526bd86dbd6a8e"
},
{
"path": "package/dist/app/interaction-effects.d.ts",
- "size": 699,
- "sha256": "a71c33db0ed9f16e306f2b2239265fa167c5df52fbfa899b7e9a0578d1ec0bc0"
+ "size": 791,
+ "sha256": "b5b069ebe5e8e1bbdb6ddb306accb4e24693ab71bd81f89f6c10a656fa9a31fe"
},
{
"path": "package/dist/app/interaction-effects.d.ts.map",
- "size": 652,
- "sha256": "5aba23668c8ba7fc14741e5e9aa3aa9a3987569d04b3c2dc498fc22565a48697"
+ "size": 709,
+ "sha256": "06559053bfd35012ae6cc9307bb1760d42d14d6600423790b9d039601dbf9392"
},
{
"path": "package/dist/app/interaction-effects.js",
- "size": 3430,
- "sha256": "f6cc7a4c42585795cb5e8d6a561385d799e5064b2914f24e711386c7121726a1"
+ "size": 3566,
+ "sha256": "c7a1fb6fc2c1611920e373728c45787046ae606d195bf825106740f471f00d77"
},
{
"path": "package/dist/app/interaction-effects.js.map",
- "size": 3125,
- "sha256": "ea028cb80c92fc0578555525b369bb2ce4fed5c75a98ca8787db82da89bf6e1a"
+ "size": 3266,
+ "sha256": "be097a9a1c0732d82b1ce11249bf1ea4b50fc12d5bc79820f5bae18906ebc573"
},
{
"path": "package/dist/app/interaction-request.d.ts",
@@ -4112,23 +4492,23 @@
},
{
"path": "package/dist/app/interaction-response-replay.d.ts",
- "size": 1532,
- "sha256": "1208a9709e4831147851fd9799a242849d6240d060796377ce073d8ea6f48c45"
+ "size": 1843,
+ "sha256": "538012620d87dc47c9eb0f48b06b1fdab50adc2790a78cdb3c422c20b810ef71"
},
{
"path": "package/dist/app/interaction-response-replay.d.ts.map",
- "size": 1276,
- "sha256": "053109a236ba17ee225bfcb5bbaba0384ff20753c63d6aee43ee6ea6bf39eea5"
+ "size": 1545,
+ "sha256": "2cdb6c2cc5671444c2f947985d33faeb0ee63cd42642db9d572bed94dceef5c7"
},
{
"path": "package/dist/app/interaction-response-replay.js",
- "size": 2642,
- "sha256": "9e27caf4629c653be4bbb7ce4d6cd2c97f13391805853fe146515ff776aae31c"
+ "size": 3074,
+ "sha256": "9ff7beaa572bb97392f248e95f645ce355bb533396820900178fd1cf0d647905"
},
{
"path": "package/dist/app/interaction-response-replay.js.map",
- "size": 2355,
- "sha256": "ab4128db2067e7d7a721ea1aac2f438878c8fe4a1e6f6d312d755403e7018a5b"
+ "size": 2768,
+ "sha256": "f515292bd5351a768ccc3af2a0f202be88189a37a7372b8d93bd01c355ecb397"
},
{
"path": "package/dist/app/interaction-response.d.ts",
@@ -4158,17 +4538,17 @@
{
"path": "package/dist/app/journal.d.ts.map",
"size": 1368,
- "sha256": "e1e7eaaaa913ed7f39f567ec1b40a66e98258cd3b867f3df25cb451190ed7786"
+ "sha256": "42d45cc5f66bc6b38f12716a5f30266d3414bc7c47dae264ec71c25ff2ce916e"
},
{
"path": "package/dist/app/journal.js",
- "size": 3324,
- "sha256": "fc7a979d7dbb14b65ee3375bfa9215d7d0f91f1c4d9d0c0425690c5131e7f605"
+ "size": 3519,
+ "sha256": "313fc9cece344240b542e3bcb605d59c8161ba924be5c56af55ed6d35b5b0066"
},
{
"path": "package/dist/app/journal.js.map",
- "size": 3436,
- "sha256": "004251bc751ae546f952f1ff477afe579d04f015921aff71f49f33c8f3178524"
+ "size": 3641,
+ "sha256": "879573dab8d5b04cdc02a2df5a0bec967772107c8dc0db66e24e9b790e65bf5e"
},
{
"path": "package/dist/app/legacy-cancel.d.ts",
@@ -4182,13 +4562,13 @@
},
{
"path": "package/dist/app/legacy-cancel.js",
- "size": 1929,
- "sha256": "bc6cdaa3a25fc9ae57458846f56ae525a2e78ed1bf36445a5a7658b40b76f78c"
+ "size": 1898,
+ "sha256": "820ccea77e73a4ca1e9b3d53446790d74a2a678960a2aa9254d67fb48b2dd7d6"
},
{
"path": "package/dist/app/legacy-cancel.js.map",
- "size": 1854,
- "sha256": "5f4a7be556833b146d1191424e88593822570f038adbbb91a30211914f61294d"
+ "size": 1824,
+ "sha256": "dd32c33e280204094cb60fb649e4a7a3536c7f41e10d81777337555259cd5b06"
},
{
"path": "package/dist/app/operation-fingerprint.d.ts",
@@ -4232,33 +4612,33 @@
},
{
"path": "package/dist/app/production-composition.d.ts",
- "size": 2228,
- "sha256": "a1e5fd8a3b032cf3e8f350adcc94f90979518cba49ac756b497c983aed74e2ad"
+ "size": 2549,
+ "sha256": "825be10292c8c9f930d0edeb67701dd3d99984e39d83fe6eec226ef4316f8e22"
},
{
"path": "package/dist/app/production-composition.d.ts.map",
- "size": 1392,
- "sha256": "efd65f3408f3f767ad24edc193cd048a1c842cd18e32800c8e945e219de98e1e"
+ "size": 1578,
+ "sha256": "cda86ffa594e6dea016d6146bee1e904d104ce3e9deb0ed0a9a123c590d08d02"
},
{
"path": "package/dist/app/production-composition.js",
- "size": 5582,
- "sha256": "67a436ad1fe04c9145b7488cdeed6d3603748a5a24cd4b24bf0e34de98659f34"
+ "size": 11675,
+ "sha256": "7fa98c871ca11c0c5d8386b6cfb598c927557944ec2bab01ef2c75a80180df04"
},
{
"path": "package/dist/app/production-composition.js.map",
- "size": 4397,
- "sha256": "e0b52554bbe95022409c7c6cf3c3ccebec5456e87295f367c6d837c4d742bcae"
+ "size": 8772,
+ "sha256": "180e5736c4d11cb0ff07d574e6a15de0417d8ae08a30d18efad18f8764bfe714"
},
{
"path": "package/dist/app/profile-action-support.d.ts",
- "size": 4406,
- "sha256": "31fc560af564b06a6462e0bb1a7ef6d289297d9e5196bb7dd563290628d29e7e"
+ "size": 4481,
+ "sha256": "06619ba62688030f03c4dbc3f2dce6d5e7247650b692605e84f86c22b9362595"
},
{
"path": "package/dist/app/profile-action-support.d.ts.map",
- "size": 3349,
- "sha256": "9a06a0aae7c92c9f529a5bb74bacb36369c1ab821e3c91b160bbc89b75a1be7c"
+ "size": 3351,
+ "sha256": "2b0850bf546c8131a1d1aa84299f9465f42ed09a7783e875e8ae770f042addad"
},
{
"path": "package/dist/app/profile-action-support.js",
@@ -4273,12 +4653,12 @@
{
"path": "package/dist/app/profile-actions.d.ts",
"size": 2815,
- "sha256": "e944560e5c72bacc7d79d22bd6067000354861e48f7a3fced802300b536263d9"
+ "sha256": "cd806c920d7ac34aaec1ba56e9d1dc7d423d0c344727c2f9c102d83518b00394"
},
{
"path": "package/dist/app/profile-actions.d.ts.map",
"size": 2605,
- "sha256": "b841eec6b6c075305643859146adf2fcde8470699dfc43431f773d048b883c89"
+ "sha256": "b0af63069bb4ff5812e7345ee349908539cc6d8461a57346198844995791b702"
},
{
"path": "package/dist/app/profile-actions.js",
@@ -4288,7 +4668,7 @@
{
"path": "package/dist/app/profile-actions.js.map",
"size": 11434,
- "sha256": "0075b5e108eac09922d0e0ffb12d023c2d30727494becead8f778f490f040763"
+ "sha256": "551da49273bea03e26a69eebea1f37886c6bbfbf28167c5b279abf77b3487bfb"
},
{
"path": "package/dist/app/profile-draft.d.ts",
@@ -4298,37 +4678,37 @@
{
"path": "package/dist/app/profile-draft.d.ts.map",
"size": 717,
- "sha256": "f697b0034c56613df2b40071c3eac3858c485b6820329218f24fcf9904b04f1f"
+ "sha256": "7d0795ed7254aa67def38a43d75487709494afbc3a54397feb35b78d472cf3b9"
},
{
"path": "package/dist/app/profile-draft.js",
"size": 3275,
- "sha256": "fcf302d43a458d18bf61f358f33da536fdb79995e83c94196261e41dd93e145f"
+ "sha256": "e158fe5df479416a68f294dbd278bd927102de5430701ed12a448aef23e273c5"
},
{
"path": "package/dist/app/profile-draft.js.map",
"size": 3065,
- "sha256": "d6b2b406c0f9e2aa322e1da94b806985182f382ec7b76b0026972fc3ed826128"
+ "sha256": "c7d9e50735652ada80f12c7756ff0d75cc3c3d017c65496571aee6d4159f756b"
},
{
"path": "package/dist/app/profile-model-settings.d.ts",
- "size": 419,
- "sha256": "d1569631d4dae9301dcea5ad1c679f409ba87169a62630ab5a6e7b0a5161a731"
+ "size": 512,
+ "sha256": "d8e68b6ccf2414bdf38bfd4a413c072a6534c735b07d1d3edd0754b01b380f43"
},
{
"path": "package/dist/app/profile-model-settings.d.ts.map",
- "size": 387,
- "sha256": "a253afec90c457cbbd74599a84fbe5f7a4ef5c8951803a2c905f6d8064aa852f"
+ "size": 475,
+ "sha256": "997ed72fdbdfea17a64030268d6b73e0fb01da9fd36c9318a73271b928cfad7a"
},
{
"path": "package/dist/app/profile-model-settings.js",
- "size": 648,
- "sha256": "e2291f11aaf8e88a108fdb206b00d6e403c677b3fa9aaaa958473f7069da137b"
+ "size": 1002,
+ "sha256": "3e1a05507623867d584f644b90ca2307f26b1e77dccddcaad1d8f3dd9985b8ea"
},
{
"path": "package/dist/app/profile-model-settings.js.map",
- "size": 690,
- "sha256": "e747d3d563ac1fc2b25cb6651ab5e67dba12369efae19e0d64317fec7de334bd"
+ "size": 1049,
+ "sha256": "dbf799df822bf12f265d8166178697d3fa3619bcbda4f40505f28bc083c6e129"
},
{
"path": "package/dist/app/profile-persistence.d.ts",
@@ -4378,17 +4758,17 @@
{
"path": "package/dist/app/profile-selection.d.ts.map",
"size": 357,
- "sha256": "c1374184c84dbd12f671c2f118d9ed7f6af3221f23d40c56da4642bde2d04818"
+ "sha256": "c4e7a67a2b2fbbf562a177f2fd03eea76ca4932e804e50514065d89392a3f1b2"
},
{
"path": "package/dist/app/profile-selection.js",
- "size": 5121,
- "sha256": "fd193ec876ce3c29bc2aa9029cd019b470d6f6527bd4df65c6413d2d57f49094"
+ "size": 5547,
+ "sha256": "4716aff60c6829188375226e3c7b217c7446bee82fd9f5657c4b5f003d771f51"
},
{
"path": "package/dist/app/profile-selection.js.map",
- "size": 5176,
- "sha256": "2dba3bc570c6bc0cc7d9cfe2a69c72e8015316a11d365262117809d55cf73db6"
+ "size": 5579,
+ "sha256": "04fb1ac322ca691c1d5905674ba7610731c452a0db521767e614b8b66c4d96f6"
},
{
"path": "package/dist/app/profile-snapshots.d.ts",
@@ -4413,32 +4793,32 @@
{
"path": "package/dist/app/profile-sources.d.ts",
"size": 1629,
- "sha256": "a96f2214ed2261147ea4a2dcf23c5daf9570d44aa6af784a45aeac11b7202250"
+ "sha256": "ede481f8ae3c36fa4774985fd51665042b8ff6155feecf049328939f18120716"
},
{
"path": "package/dist/app/profile-sources.d.ts.map",
"size": 1142,
- "sha256": "18ed9d07e76f57014cf62734a6e6765201e938ac1530e2b921c4e8b08788b6ed"
+ "sha256": "b38ff49eb6a324c1872816b17990b15d7acfd7f14740136114a741f6f762c23e"
},
{
"path": "package/dist/app/profile-sources.js",
"size": 6121,
- "sha256": "6c70c04de831cdbaabbf6a2deaf209499a0c1e3f5d24d1a0dfb8d7c5d801f125"
+ "sha256": "d0f8ac591ea43458016b028a86f7f8821b09e9b13850fcbf84b76b815241e7ad"
},
{
"path": "package/dist/app/profile-sources.js.map",
"size": 6203,
- "sha256": "d61b69e181bb79317ab90db0d8ad8123704d3a7d0679152fc5b80e0b9d0865cc"
+ "sha256": "2e5e012e39aa2b757b2e335de8e27ab3564446843bd4c4478bb42f42ea5f8d68"
},
{
"path": "package/dist/app/profile-types.d.ts",
- "size": 9628,
- "sha256": "cdf7d29d5ca4f4af86740476b332c9557db0afee48879a1dda6523e7a6696e05"
+ "size": 9645,
+ "sha256": "76949f65e54e3f2d5a422757527b454f3ddd5562ac6afa5936dc4915fca37721"
},
{
"path": "package/dist/app/profile-types.d.ts.map",
- "size": 8508,
- "sha256": "c190c65e1a377546b3e4e55475e46d8f22b6a1402e4c3e559d0d52e6a0eb277b"
+ "size": 8533,
+ "sha256": "52023fb8e6fe89303ee0ca45e488801caea2747ac003eb03b1bd97005c92583a"
},
{
"path": "package/dist/app/profile-types.js",
@@ -4472,13 +4852,13 @@
},
{
"path": "package/dist/app/profiles.d.ts",
- "size": 4115,
- "sha256": "46998cfa533bae618cbbdab6d6b5b4066665f89312f649f1e422e3ceec784509"
+ "size": 4208,
+ "sha256": "a870985e96f4506ad445f2fdfe7e10058f25d358341dca02600547e776bab61b"
},
{
"path": "package/dist/app/profiles.d.ts.map",
- "size": 3105,
- "sha256": "8e1414e0b583d1e4bcf6989c79e487e3851f0ff0adbc3ee594b0a3d00c0b33fc"
+ "size": 3193,
+ "sha256": "6d73d7d14d580e4dcb2a02cfef42b6987cfb7698792079ca041ef2d8c0d9f102"
},
{
"path": "package/dist/app/profiles.js",
@@ -4488,7 +4868,7 @@
{
"path": "package/dist/app/profiles.js.map",
"size": 5498,
- "sha256": "3321732458eb8117b28106afc8f15161967be2868bdfa3b1c7f8ef8e5ad63b55"
+ "sha256": "49f51eb4a954aa6ee7b219e8a2c24e3402b2a04e42f6814b599831c6059790ac"
},
{
"path": "package/dist/app/provider-snapshot.d.ts",
@@ -4512,43 +4892,63 @@
},
{
"path": "package/dist/app/provider-values.d.ts",
- "size": 972,
- "sha256": "99b0641c543382ecedafa0451a651a384aab13ebfac154626f19af27e4501129"
+ "size": 734,
+ "sha256": "fc2a5d64791548d0534c70ea8b986e7f2a7c1e30f2604f994806834cdf14e3ef"
},
{
"path": "package/dist/app/provider-values.d.ts.map",
- "size": 520,
- "sha256": "108546a575ffdc0d5451c35d487c9b45072f45288a5534f8966eb93386bb8a96"
+ "size": 319,
+ "sha256": "2b0bd91f3d59a88a4ce2c265c792ba4528491376446e417f6d37b85c72f01caf"
},
{
"path": "package/dist/app/provider-values.js",
- "size": 1492,
- "sha256": "e62072b934feb49a17ea8cf2de39efd47dd072e004b81a99826699d4f652a7fa"
+ "size": 2305,
+ "sha256": "2d1c4628bc965ec803338639e7f7a06ee83a963f3e71ddbffe73d9d9c79921b8"
},
{
"path": "package/dist/app/provider-values.js.map",
- "size": 1052,
- "sha256": "df4f4f5db5afaf0a07cd9691b2e3980401681be09a5c47970e93a775ba952df0"
+ "size": 1886,
+ "sha256": "fb0b5c2356c14a5a4336662dd10c0af8304041bc8ab332e63fb127348a649304"
+ },
+ {
+ "path": "package/dist/app/run-admission-context.d.ts",
+ "size": 177,
+ "sha256": "752b8e5d4b9424c5e7363e087cd11776cc4521bfe323649260b484b3f6421eec"
+ },
+ {
+ "path": "package/dist/app/run-admission-context.d.ts.map",
+ "size": 246,
+ "sha256": "12673f5a8fee8e43b1230ec98453597efb6b74a80256fb88063b357b924e2998"
+ },
+ {
+ "path": "package/dist/app/run-admission-context.js",
+ "size": 4731,
+ "sha256": "c754e6c05f025c03c50331de644175e28a68c7f61554fe2c6bd7a8987a6336f1"
+ },
+ {
+ "path": "package/dist/app/run-admission-context.js.map",
+ "size": 3485,
+ "sha256": "f074a3930fe126a1d8fff06d2451cc9bbcbba5808e89402046861800d53a5faf"
},
{
"path": "package/dist/app/run-admission-continuation.d.ts",
- "size": 382,
- "sha256": "ff8544bc0ea411e8f2e615b48c69dbb9eb29d6de7f8c4b664a4d7ec7dde1f8e8"
+ "size": 418,
+ "sha256": "a37b0a698b02a369de22bedf0da53ee855240913a00bbb5b6f8910cb65c645db"
},
{
"path": "package/dist/app/run-admission-continuation.d.ts.map",
- "size": 454,
- "sha256": "42120a48654896d95b209e36c502e4dabfa78d6b47b7947844a0f90f9c7a4562"
+ "size": 497,
+ "sha256": "7c8eacc78947f2c5376b8d4cc565a70862071045d43e49c637c9af928d67bb1a"
},
{
"path": "package/dist/app/run-admission-continuation.js",
- "size": 1378,
- "sha256": "f497537caf6052d8aa76dcaa767055277090e4e3bffc84be2b8337e2b1487db3"
+ "size": 1604,
+ "sha256": "89b9b05e232aa05ded01a7de284c2bf9c4c4d22464bdc97dae06e4b023de8788"
},
{
"path": "package/dist/app/run-admission-continuation.js.map",
- "size": 1334,
- "sha256": "19943d47120017ddcec53032f4a9a1dd48801a56eebf56d1a4501ec5c62ff7e6"
+ "size": 1430,
+ "sha256": "c673737230bd109dbb9287e34be48eb1f0cdefb17cd3022baf3893f638d0ca6f"
},
{
"path": "package/dist/app/run-admission-dispatch.d.ts",
@@ -4558,17 +4958,17 @@
{
"path": "package/dist/app/run-admission-dispatch.d.ts.map",
"size": 587,
- "sha256": "11abbe9910e8cce14d41e39090d59643a51d1e55194f4e5c8d1c95d0a8f00424"
+ "sha256": "4bf22a9912be747351ba7f757e414e3967a92b9fdc03e63560a005949a850e21"
},
{
"path": "package/dist/app/run-admission-dispatch.js",
- "size": 6933,
- "sha256": "359597edaa3fda34f631b87dd8630e4906cd8d4521c748155b3a51e70db79546"
+ "size": 8977,
+ "sha256": "14144520ab683dbda9ff32342f0f49737590f92346e941de93eb75275fe822da"
},
{
"path": "package/dist/app/run-admission-dispatch.js.map",
- "size": 6702,
- "sha256": "d60e57abe3f01739aac511883da516aa11a470fbf2bc552592f594bc0ba792f5"
+ "size": 8596,
+ "sha256": "7dfa8519d2904f38745385653a4ee96b99dcff2829c9da3ab5869ea5fdb7623b"
},
{
"path": "package/dist/app/run-admission-receipt.d.ts",
@@ -4577,18 +4977,18 @@
},
{
"path": "package/dist/app/run-admission-receipt.d.ts.map",
- "size": 1034,
- "sha256": "3075665591e8b25e64de4179883ec2af120b6d6947417b460a04e1231c2b5cb5"
+ "size": 1035,
+ "sha256": "8d99b383e6610259ca7a19a13716416821700ffcc93b444f0efcb72c54691196"
},
{
"path": "package/dist/app/run-admission-receipt.js",
- "size": 4959,
- "sha256": "73b2783ef4a0980d6f2df1880a6868b95db52d9f1fa9cb263e2c5f9d5758de5c"
+ "size": 5519,
+ "sha256": "f70cee71f58bc7b13cd6b34a87ebd579c9da11af8c3e15651dad2d788e303873"
},
{
"path": "package/dist/app/run-admission-receipt.js.map",
- "size": 4931,
- "sha256": "2b800a02eec76b08e5ee5e991a1dd734d38def52fd865c12813a52a922c97017"
+ "size": 5541,
+ "sha256": "361774af3c647e202379113e80980d2960ead12dcac24345dc8a23d4314653a6"
},
{
"path": "package/dist/app/run-admission-request.d.ts",
@@ -4597,78 +4997,78 @@
},
{
"path": "package/dist/app/run-admission-request.d.ts.map",
- "size": 550,
- "sha256": "39e7d82ccd9af264eb0427c9a27625c996abb5c31865ec148049432de210af46"
+ "size": 552,
+ "sha256": "a02dc37610d4dd23584a93f31d983aa2a7f298be69b7d29decb84b437753e4f5"
},
{
"path": "package/dist/app/run-admission-request.js",
- "size": 1556,
- "sha256": "02490b1e83e06458e8075e115f759ea4ce362872d437dcfe78fdb4c1178bd58d"
+ "size": 2536,
+ "sha256": "efb471789acb4fb836cc75429a92fb33e1dae6a1633dad92c6f9ea3e5b7842ec"
},
{
"path": "package/dist/app/run-admission-request.js.map",
- "size": 1585,
- "sha256": "b60b8dc448386d738f0cd0e02ad563d47c5bc232ebaac1f390610f37c82baac4"
+ "size": 2543,
+ "sha256": "9891b3359953a61c77d4278701de0f5fed751516a16d36808ff6206b9af0064b"
},
{
"path": "package/dist/app/run-admission-validation.d.ts",
- "size": 1862,
- "sha256": "2b39aa8d1ad2b3c998928d6a8d56358872a2a23146d0c951b21df03b30004526"
+ "size": 1987,
+ "sha256": "0553c4087ef012996022364ca87f0ece6e0a51afbfc550907d211a778c40f9ac"
},
{
"path": "package/dist/app/run-admission-validation.d.ts.map",
- "size": 1604,
- "sha256": "1c72a0447bf7fd86596addc9baca29dfdbabc024291de93eeaa4b19d95b71538"
+ "size": 1631,
+ "sha256": "0334746cb7b10d06f3388fa78749a447cb282a0e06d1a1bb7e6821074cb011ae"
},
{
"path": "package/dist/app/run-admission-validation.js",
- "size": 6853,
- "sha256": "5a1c767973ac96bf8ae7da8e5247b7e4976b4658e023362f8e84c070f7e8c80a"
+ "size": 6665,
+ "sha256": "2e61d32b541ce4c7657c54e4ff143979ca64672c603397ca0777e1c1a82321a1"
},
{
"path": "package/dist/app/run-admission-validation.js.map",
- "size": 5295,
- "sha256": "f5eee102b0f8d7fa5c8c2b4029b919e084996860c1ee4b1d0dbc32d11c97f9fe"
+ "size": 5183,
+ "sha256": "e34f856159925356107be43c45617ce710bf2cf1da10d278ee7f3c2ed88b90f2"
},
{
"path": "package/dist/app/run-admission.d.ts",
"size": 422,
- "sha256": "33cda4cc25cdb44d980a691b8ba69495f9a6a40bc5bb9961cdf7291451216a01"
+ "sha256": "c4fc48d223c6e3d8eedb75e0994aab753e648997b952b845b280e92ffc54ad51"
},
{
"path": "package/dist/app/run-admission.d.ts.map",
"size": 386,
- "sha256": "b211367ea1bb9b6336e7a4e334a602aab7ad305527de11cf9b4571b7d3efa87f"
+ "sha256": "088e53d2d2b73d6e0636f4822892b64a39a23f5f0f7308ab0c80404bfaf20091"
},
{
"path": "package/dist/app/run-admission.js",
"size": 420,
- "sha256": "1a8639976869e2776e829cbf7475902a65cf766f347ac3064be3027735890a9e"
+ "sha256": "a977d91303d31f6140fa3a516a413d3672453adbc25018831615b1b8b8dbff61"
},
{
"path": "package/dist/app/run-admission.js.map",
"size": 384,
- "sha256": "2884c27ca8682cc63c4ecdf7d62d1c88ddb3420bfffa823ba94670d00b5d35e6"
+ "sha256": "b044cbcc1bf451c9bdd94efaa1e5c20701863fe671d076cd0ac96050b0f96eb4"
},
{
"path": "package/dist/app/run-continuation.d.ts",
- "size": 832,
- "sha256": "da1fcbdeb339b8756ac221178603fdcf09c0ba3cb4e134c68ea887c22f932822"
+ "size": 1075,
+ "sha256": "14e03651bba1a2780b41b4b218fd23811ace4fae2d068785c24b8b5dbbf71b1d"
},
{
"path": "package/dist/app/run-continuation.d.ts.map",
- "size": 671,
- "sha256": "4c7eef809db7e0770748f5f2b5f4ca6498e641d0c286e3d9102a0f2481ccdc0b"
+ "size": 812,
+ "sha256": "3e5c22b40c747bc983a098cb18956b42488bb00975b68993d2831fb0bcddc9ed"
},
{
"path": "package/dist/app/run-continuation.js",
- "size": 1800,
- "sha256": "6b970251252252a2a9db90ef3a2b5ffa32ded3d84fcebbf4cc7be7c1c8cd931e"
+ "size": 2532,
+ "sha256": "19a9766727398d88b3d6f5480d677cf850c4ed69f520f91cfe6e6efe0eee92c5"
},
{
"path": "package/dist/app/run-continuation.js.map",
- "size": 1538,
- "sha256": "3d479fe94f606e707184eb3d22d2a6d1cafa161bae57554c4090891eb5ecdb3c"
+ "size": 2068,
+ "sha256": "52e7c16b4eeb4ca12d89125674fb290edba09630b3d44d3e83182a88fc0e858d"
},
{
"path": "package/dist/app/run-controls.d.ts",
@@ -4678,57 +5078,57 @@
{
"path": "package/dist/app/run-controls.d.ts.map",
"size": 1097,
- "sha256": "655516d8e7136b219224bb428583655658577ceac834af3c2529ad6ea1c00a65"
+ "sha256": "ea4ec323e54825546cdab107167170fdafd7caab7c1ec90e41c1dd83d63cf79b"
},
{
"path": "package/dist/app/run-controls.js",
- "size": 19843,
- "sha256": "df36451f7b9191850dfdfa0648e4165c8f90d8da573e4f40b1a7e6a8d97039d3"
+ "size": 20813,
+ "sha256": "060af5e653bb3c6e188856994bf8db13b3f1f6974fe3a0d0dbbb2997653e7327"
},
{
"path": "package/dist/app/run-controls.js.map",
- "size": 18132,
- "sha256": "6a25cdc743535dd284d67a327849037336931219a04f4e7daa2a6ede73c4b3e2"
+ "size": 19123,
+ "sha256": "892e01dbc57b377991a2dbd32b897864c290e3cf56b48ff9d979a3c41ea5f783"
},
{
"path": "package/dist/app/run-event-mapper.d.ts",
- "size": 874,
- "sha256": "6f1ef804d70196c7e374a52de0f976e1e8f37bbb320bad420bfa1fe2d84a3087"
+ "size": 989,
+ "sha256": "fe861f4d8bf52c721bc92ca7f1526a624832ccfbdf6d7c3a7d00e97953fe9c17"
},
{
"path": "package/dist/app/run-event-mapper.d.ts.map",
- "size": 818,
- "sha256": "05c9229d4e41ca2f2a54b97b228dce7fd00530437d1d4a996b308ee4e18eb68d"
+ "size": 897,
+ "sha256": "484486a3d23c8c843f62296528144b1c535c3763f9cf6944ffd6d067bed517c5"
},
{
"path": "package/dist/app/run-event-mapper.js",
- "size": 18669,
- "sha256": "94a81a7e31334affd8b9670d3f2da7823cacf152710037321154be5d4200ee00"
+ "size": 19619,
+ "sha256": "313122f3706a4d44a71764b2db28ee3fa201ee290ade1b308ab07a96afdd896e"
},
{
"path": "package/dist/app/run-event-mapper.js.map",
- "size": 16997,
- "sha256": "bf4b775720d4e083907ff0f4857eb32acdbf75ef0884e7c71a8a89c759cc6206"
+ "size": 17823,
+ "sha256": "0a0af3c66d9c4a1d7454b2589481c381f72b76ab654470160ed9bccd99ba28f5"
},
{
"path": "package/dist/app/run-execution-snapshot.d.ts",
- "size": 1410,
- "sha256": "50cac31766c87a6e4ec7b1c38df51e87e0d128eea48bb4a663f7e80d84f6c7d3"
+ "size": 1843,
+ "sha256": "44513c6ea9ebcbb2e6e855f5bbfd2fa7e0a588a0a42eb212b5f6f56316d84a62"
},
{
"path": "package/dist/app/run-execution-snapshot.d.ts.map",
- "size": 1068,
- "sha256": "6927220117914198fc98126e6ed1ac6c6eb29f3072b740cb884a0200411029fd"
+ "size": 1344,
+ "sha256": "6c20a2dca48feeb97ef780606976afbfdcf35ad1ff0a6a93845a4c901cc28cce"
},
{
"path": "package/dist/app/run-execution-snapshot.js",
- "size": 1986,
- "sha256": "f52b56f16224cd6948086bbbf2f82e481de874f35220d81e4ba59f043fb0c240"
+ "size": 2515,
+ "sha256": "017d402c3e19257a22a8cd63bbaffbd80b3419eee076cff08a2b73b404c5543c"
},
{
"path": "package/dist/app/run-execution-snapshot.js.map",
- "size": 1985,
- "sha256": "7c5a706520f35a10ed7a8dda98b1c9697f9cc0f5ac01abf03b2affd269ff2710"
+ "size": 2450,
+ "sha256": "0ff02c11b7469b612b32495cb940cce94b3ccad46924cab18e369dd51bd364a1"
},
{
"path": "package/dist/app/run-execution.d.ts",
@@ -4738,17 +5138,17 @@
{
"path": "package/dist/app/run-execution.d.ts.map",
"size": 474,
- "sha256": "a90c94e8c51a8f20457e4c9367818a0ef0a37890a3bd5cb24bd00ef739c13e32"
+ "sha256": "0cdc51b070aed1f0ff706411aa621cca9fd985044df6f51484cff8a99fcdcecd"
},
{
"path": "package/dist/app/run-execution.js",
- "size": 9428,
- "sha256": "ce0729d1bbaccce2173f8d6984c7edcdf3b5f72da9f09dc03c189480c590b551"
+ "size": 11640,
+ "sha256": "77b64c3eef068326f6442ebe3e7e1d3a0d2cc084159ce1d54a0523c570ee998d"
},
{
"path": "package/dist/app/run-execution.js.map",
- "size": 8750,
- "sha256": "31fa5ebcd665dd33753c75bfbc69f0f5e784d2d5e9f7dad3fbd9b7f3bbe447c6"
+ "size": 10660,
+ "sha256": "8093ce38e60b0731969611cb52ed2aa6f91a29bbea9516ca5079d4ae60a77a26"
},
{
"path": "package/dist/app/run-ingestion.d.ts",
@@ -4758,77 +5158,117 @@
{
"path": "package/dist/app/run-ingestion.d.ts.map",
"size": 346,
- "sha256": "9cc0c39b252faee35b3b8ab12c844e02a1a45d6437f5a7859a9e0f8b6f61e1f2"
+ "sha256": "8bfff1b2b1ec7bfaf52cbe5d25ff619d3d64d123d05f62d4c688835fa6c0f880"
},
{
"path": "package/dist/app/run-ingestion.js",
- "size": 3651,
- "sha256": "9eebd3fd0b93c198e4b55551b287e66673e8ccb068188a3d13cfca62fc990698"
+ "size": 4418,
+ "sha256": "48f1cf652ee63255a05f9b9fee4a892ed38031ba36238d3ba455782ebde4a3aa"
},
{
"path": "package/dist/app/run-ingestion.js.map",
- "size": 3852,
- "sha256": "e631432bf770885176d9e9aa9bad2d74b959d9f2edc03abd98c21d4e4122908a"
+ "size": 4626,
+ "sha256": "e0994f87288f235679c2ac1c4e3a5021590291fc2550b824e10b41a57877b03f"
},
{
"path": "package/dist/app/run-ledger.d.ts",
"size": 2702,
- "sha256": "22734d0d49d883013c1badbdbc5bbb17051a1b363793502f8cf7af3f7d130acf"
+ "sha256": "666c560c25950969d0c8d7ccf991ad37df6d8fbcfb462408442f60512523abe1"
},
{
"path": "package/dist/app/run-ledger.d.ts.map",
- "size": 2663,
- "sha256": "a7034bee23b4cebaeb926e8b5093faf443fbdef6bbadfbd7046fcaa067f41252"
+ "size": 2664,
+ "sha256": "b94fdb3f415ee57140fb4d78057fb932fd278c14a714e8bc8de3b4122984e9ec"
},
{
"path": "package/dist/app/run-ledger.js",
- "size": 3446,
- "sha256": "5aa0f6617d5575d7ce4be7f034237342babe396beb1f91c2d797e5ace2f363e6"
+ "size": 3362,
+ "sha256": "340e7d913da71a251bd15f9d706900b06dc9d4189850b85af26ae8948a4d5133"
},
{
"path": "package/dist/app/run-ledger.js.map",
- "size": 3878,
- "sha256": "fcb24eb754ff9496bfca0c6204fea9356ebbbba380fc32f1cb341bac7f35407a"
+ "size": 3764,
+ "sha256": "b618aaebac720c85874511df950475419cd6eb07deec8fa55fe417a5a01bc74d"
+ },
+ {
+ "path": "package/dist/app/run-recovery-context.d.ts",
+ "size": 411,
+ "sha256": "4fb0d573b391054e4a1b5a724022d326d50a334f9cc735bb4e33472ca752c5bd"
+ },
+ {
+ "path": "package/dist/app/run-recovery-context.d.ts.map",
+ "size": 340,
+ "sha256": "c84819038d86b7814edee551e24a6013ca0bf12058d74c5cd72c4ebccdc5ff39"
+ },
+ {
+ "path": "package/dist/app/run-recovery-context.js",
+ "size": 481,
+ "sha256": "fc3cf56cb9393d5ac74e607f0ef4357e6c9908faf33b766616d010ced7f417e0"
+ },
+ {
+ "path": "package/dist/app/run-recovery-context.js.map",
+ "size": 496,
+ "sha256": "fe4a21ecec3e336d81dc09e238021553284b473b5da53ed54f952bb2e92c1c55"
},
{
"path": "package/dist/app/run-replay.d.ts",
- "size": 374,
- "sha256": "92f3d8617dbd1637ab57ae1c11f530791a1c9bae9dbdcb03721c8f6f84cd4363"
+ "size": 503,
+ "sha256": "3a33bb346e021a33f23de32bf5a668f79a1578d5972ffe8d2223978a0f9f48e0"
},
{
"path": "package/dist/app/run-replay.d.ts.map",
- "size": 410,
- "sha256": "3936b70acc65fac94dd03618db7c284cd033892d4214dce1e2800702439ce1b3"
+ "size": 490,
+ "sha256": "e379b0e0aa37fd8814739e6d16c744eb650a8dd8be05c53582094b9d5b9b0f73"
},
{
"path": "package/dist/app/run-replay.js",
- "size": 8085,
- "sha256": "1ffe8e1e005859405ae4e48940ec73eacfb2b4f2c830e97a3483dda82e9c8fbb"
+ "size": 9036,
+ "sha256": "1e9b9cdbf0a7a90791144b6ce5b5c3d857ee32b01bed9ebd4de676e0c360573c"
},
{
"path": "package/dist/app/run-replay.js.map",
- "size": 7661,
- "sha256": "2e9ff073399f7a3a1b03ed17509119f66a3d84aa8be030aac06145d8433f8c29"
+ "size": 8279,
+ "sha256": "477cd223e74664c9a25e08a491c08556baeff9435d5771aeae446e7292737c9d"
},
{
"path": "package/dist/app/run-status.d.ts",
- "size": 631,
- "sha256": "0d462b290264ca7b914191f3aed22bfb872c02e879e310235ea5e349a84d2b36"
+ "size": 641,
+ "sha256": "f3f6967c05763dd5eb4768a13d084a6555decdb74eff7cf06874d7fbb14ecd23"
},
{
"path": "package/dist/app/run-status.d.ts.map",
- "size": 651,
- "sha256": "b951c09ccc0ba7db3383d5277dd8bc714a5acd5967ac119d3f87be8bf6b24801"
+ "size": 663,
+ "sha256": "d386821ad2fdefcb786fedf6ded3f2b9711d03da58ee07d810c942f5af61134e"
},
{
"path": "package/dist/app/run-status.js",
- "size": 1323,
- "sha256": "2685ffe5d2c9a2e375e4de41fe967f612ad48f471ee90ce60c79391067f40c87"
+ "size": 2114,
+ "sha256": "6606293308a2d57df53f7047d7937ecb56dd04774fc774daca6eeb28a37949e0"
},
{
"path": "package/dist/app/run-status.js.map",
- "size": 1413,
- "sha256": "370a680e74f949a8c51e9715eadaafde3cf32b4039d66f093fe8092fb67e4bb2"
+ "size": 2253,
+ "sha256": "dce6f029e890b1accda0ff695a7b6b62553e2f255cf11e1fb56263d2e8a98329"
+ },
+ {
+ "path": "package/dist/app/run-stream-sanitizer.d.ts",
+ "size": 1199,
+ "sha256": "9486310e1b72d60d8a168880dc3b2b572890e887b496268fdfb184433b177cb8"
+ },
+ {
+ "path": "package/dist/app/run-stream-sanitizer.d.ts.map",
+ "size": 1058,
+ "sha256": "36a66d9539a29b279ed4a74306d191a6b792b07aa3ebe1d260e44ba5deae0c7a"
+ },
+ {
+ "path": "package/dist/app/run-stream-sanitizer.js",
+ "size": 2688,
+ "sha256": "34a407789789109f47611554829a1e3dc79158837295412df9461995fbcb9a8b"
+ },
+ {
+ "path": "package/dist/app/run-stream-sanitizer.js.map",
+ "size": 2569,
+ "sha256": "5b8d5c785435e15531593b32721fdffe9860d4c7f902d96bbd040f5f2248a92f"
},
{
"path": "package/dist/app/runtime-selection.d.ts",
@@ -4853,42 +5293,42 @@
{
"path": "package/dist/app/shutdown-controller.d.ts",
"size": 1139,
- "sha256": "5d128a7f8c36e1a88101d8b0c47d1b628620af10c317bf053a9e141ace56fb35"
+ "sha256": "f4849b8bcb313ae9b31f2bfbc37bb61b43d4cdbb164a63ea733412bc2eeecdcf"
},
{
"path": "package/dist/app/shutdown-controller.d.ts.map",
- "size": 1213,
- "sha256": "1501f3fcbf1259926818c5c2974dedd991bfece875c9d8a0cd14e50bde77e700"
+ "size": 1214,
+ "sha256": "438970c083f4da671c2ac0e33df27ec7fe11398a229184eefad5cd62dcdfe8ad"
},
{
"path": "package/dist/app/shutdown-controller.js",
- "size": 2178,
- "sha256": "801d301106cc4026489a668bf3026ce1b3613e36ec171a3709b25d97ac197cc4"
+ "size": 2546,
+ "sha256": "7ba5075c77658e56e14ad6e2712c5d82a304e11065aecb28a17c0d40ce01ad08"
},
{
"path": "package/dist/app/shutdown-controller.js.map",
- "size": 2402,
- "sha256": "6eb824a49780edc05cea70b11bbf45ccf297ccfa4c637ef6dfad1e579e97f78e"
+ "size": 2776,
+ "sha256": "a2ffe45aaa276a0bece87795fd34d9bf9389990c1c1d67b73ac7eaef3501e5c6"
},
{
"path": "package/dist/app/storage-journal-support.d.ts",
- "size": 1848,
- "sha256": "6103930fd5cdfcd8bddd79bef163a2b632748ce0cdab781e2ff195f25840f150"
+ "size": 1853,
+ "sha256": "48a47edf560cdc5b52b3ca66806f2b7e4e76f9cdd8bf20ea0cc2e02df37ed305"
},
{
"path": "package/dist/app/storage-journal-support.d.ts.map",
- "size": 1613,
- "sha256": "42d49b0cfe7d464ba46261578c1e2864c2687ed646c50d9cb7e2d0bf79320661"
+ "size": 1618,
+ "sha256": "f664e3b43904174b5c45c933d9e4eb3990304cca2bbb0fb1b86a4aaed5972e7e"
},
{
"path": "package/dist/app/storage-journal-support.js",
- "size": 8224,
- "sha256": "3c3f3f3f70fc56401d285c93037283c61450b95b5c61db695efdac938d92fad9"
+ "size": 8557,
+ "sha256": "98c9c89fd4ca1cf8d27ba9b0342d2fc4fcae359f19b3a8c3f2e0af2c6a1a0f5c"
},
{
"path": "package/dist/app/storage-journal-support.js.map",
- "size": 7090,
- "sha256": "1528bee9531a940c4356bd129cc71ecf67a87445c2c4b6266b0ddf375660e76b"
+ "size": 7452,
+ "sha256": "c50ff90355f01f83b7da26e269055ae3ff4b26bfa7db6d299ef09116257560c5"
},
{
"path": "package/dist/app/storage-journal.d.ts",
@@ -4897,118 +5337,98 @@
},
{
"path": "package/dist/app/storage-journal.d.ts.map",
- "size": 1820,
- "sha256": "351be267cec71275f76212b48db50fde7bc9f93939621ba6452fad308f2b9480"
+ "size": 1821,
+ "sha256": "edf3abc5d40009f8964d80b98e466879bfe100dc9faf143063c71f3091e6e6a1"
},
{
"path": "package/dist/app/storage-journal.js",
- "size": 9010,
- "sha256": "5aab6563de87937b47c469797c65f043706b3ee90dabc116e7f879b89e429641"
+ "size": 9538,
+ "sha256": "0b2c5beabda57889225fa8cfe4132ec39ad88dea42b597007ba9ea5dae8f46f6"
},
{
"path": "package/dist/app/storage-journal.js.map",
- "size": 8507,
- "sha256": "426dc3f53f8e2493b17c910f186b4560221470ca3cd1b17a90ef886598afca42"
+ "size": 9107,
+ "sha256": "0e6ea110abc9ad9ad6764a5d793b59c0b57069ed786f15b4331b65590ebb4d4c"
},
{
"path": "package/dist/app/supervisor-projection.d.ts",
- "size": 1316,
- "sha256": "a4c950d4c3df01772e6a1f00bdddd5048c3b189e50ea9ae912a95dc5c645f519"
+ "size": 1765,
+ "sha256": "10c4ba0c1df4fb80a0f1c4d5bde42d5c25195a5f7095931fbc3e4c324cf2c574"
},
{
"path": "package/dist/app/supervisor-projection.d.ts.map",
- "size": 1136,
- "sha256": "4f1840948cc7e2a6d743d03c014f1a7ceef7dc8dc8353341c65cc432df0bc473"
+ "size": 1445,
+ "sha256": "09edc4ee6eea2a8e16e1685696d9e79d4877ab0edc698bbda582029adf18e9c7"
},
{
"path": "package/dist/app/supervisor-projection.js",
- "size": 15876,
- "sha256": "2e28edca83557915d11e956fa9038efb2d34a4c1ec7bd86ad94665e1fd35be7c"
+ "size": 16599,
+ "sha256": "2b3e9efaf5c3f65f9151d8852282be766dc982db609f81e097768bd39b9941d8"
},
{
"path": "package/dist/app/supervisor-projection.js.map",
- "size": 16757,
- "sha256": "4bdcec5245b44f64bfeb57de02b8897d75ff28e59376b6fa00793f40dd049a81"
+ "size": 17379,
+ "sha256": "9e47d19f8236040a3a80882e4111ac26f29935707f0873e58ff4fa59c332f446"
},
{
"path": "package/dist/app/supervisor-service.d.ts",
- "size": 1555,
- "sha256": "756c42fd21195d9ae0a4501c11fdfef171defb3a7647a2146b973fc4f8af68ae"
+ "size": 1981,
+ "sha256": "eaf9de4921fb890098db335d4c35558095f97881f171479617ac9c51f2c43f3d"
},
{
"path": "package/dist/app/supervisor-service.d.ts.map",
- "size": 1218,
- "sha256": "110c1d1abdaa85113ef25d4691a445e4cd4acd05fcd552f20f5e814482ec2208"
+ "size": 1628,
+ "sha256": "7317449e29dd0bb74237202adb8509d42a62e8010435999636b5fbb6467626a6"
},
{
"path": "package/dist/app/supervisor-service.js",
- "size": 3113,
- "sha256": "e6dcc40dcd1da30af5cd489120006c73bfcc113293720b18211eb0fe5bff3f24"
+ "size": 3595,
+ "sha256": "96c34038e82010f709bf0bc586697f7c6cd97c2e9486210aa296ea1b798dd878"
},
{
"path": "package/dist/app/supervisor-service.js.map",
- "size": 3220,
- "sha256": "bb95a3f52d3cca54f560404a07064be0cce385e09c58100e3a12aeebba166cbf"
+ "size": 3658,
+ "sha256": "afc53aa3d03ce2ce1b26ee8b0f888596dd8370af38df46931bf9ca35e4200c78"
},
{
"path": "package/dist/app/unavailable-analyst.d.ts",
"size": 544,
- "sha256": "bd9c9867d5888368bafd5879f9e6bb9fce0737474cffd6540f44ffe01533c1c7"
+ "sha256": "b817f0882b406ad2932f4e8adddc5c354615a7a6dc6858d05f3065430f91a63d"
},
{
"path": "package/dist/app/unavailable-analyst.d.ts.map",
"size": 504,
- "sha256": "ae8b0e81311f67a6c5cc53cda617df959cef67311356c1802a922081d5cc09b8"
+ "sha256": "fc71d0b1b289bb922c02708b42e6adc6cd8b1248765d0e00020acb2342dd5c51"
},
{
"path": "package/dist/app/unavailable-analyst.js",
"size": 808,
- "sha256": "3404c085a29e783e96b98eb2e34298d60b77f10a933f1045d72acefe7c5d43ec"
+ "sha256": "0e12ab7b1d6faf5243a7cdb1769ac7bee845dfc2a4fdfcaea4e8f94110e7477e"
},
{
"path": "package/dist/app/unavailable-analyst.js.map",
"size": 636,
- "sha256": "d78d88610f151750c03b38349c75a5c5f7b28b0b89cec36292c5bdf569c1fe95"
- },
- {
- "path": "package/dist/app/view-model.d.ts",
- "size": 1389,
- "sha256": "ab714ff8f10bc936a036c48104758aaf1d1983d3ce9389d154cc4d62a9abc2f8"
- },
- {
- "path": "package/dist/app/view-model.d.ts.map",
- "size": 1481,
- "sha256": "a823d3005abed81194c9dc8326452d2d0e38fe92c6e40968e10e449a9c1ef835"
- },
- {
- "path": "package/dist/app/view-model.js",
- "size": 4380,
- "sha256": "cb4d418604f26a275b42a5fdc65f4ea00584660dea55e161579d07ebeb7fe6eb"
- },
- {
- "path": "package/dist/app/view-model.js.map",
- "size": 4331,
- "sha256": "78deda762e319464d4edb61ff102f036d14c0cd8acfd0a78a39c4e5a2b0edd7d"
+ "sha256": "3906c60012e7f8cffc50d8bde24c89dfa797cd038c71cbbba109b58d0d6b9a02"
},
{
"path": "package/dist/bin/args.d.ts",
- "size": 2393,
- "sha256": "501449940520ab7181819fda52a86fda26d52e0227cd9c8c034f0e1c49092288"
+ "size": 2409,
+ "sha256": "64eea658736751f0bbda530e145364ba74244850b759ff4829cf300cdcedfd05"
},
{
"path": "package/dist/bin/args.d.ts.map",
- "size": 1133,
- "sha256": "ca8ca023ca413556020970ecfa169f505fa5b18f2df4c92e419da401835fc4c8"
+ "size": 1143,
+ "sha256": "6ba55b301291c8277a2dfcc09ec2b3be4721d84c234ab8791fb9a4956d48a00e"
},
{
"path": "package/dist/bin/args.js",
- "size": 6231,
- "sha256": "716617ad1650359c766d67f1b53b543726d72ec7f39f45917b537628ec10e336"
+ "size": 6289,
+ "sha256": "2ec96f8f30d5928d51ddb64864ca1974f1988db879c043c4a4b2c0348efa4fc4"
},
{
"path": "package/dist/bin/args.js.map",
- "size": 4813,
- "sha256": "c9e5f11cea07fff161efd2fe12ef9f8edcefb24f7dcf96cdc992d6a50eee9d60"
+ "size": 4835,
+ "sha256": "7646784ba9590531f52b0b4c5a474c4775722f5ae40564669d6dee92af3b9937"
},
{
"path": "package/dist/bin/braid-runtime.d.ts",
@@ -5018,17 +5438,17 @@
{
"path": "package/dist/bin/braid-runtime.d.ts.map",
"size": 241,
- "sha256": "fd4c3c10a937098b65bd2685c27830f339b4d6eb3e4f9e18884342c3f80bd41c"
+ "sha256": "353359df264165d68f220da81393cb4969e90128914e2d741adea4621a1ac8c7"
},
{
"path": "package/dist/bin/braid-runtime.js",
- "size": 7520,
- "sha256": "6716d7065c1cf0f7ec06b9c4dcfc616feba83b8148087f57747f74c229567f5e"
+ "size": 7039,
+ "sha256": "14b7c295cc40bbfbdfa4e278f7a74b8631b8683a018153331d38647fb2ac2578"
},
{
"path": "package/dist/bin/braid-runtime.js.map",
- "size": 6042,
- "sha256": "57cf28545ba0de003b11ecaf967fe6efe754d8f2c4ac76cd6447033537b743ee"
+ "size": 5567,
+ "sha256": "74927735ccbed9f5bcb0ab0193651b0bc3b2816ccf8afe9859479231428642bf"
},
{
"path": "package/dist/bin/braid.d.ts",
@@ -5050,6 +5470,26 @@
"size": 1481,
"sha256": "765a6daf4750c762f8e2e521076e24bccccdb81ce463c910c7914c4bdde80dab"
},
+ {
+ "path": "package/dist/bin/fixture-application.d.ts",
+ "size": 352,
+ "sha256": "116232c2e09763263629e8aa9cddfd6d4947271c81a46aefd1474e7cfabfd090"
+ },
+ {
+ "path": "package/dist/bin/fixture-application.d.ts.map",
+ "size": 244,
+ "sha256": "9461b31cea8ed0b37732f8769a70a25f8764caf5bf13b653219151e21fcf6a24"
+ },
+ {
+ "path": "package/dist/bin/fixture-application.js",
+ "size": 1132,
+ "sha256": "93c4c5d907edeea8dce65fc6940a769d5c6ba84e849d0371e94c44e1725bd16c"
+ },
+ {
+ "path": "package/dist/bin/fixture-application.js.map",
+ "size": 1121,
+ "sha256": "3799f81bfd335b64aaefbe6d1d558cdedf5edd0acbab449190715388544967d5"
+ },
{
"path": "package/dist/bin/interface-runner.d.ts",
"size": 1252,
@@ -5058,37 +5498,37 @@
{
"path": "package/dist/bin/interface-runner.d.ts.map",
"size": 977,
- "sha256": "edca2dd9f413904747f1ecbaba488bf67a2321015a0f92162aa0cc062a14728d"
+ "sha256": "06e962852cc913c2db4b3423ed14b8b744f55378dae76bb500ae3344f476db64"
},
{
"path": "package/dist/bin/interface-runner.js",
- "size": 8409,
- "sha256": "c0a0bf1d038840f67eec620bfdbc51a439d495142c44472d5a6e01865a56b8b3"
+ "size": 9171,
+ "sha256": "8335f0e413e90895bfdc7fd97375188db4b929ca646c7c3e4d702afa225492a8"
},
{
"path": "package/dist/bin/interface-runner.js.map",
- "size": 7295,
- "sha256": "9a929eb6b8490a0f815bdbd4753d5050957cdccc100d6fe978b787ae5c9c0ec1"
+ "size": 7899,
+ "sha256": "5d4e3512f7356f69fda647e89fe2d81ac755e8586eaee4fc05972dea5443e80c"
},
{
"path": "package/dist/bin/interface-signal-lifecycle.d.ts",
- "size": 996,
- "sha256": "f6598ec59e65e5d1dc2e2aa3205dfe3c1a1a951bb3b7f690aaccd493cfab0803"
+ "size": 1154,
+ "sha256": "94c66a7565c1421409c29fce8fbc6400f7acdfafcfd24b5482ae235da4085308"
},
{
"path": "package/dist/bin/interface-signal-lifecycle.d.ts.map",
- "size": 931,
- "sha256": "b9c31c63cd5aa1f9cde91028fe97be37f3e171deb2c79db77ec5a52f4c5e6dad"
+ "size": 1035,
+ "sha256": "03f58025d6180e6d6c53916e11dcbcba3dbf289062d7e10075174b8943a19cb8"
},
{
"path": "package/dist/bin/interface-signal-lifecycle.js",
- "size": 3418,
- "sha256": "e4ebf50574bb8ae6c38d92cc88b3eb723d67d3c6315080137dc169d39d2cda52"
+ "size": 4459,
+ "sha256": "9bae989a5975c66febdd88df7b12318ab1f2de7f7a621c4642b3dba7a6d64c73"
},
{
"path": "package/dist/bin/interface-signal-lifecycle.js.map",
- "size": 3108,
- "sha256": "70e7b0290887729d1697368a23fc893b1b7bc9869116ea1980910a4478d87581"
+ "size": 3829,
+ "sha256": "e9cd9bfaf2a01252e2d1b834b457a1cf478cf92a033a66fc14b42667c4ef991a"
},
{
"path": "package/dist/bin/interface-state-recorder.d.ts",
@@ -5098,17 +5538,37 @@
{
"path": "package/dist/bin/interface-state-recorder.d.ts.map",
"size": 325,
- "sha256": "17b236a4d455214ff07a50cde2a7c1ed2a290c03a3f62e4b6833e5d4f862f94f"
+ "sha256": "70aca532dcbaadc4b0b6218f44ac7b62e5d0b33c38cebaa174d842cee8c69db8"
},
{
"path": "package/dist/bin/interface-state-recorder.js",
- "size": 783,
- "sha256": "53ff7be57ad887d378d8939491f9dc53f8d83abf3e83c07dd2ac5606d15524d6"
+ "size": 939,
+ "sha256": "7d91b6cb59840382ea4e22d72bedd0349dc0b7ff4f1bdf4ddacbf0865f7358b9"
},
{
"path": "package/dist/bin/interface-state-recorder.js.map",
- "size": 896,
- "sha256": "dfb4453df429ea1e527c0f063a86300621fccd415f89ddf7c19d03485cebba16"
+ "size": 1033,
+ "sha256": "b550124c7360245470d87fecacb9e0b9c2605cb0f8a5fa74871c2c4f921fffb6"
+ },
+ {
+ "path": "package/dist/bin/native-interactive-actions.d.ts",
+ "size": 1257,
+ "sha256": "fa56163da634ccb134666c2750e38ef7fe15d6e4309d5a7e4c809f2e89f158b3"
+ },
+ {
+ "path": "package/dist/bin/native-interactive-actions.d.ts.map",
+ "size": 967,
+ "sha256": "348a0b63683b01668fb793f1fc8786ce1d76adb65529b5dd1e3e28512e3ccb99"
+ },
+ {
+ "path": "package/dist/bin/native-interactive-actions.js",
+ "size": 11567,
+ "sha256": "0a4080f41e8ed4937d354d34098e2a53018e413d91a715ac98dad6368373661b"
+ },
+ {
+ "path": "package/dist/bin/native-interactive-actions.js.map",
+ "size": 10700,
+ "sha256": "d68c40ff585b58576189d999233a27a61de9f02c3dcd15f55100eee82bace372"
},
{
"path": "package/dist/bin/plain.d.ts",
@@ -5152,23 +5612,23 @@
},
{
"path": "package/dist/bin/production-application.d.ts",
- "size": 1386,
- "sha256": "9a6cba1a9dad33d9620c7e351e0fc7e9afa5eeb1c39603f0a9089ce63c98c618"
+ "size": 1553,
+ "sha256": "e62d121be1ca16f02da09c83b04f23d90c163fd86c4b52ae59e1f4771a89d2cc"
},
{
"path": "package/dist/bin/production-application.d.ts.map",
- "size": 1066,
- "sha256": "08e532730b02c8f6ca7054d1bcc3c8c83f9269558eabf21cacb0aed041ee9143"
+ "size": 1161,
+ "sha256": "ebad14a8cfd865476c85491ec274ffe2826d64b45def23c2787348b44d20c5fe"
},
{
"path": "package/dist/bin/production-application.js",
- "size": 7006,
- "sha256": "d2ed329196fbb868472ee16e7559a13ed9e59c1d44cfb546516e48d73e44f2b8"
+ "size": 7568,
+ "sha256": "4ace8691733e874c2620a5221e9a67a19396136887a8ee03d8b9f3f8ba01d53c"
},
{
"path": "package/dist/bin/production-application.js.map",
- "size": 5963,
- "sha256": "8d8c91e79861066fadc2d3b39627e1282861cc056b601d0b27280d655bc1904b"
+ "size": 6438,
+ "sha256": "b7549b81f8a4cf6cc353c4a210389aafcaf4174dc4b1cc68febb462098759790"
},
{
"path": "package/dist/bin/production-bridge-client.d.ts",
@@ -5258,17 +5718,17 @@
{
"path": "package/dist/bin/production-connection-actions.d.ts.map",
"size": 1289,
- "sha256": "b14bc7f59800f787737a8f1ecd818c1fcb6621a3d4684d6c30072c3ec72c37f5"
+ "sha256": "9f5dd32baa4ee3e35f7b8efdd4aaad0e88ac0cfd8f3c2105a8d044f4960d9f29"
},
{
"path": "package/dist/bin/production-connection-actions.js",
"size": 10267,
- "sha256": "bc8ce1041dbc6ed15456d03d7243baff73d10c3af01cddc59b4eaa6d570c590d"
+ "sha256": "7ab6fa2a0f2b27720a77f03bbb3346862fcff5de856049d8f62a0de38e9edf48"
},
{
"path": "package/dist/bin/production-connection-actions.js.map",
"size": 8744,
- "sha256": "e99535e81e09bf131b3efecbd9e1b2324e9eb8a49f6c3902b2d6de56c9ea473b"
+ "sha256": "a964436b2b7d78a8f36b932ac3fb51aa5be72b3e807620224c0c49ea94a9de0d"
},
{
"path": "package/dist/bin/production-connection-catalog.d.ts",
@@ -5298,17 +5758,17 @@
{
"path": "package/dist/bin/production-connection-credential-cleanup.d.ts.map",
"size": 1706,
- "sha256": "2b6f1c65da6a9ba50dbe0dfaf20e98b08c5e941135da425d666db80e4e898071"
+ "sha256": "9e35f4ae3ca14f59fe6cc67023f4eaf2a477bd9417c1b8c36a137f235dc0f531"
},
{
"path": "package/dist/bin/production-connection-credential-cleanup.js",
"size": 5814,
- "sha256": "f40841315e5b48597b96d7a1023dec3520d15d7b4b668dc85d754c9a22353b1e"
+ "sha256": "e16bcdf77dbec224d3ef3b2f3222e03244c8c02c9aad806f26ee150b2b8ea341"
},
{
"path": "package/dist/bin/production-connection-credential-cleanup.js.map",
"size": 4842,
- "sha256": "04bad0aa693ed5f4cf415e6a1b644e762c9806a33e385f4dadcee725488184cd"
+ "sha256": "b3076181cda2f3bcaaaca3d044d6b008524f5c94122ddd863652c44addec0fa8"
},
{
"path": "package/dist/bin/production-connection-credential-removal-record.d.ts",
@@ -5338,7 +5798,7 @@
{
"path": "package/dist/bin/production-connection-removal.d.ts.map",
"size": 1224,
- "sha256": "f14052eb148a22d59651ea9078064ab6b74bd486347b0322947546b16030557b"
+ "sha256": "377b7fa3b1003f2fbd3d748b86ec669c9e053c878f596a770baf7803f643c10c"
},
{
"path": "package/dist/bin/production-connection-removal.js",
@@ -5348,7 +5808,7 @@
{
"path": "package/dist/bin/production-connection-removal.js.map",
"size": 3235,
- "sha256": "b52b04a7ffbacbec608acf74a70c1e8f2bc0a3169d64fdbc5cf4e61b1c514541"
+ "sha256": "61c880854a554bc70604a6d31d0f01564b52afa83567873c7a54a421ef3c4705"
},
{
"path": "package/dist/bin/production-connection-replay.d.ts",
@@ -5473,22 +5933,22 @@
{
"path": "package/dist/bin/production-setup-discovery.d.ts",
"size": 913,
- "sha256": "cc2fb19ad4b89bca4fe5b4545aa9377a16e4e8788cc3b662fa02c648d3356059"
+ "sha256": "c1a6d6f85c6951b70be0d8d3e17898631afaa81d567cd5ece21deef37574c83b"
},
{
"path": "package/dist/bin/production-setup-discovery.d.ts.map",
"size": 619,
- "sha256": "08e7d66b2af5c4905d2f0878513778c57cd6d7b4550a17c010cc89752d76d62a"
+ "sha256": "0b8c27df788e5849f7868e7b675b083e24059d8b2d447ebd40cd94d9216783f2"
},
{
"path": "package/dist/bin/production-setup-discovery.js",
"size": 7139,
- "sha256": "d51492f34f106786ba1f1b3fb25af128b979fff488c021ad43e37a071bd37a5f"
+ "sha256": "124f809ab3f9d5fb3a9aabdf0c90edd2d83dc2b38d60a37db4e2705cf735e3a5"
},
{
"path": "package/dist/bin/production-setup-discovery.js.map",
"size": 5725,
- "sha256": "9f5b68d841e0b21865fa1a2a3344fcb5d927eedc5f96d21b6571c1911d7ee77a"
+ "sha256": "f5c9a8d9bdc941f052eefe01b04d1a0ded2625c87fd17bed928efb76ff49da45"
},
{
"path": "package/dist/bin/production-setup-persistence.d.ts",
@@ -5512,13 +5972,13 @@
},
{
"path": "package/dist/bin/production-setup-transition.d.ts",
- "size": 2580,
- "sha256": "9378bc7274e67acd1ca1336d173f7ba89e9d25fab597e7c6a5c45482ad5f6ebc"
+ "size": 2747,
+ "sha256": "1b5bcca6f46e70b755c93d252c36a86c220435a0a9a62963d97ecbc6314b3702"
},
{
"path": "package/dist/bin/production-setup-transition.d.ts.map",
- "size": 1800,
- "sha256": "3d86f29315bafa2fd90f312ba23b690fc4517862163c064a712c90c6ef833c2d"
+ "size": 1895,
+ "sha256": "480ed2ce89b2595617cc6c1d1ea2a716987f6c38b3645d261ec0d20232cd29a4"
},
{
"path": "package/dist/bin/production-setup-transition.js",
@@ -5528,17 +5988,17 @@
{
"path": "package/dist/bin/production-setup-transition.js.map",
"size": 2985,
- "sha256": "aa97e8be2be471ed7ffbefbbb0b1c59983fad82aec635b6e9097da8b9b61a32d"
+ "sha256": "c5d5312d64415936e633b2c8b75a4d7f7cb17aa1d1f3945cc53aee96fdc8376f"
},
{
"path": "package/dist/bin/production-setup-types.d.ts",
- "size": 2201,
- "sha256": "58893bcd2b4ca9c39885f22c1fc6504deab4bbb1203317d8b5cfbb9e3d408736"
+ "size": 2396,
+ "sha256": "dc78162c22678e0574933a487345198382b13ebd6ff940c9ed155f117f1befe0"
},
{
"path": "package/dist/bin/production-setup-types.d.ts.map",
- "size": 1649,
- "sha256": "4826fcf502eff3f14cc97a92cf14109c12f9436f758f9f4896c4967d3eb68ce1"
+ "size": 1724,
+ "sha256": "2c381629e72ce8fd2c7e9a8084b2e7102e203053ea6fdbbdd7ce4a35ccc3e3bb"
},
{
"path": "package/dist/bin/production-setup-types.js",
@@ -5598,17 +6058,17 @@
{
"path": "package/dist/bin/production-startup.d.ts.map",
"size": 987,
- "sha256": "357048a546a644086a0ca55321218281cc39ca2c71b1e69593794ea13be32180"
+ "sha256": "0af348a993ae1e4a9960f601535b342ad90a5c4865d04ff6566b2355c5862834"
},
{
"path": "package/dist/bin/production-startup.js",
- "size": 14484,
- "sha256": "088eda6ce642666f91c18ebfdf9738c15cd4e8db4f05625d5107e1e47cf97c9d"
+ "size": 14630,
+ "sha256": "31d1ccc167d83901ab4716b00fd87ba2b6aefef13c8f2be4e4d179f79787275b"
},
{
"path": "package/dist/bin/production-startup.js.map",
- "size": 10744,
- "sha256": "e4e760e10335572db3b36712d1c2ed090bb63c6402ba40e665ba4becc6093e48"
+ "size": 10867,
+ "sha256": "adf9755532c6b7e0f4bc0c765e9c5897a28d7ca1d7988819dae61017004e0728"
},
{
"path": "package/dist/bin/runtime-startup-options.d.ts",
@@ -5618,17 +6078,17 @@
{
"path": "package/dist/bin/runtime-startup-options.d.ts.map",
"size": 485,
- "sha256": "8ee65c67c4fc75fcb62d832e0ca5c68d8bda61ac527f4d1485f4dbc1bdd3ed2f"
+ "sha256": "5957e3fcccfcfc3b9670823fbafbe9273b010cc8f61086cad054192b172097cb"
},
{
"path": "package/dist/bin/runtime-startup-options.js",
- "size": 2693,
- "sha256": "15ed77f63ab2f244bdb4d15f3fc69a0855b94db312deb2b509a35d2e78799b5f"
+ "size": 3326,
+ "sha256": "8d6039b77ca2b033552af157cdc23291e4597cfa2544a7653f91fe6e35f9a8ce"
},
{
"path": "package/dist/bin/runtime-startup-options.js.map",
- "size": 2840,
- "sha256": "795e6dcbc9fa7c6e19f3adc9349abea852c4b3dd24bf26ab4434c2fd921d1119"
+ "size": 3308,
+ "sha256": "c25d0a9ff55ab8b8a4702b10a2d28f5582d85d6aac4320a3abe9be90054f4112"
},
{
"path": "package/dist/bin/state-path.d.ts",
@@ -5678,37 +6138,57 @@
{
"path": "package/dist/domain/bounded-structured.d.ts.map",
"size": 1279,
- "sha256": "b180692bc0c8c7566ee0f17b663d9b55709b917c2f677d63249ba5c92b6d8abb"
+ "sha256": "3c88188e57d8eb1d8414e214227cfcd62b69e6b996c526234f4256797b372cd7"
},
{
"path": "package/dist/domain/bounded-structured.js",
- "size": 11599,
- "sha256": "dce7322dc3f22fdbd05e2c5069e863e8a5b2d69e336d318d9bfcdb232acca25b"
+ "size": 12313,
+ "sha256": "40306fb5055a01b83344a157b0d2dace5f35f397ee307c6a0cd4c9d1ec9475fd"
},
{
"path": "package/dist/domain/bounded-structured.js.map",
- "size": 10890,
- "sha256": "a9f3c554c65b34f6e63185c44d35c9ef742f2aa770369cd4630e984da5e53cc3"
+ "size": 11634,
+ "sha256": "7a749287f0f98917a9b5c3c7fab09c22e3c900fa32795f23ddddfe8c58b7be9d"
+ },
+ {
+ "path": "package/dist/domain/canonical-json.d.ts",
+ "size": 656,
+ "sha256": "0a6bd001c726a5311d782b02bb66a08766fbdc1c927db93ab274474f86190f9c"
+ },
+ {
+ "path": "package/dist/domain/canonical-json.d.ts.map",
+ "size": 203,
+ "sha256": "95a9d808fc650d8ee488dfe4fc8243f6bdda8f095b319484aff1058647aa49e3"
+ },
+ {
+ "path": "package/dist/domain/canonical-json.js",
+ "size": 2356,
+ "sha256": "a0683776add21ff8c73f0de642d18cb893f0ca5a905c68e64b48d76e261e0a91"
+ },
+ {
+ "path": "package/dist/domain/canonical-json.js.map",
+ "size": 2031,
+ "sha256": "453b3feaa770b7e8063584b25e1eee02c9590f6b01b485387b90eaaf7bba46c6"
},
{
"path": "package/dist/domain/canonical.d.ts",
- "size": 207,
- "sha256": "4fbfa95baf0447ff7a67de4d1abfa5cc4a9b00bfea6d0571cbc2839643ea3484"
+ "size": 271,
+ "sha256": "78959701630795d033e9c0671a8d2d632c5437e6c2eaf4315b02bd910bbdd981"
},
{
"path": "package/dist/domain/canonical.d.ts.map",
- "size": 275,
- "sha256": "fddbc0d4276d95aa4f22bce2164403ddb27967e999d330d2f58a6e721710278f"
+ "size": 308,
+ "sha256": "4f7184e6b846fa368e3d948d5785bdbfddeaf407cc38f284c7dcbd8a6784b27d"
},
{
"path": "package/dist/domain/canonical.js",
- "size": 2018,
- "sha256": "04035f1b1d282683b5470016496bb97a12de15aa2775a1958e82e52473596be8"
+ "size": 380,
+ "sha256": "5ce25f200bed428302c63ef95eab159aef27a51e367e82f8058adecfb31096e8"
},
{
"path": "package/dist/domain/canonical.js.map",
- "size": 2242,
- "sha256": "7a27fd75bb00494af3b6b6f9f3fc36b5ef496505d3d5b737d234eaa41b46c35d"
+ "size": 445,
+ "sha256": "dda34bf36494e7fb1d0a1fb7764f275c85a99b8f100095fecdc92f40cf46cbae"
},
{
"path": "package/dist/domain/code-unit-order.d.ts",
@@ -5733,22 +6213,22 @@
{
"path": "package/dist/domain/connection-removal.d.ts",
"size": 576,
- "sha256": "06fe84ebf7faefa1381a46206c0819cd6dbb9d0cb9c039b9d46c52ff4e32c347"
+ "sha256": "d4198bd6a0830b71dbd05db4b56f1510f51b5d204d8fc3c29e7d34b0ae34dd77"
},
{
"path": "package/dist/domain/connection-removal.d.ts.map",
- "size": 592,
- "sha256": "5f235be69dde6bab328082907bc3150c73fdb67c0381a6d539b111a9f49feb16"
+ "size": 593,
+ "sha256": "4d577467a8dc545615bea06a33fe3d96176f8ef59cd353b7c6f719ad673b6921"
},
{
"path": "package/dist/domain/connection-removal.js",
- "size": 2970,
- "sha256": "14386d1896cce9309419226c07788ef82bb9e50a2e10500f5d07c307e2ed7545"
+ "size": 2987,
+ "sha256": "28ac7f7ff48efdc00f2fc55218a72a4d82cc6465af2490656b067d508406a674"
},
{
"path": "package/dist/domain/connection-removal.js.map",
- "size": 2362,
- "sha256": "ab2b9e49451e7478f2aabafe4a0f8ed2e9b0d1c603f761571c901aca8a4c88ad"
+ "size": 2363,
+ "sha256": "ff040b55d14fea3a473eecfad18b7fef8117e5e6cf5e4aee714ea8f33d8c1860"
},
{
"path": "package/dist/domain/content-budget.d.ts",
@@ -5792,33 +6272,33 @@
},
{
"path": "package/dist/domain/entities-core.d.ts",
- "size": 7822,
- "sha256": "f244bc742395e04b62b7cd10ea485c4fd5d4fdc25fb9c216b095137ee3ec6bab"
+ "size": 8917,
+ "sha256": "2a73daa6327cf679547f877dac7aa90a78cb5a647bdfa78176e6812a8269029e"
},
{
"path": "package/dist/domain/entities-core.d.ts.map",
- "size": 7299,
- "sha256": "7c3a792a8a4e1cc7a6fb27453f1c7f310480cb3763805c3faaad7194ffb8032b"
+ "size": 7821,
+ "sha256": "c4b95683525725fbd774f7603d8e238ce4d794944293fa54710019416f8a94bd"
},
{
"path": "package/dist/domain/entities-core.js",
- "size": 52,
- "sha256": "448ca0ee188d70ed699187682e2686b5ed246cc36f41124694db9edd604581de"
+ "size": 331,
+ "sha256": "68f4f120f6fda3d73a63b6b68fd34294fa6bf0d62dc5a853743c8d6e2b5a6203"
},
{
"path": "package/dist/domain/entities-core.js.map",
- "size": 128,
- "sha256": "e737e03a4ed1ead77bc3bc403e095e5c520e1b9dee49d6c4d8a34272d98b8fa2"
+ "size": 342,
+ "sha256": "85f67e7a37aab9e8e8fb302e15e28d8b7af70e8d8f4573d51e0830880957099f"
},
{
"path": "package/dist/domain/entities-graph.d.ts",
- "size": 5267,
- "sha256": "4a1af0d228c990e103a94f363ee3c6cf77a27764e337a43c1cb936903ae9dd9c"
+ "size": 5284,
+ "sha256": "ecc5aa297ce2a0b6c7d99f56d6ce5c8100c206915554f8ed135d72b6061d5fd1"
},
{
"path": "package/dist/domain/entities-graph.d.ts.map",
- "size": 5367,
- "sha256": "4dde3764f8655197d49398d1d32ae02345fa9768c980a12e028501e38a54e93e"
+ "size": 5377,
+ "sha256": "ba22b5d3107aafe5d8a3663ea697de08e0877ce3f3010ac24aa010190adaa024"
},
{
"path": "package/dist/domain/entities-graph.js",
@@ -5832,13 +6312,13 @@
},
{
"path": "package/dist/domain/entities-interactions.d.ts",
- "size": 8261,
- "sha256": "74f30d939db423c1f705938cca6a7653f5b282ac26c19cec60fd31e6d030b2dc"
+ "size": 6793,
+ "sha256": "671b7b276b51644008b1693bcd2bad6212117dfd50bbc32bf6ae7b6723f03b05"
},
{
"path": "package/dist/domain/entities-interactions.d.ts.map",
- "size": 7788,
- "sha256": "dd558374ef53ea5722102d781fea49a4b682694b67c87ee0982fc85a05baa87b"
+ "size": 6568,
+ "sha256": "ad53949ba78feba93f37f50a29919d177b048d09013d233848df99c02096fc2f"
},
{
"path": "package/dist/domain/entities-interactions.js",
@@ -5852,13 +6332,13 @@
},
{
"path": "package/dist/domain/entities-messages.d.ts",
- "size": 4795,
- "sha256": "3cb76c81f199cd44014d5ce347734b1e5e2841bfe922922e72fa66f799ce19b2"
+ "size": 4921,
+ "sha256": "91f55f3d9b1e416129332e0f54cd18f72cc7d29680aea2aed7490816c79a6a3c"
},
{
"path": "package/dist/domain/entities-messages.d.ts.map",
- "size": 4579,
- "sha256": "74f07298aadb551d4d4a31c6a4d45abf269d43115e6bd075dbc7f68feee2c692"
+ "size": 4635,
+ "sha256": "85038c4a25bd4d7140ec3d30b4e2ac033f5ec1fce7f57c155300e3e50fca8cd7"
},
{
"path": "package/dist/domain/entities-messages.js",
@@ -5873,12 +6353,12 @@
{
"path": "package/dist/domain/entities-runtime.d.ts",
"size": 7029,
- "sha256": "827b6f0e4b7c597e7c1ebd9a5b2251960c0aee36eaf71e11869d169f3325f0eb"
+ "sha256": "2c39df038847b3773c350b4b8cbbc9bd3285b1614db3f2444502d954d5168aba"
},
{
"path": "package/dist/domain/entities-runtime.d.ts.map",
"size": 6460,
- "sha256": "0ec5b87d69dec84e5abef6af0da562fe60e76328d6cbb6f77106c141661621f9"
+ "sha256": "6209a1cad6d27446a063fa9937401170e506a67971bb2cad41ad79196fdf29ea"
},
{
"path": "package/dist/domain/entities-runtime.js",
@@ -5893,32 +6373,32 @@
{
"path": "package/dist/domain/entities.d.ts",
"size": 312,
- "sha256": "767e72aaf142206aa797d72e555cffd0b393e5986c0a378eaee831166975a420"
+ "sha256": "70b4b83796da24bcb193d051d4d1dfb9e86af91bd5c0289df38d89852dfc5776"
},
{
"path": "package/dist/domain/entities.d.ts.map",
"size": 279,
- "sha256": "b3ec1dc9c20ecf370758e59430b7e3444acb300ea526884144e979a74c6ea43a"
+ "sha256": "f3dce9500f13a4b2d2c57496031756f2616b3027ce4eb682b5595008010613b5"
},
{
"path": "package/dist/domain/entities.js",
"size": 310,
- "sha256": "dde6760dc11d56b9a8ea69710cb4a4a706d551a884b1fd8d5149a3eda9d3d297"
+ "sha256": "035ee500aa61275326b0edbf8bef773443dbe8b74d36223f8de40f89da85045e"
},
{
"path": "package/dist/domain/entities.js.map",
"size": 277,
- "sha256": "e2fbabc53aeddb9f551b3fc41b7a1c6c67cfb262a1e60a05a0720a25b7946fcf"
+ "sha256": "430d99c015456f40eabeb43d95f88df92b0400ba6625cbd4c5d13dafe7e496f2"
},
{
"path": "package/dist/domain/events-legacy.d.ts",
- "size": 6462,
- "sha256": "ff2b970985e3d1206de59de937fc1284c98a1d4140cd93aa19cd290dddede57f"
+ "size": 6687,
+ "sha256": "2d8a2fbc64715d7ce3f934b10f1cabb0a10ef94b8e824bfc474e2b2757cdd9c9"
},
{
"path": "package/dist/domain/events-legacy.d.ts.map",
- "size": 6964,
- "sha256": "0cfff8fb4f7aa30e37d7c04a763079a6eebb3583bc015d0c717221146358c66f"
+ "size": 7141,
+ "sha256": "bc8b55451f5bfce683a44208c3c93c476803c12bea85e5fcb094e471b5358f67"
},
{
"path": "package/dist/domain/events-legacy.js",
@@ -5932,23 +6412,23 @@
},
{
"path": "package/dist/domain/events.d.ts",
- "size": 11050,
- "sha256": "d59980dcbe393a7f6f99fae6138bc6062b0795e78a904b1b83cf2860aac354a8"
+ "size": 10559,
+ "sha256": "404e437993bd7b4bfa5875b5dfe0efd4b246d619db129488c16ef92638f5c34a"
},
{
"path": "package/dist/domain/events.d.ts.map",
- "size": 9398,
- "sha256": "fd804fd0a9ab0db59b7d0f475dff498d6045a4be76c80b09db5d183279e2f131"
+ "size": 8921,
+ "sha256": "215491cbb1e2eb64ee65ece2efc44402cc583f603990ed9d9fec17b1c4a8bbb6"
},
{
"path": "package/dist/domain/events.js",
- "size": 3536,
- "sha256": "5f9b70dd19730518bf3bcc946460459640bc31fe784de40a7554fdb670359dd5"
+ "size": 3626,
+ "sha256": "5c6a4fd1416c2ccf8422de75c2a5d29c04ee540269d4d8c5a6244440dab1ec0f"
},
{
"path": "package/dist/domain/events.js.map",
- "size": 2604,
- "sha256": "b086602c935370c6e0b2eccf32fa9b6ca04294a4f44395da464777b53fd13038"
+ "size": 2747,
+ "sha256": "1002b7ce41c9f83f6fdda55dc1a188c2871e723bad732929330f3199471e0b97"
},
{
"path": "package/dist/domain/execution-observation.d.ts",
@@ -6033,12 +6513,12 @@
{
"path": "package/dist/domain/ids-values.d.ts",
"size": 11912,
- "sha256": "85dee314ac328affedd2e8c969fe84ae4e129e4520953f8dff5eed17c59b11e9"
+ "sha256": "235a19954a005ec7c9635d41c61f7522c4ad5ac32b2545bb4976178219cba4a2"
},
{
"path": "package/dist/domain/ids-values.d.ts.map",
"size": 8909,
- "sha256": "a597f5ea7ddd43d818fc500fa32fae941c94b60678c83f68a2ec401435a34882"
+ "sha256": "473e2750b0522c0bd014caca37aa5ed63f4a10d79162ba88558b21901c02dc24"
},
{
"path": "package/dist/domain/ids-values.js",
@@ -6048,7 +6528,7 @@
{
"path": "package/dist/domain/ids-values.js.map",
"size": 13631,
- "sha256": "464db5fac1352aa7ab138ee340738c01600963e0486f46556123afbeb709babf"
+ "sha256": "190cacf33e9bca55dab921debfb5ebe361218dbfe2c5148741b639c579aa4493"
},
{
"path": "package/dist/domain/ids.d.ts",
@@ -6058,7 +6538,7 @@
{
"path": "package/dist/domain/ids.d.ts.map",
"size": 569,
- "sha256": "521bc1c3063983987dc0f2480a048c953a2e00f621ea23f4cb6985834289314e"
+ "sha256": "98c9bb0d6f3fb902a8e4a389ea1158f0069066ca06751cd515186da59beed35d"
},
{
"path": "package/dist/domain/ids.js",
@@ -6068,7 +6548,47 @@
{
"path": "package/dist/domain/ids.js.map",
"size": 484,
- "sha256": "99b69c077d6c4e57f735b317dfb2811da2044b9859f4a30d460755e6d596b976"
+ "sha256": "7391b6f6bd8a5a5742d616166d083d5436bd9aa91e2a0432f5a9614edba8217e"
+ },
+ {
+ "path": "package/dist/domain/interaction-identity.d.ts",
+ "size": 283,
+ "sha256": "09a46875c243a0bdd47ac0c5d2e1e5179bf7a4b4e6a66fe39374f1cd214a744e"
+ },
+ {
+ "path": "package/dist/domain/interaction-identity.d.ts.map",
+ "size": 280,
+ "sha256": "fbb6245df9a043ed30a81de09a4381dc02486d86b092dad9f963d76ff8a49a5e"
+ },
+ {
+ "path": "package/dist/domain/interaction-identity.js",
+ "size": 409,
+ "sha256": "9f465a89647c327489a300634bd9aa97d97a6984972d55bea4e07f54a3b19345"
+ },
+ {
+ "path": "package/dist/domain/interaction-identity.js.map",
+ "size": 417,
+ "sha256": "69afaca5dac62c00281207c36b88a117b55a5bc8b73cd3252dfcf91046698c36"
+ },
+ {
+ "path": "package/dist/domain/interaction-timeout.d.ts",
+ "size": 238,
+ "sha256": "0d44f6fd9f8af4065e943dd032d1003082945b83e8e7b00a2cc3d262f0d81c08"
+ },
+ {
+ "path": "package/dist/domain/interaction-timeout.d.ts.map",
+ "size": 312,
+ "sha256": "903480e8b841d4a7298c62195d0352853fa53b493784ecc1208370e9e11690ca"
+ },
+ {
+ "path": "package/dist/domain/interaction-timeout.js",
+ "size": 528,
+ "sha256": "3e30627d31773feae6911d22528298590df7e44a6fca08dde65660ca0079e7ae"
+ },
+ {
+ "path": "package/dist/domain/interaction-timeout.js.map",
+ "size": 726,
+ "sha256": "604c989e6b5ea13d0bbb03f5c3ddfb7eaf732501c3a7f8d04b61bd914ac2d6c5"
},
{
"path": "package/dist/domain/invariants-base.d.ts",
@@ -6078,17 +6598,17 @@
{
"path": "package/dist/domain/invariants-base.d.ts.map",
"size": 1985,
- "sha256": "4a37686afa8aec6580a3135ed7c4e1c5419e5b9f2233f4d5da8eeec8329c8b3d"
+ "sha256": "6a50456579c702a1245e95476e1dbfeec3c0e4f50d3017d3cc9accb588ad4f57"
},
{
"path": "package/dist/domain/invariants-base.js",
- "size": 6187,
- "sha256": "e846f527fd17a562e99d30176d2107d32d4fc50e63edfdd422603ae06e7e7890"
+ "size": 6207,
+ "sha256": "2321372838a32e14e046b688edb79a6c833a7455b900e87cb0bc288ec75db5fc"
},
{
"path": "package/dist/domain/invariants-base.js.map",
- "size": 5688,
- "sha256": "7d62e2ea2a87d9a03ed8c084be51747db72eeed3298987fac53046dfc072b59e"
+ "size": 5698,
+ "sha256": "268982872aba50cc629dd88c2023bbaf7e9b7ebd3b0ae3b9175fe8f85757bb32"
},
{
"path": "package/dist/domain/invariants-conversation.d.ts",
@@ -6098,17 +6618,17 @@
{
"path": "package/dist/domain/invariants-conversation.d.ts.map",
"size": 523,
- "sha256": "4bcac1a202d330089a760b39209b10ef69f22c208e2122e624e25f8e5a3eda8f"
+ "sha256": "fde2de2c015a20da37b1b95a828fb0ffb53195de7a29cb02736d6b15a80a3576"
},
{
"path": "package/dist/domain/invariants-conversation.js",
- "size": 6916,
- "sha256": "663e46c15f80bc0e3bad70a5989f2095c1a3fac9d004c383b86d2daba9f1234b"
+ "size": 8100,
+ "sha256": "f8deb3a09bac2a3146a1d963bada0d33c55cedd48aefcae9332c0895add8164e"
},
{
"path": "package/dist/domain/invariants-conversation.js.map",
- "size": 5887,
- "sha256": "2887ef2e4846f27038c9db0e8fd61a4e60beaf8a981bbcc94878911859619408"
+ "size": 6906,
+ "sha256": "de9034012a3679b699549167ba3dcdd891de23053a5ea5421ca790bc3bc66387"
},
{
"path": "package/dist/domain/invariants-profile.d.ts",
@@ -6117,18 +6637,18 @@
},
{
"path": "package/dist/domain/invariants-profile.d.ts.map",
- "size": 628,
- "sha256": "7a884a5e3ec6b6528ab9995a8355a1c1bb5fc1787be0e8da3dd8e35d7e29a089"
+ "size": 629,
+ "sha256": "c2021a9923fb2c1307252979eb89badedc8c2bc101b1b492664043c67f562657"
},
{
"path": "package/dist/domain/invariants-profile.js",
- "size": 4522,
- "sha256": "0b3123a5dc6b724db1e88a9b5d1f0b4f37aaaf1f9ce5d69891486aa69fa4df7a"
+ "size": 8332,
+ "sha256": "dcd2bab1ff408ab14a2530325a392d78c5ba995cd5fc57acaef34110969b8839"
},
{
"path": "package/dist/domain/invariants-profile.js.map",
- "size": 3954,
- "sha256": "9d333b41da8d9200fd83854fd137cece23734575a0cf71b97e7a943524374af3"
+ "size": 6404,
+ "sha256": "3a46cab9bd49468a26be6f928cbe0928ca9d39245f6635b222e421d0eafcf1c7"
},
{
"path": "package/dist/domain/invariants-relations.d.ts",
@@ -6138,7 +6658,7 @@
{
"path": "package/dist/domain/invariants-relations.d.ts.map",
"size": 245,
- "sha256": "a712705cf972a9fe613e6ea9ab87f9c906e0a267ad97975aabf76c251b6e7dbc"
+ "sha256": "d22ffc87d1f3fe9974152b24961b4451cc1d9365bcc195d02671367ba7416a60"
},
{
"path": "package/dist/domain/invariants-relations.js",
@@ -6148,27 +6668,47 @@
{
"path": "package/dist/domain/invariants-relations.js.map",
"size": 5849,
- "sha256": "baccbe4514baac0f57ebaa99747016d11cdd08645f0e10e666c3e806d2ccbe29"
+ "sha256": "2e304dc3fbfff7dd4994b1fa655ae4b1345e254d23e2a4ef85130fcdb94a7c44"
+ },
+ {
+ "path": "package/dist/domain/invariants-retained-admission.d.ts",
+ "size": 297,
+ "sha256": "302548e040b6ee65dc8e8cd644b2460cd5ab59e7b993cbf3114941cf0528298d"
+ },
+ {
+ "path": "package/dist/domain/invariants-retained-admission.d.ts.map",
+ "size": 360,
+ "sha256": "c5885e4bcdc735b4656233f91f094caa423f3d05c1f34c78e0cc9588d9f0e08d"
+ },
+ {
+ "path": "package/dist/domain/invariants-retained-admission.js",
+ "size": 6235,
+ "sha256": "a526a07ca250e3da6538d835ca057708d17e795ddfe83624eaad98285797fce1"
+ },
+ {
+ "path": "package/dist/domain/invariants-retained-admission.js.map",
+ "size": 4642,
+ "sha256": "0e92fb47a8658b3f6a894cc20f47e8a48a5632df4ef8716f4f5d7595bbb87fa3"
},
{
"path": "package/dist/domain/invariants-run.d.ts",
- "size": 555,
- "sha256": "2b90626b9b65cf70203b19f39d80a25854319a513e7541af4eb73ca2cf72159e"
+ "size": 366,
+ "sha256": "198f8916584e7ddf7f8660348c9ff4db58959ccc3c42bfdcfe8df0c24b9636d6"
},
{
"path": "package/dist/domain/invariants-run.d.ts.map",
- "size": 500,
- "sha256": "8606affef36b7d1dc20dd0f34628687202c577a1f2e123874f81dc3e687be91f"
+ "size": 371,
+ "sha256": "657f6e5b008ab91deae19d31865166224c273467e6645bb2ba6ba030d12b1f1f"
},
{
"path": "package/dist/domain/invariants-run.js",
- "size": 17174,
- "sha256": "e505efab4ab0de5064cd302e366c0fded9e9cab8abe862b68038ddaf38c5f37e"
+ "size": 21900,
+ "sha256": "182d6ea2210e583a50b09a8bcb2ad9c076f8697c1fe187c52f1740511ce82bee"
},
{
"path": "package/dist/domain/invariants-run.js.map",
- "size": 14111,
- "sha256": "e4d1e8fe0b14f30194d89d391e376ce503747f4677e10e583ec62c883233b0b0"
+ "size": 17827,
+ "sha256": "6b926edf29234aff5ffd7e373d8d1127a05d5450adf55cca0bee33d2ac8dc2ad"
},
{
"path": "package/dist/domain/invariants-runtime.d.ts",
@@ -6178,57 +6718,77 @@
{
"path": "package/dist/domain/invariants-runtime.d.ts.map",
"size": 1094,
- "sha256": "c20ece49a640729046ad7b788b43a3a809684c470c26746d22b198e6f2197af8"
+ "sha256": "f342d8d367426efc58f2485f7fc5063ab8edbcb34131d79f63119d9b7c82eec5"
},
{
"path": "package/dist/domain/invariants-runtime.js",
- "size": 19763,
- "sha256": "5ab95c63a26f83d393869e28db8494e3492ab2f50d716a13be5cd8c9d6aa2c3b"
+ "size": 19739,
+ "sha256": "7296bfdc8577a0c1e0ccdd3a3c8a9eb8540d15b279a6beb97ddddecf86ff7332"
},
{
"path": "package/dist/domain/invariants-runtime.js.map",
- "size": 17015,
- "sha256": "7465b7a10a0beb9047ae8ccc508b76092472530af20dc43c96f6a3234924a20e"
+ "size": 17051,
+ "sha256": "85081a91aac1b348a9406707886b4153e021318b1a28d448c89009b8c3afc5d6"
},
{
"path": "package/dist/domain/invariants-state.d.ts",
"size": 286,
- "sha256": "1948c5661d89a509ff61362287a965872cd64a99847dc81a2a182e68156489d3"
+ "sha256": "bc8b89b55f6f0742580318d79c099ed1bb9fabcffcc2577b61e6738a595250be"
},
{
"path": "package/dist/domain/invariants-state.d.ts.map",
- "size": 387,
- "sha256": "0e4b06e803ec43cdfb798bc4f6e07d6c8402471f75f9aecf837b2bf411c1bcc4"
+ "size": 388,
+ "sha256": "d28f96e68680b28219a052b0bd8a5f58b52d0b8c6350e800357d858346590506"
},
{
"path": "package/dist/domain/invariants-state.js",
- "size": 9221,
- "sha256": "7759422a1a1a23f3385cf162b0701e2eeff1dfc34a45c77165dfecc0d2405e86"
+ "size": 10334,
+ "sha256": "af1347314d4f6d43b55a7f7fd78b6c8da3295179d55883eff99a1248ec042b8e"
},
{
"path": "package/dist/domain/invariants-state.js.map",
- "size": 9423,
- "sha256": "4c685171cb531f022f3fbc49dd3f102ed44b9260cd8dd7a5c08721ab5cf6d225"
+ "size": 10608,
+ "sha256": "fd77639c019ad6b9795c20df5ec2749c1602cb4ad9acd439f9d1f3557f7dd97d"
},
{
"path": "package/dist/domain/invariants.d.ts",
"size": 282,
- "sha256": "c52a51c44f1032e91eef2dc6ae42a367b6f4bb300035ec33eb3342b34e2734af"
+ "sha256": "1787f33f2631a00c9065c160ae8eaa06d6daa626695dce8b3cff2db240c2778f"
},
{
"path": "package/dist/domain/invariants.d.ts.map",
"size": 260,
- "sha256": "76ba2213dcbf6dd9e967c0298b3f80482b81bc07511f20828125ec517345d645"
+ "sha256": "9ca5f623dfc669886736f951d1e549300b67917af8d01192318fd9e12f831a90"
},
{
"path": "package/dist/domain/invariants.js",
"size": 280,
- "sha256": "8ad8491593ef020e15550ed5f052d43102fa4b0ffb155d1269d17203fa782bde"
+ "sha256": "59459dbdb9a0a499b4f6222617adcb644377cc2ef690499ea7c6e77804d59bd5"
},
{
"path": "package/dist/domain/invariants.js.map",
"size": 258,
- "sha256": "6ac24b20c28c1424fd3b41445dca9434ce78b79e6354690ba5f20b534d17a652"
+ "sha256": "730ce8240690bad9fae376173b7067585bca71d4994677f65fe4c4d36226fa2e"
+ },
+ {
+ "path": "package/dist/domain/legacy-interaction-snapshot.d.ts",
+ "size": 329,
+ "sha256": "14cee4c36f2e499394d3a4b5155a4bf36f0c1ec8d6a325379f4716ea9cd12d6a"
+ },
+ {
+ "path": "package/dist/domain/legacy-interaction-snapshot.d.ts.map",
+ "size": 353,
+ "sha256": "1ccf5275190643dc9168b2e2b5caea1de3a91c998fb9a314696e898b44649a91"
+ },
+ {
+ "path": "package/dist/domain/legacy-interaction-snapshot.js",
+ "size": 12861,
+ "sha256": "8a87d1d19c830f07ca626e2cfe1f9f18e53c4f74e0594217485f27f48751818a"
+ },
+ {
+ "path": "package/dist/domain/legacy-interaction-snapshot.js.map",
+ "size": 11592,
+ "sha256": "661f01b05724a161219d1edc93c19ec797b30d0fedb94a8035008380d4b87937"
},
{
"path": "package/dist/domain/materialization-receipt.d.ts",
@@ -6252,23 +6812,43 @@
},
{
"path": "package/dist/domain/materialized-state-snapshot.d.ts",
- "size": 4158,
- "sha256": "4a9264bd46c20916add0a1f1c7235ec2478411e9edb5714e47ba8c86aaf33250"
+ "size": 1441,
+ "sha256": "a8a92df3c89f3c6691ae2d297cc2fc99225dd433607689a0aed6055e3798ac8f"
},
{
"path": "package/dist/domain/materialized-state-snapshot.d.ts.map",
- "size": 3469,
- "sha256": "0407196a5786ce6dd8ea5e1aeadb47bd031834ec9fc6d097e3f27fc993450eeb"
+ "size": 1089,
+ "sha256": "680c9cf7721d6dc32e18d04cbb7a5c9d3c4235439aa7a46b829b0e5c431f21e3"
},
{
"path": "package/dist/domain/materialized-state-snapshot.js",
- "size": 4782,
- "sha256": "47f301983ce762867722e3609d942dc89c75c0a0bd1a8d58c458f62b0eebe3f9"
+ "size": 6341,
+ "sha256": "463a35c8279d868badb2fc645bebc35f41b84ce55ef1e49582ca9b58640c6e42"
},
{
"path": "package/dist/domain/materialized-state-snapshot.js.map",
- "size": 4033,
- "sha256": "f7192b2557d064021ac3cd89a433f6fbad1fa817693486a49c2848fb6af8e44c"
+ "size": 5530,
+ "sha256": "47382d698a924da53869b1aaac0184c92f43ec13280f985d69a02fd0717517db"
+ },
+ {
+ "path": "package/dist/domain/materialized-state.d.ts",
+ "size": 3216,
+ "sha256": "80c90f91e16486914c86eb948a891410843af28158ce8ef8517c610ffeeab477"
+ },
+ {
+ "path": "package/dist/domain/materialized-state.d.ts.map",
+ "size": 2810,
+ "sha256": "fe758e2aa784d3bb991a82e17d80934fe5c3c247a67d3313e21ec726b65a3381"
+ },
+ {
+ "path": "package/dist/domain/materialized-state.js",
+ "size": 57,
+ "sha256": "d0f53c99b6f930f25e464c25255937e88a0f33c0b04c238139cd5c17869fe423"
+ },
+ {
+ "path": "package/dist/domain/materialized-state.js.map",
+ "size": 138,
+ "sha256": "83b44f38b197f387cba1861f974a5f1136f65c501d13fb21e694a6215b38e598"
},
{
"path": "package/dist/domain/projection-checksum.d.ts",
@@ -6332,23 +6912,23 @@
},
{
"path": "package/dist/domain/receipts.d.ts",
- "size": 2055,
- "sha256": "0a504deeaaa24e48e7d6ef101dc6a2c22082631ab4e968714a2defc39c4cd89c"
+ "size": 2180,
+ "sha256": "a8812541d55a4357091cdfa8c63afd24867006a37013b03d5d194f531c71afbe"
},
{
"path": "package/dist/domain/receipts.d.ts.map",
- "size": 1892,
- "sha256": "9921cb6fdff9e9454031203aa2093512eb77e4c4e883d895e62561ee666c7191"
+ "size": 2002,
+ "sha256": "39a6e5a9187cdf159527b61f69eb9f89f5e8cfba168636a6af197deb344ee755"
},
{
"path": "package/dist/domain/receipts.js",
- "size": 6816,
- "sha256": "e655d858e65319acb789fc013fee2d49e35d752c406dab3f3c4ae321b64fc082"
+ "size": 7056,
+ "sha256": "4f4816f81b6e433cff8af8f076fb03873059d501c99e615288de09e7d4a2f9c1"
},
{
"path": "package/dist/domain/receipts.js.map",
- "size": 6344,
- "sha256": "099baa16d284c7e446315bbe7d1e8719db32805302fa47418addc10f1ed0bdc2"
+ "size": 6658,
+ "sha256": "82db57aa139c6bf5c10e630198f38998686c671343a6eafa564ba95901fe7436"
},
{
"path": "package/dist/domain/redaction.d.ts",
@@ -6358,77 +6938,77 @@
{
"path": "package/dist/domain/redaction.d.ts.map",
"size": 570,
- "sha256": "7c2703168deacaac5b3abd01e102e80f59e529b46197a6f9920bc7e1acbd9b84"
+ "sha256": "5901d4c327e5f4ac38c8245814e01af5c66bfdfdafb1138bbb9d9f41cb65c4a2"
},
{
"path": "package/dist/domain/redaction.js",
- "size": 2801,
- "sha256": "805c822f61526c07c530cd9bb1a5d754ef7c815e2fb6db550be8bc60bc73f575"
+ "size": 2798,
+ "sha256": "96b290690b1b7040d8a9744c8743b2f59323980341b987e53835a1e3dc468567"
},
{
"path": "package/dist/domain/redaction.js.map",
- "size": 2740,
- "sha256": "22deeb0025b1cb9b414e0180ce259232f48252a0924e2667a1c8e4ab6e4adb9c"
+ "size": 2727,
+ "sha256": "929fa0b401db784a6f2333033f90353b8e1268d0a6c1682d621f3f0fdd9a3443"
},
{
"path": "package/dist/domain/reducer-content.d.ts",
"size": 569,
- "sha256": "92700f34a344f27b1c0b1aa56a41ac6a061d3ba04cc5598e9e626e6bfd106348"
+ "sha256": "043ea0bd2ac244b31edee775ab3d9da3dd48a9a179a4dbd91a23cee01146cf61"
},
{
"path": "package/dist/domain/reducer-content.d.ts.map",
"size": 567,
- "sha256": "67ed19c1695e649dba65547ee8d4b4e303c98e3519777faa3d7e5712a1d41c41"
+ "sha256": "d622a84de8c6389ad85082c8fe6b8c023c6648127f41ba7ac5beb609e93ef053"
},
{
"path": "package/dist/domain/reducer-content.js",
"size": 11193,
- "sha256": "4d90c6c9abc227e6e1b91824c47e737fcdb7be38be869d8bf72418f41818c1ab"
+ "sha256": "b2c78904cf769c6a4a5ee434cd8170148765d4dd726fb71956d50fb23c1d9e02"
},
{
"path": "package/dist/domain/reducer-content.js.map",
"size": 11190,
- "sha256": "29e983dc7274e647a2e7055a76f8ccd3963d8e2f9da65c55dc716b02bb089bbc"
+ "sha256": "4090d2cf03bcc14648cbb3b52609e26365052b0311f5c582b2b38e8b240f8bbb"
},
{
"path": "package/dist/domain/reducer-conversation-events.d.ts",
"size": 520,
- "sha256": "572284b6f2799f52a09ef4776a602b0da20955890113f18c08317461e8f62c64"
+ "sha256": "f5b3846889c59faa009984cf22dc043cdbeccb7852ccd7f330e289ffaf71e2b8"
},
{
"path": "package/dist/domain/reducer-conversation-events.d.ts.map",
- "size": 514,
- "sha256": "7a34a123d2e0b714c75c2ea071e5553b99963364d82ad59a605ec88950263ef9"
+ "size": 515,
+ "sha256": "c5288c5029babc8e750b5c59f441294d6166b8862022348bfdd909dfe5b7526f"
},
{
"path": "package/dist/domain/reducer-conversation-events.js",
- "size": 11132,
- "sha256": "456d0d6a64856d2053ae8cc26f799cdf0abc5bdd1c12e707ffbc9285a503cd46"
+ "size": 11837,
+ "sha256": "83d9bba7ce8fe45b2db7506787fb4a9888831031c6a2284423f681ad199969d0"
},
{
"path": "package/dist/domain/reducer-conversation-events.js.map",
- "size": 12200,
- "sha256": "42187f2fbbc3d7e6544f272948c9615ae2f68240905137feb66b5456f0bc596c"
+ "size": 12787,
+ "sha256": "e655bcbfaee9c44ebbc38f71a6ccb2d5e7e696a802e64304f60ca11c471d2ccf"
},
{
"path": "package/dist/domain/reducer-domain-events.d.ts",
"size": 329,
- "sha256": "78966cdf239ddd2bb67d71cd73233a0181500479a145892f8977d2ffcceb7535"
+ "sha256": "f6472537e96e9ce97bf98bfbdf7e3be10bc6a1d79625b21bf4448d15f1a337a6"
},
{
"path": "package/dist/domain/reducer-domain-events.d.ts.map",
- "size": 414,
- "sha256": "46025c0a01b7f5c0c8ac482e4803a1a339382fd416ac158aa43c6b0a4b5959bd"
+ "size": 415,
+ "sha256": "91a65a8254b04c82c6da8e4cb67dd31e0b0818134849aeb1ecc4c526b00bdfd9"
},
{
"path": "package/dist/domain/reducer-domain-events.js",
- "size": 12350,
- "sha256": "e5e561d46e4a921919ce942cbc50f0941819eac5718f088cd514cae28dc4db16"
+ "size": 10588,
+ "sha256": "05f5d3cd19b9613bb2b6818589d35d3846c239c4c10c7eae45bb323a05513064"
},
{
"path": "package/dist/domain/reducer-domain-events.js.map",
- "size": 11164,
- "sha256": "e272f9eb5e4f7bcbb32f8b40430ccc815f874e61ce200647a7d0ccc2a7534513"
+ "size": 9962,
+ "sha256": "80730267173abf83cc10da8d6b6aae22b1f4977efbd6991c900810e4975698d0"
},
{
"path": "package/dist/domain/reducer-execution-observation.d.ts",
@@ -6448,87 +7028,87 @@
{
"path": "package/dist/domain/reducer-execution-observation.js.map",
"size": 6077,
- "sha256": "035217fef5820dca11b1da32556f13cc6ab7a300f9fb65f9411f71ad87f17608"
+ "sha256": "5f07133ec3d6e4555df2082f48cd507e2d6ca54df48235b1ed9303f2c13c6b8a"
},
{
"path": "package/dist/domain/reducer-helpers.d.ts",
- "size": 3564,
- "sha256": "0f6582ed745706f80413376971ff5acf344546824fe968e4afcb5a36e2ca8d63"
+ "size": 3726,
+ "sha256": "6fff115fe95630c52be65da8efb1dcaf8e081bdb76143ae30c2c992e771f7586"
},
{
"path": "package/dist/domain/reducer-helpers.d.ts.map",
- "size": 3085,
- "sha256": "afa0bfb12d78d6c21645eed465ccdb56be6aee9baeadbd0682460b17dd454bb9"
+ "size": 3257,
+ "sha256": "f52da922ea63a8c6502d294ff4f751546b2d23802234c298291de0088b51ae88"
},
{
"path": "package/dist/domain/reducer-helpers.js",
- "size": 13200,
- "sha256": "89919019374b8ed9bd1245df635884b91bd7edf71700103beb03e5307c906641"
+ "size": 13316,
+ "sha256": "2feeaa045d04bc041321288a19022b6b80eedf3d2e26893ff2ade942ade1d81c"
},
{
"path": "package/dist/domain/reducer-helpers.js.map",
- "size": 12534,
- "sha256": "e38a9e9ad31092d0e8da1146043f026104c61d6c09e46deb39a06299bb470665"
+ "size": 12658,
+ "sha256": "e410a6cc407543afbfaad9bbdff88d61c8d3e1f655f01a555d4d155c39dbf088"
},
{
"path": "package/dist/domain/reducer-interactions.d.ts",
"size": 575,
- "sha256": "b6bb00172382beed88bc6293f4273319c95532fa6b5181a5d769ec2176515205"
+ "sha256": "cf658f6e44890bf2c4c80b78f966fa67a30c224ea7baa2753ca3c52e94bd5181"
},
{
"path": "package/dist/domain/reducer-interactions.d.ts.map",
"size": 548,
- "sha256": "0920a80ab41957ac8bea8944cead70980695711922b2f604cb7edebbc3c1980d"
+ "sha256": "7526cade8824f8d70a2b24c32e7dceffa97d34f9366642a73ba42573556f758d"
},
{
"path": "package/dist/domain/reducer-interactions.js",
- "size": 9602,
- "sha256": "c01a2e703296250dfa80b349313f2400fba25302cc18282ae82240f7817c6153"
+ "size": 16900,
+ "sha256": "e47f2dd64071af33bbbd7b3b72cedaca168c36bec0afdf89140179331d65ce59"
},
{
"path": "package/dist/domain/reducer-interactions.js.map",
- "size": 8433,
- "sha256": "1bf6c7f45a21b831ae943f3c61dcab5ac4b4ef01ec15ee5bca93b0920a92f66f"
+ "size": 14564,
+ "sha256": "62d0b272996d54381f4d6fae3e67c57c1c363ca5a0359368e60bcd161ccb88ce"
},
{
"path": "package/dist/domain/reducer-legacy.d.ts",
"size": 465,
- "sha256": "a458d884562d378591f986124fe6ca2dec7b94cf7fe212fa0c30be5e6f15bce0"
+ "sha256": "c9933ce5a51eef09910369dfeb179f6abd5c0eb23ca147643ba24b37dfcf82de"
},
{
"path": "package/dist/domain/reducer-legacy.d.ts.map",
- "size": 468,
- "sha256": "871143ba931fe865c4bd7a8f4773c329f51f1b530c44fada6df63e0eba9f42e7"
+ "size": 470,
+ "sha256": "1b2b276eb2154511fe9c13319b1587209e48e485dcf66597832822a9d1527814"
},
{
"path": "package/dist/domain/reducer-legacy.js",
- "size": 7633,
- "sha256": "730d14c7e70ed9e8c3953318bfaf7bf4c7c8fe995a0a33813cbee847dc5f7949"
+ "size": 7956,
+ "sha256": "efe6b9e4e02615d36bc5152a6eb44a41d6815e3dd9f789aed5cf0b48023b38ca"
},
{
"path": "package/dist/domain/reducer-legacy.js.map",
- "size": 6847,
- "sha256": "2b6a2db0b9bdab7a23b7b12e42cfe1801e03fd08140557a481441225f8f665b4"
+ "size": 7201,
+ "sha256": "3663dfccbf430389808ff92f3739824235cbb2445033a0b26dfa6f9b690dea8b"
},
{
"path": "package/dist/domain/reducer-lifecycle.d.ts",
"size": 592,
- "sha256": "5d28fa39664bd027e2a0d34cdd1b129bcf1361d749036d04e2a3932edf478ca0"
+ "sha256": "ce5c69893ae63c2d0fdbca79da170a422144758b69c34bf22cff83883d8a857d"
},
{
"path": "package/dist/domain/reducer-lifecycle.d.ts.map",
- "size": 578,
- "sha256": "c50a76cc4c4cc6b4d01c05d2b9d1ed28105215c7be3258e1a9a7da164b4206ca"
+ "size": 579,
+ "sha256": "7d004156ee96a992b16f65e8c2eeaf6c34897aab4a5231a64b9404c42de3a19d"
},
{
"path": "package/dist/domain/reducer-lifecycle.js",
- "size": 10739,
- "sha256": "949745a9febbc8c0818823a1f2799694d44813235f9f9091399a2ea0468ecaea"
+ "size": 13181,
+ "sha256": "c06858650f629aac3b98240319bbc146ba82ed0b048aed6587874cdf462a78ce"
},
{
"path": "package/dist/domain/reducer-lifecycle.js.map",
- "size": 9856,
- "sha256": "de9d4cb9f443f9afadfc0ea4f0d6c988555359e79c60d475b3cb4184611f984d"
+ "size": 11869,
+ "sha256": "c681c39218ad49906e0617a20b2cc8788213276fc148dae052be1abf56abf4c6"
},
{
"path": "package/dist/domain/reducer-replay.d.ts",
@@ -6537,18 +7117,38 @@
},
{
"path": "package/dist/domain/reducer-replay.d.ts.map",
- "size": 699,
- "sha256": "3e8d1ff59bfbde24333a4cc7d1a69a4f3dd8aa53e461c378c98e64980ca0ed20"
+ "size": 700,
+ "sha256": "2e72fd003451a1c25af41ae88cecfe09b3da243f15113f4d26bb84d75e3f3859"
},
{
"path": "package/dist/domain/reducer-replay.js",
- "size": 6421,
- "sha256": "e7296bb34e6ddfd68b020302181e5b0b083ca189a099f087e4772871ff8c274c"
+ "size": 6484,
+ "sha256": "a0ad9afc12fc41712db5b5db38c9ba1314309d67d23630a4df8effb72a8a2e93"
},
{
"path": "package/dist/domain/reducer-replay.js.map",
- "size": 5983,
- "sha256": "ad34fce650ad083328f230113fcf3b578bc2bebeab6e0c5c2bc81c80b0f140c4"
+ "size": 6029,
+ "sha256": "9acf8037e892ba549b89b6f7178fd9df596e0535a10813606659149f6918eccc"
+ },
+ {
+ "path": "package/dist/domain/reducer-retained-admission.d.ts",
+ "size": 382,
+ "sha256": "af5d49476c511da6677ed045bae8465dd8c254fc395e50214327dc800a97f96d"
+ },
+ {
+ "path": "package/dist/domain/reducer-retained-admission.d.ts.map",
+ "size": 443,
+ "sha256": "3a2b522cb754d1025270672dc52a97b4eda5c2cef861c728e8d136607c31ee5d"
+ },
+ {
+ "path": "package/dist/domain/reducer-retained-admission.js",
+ "size": 6517,
+ "sha256": "5325d3f9903bea1cd9329161e511b85b9df55ecf7602256e9da819d7629f9c03"
+ },
+ {
+ "path": "package/dist/domain/reducer-retained-admission.js.map",
+ "size": 5381,
+ "sha256": "3fc1119986347ac9fedd8ff3e0bc015c37f11b422f4e79c7be3275bb05e2515c"
},
{
"path": "package/dist/domain/reducer-run-graph.d.ts",
@@ -6558,17 +7158,17 @@
{
"path": "package/dist/domain/reducer-run-graph.d.ts.map",
"size": 508,
- "sha256": "99b326efda20c8d67e53d4050439e34db56bed052b702d2e230d0181d781ed07"
+ "sha256": "8d92345395d23c53e6b1017dbb83789b531e345f8e25383a0e7b70da5ae32607"
},
{
"path": "package/dist/domain/reducer-run-graph.js",
- "size": 2322,
- "sha256": "4be8e06be1c39e50911cbacfbba2216e66222a52bb8d7a594cbb3d6a5d0ec3e2"
+ "size": 2472,
+ "sha256": "bd0f76133f6f10a3b6544a0763a4964794a8dc443e5f5e2fb300a2185a406eeb"
},
{
"path": "package/dist/domain/reducer-run-graph.js.map",
- "size": 2258,
- "sha256": "153ac6daa1fd6ae5286bee094468589f97805f49b9e62f5ee26eb7dab16d78c5"
+ "size": 2445,
+ "sha256": "097f7a56c0488b0a4b18a2710a7d0eaf767e6e390f6d3aa7a0c04effc8bb4061"
},
{
"path": "package/dist/domain/reducer-runtime.d.ts",
@@ -6577,48 +7177,48 @@
},
{
"path": "package/dist/domain/reducer-runtime.d.ts.map",
- "size": 827,
- "sha256": "155b22947b0300e7a5c277412359e04c29d80eecafa5b781e4eb8b4adef88eb0"
+ "size": 828,
+ "sha256": "9e62d7d8a55f3bacffd20fce494c474cf3a7332c354d906c02103eb821cb1b51"
},
{
"path": "package/dist/domain/reducer-runtime.js",
- "size": 5834,
- "sha256": "d49bbe9479986dcb9bdd660f332201113a07b565c3a2335c0c44683a55c447d1"
+ "size": 6787,
+ "sha256": "7b9cef2aa0aecb8873de37ef27857924898fbdbb15d82c1926c73580cd9e0871"
},
{
"path": "package/dist/domain/reducer-runtime.js.map",
- "size": 5131,
- "sha256": "fd718ca2ead9a444c1d2742642f884dcd65037aad24ac129313ecdc1a44d5204"
+ "size": 5991,
+ "sha256": "f510de444d6cf78d439ef4ac757e32575d0f7a8bb4a570e779ec22a777a26f76"
},
{
"path": "package/dist/domain/reducer-support.d.ts",
- "size": 2114,
- "sha256": "1bf6136e84b4aae8e6e8e553681dcd94487b4efee87b1897f8875d8fc18f25d6"
+ "size": 2462,
+ "sha256": "b3750bfba4c9d9d0b07b463073cac4e25e0236726ff6eafdbe2e7112c989dd66"
},
{
"path": "package/dist/domain/reducer-support.d.ts.map",
- "size": 1878,
- "sha256": "e828a1ce62c47804149b548439d083f51d81c03ab8159ac0fdddd75f1a930c53"
+ "size": 2028,
+ "sha256": "c964dd791fd91807723c2d35763af31a63c4a80158a3dccc7e81a201a91fa958"
},
{
"path": "package/dist/domain/reducer-support.js",
- "size": 5839,
- "sha256": "9241d1f19d552ff380a44dff6a9cdfe4b808e3e9c2c4b86f129b8de7e4b70307"
+ "size": 6734,
+ "sha256": "a4f5ad9bf191c85ba3c4ef59de36be2dfd9bf3c33eaaa159ccfd1f6059d6f04d"
},
{
"path": "package/dist/domain/reducer-support.js.map",
- "size": 6270,
- "sha256": "d153acebb9fd9db0a4d90ff5c16c9835c17198fa4d45bae3188b8968555fb723"
+ "size": 7006,
+ "sha256": "1d82c141dd4cedc48436e5f9ec7c0398e5f97623839edc7beffe87cf920d7de6"
},
{
"path": "package/dist/domain/reducer.d.ts",
"size": 287,
- "sha256": "ed20db0cff3647b614d7df8fa7119c294fb66281af6180e1764bbe000fd4af47"
+ "sha256": "9afed73fa1ca96c36a5bf2022ba2f990bf50591830228faf0e623166639787c5"
},
{
"path": "package/dist/domain/reducer.d.ts.map",
"size": 294,
- "sha256": "e24e179a6b34493f4c72895c77e018025104bb0d50095b05a488c072e2ec44c9"
+ "sha256": "3e534a5fd07e69dd4ca334a4c0327017abbf0b0cb87271186f693d8a8c0d13b8"
},
{
"path": "package/dist/domain/reducer.js",
@@ -6628,17 +7228,17 @@
{
"path": "package/dist/domain/reducer.js.map",
"size": 247,
- "sha256": "69c07bcf33a6e93dabf73cc45001d16bf20d347f57258a6ff919125ac7b0ca4a"
+ "sha256": "b3a688a6f84f0ba4fd1273d57922d6be8715a51c254f03e0a78edec2a0da7f9e"
},
{
"path": "package/dist/domain/run-contracts.d.ts",
- "size": 4646,
- "sha256": "a0ca3db91de85b3f30de98d5bfb093f41e837cedf322970d92ef5e1e88a357a7"
+ "size": 5077,
+ "sha256": "97ba269b15ba09f179067aaaad87184e849f255cdb79326743465e8db2357c4e"
},
{
"path": "package/dist/domain/run-contracts.d.ts.map",
- "size": 4896,
- "sha256": "e61615d90e0b5fd293d19a67ab2fa54c5ddc72704a721fbcf06b5d6124722e59"
+ "size": 5060,
+ "sha256": "1e7f49693d3e5fa96bb7e66dbc065a280b406b709574f1cae3233f6ee140ca1f"
},
{
"path": "package/dist/domain/run-contracts.js",
@@ -6650,6 +7250,26 @@
"size": 128,
"sha256": "08538ea17304090957d2670a2200bbe1c1bf126bba135bca9650824b16ecc6bb"
},
+ {
+ "path": "package/dist/domain/run-interactions.d.ts",
+ "size": 370,
+ "sha256": "59e631425595e444041002869a2ddf5a62f0ffd45cdae58a841f845124b71450"
+ },
+ {
+ "path": "package/dist/domain/run-interactions.d.ts.map",
+ "size": 323,
+ "sha256": "79d952bf0381dfc92561e898a3966686f8fbc94c079694ed37d112353bb78475"
+ },
+ {
+ "path": "package/dist/domain/run-interactions.js",
+ "size": 664,
+ "sha256": "7d21923bb25c06e52b0f8dd5a64cde7324469261b971944cf52092a6490a0ee1"
+ },
+ {
+ "path": "package/dist/domain/run-interactions.js.map",
+ "size": 798,
+ "sha256": "126484b0145f7880b86eabd555b559657908554077212af2126f1fba2d97c1ba"
+ },
{
"path": "package/dist/domain/run-usage.d.ts",
"size": 524,
@@ -6692,13 +7312,13 @@
},
{
"path": "package/dist/domain/runtime-events.d.ts",
- "size": 1726,
- "sha256": "8d5a7aa707feeea9604989955559e02157f50187edf453863d8547413425b56d"
+ "size": 2060,
+ "sha256": "3cc67a1908ee99ead95fa961a6987f58b0767e2d8f1f930da3c053b90945ff28"
},
{
"path": "package/dist/domain/runtime-events.d.ts.map",
- "size": 1618,
- "sha256": "81b953b54eb5a49752a7272bd603270de99934a401c852e322f5c70b16085583"
+ "size": 1842,
+ "sha256": "0220bb82270ff882e9d119848c283ba1e4f70187f1f4d430a771eceba741dad6"
},
{
"path": "package/dist/domain/runtime-events.js",
@@ -6707,18 +7327,18 @@
},
{
"path": "package/dist/domain/runtime-events.js.map",
- "size": 724,
- "sha256": "831d9c3592ca05cc52cdd6690a0a9404570e34fae629bc41116da0a20ff6a8dc"
+ "size": 723,
+ "sha256": "5ffc4b4fa9778d62c74534828bb22bcf8f72490889142df0ee888f462633b158"
},
{
"path": "package/dist/domain/runtime-projection.d.ts",
- "size": 3297,
- "sha256": "b67fca63ab602f704097611c9dbdf9aec30abb2eda0c8bc143c708afc322642e"
+ "size": 3942,
+ "sha256": "f09766b7912297ae97375b4e5be898bbd6436dee7c1902f9a25aea211ecacf4d"
},
{
"path": "package/dist/domain/runtime-projection.d.ts.map",
- "size": 3345,
- "sha256": "d7f4a61322c15560d96fdf635ab69e84a75f7c10f15eee4e185b235f1f7ef85f"
+ "size": 3661,
+ "sha256": "2fbd7e32762d8e855c3fe4b1c64dd6a37de45b5de79961e83c3ea387f29dcc27"
},
{
"path": "package/dist/domain/runtime-projection.js",
@@ -6728,67 +7348,67 @@
{
"path": "package/dist/domain/runtime-projection.js.map",
"size": 591,
- "sha256": "511ae95ce031367d03c8ea81498bab4d4773b2b5160b91388d6791e90b9c5cb0"
+ "sha256": "98d5df282334f49ce0cbe17db0540e2a90347cd3c903ae6e8cc2586c3a56c64a"
},
{
"path": "package/dist/domain/secret-sanitizer.d.ts",
- "size": 579,
- "sha256": "2fba6a92c67f75fcb1374ba343a888aeea2fd42b63c9ddf7b2a430e4b4042f6b"
+ "size": 842,
+ "sha256": "c7699fbb9bdb03a8e58a5cfe2814a977d23f942466affc0d902410f178590c23"
},
{
"path": "package/dist/domain/secret-sanitizer.d.ts.map",
- "size": 543,
- "sha256": "4fb8290978a894eb68d8b6aa5edc087f757923f27f7972624f43461834c5bf85"
+ "size": 681,
+ "sha256": "9871c412ea8602d6a3991c1387884a56ebc81c2b92da7c1ee0e80f5bdd823299"
},
{
"path": "package/dist/domain/secret-sanitizer.js",
- "size": 11913,
- "sha256": "8cc44bb7c9d00ad61fd5879772c134b154366390a309eb62ec5d4c7d5409b831"
+ "size": 29749,
+ "sha256": "697f16cca1dfcabdcc35adc7a45fde9915826547cfc1cf7871c411ab0a3dbdb6"
},
{
"path": "package/dist/domain/secret-sanitizer.js.map",
- "size": 11467,
- "sha256": "2bf5dcd7b1a5879f7ed7202b7806cd900338eca7f4e0c1c7a89004138f7f0e06"
+ "size": 26696,
+ "sha256": "e05ecb9749d885d831362c7866933ce7815365a2cf04337d73832d744351bade"
},
{
"path": "package/dist/domain/state.d.ts",
- "size": 4051,
- "sha256": "31c99557fdd14c53415bacbcb62eec1919a966a8c90cf18404119bdad14da42e"
+ "size": 5467,
+ "sha256": "3a01b0f868f018270b14fe2fab8671ed2ce93cac5c0c0917e73d1fe55ae335a0"
},
{
"path": "package/dist/domain/state.d.ts.map",
- "size": 3534,
- "sha256": "9265b0bacc3fca2aa6a4e0355bd2be960fdea88798a2e21ad121abad14a785af"
+ "size": 4251,
+ "sha256": "03c945a56b011b2f94b803cf97c9dec78e714a41fdd67b73a18a02e22323bd91"
},
{
"path": "package/dist/domain/state.js",
- "size": 1671,
- "sha256": "37f61f2dbdadd13cfb97198b316304d7bf86c580c61a95ed02965356b07b1b4a"
+ "size": 4103,
+ "sha256": "76f143030da03107584f316f809e36bd2d6866f50184a16610cb8bebd8741b72"
},
{
"path": "package/dist/domain/state.js.map",
- "size": 1462,
- "sha256": "9a7491d8f8514f618039769131be1a58e38a76485a376653f1fb4ffc794e622a"
+ "size": 3513,
+ "sha256": "927675ed093ad3e40b59049802e4bf87e8ce57cd84d9535dcf27529744640ea1"
},
{
"path": "package/dist/domain/terminal-sanitizer.d.ts",
- "size": 306,
- "sha256": "108e3bc56bbf4b0a10cfeb599f4a43505fa5a9f1dcc9f8335bf8e229ba925f80"
+ "size": 362,
+ "sha256": "c22e33b01dd3e03699cb05bf5540dbf18eb79a926b379b8f3d5927172df6b489"
},
{
"path": "package/dist/domain/terminal-sanitizer.d.ts.map",
- "size": 305,
- "sha256": "d67672829c1c09ce6141cb992b39baa5d2452c50f5ad2653a7798e10c9774e0e"
+ "size": 339,
+ "sha256": "56278881cb5507b2d55a1ddd94d8ad24b65c501fed572887c4e296a52d3cefa6"
},
{
"path": "package/dist/domain/terminal-sanitizer.js",
- "size": 3149,
- "sha256": "307df57a8cc1763c70f310c8ec823e254a6e216439625ca84bfce1402769279d"
+ "size": 4327,
+ "sha256": "bff3cdc921728debd1f723b76c1ba7e0e91c5d8d9ae5451b4a7c1b83c993ad94"
},
{
"path": "package/dist/domain/terminal-sanitizer.js.map",
- "size": 3032,
- "sha256": "4d3d455949043d765c4d8effed5d10e54f19933f9e85119bfa238e2ac6c73e1d"
+ "size": 4012,
+ "sha256": "9fe30f5e8be9fbf6b9c08bfe55fb40c9579ff0771a541ede6b4879e50a9f3ec6"
},
{
"path": "package/dist/domain/text.d.ts",
@@ -6823,12 +7443,12 @@
{
"path": "package/dist/eval/calibration.js",
"size": 11821,
- "sha256": "8f0503e32a736e18b96699f2f32af041171cbac8ade7bff3d24d49e58c1a3851"
+ "sha256": "3667e06bd327be23b29ee77a21ab00f4d9916e9ae0f07c228c209aa96f8ecd34"
},
{
"path": "package/dist/eval/calibration.js.map",
"size": 11431,
- "sha256": "638c6420e88f6543098d1901a6a32b161256e9235c5a97be94bc132b91be494b"
+ "sha256": "6529b0451e53512f52b1a0e95a127757651d86b501d9d0e363625691c0271a3a"
},
{
"path": "package/dist/eval/campaigns.d.ts",
@@ -6858,7 +7478,7 @@
{
"path": "package/dist/eval/cases.d.ts.map",
"size": 604,
- "sha256": "93a022055b2c9ac1ec46c7c2d539e3b1b6afcc38f36fe5589264e4e5c2a3a665"
+ "sha256": "b37d4fe580243fd40e56b7bc3895f27b32959aa920286f1d0353b78a7f0bf94d"
},
{
"path": "package/dist/eval/cases.js",
@@ -6868,7 +7488,7 @@
{
"path": "package/dist/eval/cases.js.map",
"size": 5607,
- "sha256": "e6795a4a4506a4394b1791fc7417bc0241cea08946ac2c8d9fcb5798439e375b"
+ "sha256": "350ffe597741eb15ac2b9283d176fd92580279052623c4c3b32a8a8623fff2fa"
},
{
"path": "package/dist/eval/execution.d.ts",
@@ -6878,17 +7498,17 @@
{
"path": "package/dist/eval/execution.d.ts.map",
"size": 2009,
- "sha256": "795eeaae496fc6c6ebf508d01824ef61635ba8262b3b09dce1f82777a875c65b"
+ "sha256": "7bfdd63faaf8842fddf13807a31ca2f3941fbe025c175f62dc7a41d8257b80c3"
},
{
"path": "package/dist/eval/execution.js",
- "size": 10290,
- "sha256": "adfbea2ce637654536b309398381629eb888d373ccf60a54e251909475c0d322"
+ "size": 10566,
+ "sha256": "958160809747dcfb19ecd91da351715dea16174d55f8ab08f7c05dd3de2da4ab"
},
{
"path": "package/dist/eval/execution.js.map",
- "size": 8950,
- "sha256": "355a2c7cb2b83c87e1feff7ac8af6b09ff21eac813c1b0be6fd3c96c227e6cd8"
+ "size": 8988,
+ "sha256": "4991c753f4e56ff5f7783a639a40f3b48164be15cd44b6dc567d2999f23d7830"
},
{
"path": "package/dist/eval/fixtures.d.ts",
@@ -6903,12 +7523,12 @@
{
"path": "package/dist/eval/fixtures.js",
"size": 28653,
- "sha256": "f6fcba6c103d6266a51c21ebba13fb777c0bba904954a1ed1a0dd7a81a0155f9"
+ "sha256": "058a8a1b1aa58599a3f6b35fb70168d7fe4539e7e9de08526cd178b110891ced"
},
{
"path": "package/dist/eval/fixtures.js.map",
"size": 17842,
- "sha256": "85e68cd4f8341621f023428cc45ffc0cc7d379ca6f7c9e0e8c425f1a899058a3"
+ "sha256": "ff7585864110c1770caef9abb2ba41e699dd703a12e23c8cc4312b0fdf5f9a00"
},
{
"path": "package/dist/eval/product-path.d.ts",
@@ -6918,17 +7538,17 @@
{
"path": "package/dist/eval/product-path.d.ts.map",
"size": 556,
- "sha256": "08cc89ac94f8e9668dd62828223e0ffa904080ada2cc0cbac4076beea8117c0a"
+ "sha256": "c7790740fef21ffd54a57644c75456dbe1f01ec7b5728f8d03fe5b3671f2737f"
},
{
"path": "package/dist/eval/product-path.js",
- "size": 10722,
- "sha256": "3f277a4ce8694743c65b461ed0291551c93bfb53d14cfa9e39bcb636174429a9"
+ "size": 10653,
+ "sha256": "2a9adc8a33fe2b8b073b9293f0473fead2d616d627cbf9e9cd373b6a26ac7eb3"
},
{
"path": "package/dist/eval/product-path.js.map",
- "size": 9244,
- "sha256": "53988fe377042d27b2cf7c0052b3f232a51373404f053c134223ef90fd82e914"
+ "size": 9144,
+ "sha256": "e7ec2454d9f718a791a209f297f34fae33355906a292c6af0e815d3a9b8ceb33"
},
{
"path": "package/dist/eval/record-builder.d.ts",
@@ -7052,23 +7672,23 @@
},
{
"path": "package/dist/index.d.ts",
- "size": 4997,
- "sha256": "57f0a518339ceeb2d1538079b4d84e1c54f042f68d03d15835aa8823351c8cf3"
+ "size": 6356,
+ "sha256": "8ac74305806b5b41894030c541c42cab4f6c5248a8fb5f314ce7cc78b08f4f04"
},
{
"path": "package/dist/index.d.ts.map",
- "size": 3361,
- "sha256": "68ad28f45fa5cf97d3fffaa5cb3192b2870f4d6d30f7a61e68b56a6175bd1c08"
+ "size": 3945,
+ "sha256": "484ac5684a972c33f3ae2ace7b293720d5b4973a9223d3dd6115b3697a1f92c7"
},
{
"path": "package/dist/index.js",
- "size": 2733,
- "sha256": "5e72da610070827a4b0777ff077c432f0ebe6d3f45f51d5caeffc730f51f1c1a"
+ "size": 2906,
+ "sha256": "f2bcfb01f12326d63ca5254dd7f906f2da135449ccafe0417453e3c1606afd5f"
},
{
"path": "package/dist/index.js.map",
- "size": 1809,
- "sha256": "d9d266b5627959e6ad0f052ce0c66d6c8cce7dd7312abda4cd4cad27ad447f87"
+ "size": 1859,
+ "sha256": "c4a55275326e5ce62ff7c1de369d8e91a8f17ae91a72c5f2dfb102428f6511ca"
},
{
"path": "package/dist/installed-package-version.d.ts",
@@ -7172,23 +7792,23 @@
},
{
"path": "package/dist/ports/execution.d.ts",
- "size": 5003,
- "sha256": "dba8cc6189e7a955b9ad5b5aa975c3f49904d5a57f83e1d315cbac2b86b9574c"
+ "size": 8869,
+ "sha256": "c71f2d80aff1eb6c8036f54d8fcf96e497b26ddf39926751a5ff87d01c6b54d7"
},
{
"path": "package/dist/ports/execution.d.ts.map",
- "size": 4730,
- "sha256": "1ec897402a04c96d5a22f9ab515e06f9cd20fbbbe9dfde11e0cc75c3c444b7e4"
+ "size": 6482,
+ "sha256": "b244da23dcdb4a15199d9b489dc0d257b62460b67380803eab959060c13aac05"
},
{
"path": "package/dist/ports/execution.js",
- "size": 1701,
- "sha256": "85b8c9862521cdaf49014c553c364ccde0e3413088d26e5808c5edb75b3983af"
+ "size": 2805,
+ "sha256": "98b2e95e30be6491cec750cbbd18ceab980ef81f16874a2b10079512fd2b2c01"
},
{
"path": "package/dist/ports/execution.js.map",
- "size": 1610,
- "sha256": "dc872eeac8ef326ea7b856c85e8111ed15d821471f4df9948d358cfb52d598c4"
+ "size": 2198,
+ "sha256": "153793809897fe5b20982a487fbb909104c2fe2554a09eaffaccd47686208e06"
},
{
"path": "package/dist/ports/ids.d.ts",
@@ -7210,6 +7830,46 @@
"size": 467,
"sha256": "ddd237597b1228c6640c45c8c4cf3a109cfc303d8f9a8f8a4b1a2e6533d7af29"
},
+ {
+ "path": "package/dist/ports/native-interactive-execution.d.ts",
+ "size": 732,
+ "sha256": "f19526428cfd70d8a409441d33a26fc0d6d1d4a5fb7518911f204bbeb715870c"
+ },
+ {
+ "path": "package/dist/ports/native-interactive-execution.d.ts.map",
+ "size": 727,
+ "sha256": "35a78efce7bdb85b3a6432db8eb078d5ed94fcc0198eb22eb33324400dd335f2"
+ },
+ {
+ "path": "package/dist/ports/native-interactive-execution.js",
+ "size": 67,
+ "sha256": "c05468ddcd45dcb8e8088458c2cd0562643f89c9f021d04b180e9edd0ba134e7"
+ },
+ {
+ "path": "package/dist/ports/native-interactive-execution.js.map",
+ "size": 157,
+ "sha256": "bcbc9c1c222c07089573bb6fdb72d2b8fce10e7f9401b3b3ecb4edadd95f9ec2"
+ },
+ {
+ "path": "package/dist/ports/native-terminal-transport.d.ts",
+ "size": 2613,
+ "sha256": "553d952b00066b91f5c8b70012587fa101cd66adeb072682009b9e7936baf05a"
+ },
+ {
+ "path": "package/dist/ports/native-terminal-transport.d.ts.map",
+ "size": 2291,
+ "sha256": "3d6f7edfb1c5fa2291713fcdb23325bee48199a020f31e49fcbfc58a906c2832"
+ },
+ {
+ "path": "package/dist/ports/native-terminal-transport.js",
+ "size": 64,
+ "sha256": "20d53b76601129e8e3778449f3eb6e4ec7a8730e7def416b02126e6b022d166e"
+ },
+ {
+ "path": "package/dist/ports/native-terminal-transport.js.map",
+ "size": 151,
+ "sha256": "3e67db35dba88106b001c311ce05851fe26ffd60ec94b7705c762b7a4a7a727d"
+ },
{
"path": "package/dist/ports/storage.d.ts",
"size": 8766,
@@ -7232,43 +7892,43 @@
},
{
"path": "package/dist/startup/durable-runtime.d.ts",
- "size": 116,
- "sha256": "fbe45f698eca6d9e12c88c34238dd72eaf82d9aee6f6b81b5aa68fa221807f94"
+ "size": 2232,
+ "sha256": "13fc0ddf9df2aba805cf267eb3eb312e33f9ab72c9d8e882955be8ed7970484f"
},
{
"path": "package/dist/startup/durable-runtime.d.ts.map",
- "size": 178,
- "sha256": "36fddf792b0e47174cf07622eba0c981987f3abbf224e35d72b9d4979d0749c8"
+ "size": 1631,
+ "sha256": "a3649b2c5fb0fc638cb244143ecc2201cc3734db9e2d4ab690181269168bdb1a"
},
{
"path": "package/dist/startup/durable-runtime.js",
- "size": 114,
- "sha256": "8bc97f1b3ad298bdc79a85b28fd15c74771b48813e51a40cf2f6f994845c1bce"
+ "size": 6461,
+ "sha256": "4c0072d587909f8442d265756ae1789257796278abe4bffaa7bdeb17aa2877d0"
},
{
"path": "package/dist/startup/durable-runtime.js.map",
- "size": 176,
- "sha256": "07cfcc5d6dc9d09eb257259f18e775143d33c1095e175dce26945b8bead33a20"
+ "size": 5143,
+ "sha256": "244d9ec597c315ac2d7658e48efcf6a97702786b477b62e689f23387903ae0eb"
},
{
"path": "package/dist/startup/preview-runtime.d.ts",
- "size": 2260,
- "sha256": "422c38e97b7971b7d9fee1f546a8ba3d77f8a4d8aeba9dbe1775d4f884b558e0"
+ "size": 2369,
+ "sha256": "ec60508a1d7320dac3692bdf25aa9978ed65b8f47d7f724b12f4a944667fab98"
},
{
"path": "package/dist/startup/preview-runtime.d.ts.map",
- "size": 2312,
- "sha256": "5233c02daeb3e194a36d308a398284b3fdcda949b990e1424dbceccc9f555b83"
+ "size": 2400,
+ "sha256": "65a3c2f7690cbd2a47af8db4f8fe90f9945f2f504731d45b21f1533ba48a986e"
},
{
"path": "package/dist/startup/preview-runtime.js",
- "size": 6716,
- "sha256": "ff6e9adf0994cb2c4606c052768015243cd31c5ca3de89702db5a7030394c75f"
+ "size": 7091,
+ "sha256": "4034e6b5db051e4d3d34827194ce55addfc1903c20079074182324d0ebd9e23c"
},
{
"path": "package/dist/startup/preview-runtime.js.map",
- "size": 7039,
- "sha256": "d68c488efc6a92aa3811f5d97d8142f8ad7ad418ef533d0f46924957c9a45425"
+ "size": 7375,
+ "sha256": "a1ba2a01cb89b657dfda161878108c66ff8c7093a74ebb13b86b6fa46ec6b9f7"
},
{
"path": "package/dist/startup/terminal-runtime.d.ts",
@@ -7358,7 +8018,7 @@
{
"path": "package/dist/testing/runtime-contract-fixtures.d.ts.map",
"size": 359,
- "sha256": "92bb7abb744468b34a7d610d1520202a61836cf5e539c7d355c1461773632690"
+ "sha256": "0586199b0a941d9950febd17c60b29828eb7311150066b477ad558507717a3a0"
},
{
"path": "package/dist/testing/runtime-contract-fixtures.js",
@@ -7368,7 +8028,47 @@
{
"path": "package/dist/testing/runtime-contract-fixtures.js.map",
"size": 2574,
- "sha256": "95767c52abcfd1da5278c6e60c0b693eeab5804a98576b9ded7d90713223f3b7"
+ "sha256": "2f562f31b50027fcfff91ed43d69877c1b2fb88d2eda6f3616abebed12bb4fde"
+ },
+ {
+ "path": "package/dist/testing/supervision-fixture.d.ts",
+ "size": 1731,
+ "sha256": "a8e5028c0e6617b0e8b52133dcaa41fe8bfc1e94447b8e109a8d0cbbd44dbed1"
+ },
+ {
+ "path": "package/dist/testing/supervision-fixture.d.ts.map",
+ "size": 1673,
+ "sha256": "7083aea99892a6540336bdc28c3882ddb6a7a6fd8ffef3eba7b925fe1be57b16"
+ },
+ {
+ "path": "package/dist/testing/supervision-fixture.js",
+ "size": 4597,
+ "sha256": "83a102a7219ffbc475f606d4706c1c9449fb37cc1995e42a1d979bc1a409fb00"
+ },
+ {
+ "path": "package/dist/testing/supervision-fixture.js.map",
+ "size": 5072,
+ "sha256": "e1e50575185ccffdc4453c4cd27b860be00eb95cc12a43ade906d2dc1f5fb2b5"
+ },
+ {
+ "path": "package/dist/testing/supervision-ui-fixture.d.ts",
+ "size": 306,
+ "sha256": "0c6bc5697493072d1303bb6b47f77c37ff04b22abe044b7fe7b319b79070557d"
+ },
+ {
+ "path": "package/dist/testing/supervision-ui-fixture.d.ts.map",
+ "size": 249,
+ "sha256": "3e8372ec1d3481516749452c6f604ac544f8e0a181c95f87f7705a9ab5c6822c"
+ },
+ {
+ "path": "package/dist/testing/supervision-ui-fixture.js",
+ "size": 3094,
+ "sha256": "a03bd5f8a639d8fa1af47f198406606cc6b5f7698d84507693c08358a7ee33fc"
+ },
+ {
+ "path": "package/dist/testing/supervision-ui-fixture.js.map",
+ "size": 1904,
+ "sha256": "49cf6e8683789471ebfc6cd635d0cd9cd7df4d6d9af4a04dccc4149a12762cd9"
},
{
"path": "package/dist/version.d.ts",
@@ -7432,13 +8132,13 @@
},
{
"path": "package/dist/views/headless/protocol.d.ts",
- "size": 5742,
- "sha256": "a3b5a68ed22ac6307cfb89a3f068d1d78b6e90d3ca23bf718415c705d7dc95f5"
+ "size": 5822,
+ "sha256": "6de2cb3d3ee78912f1b1ef6c775d9d10480a5fb368b7a2f085d073bb6bbd5e86"
},
{
"path": "package/dist/views/headless/protocol.d.ts.map",
"size": 4929,
- "sha256": "bc466b5ac3216988ced3df8a2c1cb4612b46f6dcf28e4e90ef5f41ab7c9acd8c"
+ "sha256": "9b3ba86db3c0b4f15f7f2c5797422b5bda6883abac76a3b8e0005cbce0d43ac3"
},
{
"path": "package/dist/views/headless/protocol.js",
@@ -7448,7 +8148,7 @@
{
"path": "package/dist/views/headless/protocol.js.map",
"size": 261,
- "sha256": "c421156fa137cbc2b206250a1e7fa62fe958a71200975f44bd49cf33d9195364"
+ "sha256": "23f5daa290dd5d0837c59744a1d0688f41a808b8a731505b623357df1f72e7ab"
},
{
"path": "package/dist/views/headless/rpc-automation-commands.d.ts",
@@ -7518,27 +8218,27 @@
{
"path": "package/dist/views/headless/rpc-parser.d.ts.map",
"size": 460,
- "sha256": "00b789488eca3be72ae758817e74b8d242d4431577053996a171bb6c94852c66"
+ "sha256": "0eadabf0cc829cb5d1d170a500a30e9e3b1cbcb08e899f7d392603985c689540"
},
{
"path": "package/dist/views/headless/rpc-parser.js",
- "size": 19612,
- "sha256": "2fd4b49f12659567bbe332e48ec4232c3215a57771335ad2430e815b859cfd92"
+ "size": 20561,
+ "sha256": "ce1079d827d6fb5258cbca3888e60f16629276bf15b8195164e5c644c2f2ba7f"
},
{
"path": "package/dist/views/headless/rpc-parser.js.map",
- "size": 17427,
- "sha256": "f02d886edf261975fd084dce2810c092b95d86028b073b69bfa130721975b039"
+ "size": 18078,
+ "sha256": "8669e453a5a641e2a64d4a71eff1f1fe6941221be6e9e2ff6b906a760e6ee3d0"
},
{
"path": "package/dist/views/headless/rpc-types.d.ts",
- "size": 480,
- "sha256": "9400e446e318d8be286ab95eda947b9591d8318ab40ea8a496ff15a950de1dc0"
+ "size": 560,
+ "sha256": "2e97e8bae5c11314b30abe002b7404e1bdaac9160ea607cacc2f8fabf71a7b20"
},
{
"path": "package/dist/views/headless/rpc-types.d.ts.map",
- "size": 562,
- "sha256": "0adbad854989c067d045fcb6e66b1cbea9a88ae7915bb011055920afd5158568"
+ "size": 575,
+ "sha256": "ab8e87042ab166eeb16a8b7ee28e473068f9a76045161923b8dd89641698816a"
},
{
"path": "package/dist/views/headless/rpc-types.js",
@@ -7558,37 +8258,37 @@
{
"path": "package/dist/views/headless/rpc.d.ts.map",
"size": 460,
- "sha256": "dfee726abde76ad26285660ca443e7159ec36066eec46c353871bd69756ca492"
+ "sha256": "a5899e3b947df9dd17b606d3e5547635941c96c0f17aae12f48209a352d10d13"
},
{
"path": "package/dist/views/headless/rpc.js",
- "size": 18391,
- "sha256": "a2c9faf66c1f26370d2d1c04e24b48061b7c23f61e5f654a3829da1bf037275f"
+ "size": 19431,
+ "sha256": "d54ef4da2814fcbbf980c26e70058b16252a46a80d9fefad376305b673d09fa8"
},
{
"path": "package/dist/views/headless/rpc.js.map",
- "size": 14529,
- "sha256": "ec69f9a89135547cdf00cc4e04c281ce0d906be4ac044219052813a64dca2681"
+ "size": 15381,
+ "sha256": "8ad45c42bbc31fd6cecfceacfe1b3a33c07e9e34a2227198b73b24c502d07631"
},
{
"path": "package/dist/views/shared/analysis-model-call-presentation.d.ts",
- "size": 671,
- "sha256": "7e302dd3a9ada11e34efafd7fd0e03030253038b43a939a9c417ef5b5851a24b"
+ "size": 1030,
+ "sha256": "9fe3716753cefcf4a0002e81bb6bfcb4242a132f656e8f31c1bf842729178c83"
},
{
"path": "package/dist/views/shared/analysis-model-call-presentation.d.ts.map",
- "size": 575,
- "sha256": "56312988f1f09874ab5f5d771b156e414b6d97955267b3616cc1967d4b955795"
+ "size": 726,
+ "sha256": "c26bd0720427f505db0514523c38bb22a5fc778262549c199755d6a428cf977b"
},
{
"path": "package/dist/views/shared/analysis-model-call-presentation.js",
- "size": 5049,
- "sha256": "d29ee5a0098c5eec5c46cf221f790c1b7c5e97b7b656fe8a284556a2217ac18f"
+ "size": 7845,
+ "sha256": "5130aab6b031a79eb01475b0da2570e2e9e4ced931685670945df80afc23e71c"
},
{
"path": "package/dist/views/shared/analysis-model-call-presentation.js.map",
- "size": 6223,
- "sha256": "e04fc2ba51d190ce0b23bae2fa141213a767dc3d129d87e0dc38523b12e6f9c7"
+ "size": 9833,
+ "sha256": "d4788c687c6626e5da804bdfa4d2e372a0403a665d44d9a301995c5aa4bb925a"
},
{
"path": "package/dist/views/shared/analysis-presentation.d.ts",
@@ -7598,17 +8298,17 @@
{
"path": "package/dist/views/shared/analysis-presentation.d.ts.map",
"size": 582,
- "sha256": "c469aec64e78160fdef11187da0f04e71208033d8a3174666eef264f58dc8612"
+ "sha256": "8be6e2cf088226dd4ec811232b6fac5d812a408e67b18f1785b3cae4ae3a3422"
},
{
"path": "package/dist/views/shared/analysis-presentation.js",
- "size": 9874,
- "sha256": "27099533612d7ed54033258ae713d7f30ecc28590e9d0f37ff0ace393e63e41a"
+ "size": 11775,
+ "sha256": "8cc16c6d69311a25274d90ae8fc872792947a3298f4a7f647ea6dda3b8ba5f32"
},
{
"path": "package/dist/views/shared/analysis-presentation.js.map",
- "size": 10000,
- "sha256": "b1acbd69bd0e02a8ca7df7afe2acc05f275e8853807773fb4598bf28f01c6900"
+ "size": 12193,
+ "sha256": "07eb30d881c3b9679879e01b4f16f065254f4ba6ff679b60170398bd10baa397"
},
{
"path": "package/dist/views/shared/appearance.d.ts",
@@ -7632,63 +8332,63 @@
},
{
"path": "package/dist/views/shared/canonical.d.ts",
- "size": 393,
- "sha256": "4a1f05cebd1045ee24a5c15ae22aae69b39e9c6016ce5ea94d007742922811e6"
+ "size": 682,
+ "sha256": "9330f9d35c0896f1866c7b1f998d6ec5713122933f78bb500e031b1585fbab87"
},
{
"path": "package/dist/views/shared/canonical.d.ts.map",
- "size": 249,
- "sha256": "01875428feae7f0ebb9d9ec6777bb116450086720f5f3e85b5a24217a4151131"
+ "size": 246,
+ "sha256": "def1456e57a59be84c8c3b5cbd0017cc945f12f505a81084183212539047f132"
},
{
"path": "package/dist/views/shared/canonical.js",
- "size": 858,
- "sha256": "fecf6cf57698d05f20dfb88d592e06c784c9d1677bcd6ff5d97020a95d461fc9"
+ "size": 755,
+ "sha256": "bd56d8dd65172a47211f89a621334fac31469fbb2da08125ed9d90682d67abae"
},
{
"path": "package/dist/views/shared/canonical.js.map",
- "size": 963,
- "sha256": "f84fb507770bdd4c73b643dc8797d3916ab22ceb68b9b1c1866fd5d12e3d0676"
+ "size": 311,
+ "sha256": "8ff1318ea4db9e50ae0f2f3f4341635955312c6637ee543b247befa3a95b5b74"
},
{
"path": "package/dist/views/shared/command-registry.d.ts",
- "size": 2845,
- "sha256": "96b42a814582b1d37c0f4fb6f9eccf582812c415055307ff7520303ec165d7c0"
+ "size": 2872,
+ "sha256": "1e0c1810653c8917ab7f48f05e2f14dc054d389000eb06a2a5d582a84bf10d29"
},
{
"path": "package/dist/views/shared/command-registry.d.ts.map",
"size": 2422,
- "sha256": "b835b143e56798a81a8271be02ba333cc632fb97529e65290129d4f1b0c1ce29"
+ "sha256": "25192e7c3b2c5e8fd9bcef2a74e230e02ca378dcfefb7634a02eac88d97ad68c"
},
{
"path": "package/dist/views/shared/command-registry.js",
- "size": 11839,
- "sha256": "51b1ea27b4d83789f35836153d67e5f8689c6ee5c9fe8a89ca316269661f70f0"
+ "size": 12414,
+ "sha256": "4fb669cb2a34812a7bc13d3cef452c2df2a0d72bb87c111311cd9cd335469bec"
},
{
"path": "package/dist/views/shared/command-registry.js.map",
- "size": 10723,
- "sha256": "1c804bfe8ff760669100285b1478c522334e94c8993d08d0be8087cf7054ae08"
+ "size": 11099,
+ "sha256": "ce3be8452c8693b9214619223924d30c5ca828ce77f67a89c909f5335e51dc27"
},
{
"path": "package/dist/views/shared/command-table.d.ts",
- "size": 6475,
- "sha256": "5fa6e857e65fd3a89ce78daa793b9b3119881be8020ab22e09d5411d56c0598d"
+ "size": 6822,
+ "sha256": "e6cc01b2c5b0996ba02262bdaac4cc8f1b633afe8eca982e1a8863c50a35740b"
},
{
"path": "package/dist/views/shared/command-table.d.ts.map",
- "size": 3033,
- "sha256": "7cc2c0c6a1b75649b71b00765751c018eaf9fb02a9318228cf9ab74351d3b0ee"
+ "size": 3154,
+ "sha256": "2b5387127c1297ddab5af4a5a044506a212e83bd725b4be52bfeed0b845f7ade"
},
{
"path": "package/dist/views/shared/command-table.js",
- "size": 5768,
- "sha256": "ba7b9ef2e43fb47451f7290de903a554c9333a1e5240b51ec85bc39867f2a006"
+ "size": 6055,
+ "sha256": "311b36f8e0f96e8246d980fd67673bc1872e5689c05017fffc846e62a013a6a6"
},
{
"path": "package/dist/views/shared/command-table.js.map",
- "size": 4146,
- "sha256": "5145a8277dd9fa846006ff2b79ff9c79693aae1a687006d5b31da1ec1abff5ed"
+ "size": 4345,
+ "sha256": "0cf59fe9bdd13cfbcde1fe7f2023dd82434ab92983ecf861299cca9da03f6b37"
},
{
"path": "package/dist/views/shared/comparison-presentation.d.ts",
@@ -7738,17 +8438,17 @@
{
"path": "package/dist/views/shared/duration.d.ts.map",
"size": 403,
- "sha256": "27ffd4a47abf9570458248876604102567b6500c0ac45503e59f024d3db8ca8b"
+ "sha256": "2e74b83da56f8b8d1ffa93577056d239ce6967df1ea5263a4c4d8bfa6f32ad39"
},
{
"path": "package/dist/views/shared/duration.js",
- "size": 1316,
- "sha256": "c7ce6a2b63723b2be159f0a2cb6c7339828e7b7d6018880f9facbb10ff2adae2"
+ "size": 1420,
+ "sha256": "658a96e8107fcec08b37f5acf4f0d2b9e72ce98ca53b7e3e388548fd78258391"
},
{
"path": "package/dist/views/shared/duration.js.map",
- "size": 1704,
- "sha256": "291b2ad9a4ec27b0df6302f040f2331c6d5efefe877c4e3f0559204066b9d326"
+ "size": 1805,
+ "sha256": "948cd065a1a9a8094621f1969c060dd4240ead7db587467304892e5910cdd895"
},
{
"path": "package/dist/views/shared/environment-presentation.d.ts",
@@ -7772,33 +8472,33 @@
},
{
"path": "package/dist/views/shared/headless-commands.d.ts",
- "size": 1340,
- "sha256": "e772af418f1763a22fb1c607ba5501222b37a2365ca9b61232504469b5d1615c"
+ "size": 1420,
+ "sha256": "289081d90ecb6aa21e89c47906995c5f74c0586d58f5f67e785bf95d7312fe0c"
},
{
"path": "package/dist/views/shared/headless-commands.d.ts.map",
- "size": 1037,
- "sha256": "6d3ce0a7ed342ce0d29eb7ab796d13ac7fbd95c7a9049e4768930b2e54364fee"
+ "size": 1086,
+ "sha256": "ea3fa0e7b6a69a1a7461adf98b63b1edc321c57ff1e4b55089e489d232613edb"
},
{
"path": "package/dist/views/shared/headless-commands.js",
- "size": 3919,
- "sha256": "11c80956a75500b533a8818576d0391df063b15c8c807ea67a0322ed133fac22"
+ "size": 4290,
+ "sha256": "a32ecdcb519fdc40c57b422d0038f3537cf385d94e0f68568b47f46c1f1e0f06"
},
{
"path": "package/dist/views/shared/headless-commands.js.map",
- "size": 2634,
- "sha256": "f258f883ac0d9ab356bb84e2a22fc215e84fb0d622715364e36d817d89ce27e0"
+ "size": 2819,
+ "sha256": "f61dc09e351a816ec1a5e8c99f60b2cfcc78c22c768f066025943eeef54c07cc"
},
{
"path": "package/dist/views/shared/intents.d.ts",
- "size": 5200,
- "sha256": "b26b9e82d9ac3d03bc8478ea5b8bbce9202b5947597bd63bf523adecdfc868f4"
+ "size": 5358,
+ "sha256": "97c44cd6516902075f8c5613b55908fa29498dad9788d8a9d2d8df91f92a26f2"
},
{
"path": "package/dist/views/shared/intents.d.ts.map",
- "size": 5088,
- "sha256": "f8c1de8cf11c543104ce4a9e993858094f8e619a70c824f14f5406f9fdb41b9f"
+ "size": 5292,
+ "sha256": "30709b0400e7e66a922c67f418597efe2c252231249f3905feeeaa01ebbd64c1"
},
{
"path": "package/dist/views/shared/intents.js",
@@ -7812,13 +8512,13 @@
},
{
"path": "package/dist/views/shared/models.d.ts",
- "size": 21550,
- "sha256": "f0d8a1066ab7f90527dd13f65ce286f0942e93d547698a4208a2f99f22746394"
+ "size": 24869,
+ "sha256": "b49af7f9026f18d54a543d0616a80b32329e381e4648708985505074f3522fb4"
},
{
"path": "package/dist/views/shared/models.d.ts.map",
- "size": 22195,
- "sha256": "3f9a137c1ef7a3ea44b2dc631311b1b88c5992d4f6a64b2ce1cd0a58afb4d361"
+ "size": 25527,
+ "sha256": "64d2a56d0a6fcde304741272aa072add14864b1a6e70ab099fa344e6a268088e"
},
{
"path": "package/dist/views/shared/models.js",
@@ -7828,7 +8528,27 @@
{
"path": "package/dist/views/shared/models.js.map",
"size": 595,
- "sha256": "bacf326846406bde657e44461a6a022678a0c2fcf451fa4cd24ff07a81b82291"
+ "sha256": "c2edf6b3bec3e61ea8c77e30fecb8d277f9cb1030cb691e0f07e6a931c85a09b"
+ },
+ {
+ "path": "package/dist/views/shared/native-interactive-actions.d.ts",
+ "size": 1607,
+ "sha256": "64e116c85f024c981cd90c60f73ae82486ebf09307216a233c6c92db4a17ceeb"
+ },
+ {
+ "path": "package/dist/views/shared/native-interactive-actions.d.ts.map",
+ "size": 1584,
+ "sha256": "3a8be0847abd818008d9dfdcdb199046f0ac5b459db5a23c0d2a135d7404b21a"
+ },
+ {
+ "path": "package/dist/views/shared/native-interactive-actions.js",
+ "size": 65,
+ "sha256": "72288da755d7ed2411980b71cecf5608aa4d7207ae427ede450d3739cd56fafe"
+ },
+ {
+ "path": "package/dist/views/shared/native-interactive-actions.js.map",
+ "size": 163,
+ "sha256": "b89c888285624046b307c19c0a3c5617a83e2cae0a0e75b2c3920a1d5f0c8c9c"
},
{
"path": "package/dist/views/shared/plain-accessibility.d.ts",
@@ -7898,17 +8618,17 @@
{
"path": "package/dist/views/shared/semantic-activity.d.ts.map",
"size": 533,
- "sha256": "45a6bb369f391086c4259bb84b18dcc772f8bd9bdc921c8da34fed89e42db0ed"
+ "sha256": "7d8c3f0f61a76e42ec42de35ad9d7050a905daa47d478c50d2f5bd79e5eb3200"
},
{
"path": "package/dist/views/shared/semantic-activity.js",
- "size": 9781,
- "sha256": "42d5913fef12df652b79ee8f081cdf5f220f159cb2794bb3e0194e0bd187b56f"
+ "size": 9399,
+ "sha256": "3f88b844d7a0e036c43312d62e178ce3160eeea967053a05b6fb983e09eaaec2"
},
{
"path": "package/dist/views/shared/semantic-activity.js.map",
- "size": 11029,
- "sha256": "11513b73fd9077f33dbfffba247664bb430cc546e44c65ee1d5a16b0078eccaa"
+ "size": 10610,
+ "sha256": "32f3a46610b027c40a3157cd49eb8917ed13eed1d495fea24234b6d2f65fdbbe"
},
{
"path": "package/dist/views/shared/semantic-details.d.ts",
@@ -7918,17 +8638,17 @@
{
"path": "package/dist/views/shared/semantic-details.d.ts.map",
"size": 565,
- "sha256": "f27b908205ed5455f63c5edbd8f383c2694b9c57c3bffe4dbb4c0fd408de7241"
+ "sha256": "f8279c618d208f4dd4af80569867d125ce5479f90328030e2d64e2cfea6ba8f5"
},
{
"path": "package/dist/views/shared/semantic-details.js",
- "size": 21448,
- "sha256": "046221f5ba1e2100070b088e8ace61d83508e88b3b10a592a22eba650975e7ba"
+ "size": 21601,
+ "sha256": "2c174af022b0a9f90f9155197f733194f3230d373bdf320896d2b46d533388eb"
},
{
"path": "package/dist/views/shared/semantic-details.js.map",
- "size": 21143,
- "sha256": "014b08afbbdbbd4f8f6aeb12090ab2c1637fc1362fddca379febc132b9cfccfb"
+ "size": 21284,
+ "sha256": "bcdfb438cf5e5062345c72df293ec9b1d7afc6f9fc1236ec6c7715aef9bc634a"
},
{
"path": "package/dist/views/shared/semantic-graph-edges.d.ts",
@@ -8018,17 +8738,17 @@
{
"path": "package/dist/views/shared/semantic-projection.d.ts.map",
"size": 580,
- "sha256": "7d2166d8501e5552883646014e284942a23845940c57524859bb6c3614515210"
+ "sha256": "b3a3a1580c531350cdd0c1fca0a4312ddf59afc654b504159fab19dd9b7ab8f3"
},
{
"path": "package/dist/views/shared/semantic-projection.js",
- "size": 16166,
- "sha256": "2096848fe410dce6f9b26ed8f1d9255df08d46b0de8709eae0af2739292a6bae"
+ "size": 22885,
+ "sha256": "741d5f86b53b91816b04438beee437cd8910635339042531eee4aa044a6ffd84"
},
{
"path": "package/dist/views/shared/semantic-projection.js.map",
- "size": 15923,
- "sha256": "2c1d9da15052f21539496795fa11c2c8cff406c7ca522a0ce0719c2b546333df"
+ "size": 21654,
+ "sha256": "ad7b16160d99cad8dc8fe87590646893133700b2ae7bb6f915a0f2ceb0921b13"
},
{
"path": "package/dist/views/shared/semantic-query-scope.d.ts",
@@ -8072,43 +8792,43 @@
},
{
"path": "package/dist/views/shared/usage-projection.d.ts",
- "size": 346,
- "sha256": "5af5bc62985cae5687b1d5f5500832d8762cb090849a1742dc6559971f44b4ba"
+ "size": 351,
+ "sha256": "758afac81204218c22ee75dab9cabedce96ce9077befd21832aa85bd71dc4f53"
},
{
"path": "package/dist/views/shared/usage-projection.d.ts.map",
- "size": 415,
- "sha256": "9bd325a4c0191d09c9a9369b37de2c4ea7f7fe852ace1e36eacbb10f52f1963f"
+ "size": 420,
+ "sha256": "fffbb271cf0e82e4765ca41eefa738e10b3c6801788a534ed56378d361c4f664"
},
{
"path": "package/dist/views/shared/usage-projection.js",
- "size": 14302,
- "sha256": "4a3b1bdcc8d4edfe23f7364663167ef48d6083265cde2dc905b6544803f44b4b"
+ "size": 14740,
+ "sha256": "080370dd81778d2255b19e619bc6fbddc71f8c27f910c2ee6b98272fdfe8f225"
},
{
"path": "package/dist/views/shared/usage-projection.js.map",
- "size": 16026,
- "sha256": "d4ab210f38887170434674d153f7f0feec44b884c521f1928d9a90288f5cac53"
+ "size": 16327,
+ "sha256": "5008c6d580f5e21b7fdfa07d0abc52d8f42691596b40e4b67b61314166e5ab44"
},
{
"path": "package/dist/views/tui/activity-browser.d.ts",
- "size": 1050,
- "sha256": "dbe333f55c6b23ca5c13e61c53eb24aa4d79e6cfd1b8ca497929b6030b749aea"
+ "size": 1409,
+ "sha256": "2089437e3af97526130f4b7dae53f41b4c6866810ba4877b4dfb006bb9ce122a"
},
{
"path": "package/dist/views/tui/activity-browser.d.ts.map",
- "size": 1073,
- "sha256": "68a8bf96aed9305cf545bace4008a320f74b96f63b4b05c6610aa5f68ad77e4f"
+ "size": 1411,
+ "sha256": "616fbb7df0a692a4a5bb79f1f250d2f5671e9e172b705215f83bef7a09f3b007"
},
{
"path": "package/dist/views/tui/activity-browser.js",
- "size": 9220,
- "sha256": "b189226e485bc6734f73724bd7d13a27a24ccd1c51b0286f3339aae01cf7622e"
+ "size": 10961,
+ "sha256": "e09d2bb08af3d74c0edf9914f4679b7408a7ae4db59717487944f90b47dedcaf"
},
{
"path": "package/dist/views/tui/activity-browser.js.map",
- "size": 10509,
- "sha256": "1e698ef83201edf318ccb90751058889786fa75b7ec4a95ea6fca3da8db18678"
+ "size": 12191,
+ "sha256": "475a6cc69ea6ccf59361c017290f99670ad7c66ff177744b7e33832edcfa8c1f"
},
{
"path": "package/dist/views/tui/activity-document.d.ts",
@@ -8132,23 +8852,23 @@
},
{
"path": "package/dist/views/tui/activity.d.ts",
- "size": 342,
- "sha256": "9fbbdadfd740e0c7df73feeb8d9ac5d5a916c10b958681f4c7d0f507e2df5e6a"
+ "size": 410,
+ "sha256": "26a25646883ece7dcb98fd77f6401cde20ad9f1680d6effc58108d3ca19c310d"
},
{
"path": "package/dist/views/tui/activity.d.ts.map",
- "size": 373,
- "sha256": "41dcd3fd8b67e9442825c47a0e9d7fca00ccd163ae557a15b9912a81885cbdf0"
+ "size": 426,
+ "sha256": "2584f292b1a84ea381d551e2ee6d5a047a345484db96aed2c2329c55319b659e"
},
{
"path": "package/dist/views/tui/activity.js",
- "size": 1815,
- "sha256": "def2e40d6c0bdfd2c51fb74039e9d351372b80072213f20daa956ca9ad13cac0"
+ "size": 1730,
+ "sha256": "02dde6bfe527673048c820ab91b9bf8261646b4c2ae3b7fd79bd545ae0dd366f"
},
{
"path": "package/dist/views/tui/activity.js.map",
- "size": 2174,
- "sha256": "3d738471d101855e6402e695b42d709d97108bb85b2746ace39556b2a4c93e80"
+ "size": 2045,
+ "sha256": "e427236d173415db90f50a940a2051bf52bdbe29bc5b44e8df4238500ad58da5"
},
{
"path": "package/dist/views/tui/analysis.d.ts",
@@ -8222,13 +8942,13 @@
},
{
"path": "package/dist/views/tui/automation-rule-panel.js",
- "size": 8222,
- "sha256": "55ae01ee0420788b9ea9ff81ef10c124290df8529933bb13f3bbc1dd85e12471"
+ "size": 8238,
+ "sha256": "2a14d544af4767298078c174fe1d920cd8524b6e1009b8cb5bb3a11f3ded819c"
},
{
"path": "package/dist/views/tui/automation-rule-panel.js.map",
"size": 7367,
- "sha256": "a692cd776f44a9b711dc59e289dee160d2440c4ac31cdea9bec4f0147d8e31e7"
+ "sha256": "233d33820cc7c3a683700605a8002ad4d7176b7cf478031a8cd59bc4bb868902"
},
{
"path": "package/dist/views/tui/automation-rule-presentation.d.ts",
@@ -8278,17 +8998,17 @@
{
"path": "package/dist/views/tui/command-palette.d.ts.map",
"size": 494,
- "sha256": "c73ecbdfede1ec266848c9795698c6c36f03394ccc3efb8c2beaec81a74093c8"
+ "sha256": "b4c0affd682d133397a08b68984ed06b612556e55f503022e05a398ae512f79f"
},
{
"path": "package/dist/views/tui/command-palette.js",
- "size": 562,
- "sha256": "e92e7b0870c01ebd9f9d9eae07e24911d315fba1b445773d7ad3bbf2b39cd612"
+ "size": 605,
+ "sha256": "6e28ee347abd830398bd0506190b30aaca75c43c710cc9cfd90f5b4606f15db4"
},
{
"path": "package/dist/views/tui/command-palette.js.map",
- "size": 604,
- "sha256": "d3c4d16049f1aabe29abaf8b56b0517ac2e68e8f8be14ce219a9c772cc7f1a56"
+ "size": 627,
+ "sha256": "25465d7cee902572804c303836e67a9863728ada75ed66a9772752b9cb74ef90"
},
{
"path": "package/dist/views/tui/comparison.d.ts",
@@ -8318,17 +9038,17 @@
{
"path": "package/dist/views/tui/composer-view.d.ts.map",
"size": 1273,
- "sha256": "44be45a1e247ba253a000fa35864099f2967886dc43a6e36f90b8aaac880c948"
+ "sha256": "fab3301df92b618982bac9a77600a0cfa437e76d718d926374a578260c99991f"
},
{
"path": "package/dist/views/tui/composer-view.js",
- "size": 6265,
- "sha256": "8a2fa6a4fc73841166f04623fb6d37222f718bbb57cdf94686336e0d651ee640"
+ "size": 6889,
+ "sha256": "2c7a487f639a16fba0190255f83846f542e1dbbafc4adb7404856f534d908166"
},
{
"path": "package/dist/views/tui/composer-view.js.map",
- "size": 7111,
- "sha256": "399b90b823a37679a28901efb3a6b9e69547b47cfb83416dd8185dbc119f03e6"
+ "size": 7653,
+ "sha256": "991801861dcde3b93a62487c391695a86c4705252c6cdc4bce21b6fe67da02f2"
},
{
"path": "package/dist/views/tui/configuration-credential.d.ts",
@@ -8338,7 +9058,7 @@
{
"path": "package/dist/views/tui/configuration-credential.d.ts.map",
"size": 1503,
- "sha256": "1ca2d868189bc88d4431ae31e02017b1ac3c6cbca75355b6540c37f97603c2a5"
+ "sha256": "90dc51a3d8d01d1f7733c95c7018e87a0ae139bd10f04fe10cfb524ae0baa623"
},
{
"path": "package/dist/views/tui/configuration-credential.js",
@@ -8348,7 +9068,7 @@
{
"path": "package/dist/views/tui/configuration-credential.js.map",
"size": 2589,
- "sha256": "f4b17c6e37c85ba94efc73ff6ef93b3fadd2a97038ff6df6622f20ea6d2fec0f"
+ "sha256": "a4d0a226d5f6ed817c00e18961da6a6946088281456f2427aba5aed0a4bfb63c"
},
{
"path": "package/dist/views/tui/configuration-presenters.d.ts",
@@ -8357,18 +9077,18 @@
},
{
"path": "package/dist/views/tui/configuration-presenters.d.ts.map",
- "size": 1759,
- "sha256": "3d564301c38088dbf128b8baee8a300fd2221033e05311e942e9aba14df1ddaf"
+ "size": 1758,
+ "sha256": "3e0b76d207db1cf465169a966b36b4d8c9328b66c989a43a5935608db4e21895"
},
{
"path": "package/dist/views/tui/configuration-presenters.js",
- "size": 9042,
- "sha256": "119365031e8ad750067d38f5030549d9ca2aa433b2f76dafcc04d2ea9fc7d89e"
+ "size": 9813,
+ "sha256": "4db25d23699972503c52ced8b793da60d980a757964d6628e10aa9117848074e"
},
{
"path": "package/dist/views/tui/configuration-presenters.js.map",
- "size": 9153,
- "sha256": "bf78a7af4bb4e7b2406848b486a2467f2f38817440b2db7117dfac9a268d00cb"
+ "size": 10003,
+ "sha256": "e8c98039126958db1a2becc48475371299a030cf880b4f1bc365aef653021c2a"
},
{
"path": "package/dist/views/tui/configuration-responsive-text.d.ts",
@@ -8398,17 +9118,17 @@
{
"path": "package/dist/views/tui/configuration-review.d.ts.map",
"size": 863,
- "sha256": "b986f43db47830694f2406d4cadbfea5903741ec05c787d6069c64752e8b0911"
+ "sha256": "0f7ee71e2fd5f1ece7fb5fdae7a4f42b35deda2b7efdfaeea9eeedb3c9cab326"
},
{
"path": "package/dist/views/tui/configuration-review.js",
- "size": 1924,
- "sha256": "a3b51ff7fb2be721d19197868feaa0380edf86cc589242f893a7f457b0a2e0f5"
+ "size": 2098,
+ "sha256": "a32d1c422694ac98b787ffc287c55308270e8893c064abdad017ac6c4d8d4d6b"
},
{
"path": "package/dist/views/tui/configuration-review.js.map",
- "size": 2204,
- "sha256": "5c8905769118addbeea3f9027ff6544189853440296fd9438119d3c127cc4d6c"
+ "size": 2378,
+ "sha256": "74faaec2c16a053240882f706664065e6fcd3ec483519755b6909bd97e30c6ee"
},
{
"path": "package/dist/views/tui/configuration-wizard-presentation.d.ts",
@@ -8418,17 +9138,17 @@
{
"path": "package/dist/views/tui/configuration-wizard-presentation.d.ts.map",
"size": 1429,
- "sha256": "0ab2114de47e46fa1ac9cfde615dd8bfd50d6017480713138059388c32858cdf"
+ "sha256": "4c15de82b84e721e7336dc87deecb5f5cc4abe5799a089399f102d5a6b15a02f"
},
{
"path": "package/dist/views/tui/configuration-wizard-presentation.js",
- "size": 8418,
- "sha256": "9e9d64886da8392357de572d5731f4ce2c57938d6592ea31be4bb64f1b79d597"
+ "size": 8515,
+ "sha256": "e6c7087e13dc185149911a32137516dabe3bb39b8b36d29a3e0ecbbcbe35d771"
},
{
"path": "package/dist/views/tui/configuration-wizard-presentation.js.map",
- "size": 7143,
- "sha256": "8a1bbb5d4d28d6012f8331d98813bc8820399403bce5fc56e17f7428211b3b38"
+ "size": 7149,
+ "sha256": "af545b4f18899e10f0a8d7b80e765271e8257cd3db1662f6f1f38138fedc5213"
},
{
"path": "package/dist/views/tui/configuration-wizard.d.ts",
@@ -8438,17 +9158,17 @@
{
"path": "package/dist/views/tui/configuration-wizard.d.ts.map",
"size": 1373,
- "sha256": "d2061c0f62b3c86d4c3c82c831ec9ecb49f36abf81e09f62fe997394ad14f2a7"
+ "sha256": "1b783d45f2b3ea412499fad4122b9cff67c658ac8d9835d2a1e764c269ce146f"
},
{
"path": "package/dist/views/tui/configuration-wizard.js",
- "size": 10052,
- "sha256": "84e2c551ce75bc2e4a863e0378b76af0d43ab5685a5300e42a69d3476c3154d9"
+ "size": 10064,
+ "sha256": "6fb3e9d36e8459be256c8ad40722c6f09a29a9afa060e36bdadec0feffb0358c"
},
{
"path": "package/dist/views/tui/configuration-wizard.js.map",
"size": 9556,
- "sha256": "4228fe6f32193305241c70214adb515fb4326135be5d845988dc6c1fd95c5527"
+ "sha256": "0e916d0974fc24f7a0011901f767818568afbdeec81b7d8a723f6323fde44797"
},
{
"path": "package/dist/views/tui/connection-metadata-editor-actions.d.ts",
@@ -8462,13 +9182,13 @@
},
{
"path": "package/dist/views/tui/connection-metadata-editor-actions.js",
- "size": 1446,
- "sha256": "991ab6d3370cb2fc5380c41ff38c1bdb490916af0210a48045c459f741299f8c"
+ "size": 1450,
+ "sha256": "4fe7b263fd6a75cf6c1cc6e825e881187dcfd0ee9d961d0e568307c43d8c9a60"
},
{
"path": "package/dist/views/tui/connection-metadata-editor-actions.js.map",
"size": 1552,
- "sha256": "5f924339c5a842c9d2ed5c5d6db7fd6f91b9a04d49309b591829a2e2a4ae6fe6"
+ "sha256": "e807f7a7cd00985b4eb63778485d0a6916f97f029ba413d49c470f5e96838e48"
},
{
"path": "package/dist/views/tui/connection-metadata-editor-inputs.d.ts",
@@ -8542,13 +9262,13 @@
},
{
"path": "package/dist/views/tui/connection-metadata-editor-rendering.js",
- "size": 3765,
- "sha256": "e682bd54bd4844961d2c040847e59893e942b55241acb0bfe920a42364475790"
+ "size": 3777,
+ "sha256": "ef55116e26ee21a64119ea5d8006961a34e0ef1410de19e3f2383d8bfc50e5b4"
},
{
"path": "package/dist/views/tui/connection-metadata-editor-rendering.js.map",
"size": 4223,
- "sha256": "f6bc628dfdecf6cdb7269fdb32b60ec718dd6c44c4b19e0297744ee355fd922a"
+ "sha256": "60dc51369bfa445388ca49c749c15bb8b1e47ddc5e99044e78819369dd02c002"
},
{
"path": "package/dist/views/tui/connection-metadata-editor.d.ts",
@@ -8558,17 +9278,17 @@
{
"path": "package/dist/views/tui/connection-metadata-editor.d.ts.map",
"size": 877,
- "sha256": "d145c38fc695a1397c1fad7c874b2b669d673fda142a33c6b7259062bca0cfd9"
+ "sha256": "98b72d064d1ade5174379ade7e7d7ee9a37733a1d290a6a6d260a7f0552908f8"
},
{
"path": "package/dist/views/tui/connection-metadata-editor.js",
- "size": 9316,
- "sha256": "d8fdad936df8cbacec745f2a06bec160d0807be20bce7bc2199c6e6723c7fa87"
+ "size": 9557,
+ "sha256": "e8695f6e67096412e01c8c70a33d0c4dad34cce72c5925de7d9f092ae53be9ff"
},
{
"path": "package/dist/views/tui/connection-metadata-editor.js.map",
- "size": 9055,
- "sha256": "7c18450b861b5c6e4d67751e98040dbb520827c6223b34a26d466b6b77ef4c19"
+ "size": 9270,
+ "sha256": "7aea9881360db2fc29805317dde90dce35ea5bce52c1186e4e9c7248a350022a"
},
{
"path": "package/dist/views/tui/connection-overlay-workflow.d.ts",
@@ -8578,17 +9298,17 @@
{
"path": "package/dist/views/tui/connection-overlay-workflow.d.ts.map",
"size": 971,
- "sha256": "06597d833d0aafe793bfa5ea69da099b8f5cd415a8dcebba7ed87fd07beb1980"
+ "sha256": "0c0a104279b8e68cb0040545ff6bbb3fb5f1e082f51471a0951e7ed6133a2c0d"
},
{
"path": "package/dist/views/tui/connection-overlay-workflow.js",
"size": 4852,
- "sha256": "33b6dd2b6307b3e5f2ed56845e798bf79596223c497cef24ba48abbabe4f5fd1"
+ "sha256": "0fd71b955bc9085e4196d5794fcfb6bf74a2b999965b1897ac80c7a7610e1f5a"
},
{
"path": "package/dist/views/tui/connection-overlay-workflow.js.map",
- "size": 4421,
- "sha256": "dd3710aff90e74518d871d7cf3584ac93608050a5799ee323c7b84acf33c7692"
+ "size": 4420,
+ "sha256": "77bbba6250509e966ab3b98c0d6a606030c24502d95dfb28caa587c02235362a"
},
{
"path": "package/dist/views/tui/connection-setup-actions.d.ts",
@@ -8642,13 +9362,13 @@
},
{
"path": "package/dist/views/tui/connection-setup.js",
- "size": 8738,
- "sha256": "2df3cfa43bfab744c9e5b79cebbe93de1da39f0136a7f7fe04b12336914c0774"
+ "size": 8746,
+ "sha256": "37b548cc33a5f8f634a41ab8f9f35d3d33418303fbe9c30e821b35301a5b661e"
},
{
"path": "package/dist/views/tui/connection-setup.js.map",
"size": 8183,
- "sha256": "4dac6cda9ab94bb30bbe277d5cf74484948f99087452e2de118e579bd68a09f1"
+ "sha256": "e037b7854b7bb5f7e14f17ea8b30568b37fe0748c47aed5876445f1d082e76f1"
},
{
"path": "package/dist/views/tui/conversation-dialogs.d.ts",
@@ -8657,18 +9377,18 @@
},
{
"path": "package/dist/views/tui/conversation-dialogs.d.ts.map",
- "size": 1236,
- "sha256": "35061e80bd9dd6ca259c998485c614f745c5a22525dfe9975be7143f3a396c5d"
+ "size": 1237,
+ "sha256": "b655708ce7f0eeec4ed0a2513bff58cbfdb0485d9e25c547e93c4a5ec962d649"
},
{
"path": "package/dist/views/tui/conversation-dialogs.js",
- "size": 3992,
- "sha256": "4d018f8eac10c9846dede0bdf5639521db3722a38595f8e8d49c2222575ba6ac"
+ "size": 4060,
+ "sha256": "4dc16c3198fbc86621d0872322eee974d8d80c3c5cdec2d42fe04e5add3d4083"
},
{
"path": "package/dist/views/tui/conversation-dialogs.js.map",
- "size": 4742,
- "sha256": "cf4d452c5e8b04e6bd9cb27797c75076741e1dbab2ace0aabc916a3c6a5d7473"
+ "size": 4780,
+ "sha256": "847a669c9725b945e547f6836ec81a76c19cab9e402e41bfb303a3a7471bcb5c"
},
{
"path": "package/dist/views/tui/conversation-overlay-actions.d.ts",
@@ -8678,37 +9398,37 @@
{
"path": "package/dist/views/tui/conversation-overlay-actions.d.ts.map",
"size": 1128,
- "sha256": "517d5c977799c41025e4eae3836ede23524a08634cc73bfc5ea7d123fdcf8721"
+ "sha256": "aada6bafd5b66028fd9f0881b03ff907845ecdfd3c215d0ed02bc8bc63809b1e"
},
{
"path": "package/dist/views/tui/conversation-overlay-actions.js",
- "size": 8820,
- "sha256": "79db619ad23ebc7b022abd40950cd70cb4a83fd73ed58a6a560b78b18d3e3663"
+ "size": 9242,
+ "sha256": "cd650e772f3b32b3dd530a046fb32fb0ba35764b6d752aeb425f5893ecf7a284"
},
{
"path": "package/dist/views/tui/conversation-overlay-actions.js.map",
- "size": 7951,
- "sha256": "14019fe30a21a90fb947a56da50ec5ac3d6501384b252fb47bcc48cb629bad78"
+ "size": 8340,
+ "sha256": "7d70b2d9c93eaf824ddaa0f888afc61e127b042c2bde866eae51a5b9aa874f8d"
},
{
"path": "package/dist/views/tui/conversation-overlay-helpers.d.ts",
- "size": 1175,
- "sha256": "6d00073bafd4f228ad5b4be8bbf5fb75c358530e9825b2ff261f16dd0ea0a082"
+ "size": 1064,
+ "sha256": "c31e99bf09d9c9d9c00ce5f4017a502210ae949cbd7f1acafb11a7ddc041b1de"
},
{
"path": "package/dist/views/tui/conversation-overlay-helpers.d.ts.map",
- "size": 1157,
- "sha256": "43b82d265db230672843f63e1546c976373472bf98f0cd595ab2cc66e4a883f0"
+ "size": 1057,
+ "sha256": "824f31ed3fbaa58b533276fcbcf3c839c3f34aeda9019c28dba9f97aee537c5f"
},
{
"path": "package/dist/views/tui/conversation-overlay-helpers.js",
- "size": 2830,
- "sha256": "29857daa00b5db5cc918f48a1d460529bbaa842443eab001c8c7712e1fd78576"
+ "size": 2698,
+ "sha256": "87fa1dbf56e17fe82174515179f4832de798024969e880f579c8ab86d7f8c696"
},
{
"path": "package/dist/views/tui/conversation-overlay-helpers.js.map",
- "size": 3295,
- "sha256": "fd1e8750845da3558e6d288fc5ce492d41f10a1282bd98704c26c290a9e7e8bc"
+ "size": 3121,
+ "sha256": "69dac1d34b01ede28450aed3b324460671e204dcbb32f042e6e0a88b682b30d0"
},
{
"path": "package/dist/views/tui/conversation-overlays.d.ts",
@@ -8717,18 +9437,18 @@
},
{
"path": "package/dist/views/tui/conversation-overlays.d.ts.map",
- "size": 739,
- "sha256": "eeee7beb224dcc6aba7d16c28668bc15a5cfc61b1d805dc51b644e2f5a19121b"
+ "size": 738,
+ "sha256": "da6dee6dcd14efab59ebd06a3b7cfaab45e7e852bf90c9107b4e384701c634ba"
},
{
"path": "package/dist/views/tui/conversation-overlays.js",
- "size": 2675,
- "sha256": "2478b07a25a2c979892361cdab1e9b1543ab618314f69bfd8726270f5a7ce78b"
+ "size": 2680,
+ "sha256": "686598944d9c356ab84be470f1b7c2098fc20bac337d746fdc227b73f362ade5"
},
{
"path": "package/dist/views/tui/conversation-overlays.js.map",
"size": 2664,
- "sha256": "27807ed14f67618498ad2f277bd9795ff8848f32aceb28eb5f9b6c36df83b5a1"
+ "sha256": "b61e636384449dd088dfea11a5f9fa5f41cf849330c6797026a69e24dc424e52"
},
{
"path": "package/dist/views/tui/details.d.ts",
@@ -8770,45 +9490,65 @@
"size": 1318,
"sha256": "278545c5af568d6445e40f0e0f0ff1917c7996572aa36ffbe391f283a92b27ea"
},
+ {
+ "path": "package/dist/views/tui/entity-browser-layout.d.ts",
+ "size": 451,
+ "sha256": "abf84188010c23f9d63fb3f89f9f3887e9195d06b6b5cf2e7865021bfac6cae3"
+ },
+ {
+ "path": "package/dist/views/tui/entity-browser-layout.d.ts.map",
+ "size": 550,
+ "sha256": "207d64029b01f75accd8edf08be608de7501e52a771aee82c59551aae11a69d4"
+ },
+ {
+ "path": "package/dist/views/tui/entity-browser-layout.js",
+ "size": 3499,
+ "sha256": "5337aa3c0adc64ae972c4ba6985e79400c16e38fc712faa6f1b14f409330b5aa"
+ },
+ {
+ "path": "package/dist/views/tui/entity-browser-layout.js.map",
+ "size": 3468,
+ "sha256": "2361a6a7203b6c709e192d3cdf56f014333b8185ea595f6609ca980bb2807a3a"
+ },
{
"path": "package/dist/views/tui/entity-browser.d.ts",
- "size": 1594,
- "sha256": "0de22cd20ef5cff75bdb3f8aea35f6b67f3e52bcd094455be815ae990949bd75"
+ "size": 1705,
+ "sha256": "cd6d1a02d96bf34898316ab42e2a29f58b83ad2f14a118ff91e08f8cf1d779b6"
},
{
"path": "package/dist/views/tui/entity-browser.d.ts.map",
- "size": 1668,
- "sha256": "080e2836a79c908858a375ff710868dd2956113a032d1ac9108b8bdff3393e5d"
+ "size": 1802,
+ "sha256": "c0a056c1e868fdd8aafd509e91182f6da816ea425135b790ace6e61f6066bfcf"
},
{
"path": "package/dist/views/tui/entity-browser.js",
- "size": 15873,
- "sha256": "92e1d49f9e07dcda1dba3745a68f0407487f3dd5afbcd615b6c45a863b66fc9f"
+ "size": 15474,
+ "sha256": "b552180419eb484de16b18a67bedf227df7a2a22c2f8ddb7aafd295148d5f5de"
},
{
"path": "package/dist/views/tui/entity-browser.js.map",
- "size": 17577,
- "sha256": "d2b75730b1f54509071b3d6d3fc3ab159919dffc7628296b9405906d6858856e"
+ "size": 17172,
+ "sha256": "96ce4bc0e53ab8921c8b2727dd84fe48ecf7fcbc4c3c7d99e84f55eb9186e23b"
},
{
"path": "package/dist/views/tui/execution-target.d.ts",
- "size": 745,
- "sha256": "df1c1619be3e076857e34c47bd90115cf62b7a1e1e687ebafe8b7c9b8aca0dd1"
+ "size": 1080,
+ "sha256": "cd7c67c77cbb7e5cbf918f1df449e8d9d0bc79a5d31efa08b62fc5f593b366a9"
},
{
"path": "package/dist/views/tui/execution-target.d.ts.map",
- "size": 767,
- "sha256": "1f5d5a120f860be2dd459fb93fadf55f59acb4813784565764520c278207d1ba"
+ "size": 1020,
+ "sha256": "f432796e5c54c57f945dbc2c774bee4a0ba942436e971ebbdcbe36f5309f71a1"
},
{
"path": "package/dist/views/tui/execution-target.js",
- "size": 1788,
- "sha256": "f5fbc3485ada80e0098e091dd3e814e33dd2b4cab14cceeea6740d17c7c876d4"
+ "size": 4851,
+ "sha256": "d43474953cb7233eb1613587661ece64d60c2a9cf15d50a873260d029ccce883"
},
{
"path": "package/dist/views/tui/execution-target.js.map",
- "size": 2197,
- "sha256": "129aa40e3f5f173647f58e0852d59d88737464ebde52b4025d4af380d0e901b4"
+ "size": 5505,
+ "sha256": "93d576875e3574bf3ccaeb0c65e0573b6be06dda1c83088d0d2ad681341b4696"
},
{
"path": "package/dist/views/tui/focused-surface.d.ts",
@@ -8852,23 +9592,23 @@
},
{
"path": "package/dist/views/tui/graph.d.ts",
- "size": 729,
- "sha256": "c0df83e4a4e5206bed8c38d47b1e0e4c88174e01de0b5256bb5487abb66ca5ee"
+ "size": 969,
+ "sha256": "481ed1c008f533a6075953076cc902592b6df2c4ef60abc4cadb20352f47afe9"
},
{
"path": "package/dist/views/tui/graph.d.ts.map",
- "size": 751,
- "sha256": "b2b61a896af5456bfeb16fe904f8446665953b7bf182156182e665550a1b5138"
+ "size": 987,
+ "sha256": "612a0e220c55dde01dc424665a6262b097b1b4abbb051559ebecf4f68aa3f66a"
},
{
"path": "package/dist/views/tui/graph.js",
- "size": 3968,
- "sha256": "ad252d58f4d1ed9429b090ebf96f401a8537e4e2fa766904f5fd077f1aa69d1d"
+ "size": 8720,
+ "sha256": "c8d20cff89ed4a9e738b677b83df3b8038f04ef8700ccad70dab851f69a0293e"
},
{
"path": "package/dist/views/tui/graph.js.map",
- "size": 4426,
- "sha256": "f949fb77669edab4ee2a66e24f09e888319292184b92087988d83f28935765e1"
+ "size": 9550,
+ "sha256": "f73f2bf43fbad4d6e7a59fc42be7b4010c3858307d1358ea2799c20ab510ee16"
},
{
"path": "package/dist/views/tui/help.d.ts",
@@ -8882,13 +9622,13 @@
},
{
"path": "package/dist/views/tui/help.js",
- "size": 2078,
- "sha256": "f96ad89a57a33a5d751a0a8b07d891382afa9d39b783ffe07e76876cc060108e"
+ "size": 2079,
+ "sha256": "247c3e5498d672d7472c8206ca965fc44c7098b560b0a1afc14bd859655bda32"
},
{
"path": "package/dist/views/tui/help.js.map",
"size": 2355,
- "sha256": "2c87e8d7e35150993cf1d2c6a3dbdd9d1e35fcac329e9c11ea1ab59332aed6d7"
+ "sha256": "e69f96e0266306065800a0ab532c3201cbbb00ff2fbf1d720f24984916be00cf"
},
{
"path": "package/dist/views/tui/interaction-automation-response.d.ts",
@@ -8952,43 +9692,43 @@
},
{
"path": "package/dist/views/tui/interaction-presentation.d.ts",
- "size": 1670,
- "sha256": "32cc62b97836f7f94de8f5481e2b9597d1dec81ab28ab8aa90ed580e7e34671c"
+ "size": 1773,
+ "sha256": "3336a5a3de274a60a4d13007781ebf8c0a14f8f2248ccbd2b3fe116fdab9513b"
},
{
"path": "package/dist/views/tui/interaction-presentation.d.ts.map",
- "size": 1379,
- "sha256": "e762fe68783020751784c859265dd3cbca533d9555cc46995bcbea07ead65172"
+ "size": 1444,
+ "sha256": "7683989739668c9f461e26af948e6a2024a07334822b5d061efede78eab491ae"
},
{
"path": "package/dist/views/tui/interaction-presentation.js",
- "size": 7074,
- "sha256": "3ed65c58c1712101054781d0d121127828ceca8d9c36b7d9cb42a525e7f9846f"
+ "size": 7009,
+ "sha256": "64f150a5d37d46e2bd3f69a2ede7af7be3c9e18d60131a40c496784bb47c3507"
},
{
"path": "package/dist/views/tui/interaction-presentation.js.map",
- "size": 7634,
- "sha256": "3b60b31b49e17d7ddf4fa69d2500bf5986167f3637e784636b4b9c988be7d6bf"
+ "size": 7439,
+ "sha256": "996fa53f1f6c4ec7c91175d46b7fe39cbebce9de4a6e29ff02d28244bfe2b1b9"
},
{
"path": "package/dist/views/tui/interaction.d.ts",
- "size": 718,
- "sha256": "e69e77845e96ce0f6383e898b272e626a83e899413f24bd307266484b2956d88"
+ "size": 774,
+ "sha256": "ed094a65ca2b2185447efb4adf6cde4c739a7e885fb6488bcf77beecf5273255"
},
{
"path": "package/dist/views/tui/interaction.d.ts.map",
- "size": 732,
- "sha256": "72d6b9df3b492dd80cee8a7027c015d3bf391f9c0b3976d74d2cc62ab207542f"
+ "size": 778,
+ "sha256": "01c5a2348389a1d22a4f0cb82290c0d81873a9e27ad48071be041394273cfea3"
},
{
"path": "package/dist/views/tui/interaction.js",
- "size": 8608,
- "sha256": "ba7a382f305c35aec066058694a330ab5980812aa88ef7500f03528c05746b3a"
+ "size": 8510,
+ "sha256": "2ebe3ead7073252c8c339d391e04b65dafe1ba3315449650a35ac75582b175f8"
},
{
"path": "package/dist/views/tui/interaction.js.map",
- "size": 8150,
- "sha256": "5e68d1dc106b0b64ba3c56aca1b43a019b2f0d63d12cfdbd41f6fd4e56310a23"
+ "size": 8079,
+ "sha256": "120452fc914ab997e4f6f5734e88f4a203fff204dbfdb2c5250221f8a5fa5179"
},
{
"path": "package/dist/views/tui/keyboard.d.ts",
@@ -9002,13 +9742,13 @@
},
{
"path": "package/dist/views/tui/keyboard.js",
- "size": 7341,
- "sha256": "ce63745e2eb0560d893d835c55f6cd3944345e0d2882088b787b42efbb4fc6d3"
+ "size": 7349,
+ "sha256": "e7dd253c52d275849d9a12c99756c078f3cfe1132be06d1c4bb03768f12efee9"
},
{
"path": "package/dist/views/tui/keyboard.js.map",
- "size": 7896,
- "sha256": "8ef94a69feb8e4c2e49e88556b6e40e86fd3ff309eb1c2ca83cba834b8338055"
+ "size": 7906,
+ "sha256": "24400ba8b38cd6f27275302d7b2dc6bc2c956316d8d6f56574a7103c094a3f40"
},
{
"path": "package/dist/views/tui/layout.d.ts",
@@ -9030,25 +9770,45 @@
"size": 1637,
"sha256": "94d5f44f8d7b1da3b909cf49fd1d06c73cdffb805061dd8af195757ddf109b66"
},
+ {
+ "path": "package/dist/views/tui/measurement-display.d.ts",
+ "size": 241,
+ "sha256": "65683bfd4ced9d983cd77b4585be4d8ca05ebbdbe53e83b41a4dd07089379384"
+ },
+ {
+ "path": "package/dist/views/tui/measurement-display.d.ts.map",
+ "size": 235,
+ "sha256": "8a6f06f6841c4f627be28210f12992b9678b06c0f08d3250112b4b95966cc16b"
+ },
+ {
+ "path": "package/dist/views/tui/measurement-display.js",
+ "size": 546,
+ "sha256": "264d7ea9b173062a928da764e8f4abddef966298452e24b532c495b7668bdfd8"
+ },
+ {
+ "path": "package/dist/views/tui/measurement-display.js.map",
+ "size": 578,
+ "sha256": "8bb6871e8c8e3ba1a4b41484839250ef3b351331a02214c12944c54b558482a6"
+ },
{
"path": "package/dist/views/tui/modal-coordinator.d.ts",
- "size": 777,
- "sha256": "0f0b40e62ab977b73ead88a8966cc8b5f37f61777cb3cd4412070f1c3b466e58"
+ "size": 854,
+ "sha256": "757513d788dde8ba5a424bcbbeae59fb6dcd4a456ddd62c584a0bf6c01fae247"
},
{
"path": "package/dist/views/tui/modal-coordinator.d.ts.map",
- "size": 773,
- "sha256": "8937ed152e266dc83bf86ab1dbd6dff3ef8f9c912c1d46e3a6eb7e956b82b6c2"
+ "size": 830,
+ "sha256": "76d8a125b9eaf3959fa7d8f307160efd111928b904c095c7cbc6940941a02a25"
},
{
"path": "package/dist/views/tui/modal-coordinator.js",
- "size": 2474,
- "sha256": "62b3e915192cc08b93c073a4866c39bbc83f5a85551e0245cc0fd02df1338f69"
+ "size": 3035,
+ "sha256": "764535594b7ecd358ace173b342503552963265a877bc8a2a13e98ebf4332af2"
},
{
"path": "package/dist/views/tui/modal-coordinator.js.map",
- "size": 2761,
- "sha256": "d54773d1676a7dae0d3c453bc33d3fea94ed9f4708cedb758a3d5dd7f2cd4583"
+ "size": 3221,
+ "sha256": "0b494bd095e152021173c0658584f1e50a6bd5049c60a30ca65c7593a838be74"
},
{
"path": "package/dist/views/tui/profile-compatibility.d.ts",
@@ -9062,13 +9822,13 @@
},
{
"path": "package/dist/views/tui/profile-compatibility.js",
- "size": 3747,
- "sha256": "72b84787f400c90a1e71b9fbc1ee2e49b69d2b59b2b27fe77a41bcf7fc833f71"
+ "size": 3745,
+ "sha256": "a68eeacd2a5aa0c812701813ad28775742a21cef534cb22eb3737453a9a59327"
},
{
"path": "package/dist/views/tui/profile-compatibility.js.map",
"size": 3225,
- "sha256": "2075094ae98e2d8c3321265c986f60a08b2ea7f813d99b5368b7291961eb5647"
+ "sha256": "1f583f2af60a5e001c5d8c38a0bf4001272f4aea050d1fb15d3193246bab0e54"
},
{
"path": "package/dist/views/tui/profile-editor-actions.d.ts",
@@ -9097,38 +9857,38 @@
},
{
"path": "package/dist/views/tui/profile-editor-rendering.d.ts.map",
- "size": 389,
- "sha256": "8fb85d9c909010158bdbec15e84d950389e7a5cf67562d558cf7d5494f6e1854"
+ "size": 388,
+ "sha256": "ec4b5e5288bbf0adee63baee8fb02a7e94bdc3773d1f35111e430c52868bc55d"
},
{
"path": "package/dist/views/tui/profile-editor-rendering.js",
- "size": 1341,
- "sha256": "a40cbb7f97439698e323a79bca4a54e6b41153b5637764060ad81158754332c0"
+ "size": 1280,
+ "sha256": "3872a4f71b471dab157df6b1f98353316fe9652900786b7b340c470be8edf1d9"
},
{
"path": "package/dist/views/tui/profile-editor-rendering.js.map",
- "size": 1739,
- "sha256": "db0a0f98c7fc2f65764ed19ef7962fbf295cf5b6c660318a5c33f08b17cba2e7"
+ "size": 1624,
+ "sha256": "5000736ff16fd206ec224a7d942eb8bc8f1a87d31e7be5405a811986a2732ed8"
},
{
"path": "package/dist/views/tui/profile-editor.d.ts",
- "size": 789,
- "sha256": "650deb8bf9f5924f119d6c57677bd61674c6803cf793e1c8d4bd777a7542c672"
+ "size": 860,
+ "sha256": "0d2fdba7aa3b0d5c1669e3be9aaba44657790f1a86fbc03efd593305a820d993"
},
{
"path": "package/dist/views/tui/profile-editor.d.ts.map",
- "size": 805,
- "sha256": "a2041acc65f1679f46d59311ab1f00eec8b9d8175d03e72d7ee3efeb9fd15c2a"
+ "size": 902,
+ "sha256": "26b6fa78f8a88cbf036642c28b27f51b8614e5822dd4b639c1d77b0daa50c039"
},
{
"path": "package/dist/views/tui/profile-editor.js",
- "size": 10225,
- "sha256": "17569e4184f7da87722b2b15111bde9151a05069d17dc84ef80397b096381d26"
+ "size": 10025,
+ "sha256": "9fe1d3ee2705345f9cef57c82620bd492a08dfdd311447f61c0431db90386c28"
},
{
"path": "package/dist/views/tui/profile-editor.js.map",
- "size": 9379,
- "sha256": "d3933d251e869f790ee5a62d44043e731a9b8255ad43a9dc39858a2ba045da6a"
+ "size": 9157,
+ "sha256": "e027e5b2097d89f2077a60eedab135127b642435b26f198c80ae718d26dbe95f"
},
{
"path": "package/dist/views/tui/safe-markdown.d.ts",
@@ -9158,7 +9918,7 @@
{
"path": "package/dist/views/tui/secret-input.d.ts.map",
"size": 964,
- "sha256": "2f5a4792ad284dbeb418c3e37dbef12abd5fb417763e8a8ddb7984871a66deb3"
+ "sha256": "47938b48c526301a44990a90717c0e3fde459c2d692b119254ec29de8affd849"
},
{
"path": "package/dist/views/tui/secret-input.js",
@@ -9168,87 +9928,107 @@
{
"path": "package/dist/views/tui/secret-input.js.map",
"size": 14407,
- "sha256": "5bc9530d2d46b2a8708c07c24f2175cbc6eac9048becfd9bec967d8e8d1f72f1"
+ "sha256": "084640daa6095346025f900d82b7fe4e340c3debeef83622fd812afd87186a63"
},
{
"path": "package/dist/views/tui/selector.d.ts",
- "size": 1295,
- "sha256": "eeb9103e600333c95488f0ded66c6e1d70bc97ec1332d9580adff8125ada7067"
+ "size": 1696,
+ "sha256": "ac379badf4df58bc0d26214af01302f29e30185f725a13b634c20e4d8f34194b"
},
{
"path": "package/dist/views/tui/selector.d.ts.map",
- "size": 1410,
- "sha256": "6ea1fcccd25f116cf763b9255ba5d2520cc0a1d4e3133c0373e9d873208ce8ba"
+ "size": 1470,
+ "sha256": "13b2c6d59ae143b6ff22b3b8762280a81f2555203590d395f74f6452b3d28788"
},
{
"path": "package/dist/views/tui/selector.js",
- "size": 6727,
- "sha256": "1be97125de7a586c7f18d7e57ffddf15ef27a8066314bf89810c6acf449b967c"
+ "size": 9413,
+ "sha256": "6d27fc5f3698f30285fc8fa4a1f8576768d691dc4924c22b382677abbfae5cd1"
},
{
"path": "package/dist/views/tui/selector.js.map",
- "size": 7704,
- "sha256": "85e8f52cda69c3fec75ee5cb456bc656d7ef91527fa9ff77b5012ab174a4de70"
+ "size": 9734,
+ "sha256": "a1ebd19196b6b7d0c50e9145a006802e58ade17fa89883cfad11baaa4ccbcca2"
+ },
+ {
+ "path": "package/dist/views/tui/supervisor-actions.d.ts",
+ "size": 744,
+ "sha256": "1465409d81e1942691df095b370b5a1aefdd5bc0902003b9a060310e9cc57d13"
+ },
+ {
+ "path": "package/dist/views/tui/supervisor-actions.d.ts.map",
+ "size": 752,
+ "sha256": "722915858d86c3a32f514fb11e9314a269a8d8f8713e77afdd09e33f4f67ae69"
+ },
+ {
+ "path": "package/dist/views/tui/supervisor-actions.js",
+ "size": 2032,
+ "sha256": "93deb2941b549924fccb3eef4fdd4a6e11bfa7520623d68e83259c91711193cd"
+ },
+ {
+ "path": "package/dist/views/tui/supervisor-actions.js.map",
+ "size": 2354,
+ "sha256": "737a2ac5ca35aed9b4305caaf6c9afd046ba90ed61ed4e3e703a311bc704d08c"
},
{
"path": "package/dist/views/tui/terminal-app.d.ts",
- "size": 1283,
- "sha256": "646eb476ad7b597ca3289350f17bd033124b39a8c14018021ac96d569898d8d8"
+ "size": 1654,
+ "sha256": "2c232d9f895a39dc12f73b3ce984f49cf6784badc92994ad17f713f1d10eafb3"
},
{
"path": "package/dist/views/tui/terminal-app.d.ts.map",
- "size": 1253,
- "sha256": "93f8a7b562e6b7cf66baecb241d9ed51ae6055125a48f63398d8f1fddb044c57"
+ "size": 1424,
+ "sha256": "ec1feb4ad66974431747944711b57b9fb9df104728203b4eaf416ce3d17fe06e"
},
{
"path": "package/dist/views/tui/terminal-app.js",
- "size": 9382,
- "sha256": "2f2948e7c35e1574c09fd8d36be3c3469ac03d73d2442f1ad5a93d5b6327f107"
+ "size": 11320,
+ "sha256": "bfe4b1cb58e57043c1925933e0146e236ebf4bd495de8bc69558959d561be175"
},
{
"path": "package/dist/views/tui/terminal-app.js.map",
- "size": 9226,
- "sha256": "65e356ba75a123467aa9384e70382e694bc337e611bec2f70735c296ba26f334"
+ "size": 10841,
+ "sha256": "1fb0602d7dc6746beafd40e9e0c511ee8e62b0f7722d1394deff23b5757f3b17"
},
{
"path": "package/dist/views/tui/terminal-chrome.d.ts",
"size": 869,
- "sha256": "28449a80a9326a85678b24a6d0f80d159b40d85a99bbf4a03ed79e3c587744da"
+ "sha256": "3d11851e2c65c1e854cca5b8a758bf7e92b7b2d05c69dc0de94a3b2dd6212219"
},
{
"path": "package/dist/views/tui/terminal-chrome.d.ts.map",
- "size": 842,
- "sha256": "8a9bce7e603dfc8f868738ed9420b01c972b05684a889f9366416313dc28c09e"
+ "size": 844,
+ "sha256": "25771fb8a197a97087bb376895854d49a0d33fa6e6fef20c93a69606e4183592"
},
{
"path": "package/dist/views/tui/terminal-chrome.js",
- "size": 6757,
- "sha256": "b09523bc0681c1500757728f449631d85bb08bf03814a8084da62f582243e2c6"
+ "size": 13374,
+ "sha256": "cc4f38cd201872db0e3c99973f6c966e2d62a9f290b6378c6c785c6b68b84094"
},
{
"path": "package/dist/views/tui/terminal-chrome.js.map",
- "size": 6514,
- "sha256": "5484f11fb007f2e0399e5c257558c45f5e256d886e3f4573137d03db89edf9d9"
+ "size": 14140,
+ "sha256": "19eb8fabbf10527bdee95b39e5d1995b0762c159b996ad150109fae778c9d78c"
},
{
"path": "package/dist/views/tui/terminal-command-controller.d.ts",
- "size": 1263,
- "sha256": "d75dd7e91d9ef95348c055a8dc39f5d2b03d422175ba03fedb222d137a25cacf"
+ "size": 1415,
+ "sha256": "d3c5f436eb2147e79c0811d7632387711a0e7a88ec3e8b97baf0374adc1e238f"
},
{
"path": "package/dist/views/tui/terminal-command-controller.d.ts.map",
- "size": 1119,
- "sha256": "8e5a644592e1d3c20e6c1eb33875fcead161a5108bcf061519b8cdaa4376c3ac"
+ "size": 1214,
+ "sha256": "3bb714441ad0a7d42f6bfaf44cf36f3886277043c48bb9d5d11b43e946f8301a"
},
{
"path": "package/dist/views/tui/terminal-command-controller.js",
- "size": 8982,
- "sha256": "0e4133269e59b912e299687b292a79bacb3244029d81ac73ef8ca69f001fc899"
+ "size": 11126,
+ "sha256": "9a0d4ec91ba6950641d40dd2c176b445acb9b48c710075190ab90423647fcd33"
},
{
"path": "package/dist/views/tui/terminal-command-controller.js.map",
- "size": 9028,
- "sha256": "b6c788d576dccd76afe1a8f614a7480b0d00820484b992ab77348826678be99f"
+ "size": 11178,
+ "sha256": "bb345701f1a5d6f84263f9a53f7f2b6b27458be2750101ff5e5fab7a5cfff7a3"
},
{
"path": "package/dist/views/tui/terminal-compatibility.d.ts",
@@ -9292,143 +10072,143 @@
},
{
"path": "package/dist/views/tui/terminal-identity.d.ts",
- "size": 1337,
- "sha256": "22ced0c49b5656bfeddaafc099df67520375998fd243871d33929a3852a00b52"
+ "size": 1701,
+ "sha256": "bea0255a7c62898ed3ec8f44fd4552753d2b9005700a38c68517d6bdff0f0e5b"
},
{
"path": "package/dist/views/tui/terminal-identity.d.ts.map",
- "size": 1349,
- "sha256": "f4d6016a1319c1eca4449cc91251d47ca6fcbe25a2fef3c47679a48b4b5ff0ad"
+ "size": 1680,
+ "sha256": "e6f7dd720428e03885ca86970e6c5b8b040e66690063ef411f31ed52f125838c"
},
{
"path": "package/dist/views/tui/terminal-identity.js",
- "size": 4507,
- "sha256": "c87fa96acc5f9d5c77ae209ab87fbccfd29918449fda84166a72222a0d273454"
+ "size": 7988,
+ "sha256": "e8ceee67e0c7dc36c1c70a6846c33e6b8b257ad39dcbf49b168cb80b72ac4a45"
},
{
"path": "package/dist/views/tui/terminal-identity.js.map",
- "size": 5016,
- "sha256": "2c37382ea0953d317f84ab84397dd903092db3e29a5df291aa35e2f87175d77b"
+ "size": 8057,
+ "sha256": "6aab0aa6c34a27c6d217eca67ef231eccc940570cb86d696f59603e146799aed"
},
{
"path": "package/dist/views/tui/terminal-input-controller.d.ts",
- "size": 1774,
- "sha256": "eba017acbd5844fe8e711ed074a9deb857445c371f65d6dc356ecac983db62d2"
+ "size": 1486,
+ "sha256": "661229b8d934f06f344ddd8a6f5837a3996fbd9ba74e3f5d750918da52b461b6"
},
{
"path": "package/dist/views/tui/terminal-input-controller.d.ts.map",
- "size": 1590,
- "sha256": "15333bb9fae8b5ac56a5e476145a6ea6edf90d8c6d72ee94f6a7196c1de64b4d"
+ "size": 1349,
+ "sha256": "f35a5989ec3d46fa712c319856ffa9278e7b197597954c736d052b41f11702c7"
},
{
"path": "package/dist/views/tui/terminal-input-controller.js",
- "size": 7149,
- "sha256": "a75a730f3e1b973f610b9378134461eec11914c8b7e92eb1e1f2ae3330497ace"
+ "size": 8030,
+ "sha256": "22fbaf9f2bcd85e3a13aed53e85438963962027e58de7fa5ba1c366e8f7b3406"
},
{
"path": "package/dist/views/tui/terminal-input-controller.js.map",
- "size": 7312,
- "sha256": "48abefa24d94ffb8e33fd158485ca0c7d9dfb896a89b42af1251189e056cfbba"
+ "size": 8137,
+ "sha256": "43c8b0a63abe6667e90fba126ad54db2d8311632957591192bef5dd81b97fec0"
},
{
"path": "package/dist/views/tui/terminal-interaction-controller.d.ts",
- "size": 1196,
- "sha256": "05bfab1a4317f4e4d57b11977a1b7e8cc858ba57bd4e3099217cc6d67444696c"
+ "size": 1257,
+ "sha256": "d00709fbfe4508a7e57df7424e053333ef8f8d11208e930493aedf84303e8f25"
},
{
"path": "package/dist/views/tui/terminal-interaction-controller.d.ts.map",
- "size": 1069,
- "sha256": "042135baffde487393ad61c640403264a8fc73bc590d2a10347c719df4d6bf55"
+ "size": 1137,
+ "sha256": "9fa5b7e33dd453aa21954a1d8029bc1a0e128fc6dbffad22c4b17a5a21d54d7b"
},
{
"path": "package/dist/views/tui/terminal-interaction-controller.js",
- "size": 3471,
- "sha256": "89e75c04d26644a5d776dde73ffe736998e4d0a59ff24d5c1ba9b0cd74343058"
+ "size": 4857,
+ "sha256": "0b2346721ac778aaf112a808539002463907ec0b0659dbefbcfd027d1d5e31b2"
},
{
"path": "package/dist/views/tui/terminal-interaction-controller.js.map",
- "size": 3250,
- "sha256": "e9f7f5d568d6b9c0502bc9ef47467e8a277c2f870e63a52b0a006c5b9e79d0d9"
+ "size": 4563,
+ "sha256": "2b6ca23f3a63af09b650c930dac7657e88c1c2e769925ca2f2ca3b79e545bbc6"
},
{
"path": "package/dist/views/tui/terminal-overlays.d.ts",
- "size": 2567,
- "sha256": "0b9053065642f773b34c3d0d244206c3854b6c75dd6e3b54ab596144b3a720f8"
+ "size": 2781,
+ "sha256": "6be4ec66507d04721391add4ffdc8771667f597349b548bfd0b895d7ee46a0c7"
},
{
"path": "package/dist/views/tui/terminal-overlays.d.ts.map",
- "size": 2343,
- "sha256": "a23e750c0049b2229ee6552902f70b198800011cae4e498a3aca1208ffbe56ee"
+ "size": 2508,
+ "sha256": "041e3a6e548d233c053760ad9088c97996c90946f44cafbc4929737d3469836e"
},
{
"path": "package/dist/views/tui/terminal-overlays.js",
- "size": 11599,
- "sha256": "c0ebb81d2aa5c96dfa258cc47e53b32950e2a06922a1de90fff885bb061d46b0"
+ "size": 14203,
+ "sha256": "8f6ffc2f3d76e87eb7883afca653999997c46486624a922bec802cd104dba0d1"
},
{
"path": "package/dist/views/tui/terminal-overlays.js.map",
- "size": 10446,
- "sha256": "240688d7afaa39fbb565068c981d4a8e0743520b1657b12018daeb47e0b05916"
+ "size": 12512,
+ "sha256": "141f6395a438b8bf44db06d3f6ffb7211daac4713896a1c71a5cd83e28a63377"
},
{
"path": "package/dist/views/tui/terminal-shell.d.ts",
- "size": 1016,
- "sha256": "f448e99165410b8f5ccd28fc0ee2368e4b0900c9e9aec69ffab0b96506ee635e"
+ "size": 968,
+ "sha256": "559abb3f9eaef79bcd4129118aa66457a08f4df604a812989dc5a8a1db45b8cd"
},
{
"path": "package/dist/views/tui/terminal-shell.d.ts.map",
- "size": 1073,
- "sha256": "01c8c49f7b913206a0404773b3a7768f7e10ff0e370411ba8f3c1881e272b0a0"
+ "size": 1025,
+ "sha256": "10d3875b9c83d9b05ffd23e2a6010ab7e4f69ef2be140771672ec073629a72cc"
},
{
"path": "package/dist/views/tui/terminal-shell.js",
- "size": 6043,
- "sha256": "07e887228026b9af3ff1d17fa3e9df22b0e0f30b59178e79579fa3d67e367996"
+ "size": 4900,
+ "sha256": "97f87c84cad711f7c4b7f04e81fc50cc8ab1bac6c32ffa4a0e3bd3e3febaf66c"
},
{
"path": "package/dist/views/tui/terminal-shell.js.map",
- "size": 6444,
- "sha256": "0dbc6de43a96699935957f9a6504d83763b433b07ebf493cf9304705ae8b5d11"
+ "size": 5210,
+ "sha256": "4cb41f2216817c743fac429efc10f43b5c9cf91fddbde72cc40453ddaaeeb1e7"
},
{
"path": "package/dist/views/tui/terminal-surface-overlays.d.ts",
- "size": 1301,
- "sha256": "2bf27877e14fe9e690d2a16c59ae7ffab5905f3144a5ae6c22dd41773261eec2"
+ "size": 1546,
+ "sha256": "11e21238ceb310909229cce0d021b75a72b4abada528eaf740251dc3bc12ea2b"
},
{
"path": "package/dist/views/tui/terminal-surface-overlays.d.ts.map",
- "size": 1298,
- "sha256": "c69f98bd473b3bb0aa2c3c928713419891e90416ffc2e3d13a2c8a36a52123f3"
+ "size": 1500,
+ "sha256": "d9f77b9711e0001cf4af0c4d27c6c2b8b2e72b0ca0dfd6d8a75524dedc04d039"
},
{
"path": "package/dist/views/tui/terminal-surface-overlays.js",
- "size": 11421,
- "sha256": "84d089d0e870cdfaf39a3810acedaa9cd519540fff1733fd7069aea92ee6f168"
+ "size": 22098,
+ "sha256": "a86afa61e44c0b2640380b522661fdd3becd99c49df2ff8116292bc54e2828e7"
},
{
"path": "package/dist/views/tui/terminal-surface-overlays.js.map",
- "size": 10149,
- "sha256": "f48421cd2f82294c98214fad2fe1aa35ea15a4f5dd126c6c06457124ca10d0ad"
+ "size": 19205,
+ "sha256": "01d59c8b209afb4957ba30face52ff786ea9d4027aef13c4b1b620f89539cda8"
},
{
"path": "package/dist/views/tui/terminal-usage.d.ts",
- "size": 239,
- "sha256": "4748d7b0c205ab7c17197b96b1fb430a1518c8876552967af80dcc2f06cdeb5e"
+ "size": 401,
+ "sha256": "7dc31e593ed1964a66c445de8d7744b5a8145c65db555e66e1e86d48acfce7f3"
},
{
"path": "package/dist/views/tui/terminal-usage.d.ts.map",
- "size": 257,
- "sha256": "53815711294ef5083bfcae05656ad6d7eac681795e25d4b796b0d455e25ce6d2"
+ "size": 330,
+ "sha256": "3c05658a451d24a4da1de163256595f321ea9bafa1048bf92102b79f555a7209"
},
{
"path": "package/dist/views/tui/terminal-usage.js",
- "size": 2640,
- "sha256": "21ad03a1f3168fe482a932aaf94b24735c6716520ce2a5491a0988f2894e0f5b"
+ "size": 3433,
+ "sha256": "d75277203238c6564772c81a6d1374655aa5865739ab5759bd2a4c769db0a024"
},
{
"path": "package/dist/views/tui/terminal-usage.js.map",
- "size": 3042,
- "sha256": "8195d5323ede16fbaa049b5f1b4857b5ec0766f341ce6809994de134a6d2d509"
+ "size": 3835,
+ "sha256": "f83201e485d4620fb4d4068028636982e9ab1eb8f4c2c822212bb9f0459318e6"
},
{
"path": "package/dist/views/tui/theme.d.ts",
@@ -9457,28 +10237,28 @@
},
{
"path": "package/dist/views/tui/transcript.d.ts.map",
- "size": 789,
- "sha256": "7136604006c007ff224961c82ff89ca82fe6b405115fe05e5161cfe8ea699ada"
+ "size": 790,
+ "sha256": "4f1e6d09faae829323ff372b844863e1f3e296f02469771a4f45524562ad8d95"
},
{
"path": "package/dist/views/tui/transcript.js",
- "size": 13459,
- "sha256": "1c3f19194a2056ef51333efe12f556551fb6e56cde78c47eb56968500c65338b"
+ "size": 13803,
+ "sha256": "5d6bb2b43d1b5426563f74b7ae8b17de2a4e2337b55c5d041266c709e2bf7031"
},
{
"path": "package/dist/views/tui/transcript.js.map",
- "size": 15010,
- "sha256": "f609c12af31425d1dc8b911bfd8751a32ce39ab47f1e7744713ad9b09257c5fb"
+ "size": 15517,
+ "sha256": "224d4ec2b0a4540abdb16688bf93b726e273f1aed094c205aa0b856e144c867a"
},
{
"path": "package/package.json",
- "size": 5673,
- "sha256": "70fd8ae1e0a9cb9b77230dfc2b23164a7818936b3169eedfded195b5e5fe9935"
+ "size": 6160,
+ "sha256": "c4980275f346b60e04de4299c77d9b1b04cf37f38728b533513520d4b2aff5f1"
}
],
- "digest": "e95f73298dd6bb3e59e4c238995985212ed879ae5daa34f6bec19d9cf89736ae"
+ "digest": "25eb4c33b72cfd93131316431d5e0203003a4fb4532285fb1cb71d85c4ff6944"
},
- "rpcRecords": 34,
+ "rpcRecords": 37,
"referenceSizes": [
{
"columns": 40,
diff --git a/artifacts/verification/w6/raw/transcript-keyboard.cast b/artifacts/verification/w6/raw/transcript-keyboard.cast
index 711fdb5..753a424 100644
--- a/artifacts/verification/w6/raw/transcript-keyboard.cast
+++ b/artifacts/verification/w6/raw/transcript-keyboard.cast
@@ -1,69 +1,61 @@
-{"version":2,"width":80,"height":24,"timestamp":1786878348,"duration":2.631937,"idle_time_limit":1,"command":"packed braid --fixture deterministic","title":"Braid transcript keyboard navigation","env":{"TERM":"xterm-256color"},"stdin":true}
-[0.779238,"o","\u001b[?2004h"]
-[0.779647,"o","\u001b[>7u\u001b[?u\u001b[c\u001b[?1049h"]
-[0.779711,"o","\u001b[2J\u001b[H\u001b[?25l"]
-[0.805016,"o","\u001b[?2026h\u001b[2J\u001b[H\u001b[3J \u001b[0m\u001b]8;;\u0007\r\r\n Ask Braid starter anything. \u001b[0m\u001b]8;;\u0007\r\r\n \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[38;5;111m›\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia no connection\u001b[39m \u001b[38;5;115mready\u001b[39m · \u001b[38;5;195mCtrl+P commands\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[3A\u001b[2G\u001b[?25l"]
-[0.841268,"o","\u001b]0;Braid — /home/drew/code/.worktrees/braid-exact-interactive-20260816\u0007"]
-[0.846892,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145mAsk Braid starter anything.\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l"]
-[0.846976,"o","\u001b[4A\u001b[15G\u001b[?25l"]
-[0.853664,"i","keyboard-flow-01"]
-[0.853764,"i","\r"]
-[0.864663,"o","\u001b[15G\u001b[?25l"]
-[0.912563,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia not connected\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G"]
-[0.913158,"o","\u001b[?25l"]
-[0.990246,"o","\u001b[?2026h\u001b[17A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E details\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
-[1.074997,"i","keyboard-flow-02"]
-[1.075095,"i","\r"]
-[1.08568,"o","\u001b[15G\u001b[?25l"]
-[1.116653,"o","\u001b[?2026h\u001b[15A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia not connected\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G\u001b[?25l"]
-[1.186529,"o","\u001b[?2026h\u001b[17A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/2\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/2\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (2/2)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
-[1.278784,"i","keyboard-flow-03"]
-[1.279088,"i","\r"]
-[1.283155,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m keyboard-flow-03\u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l"]
-[1.284806,"o","\u001b[31G\u001b[?25l"]
-[1.290344,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[15G\u001b[?25l"]
-[1.326542,"o","\u001b[?2026h\u001b[11A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia not connected\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G"]
-[1.326745,"o","\u001b[?25l"]
-[1.395938,"o","\u001b[?2026h\u001b[17A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/3\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/3\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/3\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (3/3)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l"]
-[1.39603,"o","\u001b[4A\u001b[15G\u001b[?25l"]
-[1.481215,"i","keyboard-flow-04"]
-[1.481325,"i","\r"]
-[1.484212,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m keyboard-flow-04\u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[31G\u001b[?25l"]
-[1.489147,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[15G\u001b[?25l"]
-[1.51367,"o","\u001b[?2026h\u001b[7A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia not connected\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G\u001b[?25l"]
-[1.59326,"o","\u001b[?2026h\u001b[17A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (4/4)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
-[1.683457,"i","keyboard-flow-05"]
-[1.683559,"i","\r"]
-[1.69227,"o","\u001b[15G"]
-[1.694221,"o","\u001b[?25l"]
-[1.723277,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia not connected\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G\u001b[?25l"]
-[1.800552,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (5/5)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
-[1.887207,"i","keyboard-flow-06"]
-[1.887289,"i","\r"]
-[1.89272,"o","\u001b[15G"]
-[1.892877,"o","\u001b[?25l"]
-[1.924811,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia not connected\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l"]
-[1.924903,"o","\u001b[4A\u001b[12G\u001b[?25l"]
-[2.001345,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (6/6)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G"]
-[2.001482,"o","\u001b[?25l"]
-[2.0916,"i","keyboard-flow-07"]
-[2.091707,"i","\r"]
-[2.100213,"o","\u001b[15G\u001b[?25l"]
-[2.154593,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia not connected\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l"]
-[2.154683,"o","\u001b[4A\u001b[12G\u001b[?25l"]
-[2.234007,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 7/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (7/7)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G"]
-[2.234226,"o","\u001b[?25l"]
-[2.313262,"i","keyboard-flow-08"]
-[2.31335,"i","\r"]
-[2.31697,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m keyboard-flow-08\u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[31G\u001b[?25l"]
-[2.327532,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[15G\u001b[?25l"]
-[2.365431,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 7/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia not connected\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G\u001b[?25l"]
-[2.447763,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 7/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 8/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (8/8)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
-[2.537801,"i","\u001b[5~"]
-[2.537897,"i","\u001b[1;3H"]
-[2.541028,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mPgUp/PgDn history · End follow\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G"]
-[2.541104,"o","\u001b[?25l"]
-[2.617302,"i","\u001b[6~"]
-[2.617398,"i","\u001b[1;3F"]
-[2.621937,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 7/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 8/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter newline · paste \u001b[39m\u001b[38;5;145m────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (8/8)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
-[2.631937,"o","\u001b[0m"]
+{"version":2,"width":80,"height":24,"timestamp":1788055106,"duration":2.219311,"idle_time_limit":1,"command":"packed braid --fixture deterministic","title":"Braid transcript keyboard navigation","env":{"TERM":"xterm-256color"},"stdin":true}
+[0.462986,"o","\u001b[?2004h\u001b[>7u\u001b[?u\u001b[c\u001b[?1049h\u001b[2J\u001b[H\u001b[?25l"]
+[0.481112,"o","\u001b[?2026h\u001b[2J\u001b[H\u001b[3J \u001b[0m\u001b]8;;\u0007\r\r\n Ask Braid starter anything. \u001b[0m\u001b]8;;\u0007\r\r\n \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[38;5;111m›\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia no connection\u001b[39m \u001b[38;5;115mready\u001b[39m · \u001b[38;5;195mCtrl+P commands\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l"]
+[0.481227,"o","\u001b[3A\u001b[2G\u001b[?25l"]
+[0.522972,"o","\u001b]0;Braid — /home/drew/code/.worktrees/braid-keyboard-flow-fix\u0007"]
+[0.528933,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145mAsk Braid starter anything.\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[0.544477,"i","keyboard-flow-01"]
+[0.544572,"i","\r"]
+[0.552931,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m keyboard-flow-01\u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[31G\u001b[?25l"]
+[0.553887,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[15G\u001b[?25l"]
+[0.612926,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G\u001b[?25l"]
+[0.676345,"o","\u001b[?2026h\u001b[17A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E details\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[0.766092,"i","keyboard-flow-02"]
+[0.766188,"i","\r"]
+[0.773172,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m keyboard-flow-02\u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[31G\u001b[?25l"]
+[0.776588,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[15G\u001b[?25l"]
+[0.800181,"o","\u001b[?2026h\u001b[15A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G"]
+[0.80025,"o","\u001b[?25l"]
+[0.864982,"o","\u001b[?2026h\u001b[17A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/2\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/2\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (2/2)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[0.949327,"i","keyboard-flow-03"]
+[0.949431,"i","\r"]
+[0.956332,"o","\u001b[15G\u001b[?25l"]
+[0.979694,"o","\u001b[?2026h\u001b[11A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G\u001b[?25l"]
+[1.043039,"o","\u001b[?2026h\u001b[17A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/3\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/3\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/3\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (3/3)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[1.130337,"i","keyboard-flow-04"]
+[1.130433,"i","\r"]
+[1.139822,"o","\u001b[15G\u001b[?25l"]
+[1.165666,"o","\u001b[?2026h\u001b[7A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G\u001b[?25l"]
+[1.23861,"o","\u001b[?2026h\u001b[17A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (4/4)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[1.33091,"i","keyboard-flow-05"]
+[1.331001,"i","\r"]
+[1.337376,"o","\u001b[15G"]
+[1.337471,"o","\u001b[?25l"]
+[1.374117,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/4\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l"]
+[1.374188,"o","\u001b[4A\u001b[12G\u001b[?25l"]
+[1.451701,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (5/5)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G"]
+[1.451843,"o","\u001b[?25l"]
+[1.534932,"i","keyboard-flow-06"]
+[1.535034,"i","\r"]
+[1.541144,"o","\u001b[15G\u001b[?25l"]
+[1.572,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/5\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G\u001b[?25l"]
+[1.643938,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (6/6)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[1.738122,"i","keyboard-flow-07"]
+[1.738226,"i","\r"]
+[1.744134,"o","\u001b[15G\u001b[?25l"]
+[1.781278,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/6\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l"]
+[1.781376,"o","\u001b[4A\u001b[12G\u001b[?25l"]
+[1.853953,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 7/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (7/7)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[1.940572,"i","keyboard-flow-08"]
+[1.940666,"i","\r"]
+[1.943488,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m keyboard-flow-08\u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[31G\u001b[?25l"]
+[1.94639,"o","\u001b[?2026h\r\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[15G\u001b[?25l"]
+[1.970998,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 7/7\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;222mworking…\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› queue #1\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;222mCtrl+C cancel\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[12G\u001b[?25l"]
+[2.04357,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 7/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 8/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (8/8)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[2.124294,"i","\u001b[5~"]
+[2.124397,"i","\u001b[1;3H"]
+[2.127642,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 1/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-01 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 2/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-02 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 3/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-03 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mPgUp/PgDn history · End follow\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[2.204961,"i","\u001b[6~"]
+[2.205054,"i","\u001b[1;3F"]
+[2.209311,"o","\u001b[?2026h\u001b[19A\r\u001b[2K \u001b[38;5;145m· run result\u001b[39m 4/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-04 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 5/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-05 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 6/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-06 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 7/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-07 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;111m› \u001b[39mkeyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[38;5;145m· run result\u001b[39m 8/8\u001b[38;5;145m · Ctrl+E details\u001b[39m \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K Fixture response through pi: keyboard-flow-08 \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;111m────────────────────────────────────────────────────────────────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;222m› new message\u001b[39m \u001b[7m \u001b[0m \u001b[0m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K \u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;145m───────────────────\u001b[39m\u001b[38;5;111m type / for commands · Alt+Enter · paste \u001b[39m\u001b[38;5;145m────────────────────\u001b[39m\u001b[0m\u001b]8;;\u0007\r\r\n\u001b[2K\u001b[38;5;195mprofile Braid starter\u001b[39m · \u001b[38;5;195mpi\u001b[39m · \u001b[38;5;195mvia local\u001b[39m \u001b[38;5;195mCtrl+E next detail (8/8)\u001b[39m\u001b[0m\u001b]8;;\u0007\u001b[?2026l\u001b[4A\u001b[15G\u001b[?25l"]
+[2.219311,"o","\u001b[0m"]
diff --git a/artifacts/verification/w6/states/active-streaming.json b/artifacts/verification/w6/states/active-streaming.json
index ee618f4..473c225 100644
--- a/artifacts/verification/w6/states/active-streaming.json
+++ b/artifacts/verification/w6/states/active-streaming.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 5,
- "frame": " › W6 active streaming\n\n working…\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n────────────────────────────────────────────────────────────────────────────────\n› queue #1\n\n\n─────────────── type / for commands · Alt+Enter newline · paste ────────────────\nprofile Braid starter · pi · via not connected Ctrl+C cancel\n",
+ "frame": " › W6 active streaming\n\n working…\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n────────────────────────────────────────────────────────────────────────────────\n› queue #1\n\n\n─────────────────── type / for commands · Alt+Enter · paste ────────────────────\nprofile Braid starter · pi · via local Ctrl+C cancel\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 5,
"sequence": 5,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -159,11 +159,19 @@
"interactions": [],
"queue": [],
"activeRunId": "run-000001",
+ "focusedRunId": "run-000001",
+ "activeRuns": [
+ {
+ "runId": "run-000001",
+ "conversationId": "conv-1",
+ "branchId": "branch-1"
+ }
+ ],
"lastError": null
},
"view": {
"revision": 5,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -281,6 +289,7 @@
},
"environments": [],
"activeRunId": "run-000001",
+ "focusedRunId": "run-000001",
"interactions": [],
"activity": [
{
@@ -311,7 +320,7 @@
"title": "event backend_start",
"status": "running",
"detail": "sequence 1",
- "occurredAt": "2026-08-16T11:05:23.005Z",
+ "occurredAt": "2026-08-30T01:58:01.170Z",
"sourceEventId": "run-000001:runtime:1",
"runId": "run-000001",
"entityType": "run",
@@ -391,44 +400,36 @@
},
"capabilities": {
"conversation.create": {
- "available": false,
- "source": "application",
- "reason": "Finish or cancel the active run first"
+ "available": true,
+ "source": "application"
},
"conversation.open": {
- "available": false,
- "source": "application",
- "reason": "Finish or cancel the active run first"
+ "available": true,
+ "source": "application"
},
"run.runner": {
- "available": false,
- "source": "application",
- "reason": "Finish or cancel the active run first"
+ "available": true,
+ "source": "application"
},
"run.model": {
- "available": false,
- "source": "application",
- "reason": "Finish or cancel the active run first"
+ "available": true,
+ "source": "application"
},
"run.effort": {
- "available": false,
- "source": "application",
- "reason": "Finish or cancel the active run first"
+ "available": true,
+ "source": "application"
},
"conversation.branch": {
- "available": false,
- "source": "application",
- "reason": "Finish or cancel the active run first"
+ "available": true,
+ "source": "application"
},
"conversation.clone": {
- "available": false,
- "source": "application",
- "reason": "Finish or cancel the active run first"
+ "available": true,
+ "source": "application"
},
"conversation.fork": {
- "available": false,
- "source": "application",
- "reason": "Finish or cancel the active run first"
+ "available": true,
+ "source": "application"
},
"analysis.ask": {
"available": false,
@@ -455,10 +456,29 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
"available": false,
"source": "application",
- "reason": "Finish or cancel the active run first"
+ "reason": "There is no running analysis to cancel"
},
"application.quit": {
"available": true,
@@ -492,6 +512,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -522,12 +561,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "Detach the active run before reconnecting it"
+ "reason": "There is no recoverable run to reconnect while another run is active"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "Detach the active run before reconciling it"
+ "reason": "There is no recoverable run to reconcile while another run is active"
}
},
"draft": "",
@@ -546,7 +585,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
},
@@ -658,10 +697,10 @@
"value": {
"kind": "effect.upserted",
"effect": {
- "id": "effect-op-terminal-000002-221214e8dc3317bcb681a929",
+ "id": "effect-op-terminal-000002-7157e62077a4d509410071b5",
"operationId": "op-terminal-000002",
"effectKind": "run.execute",
- "requestDigest": "221214e8dc3317bcb681a929a14c7405e4e06d08e9bbba09c7a20cf138d54c87",
+ "requestDigest": "7157e62077a4d509410071b5c2a6a9850f6901ef9e508c8792e90dbbc23c2412",
"kind": "send",
"status": "pending",
"attempt": 1,
@@ -680,40 +719,40 @@
"source": {
"eventId": "run-000001:runtime:1",
"providerSequence": 1,
- "occurredAt": "2026-08-16T11:05:23.005Z",
+ "occurredAt": "2026-08-30T01:58:01.170Z",
"receivedAt": "2026-08-01T00:00:00.000Z"
},
"unknown": {
"type": "backend_start",
"task": {
- "id": "turn-00c1be56-e524-49c2-9635-c92d7fae52aa",
+ "id": "turn-60d0823b-561e-4135-ae12-78539348502d",
"intent": "W6 active streaming",
"metadata": {
"identity": {
"profileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
- "taskDigest": "sha256:3ce61a40a3cd4e7f777080a96e3df6dac9a740154c2d4ea7c6893f65eab607d5"
+ "taskDigest": "sha256:dd6b9e9d100729342b1c39bd909692e03d7cc5f24ba7bb0de942a5add8aeb64f"
}
}
},
"session": {
- "id": "2e852f40-2813-4ba4-9e23-78f2991e7c5a",
+ "id": "e71aaa92-0529-414f-9748-268367dde511",
"backend": "executor",
"status": "active",
- "createdAt": "2026-08-16T11:05:23.005Z",
- "updatedAt": "2026-08-16T11:05:23.005Z",
+ "createdAt": "2026-08-30T01:58:01.170Z",
+ "updatedAt": "2026-08-30T01:58:01.170Z",
"metadata": "[unavailable]"
},
"backend": "router",
"metadata": {
"identity": {
"profileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
- "taskDigest": "sha256:3ce61a40a3cd4e7f777080a96e3df6dac9a740154c2d4ea7c6893f65eab607d5"
+ "taskDigest": "sha256:dd6b9e9d100729342b1c39bd909692e03d7cc5f24ba7bb0de942a5add8aeb64f"
},
"materialization": {
"status": "known",
"authoredProfileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
"effectiveProfileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
- "materializationPlanDigest": "sha256:00acc9b6378f74a84629ea6c26f6e800d054bc04588a1daba8d1924b79792478",
+ "materializationPlanDigest": "sha256:a5b3379719400534a3c394e89e6822ba88632b2583f080635b5a0a119d959f5f",
"runtime": "router",
"backend": "router",
"model": {
@@ -722,16 +761,16 @@
},
"execution": {
"kind": "request",
- "id": "turn-00c1be56-e524-49c2-9635-c92d7fae52aa"
+ "id": "turn-60d0823b-561e-4135-ae12-78539348502d"
},
"materializer": "router-prompt-model"
},
"executionBindings": [
{
"status": "known",
- "attemptId": "turn-00c1be56-e524-49c2-9635-c92d7fae52aa:attempt:c94a79bb-1272-44ba-ace0-f6fa63c8ad8a",
- "materializationReceiptDigest": "sha256:bdae6c111d17379adb467471e373ca52efbafa678fa43bc4cd3bcb66d79cb91b",
- "bindingDigest": "sha256:dbfb11afb6d471167ed41e0d48a5a4399546209487e8f350b2f38870c0455b37",
+ "attemptId": "turn-60d0823b-561e-4135-ae12-78539348502d:attempt:5d00fbfd-42ba-461f-a300-6f5358758ce5",
+ "materializationReceiptDigest": "sha256:46f5e809a9bd69d915ad69aaaaf7a9b1aaadaae30b422f784aa6431b77d4ad9f",
+ "bindingDigest": "sha256:7a208eb1a90c51ce7206583ea18beffc6814409992b3f4674cf07827984ee4a0",
"descriptor": {
"kind": "router-request",
"transport": "http",
@@ -743,10 +782,10 @@
"timeoutMs": null
},
"timing": {
- "startedAt": "2026-08-16T11:05:23.001Z"
+ "startedAt": "2026-08-30T01:58:01.166Z"
}
},
- "timestamp": "2026-08-16T11:05:23.005Z"
+ "timestamp": "2026-08-30T01:58:01.170Z"
}
}
}
diff --git a/artifacts/verification/w6/states/active-streaming.png b/artifacts/verification/w6/states/active-streaming.png
index cfc8177..fd30cd7 100644
Binary files a/artifacts/verification/w6/states/active-streaming.png and b/artifacts/verification/w6/states/active-streaming.png differ
diff --git a/artifacts/verification/w6/states/active-streaming.txt b/artifacts/verification/w6/states/active-streaming.txt
index c72c61a..f848296 100644
--- a/artifacts/verification/w6/states/active-streaming.txt
+++ b/artifacts/verification/w6/states/active-streaming.txt
@@ -20,5 +20,5 @@
› queue #1
-─────────────── type / for commands · Alt+Enter newline · paste ────────────────
-profile Braid starter · pi · via not connected Ctrl+C cancel
+─────────────────── type / for commands · Alt+Enter · paste ────────────────────
+profile Braid starter · pi · via local Ctrl+C cancel
diff --git a/artifacts/verification/w6/states/analysis.json b/artifacts/verification/w6/states/analysis.json
index 30455c0..319aeb8 100644
--- a/artifacts/verification/w6/states/analysis.json
+++ b/artifacts/verification/w6/states/analysis.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 1,
- "frame": " analyses › /ask · frozen question Braid starter · pi · fixture/deterministic\n────────────────────────────────────────────────────────────────────────────────\n source: da8ae2345b2c17a…7c9190eb · frozen\n analyst: profile-trace-reviewer · completed\n ── question\n Where did this run waste time, and what should change?\n ── findings\n 1. [1] Profile inspection and route resolution ran serially although their\n inputs were independent. · medium · confidence 0.94\n ↳ [1] profile.inspect completed before runtime.route started · event\n event-runtime-r…te-start\n 2. [2] The answer claimed success before the packaged terminal check completed.\n · high · confidence 0.88\n ↳ [2] package check started; no terminal result was recorded · event\n event-package-c…ck-start\n ── next\n next: ask a narrower question, or use /compare against another\n frozen run\n ── run receipt\n source complete: yes\n findings: 2\n analysis cost: $0.0048\n────────────────────────────────────────────────────────────────────────────────\n ↑↓ previous/next · PgUp/PgDn page · ←/esc back · page 1/2 · tab: analyses\n",
+ "frame": " analyses › /ask · frozen question\n────────────────────────────────────────────────────────────────────────────────\n source: da8ae2345b2c17a…7c9190eb · frozen\n analyst: profile-trace-reviewer · completed\n recipe: ask\n ── question\n Where did this run waste time, and what should change?\n ── findings\n 1. [1] Profile inspection and route resolution ran serially although their\n inputs were independent. · medium · confidence 0.94\n ↳ [1] profile.inspect completed before runtime.route started\n source: event-runtime-r…te-start\n 2. [2] The answer claimed success before the packaged terminal check completed.\n · high · confidence 0.88\n ↳ [2] package check started; no terminal result was recorded\n source: event-package-c…ck-start\n ── next\n next: ask a narrower question, or use /compare against another\n frozen run\n ── run receipt\n source complete: yes\n findings: 2\n────────────────────────────────────────────────────────────────────────────────\n ↑↓ · Pg · ←/esc back · page 1/2 · p promote · x cancel · r\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -238,13 +240,16 @@
"lines": [
"source: da8ae2345b2c17a…7c9190eb · frozen",
"analyst: profile-trace-reviewer · completed",
+ "recipe: ask",
"── question",
"Where did this run waste time, and what should change?",
"── findings",
"1. [1] Profile inspection and route resolution ran serially although their inputs were independent. · medium · confidence 0.94",
- "↳ [1] profile.inspect completed before runtime.route started · event event-runtime-r…te-start",
+ "↳ [1] profile.inspect completed before runtime.route started",
+ " source: event-runtime-r…te-start",
"2. [2] The answer claimed success before the packaged terminal check completed. · high · confidence 0.88",
- "↳ [2] package check started; no terminal result was recorded · event event-package-c…ck-start",
+ "↳ [2] package check started; no terminal result was recorded",
+ " source: event-package-c…ck-start",
"── next",
"next: ask a narrower question, or use /compare against another frozen run",
"── run receipt",
@@ -319,10 +324,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -355,6 +380,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -386,12 +430,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -411,7 +455,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/analysis.png b/artifacts/verification/w6/states/analysis.png
index b8fad3a..0a7e235 100644
Binary files a/artifacts/verification/w6/states/analysis.png and b/artifacts/verification/w6/states/analysis.png differ
diff --git a/artifacts/verification/w6/states/analysis.txt b/artifacts/verification/w6/states/analysis.txt
index 12e8df9..bab9607 100644
--- a/artifacts/verification/w6/states/analysis.txt
+++ b/artifacts/verification/w6/states/analysis.txt
@@ -1,24 +1,24 @@
- analyses › /ask · frozen question Braid starter · pi · fixture/deterministic
+ analyses › /ask · frozen question
────────────────────────────────────────────────────────────────────────────────
source: da8ae2345b2c17a…7c9190eb · frozen
analyst: profile-trace-reviewer · completed
+ recipe: ask
── question
Where did this run waste time, and what should change?
── findings
1. [1] Profile inspection and route resolution ran serially although their
inputs were independent. · medium · confidence 0.94
- ↳ [1] profile.inspect completed before runtime.route started · event
- event-runtime-r…te-start
+ ↳ [1] profile.inspect completed before runtime.route started
+ source: event-runtime-r…te-start
2. [2] The answer claimed success before the packaged terminal check completed.
· high · confidence 0.88
- ↳ [2] package check started; no terminal result was recorded · event
- event-package-c…ck-start
+ ↳ [2] package check started; no terminal result was recorded
+ source: event-package-c…ck-start
── next
next: ask a narrower question, or use /compare against another
frozen run
── run receipt
source complete: yes
findings: 2
- analysis cost: $0.0048
────────────────────────────────────────────────────────────────────────────────
- ↑↓ previous/next · PgUp/PgDn page · ←/esc back · page 1/2 · tab: analyses
+ ↑↓ · Pg · ←/esc back · page 1/2 · p promote · x cancel · r
diff --git a/artifacts/verification/w6/states/automation.json b/artifacts/verification/w6/states/automation.json
index c287236..670ef7d 100644
--- a/artifacts/verification/w6/states/automation.json
+++ b/artifacts/verification/w6/states/automation.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -276,10 +278,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -312,6 +334,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -343,12 +384,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -368,7 +409,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/automation.png b/artifacts/verification/w6/states/automation.png
index f708fb9..b963f66 100644
Binary files a/artifacts/verification/w6/states/automation.png and b/artifacts/verification/w6/states/automation.png differ
diff --git a/artifacts/verification/w6/states/command-palette-120.json b/artifacts/verification/w6/states/command-palette-120.json
index 4fd6c95..24ff1e1 100644
--- a/artifacts/verification/w6/states/command-palette-120.json
+++ b/artifacts/verification/w6/states/command-palette-120.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 120,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 1,
- "frame": " Commands\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n>\n→ /new Create an empty conversation\n /open Search and open conversations\n /profile Inspect, select, import, or edit a profile\n /connection Inspect and manage connections\n /runner Set the runner for this branch\n /model Set the model for this branch\n /effort Set reasoning effort for this branch\n /branch Create a branch at a message boundary\n (1/29)\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n type to filter · enter to choose · ←/esc close\n",
+ "frame": " Commands\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n>\n→ /new Create an empty conversation\n /open Search and open conversations\n /profile Inspect, select, import, or edit a profile\n /connection Inspect and manage connections\n /runner Set the runner for this branch\n /model Set the model for this branch\n /effort Set reasoning effort for this branch\n /branch Create and open a branch at a message boundary\n (1/31)\n────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n type to filter · enter to choose · ←/esc close\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -276,10 +278,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -312,6 +334,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -343,12 +384,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -367,7 +408,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/command-palette-120.png b/artifacts/verification/w6/states/command-palette-120.png
index 85b3885..d8ae87c 100644
Binary files a/artifacts/verification/w6/states/command-palette-120.png and b/artifacts/verification/w6/states/command-palette-120.png differ
diff --git a/artifacts/verification/w6/states/command-palette-120.txt b/artifacts/verification/w6/states/command-palette-120.txt
index 558cc1d..b4654a1 100644
--- a/artifacts/verification/w6/states/command-palette-120.txt
+++ b/artifacts/verification/w6/states/command-palette-120.txt
@@ -8,7 +8,7 @@
/runner Set the runner for this branch
/model Set the model for this branch
/effort Set reasoning effort for this branch
- /branch Create a branch at a message boundary
- (1/29)
+ /branch Create and open a branch at a message boundary
+ (1/31)
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
type to filter · enter to choose · ←/esc close
diff --git a/artifacts/verification/w6/states/command-palette-40.json b/artifacts/verification/w6/states/command-palette-40.json
index c15be1b..fe3c125 100644
--- a/artifacts/verification/w6/states/command-palette-40.json
+++ b/artifacts/verification/w6/states/command-palette-40.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 40,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 1,
- "frame": " Commands\n────────────────────────────────────────\n>\n→ /new\n /open\n /profile\n /connection\n /runner\n /model\n (1/29)\n────────────────────────────────────────\n enter choose · ←/esc close\n",
+ "frame": " Commands\n────────────────────────────────────────\n>\n→ /new\n /open\n /profile\n /connection\n /runner\n /model\n (1/31)\n────────────────────────────────────────\n enter choose · ←/esc close\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -276,10 +278,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -312,6 +334,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -343,12 +384,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -367,7 +408,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/command-palette-40.png b/artifacts/verification/w6/states/command-palette-40.png
index f1eebab..9ce5c6b 100644
Binary files a/artifacts/verification/w6/states/command-palette-40.png and b/artifacts/verification/w6/states/command-palette-40.png differ
diff --git a/artifacts/verification/w6/states/command-palette-40.txt b/artifacts/verification/w6/states/command-palette-40.txt
index 6781fac..4fce1e0 100644
--- a/artifacts/verification/w6/states/command-palette-40.txt
+++ b/artifacts/verification/w6/states/command-palette-40.txt
@@ -7,6 +7,6 @@
/connection
/runner
/model
- (1/29)
+ (1/31)
────────────────────────────────────────
enter choose · ←/esc close
diff --git a/artifacts/verification/w6/states/command-palette-80.json b/artifacts/verification/w6/states/command-palette-80.json
index 6889abd..aa738f0 100644
--- a/artifacts/verification/w6/states/command-palette-80.json
+++ b/artifacts/verification/w6/states/command-palette-80.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 1,
- "frame": " Commands\n────────────────────────────────────────────────────────────────────────────────\n>\n→ /new Create an empty conversation\n /open Search and open conversations\n /profile Inspect, select, import, or edit a profile\n /connection Inspect and manage connections\n /runner Set the runner for this branch\n /model Set the model for this branch\n /effort Set reasoning effort for this branch\n /branch Create a branch at a message boundary\n (1/29)\n────────────────────────────────────────────────────────────────────────────────\n type to filter · enter to choose · ←/esc close\n",
+ "frame": " Commands\n────────────────────────────────────────────────────────────────────────────────\n>\n→ /new Create an empty conversation\n /open Search and open conversations\n /profile Inspect, select, import, or edit a profile\n /connection Inspect and manage connections\n /runner Set the runner for this branch\n /model Set the model for this branch\n /effort Set reasoning effort for this branch\n /branch Create and open a branch at a message bound…\n (1/31)\n────────────────────────────────────────────────────────────────────────────────\n type to filter · enter to choose · ←/esc close\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -276,10 +278,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -312,6 +334,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -343,12 +384,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -367,7 +408,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/command-palette-80.png b/artifacts/verification/w6/states/command-palette-80.png
index 680e8f4..fb1cc17 100644
Binary files a/artifacts/verification/w6/states/command-palette-80.png and b/artifacts/verification/w6/states/command-palette-80.png differ
diff --git a/artifacts/verification/w6/states/command-palette-80.txt b/artifacts/verification/w6/states/command-palette-80.txt
index a130612..755d14a 100644
--- a/artifacts/verification/w6/states/command-palette-80.txt
+++ b/artifacts/verification/w6/states/command-palette-80.txt
@@ -8,7 +8,7 @@
/runner Set the runner for this branch
/model Set the model for this branch
/effort Set reasoning effort for this branch
- /branch Create a branch at a message boundary
- (1/29)
+ /branch Create and open a branch at a message bound…
+ (1/31)
────────────────────────────────────────────────────────────────────────────────
type to filter · enter to choose · ←/esc close
diff --git a/artifacts/verification/w6/states/comparison.json b/artifacts/verification/w6/states/comparison.json
index b696bb6..d52fa76 100644
--- a/artifacts/verification/w6/states/comparison.json
+++ b/artifacts/verification/w6/states/comparison.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 1,
- "frame": " analyses › /compare · frozen runs Braid starter · pi · fixture/deterministic\n────────────────────────────────────────────────────────────────────────────────\n saved result: replayed from the local journal\n baseline run: run-route-serial\n baseline source: 9ee7d219c8b0092…8c519924\n baseline outcome: completed · cost: 0.014 · source: frozen run field\n run.cost_usd\n candidate run: run-route-parallel\n candidate source: 0328e6889082b14…86b0ff3d\n candidate outcome: completed · cost: 0.009 · source: frozen run field\n run.cost_usd\n sample: 1 paired · 0 baseline-only · 0 candidate-only\n ! One pair is descriptive; it cannot support a reliable general conclusion.\n captured fields · baseline | candidate | availability\n run.status: completed | completed | none\n run.cost_usd: 0.014 | 0.009 | none\n run.wall_time_ms: 18200 | 12100 | none\n run.input_tokens: 7420 | 6910 | none\n paired measurements · candidate minus baseline where applicable\n paired.correctness.b01: 0\n paired.correctness.b10: 0\n paired.correctness.mcnemar.b: 0\n────────────────────────────────────────────────────────────────────────────────\n ↑↓ previous/next · PgUp/PgDn page · ←/esc back · page 1/4 · tab: analyses\n",
+ "frame": " analyses › /compare · frozen runs\n────────────────────────────────────────────────────────────────────────────────\n saved result: replayed from the local journal\n baseline run: run-route-serial\n baseline source: 9ee7d219c8b0092…8c519924\n baseline outcome: completed · cost: 0.014 · source: frozen run field\n run.cost_usd\n candidate run: run-route-parallel\n candidate source: 0328e6889082b14…86b0ff3d\n candidate outcome: completed · cost: 0.009 · source: frozen run field\n run.cost_usd\n sample: 1 paired · 0 baseline-only · 0 candidate-only\n ! One pair is descriptive; it cannot support a reliable general conclusion.\n captured fields · baseline | candidate | availability\n run.status: completed | completed | none\n run.cost_usd: 0.014 | 0.009 | none\n run.wall_time_ms: 18200 | 12100 | none\n run.input_tokens: 7420 | 6910 | none\n paired measurements · candidate minus baseline where applicable\n paired.correctness.b01: 0\n paired.correctness.b10: 0\n paired.correctness.mcnemar.b: 0\n────────────────────────────────────────────────────────────────────────────────\n ↑↓ · Pg · ←/esc back · page 1/4 · p promote · x cancel · r\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -363,10 +365,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -399,6 +421,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -430,12 +471,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -455,7 +496,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/comparison.png b/artifacts/verification/w6/states/comparison.png
index 4fa1535..2ee15fd 100644
Binary files a/artifacts/verification/w6/states/comparison.png and b/artifacts/verification/w6/states/comparison.png differ
diff --git a/artifacts/verification/w6/states/comparison.txt b/artifacts/verification/w6/states/comparison.txt
index bf7e7e1..df0be22 100644
--- a/artifacts/verification/w6/states/comparison.txt
+++ b/artifacts/verification/w6/states/comparison.txt
@@ -1,4 +1,4 @@
- analyses › /compare · frozen runs Braid starter · pi · fixture/deterministic
+ analyses › /compare · frozen runs
────────────────────────────────────────────────────────────────────────────────
saved result: replayed from the local journal
baseline run: run-route-serial
@@ -21,4 +21,4 @@
paired.correctness.b10: 0
paired.correctness.mcnemar.b: 0
────────────────────────────────────────────────────────────────────────────────
- ↑↓ previous/next · PgUp/PgDn page · ←/esc back · page 1/4 · tab: analyses
+ ↑↓ · Pg · ←/esc back · page 1/4 · p promote · x cancel · r
diff --git a/artifacts/verification/w6/states/empty.json b/artifacts/verification/w6/states/empty.json
index 45eb041..accc95d 100644
--- a/artifacts/verification/w6/states/empty.json
+++ b/artifacts/verification/w6/states/empty.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 1,
- "frame": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Ask Braid starter anything.\n\n────────────────────────────────────────────────────────────────────────────────\n› new message\n\n\n─────────────── type / for commands · Alt+Enter newline · paste ────────────────\nprofile Braid starter · pi · via local\n",
+ "frame": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n Ask Braid starter anything.\n\n────────────────────────────────────────────────────────────────────────────────\n› new message\n\n\n─────────────────── type / for commands · Alt+Enter · paste ────────────────────\nprofile Braid starter · pi · via local\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -276,10 +278,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -312,6 +334,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -343,12 +384,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -367,7 +408,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/empty.png b/artifacts/verification/w6/states/empty.png
index 5351b0b..1185b23 100644
Binary files a/artifacts/verification/w6/states/empty.png and b/artifacts/verification/w6/states/empty.png differ
diff --git a/artifacts/verification/w6/states/empty.txt b/artifacts/verification/w6/states/empty.txt
index f188c65..9b61fd8 100644
--- a/artifacts/verification/w6/states/empty.txt
+++ b/artifacts/verification/w6/states/empty.txt
@@ -20,5 +20,5 @@
› new message
-─────────────── type / for commands · Alt+Enter newline · paste ────────────────
+─────────────────── type / for commands · Alt+Enter · paste ────────────────────
profile Braid starter · pi · via local
diff --git a/artifacts/verification/w6/states/failure-or-reconnect.json b/artifacts/verification/w6/states/failure-or-reconnect.json
index fda7982..8685e1f 100644
--- a/artifacts/verification/w6/states/failure-or-reconnect.json
+++ b/artifacts/verification/w6/states/failure-or-reconnect.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 8,
- "frame": " › W6 failure state\n\n error · unknown\n RUNTIME_BACKEND_ERROR\n failed\n\n\n\n\n\n\n\n\n\n\n\n\n\n────────────────────────────────────────────────────────────────────────────────\n› new message\n\n\n─────────────── type / for commands · Alt+Enter newline · paste ────────────────\nprofile Braid starter · pi · via local failed · /activity details · /new\n",
+ "frame": " › W6 failure state\n\n error · unknown\n RUNTIME_BACKEND_ERROR\n failed\n\n\n\n\n\n\n\n\n\n\n\n\n\n────────────────────────────────────────────────────────────────────────────────\n› new message\n\n\n─────────────────── type / for commands · Alt+Enter · paste ────────────────────\nprofile Braid starter · pi · via local failed · /activity details · /new\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 8,
"sequence": 8,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -170,11 +170,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": "run-000001",
+ "activeRuns": [],
"lastError": "RUNTIME_FINAL_ERROR"
},
"view": {
"revision": 8,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -301,6 +303,7 @@
"attribution": "complete"
},
"environments": [],
+ "focusedRunId": "run-000001",
"interactions": [],
"activity": [
{
@@ -333,7 +336,7 @@
"title": "event backend_start",
"status": "failed",
"detail": "sequence 1",
- "occurredAt": "2026-08-16T11:05:44.117Z",
+ "occurredAt": "2026-08-30T01:58:22.556Z",
"sourceEventId": "run-000001:runtime:1",
"runId": "run-000001",
"entityType": "run",
@@ -345,7 +348,7 @@
"title": "error",
"status": "failed",
"detail": "RUNTIME_BACKEND_ERROR",
- "occurredAt": "2026-08-16T11:05:44.126Z",
+ "occurredAt": "2026-08-30T01:58:22.564Z",
"sourceEventId": "run-000001:runtime:2",
"runId": "run-000001",
"entityType": "run",
@@ -480,10 +483,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -516,6 +539,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -547,12 +589,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -571,7 +613,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
},
@@ -683,10 +725,10 @@
"value": {
"kind": "effect.upserted",
"effect": {
- "id": "effect-op-terminal-000002-9ffdb9513363cf2bbcf05ab0",
+ "id": "effect-op-terminal-000002-c0460178e561c45076aed92a",
"operationId": "op-terminal-000002",
"effectKind": "run.execute",
- "requestDigest": "9ffdb9513363cf2bbcf05ab0c3ee45fc895dc29003d622df749e5fa199e5e9b6",
+ "requestDigest": "c0460178e561c45076aed92a9b2cff61367e21c190d7aa6804c45969710af805",
"kind": "send",
"status": "pending",
"attempt": 1,
@@ -705,40 +747,40 @@
"source": {
"eventId": "run-000001:runtime:1",
"providerSequence": 1,
- "occurredAt": "2026-08-16T11:05:44.117Z",
+ "occurredAt": "2026-08-30T01:58:22.556Z",
"receivedAt": "2026-08-01T00:00:00.000Z"
},
"unknown": {
"type": "backend_start",
"task": {
- "id": "turn-560229eb-c5c8-41cc-ae83-a4bd8c46ebad",
+ "id": "turn-ebae6941-fa1b-4202-a1bc-e366a4062dbd",
"intent": "W6 failure state",
"metadata": {
"identity": {
"profileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
- "taskDigest": "sha256:a18a1b57b75ff55ccdc806e7e56baffcf9c30a9c5db512fdf150524971f262f8"
+ "taskDigest": "sha256:c9905665e2dfc0797a1e676126240ca528d13f202f3254f328f039c0de60f196"
}
}
},
"session": {
- "id": "e545428d-4105-4773-88d8-1eb36c26f90f",
+ "id": "1a16fd5b-50ea-4e1b-9a19-5cd16497bb9d",
"backend": "executor",
"status": "active",
- "createdAt": "2026-08-16T11:05:44.117Z",
- "updatedAt": "2026-08-16T11:05:44.117Z",
+ "createdAt": "2026-08-30T01:58:22.556Z",
+ "updatedAt": "2026-08-30T01:58:22.556Z",
"metadata": "[unavailable]"
},
"backend": "router",
"metadata": {
"identity": {
"profileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
- "taskDigest": "sha256:a18a1b57b75ff55ccdc806e7e56baffcf9c30a9c5db512fdf150524971f262f8"
+ "taskDigest": "sha256:c9905665e2dfc0797a1e676126240ca528d13f202f3254f328f039c0de60f196"
},
"materialization": {
"status": "known",
"authoredProfileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
"effectiveProfileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
- "materializationPlanDigest": "sha256:00acc9b6378f74a84629ea6c26f6e800d054bc04588a1daba8d1924b79792478",
+ "materializationPlanDigest": "sha256:a5b3379719400534a3c394e89e6822ba88632b2583f080635b5a0a119d959f5f",
"runtime": "router",
"backend": "router",
"model": {
@@ -747,16 +789,16 @@
},
"execution": {
"kind": "request",
- "id": "turn-560229eb-c5c8-41cc-ae83-a4bd8c46ebad"
+ "id": "turn-ebae6941-fa1b-4202-a1bc-e366a4062dbd"
},
"materializer": "router-prompt-model"
},
"executionBindings": [
{
"status": "known",
- "attemptId": "turn-560229eb-c5c8-41cc-ae83-a4bd8c46ebad:attempt:9b5c7880-8346-4b79-a339-e27567430d22",
- "materializationReceiptDigest": "sha256:4cee36369ee5cd7d6867ee462a20e76c8edb1f54e1dad043b8cbec34af35603d",
- "bindingDigest": "sha256:a93cc37b04fa2b3da7f09db554744f4564f0b82f94f43a54d2510f8bd046a850",
+ "attemptId": "turn-ebae6941-fa1b-4202-a1bc-e366a4062dbd:attempt:a200bbab-b620-4f83-85b3-4170211c0477",
+ "materializationReceiptDigest": "sha256:3d182cfb1cb1c23685b28d769bfa89c36a6244fe30d8dbf74d7cfc97a5f5eda7",
+ "bindingDigest": "sha256:69c4d390d5bc9a7f656262a2ea53513a82b48c25e1f9f2bbfb25fa564eb037a4",
"descriptor": {
"kind": "router-request",
"transport": "http",
@@ -768,10 +810,10 @@
"timeoutMs": null
},
"timing": {
- "startedAt": "2026-08-16T11:05:44.113Z"
+ "startedAt": "2026-08-30T01:58:22.554Z"
}
},
- "timestamp": "2026-08-16T11:05:44.117Z"
+ "timestamp": "2026-08-30T01:58:22.556Z"
}
}
},
@@ -784,7 +826,7 @@
"source": {
"eventId": "run-000001:runtime:2",
"providerSequence": 2,
- "occurredAt": "2026-08-16T11:05:44.126Z",
+ "occurredAt": "2026-08-30T01:58:22.564Z",
"receivedAt": "2026-08-01T00:00:00.000Z"
},
"error": {
@@ -803,7 +845,7 @@
"source": {
"eventId": "run-000001:runtime:3",
"providerSequence": 3,
- "occurredAt": "2026-08-16T11:05:44.131Z",
+ "occurredAt": "2026-08-30T01:58:22.569Z",
"receivedAt": "2026-08-01T00:00:00.000Z"
},
"status": "failed",
@@ -827,10 +869,10 @@
"value": {
"kind": "effect.upserted",
"effect": {
- "id": "effect-op-terminal-000002-9ffdb9513363cf2bbcf05ab0",
+ "id": "effect-op-terminal-000002-c0460178e561c45076aed92a",
"operationId": "op-terminal-000002",
"effectKind": "run.execute",
- "requestDigest": "9ffdb9513363cf2bbcf05ab0c3ee45fc895dc29003d622df749e5fa199e5e9b6",
+ "requestDigest": "c0460178e561c45076aed92a9b2cff61367e21c190d7aa6804c45969710af805",
"kind": "send",
"status": "failed",
"attempt": 1,
diff --git a/artifacts/verification/w6/states/failure-or-reconnect.png b/artifacts/verification/w6/states/failure-or-reconnect.png
index 58df31a..38a51e9 100644
Binary files a/artifacts/verification/w6/states/failure-or-reconnect.png and b/artifacts/verification/w6/states/failure-or-reconnect.png differ
diff --git a/artifacts/verification/w6/states/failure-or-reconnect.txt b/artifacts/verification/w6/states/failure-or-reconnect.txt
index 9d1e4e4..285a1d6 100644
--- a/artifacts/verification/w6/states/failure-or-reconnect.txt
+++ b/artifacts/verification/w6/states/failure-or-reconnect.txt
@@ -20,5 +20,5 @@
› new message
-─────────────── type / for commands · Alt+Enter newline · paste ────────────────
+─────────────────── type / for commands · Alt+Enter · paste ────────────────────
profile Braid starter · pi · via local failed · /activity details · /new
diff --git a/artifacts/verification/w6/states/fork-preview.json b/artifacts/verification/w6/states/fork-preview.json
index a34aba9..226652d 100644
--- a/artifacts/verification/w6/states/fork-preview.json
+++ b/artifacts/verification/w6/states/fork-preview.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 1,
- "frame": " fork preview workspace\n────────────────────────────────────────────────────────────────────────────────\n will create a new workspace from this source\n source: workspace:/workspace\n destination: workspace:/workspace-fork\n boundary: conv-1 / branch-1 → conv-fork-1 / branch-1\n profile snapshot: digest:fixture-source → digest:fixture-copy\n workspace state: checkpoint:fixture-1 → checkpoint:fixture-1\n operation id: operation-fixture-fork → operation-fixture-fork\n plan digest: digest:fixture-fork-plan → digest:fixture-fork-plan\n\n\n\n\n\n\n\n\n\n\n\n\n────────────────────────────────────────────────────────────────────────────────\n enter/y create fork · ←/esc cancel\n",
+ "frame": " fork preview workspace\n────────────────────────────────────────────────────────────────────────────────\n will create a new workspace from this source\n source: workspace:/workspace\n destination: workspace:/workspace-fork\n boundary: conv-1 / branch-1 → conv-fork-1 / branch-1\n profile snapshot: digest:fixture-source → digest:fixture-copy\n workspace state: checkpoint:fixture-1 → checkpoint:fixture-1\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n────────────────────────────────────────────────────────────────────────────────\n enter/y create fork · ←/esc cancel\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -276,10 +278,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -312,6 +334,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -343,12 +384,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -362,6 +403,10 @@
"kind": "workspace",
"source": "workspace:/workspace",
"destination": "workspace:/workspace-fork",
+ "execution": {
+ "operationId": "operation-fixture-fork",
+ "planDigest": "digest:fixture-fork-plan"
+ },
"fields": [
{
"label": "conversation context",
@@ -377,16 +422,6 @@
"label": "workspace state",
"source": "checkpoint:fixture-1",
"destination": "checkpoint:fixture-1"
- },
- {
- "label": "operation id",
- "source": "operation-fixture-fork",
- "destination": "operation-fixture-fork"
- },
- {
- "label": "plan digest",
- "source": "digest:fixture-fork-plan",
- "destination": "digest:fixture-fork-plan"
}
],
"allowed": true
@@ -400,7 +435,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/fork-preview.png b/artifacts/verification/w6/states/fork-preview.png
index 732ed69..0e22720 100644
Binary files a/artifacts/verification/w6/states/fork-preview.png and b/artifacts/verification/w6/states/fork-preview.png differ
diff --git a/artifacts/verification/w6/states/fork-preview.txt b/artifacts/verification/w6/states/fork-preview.txt
index 8f069ea..c06bef4 100644
--- a/artifacts/verification/w6/states/fork-preview.txt
+++ b/artifacts/verification/w6/states/fork-preview.txt
@@ -6,8 +6,8 @@
boundary: conv-1 / branch-1 → conv-fork-1 / branch-1
profile snapshot: digest:fixture-source → digest:fixture-copy
workspace state: checkpoint:fixture-1 → checkpoint:fixture-1
- operation id: operation-fixture-fork → operation-fixture-fork
- plan digest: digest:fixture-fork-plan → digest:fixture-fork-plan
+
+
diff --git a/artifacts/verification/w6/states/graph-or-analysis.json b/artifacts/verification/w6/states/graph-or-analysis.json
index 4cc6a50..2cf473f 100644
--- a/artifacts/verification/w6/states/graph-or-analysis.json
+++ b/artifacts/verification/w6/states/graph-or-analysis.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -276,10 +278,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -312,6 +334,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -343,12 +384,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -367,7 +408,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/graph-or-analysis.png b/artifacts/verification/w6/states/graph-or-analysis.png
index d574b81..4d61507 100644
Binary files a/artifacts/verification/w6/states/graph-or-analysis.png and b/artifacts/verification/w6/states/graph-or-analysis.png differ
diff --git a/artifacts/verification/w6/states/interaction.json b/artifacts/verification/w6/states/interaction.json
index 36b2b7c..b272f17 100644
--- a/artifacts/verification/w6/states/interaction.json
+++ b/artifacts/verification/w6/states/interaction.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -311,10 +313,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -347,6 +369,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -378,12 +419,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -402,7 +443,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/interaction.png b/artifacts/verification/w6/states/interaction.png
index 4ffd5f3..e3e15d8 100644
Binary files a/artifacts/verification/w6/states/interaction.png and b/artifacts/verification/w6/states/interaction.png differ
diff --git a/artifacts/verification/w6/states/multi-run.json b/artifacts/verification/w6/states/multi-run.json
new file mode 100644
index 0000000..afab88b
--- /dev/null
+++ b/artifacts/verification/w6/states/multi-run.json
@@ -0,0 +1,1469 @@
+{
+ "schemaVersion": 2,
+ "state": "multi-run",
+ "source": {
+ "binary": "packed real binary from clean npm install",
+ "binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
+ },
+ "dimensions": {
+ "columns": 80,
+ "rows": 24
+ },
+ "terminal": "node-pty/xterm-256color",
+ "provenance": {
+ "renderer": {
+ "package": "@earendil-works/pi-tui@0.84.4",
+ "pty": "node-pty@1.1.0",
+ "emulator": "@xterm/headless@6.0.0",
+ "node": "v24.18.0",
+ "terminal": "xterm-256color"
+ },
+ "raster": {
+ "agg": "agg 1.9.0",
+ "imagemagick": "Version: ImageMagick 6.9.12-98 Q16 x86_64 18038 https://legacy.imagemagick.org",
+ "fontFamily": "DejaVu Sans Mono",
+ "font": "DejaVu Sans Mono | Book | /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf",
+ "colorMode": "sRGB 8-bit"
+ }
+ },
+ "capturePhase": "atomic-signal-frame",
+ "captureRevision": 13,
+ "frame": " › parallel run B\n\n working…\n\n\n\n\n\n\n\n\n\n\n\n\n\n────────────────────────────────────────────────────────────────────────────────\n› queue #1\n\n\n─────────────────── type / for commands · Alt+Enter · paste ────────────────────\nprofile Braid starter · pi · via local Ctrl+C cancel\nfocus Parallel run A · running · pi/fixture/deterministic actions switch/cancel\nwork Parallel run B · running · pi/fixture/deterministic actions switch/cancel\n",
+ "packedState": {
+ "schemaVersion": 2,
+ "capturePhase": "atomic-signal-frame",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 13,
+ "sequence": 13,
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
+ "conversationId": "conversation-49353a16f1168ea8b6b606893066c212",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "title": "Parallel run A",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "archived": false,
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "conversation-49353a16f1168ea8b6b606893066c212",
+ "title": "Parallel run B",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "archived": false,
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid starter",
+ "description": "A portable starter profile for the Braid terminal",
+ "harness": "pi",
+ "model": {
+ "default": "fixture/deterministic",
+ "provider": "fixture",
+ "reasoningEffort": "none"
+ }
+ },
+ "runConfiguration": {
+ "profileName": "Braid starter",
+ "runner": "pi",
+ "model": "fixture/deterministic",
+ "effort": "none",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [
+ {
+ "id": "message-000007",
+ "role": "user",
+ "text": "parallel run B",
+ "status": "complete",
+ "runId": "run-000005",
+ "parts": [
+ {
+ "id": "part-message-000007",
+ "kind": "text",
+ "text": "parallel run B"
+ }
+ ]
+ },
+ {
+ "id": "message-000008",
+ "role": "assistant",
+ "text": "",
+ "status": "streaming",
+ "runId": "run-000005",
+ "parts": []
+ }
+ ],
+ "runs": [
+ {
+ "id": "run-000001",
+ "turnId": "turn-000002",
+ "operationId": "op-terminal-000003",
+ "status": "streaming",
+ "startedAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "fixture/deterministic",
+ "provider": "agent-runtime",
+ "runner": "pi",
+ "completeness": "incomplete",
+ "materializationDigest": "46c7162244a3aa789bd2703e2805a3faa0da1a87d83d97484fa26294a0b00671"
+ },
+ {
+ "id": "run-000005",
+ "turnId": "turn-000006",
+ "operationId": "op-terminal-000007",
+ "status": "streaming",
+ "startedAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z",
+ "inputTokens": 0,
+ "outputTokens": 0,
+ "tokensKnown": false,
+ "usdKnown": false,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "fixture/deterministic",
+ "provider": "agent-runtime",
+ "runner": "pi",
+ "completeness": "incomplete",
+ "materializationDigest": "46c7162244a3aa789bd2703e2805a3faa0da1a87d83d97484fa26294a0b00671"
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": "run-000001",
+ "focusedRunId": "run-000001",
+ "activeRuns": [
+ {
+ "runId": "run-000001",
+ "conversationId": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f"
+ },
+ {
+ "runId": "run-000005",
+ "conversationId": "conversation-49353a16f1168ea8b6b606893066c212",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212"
+ }
+ ],
+ "lastError": null
+ },
+ "view": {
+ "revision": 13,
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
+ "profileName": "Braid starter",
+ "profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
+ "runner": "pi",
+ "model": "fixture/deterministic",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "deterministic fixture",
+ "conversationId": "conversation-49353a16f1168ea8b6b606893066c212",
+ "conversationTitle": "Parallel run B",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": false,
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "title": "Parallel run A",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "archived": false,
+ "active": false,
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "conversation-49353a16f1168ea8b6b606893066c212",
+ "title": "Parallel run B",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ }
+ ],
+ "branch": "branch-49353a16f1168ea8b6b606893066c212",
+ "status": "running",
+ "statusText": "Opened Parallel run B",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [
+ {
+ "id": "message-000007",
+ "role": "user",
+ "text": "parallel run B",
+ "status": "complete",
+ "runId": "run-000005",
+ "parts": [
+ {
+ "id": "part-message-000007",
+ "kind": "text",
+ "text": "parallel run B"
+ }
+ ]
+ },
+ {
+ "id": "message-000008",
+ "role": "assistant",
+ "text": "",
+ "status": "streaming",
+ "runId": "run-000005",
+ "parts": []
+ }
+ ],
+ "hiddenMessageCount": 0,
+ "runs": [
+ {
+ "id": "run-000001",
+ "turnId": "turn-000002",
+ "conversationId": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "operationId": "op-terminal-000003",
+ "status": "running",
+ "profileName": "Braid starter",
+ "profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
+ "model": "fixture/deterministic",
+ "effort": "none",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "fixture/deterministic"
+ },
+ "runner": "pi",
+ "provider": "agent-runtime",
+ "completeness": "incomplete"
+ },
+ {
+ "id": "run-000005",
+ "turnId": "turn-000006",
+ "conversationId": "conversation-49353a16f1168ea8b6b606893066c212",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "operationId": "op-terminal-000007",
+ "status": "running",
+ "profileName": "Braid starter",
+ "profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
+ "model": "fixture/deterministic",
+ "effort": "none",
+ "usage": {
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "model": "fixture/deterministic"
+ },
+ "runner": "pi",
+ "provider": "agent-runtime",
+ "completeness": "incomplete"
+ }
+ ],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 1,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 1,
+ "unknownCostSources": 1,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 1,
+ "unknownLatencySources": 1
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [],
+ "activeRunId": "run-000005",
+ "focusedRunId": "run-000001",
+ "workStrip": [
+ {
+ "id": "run-000001",
+ "runId": "run-000001",
+ "conversationId": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "label": "Parallel run A",
+ "state": "running",
+ "runner": "pi",
+ "model": "fixture/deterministic",
+ "interactionCount": 0,
+ "focused": true,
+ "actions": {
+ "switch": true,
+ "ask": false,
+ "steer": false,
+ "cancel": true
+ }
+ },
+ {
+ "id": "run-000005",
+ "runId": "run-000005",
+ "conversationId": "conversation-49353a16f1168ea8b6b606893066c212",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "label": "Parallel run B",
+ "state": "running",
+ "runner": "pi",
+ "model": "fixture/deterministic",
+ "interactionCount": 0,
+ "focused": false,
+ "actions": {
+ "switch": true,
+ "ask": false,
+ "steer": false,
+ "cancel": true
+ }
+ }
+ ],
+ "interactions": [],
+ "activity": [
+ {
+ "id": "run:run-000001",
+ "kind": "run",
+ "title": "run run-000001",
+ "status": "running",
+ "startedAt": "2026-08-01T00:00:00.000Z",
+ "occurredAt": "2026-08-01T00:00:00.000Z",
+ "runId": "run-000001",
+ "entityType": "run",
+ "entityId": "run-000001"
+ },
+ {
+ "id": "run:run-000005",
+ "kind": "run",
+ "title": "run run-000005",
+ "status": "running",
+ "startedAt": "2026-08-01T00:00:00.000Z",
+ "occurredAt": "2026-08-01T00:00:00.000Z",
+ "runId": "run-000005",
+ "entityType": "run",
+ "entityId": "run-000005"
+ },
+ {
+ "id": "activity:run-000001:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "running",
+ "detail": "profile 44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
+ "occurredAt": "2026-08-01T00:00:00.000Z",
+ "runId": "run-000001",
+ "entityType": "run",
+ "entityId": "run-000001"
+ },
+ {
+ "id": "activity:run-000005:admission:local:admitted",
+ "kind": "system",
+ "title": "admitted",
+ "status": "running",
+ "detail": "profile 44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
+ "occurredAt": "2026-08-01T00:00:00.000Z",
+ "runId": "run-000005",
+ "entityType": "run",
+ "entityId": "run-000005"
+ },
+ {
+ "id": "event:run-000001:run-000001:runtime:1",
+ "kind": "system",
+ "title": "event backend_start",
+ "status": "running",
+ "detail": "sequence 1",
+ "occurredAt": "2026-08-30T01:58:03.141Z",
+ "sourceEventId": "run-000001:runtime:1",
+ "runId": "run-000001",
+ "entityType": "run",
+ "entityId": "run-000001"
+ },
+ {
+ "id": "event:run-000005:run-000005:runtime:1",
+ "kind": "system",
+ "title": "event backend_start",
+ "status": "running",
+ "detail": "sequence 1",
+ "occurredAt": "2026-08-30T01:58:03.268Z",
+ "sourceEventId": "run-000005:runtime:1",
+ "runId": "run-000005",
+ "entityType": "run",
+ "entityId": "run-000005"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "conversation-49353a16f1168ea8b6b606893066c212",
+ "type": "conversation",
+ "title": "Parallel run B",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "type": "conversation",
+ "title": "Parallel run A",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "branch-49353a16f1168ea8b6b606893066c212",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conversation-49353a16f1168ea8b6b606893066c212"
+ ],
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conversation-6c0cbb8ae9e7767948f265cb2813ae4f"
+ ],
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "turn-000002",
+ "type": "turn",
+ "title": "Turn",
+ "status": "running",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-6c0cbb8ae9e7767948f265cb2813ae4f"
+ ],
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "turn-000006",
+ "type": "turn",
+ "title": "Turn",
+ "status": "running",
+ "depth": 2,
+ "edgeLabel": "continued",
+ "parentIds": [
+ "branch:branch-49353a16f1168ea8b6b606893066c212"
+ ],
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "run-000001",
+ "type": "run",
+ "title": "Run",
+ "status": "running",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-000002"
+ ],
+ "runner": "pi",
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "run-000005",
+ "type": "run",
+ "title": "Run",
+ "status": "running",
+ "depth": 3,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "turn:turn-000006"
+ ],
+ "runner": "pi",
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [],
+ "details": {
+ "title": "run run-000005",
+ "fields": [
+ {
+ "label": "status",
+ "value": "streaming"
+ },
+ {
+ "label": "input tokens",
+ "value": "0"
+ },
+ {
+ "label": "output tokens",
+ "value": "0"
+ },
+ {
+ "label": "model",
+ "value": "fixture/deterministic"
+ }
+ ]
+ },
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": false,
+ "source": "application",
+ "reason": "A run is already active"
+ },
+ "run.cancel": {
+ "available": true,
+ "source": "runtime"
+ },
+ "run.queue": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report steering support"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "The current runtime does not report detach support"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect while another run is active"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile while another run is active"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "transcript",
+ "appearance": {
+ "color": "256",
+ "highContrast": false,
+ "reducedMotion": false
+ },
+ "notice": "Opened Parallel run B"
+ },
+ "events": [
+ {
+ "sequence": 1,
+ "revision": 1,
+ "kind": "workspace.opened",
+ "payload": {
+ "value": {
+ "kind": "workspace.opened",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
+ }
+ }
+ },
+ {
+ "sequence": 2,
+ "revision": 2,
+ "kind": "conversation.created",
+ "payload": {
+ "value": {
+ "kind": "conversation.created",
+ "conversation": {
+ "id": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "workspaceId": "workspace-be037a6b8302c022d4bca830530e52c1",
+ "title": "Parallel run A",
+ "activeBranchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z",
+ "archived": false,
+ "retention": {}
+ },
+ "branch": {
+ "id": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "conversationId": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "overrides": {},
+ "draftId": "draft-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "queueId": "queue-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "status": "active",
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "draft": {
+ "id": "draft-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "text": "",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "queue": {
+ "id": "queue-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "entryIds": [],
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "graphNodes": [
+ {
+ "id": "node-6a9f53c45c65faef566b32577b169d8c",
+ "reference": {
+ "kind": "workspace",
+ "id": "workspace-be037a6b8302c022d4bca830530e52c1"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "node-26dee7711c6c59ace4d21f29e41397a5",
+ "reference": {
+ "kind": "conversation",
+ "id": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f"
+ },
+ "title": "Parallel run A",
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "node-857c89d27ba47eab4298054453e9afaa",
+ "reference": {
+ "kind": "branch",
+ "id": "branch-6c0cbb8ae9e7767948f265cb2813ae4f"
+ },
+ "title": "Main",
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ }
+ ],
+ "graphEdges": [
+ {
+ "id": "edge-49beea1c78a305d07822395d5890e101",
+ "kind": "attached",
+ "source": "node-6a9f53c45c65faef566b32577b169d8c",
+ "destination": "node-26dee7711c6c59ace4d21f29e41397a5",
+ "provenance": {
+ "operationId": "op-terminal-000001"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "edge-7e1da773fdf9becb0506a97734149419",
+ "kind": "attached",
+ "source": "node-26dee7711c6c59ace4d21f29e41397a5",
+ "destination": "node-857c89d27ba47eab4298054453e9afaa",
+ "provenance": {
+ "operationId": "op-terminal-000001"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z"
+ }
+ ],
+ "operation": {
+ "id": "op-terminal-000001",
+ "kind": "conversation-create",
+ "requestDigest": "cdb77c902eafa15eeed4035372d3bf99d111ac90878bb269d9f9f57209b8cdda",
+ "status": "acknowledged",
+ "target": {
+ "kind": "conversation",
+ "id": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z",
+ "acknowledgedAt": "2026-08-01T00:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 3,
+ "revision": 3,
+ "kind": "draft.recorded",
+ "payload": {
+ "value": {
+ "kind": "draft.recorded",
+ "draft": {
+ "id": "draft-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "text": "parallel run A",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "operation": {
+ "id": "op-terminal-000002",
+ "kind": "draft-update",
+ "requestDigest": "a142ff7c1fca9c459283009fd8ebbb7e9b111d1cd749455f2741304f8ff21f79",
+ "status": "acknowledged",
+ "target": {
+ "kind": "branch",
+ "id": "branch-6c0cbb8ae9e7767948f265cb2813ae4f"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z",
+ "acknowledgedAt": "2026-08-01T00:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 4,
+ "revision": 4,
+ "kind": "run.requested",
+ "payload": {
+ "runId": "run-000001",
+ "text": "parallel run A",
+ "admission": {
+ "version": 1,
+ "runId": "run-000001",
+ "turnId": "turn-000002",
+ "operationId": "op-terminal-000003",
+ "conversationId": "conversation-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "admittedAt": "2026-08-01T00:00:00.000Z",
+ "profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
+ "requested": {
+ "text": "parallel run A",
+ "profile": {
+ "name": "Braid starter",
+ "description": "A portable starter profile for the Braid terminal",
+ "model": {
+ "default": "fixture/deterministic",
+ "provider": "fixture",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "interactions": {},
+ "model": "fixture/deterministic",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": false,
+ "detach": false,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": false,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": false,
+ "recreate": false
+ },
+ "events": {
+ "stableIdentity": false,
+ "sequence": true,
+ "cursor": false
+ },
+ "usage": true
+ },
+ "provider": "agent-runtime",
+ "materializationReceipt": {
+ "backendKind": "executor",
+ "provider": "agent-runtime"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "37e790075b9fd569b5f56e849546b7f5e8a1aaa8c2fbcdeef0b2f6eac1e9502c",
+ "capabilitiesDigest": "93c4c21593f9e2fa1fe68ce73da84f48c173f1e13269633678b512a16a81a001",
+ "materializationDigest": "46c7162244a3aa789bd2703e2805a3faa0da1a87d83d97484fa26294a0b00671",
+ "digest": "882355c7ccbe10673ef9490a4ae247eea67b3588a7f5bb3fedbe1b70a4dd7be8"
+ },
+ "status": "admitted"
+ }
+ },
+ {
+ "sequence": 5,
+ "revision": 5,
+ "kind": "effect.upserted",
+ "payload": {
+ "value": {
+ "kind": "effect.upserted",
+ "effect": {
+ "id": "effect-op-terminal-000003-79b2d49a4aad62b645583454",
+ "operationId": "op-terminal-000003",
+ "effectKind": "run.execute",
+ "requestDigest": "79b2d49a4aad62b64558345446e2d7a0fe48eb5a34e381e53d66eb4c898e33a1",
+ "kind": "send",
+ "status": "pending",
+ "attempt": 1,
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 6,
+ "revision": 6,
+ "kind": "run.provider.event",
+ "payload": {
+ "runId": "run-000001",
+ "source": {
+ "eventId": "run-000001:runtime:1",
+ "providerSequence": 1,
+ "occurredAt": "2026-08-30T01:58:03.141Z",
+ "receivedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "unknown": {
+ "type": "backend_start",
+ "task": {
+ "id": "turn-a8fcedf4-bd3b-4e88-ae0f-7784309212f1",
+ "intent": "parallel run A",
+ "metadata": {
+ "identity": {
+ "profileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
+ "taskDigest": "sha256:29b06cc3c7f6ead823c53b926ab081cee481f36e1caf54c982de49e376019141"
+ }
+ }
+ },
+ "session": {
+ "id": "7a10e607-7699-4004-9168-19382d7feaeb",
+ "backend": "executor",
+ "status": "active",
+ "createdAt": "2026-08-30T01:58:03.141Z",
+ "updatedAt": "2026-08-30T01:58:03.141Z",
+ "metadata": "[unavailable]"
+ },
+ "backend": "router",
+ "metadata": {
+ "identity": {
+ "profileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
+ "taskDigest": "sha256:29b06cc3c7f6ead823c53b926ab081cee481f36e1caf54c982de49e376019141"
+ },
+ "materialization": {
+ "status": "known",
+ "authoredProfileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
+ "effectiveProfileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
+ "materializationPlanDigest": "sha256:a5b3379719400534a3c394e89e6822ba88632b2583f080635b5a0a119d959f5f",
+ "runtime": "router",
+ "backend": "router",
+ "model": {
+ "status": "known",
+ "id": "fixture/deterministic"
+ },
+ "execution": {
+ "kind": "request",
+ "id": "turn-a8fcedf4-bd3b-4e88-ae0f-7784309212f1"
+ },
+ "materializer": "router-prompt-model"
+ },
+ "executionBindings": [
+ {
+ "status": "known",
+ "attemptId": "turn-a8fcedf4-bd3b-4e88-ae0f-7784309212f1:attempt:be27921d-5198-4326-979d-996ea5f15b04",
+ "materializationReceiptDigest": "sha256:9e855de0de9b097835e9c6b9048e2bd1964362dbb3077b92506cbf8862823fda",
+ "bindingDigest": "sha256:c90e53d433c5157051e42f9fff6fd2eee9336fe1b22979d89763026f389306b8",
+ "descriptor": {
+ "kind": "router-request",
+ "transport": "http",
+ "backend": "router"
+ }
+ }
+ ],
+ "budget": {
+ "timeoutMs": null
+ },
+ "timing": {
+ "startedAt": "2026-08-30T01:58:03.138Z"
+ }
+ },
+ "timestamp": "2026-08-30T01:58:03.141Z"
+ }
+ }
+ },
+ {
+ "sequence": 7,
+ "revision": 7,
+ "kind": "draft.recorded",
+ "payload": {
+ "value": {
+ "kind": "draft.recorded",
+ "draft": {
+ "id": "draft-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "branchId": "branch-6c0cbb8ae9e7767948f265cb2813ae4f",
+ "text": "",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "operation": {
+ "id": "op-terminal-000004",
+ "kind": "draft-update",
+ "requestDigest": "37674e2fe0396c72c554c5fa69b387892f63ac3d6f38c3b96c58bdd383e69cb8",
+ "status": "acknowledged",
+ "target": {
+ "kind": "branch",
+ "id": "branch-6c0cbb8ae9e7767948f265cb2813ae4f"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z",
+ "acknowledgedAt": "2026-08-01T00:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 8,
+ "revision": 8,
+ "kind": "conversation.created",
+ "payload": {
+ "value": {
+ "kind": "conversation.created",
+ "conversation": {
+ "id": "conversation-49353a16f1168ea8b6b606893066c212",
+ "workspaceId": "workspace-be037a6b8302c022d4bca830530e52c1",
+ "title": "Parallel run B",
+ "activeBranchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z",
+ "archived": false,
+ "retention": {}
+ },
+ "branch": {
+ "id": "branch-49353a16f1168ea8b6b606893066c212",
+ "conversationId": "conversation-49353a16f1168ea8b6b606893066c212",
+ "overrides": {},
+ "draftId": "draft-49353a16f1168ea8b6b606893066c212",
+ "queueId": "queue-49353a16f1168ea8b6b606893066c212",
+ "status": "active",
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "draft": {
+ "id": "draft-49353a16f1168ea8b6b606893066c212",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "text": "",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "queue": {
+ "id": "queue-49353a16f1168ea8b6b606893066c212",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "entryIds": [],
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "graphNodes": [
+ {
+ "id": "node-6a9f53c45c65faef566b32577b169d8c",
+ "reference": {
+ "kind": "workspace",
+ "id": "workspace-be037a6b8302c022d4bca830530e52c1"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "node-765e1dc30a51370eb2757cd0b376e16f",
+ "reference": {
+ "kind": "conversation",
+ "id": "conversation-49353a16f1168ea8b6b606893066c212"
+ },
+ "title": "Parallel run B",
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "node-9064f1ddad6f290ac62da38e5fdc6b82",
+ "reference": {
+ "kind": "branch",
+ "id": "branch-49353a16f1168ea8b6b606893066c212"
+ },
+ "title": "Main",
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ }
+ ],
+ "graphEdges": [
+ {
+ "id": "edge-1241dd80b3cb7233f185332afe576101",
+ "kind": "attached",
+ "source": "node-6a9f53c45c65faef566b32577b169d8c",
+ "destination": "node-765e1dc30a51370eb2757cd0b376e16f",
+ "provenance": {
+ "operationId": "op-terminal-000005"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "edge-672b8ceccf1a1dd96e6259a1bb3d65a8",
+ "kind": "attached",
+ "source": "node-765e1dc30a51370eb2757cd0b376e16f",
+ "destination": "node-9064f1ddad6f290ac62da38e5fdc6b82",
+ "provenance": {
+ "operationId": "op-terminal-000005"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z"
+ }
+ ],
+ "operation": {
+ "id": "op-terminal-000005",
+ "kind": "conversation-create",
+ "requestDigest": "4ce45e42fa1e3c2d721fca76d691ccb879a1469360d3b7bd187a74f9ec506617",
+ "status": "acknowledged",
+ "target": {
+ "kind": "conversation",
+ "id": "conversation-49353a16f1168ea8b6b606893066c212"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z",
+ "acknowledgedAt": "2026-08-01T00:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 9,
+ "revision": 9,
+ "kind": "draft.recorded",
+ "payload": {
+ "value": {
+ "kind": "draft.recorded",
+ "draft": {
+ "id": "draft-49353a16f1168ea8b6b606893066c212",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "text": "parallel run B",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "operation": {
+ "id": "op-terminal-000006",
+ "kind": "draft-update",
+ "requestDigest": "61e47e44289efb417684b82ac84045d5c950ca32370fafb108ad5ddb773d3994",
+ "status": "acknowledged",
+ "target": {
+ "kind": "branch",
+ "id": "branch-49353a16f1168ea8b6b606893066c212"
+ },
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z",
+ "acknowledgedAt": "2026-08-01T00:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 10,
+ "revision": 10,
+ "kind": "run.requested",
+ "payload": {
+ "runId": "run-000005",
+ "text": "parallel run B",
+ "admission": {
+ "version": 1,
+ "runId": "run-000005",
+ "turnId": "turn-000006",
+ "operationId": "op-terminal-000007",
+ "conversationId": "conversation-49353a16f1168ea8b6b606893066c212",
+ "branchId": "branch-49353a16f1168ea8b6b606893066c212",
+ "admittedAt": "2026-08-01T00:00:00.000Z",
+ "profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
+ "requested": {
+ "text": "parallel run B",
+ "profile": {
+ "name": "Braid starter",
+ "description": "A portable starter profile for the Braid terminal",
+ "model": {
+ "default": "fixture/deterministic",
+ "provider": "fixture",
+ "reasoningEffort": "none"
+ },
+ "harness": "pi"
+ },
+ "interactions": {},
+ "model": "fixture/deterministic",
+ "runner": "pi"
+ },
+ "capabilities": {
+ "streaming": {
+ "live": true,
+ "replay": false,
+ "detach": false,
+ "turnIdempotency": true
+ },
+ "sessions": {
+ "continue": false,
+ "messages": false
+ },
+ "controls": {
+ "cancel": true,
+ "steer": false,
+ "queue": true,
+ "status": false,
+ "recreate": false
+ },
+ "events": {
+ "stableIdentity": false,
+ "sequence": true,
+ "cursor": false
+ },
+ "usage": true
+ },
+ "provider": "agent-runtime",
+ "materializationReceipt": {
+ "backendKind": "executor",
+ "provider": "agent-runtime"
+ },
+ "admissionStatus": "admitted",
+ "requestDigest": "48e0f7b01ff3d4bc698e8fe97b2e7535897ff43d56fb99f85c5cdafa872e7ed8",
+ "capabilitiesDigest": "93c4c21593f9e2fa1fe68ce73da84f48c173f1e13269633678b512a16a81a001",
+ "materializationDigest": "46c7162244a3aa789bd2703e2805a3faa0da1a87d83d97484fa26294a0b00671",
+ "digest": "25fe1a4669c0d861a033a3eb6e2b9f90ae1698704b2ae91a87b54b6ed869b444"
+ },
+ "status": "admitted"
+ }
+ },
+ {
+ "sequence": 11,
+ "revision": 11,
+ "kind": "effect.upserted",
+ "payload": {
+ "value": {
+ "kind": "effect.upserted",
+ "effect": {
+ "id": "effect-op-terminal-000007-6757484690c01b7277d46c20",
+ "operationId": "op-terminal-000007",
+ "effectKind": "run.execute",
+ "requestDigest": "6757484690c01b7277d46c20bd44af799c930e57d03a98ef3bd1b46156fb91f9",
+ "kind": "send",
+ "status": "pending",
+ "attempt": 1,
+ "createdAt": "2026-08-01T00:00:00.000Z",
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 12,
+ "revision": 12,
+ "kind": "run.provider.event",
+ "payload": {
+ "runId": "run-000005",
+ "source": {
+ "eventId": "run-000005:runtime:1",
+ "providerSequence": 1,
+ "occurredAt": "2026-08-30T01:58:03.268Z",
+ "receivedAt": "2026-08-01T00:00:00.000Z"
+ },
+ "unknown": {
+ "type": "backend_start",
+ "task": {
+ "id": "turn-23000207-32cf-45ab-9488-df6edf8337f3",
+ "intent": "parallel run B",
+ "metadata": {
+ "identity": {
+ "profileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
+ "taskDigest": "sha256:801a14bb18c4b9ad67661b55bf931af4b36a7ad152688a768bdf0c04e40358a2"
+ }
+ }
+ },
+ "session": {
+ "id": "c9e406fb-af74-472e-835f-83c1cf78ef5d",
+ "backend": "executor",
+ "status": "active",
+ "createdAt": "2026-08-30T01:58:03.268Z",
+ "updatedAt": "2026-08-30T01:58:03.268Z",
+ "metadata": "[unavailable]"
+ },
+ "backend": "router",
+ "metadata": {
+ "identity": {
+ "profileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
+ "taskDigest": "sha256:801a14bb18c4b9ad67661b55bf931af4b36a7ad152688a768bdf0c04e40358a2"
+ },
+ "materialization": {
+ "status": "known",
+ "authoredProfileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
+ "effectiveProfileDigest": "sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983",
+ "materializationPlanDigest": "sha256:a5b3379719400534a3c394e89e6822ba88632b2583f080635b5a0a119d959f5f",
+ "runtime": "router",
+ "backend": "router",
+ "model": {
+ "status": "known",
+ "id": "fixture/deterministic"
+ },
+ "execution": {
+ "kind": "request",
+ "id": "turn-23000207-32cf-45ab-9488-df6edf8337f3"
+ },
+ "materializer": "router-prompt-model"
+ },
+ "executionBindings": [
+ {
+ "status": "known",
+ "attemptId": "turn-23000207-32cf-45ab-9488-df6edf8337f3:attempt:4290bf6f-85cf-40d7-aeda-6f920578c0d4",
+ "materializationReceiptDigest": "sha256:343a02ff36c079dfad464e13e6bf10dd695424d201bb9f127cfba056a513ace3",
+ "bindingDigest": "sha256:5083d635049e5a0179ef2638cedecc1910a2c5ebab96a6f973bf3ca565eeefaa",
+ "descriptor": {
+ "kind": "router-request",
+ "transport": "http",
+ "backend": "router"
+ }
+ }
+ ],
+ "budget": {
+ "timeoutMs": null
+ },
+ "timing": {
+ "startedAt": "2026-08-30T01:58:03.268Z"
+ }
+ },
+ "timestamp": "2026-08-30T01:58:03.268Z"
+ }
+ }
+ },
+ {
+ "sequence": 13,
+ "revision": 13,
+ "kind": "run.focused",
+ "payload": {
+ "runId": "run-000001",
+ "value": {
+ "kind": "run.focused",
+ "runId": "run-000001"
+ }
+ }
+ }
+ ]
+ }
+}
diff --git a/artifacts/verification/w6/states/multi-run.png b/artifacts/verification/w6/states/multi-run.png
new file mode 100644
index 0000000..572ca8e
Binary files /dev/null and b/artifacts/verification/w6/states/multi-run.png differ
diff --git a/artifacts/verification/w6/states/multi-run.txt b/artifacts/verification/w6/states/multi-run.txt
new file mode 100644
index 0000000..b584e1f
--- /dev/null
+++ b/artifacts/verification/w6/states/multi-run.txt
@@ -0,0 +1,24 @@
+ › parallel run B
+
+ working…
+
+
+
+
+
+
+
+
+
+
+
+
+
+────────────────────────────────────────────────────────────────────────────────
+› queue #1
+
+
+─────────────────── type / for commands · Alt+Enter · paste ────────────────────
+profile Braid starter · pi · via local Ctrl+C cancel
+focus Parallel run A · running · pi/fixture/deterministic actions switch/cancel
+work Parallel run B · running · pi/fixture/deterministic actions switch/cancel
diff --git a/artifacts/verification/w6/states/narrow.json b/artifacts/verification/w6/states/narrow.json
index 59d9464..40eca5f 100644
--- a/artifacts/verification/w6/states/narrow.json
+++ b/artifacts/verification/w6/states/narrow.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 40,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 1,
- "frame": "\n\n\n\n Ask Braid starter anything.\n\n────────────────────────────────────────\n› new message\n\n\n type / for commands · Alt+Enter newlin…\nBraid starter\n",
+ "frame": "\n\n\n\n Ask Braid starter anything.\n\n────────────────────────────────────────\n› new message\n\n\n─── type / for commands · Alt+Enter ────\nBraid starter\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -276,10 +278,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -312,6 +334,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -343,12 +384,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -367,7 +408,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/narrow.png b/artifacts/verification/w6/states/narrow.png
index a7b4c6c..e93f2f2 100644
Binary files a/artifacts/verification/w6/states/narrow.png and b/artifacts/verification/w6/states/narrow.png differ
diff --git a/artifacts/verification/w6/states/narrow.txt b/artifacts/verification/w6/states/narrow.txt
index 436119d..d4fb0c1 100644
--- a/artifacts/verification/w6/states/narrow.txt
+++ b/artifacts/verification/w6/states/narrow.txt
@@ -8,5 +8,5 @@
› new message
- type / for commands · Alt+Enter newlin…
+─── type / for commands · Alt+Enter ────
Braid starter
diff --git a/artifacts/verification/w6/states/profile.json b/artifacts/verification/w6/states/profile.json
index 6de005b..50d28fa 100644
--- a/artifacts/verification/w6/states/profile.json
+++ b/artifacts/verification/w6/states/profile.json
@@ -4,8 +4,8 @@
"source": {
"binary": "packed real binary from clean npm install",
"binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
- "tarball": "tangle-network-braid-0.2.0.tgz",
- "tarballSha256": "50e56ffd482a1cdd0ecd6c2a9630a4d9171fe8bacee35cfdbc58977695e815b1"
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
},
"dimensions": {
"columns": 80,
@@ -14,10 +14,10 @@
"terminal": "node-pty/xterm-256color",
"provenance": {
"renderer": {
- "package": "@earendil-works/pi-tui@0.84.2",
+ "package": "@earendil-works/pi-tui@0.84.4",
"pty": "node-pty@1.1.0",
"emulator": "@xterm/headless@6.0.0",
- "node": "v24.13.0",
+ "node": "v24.18.0",
"terminal": "xterm-256color"
},
"raster": {
@@ -30,7 +30,7 @@
},
"capturePhase": "atomic-signal-frame",
"captureRevision": 1,
- "frame": "\n\n\n\n\n\n\n\n\n Braid starter\n trusted · read-only\n runner pi · model fixture/deterministic\n thinking none · limits provider default\n digest sha256:44ed91c9…8cfa0a14\n ←/esc close\n",
+ "frame": " profile\n────────────────────────────────────────────────────────────────────────────────\n Braid starter\n trusted · read-only\n runner pi · model fixture/deterministic\n thinking none · limits provider default\n digest sha256:44ed91c9…8cfa0a14\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n────────────────────────────────────────────────────────────────────────────────\n ←/esc close\n",
"packedState": {
"schemaVersion": 2,
"capturePhase": "atomic-signal-frame",
@@ -38,7 +38,7 @@
"schemaVersion": 2,
"revision": 1,
"sequence": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"conversationId": "conv-1",
"branchId": "branch-1",
"conversations": [
@@ -116,11 +116,13 @@
"interactions": [],
"queue": [],
"activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
"lastError": null
},
"view": {
"revision": 1,
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
"profileName": "Braid starter",
"profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
"runner": "pi",
@@ -276,10 +278,30 @@
"source": "application",
"reason": "Interaction automation requires the shared response contract"
},
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
"export.create": {
"available": true,
"source": "application"
},
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
"application.quit": {
"available": true,
"source": "local"
@@ -312,6 +334,25 @@
"available": true,
"source": "local"
},
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to steer"
+ },
+ "supervisor.worker.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervised worker to cancel"
+ },
+ "supervisor.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no running supervisor to cancel"
+ },
"draft.write": {
"available": true,
"source": "application"
@@ -343,12 +384,12 @@
"run.reconnect": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconnect"
+ "reason": "There is no recoverable run to reconnect"
},
"run.reconcile": {
"available": false,
"source": "provider",
- "reason": "There is no detached run to reconcile"
+ "reason": "There is no recoverable run to reconcile"
}
},
"draft": "",
@@ -367,7 +408,7 @@
"payload": {
"value": {
"kind": "workspace.opened",
- "workspace": "/home/drew/code/.worktrees/braid-exact-interactive-20260816"
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
}
}
}
diff --git a/artifacts/verification/w6/states/profile.png b/artifacts/verification/w6/states/profile.png
index f6aee72..08a8e76 100644
Binary files a/artifacts/verification/w6/states/profile.png and b/artifacts/verification/w6/states/profile.png differ
diff --git a/artifacts/verification/w6/states/profile.txt b/artifacts/verification/w6/states/profile.txt
index 30b0cd7..f33778b 100644
--- a/artifacts/verification/w6/states/profile.txt
+++ b/artifacts/verification/w6/states/profile.txt
@@ -1,3 +1,10 @@
+ profile
+────────────────────────────────────────────────────────────────────────────────
+ Braid starter
+ trusted · read-only
+ runner pi · model fixture/deterministic
+ thinking none · limits provider default
+ digest sha256:44ed91c9…8cfa0a14
@@ -7,9 +14,11 @@
- Braid starter
- trusted · read-only
- runner pi · model fixture/deterministic
- thinking none · limits provider default
- digest sha256:44ed91c9…8cfa0a14
- ←/esc close
+
+
+
+
+
+
+────────────────────────────────────────────────────────────────────────────────
+ ←/esc close
diff --git a/artifacts/verification/w6/states/supervision.json b/artifacts/verification/w6/states/supervision.json
new file mode 100644
index 0000000..23d06d2
--- /dev/null
+++ b/artifacts/verification/w6/states/supervision.json
@@ -0,0 +1,843 @@
+{
+ "schemaVersion": 2,
+ "state": "supervision",
+ "source": {
+ "binary": "packed real binary from clean npm install",
+ "binarySha256": "141288e0fe917635d723b4b70d464dc49baff14cc356f54de1d3f8faa5d8254f",
+ "tarball": "tangle-network-braid-0.3.0.tgz",
+ "tarballSha256": "7945e73863a9cd764dd4d80a258af49faff0233718162e89e7d731e5b342add7"
+ },
+ "dimensions": {
+ "columns": 80,
+ "rows": 24
+ },
+ "terminal": "node-pty/xterm-256color",
+ "provenance": {
+ "renderer": {
+ "package": "@earendil-works/pi-tui@0.84.4",
+ "pty": "node-pty@1.1.0",
+ "emulator": "@xterm/headless@6.0.0",
+ "node": "v24.18.0",
+ "terminal": "xterm-256color"
+ },
+ "raster": {
+ "agg": "agg 1.9.0",
+ "imagemagick": "Version: ImageMagick 6.9.12-98 Q16 x86_64 18038 https://legacy.imagemagick.org",
+ "fontFamily": "DejaVu Sans Mono",
+ "font": "DejaVu Sans Mono | Book | /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf",
+ "colorMode": "sRGB 8-bit"
+ }
+ },
+ "capturePhase": "atomic-signal-frame",
+ "captureRevision": 12,
+ "frame": " workers · 4\n────────────────────────────────────────────────────────────────────────────────\n › └ ● release review · worker · running · 1.2s\n └ ● terminal proof · worker · running · 3.1s\n └ ● stream and replay · worker · running · 4.2s\n ● prove the Braid release · supervisor · running · 6.2s\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n────────────────────────────────────────────────────────────────────────────────\n ↑↓ move · enter/→ open · ←/esc close · s steer · x cancel · a/r\n",
+ "packedState": {
+ "schemaVersion": 2,
+ "capturePhase": "atomic-signal-frame",
+ "state": {
+ "schemaVersion": 2,
+ "revision": 12,
+ "sequence": 12,
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
+ "conversationId": "conv-1",
+ "branchId": "branch-1",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ }
+ ],
+ "profile": {
+ "name": "Braid starter",
+ "description": "A portable starter profile for the Braid terminal",
+ "harness": "pi",
+ "model": {
+ "default": "fixture/deterministic",
+ "provider": "fixture",
+ "reasoningEffort": "none"
+ }
+ },
+ "runConfiguration": {
+ "profileName": "Braid starter",
+ "runner": "pi",
+ "model": "fixture/deterministic",
+ "effort": "none",
+ "overrides": {}
+ },
+ "draft": "",
+ "messages": [],
+ "runs": [],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [],
+ "interactions": [],
+ "queue": [],
+ "activeRunId": null,
+ "focusedRunId": null,
+ "activeRuns": [],
+ "lastError": null
+ },
+ "view": {
+ "revision": 12,
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
+ "profileName": "Braid starter",
+ "profileDigest": "44ed91c937fd4079fe01c49f6bc76413656886e5aa8b2351590d3a888cfa0a14",
+ "runner": "pi",
+ "model": "fixture/deterministic",
+ "effort": "none",
+ "runOverrides": {},
+ "connection": "deterministic fixture",
+ "conversationId": "conv-1",
+ "conversationTitle": "New conversation",
+ "conversations": [
+ {
+ "id": "conv-1",
+ "title": "New conversation",
+ "branchId": "branch-1",
+ "archived": false,
+ "active": true,
+ "updatedAt": "2026-08-01T00:00:00.000Z"
+ }
+ ],
+ "branch": "branch-1",
+ "status": "empty",
+ "statusText": "ready for a message",
+ "queueCount": 0,
+ "queue": [],
+ "messages": [],
+ "hiddenMessageCount": 0,
+ "runs": [],
+ "sessionUsage": {
+ "turns": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "analyses": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "delegated": {
+ "sourceCount": 0,
+ "input": 0,
+ "output": 0,
+ "tokenStatus": "unknown",
+ "costStatus": "unknown",
+ "unknownTokenSources": 0,
+ "unknownCostSources": 0,
+ "callStatus": "unknown",
+ "latencyStatus": "unknown",
+ "unknownCallSources": 0,
+ "unknownLatencySources": 0
+ },
+ "attribution": "complete"
+ },
+ "environments": [],
+ "interactions": [],
+ "activity": [
+ {
+ "id": "supervisor:supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "kind": "supervisor",
+ "title": "prove the Braid release",
+ "status": "running",
+ "elapsedMs": 6200,
+ "startedAt": "2026-08-28T19:59:53.800Z",
+ "occurredAt": "2026-08-28T20:00:00.000Z",
+ "entityType": "supervisor",
+ "entityId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "depth": 0
+ },
+ {
+ "id": "worker:worker-runtime-b1864da9f9a7c3cc04f70aed544514566797a1f7",
+ "kind": "worker",
+ "title": "stream and replay",
+ "status": "running",
+ "detail": "stream and replay: working",
+ "elapsedMs": 4200,
+ "startedAt": "2026-08-28T19:59:55.800Z",
+ "occurredAt": "2026-08-28T20:00:00.000Z",
+ "entityType": "worker",
+ "entityId": "worker-runtime-b1864da9f9a7c3cc04f70aed544514566797a1f7",
+ "parentId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "depth": 1,
+ "supervisorId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129"
+ },
+ {
+ "id": "worker:worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150",
+ "kind": "worker",
+ "title": "terminal proof",
+ "status": "running",
+ "detail": "terminal proof: working",
+ "elapsedMs": 3100,
+ "startedAt": "2026-08-28T19:59:56.900Z",
+ "occurredAt": "2026-08-28T20:00:00.000Z",
+ "entityType": "worker",
+ "entityId": "worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150",
+ "parentId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "depth": 1,
+ "supervisorId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129"
+ },
+ {
+ "id": "worker:worker-runtime-babd8b83dd224161a13130b0005c8fa0878b947c",
+ "kind": "worker",
+ "title": "release review",
+ "status": "running",
+ "detail": "release review: working",
+ "elapsedMs": 1200,
+ "startedAt": "2026-08-28T19:59:58.800Z",
+ "occurredAt": "2026-08-28T20:00:00.000Z",
+ "entityType": "worker",
+ "entityId": "worker-runtime-babd8b83dd224161a13130b0005c8fa0878b947c",
+ "parentId": "worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150",
+ "depth": 2,
+ "supervisorId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129"
+ }
+ ],
+ "graph": [
+ {
+ "id": "conv-1",
+ "type": "conversation",
+ "title": "New conversation",
+ "status": "complete",
+ "depth": 0,
+ "edgeLabel": "attached",
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "branch-1",
+ "type": "branch",
+ "title": "Main",
+ "status": "complete",
+ "depth": 1,
+ "edgeLabel": "attached",
+ "parentIds": [
+ "conversation:conv-1"
+ ],
+ "startedAt": "2026-08-01T00:00:00.000Z"
+ },
+ {
+ "id": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "type": "supervisor",
+ "title": "prove the Braid release",
+ "status": "running",
+ "depth": 0,
+ "startedAt": "2026-08-28T19:59:53.800Z"
+ },
+ {
+ "id": "worker-runtime-b1864da9f9a7c3cc04f70aed544514566797a1f7",
+ "type": "worker",
+ "title": "stream and replay",
+ "status": "running",
+ "depth": 1,
+ "edgeLabel": "spawned",
+ "parentIds": [
+ "supervisor:supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129"
+ ],
+ "elapsedMs": 4200,
+ "startedAt": "2026-08-28T19:59:55.800Z",
+ "costUsd": 0.021
+ },
+ {
+ "id": "worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150",
+ "type": "worker",
+ "title": "terminal proof",
+ "status": "running",
+ "depth": 1,
+ "edgeLabel": "spawned",
+ "parentIds": [
+ "supervisor:supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129"
+ ],
+ "elapsedMs": 3100,
+ "startedAt": "2026-08-28T19:59:56.900Z",
+ "costUsd": 0.028
+ },
+ {
+ "id": "worker-runtime-babd8b83dd224161a13130b0005c8fa0878b947c",
+ "type": "worker",
+ "title": "release review",
+ "status": "running",
+ "depth": 2,
+ "edgeLabel": "spawned",
+ "parentIds": [
+ "worker:worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150"
+ ],
+ "elapsedMs": 1200,
+ "startedAt": "2026-08-28T19:59:58.800Z",
+ "costUsd": 0.012
+ }
+ ],
+ "graphQuery": "",
+ "entityDetails": [
+ {
+ "entityType": "supervisor",
+ "entityId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "title": "prove the Braid release",
+ "status": "running",
+ "lines": [
+ "id: supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "runtime id: runtime-supervisor-release",
+ "run: unbound workspace activity",
+ "status: running",
+ "tree usage: ≥3054 in · ≥2036 out · ≥$0.0610 · observed-floor",
+ "tree latency: 5090ms · workers 3",
+ "driver usage: ≥3054 in · ≥2036 out · ≥$0.0610 · observed-floor",
+ "started: 2026-08-28T19:59:53.800Z",
+ "updated: 2026-08-28T20:00:00.000Z"
+ ]
+ },
+ {
+ "entityType": "worker",
+ "entityId": "worker-runtime-b1864da9f9a7c3cc04f70aed544514566797a1f7",
+ "title": "stream and replay",
+ "status": "running",
+ "lines": [
+ "id: worker-runtime-b1864da9f9a7c3cc04f70aed544514566797a1f7",
+ "runtime id: runtime-worker-stream",
+ "status: running",
+ "supervisor: supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "cost: ≥$0.0210",
+ "input tokens: ≥1104",
+ "output tokens: ≥736",
+ "measurement: observed-floor",
+ "latest: stream and replay: working"
+ ]
+ },
+ {
+ "entityType": "worker",
+ "entityId": "worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150",
+ "title": "terminal proof",
+ "status": "running",
+ "lines": [
+ "id: worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150",
+ "runtime id: runtime-worker-ui",
+ "status: running",
+ "supervisor: supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "cost: ≥$0.0280",
+ "input tokens: ≥1386",
+ "output tokens: ≥924",
+ "measurement: observed-floor",
+ "latest: terminal proof: working"
+ ]
+ },
+ {
+ "entityType": "worker",
+ "entityId": "worker-runtime-babd8b83dd224161a13130b0005c8fa0878b947c",
+ "title": "release review",
+ "status": "running",
+ "lines": [
+ "id: worker-runtime-babd8b83dd224161a13130b0005c8fa0878b947c",
+ "runtime id: runtime-worker-review",
+ "status: running",
+ "supervisor: supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "runtime parent: terminal proof",
+ "parent worker: worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150",
+ "cost: ≥$0.0120",
+ "input tokens: ≥564",
+ "output tokens: ≥376",
+ "measurement: observed-floor",
+ "latest: release review: working"
+ ]
+ }
+ ],
+ "capabilities": {
+ "conversation.create": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.open": {
+ "available": true,
+ "source": "application"
+ },
+ "run.runner": {
+ "available": true,
+ "source": "application"
+ },
+ "run.model": {
+ "available": true,
+ "source": "application"
+ },
+ "run.effort": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.branch": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.clone": {
+ "available": true,
+ "source": "application"
+ },
+ "conversation.fork": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.ask": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.recipe": {
+ "available": false,
+ "source": "application",
+ "reason": "Complete or fail a run before analyzing it"
+ },
+ "analysis.compare": {
+ "available": false,
+ "source": "application",
+ "reason": "Two completed or failed runs are required for comparison"
+ },
+ "interaction.respond": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Interaction response is not exposed by the current runtime adapter"
+ },
+ "interaction.automation": {
+ "available": false,
+ "source": "application",
+ "reason": "Interaction automation requires the shared response contract"
+ },
+ "run.interactive": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal mode requires an interactive TUI and a supported provider"
+ },
+ "run.attach": {
+ "available": false,
+ "source": "application",
+ "reason": "Native terminal attachment requires an interactive TUI and a retained session"
+ },
+ "supervisor.worker.attach": {
+ "available": false,
+ "source": "runtime",
+ "reason": "Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding"
+ },
+ "export.create": {
+ "available": true,
+ "source": "application"
+ },
+ "analysis.cancel": {
+ "available": false,
+ "source": "application",
+ "reason": "There is no running analysis to cancel"
+ },
+ "application.quit": {
+ "available": true,
+ "source": "local"
+ },
+ "help.read": {
+ "available": true,
+ "source": "local"
+ },
+ "profile.select": {
+ "available": true,
+ "source": "application"
+ },
+ "connection.select": {
+ "available": true,
+ "source": "application"
+ },
+ "settings.open": {
+ "available": true,
+ "source": "application"
+ },
+ "activity.read": {
+ "available": true,
+ "source": "local"
+ },
+ "graph.read": {
+ "available": true,
+ "source": "local"
+ },
+ "details.read": {
+ "available": true,
+ "source": "local"
+ },
+ "supervisor.refresh": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.steer": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.worker.cancel": {
+ "available": true,
+ "source": "runtime"
+ },
+ "supervisor.cancel": {
+ "available": true,
+ "source": "runtime"
+ },
+ "draft.write": {
+ "available": true,
+ "source": "application"
+ },
+ "run.send": {
+ "available": true,
+ "source": "provider"
+ },
+ "run.cancel": {
+ "available": false,
+ "source": "runtime",
+ "reason": "There is no active run to cancel"
+ },
+ "run.queue": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.steer": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.detach": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no active run"
+ },
+ "run.reconnect": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconnect"
+ },
+ "run.reconcile": {
+ "available": false,
+ "source": "provider",
+ "reason": "There is no recoverable run to reconcile"
+ }
+ },
+ "draft": "",
+ "selectedSurface": "activity",
+ "appearance": {
+ "color": "256",
+ "highContrast": false,
+ "reducedMotion": false
+ }
+ },
+ "events": [
+ {
+ "sequence": 1,
+ "revision": 1,
+ "kind": "workspace.opened",
+ "payload": {
+ "value": {
+ "kind": "workspace.opened",
+ "workspace": "/home/drew/code/.worktrees/braid-keyboard-flow-fix"
+ }
+ }
+ },
+ {
+ "sequence": 2,
+ "revision": 2,
+ "kind": "supervisor.upserted",
+ "payload": {
+ "value": {
+ "kind": "supervisor.upserted",
+ "supervisor": {
+ "id": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "runtimeId": "runtime-supervisor-release",
+ "runtimeRoot": "/home/drew/code/.worktrees/braid-keyboard-flow-fix",
+ "status": "running",
+ "title": "prove the Braid release",
+ "driverUsage": {
+ "inputTokens": "[redacted]",
+ "outputTokens": "[redacted]",
+ "spendUsd": 0.061,
+ "latencyMs": 5090,
+ "iterations": 3,
+ "completeness": "observed-floor"
+ },
+ "totalUsage": {
+ "inputTokens": "[redacted]",
+ "outputTokens": "[redacted]",
+ "spendUsd": 0.061,
+ "latencyMs": 5090,
+ "completeness": "observed-floor"
+ },
+ "workerCount": 3,
+ "createdAt": "2026-08-28T19:59:53.800Z",
+ "updatedAt": "2026-08-28T20:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 3,
+ "revision": 3,
+ "kind": "worker.upserted",
+ "payload": {
+ "value": {
+ "kind": "worker.upserted",
+ "worker": {
+ "id": "worker-runtime-b1864da9f9a7c3cc04f70aed544514566797a1f7",
+ "runtimeId": "runtime-worker-stream",
+ "supervisorId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "status": "running",
+ "spendUsd": 0.021,
+ "inputTokens": "[redacted]",
+ "outputTokens": "[redacted]",
+ "latencyMs": 1840,
+ "usageCompleteness": "observed-floor",
+ "logTail": "stream and replay: working",
+ "title": "stream and replay",
+ "createdAt": "2026-08-28T19:59:55.800Z",
+ "updatedAt": "2026-08-28T20:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 4,
+ "revision": 4,
+ "kind": "worker.upserted",
+ "payload": {
+ "value": {
+ "kind": "worker.upserted",
+ "worker": {
+ "id": "worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150",
+ "runtimeId": "runtime-worker-ui",
+ "supervisorId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "status": "running",
+ "spendUsd": 0.028,
+ "inputTokens": "[redacted]",
+ "outputTokens": "[redacted]",
+ "latencyMs": 2310,
+ "usageCompleteness": "observed-floor",
+ "logTail": "terminal proof: working",
+ "title": "terminal proof",
+ "createdAt": "2026-08-28T19:59:56.900Z",
+ "updatedAt": "2026-08-28T20:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 5,
+ "revision": 5,
+ "kind": "worker.upserted",
+ "payload": {
+ "value": {
+ "kind": "worker.upserted",
+ "worker": {
+ "id": "worker-runtime-babd8b83dd224161a13130b0005c8fa0878b947c",
+ "runtimeId": "runtime-worker-review",
+ "supervisorId": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129",
+ "parentRuntimeRef": "terminal proof",
+ "parentWorkerId": "worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150",
+ "status": "running",
+ "spendUsd": 0.012,
+ "inputTokens": "[redacted]",
+ "outputTokens": "[redacted]",
+ "latencyMs": 940,
+ "usageCompleteness": "observed-floor",
+ "logTail": "release review: working",
+ "title": "release review",
+ "createdAt": "2026-08-28T19:59:58.800Z",
+ "updatedAt": "2026-08-28T20:00:00.000Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 6,
+ "revision": 6,
+ "kind": "graph.node.upserted",
+ "payload": {
+ "value": {
+ "kind": "graph.node.upserted",
+ "node": {
+ "id": "node-f3c8aa000066c566c2195c1b80b51696",
+ "reference": {
+ "kind": "supervisor",
+ "id": "supervisor-runtime-76deaf63157fd7bba58c59f7df98ae45a27fd129"
+ },
+ "title": "prove the Braid release",
+ "createdAt": "2026-08-28T19:59:53.800Z",
+ "updatedAt": "2026-08-28T20:00:00.000Z",
+ "status": "running"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 7,
+ "revision": 7,
+ "kind": "graph.node.upserted",
+ "payload": {
+ "value": {
+ "kind": "graph.node.upserted",
+ "node": {
+ "id": "node-77d651a814c8a9f7e1da525eedd84e08",
+ "reference": {
+ "kind": "worker",
+ "id": "worker-runtime-b1864da9f9a7c3cc04f70aed544514566797a1f7"
+ },
+ "title": "stream and replay",
+ "createdAt": "2026-08-28T19:59:55.800Z",
+ "updatedAt": "2026-08-28T20:00:00.000Z",
+ "status": "running"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 8,
+ "revision": 8,
+ "kind": "graph.node.upserted",
+ "payload": {
+ "value": {
+ "kind": "graph.node.upserted",
+ "node": {
+ "id": "node-7d8451b335e542fc632390c19a06f958",
+ "reference": {
+ "kind": "worker",
+ "id": "worker-runtime-8f73d7a11d4753defb1be0895111d9d766a21150"
+ },
+ "title": "terminal proof",
+ "createdAt": "2026-08-28T19:59:56.900Z",
+ "updatedAt": "2026-08-28T20:00:00.000Z",
+ "status": "running"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 9,
+ "revision": 9,
+ "kind": "graph.node.upserted",
+ "payload": {
+ "value": {
+ "kind": "graph.node.upserted",
+ "node": {
+ "id": "node-eb56cb37bfbb47fd4e6cb4822c5f2c50",
+ "reference": {
+ "kind": "worker",
+ "id": "worker-runtime-babd8b83dd224161a13130b0005c8fa0878b947c"
+ },
+ "title": "release review",
+ "createdAt": "2026-08-28T19:59:58.800Z",
+ "updatedAt": "2026-08-28T20:00:00.000Z",
+ "status": "running"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 10,
+ "revision": 10,
+ "kind": "graph.edge.upserted",
+ "payload": {
+ "value": {
+ "kind": "graph.edge.upserted",
+ "edge": {
+ "id": "edge-550d907d7b945aac1ec985cf7d7ca97e",
+ "kind": "spawned",
+ "source": "node-f3c8aa000066c566c2195c1b80b51696",
+ "destination": "node-77d651a814c8a9f7e1da525eedd84e08",
+ "provenance": {},
+ "createdAt": "2026-08-28T19:59:55.800Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 11,
+ "revision": 11,
+ "kind": "graph.edge.upserted",
+ "payload": {
+ "value": {
+ "kind": "graph.edge.upserted",
+ "edge": {
+ "id": "edge-18b8e0b93cdf87c316f048b024a5bd98",
+ "kind": "spawned",
+ "source": "node-f3c8aa000066c566c2195c1b80b51696",
+ "destination": "node-7d8451b335e542fc632390c19a06f958",
+ "provenance": {},
+ "createdAt": "2026-08-28T19:59:56.900Z"
+ }
+ }
+ }
+ },
+ {
+ "sequence": 12,
+ "revision": 12,
+ "kind": "graph.edge.upserted",
+ "payload": {
+ "value": {
+ "kind": "graph.edge.upserted",
+ "edge": {
+ "id": "edge-6f48af364fc6369e76f6fd904248dfda",
+ "kind": "spawned",
+ "source": "node-7d8451b335e542fc632390c19a06f958",
+ "destination": "node-eb56cb37bfbb47fd4e6cb4822c5f2c50",
+ "provenance": {},
+ "createdAt": "2026-08-28T19:59:58.800Z"
+ }
+ }
+ }
+ }
+ ]
+ }
+}
diff --git a/artifacts/verification/w6/states/supervision.png b/artifacts/verification/w6/states/supervision.png
new file mode 100644
index 0000000..60e9f6f
Binary files /dev/null and b/artifacts/verification/w6/states/supervision.png differ
diff --git a/artifacts/verification/w6/states/supervision.txt b/artifacts/verification/w6/states/supervision.txt
new file mode 100644
index 0000000..7bda03a
--- /dev/null
+++ b/artifacts/verification/w6/states/supervision.txt
@@ -0,0 +1,24 @@
+ workers · 4
+────────────────────────────────────────────────────────────────────────────────
+ › └ ● release review · worker · running · 1.2s
+ └ ● terminal proof · worker · running · 3.1s
+ └ ● stream and replay · worker · running · 4.2s
+ ● prove the Braid release · supervisor · running · 6.2s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+────────────────────────────────────────────────────────────────────────────────
+ ↑↓ move · enter/→ open · ←/esc close · s steer · x cancel · a/r
diff --git a/biome.json b/biome.json
index 635b8d0..05ae5d3 100644
--- a/biome.json
+++ b/biome.json
@@ -1,5 +1,5 @@
{
- "$schema": "https://biomejs.dev/schemas/2.5.7/schema.json",
+ "$schema": "https://biomejs.dev/schemas/2.5.11/schema.json",
"vcs": {
"enabled": true,
"clientKind": "git",
diff --git a/docs/02-experience-specification.md b/docs/02-experience-specification.md
index 2976178..2bcbc3e 100644
--- a/docs/02-experience-specification.md
+++ b/docs/02-experience-specification.md
@@ -96,7 +96,7 @@ The transcript begins at the top of the viewport and remains visually primary.
The calm context rail uses one compact identity/status row from 60 through 99 columns.
-At 100 columns and above, the first row labels the profile, harness, model, and backend.
+At 100 columns and above, the first row labels the profile, runner, model, and backend.
It adds a distinct connection, configured reasoning and caps, known sandbox facts, and measured values when they fit.
@@ -163,7 +163,7 @@ Headless state retains complete measurement status, including unavailable fields
› _
- profile reviewer · harness codex · model openai/gpt-5.6 · backend Sandbox · think xhigh
+ profile reviewer · runner codex · model openai/gpt-5.6 · backend Sandbox · think xhigh
working · Ctrl+C cancel
```
@@ -173,6 +173,14 @@ F2 opens the focused activity browser for active and historical work.
The activity browser uses one list/detail surface and keeps direct turns, analyses, and workers distinct.
+Each running analysis lists the selected analysts and their exact registry progress.
+
+The analysis scope exposes promote, cancel, and refresh keys without hiding the current result.
+
+The worker scope exposes steer, cancel, attach, and refresh keys only through reported runtime capabilities.
+
+An unavailable attach action explains the missing runtime contract and does not create a replacement run.
+
Graph, details, and workspace views use focused overlays.
No secondary surface reduces the transcript below its minimum width because secondary surfaces replace the shell.
@@ -280,10 +288,10 @@ An unknown slash command is not sent to the agent and opens a correction list.
| `/effort [level]` | Set or clear reasoning effort using canonical allowed values |
| `/branch [message]` | Create a new conversation branch at the selected or named message boundary |
| `/clone` | Duplicate the active branch into a new conversation with fresh execution identity |
-| `/fork [--workspace]` | Preview and create a conversation fork, optionally with a real environment checkpoint and fork |
+| `/fork [message] [--workspace \| --runner name [--provider name]]` | Preview a conversation, cross-runner, or real workspace fork |
| `/graph` | Open the conversation, analysis, run, environment, and worker graph |
| `/ask ` | Run a cited trace analysis against the selected frozen source |
-| `/analyze ` | Run a named trace-analysis recipe against the selected source |
+| `/analyze ` | Run one or all trace-analysis recipes against the selected source |
| `/compare ` | Create a paired comparison of two frozen run or branch sources |
| `/approve [scope]` | Accept the focused pending interaction using an allowed scope |
| `/reject [feedback]` | Decline the focused pending interaction with optional feedback when accepted by its schema |
diff --git a/docs/03-architecture.md b/docs/03-architecture.md
index 7d585f6..9f0dabe 100644
--- a/docs/03-architecture.md
+++ b/docs/03-architecture.md
@@ -234,8 +234,9 @@ interface AnalysisPort {
interface SupervisorPort {
snapshots(input: SupervisorWatchInput): AsyncIterable
- steer(input: WorkerSteerInput): Promise
- cancel(input: WorkerCancelInput): Promise
+ steerWorker(input: WorkerSteerInput): Promise
+ cancelWorker(input: WorkerCancelInput): Promise
+ cancelSupervisor(input: SupervisorCancelInput): Promise
}
interface StoragePort {
@@ -580,7 +581,11 @@ Every headless request carries a connection-local client request identifier.
Every side-effecting headless command also carries a caller-created, globally stable operation identifier that survives reconnect and process restart.
-The protocol supports initialization, workspace open, conversation navigation, profile and connection selection, send, queue, steer, interaction response, cancel, branch, clone, fork, ask, compare, query, subscribe, export, and shutdown.
+The protocol supports initialization, workspace open, conversation navigation, profile and connection selection, send, queue, steer, interaction response, and cancel.
+
+It also supports branch, clone, fork, ask, analyze, compare, activity queries, analysis cancellation, supervisor refresh, worker steering, and supervisor cancellation.
+
+Every supervisor mutation resolves a public Braid identifier to one runtime identifier before it calls the runtime-owned API.
The protocol never exposes a provider client object or allows arbitrary method invocation.
@@ -606,6 +611,14 @@ A layout function maps width and height to narrow, standard, or wide composition
The activity rail and focused activity browser consume the same activity document projection, so filtering and event status do not diverge between layouts.
+`AnalysisLifecycle` reduces exact analyst events into durable per-analyst progress records.
+
+`ActivityBrowserPanel` renders those records and emits typed promote, cancel, steer, attach, and refresh actions.
+
+`WorkerSteerPrompt` collects one sanitized steering instruction and does not access runtime state.
+
+`TerminalSurfaceOverlays` owns confirmations and routes each action through the application controller with a stable operation identifier.
+
Theme tokens are semantic and views cannot use raw ANSI codes.
Untrusted content passes through one sanitizer before it reaches text, markdown, link, image, clipboard, title, or notification components.
diff --git a/docs/04-runtime-contracts.md b/docs/04-runtime-contracts.md
index 6c2fe99..a1ec28f 100644
--- a/docs/04-runtime-contracts.md
+++ b/docs/04-runtime-contracts.md
@@ -2,7 +2,7 @@
## Purpose
-This document separates capabilities available in Braid's installed packages from capabilities that must remain disabled.
+This document separates capabilities available in Braid's installed packages from actions that remain unavailable.
Braid must not turn a type declaration, capability flag, or planned method into a product claim without a real Braid flow proving it.
@@ -10,26 +10,32 @@ When a current package blocks a real Braid flow, Braid records the unavailable a
## Evidence baseline
-The following published versions were queried from npm and their installed declarations and implementations were inspected directly on 2026-08-15.
+The following published versions were resolved in this worktree, and their installed manifests, declarations, and implementations were inspected directly on 2026-08-29.
| Package | Installed version | Braid boundary |
| --- | ---: | --- |
-| [`@tangle-network/agent-interface`](https://github.com/tangle-network/agent-sdk/tree/main/packages/agent-interface) | `1.3.0` | Canonical profile, capabilities, environment, stream, portable context, and interaction contracts |
-| [`@tangle-network/agent-runtime`](https://github.com/tangle-network/agent-runtime) | `0.143.0` | Sole execution layer; exact executor, retained-run, environment-provider, and terminal-monitor exports |
-| [`@tangle-network/agent-eval`](https://github.com/tangle-network/agent-eval) | `0.149.0` | Run records, judges, trace analysts, comparisons, and feedback trajectories |
-| `@tangle-network/agent-provider-cli-bridge` | `0.9.4` | CLI Bridge environment adapter with capability discovery, native retained sessions, live streaming, replay, retry-safe turns, retained control, durable interaction response, and explicit cancel |
-| `@tangle-network/agent-provider-tangle` | `0.13.0` | Tangle environment adapter over the sandbox client |
-| `@tangle-network/sandbox` | `0.31.0` | Tangle cloud client used by the provider |
+| [`@tangle-network/agent-interface`](https://github.com/tangle-network/agent-sdk/tree/main/packages/agent-interface) | `1.9.0` | Canonical profile, capabilities, environment, stream, portable context, native continuation, and interaction contracts |
+| [`@tangle-network/agent-runtime`](https://github.com/tangle-network/agent-runtime) | `0.182.0` | Sole execution layer; exact executor, retained-run, interactive-run, environment-provider, and terminal-monitor exports |
+| [`@tangle-network/agent-eval`](https://github.com/tangle-network/agent-eval) | `0.170.0` | Run records, judges, trace analysts, comparisons, and feedback trajectories |
+| `@tangle-network/agent-provider-cli-bridge` | `0.11.1` | CLI Bridge environment adapter with capability discovery, native retained sessions, bounded terminal results, live streaming, replay, retry-safe turns, retained control, durable interaction response, and explicit cancel |
+| `@tangle-network/agent-provider-tangle` | `0.14.4` | Tangle environment adapter over Sandbox, including deployment-gated retained control, interaction response, workspace branching, and interactive-agent operations |
+| `@tangle-network/sandbox` | `0.34.4` | Tangle cloud client used by the provider, including keyed checkpoint/fork and interactive-agent operations |
-The installed runtime publishes `agent-eval >=0.149.0 <0.150.0`, `agent-interface ^1.3.0`, and `sandbox >=0.31.0 <0.32.0` as peer ranges.
+The installed runtime publishes `agent-eval >=0.170.0 <0.171.0`, `agent-interface ^1.9.0`, and `sandbox >=0.34.3 <0.35.0` as peer ranges.
-Braid exercises runtime `0.143.0` with interface `1.3.0`, eval `0.149.0`, CLI Bridge adapter `0.9.4`, Tangle adapter `0.13.0`, and sandbox `0.31.0`.
+The installed Tangle provider publishes `sandbox >=0.34.4 <1.0.0` as a peer range.
+
+Sandbox `0.34.4` publishes peers `@mastra/core ^1.36.0`, `@modelcontextprotocol/sdk ^1.30.0`, `ai ^6.0.175`, `openai ^6.36.0`, and `viem ^2.0.0`.
+
+Braid exercises the exact dependency cohort in the table above.
The lockfile pins the registry integrity for every installed package.
`pnpm peers check` reports no peer dependency issues for this installed set.
-The Braid root and Runtime peer cohort resolve `agent-interface` `1.3.0` without a workspace override.
+`pnpm outdated --format json` returns `{}` for this worktree.
+
+The workspace override pins the interface version in the table so Braid and Runtime use one canonical type copy.
Historical snapshot: [Agent-runtime issue 803](https://github.com/tangle-network/agent-runtime/issues/803) records the interface peer mismatch fixed in Runtime `0.132.11`.
@@ -47,17 +53,18 @@ Braid composes the current provider packages through `agent-runtime` and keeps a
The CLI Bridge and Tangle providers remain transport implementations rather than alternate application shells.
-Interface `1.3.0` carries the requested interaction map on `AgentTurnInput` and the retained environment input.
+The installed Interface carries requested interactions, portable context transfer, and native continuation on `AgentTurnInput`.
The map is not a capability declaration.
Braid derives it only after exact per-run environment capabilities are admitted, and sends an explicit empty map when response idempotency is absent or unknown.
-The current runtime and installed provider implementations do not preserve that field through the retained dispatch boundary.
+The installed Runtime projects the interaction map into Sandbox prompt options.
+The installed Tangle provider preserves the map through retained dispatch.
-Braid therefore keeps the retained interactive path unverified until Runtime and the provider adapters forward the field end to end.
+The Tangle provider exposes response operations only when the deployment reports `interactions.responseDedupe`; Braid still requires that per-run capability and a real deployment check.
-At implementation start and before every release, rerun `npm view @tangle-network/ version` and inspect the installed declarations because these packages change frequently.
+At implementation start and before every release, rerun `pnpm outdated --format json` and inspect the installed manifests and declarations because these packages change frequently.
## Existing canonical profile contract
@@ -102,11 +109,9 @@ Permission responses support once, session, persistent allow, and deny outcomes
The canonical stream includes `interaction`, `interaction.cancel`, and `plan.submitted` events in addition to message-part, status, warning, raw, and session updates.
-`SdkProviderAdapter` has an optional `respondToInteraction(response)` method.
+`SdkProviderAdapter`, `AgentEnvironment`, and `AgentSession` have optional typed interaction-response methods.
-The higher-level `AgentEnvironmentProvider` and `AgentSession` path does not currently expose an equivalent response method.
-
-Therefore the existence of interaction types does not prove that a Braid user can answer a waiting CLI Bridge or Tangle run.
+Therefore the existence of interaction types or methods does not prove that a Braid user can answer a waiting run; the effective capability and a real flow remain required.
## Existing environment-provider contract
@@ -170,7 +175,9 @@ The provider and remote environment remain lazy until execution starts after dur
### Current Braid cancellation path
-`PreparedExecution.cancellation` is the only capability that enables Braid cancellation for a production run.
+`PreparedExecution.cancellation` enables Braid cancellation for the ephemeral Runtime executor path.
+
+Retained CLI Bridge, retained Tangle, and native interactive-agent runs use their exact retained control handle when the effective run capabilities advertise cancellation.
The capability is a typed Runtime-executor tag, not a provider-specific callback or a UI branch.
@@ -184,15 +191,15 @@ Historical snapshot: the installed Runtime `0.132.12` bridge executor implemente
Braid may abort its local iterator after an accepted or unknown result to release local resources, but local abort never proves provider cancellation.
-The CLI Bridge production adapter is the only current production adapter that supplies this capability.
+The CLI Bridge and retained Tangle production adapters supply cancellation through their exact retained control paths.
-The Tangle sandbox adapter and direct Tangle inference adapter omit it.
+The ephemeral Tangle sandbox path and direct Tangle inference adapter omit it.
The installed Runtime sandbox executor returns `destroyed: true` after aborting its local controller, while the Tangle session cancel method requires an exact `executionId` in a retained control reference.
-The current sandbox turn path passes only an `AbortSignal` to `streamPrompt`, and the published Tangle capability surface does not provide that exact control reference for this path.
+The ephemeral sandbox turn path passes only an `AbortSignal` to `streamPrompt`, and its published capability surface does not provide that exact control reference for this path.
-Braid therefore reports sandbox cancellation as unsupported or unknown instead of treating environment destruction or local stream closure as provider cancellation.
+Braid therefore reports ephemeral sandbox cancellation as unsupported or unknown instead of treating environment destruction or local stream closure as provider cancellation.
The upstream Runtime change required to expand this support is recorded below with the exact installed source and type evidence.
@@ -261,21 +268,29 @@ Braid adapts `loadTopSnapshot` into its own worker view, but it does not copy th
The runtime kernel exports `writeWorkerSteer` for worker inbox delivery.
-Braid resolves its public supervisor and worker identifiers to the exact runtime references before it calls that function.
+Braid supplies a stable operation identifier.
+
+Runtime replays the same request body and rejects a different body for the same identifier.
An explicit parent reference stays visible when no worker resolves it, and Braid does not create a replacement supervisor edge.
The snapshot has no Braid run identifier, so Braid does not infer a run binding from snapshot order, current selection, or time.
-The snapshot also omits partial-read diagnostics.
+The snapshot reports completeness and bounded diagnostics for unreadable or partial sources.
-[agent-runtime issue 757](https://github.com/tangle-network/agent-runtime/issues/757) requests bounded completeness evidence.
+The runtime kernel exports `cancelWorker` and `cancelRun` as idempotent cancellation operations.
-The runtime does not export worker-scoped cancellation or reconnectable external root cancellation.
+Braid supplies the runtime state directory, exact runtime target, and caller operation identifier.
-Braid therefore keeps those actions unavailable instead of treating an unread request as acknowledgement.
+An `unknown` effect means the request awaits acknowledgement and never becomes local success.
-[agent-runtime issue 758](https://github.com/tangle-network/agent-runtime/issues/758) tracks acknowledged worker and external root cancellation.
+Runtime stores each worker's exact interactive binding outside its presentation snapshot.
+
+Braid passes the supervisor state directory, exact worker identifier, and selected provider source to Runtime `attachWorker`.
+
+Runtime reconstructs the retained process and returns an opaque handle or a named unavailable reason.
+
+Braid never persists the provider reference or reads Runtime files directly.
The shared stream has no stable provider-native child-task lifecycle.
@@ -323,7 +338,7 @@ These behaviors may be suitable for isolated benchmark automation under an expli
## Existing CLI Bridge provider contract
-The published `@tangle-network/agent-provider-cli-bridge@0.9.4` resolves the bridge model from a turn override, provider default, or profile harness and model.
+The installed CLI Bridge provider resolves the bridge model from a turn override, provider default, or profile harness and model.
It sends stable `executionId` values as bridge run identifiers when they satisfy the bridge identifier rules.
@@ -339,7 +354,7 @@ Stopping a retained stream reader detaches the reader without cancelling the bri
Explicit exact cancellation remains separate from reader detach and binds to the server-issued request digest.
-Its public turn type accepts requested interactions through Interface `1.3.0`, and its retained turn body carries them to the Bridge.
+Its public turn type accepts requested interactions through Interface, and its retained turn body carries them to the Bridge.
It reads the exact capability document for one model route from `GET /v1/capabilities?model=…` before it admits a run.
@@ -351,21 +366,21 @@ The Braid retained CLI Bridge boundary test catches an interaction posture the r
## Existing Tangle provider contract
-The published `@tangle-network/agent-provider-tangle@0.13.0` wraps `@tangle-network/sandbox` as an `AgentEnvironmentProvider`.
+The installed Tangle provider wraps Sandbox as an `AgentEnvironmentProvider`.
Its default document is an upper bound, not a claim about one client or deployment.
-Its default capability document reports canonical profile dimensions, live and replay streaming, detach, turn idempotency, workspace read/write/exec/upload/download, and optional placement.
+Its provider-level surface includes deployment-gated retained control, interaction response, workspace branching, and interactive-agent operations.
-Its default document reports native continuation, session listing, session messages, workspace git, checkpoint, fork, usage, and confidentiality as unavailable.
+The composed environment narrows those claims against the concrete Sandbox client and deployment capability document.
-Version `0.6.3` accepts an explicit capability declaration and narrows it against the concrete client and environment methods.
+The provider accepts an explicit capability declaration and narrows it against the concrete client and environment methods.
Braid does not inject positive retained capabilities into the provider.
It requires client `get`, exact control, replay, detach, turn idempotency, retry-safe cancellation, and provider-backed dispatch lookup.
-The current default provider report and methods do not satisfy that requirement.
+The provider-level report alone does not satisfy that requirement; Braid also requires per-environment capability evidence and live deployment proof.
The adapter exposes environment stream and dispatch, provider sessions, workspace methods, refresh, and destroy only when the sandbox instance implements them.
@@ -375,6 +390,14 @@ It narrows its declared interaction kinds to the backend catalog the Sandbox cli
The Braid retained Tangle adapter supplies the requested map to Runtime's retained turn input.
+The provider exposes workspace branching only when Sandbox supplies keyed checkpoint and fork operations, operation lookup, inventory recovery, and explicit cleanup.
+
+The provider exposes an interactive agent only when the deployment reports the exact native-TUI fact and the linked SDK supplies all required start, status, attach, reattach, control, prompt, input, resize, and stop operations.
+
+Braid maps that surface to Runtime's retained interactive handle and records `surface: interactive-agent` without creating a second Sandbox during admission.
+
+The provider rejects `contextTransfer` and `nativeContinuation` until Sandbox supplies native support for those operations.
+
Historical snapshot: Runtime `0.135.0` dropped that field in its retained-turn copier before the Tangle provider received it. Runtime `0.143.0` preserves it.
The Braid retained Tangle boundary test catches this loss at the provider dispatch boundary.
@@ -421,15 +444,21 @@ Its saved control reference contains provider, environment, session, execution,
Headless run state exposes that secret-free reference so a fresh controller can inspect the exact recovered execution without replaying old events.
-Native follow-up turns remain disabled because the current provider does not prove a matching context boundary.
+Headless native-context follow-up turns remain disabled because the current provider rejects `nativeContinuation` until Sandbox supplies a matching context boundary.
+
+Native interactive-agent turns support follow-up prompts through the retained TUI session when the exact interactive-agent capability is present.
An ambiguous retained start failure does not destroy its environment because an idempotent create can return a pre-existing workspace.
Safe compensation requires a provider-issued receipt that distinguishes a new create from an idempotent replay.
-If either Tangle path requests approval, an answer, or a plan decision, Braid fails the turn with an unsupported-interaction explanation.
+Retained headless Tangle runs may request an answer when the effective environment advertises the interaction kind and response operation.
+
+Braid binds that response to the exact runtime run, provider session, interaction, and operation identifiers.
+
+The ephemeral Tangle path and the native interactive-agent path do not expose the generic Braid interaction-response operation, so Braid reports it as unsupported instead of auto-answering.
-Braid does not display a resumable interaction until the provider exposes a durable response operation.
+Braid displays a resumable interaction only after the provider exposes a durable response operation and the deployment reports response deduplication.
Braid does not admit retained Tangle execution without lookup for the crash window before its exact reference commits.
@@ -437,7 +466,7 @@ The local retained test proves that lookup recovers and cancels a run after a si
The observation record never contains API keys, bearer tokens, SSH credentials, secret values, credential-bearing URLs, Docker host strings, or internal listener addresses.
-The following upstream issues own missing shared contracts:
+The following historical upstream issues motivated these shared contracts; current package support does not replace live deployment proof:
- [Runtime issue 799](https://github.com/tangle-network/agent-runtime/issues/799) requires a creation receipt and exact cleanup when retained dispatch fails.
- [Runtime issue 800](https://github.com/tangle-network/agent-runtime/issues/800) requires crash-safe exact run admission or deterministic discovery.
@@ -452,11 +481,12 @@ The following upstream issues own missing shared contracts:
- [Agent SDK issue 136](https://github.com/tangle-network/agent-sdk/issues/136) requests normalized provider observations and account usage.
- [Sandbox issue 5076](https://github.com/tangle-network/agent-dev-container/issues/5076) requests resolved placement, effective resources, and per-sandbox billing.
-The published cohort now carries the interaction contract end to end.
+The current published cohort carries the interaction response contract through the shared types and provider adapters, while Braid still gates each action on effective deployment capabilities.
-- Runtime `0.143.0` preserves `AgentTurnInput.interactions` and gates a response on `interactions.responseIdempotency`.
-- CLI Bridge `0.9.4` forwards the requested map and implements the durable response operation ([Agent SDK issue 204](https://github.com/tangle-network/agent-sdk/issues/204)).
-- Tangle provider `0.13.0` narrows interaction kinds to the backend catalog the deployment serves.
+- Interface publishes the interaction, checkpoint/fork, and interactive-agent contracts.
+- Runtime preserves `AgentTurnInput.interactions` and projects it into Sandbox prompt options.
+- CLI Bridge forwards the requested map and implements the durable response operation ([Agent SDK issue 204](https://github.com/tangle-network/agent-sdk/issues/204)).
+- The Tangle provider narrows interaction kinds to the deployment catalog and exposes keyed workspace branching and interactive-agent operations when their deployment flags and methods are present.
Braid does not cast around these gaps or duplicate provider dispatch.
@@ -470,7 +500,9 @@ Paired comparisons retain outcomes and costs across two frozen candidates.
The current DSPy RLM engine accepts a caller-owned model function, stable public call reference, and execution recorder instead of a provider URL or credential.
Braid invokes this engine through its bundled `uv` binary and an isolated managed Python 3.12 runtime.
-The invocation pins `agent-eval-rpc[dspy]` to `0.149.0` and fixes the dependency resolution cutoff.
+The invocation pins `agent-eval-rpc[dspy]` to the installed `@tangle-network/agent-eval` version and fixes the dependency resolution cutoff.
+
+If the managed runtime cannot resolve that exact cohort, Braid reports analysis as unavailable and does not use host Python packages.
Braid never sends model credentials to the managed Python process.
Braid gives each analyst invocation one explicit runtime transport attempt by default so its recorded usage and cost cannot hide additional paid retries.
@@ -540,7 +572,7 @@ A provider without a native event identifier receives a stable identifier from t
### Environment and session interaction response
-`AgentEnvironment` and `AgentSession` need optional typed interaction-response operations bound to a stable execution or session reference.
+`AgentEnvironment` and `AgentSession` expose optional typed interaction-response operations bound to a stable execution or session reference.
The operation accepts canonical `InteractionResponse`, caller operation identifier, and cancellation signal.
@@ -554,9 +586,9 @@ An interaction capability object must report supported kinds, answer specificati
### Portable conversation context
-The current environment turn input can name a native session but cannot carry canonical prior messages into a fresh provider session.
+The installed environment turn input carries explicit `contextTransfer` and `nativeContinuation` requests in addition to a native session identifier.
-The shared interface must add a portable conversation context built from existing canonical message and part types, with source boundary, completeness, digest, and selected attachments.
+The shared interface defines portable conversation context built from existing canonical message and part types, with source boundary, completeness, digest, and selected attachments.
Runtime start or resume must distinguish native same-session continuation from fresh-session context transfer.
@@ -600,17 +632,21 @@ Braid must never label the second operation as attachment.
The same reference can identify an attachable Runtime worker or provider-native child only when Runtime reports a stable parent relation.
-The current shared interface and Runtime package do not expose terminal input, output bytes, resize, or an attachment lifecycle.
+The shared interface exposes terminal input, output events, resize, detach, close, and exact control claims.
-The sandbox platform already provides authenticated PTY transport, while CLI Bridge currently provides logical session continuity without a retained terminal process.
+Runtime exposes retained interactive handles for Braid runs and exact supervised workers.
-[Agent SDK issue 138](https://github.com/tangle-network/agent-sdk/issues/138) owns the portable terminal-session contract.
+Braid owns only terminal presentation and restores its screen after detach or remote exit.
+
+The Sandbox platform provides authenticated PTY transport and the current Tangle provider also exposes a deployment-gated native interactive-agent surface.
-[Runtime issue 773](https://github.com/tangle-network/agent-runtime/issues/773) owns exact execution and worker attachment.
+CLI Bridge currently provides logical session continuity without a retained terminal process.
+
+[Agent SDK issue 138](https://github.com/tangle-network/agent-sdk/issues/138) owns the portable terminal-session contract.
[CLI Bridge issue 140](https://github.com/drewstone/cli-bridge/issues/140) owns retained local terminal processes.
-Braid will consume the Runtime contract and will not add runner-specific attachment code.
+Braid consumes the Runtime contract and contains no runner-specific attachment code.
## CLI Bridge target transport
@@ -636,13 +672,15 @@ The provider package maps the bridge surface into the shared environment and run
## Tangle target transport
-The sandbox session API must carry canonical interaction requests in its replayable event stream and accept canonical responses bound to session, interaction, and operation identifiers.
+The installed Sandbox carries canonical interaction requests in its replayable event stream.
+It accepts canonical responses bound to session, interaction, and operation identifiers when the deployment reports response deduplication.
-The Tangle provider maps that operation into `AgentSession` and runtime run control.
+The installed Tangle provider maps that operation into `AgentEnvironment`, `AgentSession`, and Runtime retained run control.
Cloud interaction responses must remain valid after Braid reconnect when the sandbox session is still waiting.
-Checkpoint and fork requests require caller idempotency keys bound to canonical request digests.
+The installed Tangle provider exposes checkpoint and fork requests when the linked Sandbox surface is complete.
+It binds caller idempotency keys to canonical request digests.
Retrying the same key and digest returns the original checkpoint or destination environment, while reusing a key with changed input returns a conflict.
diff --git a/docs/06-conversations-forks-and-analysis.md b/docs/06-conversations-forks-and-analysis.md
index aede0cb..481aabe 100644
--- a/docs/06-conversations-forks-and-analysis.md
+++ b/docs/06-conversations-forks-and-analysis.md
@@ -308,6 +308,16 @@ The analyst uses canonical bounded trace tools and cannot mutate the source work
Analysis runs in a separate runtime execution context and has its own cancellation and cost.
+One request can select explicit analyst identifiers, comma-separated recipe aliases, or every available trace analyst with `all`.
+
+Braid validates and removes duplicate selections before dispatch.
+
+The exact registry reports analyst start and completion events in its defined serial order.
+
+Braid stores those events as pending, running, completed, skipped, or failed progress under the analysis record.
+
+Restart replay restores the last committed analyst state before terminal reconciliation.
+
### Analysis result
The result stores analyst identity, source digest, question or recipe, findings, exact citations, uncertainty, deterministic checks, errors, usage, cost, latency, and package versions.
@@ -330,6 +340,8 @@ The destination agent sees that the content is an external analysis rather than
Promotion is a user action and never follows automatically from analyst completion.
+The activity browser lets the user repeat `p` to promote supported cited findings one at a time.
+
## Named analyses
`/analyze failure` runs deterministic trace checks and the configured failure-mode analyst.
@@ -344,6 +356,10 @@ Recipes are registered through `agent-eval` and versioned by exact identifier.
Braid may add presentation aliases but cannot duplicate analyst logic in a command handler.
+Comma-separated aliases can select several analysts without creating separate analysis records.
+
+`/analyze all` selects every available trace analyst except the dedicated free-form question analyst.
+
## Comparison
`/compare` freezes two source records and calls the appropriate `agent-eval` paired comparison.
diff --git a/docs/08-verification.md b/docs/08-verification.md
index 3ac5091..8c42106 100644
--- a/docs/08-verification.md
+++ b/docs/08-verification.md
@@ -261,7 +261,7 @@ No test imports an internal controller to claim headless protocol proof.
Braid's test-only implementation of Pi TUI's public `Terminal` interface renders the real root component and application core at 40×12, 80×24, 120×40, and 200×60.
-The adapter is derived from Pi's test helper with immutable source and license attribution because `@earendil-works/pi-tui@0.84.1` does not publish that helper.
+The adapter is derived from Pi's test helper with immutable source and license attribution because `@earendil-works/pi-tui@0.84.4` does not publish that helper.
The output assertion includes cell character, width, semantic style, cursor, focus, overlay bounds, clipped rows, and hidden content.
@@ -339,7 +339,7 @@ The judge executes through Runtime with one exact `AgentProfile` and a direct Ta
`BRAID_EVAL_API_KEY` supplies the protected credential.
-`BRAID_EVAL_BASE_URL` defaults to `https://router.tangle.tools/v1`, and `BRAID_EVAL_MODEL` defaults to `glm-5.2`.
+`BRAID_EVAL_BASE_URL` defaults to `https://router.tangle.tools/v1`, and `BRAID_EVAL_MODEL` defaults to `glm-5.3`.
The profile sets a 2,048-token total completion limit through `max_completion_tokens`.
@@ -367,11 +367,11 @@ Model discovery does not make every advertised model a release gate.
| --- | --- | --- |
| LIVE-01 | CLI Bridge with Pi | Exact profile materialization, text, reasoning, tool, usage, native session continuation, event replay, explicit cancel, and terminal receipt |
| LIVE-02 | CLI Bridge with Codex | The same cross-family flow and a cross-runner handoff from the Pi source context |
-| LIVE-03 | CLI Bridge interactive protocol | Real question or permission pauses the runner, reaches Braid, receives once and session responses, resumes, and rejects a stale duplicate |
+| LIVE-03 | CLI Bridge interactive protocol | Real question or permission pauses the runner, reaches Braid, receives a response in an advertised scope, resumes, and rejects a stale duplicate |
| LIVE-04 | CLI Bridge restart | Run state becomes honestly unknown or recovers according to retained state; Braid never labels it cancelled or resubmits unsafely |
| LIVE-05 | Every advertised interactive bridge runner | Common conformance flow at a pinned minimum runner version; failures remove the interactive capability claim |
| LIVE-06 | Tangle inference | Real profile-backed inference route, streaming, usage, cancellation, and immutable receipt |
-| LIVE-07 | Tangle sandbox | Ephemeral create, turn, observation, and deletion; retained exact lookup, forced process loss, replay, cancel retry, and confirmed cleanup |
+| LIVE-07 | Tangle sandbox | Ephemeral create, turn, observation, and deletion; retained exact lookup, forced process loss, replay, cancel retry, two-conversation concurrent streaming with focus switching, and confirmed cleanup |
| LIVE-08 | Tangle interaction | A retained cloud interaction remains answerable after Braid reconnect and continues once from the acknowledged response |
| LIVE-09 | Tangle workspace fork | Checkpoint, destination fork, independent destination file change, unchanged source file, and explicit cleanup of both environments |
| LIVE-10 | Confidential Tangle path | Requested placement remains unverified until valid attestation is checked; negative nonce and measurement tests fail |
@@ -380,10 +380,56 @@ Model discovery does not make every advertised model a release gate.
If a required live provider is unavailable, the release is blocked and the manifest reports the unavailable check rather than marking it skipped or simulated.
+The live interaction check must not invent a broader response scope than the provider advertises.
+
+The current Pi route advertises interaction-only responses, so Braid disables session and persistent choices for that route.
+
+`LIVE-11` uses one reusable flow over the published `@tangle-network/agent-runtime/kernel` and `@tangle-network/agent-runtime/tui` APIs.
+
+The protected command calls Runtime `provisionSupervisor` when no complete external supervisor binding is configured.
+
+The shared protected `TANGLE_API_KEY` may authenticate both the Tangle Sandbox and Runtime supervisor paths.
+
+The release collector passes that key only to `live-tangle` and `live-supervisor`; analysis and unrelated checks remain isolated.
+
+Runtime creates the root, worker, acknowledger, and provider-owned process binding through its public APIs.
+
+The command discovers exact identifiers from the returned Runtime receipt instead of requiring pre-existing `BRAID_SUPERVISOR_*` identifiers.
+
+The three `BRAID_SUPERVISOR_ROOT`, `BRAID_SUPERVISOR_ID`, and `BRAID_SUPERVISOR_WORKER` values remain an all-or-nothing override for an externally managed run.
+
+The flow rejects incomplete snapshots and requires an exact supervisor identifier, exact worker identifier, root status, worker status, and complete spend fields.
+
+It observes a spend change while the worker remains running before it admits any control operation.
+
+It retries one stable steering operation identifier, then requires a matching request digest, exact worker, and `delivered` Runtime acknowledgement.
+
+It retries one stable worker-cancellation operation identifier, then requires a `cancelled` acknowledgement that names the terminated worker.
+
+It reloads the snapshot after cancellation and rereads the same cancellation acknowledgement to prove reconnect persistence.
+
+When a provider supplies the exact interactive reconnect contract, the flow records the opaque terminal takeover handle.
+
+When no provider supplies that contract, the flow records the explicit unavailable reason and makes no attachment claim.
+
+When Runtime reports that the provider supports terminal takeover, an unavailable attachment fails the check.
+
+An owned run always invokes its Runtime cleanup function after success or failure.
+
+Cleanup must return the exact root, supervisor, and worker identifiers, terminal statuses, `resourcesReleased: true`, and an empty `remainingResources` list.
+
+The receipt validator rejects mismatched identifiers, incomplete cleanup, and leaked resources.
+
+The check returns the `LIVE-11` measurement only after every required effect and reconnect assertion passes; it never returns a partial result.
+
### Tangle Sandbox durability stress
Run `pnpm test:live:tangle:sandbox:stress` against the public Sandbox endpoint.
+The aggregate `pnpm test:live:tangle` command also runs `tangle-sandbox-braid-multirun.mjs` as part of `LIVE-07`.
+
+The direct `pnpm test:live:tangle:sandbox:multirun` command runs the same proof when an operator needs only the concurrent-session path.
+
The command runs one canary before it starts the remaining cohort.
The default cohort contains three proofs with at most two concurrent proofs.
@@ -412,6 +458,24 @@ The cohort also reports observed tokens, costs, active-resource deltas, and expl
The command fails when a cloud identity repeats, an account changes, evidence is missing, or one owned resource remains.
+The multirun proof creates two independent conversations, streams both retained runs concurrently, and switches focus to each run.
+
+It closes the activity browser before sending cancellation to the selected run.
+
+It records the canonical cancellation dispatch event and operation before waiting for provider acknowledgement.
+
+It cancels only the selected run, closes Braid, replays both runs after restart, and confirms exact cleanup.
+
+The proof holds each provider turn for 180 seconds and allows 300 seconds per phase by default to absorb public startup variance.
+
+When a phase fails, its artifact retains the latest semantic terminal frame and the latest frame-capture error.
+
+The multi-run proof reads active ownership from `BraidState.activeRuns` and Work Strip items from the real `BraidViewModel`.
+
+It also requires two actionable Work Strip rows in the packed terminal frame.
+
+The release collector registers the multirun artifact below `live/tangle/evidence.json` and rejects `LIVE-07` when that artifact is absent, failed, incomplete, or not exactly clean.
+
### Current core-path observations
On 2026-08-09, the packed public setup, RPC dispatch, durable transcript, native continuation, process restart, and post-restart send passed separately against CLI Bridge commit `33695db` for Pi 0.83.0 with `tangle-router/glm-5.2` in 136.492 seconds and Codex CLI 0.147.0 with its default model in 43.462 seconds.
@@ -476,13 +540,17 @@ This cohort satisfies the retained create, process-loss recovery, replay, cancel
The August 12 failure artifacts remain diagnostic history and are superseded by this passing cohort.
-On 2026-08-21, this branch upgraded the provider cohort to interface `1.3.0`, runtime `0.143.0`, eval `0.149.0`, CLI Bridge adapter `0.9.4`, Tangle adapter `0.13.0`, and sandbox `0.31.0`.
+Historical verification snapshot (2026-08-21): this branch used interface `1.3.0`, runtime `0.143.0`, eval `0.149.0`, CLI Bridge adapter `0.9.4`, Tangle adapter `0.13.0`, and sandbox `0.31.0`.
+
+Historical result for that cohort: the automated suite passed 782 of 782 tests on Linux, and the release self-check passed 32 of 32 tests, both with the deleted second sandbox parser and the published Sandbox run outcome as the only terminal result source.
+
+In that snapshot, `LIVE-03` and `LIVE-08` were attempted through their built-in checks: both emitted `unavailable` because the environment held no CLI Bridge interaction credential and no Tangle Sandbox credential, and the built-in check refused to claim a row it could not execute.
-The automated suite passed 782 of 782 tests on Linux, and the release self-check passed 32 of 32 tests, both with the deleted second sandbox parser and the published Sandbox run outcome as the only terminal result source.
+In that snapshot, `LIVE-06`, `LIVE-07`, `LIVE-09`, and `LIVE-10` were also unavailable for the same reason, and no live claim in that record came from a simulated provider.
-`LIVE-03` and `LIVE-08` were attempted through their built-in checks: both emit `unavailable` because this environment holds no CLI Bridge interaction credential and no Tangle Sandbox credential, and the built-in check refuses to claim a row it cannot execute.
+Current dependency evidence (2026-08-29) is documented in the machine-checked table in [Runtime contracts](04-runtime-contracts.md).
-`LIVE-06`, `LIVE-07`, `LIVE-09`, and `LIVE-10` remain unavailable in this environment for the same reason, and no live claim in this record comes from a simulated provider.
+The historical test counts above do not represent verification of this current cohort.
## Runner conformance
diff --git a/docs/09-delivery-plan.md b/docs/09-delivery-plan.md
index bf73d62..5fc8408 100644
--- a/docs/09-delivery-plan.md
+++ b/docs/09-delivery-plan.md
@@ -294,6 +294,7 @@ A repository search and dependency test must prove no Braid-owned runner/model m
- Implement shutdown behavior that distinguishes detachable and non-detachable runs.
- Run the packed Braid binary against CLI Bridge, Tangle inference, and Tangle sandbox.
- Run one Tangle Sandbox canary before a bounded three-proof durability cohort.
+- Run the retained two-conversation multirun proof with concurrent streams, focus switching, targeted cancellation, restart replay, and exact cleanup as part of `LIVE-07`.
- Record exact cleanup, account identity, latency distributions, tokens, costs, placement, and resource observations for every cloud proof.
### Done when
@@ -302,6 +303,10 @@ A repository search and dependency test must prove no Braid-owned runner/model m
The event ledger must show zero duplicate displayed part and zero lost committed event across forced disconnect and restart cases.
+`LIVE-07` cannot pass without the multirun artifact proving two independent conversations, both streamed runs, both focus switches, targeted cancellation, restart replay, and exact cleanup.
+
+The artifact must record the canonical cancellation operation while branch B is still active after the activity browser closes.
+
The Tangle Sandbox cohort must leave zero resources owned by its exact operation identities.
## W9: Interactions and automation
@@ -362,7 +367,9 @@ The UI proof includes the source and destination file state of a real cloud envi
- Implement `/ask`, failure, cost, tools, improvement, paired comparison, citation validation, finding promotion, and fork from analysis.
- Implement feedback trajectory export from structured decisions.
- Implement the complete graph with conversation, branch, turn, run, analysis, environment, checkpoint, supervisor, and worker nodes and named edges.
-- Implement runtime-owned supervisor snapshot watch, activity, log tail, typed steering, typed cancellation, and reconnect.
+- Implement runtime-owned supervisor snapshot watch, activity, log tail, typed steering, typed cancellation, and reconnect through the published Runtime APIs.
+- Make the `LIVE-11` release proof provision an owned Runtime root and worker, validate complete observation, changed spend, acknowledged steering, proven cancellation, stable operation retries, fresh reconnect, and exact cleanup.
+- Record exact terminal takeover only when Runtime returns an opaque handle for a registered provider; preserve the explicit unavailable capability otherwise.
- Keep direct-turn, trace-analysis, and delegated-worker usage separate until Runtime exports stable shared call identity.
- Add calibrated semantic cases and raw evidence capture.
@@ -370,6 +377,8 @@ The UI proof includes the source and destination file state of a real cloud envi
`PR-07`, `PR-08`, `AN-01` through `AN-10`, `LIVE-11`, `LIVE-12`, and `EVAL-01` through `EVAL-06` pass.
+`LIVE-11` cannot pass from a queued request, an incomplete snapshot, an unacknowledged effect, or a partial result.
+
An analysis cannot pass if its source branch journal changes before explicit promotion or any cited reference fails deterministic resolution.
## W12: Security, accessibility, performance, and product polish
@@ -406,7 +415,7 @@ All owning repositories for final compatible releases, then `tangle-network/brai
- Run `pnpm check` once against the exact main commit.
- Build one immutable package with `pnpm release:prepare` and use its installed CLI, RPC, and terminal flows.
- Keep live, performance, semantic, soak, and complete-manifest audits available as explicit product audits.
-- Do not make provider or sandbox availability an npm publication prerequisite.
+- Require a passed `LIVE-07` multirun artifact before release completion; provider or sandbox availability may still block that completion rather than becoming an unavailable claim.
- Endorse the exact candidate package and package manifest in an isolated code-free job.
- Publish `@tangle-network/braid` with npm provenance.
- Download the registry package in clean supported environments and repeat the post-publication smoke.
diff --git a/docs/10-upstream-strategy.md b/docs/10-upstream-strategy.md
index 17bf8dd..29f0308 100644
--- a/docs/10-upstream-strategy.md
+++ b/docs/10-upstream-strategy.md
@@ -14,6 +14,8 @@ The initial comparison used source, package metadata, licenses, application inst
The core terminal references were refreshed from their live default branches on 2026-08-10 before and during the production UX pass.
+The Pi TUI runtime dependency was revalidated at npm `0.84.4` and source commit `b79e4cc834970cca69daebffab7df1da7d1e52c4` on 2026-08-29.
+
DeepSeek Harness and Cordis were inspected at their live default branches on 2026-08-13.
The Pi repository head was `cd6852a`, with no newer change below `packages/tui` after `87142a8`.
@@ -32,7 +34,7 @@ The deciding question was how much source can be reused while preserving `AgentP
| Source | Commit or version | License | Measured relevant TypeScript | Role in decision |
| --- | --- | --- | ---: | --- |
-| [Pi TUI](https://github.com/earendil-works/pi/tree/main/packages/tui) | repository `cd6852a`; TUI `87142a8d50640e93d43fcb35123439d642bc0304`; npm `0.84.1` | MIT | 32,585 lines | Selected renderer dependency |
+| [Pi TUI](https://github.com/earendil-works/pi/tree/main/packages/tui) | repository `cd6852a`; TUI `87142a8d50640e93d43fcb35123439d642bc0304`; npm `0.84.4` | MIT | 32,585 lines | Selected renderer dependency |
| [Pi coding-agent interactive mode](https://github.com/earendil-works/pi/tree/main/packages/coding-agent/src/modes/interactive) | repository `cd6852a`; interactive mode `87142a8d50640e93d43fcb35123439d642bc0304` | MIT | 17,379 lines, including a 6,399-line coordinator | Selective behavior and component source |
| [Kimi Code terminal app](https://github.com/MoonshotAI/kimi-code/tree/main/apps/kimi-code/src/tui) | `0401ec4286f37929d1d298527c05f5351850bf8a` | MIT | No refreshed size claim | Selective interaction and controller source |
| [Kimi private Pi TUI fork](https://github.com/MoonshotAI/kimi-code/tree/main/packages/pi-tui) | `0401ec4286f37929d1d298527c05f5351850bf8a` | MIT | Included in repository inspection | Patch and regression reference only |
@@ -53,7 +55,7 @@ The Kimi SDK coupling count selected terminal files that directly import `@moons
Pi TUI provides main-screen and alternate-screen rendering, differential frame output, cell-width calculation, viewport and scrolling, containers, overlays, focus, editor input, autocomplete, history, undo, kill ring behavior, selection lists, settings lists, markdown, images, IME handling, keyboard decoding, and a public terminal interface.
-The Pi repository includes a useful `packages/tui/test/virtual-terminal.ts` helper, but `@earendil-works/pi-tui@0.84.1` does not publish or export it.
+The Pi repository includes a useful `packages/tui/test/virtual-terminal.ts` helper, but `@earendil-works/pi-tui@0.84.4` does not publish or export it.
Braid will adapt that test-only helper with attribution unless Pi first publishes a supported testing export.
diff --git a/docs/components/README.md b/docs/components/README.md
new file mode 100644
index 0000000..7b7b7ad
--- /dev/null
+++ b/docs/components/README.md
@@ -0,0 +1,143 @@
+# Braid component system
+
+## Design vision
+
+Braid is a transcript-first terminal for operating one or many agent runs without hiding identity, capability, or uncertainty.
+
+The main screen keeps the current conversation readable and keeps the composer immediately available.
+
+Secondary work opens in a full-viewport surface or a modal only when the user asks for it.
+
+Concurrent work stays visible through a small Work Strip and a searchable activity view.
+
+Every rendered value comes from one immutable `BraidViewModel` projection.
+
+Every user action emits a typed intent with a stable operation identifier.
+
+Components do not call providers, mutate durable state, or infer unavailable capabilities.
+
+Controllers coordinate focus and presentation, while application services own workflows and side effects.
+
+The selected profile and connection determine the real runner, model, environment, and available actions.
+
+A missing capability stays visible and disabled with one plain reason.
+
+Narrow terminals remove secondary detail before they shorten primary meaning.
+
+Wide terminals add measured context, not permanent side panels.
+
+All untrusted text is sanitized before rendering, and secret values never enter a view model.
+
+## What “best and simple” means
+
+Each component has one user-visible job and one owner for its state transition.
+
+The implementation uses the smallest general contract that works for every provider and runner.
+
+It does not add a provider-specific branch when a capability, view model, or typed intent can express the behavior.
+
+It does not duplicate canonical runtime, replay, interaction, fork, analysis, or supervisor contracts.
+
+It bounds lists, text, and refresh work so the terminal stays responsive as stored history grows.
+
+It fails closed when identity, capability, or response validity is unknown.
+
+It proves keyboard behavior and terminal output at 40×12, 80×24, 120×40, and 200×60.
+
+## Product components
+
+| Product component | Document | Primary user outcome |
+| --- | --- | --- |
+| Terminal shell and chrome | [terminal-shell.md](terminal-shell.md) | Keep identity, status, input, and cleanup stable around every surface. |
+| Transcript and composer | [transcript-composer.md](transcript-composer.md) | Read one branch and submit, queue, or steer without losing a draft. |
+| Work Strip | [work-strip.md](work-strip.md) | See and focus concurrent work without a permanent side panel. |
+| Multi-run orchestration | [multi-run-orchestration.md](multi-run-orchestration.md) | Run independent branches concurrently while preserving branch order. |
+| Retained run lifecycle | [retained-run-lifecycle.md](retained-run-lifecycle.md) | Reconnect, replay, detach, cancel, and recover one exact provider run. |
+| Native continuation | [native-continuation.md](native-continuation.md) | Continue the exact provider session at a verified branch boundary. |
+| Run stream sanitizer | [run-stream-sanitizer.md](run-stream-sanitizer.md) | Make split provider output safe before durable storage and rendering. |
+| Cloud proof observations | [cloud-proof-observations.md](cloud-proof-observations.md) | Prove provider-bound input, execution uniqueness, telemetry, identity, and cleanup. |
+| Selectors and commands | [selectors-and-commands.md](selectors-and-commands.md) | Find an action or entity through one keyboard contract. |
+| Modal coordination | [modal-coordination.md](modal-coordination.md) | Present one bounded decision surface with reliable focus restoration. |
+| Conversation navigation | [conversation-navigation.md](conversation-navigation.md) | Create, rename, archive, switch, branch, and clone through explicit identities. |
+| Fork preview | [fork-preview.md](fork-preview.md) | Explain exactly what a fork copies before any external mutation. |
+| Conversation branch effects | [conversation-branch-effects.md](conversation-branch-effects.md) | Execute portable context transfer and real workspace forks without hidden provider assumptions. |
+| Workspace branching | [workspace-branching.md](workspace-branching.md) | Reconstruct exact provider checkpoints and forks across restart, mutation, and cleanup. |
+| Interactions and secrets | [interactions.md](interactions.md) | Answer, decline, cancel, or automate a typed request safely. |
+| Profiles and connections | [profiles-and-connections.md](profiles-and-connections.md) | Select a portable agent and a credential-bearing execution connection. |
+| Activity | [activity.md](activity.md) | Find live, queued, waiting, detached, and completed work. |
+| Entity browser and details | [entity-browser.md](entity-browser.md) | Reuse one list-and-details interaction across complex records. |
+| Supervisor graph | [supervision.md](supervision.md) | Inspect worker hierarchy and route supported controls to one worker. |
+| Analysis | [analysis.md](analysis.md) | Inspect a cited review of a frozen run without mutating the source. |
+| Comparison | [comparison.md](comparison.md) | Compare complete measured fields and asymmetries before a verdict. |
+| Automation rules | [automation.md](automation.md) | Reuse safe interaction responses with explicit scope and confirmation. |
+| Help and unavailable states | [help-and-capability-states.md](help-and-capability-states.md) | Explain real commands and disabled actions without fake readiness. |
+| Safe rendering and responsive layout | [safe-rendering.md](safe-rendering.md) | Preserve terminal integrity and primary meaning at every supported size. |
+| Headless and accessible presentation | [headless-and-accessibility.md](headless-and-accessibility.md) | Expose the same application through bounded JSONL and plain text. |
+
+## Concrete component inventory
+
+Every exported terminal component class maps to exactly one product document below.
+
+Helpers remain in the same document as the component whose behavior they serve.
+
+| Code component | Source | Product document |
+| --- | --- | --- |
+| `AlternateScreenTerminal` | `src/adapters/tui/alternate-screen-terminal.ts` | [terminal-shell.md](terminal-shell.md) |
+| `ApplicationUiController` | `src/adapters/tui/application-ui-controller.ts` | [terminal-shell.md](terminal-shell.md) |
+| `ActivityBrowserPanel` | `src/views/tui/activity-browser.ts` | [activity.md](activity.md) |
+| `ActivityView` | `src/views/tui/activity.ts` | [activity.md](activity.md) |
+| `AnalysisViewPanel` | `src/views/tui/analysis.ts` | [analysis.md](analysis.md) |
+| `GuardedAutocompleteProvider` | `src/views/tui/autocomplete-guard.ts` | [selectors-and-commands.md](selectors-and-commands.md) |
+| `AutomationOverlayWorkflow` | `src/views/tui/automation-overlay-workflow.ts` | [automation.md](automation.md) |
+| `AutomationRulePanel` | `src/views/tui/automation-rule-panel.ts` | [automation.md](automation.md) |
+| `RuleResponseEditor` | `src/views/tui/automation-rule-response-editor.ts` | [automation.md](automation.md) |
+| `CommandPalette` | `src/views/tui/command-palette.ts` | [selectors-and-commands.md](selectors-and-commands.md) |
+| `ComparisonViewPanel` | `src/views/tui/comparison.ts` | [comparison.md](comparison.md) |
+| `ComposerView` | `src/views/tui/composer-view.ts` | [transcript-composer.md](transcript-composer.md) |
+| `ConfigurationCredential` | `src/views/tui/configuration-credential.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `PreparedCredential` | `src/views/tui/configuration-credential.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `ResponsiveText` | `src/views/tui/configuration-responsive-text.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `ConfigurationReview` | `src/views/tui/configuration-review.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `ConfigurationWizard` | `src/views/tui/configuration-wizard.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `ConnectionMetadataEditor` | `src/views/tui/connection-metadata-editor.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `ConnectionOverlayWorkflow` | `src/views/tui/connection-overlay-workflow.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `ConnectionSetupViewPanel` | `src/views/tui/connection-setup.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `ConversationConfirmation` | `src/views/tui/conversation-dialogs.ts` | [conversation-navigation.md](conversation-navigation.md) |
+| `ConversationRename` | `src/views/tui/conversation-dialogs.ts` | [conversation-navigation.md](conversation-navigation.md) |
+| `ConversationOverlayActions` | `src/views/tui/conversation-overlay-actions.ts` | [conversation-navigation.md](conversation-navigation.md) |
+| `ConversationOverlayController` | `src/views/tui/conversation-overlays.ts` | [conversation-navigation.md](conversation-navigation.md) |
+| `DetailsViewPanel` | `src/views/tui/details.ts` | [entity-browser.md](entity-browser.md) |
+| `DynamicAutocompleteProvider` | `src/views/tui/dynamic-autocomplete.ts` | [selectors-and-commands.md](selectors-and-commands.md) |
+| `EntityBrowser` | `src/views/tui/entity-browser.ts` | [entity-browser.md](entity-browser.md) |
+| `ForkPreviewPanel` | `src/views/tui/fork-preview.ts` | [fork-preview.md](fork-preview.md) |
+| `GraphView` | `src/views/tui/graph.ts` | [supervision.md](supervision.md) |
+| `HelpViewPanel` | `src/views/tui/help.ts` | [help-and-capability-states.md](help-and-capability-states.md) |
+| `InteractionDecisionList` | `src/views/tui/interaction-decisions.ts` | [interactions.md](interactions.md) |
+| `OutcomeKeys` | `src/views/tui/interaction-presentation.ts` | [interactions.md](interactions.md) |
+| `SecretInput` | `src/views/tui/interaction-presentation.ts` | [interactions.md](interactions.md) |
+| `InteractionShell` | `src/views/tui/interaction.ts` | [interactions.md](interactions.md) |
+| `ModalCoordinator` | `src/views/tui/modal-coordinator.ts` | [modal-coordination.md](modal-coordination.md) |
+| `ProfileCompatibilityPanel` | `src/views/tui/profile-compatibility.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `ProfileEditorViewPanel` | `src/views/tui/profile-editor.ts` | [profiles-and-connections.md](profiles-and-connections.md) |
+| `SafeMarkdown` | `src/views/tui/safe-markdown.ts` | [safe-rendering.md](safe-rendering.md) |
+| `MaskedSecretInput` | `src/views/tui/secret-input.ts` | [interactions.md](interactions.md) |
+| `SearchableSelector` | `src/views/tui/selector.ts` | [selectors-and-commands.md](selectors-and-commands.md) |
+| `BraidTerminalApp` | `src/views/tui/terminal-app.ts` | [terminal-shell.md](terminal-shell.md) |
+| `TerminalChrome` | `src/views/tui/terminal-chrome.ts` | [terminal-shell.md](terminal-shell.md) |
+| `TerminalCommandController` | `src/views/tui/terminal-command-controller.ts` | [terminal-shell.md](terminal-shell.md) |
+| `TerminalDraftController` | `src/views/tui/terminal-drafts.ts` | [transcript-composer.md](transcript-composer.md) |
+| `TerminalInputController` | `src/views/tui/terminal-input-controller.ts` | [terminal-shell.md](terminal-shell.md) |
+| `TerminalInteractionController` | `src/views/tui/terminal-interaction-controller.ts` | [interactions.md](interactions.md) |
+| `TerminalOverlayController` | `src/views/tui/terminal-overlays.ts` | [modal-coordination.md](modal-coordination.md) |
+| `BraidShell` | `src/views/tui/terminal-shell.ts` | [terminal-shell.md](terminal-shell.md) |
+| `UnavailablePanel` | `src/views/tui/terminal-shell.ts` | [help-and-capability-states.md](help-and-capability-states.md) |
+| `TerminalSurfaceOverlays` | `src/views/tui/terminal-surface-overlays.ts` | [modal-coordination.md](modal-coordination.md) |
+| `TranscriptView` | `src/views/tui/transcript.ts` | [transcript-composer.md](transcript-composer.md) |
+
+## Change rule
+
+Add a new product component only when it introduces a distinct user job, state owner, or interaction contract.
+
+Add a helper to an existing component when it only renders or coordinates that component's established contract.
+
+Update this inventory and the owning document in the same change as a new exported terminal component class.
diff --git a/docs/components/activity.md b/docs/components/activity.md
new file mode 100644
index 0000000..889cbb0
--- /dev/null
+++ b/docs/components/activity.md
@@ -0,0 +1,80 @@
+# Activity
+
+## Job
+
+Activity provides one searchable place to find live, queued, waiting, detached, reconnecting, completed, cancelled, and failed work.
+
+## Best simple implementation
+
+Project activity from canonical runs, interactions, queue entries, analyses, supervisors, and workers.
+
+Render the compact summary with `ActivityView` and the searchable full surface with `ActivityBrowserPanel`.
+
+Use stable entity identifiers for focus and detail actions.
+
+Do not create another polling state store inside the terminal.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `ActivityView` | Render the bounded activity document and indicate whether live work exists. |
+| `ActivityBrowserPanel` | Search activity rows, open detail, and focus an explicit run. |
+
+## Inputs and outputs
+
+Each activity row carries a kind, stable identifier, status, title, summary, timestamp, and available actions.
+
+Run rows also carry conversation and branch identity.
+
+Selecting a run emits `focus-run` for that exact run.
+
+The runs view states that Enter opens details and focuses controls.
+
+The focused row includes a `controls` label, which stays separate from conversation selection.
+
+Selecting another entity opens its details without changing run focus.
+
+## Ordering and state
+
+Live and attention-required rows appear before terminal history.
+
+Rows within a group use canonical event or update order.
+
+The browser preserves selection by entity identifier across refreshes.
+
+The runs filter contains only run ownership rows so keyboard focus switching is deterministic.
+
+Other filters operate over their matching projected rows.
+
+Detached work remains visible because local silence is not completion.
+
+## Failure and safety
+
+Unknown status values render as unknown and never as success.
+
+Missing cost, duration, or usage stays unknown and never becomes zero.
+
+Untrusted titles and summaries are sanitized.
+
+Unavailable row actions remain visible with their reason.
+
+## Performance
+
+Projection uses bounded recent worker and supervisor sets with required ancestors.
+
+The browser renders only visible rows and one selected detail document.
+
+Closing the surface stops runtime-backed refresh.
+
+## Proof
+
+Tests cover ordering, filtering, focus switching, background interactions, detached runs, two supervisors, unchanged snapshots, and refresh cleanup.
+
+Captures show activity with concurrent work at all required terminal sizes.
+
+## Non-goals
+
+Activity does not duplicate transcript content or replace the Work Strip.
+
+It does not assign a worker to a different run.
diff --git a/docs/components/analysis.md b/docs/components/analysis.md
new file mode 100644
index 0000000..ee6aa03
--- /dev/null
+++ b/docs/components/analysis.md
@@ -0,0 +1,89 @@
+# Analysis
+
+## Job
+
+Analysis runs a separate cited review over a frozen source run and makes progress, findings, evidence, cost, and completion inspectable.
+
+## Best simple implementation
+
+Freeze the source run through the shared analysis boundary.
+
+Execute selected analyst profiles through Runtime.
+
+Persist analysis lifecycle, model-call, usage, citation, finding, and terminal events in the Braid journal.
+
+Project one immutable `AnalysisView` and render it through `AnalysisViewPanel`.
+
+Do not mutate the source run or ask the analyzed run to grade itself.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `AnalysisViewPanel` | Navigate analysis summary, findings, citations, model calls, usage, and terminal state. |
+
+Shared presentation functions build the same document for terminal, plain, and headless output.
+
+## Inputs and outputs
+
+An analysis request names the frozen source run, selected analyst profiles, connection, question, budget, and operation identifier.
+
+Progress events name their analysis and analyst execution.
+
+Findings contain severity, claim, cited evidence references, confidence, and disposition state.
+
+Promotion emits one explicit finding identifier and provenance record.
+
+## Multi-analyst behavior
+
+Each analyst execution keeps its own profile, model calls, usage, status, and failure.
+
+The UI can filter or select analysts without dropping another analyst's fields.
+
+Aggregate status reports the complete set of successful, failed, cancelled, and incomplete analysts.
+
+A partial result remains partial and never appears as a clean comparison.
+
+## Lifecycle and restart
+
+Admission records the frozen source digest before model execution.
+
+Live progress appends idempotent events by analysis and event identifiers.
+
+Restart reconstructs progress and resumes or reconciles the runtime-owned execution.
+
+Cancellation targets one analysis or analyst execution explicitly.
+
+Promotion remains separate from analysis completion.
+
+## Failure and safety
+
+An invalid or missing citation blocks a finding from promotion.
+
+Missing usage, cost, or model-call data stays unknown.
+
+Late source events cannot change the frozen analysis input.
+
+Cancelled analysis keeps bounded partial diagnostics and an honest cancelled state.
+
+Trace artifacts exclude secrets and credential-bearing fields.
+
+## Performance
+
+Analysis pages render bounded findings and model calls.
+
+Progress projection updates only the affected analysis record.
+
+Parallel analysts use independent runtime executions within the declared budget.
+
+## Proof
+
+Tests cover freeze, progress, multiple analysts, citation resolution, budget termination, cancellation, restart, promotion, and source immutability.
+
+Live proof requires real analyst model calls, settled usage and cost, resolved citations, and unchanged source data.
+
+## Non-goals
+
+Analysis does not become another conversation turn or provider session.
+
+The UI does not invent a verdict when analyst evidence is incomplete.
diff --git a/docs/components/automation.md b/docs/components/automation.md
new file mode 100644
index 0000000..6fa4b26
--- /dev/null
+++ b/docs/components/automation.md
@@ -0,0 +1,75 @@
+# Interaction automation
+
+## Job
+
+Interaction automation reuses a non-secret response for matching future requests under an explicit scope and audit record.
+
+## Best simple implementation
+
+Create rules only from a current interaction and a response that passed its `answerSpec`.
+
+Use `AutomationOverlayWorkflow` for asynchronous list and mutation coordination.
+
+Use `AutomationRulePanel` for list, create, scope, confirmation, disable, and delete steps.
+
+Use `RuleResponseEditor` for the supported reusable answer shapes.
+
+Keep matching and execution in the application domain, not the panel.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `AutomationOverlayWorkflow` | Load rules and dispatch idempotent create, disable, and delete operations. |
+| `AutomationRulePanel` | Coordinate the visible rule workflow. |
+| `RuleResponseEditor` | Validate one reusable response against the current request. |
+
+## Scope
+
+`once` applies to the next matching request.
+
+`session` applies within the declared provider or runtime session boundary.
+
+`persistent` survives restart and requires explicit confirmation.
+
+The interaction declares which scopes are allowed.
+
+The UI does not offer a broader scope.
+
+## Inputs and outputs
+
+A rule contains a stable identifier, matcher, safe response, scope, enabled state, usage count, and optional maximum uses.
+
+Creation emits the source run and interaction identifiers plus a stable operation identifier.
+
+Disable and delete target one exact rule identifier.
+
+The list response contains no secret response values.
+
+## Failure and safety
+
+Secret, unknown, and unsupported form responses remain manual.
+
+Persistent creation names the future effect and requires confirmation.
+
+Rule parsing fails closed on malformed data.
+
+Duplicate operations return the recorded result.
+
+Automation never bypasses a provider capability or user policy check.
+
+## Performance
+
+The workflow loads bounded rule summaries only while open.
+
+Filtering and editing remain local until the user confirms an operation.
+
+## Proof
+
+Tests cover create, once, session, persistent confirmation, maximum uses, disable, delete, restart, malformed data, secret refusal, and duplicate operations.
+
+## Non-goals
+
+The panel does not predict an answer or create a rule from text similarity alone.
+
+It does not store secret-designated answers.
diff --git a/docs/components/cloud-proof-observations.md b/docs/components/cloud-proof-observations.md
new file mode 100644
index 0000000..178863c
--- /dev/null
+++ b/docs/components/cloud-proof-observations.md
@@ -0,0 +1,61 @@
+# Cloud proof observations
+
+## Purpose
+
+The cloud proof observations component proves that Braid controls the provider resource it reports.
+
+It covers LIVE-07 retained runs and LIVE-08 native interactive runs.
+
+## Ownership
+
+The Braid proof scripts own evidence collection and receipt validation.
+
+The Sandbox provider owns workspace files, terminal state, resource usage, and account identity.
+
+Braid does not infer provider execution from assistant text or local terminal echo.
+
+## Best simple implementation
+
+The proof collects provider readback through the authenticated Sandbox client and validates it before receipt creation.
+
+## Inputs and outputs
+
+The proof receives one authenticated Sandbox client, one Braid control reference, and generated workspace paths.
+
+The provider readback returns a resource identity, file bytes, terminal metadata, usage samples, and account identity.
+
+The public receipt contains digests, statuses, counts, paths, and timings without credential values or secret-designated content.
+
+## State and invariants
+
+The execution-attempt ledger is append-only and must contain exactly one expected line after replay and reconnect.
+
+Input and reconnect checks pass only after the provider workspace contains the expected bytes.
+
+Cleanup enumerates every Braid-owned retained resource for the exact provider session and rejects duplicate ownership.
+
+The account identity must remain stable before execution and after cleanup.
+
+The active-resource delta must be observed and must equal zero after cleanup.
+
+Telemetry and spend fields must be observed or explicitly unavailable, and missing fields fail the proof.
+
+## Performance
+
+Workspace reads use one exact resource lookup per polling attempt and bounded proof paths.
+
+Cleanup uses paginated provider listing and bounded deletion retries for each owned resource.
+
+Provider-bound mutation evidence stores digests instead of raw file bytes, and diagnostics remain bounded.
+
+## Tests
+
+Focused tests reject local-only input, duplicate owned resources, duplicate execution lines, and missing telemetry.
+
+The complete local verification command covers receipt validation, replay, cancellation, terminal behavior, and projections.
+
+## Non-goals
+
+This component does not implement a runner, terminal protocol, provider session store, or billing system.
+
+This component does not claim provider behavior when public observation or cleanup evidence is unavailable.
diff --git a/docs/components/comparison.md b/docs/components/comparison.md
new file mode 100644
index 0000000..22f203a
--- /dev/null
+++ b/docs/components/comparison.md
@@ -0,0 +1,79 @@
+# Comparison
+
+## Job
+
+Comparison shows every captured field and asymmetry across analysis or run arms before it presents a verdict.
+
+## Best simple implementation
+
+Build one canonical comparison result outside the renderer.
+
+Project complete arm, field, missing-data, termination, usage, cost, timing, and provenance values into `ComparisonView`.
+
+Render the same ordered fields through `ComparisonViewPanel`, plain output, and headless output.
+
+Do not drop zero, null, failure, or unequal sample counts to make a table cleaner.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `ComparisonViewPanel` | Navigate arms, measured fields, asymmetries, threats, and verdict evidence. |
+
+## Inputs and outputs
+
+Each arm names its source, profile, runner, model, environment, sample count, status, and measured values.
+
+Each field records a value for every arm or an explicit missing reason.
+
+Asymmetries appear before the verdict.
+
+Selection changes presentation only and emits no mutation.
+
+## Ordering
+
+The header shows provenance and arm counts first.
+
+Blocking asymmetries follow.
+
+Measured fields follow in canonical order.
+
+Distribution summaries include count, minimum, median, p90, and maximum when the input supports them.
+
+The verdict appears only after the evidence it depends on.
+
+## Failure and safety
+
+Unequal counts, different termination, missing telemetry, and different model or environment inputs remain visible.
+
+Unknown values never become zero.
+
+An invalid comparison result fails closed before rendering a verdict.
+
+All labels and evidence excerpts are sanitized and bounded.
+
+## Responsive behavior
+
+Narrow mode shows one field with all arm values and explicit next or previous navigation.
+
+Standard mode shows a compact field table.
+
+Wide mode adds provenance and distribution detail.
+
+No mode hides an asymmetry.
+
+## Performance
+
+The comparison result is immutable and precomputed.
+
+The panel renders a bounded viewport and selected detail only.
+
+## Proof
+
+Tests cover zero and null values, unequal arms, missing telemetry, different termination, field ordering, narrow navigation, and honest verdict suppression.
+
+## Non-goals
+
+The component does not run an evaluation or choose a winner from incomplete evidence.
+
+It does not summarize away fields captured by the source result.
diff --git a/docs/components/conversation-branch-effects.md b/docs/components/conversation-branch-effects.md
new file mode 100644
index 0000000..7026df1
--- /dev/null
+++ b/docs/components/conversation-branch-effects.md
@@ -0,0 +1,59 @@
+# Conversation branch effects
+
+`ConversationBranches` owns planning and `conversation-branch-effects.ts` owns provider effects.
+
+The implementation uses the published `@tangle-network/agent-interface` contracts as the single cross-runner and workspace-fork boundary.
+
+## Best simple implementation
+
+Plan every branch effect from immutable Braid state and return one digest-bound preview before external work.
+
+Execute portable transfer, checkpoint, fork, lookup, and cleanup only through the matching published capability.
+
+Keep provider resources authoritative outside Braid and persist only exact redacted receipts and graph identities.
+
+Use one stable operation identity for retry and reject a response that does not match the planned source and destination.
+
+## Inputs and outputs
+
+The planner reads immutable Braid state, the selected branch boundary, and the execution port capabilities.
+
+It returns a digest-bound preview that names the source run, destination, context plan, placement, and allowed action.
+
+Execution accepts only the matching preview digest and returns the durable destination branch.
+
+Cleanup accepts stable checkpoint and destination-environment identifiers and returns an exact per-resource outcome.
+
+## State and invariants
+
+Cross-runner transfer requires a recorded source environment, an exact canonical history plan, and a provider transfer method.
+
+Workspace fork requires checkpoint, fork, lookup, retry-safe, and cleanup capabilities from both the selected run and execution port.
+
+Every provider request uses a stable operation or idempotency identifier and validates the exact response matcher before persistence.
+
+Destination environments receive deterministic Braid identifiers and must differ from the provider source environment.
+
+The journal records only compact redacted transfer receipts, provider references, operation digests, graph edges, and immutable view-model data.
+
+The provider remains authoritative for live sessions, checkpoints, forks, and cleanup status.
+
+## Performance and tests
+
+Canonical conversion caps 1,024 messages and the agent-interface one-megabyte digest material limit.
+
+Legacy view context remains bounded by the existing twenty-thousand-message and two-megabyte limits.
+
+Provider lookups run before creation calls, so restart recovery does not repeat successful checkpoint, fork, or transfer effects.
+
+`test/conversation-branch-effects.test.ts` proves canonical handoff, restart replay, exact provider requests, destination isolation, cleanup, and unavailable capability behavior.
+
+The unit, contract, and security suites cover reducer replay, durable operations, redaction, and public-surface boundaries.
+
+## Non-goals
+
+This component does not parse provider-native output, launch runners, invent provider capabilities, or copy provider-private state.
+
+It does not promise cross-runner continuation when the provider cannot create a fresh session from the canonical plan.
+
+It does not expose credential values or place secrets in profiles, journal records, snapshots, logs, or terminal output.
diff --git a/docs/components/conversation-navigation.md b/docs/components/conversation-navigation.md
new file mode 100644
index 0000000..a2c01c8
--- /dev/null
+++ b/docs/components/conversation-navigation.md
@@ -0,0 +1,94 @@
+# Conversation navigation
+
+## Job
+
+Conversation navigation lets the user create, import, rename, archive, delete, switch, branch, and clone without confusing history identity.
+
+## Best simple implementation
+
+Use one searchable conversation surface and one searchable branch surface.
+
+Carry conversation and branch identifiers in every action.
+
+Use small confirmation or rename panels for destructive or textual mutations.
+
+Keep branching inside the conversation journal and keep workspace forking in its separate preview workflow.
+
+Do not infer a branch from the focused run when an explicit branch target is available.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `ConversationOverlayController` | Open and refresh conversation and branch selectors. |
+| `ConversationOverlayActions` | Dispatch typed create, import, rename, archive, delete, branch, clone, and switch actions. |
+| `ConversationConfirmation` | Confirm one named destructive or durable mutation. |
+| `ConversationRename` | Validate and submit one bounded title edit. |
+
+## Identity and state
+
+A conversation owns a branch graph.
+
+A branch identifies one path through that graph.
+
+A turn identifies one user input and its resulting activity.
+
+A run identifies one admitted execution of a turn.
+
+Navigation changes selection and focus but never rewrites those identities.
+
+An active run can continue on a background branch after the user selects another branch.
+
+## Inputs and outputs
+
+Selectors receive immutable conversation and branch summaries with stable identifiers.
+
+Actions emit typed intents with the selected identifiers and a stable operation identifier.
+
+The application returns accepted, unavailable, conflict, or error outcomes.
+
+An accepted action refreshes from canonical state instead of editing selector rows locally.
+
+## Algorithms
+
+The selector preserves its row by stable identifier across refreshes.
+
+Branch creation records an explicit source point and creates a new branch in the same conversation.
+
+Clone copies the selected branch history into a new conversation without claiming provider continuity.
+
+Deletion remains unavailable while canonical constraints require the entity.
+
+Same-operation replay returns the recorded result.
+
+Changed input under the same operation identifier returns a conflict.
+
+## Failure and safety
+
+Unknown conversation or branch identifiers fail before mutation.
+
+Destructive actions require a confirmation that names the target.
+
+Imported content passes size, schema, path, and terminal-sanitization checks.
+
+Conversation titles cannot carry terminal control sequences.
+
+Deleting history never deletes an environment, provider session, or credential by implication.
+
+## Performance
+
+Selectors consume bounded summaries rather than full transcripts.
+
+Filtering and refresh remain independent of stored message volume.
+
+## Proof
+
+Reducer and storage tests cover idempotency, restart, migration, graph invariants, import, and delete constraints.
+
+Keyboard tests cover open, filter, switch, branch, rename, cancel, and focus restoration.
+
+## Non-goals
+
+Conversation navigation does not perform workspace fork or native provider continuation.
+
+It does not stop a background run merely because selection changed.
diff --git a/docs/components/entity-browser.md b/docs/components/entity-browser.md
new file mode 100644
index 0000000..d5a9380
--- /dev/null
+++ b/docs/components/entity-browser.md
@@ -0,0 +1,82 @@
+# Entity browser and details
+
+## Job
+
+The entity browser supplies one list-and-details interaction for complex collections without adding permanent panes to the main screen.
+
+## Best simple implementation
+
+Use `EntityBrowser` as the shared full-viewport list, filter, selection, and detail layout.
+
+Use `DetailsViewPanel` for a standalone immutable detail document.
+
+Adapt activity, graph, analysis, and comparison records into the same row and detail contracts.
+
+Do not specialize keyboard behavior for each entity kind.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `EntityBrowser` | Own query, selected row, viewport, details visibility, and common keys. |
+| `DetailsViewPanel` | Render one bounded detail document. |
+
+## Inputs and outputs
+
+Rows contain stable values, safe labels, summaries, status, and optional action metadata.
+
+Details contain a title and bounded lines.
+
+Selection emits the stable row value.
+
+Back closes details before it closes the browser.
+
+## Responsive behavior
+
+At narrow widths, the browser shows either the list or details.
+
+At standard widths, it prioritizes the list and opens details as the next surface.
+
+At wide widths, it may show list and details together when both remain readable.
+
+The keyboard contract stays identical across layouts.
+
+## State
+
+Query, selection, offset, and detail visibility are local state.
+
+Entity facts and actions remain immutable inputs.
+
+Refresh keeps selection by stable value and clamps the viewport.
+
+An entity removed by refresh selects the nearest valid row.
+
+## Failure and safety
+
+An empty collection renders one explicit empty state.
+
+Invalid details render no guessed fields.
+
+Every label and detail line is sanitized and width-bounded.
+
+Actions target identifiers and never row indexes.
+
+## Performance
+
+Filtering uses the bounded projected rows.
+
+Only the active viewport and selected detail render.
+
+The component performs no I/O or provider polling.
+
+## Proof
+
+Shared tests run the same keyboard cases through activity, graph, analysis, and comparison adapters.
+
+Resize tests prove selection and detail continuity across all layout modes.
+
+## Non-goals
+
+The browser does not own entity state, refresh intervals, or mutations.
+
+It does not introduce a dashboard beside the transcript.
diff --git a/docs/components/fork-preview.md b/docs/components/fork-preview.md
new file mode 100644
index 0000000..9783d7c
--- /dev/null
+++ b/docs/components/fork-preview.md
@@ -0,0 +1,93 @@
+# Fork preview
+
+## Job
+
+The fork preview explains the exact source boundary, destination, copied state, omitted state, capabilities, and cleanup plan before a fork mutates an external environment.
+
+## Best simple implementation
+
+Project the canonical fork plan into one immutable `ForkPreviewView`.
+
+Render that view in `ForkPreviewPanel` without re-deriving capability or identity decisions.
+
+Execute only the plan digest the user reviewed.
+
+Use the shared runtime and provider fork ports for external work.
+
+Do not copy provider sessions, checkpoints, or workspaces inside the terminal client.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `ForkPreviewPanel` | Present source, destination, boundaries, warnings, and confirm or cancel actions. |
+
+The application fork planner owns plan creation and execution.
+
+The provider owns the environment and checkpoint operations.
+
+## Inputs and outputs
+
+The panel receives a frozen plan with source conversation, branch, turn, run, provider session, environment, checkpoint, destination profile, destination connection, and destination workspace.
+
+Unknown values remain explicit.
+
+Confirmation emits the plan digest and a stable operation identifier.
+
+Cancellation emits no external mutation.
+
+## Fork kinds
+
+A conversation branch creates another history path in the same conversation.
+
+A clone creates another Braid conversation from visible history.
+
+A workspace fork creates a destination environment from a checkpoint.
+
+A cross-runner fork starts a new run from portable history and workspace state without claiming native provider continuity.
+
+The preview names the selected kind and its omitted state.
+
+## Algorithms
+
+Planning asks the selected provider for current capabilities.
+
+Planning freezes source identity and the latest eligible checkpoint.
+
+Execution recomputes the plan digest and refuses any changed source or destination.
+
+Execution uses one stable idempotency key for destination creation.
+
+Restart first looks up that key before another external mutation.
+
+Successful execution records destination identity and independent cleanup ownership.
+
+## Failure and safety
+
+Unsupported checkpoint or fork capability disables confirmation with one reason.
+
+A source change after preview returns a conflict and requires a new preview.
+
+An unknown external result remains unknown until lookup resolves it.
+
+Cleanup targets only the destination identifiers returned by the provider.
+
+Credentials and checkpoint contents never appear in the view or capture.
+
+## Performance
+
+The preview renders a bounded list of facts and warnings.
+
+Workspace data moves through the provider or Sandbox implementation, not through terminal memory.
+
+## Proof
+
+Tests cover branch, clone, workspace fork, cross-runner fork, changed-plan conflict, restart lookup, independent mutation, source preservation, cancellation, and cleanup.
+
+The terminal recording reviews and executes a real plan through the same panel.
+
+## Non-goals
+
+The preview does not promise provider-session continuity across runners.
+
+It does not display raw checkpoint data or provider-private fields.
diff --git a/docs/components/headless-and-accessibility.md b/docs/components/headless-and-accessibility.md
new file mode 100644
index 0000000..8fe78c8
--- /dev/null
+++ b/docs/components/headless-and-accessibility.md
@@ -0,0 +1,85 @@
+# Headless and accessible presentation
+
+## Job
+
+Headless and plain presentation expose the same Braid application state and commands without depending on an interactive terminal.
+
+## Best simple implementation
+
+Use the same controller, immutable view model, typed intents, and application core as the TUI.
+
+Use bounded JSONL envelopes for automation.
+
+Use semantic plain text for screen readers, logs, and non-TTY output.
+
+Do not create a second reducer or test-only product path.
+
+## Surfaces
+
+The JSONL interface accepts versioned command envelopes with request and operation identifiers.
+
+It emits direct responses, state snapshots, and events as bounded versioned envelopes.
+
+Plain mode emits safe human-readable status and event lines.
+
+Accessibility projection emits the selected transcript, status, pending decisions, and navigation meaning without ANSI styling.
+
+## Inputs and outputs
+
+Every mutating command requires a stable operation identifier.
+
+Every direct response echoes the request identifier.
+
+Errors include a stable code, safe message, and retryability.
+
+Events include their canonical revision and entity identifiers.
+
+Output fields preserve zero, null, unknown, and unavailable as distinct values.
+
+## Bounds and backpressure
+
+Input line size, JSON depth, command arguments, output envelope size, and cached request count are bounded.
+
+Malformed input returns one error and does not desynchronize later lines.
+
+Slow subscribers cannot grow an unbounded output queue.
+
+State snapshots use the same bounded semantic projections as the terminal.
+
+## Idempotency and restart
+
+Duplicate request identifiers on one connection return the cached direct response.
+
+Duplicate operation identifiers across connections reconcile through the journal.
+
+Changed input under one operation identifier returns a conflict.
+
+Restart restores durable application state before accepting new mutations.
+
+## Failure and safety
+
+JSONL stdout contains protocol envelopes only.
+
+Diagnostics use stderr.
+
+Secret values and credential references marked private never enter either output.
+
+Untrusted text is sanitized and bounded before serialization or plain output.
+
+## Performance
+
+Projection reuses cached semantic state for one application revision.
+
+Subscriber delivery coalesces high-frequency deltas while preserving durable terminal events.
+
+## Proof
+
+Contract tests run commands through headless, plain, virtual-terminal, and packed-binary surfaces against one application core.
+
+Tests cover malformed input, bounds, duplicate request, duplicate operation, restart, backpressure, stdout purity, and accessibility text.
+
+## Non-goals
+
+The headless interface is not another agent runner or provider adapter.
+
+Plain output does not expose terminal-only control sequences.
diff --git a/docs/components/help-and-capability-states.md b/docs/components/help-and-capability-states.md
new file mode 100644
index 0000000..ad0169a
--- /dev/null
+++ b/docs/components/help-and-capability-states.md
@@ -0,0 +1,76 @@
+# Help and capability states
+
+## Job
+
+Help explains the controls that exist now, while unavailable states explain why one requested action cannot run now.
+
+## Best simple implementation
+
+Build help from the canonical command registry and current keymap.
+
+Build action availability from provider and runtime capability reports.
+
+Render unsupported actions as visible and disabled when discovery matters.
+
+Use one `UnavailablePanel` for a requested action and one `HelpViewPanel` for discoverable guidance.
+
+Do not advertise a command that no typed intent can dispatch.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `HelpViewPanel` | Render current commands, keys, and concise usage guidance. |
+| `UnavailablePanel` | Show the requested action and one exact capability or configuration reason. |
+
+## Inputs and outputs
+
+Help receives immutable command and key descriptions.
+
+Unavailable state receives a safe title and reason.
+
+Both surfaces emit only close or navigation events.
+
+They do not mutate product state.
+
+## Copy rules
+
+Name the user action first.
+
+State the exact missing capability, configuration, or connection condition.
+
+Offer a valid route only when one exists.
+
+Do not show fake progress, fake readiness, or procedural cards.
+
+Do not repeat a control label as explanatory copy.
+
+## Responsive behavior
+
+Narrow help keeps command, key, and one-line meaning.
+
+Wider help adds aliases and capability notes.
+
+Unavailable state always keeps its title, reason, and close route visible.
+
+## Failure and safety
+
+Capability reports are authoritative for availability.
+
+An unknown report disables the action instead of guessing support.
+
+Reasons are sanitized and cannot carry terminal controls.
+
+Credential or provider-private details never appear in the reason.
+
+## Proof
+
+Tests compare the command registry, palette, autocomplete, help, and dispatcher for drift.
+
+Fixtures cover unavailable runner actions, workspace fork, attach, interaction, analysis, and connection states.
+
+## Non-goals
+
+Help does not become product documentation inside the main transcript.
+
+An unavailable panel does not silently change the selected profile or connection.
diff --git a/docs/components/interactions.md b/docs/components/interactions.md
new file mode 100644
index 0000000..350205a
--- /dev/null
+++ b/docs/components/interactions.md
@@ -0,0 +1,96 @@
+# Interactions and secrets
+
+## Job
+
+Interactions let a user answer, approve, decline, cancel, or automate a runtime request with the shape the provider declared.
+
+## Best simple implementation
+
+Render every request through the canonical `answerSpec` contract.
+
+Use one `InteractionShell` that delegates value entry to the matching input component.
+
+Use `TerminalInteractionController` as the only modal queue and dispatch coordinator.
+
+Keep secret entry in `MaskedSecretInput` and send the value only through its bounded response path.
+
+Fail closed for an unknown answer shape that Braid cannot validate.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `TerminalInteractionController` | Select the next pending request, open its panel, and reconcile response outcomes. |
+| `InteractionShell` | Render the request context, answer control, outcomes, timeout, and footer. |
+| `InteractionDecisionList` | Select one declared decision or option. |
+| `OutcomeKeys` | Route explicit approve, decline, and cancel keys. |
+| `SecretInput` | Adapt a secret answer specification to masked entry. |
+| `MaskedSecretInput` | Accept a secret without exposing its value through render or inspection. |
+
+## Inputs and outputs
+
+An `InteractionView` includes run, interaction, provider session, kind, prompt, answer specification, outcomes, deadline, and capability data.
+
+The component emits a typed response or cancellation with both run and interaction identifiers.
+
+The operation identifier remains stable across retry and restart.
+
+The component never emits a value that violates the declared answer specification.
+
+## Answer shapes
+
+Text supports required and maximum-length constraints.
+
+Number supports required, minimum, and maximum constraints.
+
+Boolean and select use declared options.
+
+Forms validate every field and emit one complete response object.
+
+Secret answers use masked entry and a secret-designated response path.
+
+Unknown shapes render the generic explanation and disable invalid submission.
+
+## Queue and concurrency
+
+Interactions stay attached to their source run.
+
+The controller shows one interaction at a time and retains the remaining order.
+
+Focusing another run changes priority but does not reassign a request.
+
+Answering a background request carries its explicit run identifier.
+
+Duplicate provider events do not create a second modal.
+
+## Failure and safety
+
+Timeout, provider cancellation, user cancellation, stale response, declined response, and accepted response remain distinct outcomes.
+
+A secret value never enters profiles, SQLite, logs, view models, snapshots, screenshots, or trace artifacts.
+
+An acknowledged response replays as the same result.
+
+A changed response with the same operation identifier returns a conflict.
+
+Terminal text is sanitized before the prompt or option label renders.
+
+## Performance
+
+Only the active interaction panel renders.
+
+The pending queue uses immutable summaries and bounded prompt text.
+
+Deadline updates do not rebuild the transcript.
+
+## Proof
+
+Tests cover every answer shape, keyboard acceptance, decline, timeout, cancel, duplicate event, response retry, restart, secret canaries, and unknown shapes.
+
+Live proof must keep a retained cloud interaction answerable after Braid reconnect and continue exactly once.
+
+## Non-goals
+
+The component does not invent an approval policy or default answer.
+
+It does not store credential values for later reuse.
diff --git a/docs/components/modal-coordination.md b/docs/components/modal-coordination.md
new file mode 100644
index 0000000..59ef327
--- /dev/null
+++ b/docs/components/modal-coordination.md
@@ -0,0 +1,85 @@
+# Modal coordination
+
+## Job
+
+Modal coordination shows temporary decision and detail surfaces without corrupting focus, drafts, or the underlying transcript.
+
+## Best simple implementation
+
+Use one `ModalCoordinator` as the stack owner for every overlay.
+
+Use `TerminalOverlayController` to translate product actions into modal workflows.
+
+Use `TerminalSurfaceOverlays` to construct full-viewport activity, graph, analysis, comparison, fork, profile, and help surfaces.
+
+Do not let a component add itself directly to the TUI root.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `ModalCoordinator` | Open, replace, close, focus, and size the modal stack. |
+| `TerminalOverlayController` | Coordinate conversation, connection, automation, configuration, and surface workflows. |
+| `TerminalSurfaceOverlays` | Build product surfaces from the current immutable view. |
+
+## Inputs and outputs
+
+The coordinator receives a focusable component and bounded width, height, and anchor options.
+
+The overlay controllers receive the current view, operation-id source, typed dispatch function, and render request.
+
+An overlay emits typed intents or local navigation events.
+
+Closing an overlay emits no product mutation unless the user accepted an explicit action.
+
+## Focus and lifecycle
+
+The coordinator keeps an ordered stack and focuses only its top entry.
+
+Opening the first modal hides the composer from rendering and input.
+
+Closing the top modal restores the next modal or the composer.
+
+Replacing a workflow step keeps one stack position and prevents hidden focusable children.
+
+Closing the application invalidates outstanding overlay generations so late asynchronous results cannot reopen a surface.
+
+## Responsive behavior
+
+Full-viewport browsers use the available terminal size.
+
+Decision panels use bounded percentages with a minimum usable width.
+
+At 40×12, the panel keeps its title, current decision, and cancel route.
+
+At larger sizes, the same component reveals descriptions and details.
+
+## Failure and safety
+
+An asynchronous load failure replaces the pending view with one safe unavailable panel.
+
+Late results from a closed generation are ignored.
+
+Focus restoration does not submit the editor or replay the closing key.
+
+Every modal body receives sanitized view-model text.
+
+## Performance
+
+Only the top modal handles input.
+
+Hidden surfaces do not poll or render.
+
+Runtime-backed surfaces subscribe through one controller and stop refresh when closed.
+
+## Proof
+
+Tests cover nested confirmation, replacement, escape, left navigation, focus restoration, resize, late results, and close cleanup.
+
+Virtual-terminal fixtures cover every full-viewport surface at the four required sizes.
+
+## Non-goals
+
+The coordinator does not own workflow state, provider calls, or durable decisions.
+
+An overlay does not become a permanent navigation region.
diff --git a/docs/components/multi-run-orchestration.md b/docs/components/multi-run-orchestration.md
new file mode 100644
index 0000000..a8c2f7c
--- /dev/null
+++ b/docs/components/multi-run-orchestration.md
@@ -0,0 +1,169 @@
+# Multi-run orchestration
+
+## Job
+
+Multi-run orchestration admits and observes independent Braid runs without collapsing their branch or conversation identity.
+
+It keeps one explicit focused run for foreground controls while every non-terminal run remains addressable.
+
+It preserves continuation ordering on one branch while allowing different branches and conversations to stream concurrently.
+
+## Best simple implementation
+
+Keep one durable active-run index, one explicit focused run, and one independent reader per admitted run.
+
+Serialize state commits through the journal while different branches execute concurrently.
+
+Address every control, interaction, queue entry, and replay cursor by exact run and branch identity.
+
+Do not add a global scheduler when branch admission and stable operation identities already provide the required ordering.
+
+## Ownership
+
+`BraidState.activeRuns` owns the durable index of active run identifiers and their immutable conversation and branch targets.
+
+`BraidState.focusedRunId` owns the foreground focus used by navigation, controls, and interaction presentation.
+
+`BraidState.activeRunId` remains a compatibility alias for the focused run when that run is active.
+
+The reducer owns index normalization, event identity, lifecycle transitions, and duplicate-event handling.
+
+Admission owns branch validation, per-branch exclusivity, immutable run receipts, and capability snapshots.
+
+The durable sender owns admission reservations keyed by conversation and branch.
+
+The execution controller owns one reader and abort controller per run.
+
+The lifecycle and shutdown controllers own cancellation and drain decisions for locally live runs.
+
+The journal remains authoritative for all run events and operation decisions.
+
+## Inputs
+
+Admission receives a text input, operation identifier, conversation identifier, branch identifier, profile snapshot, connection reference, and optional continuation proof.
+
+Runtime readers receive the run receipt and an independent abort signal.
+
+Reducers receive globally ordered durable events with run-local provider sequence and cursor metadata.
+
+Navigation and focus receive typed intents that carry stable operation identifiers.
+
+Queue entries carry their source run plus explicit conversation and branch identifiers when available.
+
+## Outputs and intents
+
+The reducer emits immutable state with active run references, one focused run, terminal compatibility data, and branch-scoped queues.
+
+The execution controller emits typed run lifecycle, provider, interaction, usage, and terminal events through the journal.
+
+The application accepts `focus-run`, explicit run control, branch navigation, branch creation, conversation navigation, and configuration intents while other runs continue.
+
+The headless projection exposes the focused run and active run references without exposing provider-private state.
+
+## State
+
+An active run is any run with a non-terminal status, including a detached run that still requires explicit recovery.
+
+A live run is any active run that still owns a local reader or control operation, excluding detached runs.
+
+Each active reference contains only `runId`, `conversationId`, and `branchId`.
+
+The normalizer derives active references from canonical run records after every reduction.
+
+The normalizer keeps an existing focus when possible and selects the newest active run when focus becomes unavailable.
+
+The normalizer clears the compatibility alias when focus is terminal or detached.
+
+Snapshot restore accepts old snapshots with only `activeRunId` and reconstructs the active reference list from run records.
+
+Snapshot restore rejects unknown, duplicate, or identity-mismatched active references before normalization.
+
+## Algorithms
+
+Admission rejects a second run only when an active run already targets the requested conversation and branch.
+
+Admission materializes draft changes only for the selected branch and never mutates the immutable receipt of another run.
+
+The durable sender holds one pending reservation per conversation and branch so independent branches can await admission together.
+
+The execution controller starts each admitted run immediately and records provider sequence independently for each run.
+
+Queue draining selects the oldest eligible entry whose target branch has no active run.
+
+Queue draining leaves entries behind a live run and starts eligible entries on other branches.
+
+Conversation and branch selection focus the active run for the selected target without stopping background readers.
+
+Control requests carry the explicit target run identifier so a background run cannot receive focus-dependent control by accident.
+
+Restart reconciliation scans every locally live run and performs provider status or replay recovery concurrently.
+
+Shutdown cancels or detaches every locally live run with a distinct operation identifier.
+
+## Concurrency
+
+The journal transition tail serializes durable state changes while runtime readers remain independent.
+
+Provider event deduplication keys include both run identifier and provider event identifier.
+
+Run-local provider sequence checks do not treat another run's sequence as a gap.
+
+The operation ledger serializes duplicate controls and queue drains by their stable operation identifiers.
+
+Detached runs retain durable state but do not receive a local abort controller or automatic restart reader.
+
+Focused-run changes never rewrite conversation, branch, turn, provider session, environment, or worker identifiers.
+
+## Failures
+
+An invalid target branch fails before admission and does not create an operation or provider call.
+
+A same-branch admission race fails closed and leaves the existing run and queue intact.
+
+A duplicate event with the same identity is acknowledged without another transition.
+
+A duplicate event with a changed payload or position raises a durable conflict.
+
+A disconnected reader uses the run's replay capability and cursor before declaring an unknown outcome.
+
+Storage routes late provider events by run identity before it falls back to the selected conversation.
+
+A provider cancellation acknowledgement settles only its target run and leaves other active runs unchanged.
+
+An unknown cancellation remains unknown until provider evidence supports a correction.
+
+An invalid persisted active reference quarantines the snapshot and allows journal recovery to proceed.
+
+## Performance
+
+Active-run lookup scans the bounded in-memory run projection by immutable branch identity.
+
+Each runtime reader performs one independent event reduction and does not wait for another reader's provider call.
+
+Restart reconciliation uses one asynchronous task per locally live run.
+
+The compatibility alias adds no second source of truth because normalization derives it from focus and active records.
+
+## Tests
+
+`test/application.test.ts` proves concurrent branch streaming, same-branch queue ordering, focus switching, background interaction responses, background cancellation, disconnect replay, and duplicate provider events.
+
+`test/storage-snapshots.test.ts` proves legacy active-run migration, invalid-reference quarantine, restart restoration, and duplicate conflict behavior.
+
+`test/storage-journal-routing.test.ts` proves late background events remain in their run conversation after focus changes.
+
+`test/cli-startup.test.ts` proves repeated signal captures retain the newest frame during active streaming.
+
+`test/w8-runs.test.ts` retains single-run replay, cursor, cancellation, and queue coverage against the same ports.
+
+The unit and storage scopes run the new cases through the production application core and journal interfaces.
+
+## Non-goals
+
+This component does not define agent identity, runner identity, provider session identity, environment identity, or worker identity.
+
+This component does not launch runner processes or parse provider-native output.
+
+This component does not create a global execution pool or reorder turns on one branch.
+
+This component does not persist credential values, secret answers, or provider-private state.
diff --git a/docs/components/native-continuation.md b/docs/components/native-continuation.md
new file mode 100644
index 0000000..9aa99d4
--- /dev/null
+++ b/docs/components/native-continuation.md
@@ -0,0 +1,73 @@
+# Native continuation
+
+## Purpose
+
+Native continuation adds one turn to the exact runner-owned session at the current branch tip.
+
+It preserves provider-native context without copying hidden history into Braid.
+
+## Ownership
+
+`agent-interface` owns the boundary proof, exact run reference, request digest, and acknowledgement schemas.
+
+`agent-runtime` owns exact reconnection, boundary observation, idempotent continuation, and result validation.
+
+Braid owns branch-tip selection, capability presentation, durable admission, restart recovery, and terminal dispatch.
+
+Providers own the live session and must advertise both atomic boundary checks and request idempotency.
+
+## Best simple implementation
+
+Braid selects only the completed run at the open branch tip with the same profile and connection.
+
+The run must contain an exact six-field provider control reference.
+
+The environment capability document must advertise session continuation, an atomic boundary, and request idempotency.
+
+Braid reconnects the exact source run and asks Runtime for a canonical boundary proof.
+
+Braid stores that proof in the destination run receipt before dispatch.
+
+Runtime binds one stable operation identifier to the exact turn, source run, and expected boundary.
+
+Runtime calls `continueNative` and accepts only an accepted or replayed acknowledgement.
+
+The returned run must stay in the same provider, environment, and provider session.
+
+This path does not create a new environment, parse runner output, or reconstruct provider history.
+
+## Restart behavior
+
+A crash after durable admission leaves the destination run in a recoverable state.
+
+Restart rebuilds the same continuation input from the stored receipt.
+
+Runtime repeats the same request digest and requires the provider to return the original result.
+
+The replay path never falls back to a generic send when an exact boundary check fails.
+
+## Tangle recovery
+
+Tangle lookup scans bounded personal sandbox pages and matches the retained environment metadata.
+
+It then reads the exact session status and validates the provider, environment, session, and execution identifiers.
+
+An environment-phase crash reuses the recorded environment and execution identity.
+
+Duplicate environments, changed identity, missing capabilities, and malformed control references fail closed.
+
+## User interface
+
+The terminal routes an ordinary send through native continuation when the current branch tip qualifies.
+
+Generic providers keep the ordinary send path.
+
+Stale runs, incomplete runs, profile changes, connection changes, and unsupported providers do not expose continuation.
+
+## Verification
+
+Focused tests cover accepted continuation, replay after restart, exact control binding, and same-session advancement.
+
+They also cover cross-process Tangle lookup, environment-admission recovery, stale tips, incomplete tips, and boundary failure.
+
+The complete Braid test suite remains the final regression check before integration.
diff --git a/docs/components/profiles-and-connections.md b/docs/components/profiles-and-connections.md
new file mode 100644
index 0000000..bd190d6
--- /dev/null
+++ b/docs/components/profiles-and-connections.md
@@ -0,0 +1,100 @@
+# Profiles and connections
+
+## Job
+
+Profiles and connections select what agent runs and where it runs without mixing portable configuration with credentials.
+
+## Best simple implementation
+
+Use `AgentProfile` as the only agent configuration object.
+
+Treat a runner as one run preference inside that profile.
+
+Store connection metadata separately from credential bytes.
+
+Ask the provider for current capabilities and show exact incompatibilities before save or run.
+
+Use one staged configuration workflow with explicit review and commit.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `ConfigurationWizard` | Select profile, connection, and model through one staged workflow. |
+| `ConfigurationCredential` | Collect a required credential through a bounded secret path. |
+| `PreparedCredential` | Hold the commit or rollback capability for a staged secret write. |
+| `ConfigurationReview` | Show the effective selection before durable activation. |
+| `ResponsiveText` | Present configuration detail without breaking narrow layouts. |
+| `ProfileEditorViewPanel` | Create or edit canonical profile fields. |
+| `ProfileCompatibilityPanel` | Explain supported, ignored, or blocking fields from real capability data. |
+| `ConnectionSetupViewPanel` | Select, test, and activate an execution connection. |
+| `ConnectionMetadataEditor` | Edit secret-free connection name, kind, endpoint, account, and region. |
+| `ConnectionOverlayWorkflow` | Coordinate create, edit, test, select, remove, and credential recovery. |
+
+## Data boundaries
+
+A profile contains portable agent intent, runner preference, model, limits, and policy.
+
+A connection contains secret-free transport and account metadata plus a credential reference.
+
+Credential bytes live only in the operating-system credential facility or their bounded setup path.
+
+The active selection records stable profile and connection identifiers.
+
+Each run receipt freezes the exact effective profile and connection identity used for admission.
+
+## Workflow
+
+Discovery loads available profiles, connections, models, and provider capabilities.
+
+Selection validates the exact profile against the selected connection.
+
+Credential preparation writes through a recoverable staged operation.
+
+Review shows effective runner, model, endpoint label, limits, and compatibility findings without secret values.
+
+Commit saves metadata and activates the selection only after validation succeeds.
+
+Rollback removes an uncommitted credential if later persistence fails.
+
+## Failure and safety
+
+Unsupported required fields block activation with the exact field and reason.
+
+Optional unsupported actions remain disabled without weakening the saved profile.
+
+Connection testing has bounded time and response size.
+
+Endpoints are normalized for transport and redacted for display.
+
+Credential removal is serialized, journaled, and recoverable after process interruption.
+
+Removing a shared credential remains unavailable until no saved connection references it.
+
+## Responsive behavior
+
+Narrow configuration shows the active stage, selected value, blocking reason, and navigation keys.
+
+Standard and wide layouts add descriptions and the effective review summary.
+
+No stage shows a giant default selection or repeats labels already visible in the control.
+
+## Performance
+
+Discovery and validation are asynchronous and cancellable.
+
+Late results carry a generation and cannot replace a newer selection.
+
+Lists use bounded summaries rather than full profile documents.
+
+## Proof
+
+Tests cover create, edit, validate, test, activate, restart, staged credential recovery, shared credential removal, unsupported fields, and secret canaries.
+
+Keyboard proof walks from profile selection through connection review and back without losing state.
+
+## Non-goals
+
+The terminal does not materialize provider-private profile files.
+
+It does not maintain a local runner or model compatibility table.
diff --git a/docs/components/retained-run-lifecycle.md b/docs/components/retained-run-lifecycle.md
new file mode 100644
index 0000000..1b41002
--- /dev/null
+++ b/docs/components/retained-run-lifecycle.md
@@ -0,0 +1,98 @@
+# Retained run lifecycle
+
+## Purpose
+
+The retained run lifecycle keeps one provider execution observable and controllable after a client disconnects or restarts.
+
+It preserves exact provider identity and never treats a new execution as a recovered run.
+
+## Ownership
+
+`agent-interface` owns exact control references, capability documents, events, interactions, and control acknowledgements.
+
+`agent-runtime` owns retained handles, provider reconnection, replay cursors, status reconciliation, and idempotent controls.
+
+Braid owns durable admission receipts, local event reduction, reconnect scheduling, user intents, and terminal presentation.
+
+The provider owns the live process, native session, environment, and final execution result.
+
+## Best simple implementation
+
+Braid records intent before any provider mutation.
+
+Runtime records the environment and exact control reference as each provider boundary succeeds.
+
+Every identity field is explicit: Braid run, provider run, environment, execution, session, turn, and operation.
+
+Reconnect uses the saved exact control reference and the last accepted event sequence.
+
+Replay rejects duplicates before reduction and records sequence gaps without inventing provider output.
+
+Detach closes only the local reader and leaves the provider run active.
+
+Cancel uses one stable operation identifier and reconciles an ambiguous acknowledgement through exact provider status.
+
+Unknown status remains unknown until a later exact observation resolves it.
+
+The implementation never parses runner output or reads provider-private state.
+
+## Durable phases
+
+| Phase | Durable fact | Safe restart action |
+| --- | --- | --- |
+| Intent | Request digest, provider, session, execution, and environment key | Repeat admission with the same identifiers. |
+| Environment | Exact created environment plus the intent facts | Discover the matching execution before dispatch. |
+| Dispatched | Complete exact control reference | Reconnect the retained handle and replay after the saved sequence. |
+| Terminal | Final provider result and local terminal event | Render the saved result and perform no provider mutation. |
+
+A changed request with the same operation identifier fails as a conflict.
+
+A repeated request with the same digest returns the original acknowledgement.
+
+## Concurrency and performance
+
+Each Braid run has one prepared plan, one start promise, one retained handle, and one active reader.
+
+Replacing a reader aborts the old reader before the new stream consumes events.
+
+Process-local retained state is bounded and evicts only runs without preparation, startup, or active readers.
+
+Provider discovery uses bounded pages and validates every returned identity field.
+
+The event journal remains authoritative for the conversation graph and accepted local sequence.
+
+## User interface
+
+The Work Strip shows streaming, waiting, detached, cancelling, terminal, and unknown states for every active run.
+
+Focus changes the visible transcript without changing which run a control targets.
+
+Detach, reconnect, cancel, and interaction actions appear only when the reported capabilities support them.
+
+Unavailable actions remain visible with one plain reason.
+
+## Failure behavior
+
+An ambiguous environment or dispatch response triggers lookup with the original identifiers.
+
+Duplicate environments, conflicting control references, stale sessions, and malformed acknowledgements fail closed.
+
+A client crash does not imply provider cancellation.
+
+A stream disconnect does not imply run failure.
+
+Credentials and raw provider payloads never enter the journal, frame captures, or diagnostics.
+
+## Proof
+
+Tests cover intent, environment, and dispatch crashes; restart; replay; duplicate events; sequence gaps; detach; reconnect; cancel; and interaction recovery.
+
+Live proof kills the first Braid process, reconnects from another process, advances the same session, cancels, and cleans the exact environment.
+
+Release proof also requires concurrent runs because one retained handle must never block an unrelated branch.
+
+## Non-goals
+
+Braid does not implement a runner, provider session store, or retained execution protocol.
+
+Braid does not infer continuity from matching text, workspace paths, or display labels.
diff --git a/docs/components/run-stream-sanitizer.md b/docs/components/run-stream-sanitizer.md
new file mode 100644
index 0000000..c690ff8
--- /dev/null
+++ b/docs/components/run-stream-sanitizer.md
@@ -0,0 +1,30 @@
+# Run stream sanitizer
+
+## Job
+
+The application ingestion boundary owns one incremental sanitizer for every active run stream.
+Each input is a trusted-boundary candidate containing untrusted provider text and an application stream name.
+Each output is safe text that may be committed to the local event journal and projected to any client surface.
+
+## Best simple implementation
+
+Keep one bounded incremental state machine per run and stream name at the application ingestion boundary.
+Reject duplicate provider events before sanitation and finalize the exact stream once at its terminal event.
+Sanitize terminal controls, secret candidates, URLs, and split Unicode before any journal write or view projection.
+Delete stream state at terminal completion and refuse new state after the bounded active-stream limit.
+
+The sanitizer carries terminal-control, credential-candidate, and split-Unicode state between input calls.
+The sanitizer keeps stream state separate for text, reasoning, and message-part delta streams.
+The sanitizer rejects terminal control payloads after the bounded control length instead of reopening visible output.
+The sanitizer replaces credential assignments, bearer values, known token forms, unsafe URLs, and bidirectional controls.
+The sanitizer preserves printable text and safe URLs after complete stream finalization.
+The application resets all stream state after an accepted terminal event or a terminal recovery transition.
+Duplicate provider events are rejected before they reach the sanitizer, so retries cannot duplicate output or advance state.
+Sequence gaps are recorded without feeding the missing event placeholder into the sanitizer.
+The registry refuses new streams after its bounded active-stream limit, which fails closed under orphaned provider runs.
+The incremental scanner bounds candidate state while allowing the reducer's existing content budget to bound durable output.
+The terminal event uses append mode for a small finalized suffix so previously committed output does not pass through a large journal payload.
+The implementation does not parse provider-native protocols, launch runners, or own provider session state.
+The implementation does not persist raw candidate text, sanitizer state, terminal frames, or credential values.
+Focused tests cover split controls, credentials, duplicate events, replay, disconnect, cancellation, finalization, isolation, Unicode, and long safe output.
+The complete local test suite remains the required proof for reducer, journal, TUI, and headless projections.
diff --git a/docs/components/safe-rendering.md b/docs/components/safe-rendering.md
new file mode 100644
index 0000000..db66ea5
--- /dev/null
+++ b/docs/components/safe-rendering.md
@@ -0,0 +1,89 @@
+# Safe rendering and responsive layout
+
+## Job
+
+Safe rendering preserves terminal integrity, Unicode correctness, and primary meaning across trusted and untrusted content.
+
+## Best simple implementation
+
+Sanitize untrusted text before any Pi component receives it.
+
+Suppress OSC control sequences by default.
+
+Render Markdown through `SafeMarkdown` after stream-boundary sanitization.
+
+Compute one layout mode from current terminal dimensions.
+
+Use progressive disclosure instead of separate product behavior at each width.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `SafeMarkdown` | Render bounded semantic Markdown after terminal sanitization. |
+
+Layout, theme, terminal identity, usage, and focused-surface helpers serve every visible component.
+
+## Sanitization boundary
+
+Provider chunks first pass through the stateful stream sanitizer.
+
+Semantic projection then removes or replaces unsafe terminal text.
+
+The renderer handles only sanitized strings and structured view values.
+
+Terminal titles use the stricter title sanitizer.
+
+Secret values never enter this boundary.
+
+## Layout modes
+
+Narrow mode supports terminals below 80 columns.
+
+Standard mode supports the primary 80-column workflow.
+
+Wide mode starts at 120 columns and adds secondary evidence.
+
+Row count also bounds composer growth, modal height, selector rows, and transcript viewport.
+
+Components recompute layout after every resize without changing product state.
+
+## Unicode and width
+
+All clipping uses terminal cell width rather than JavaScript string length.
+
+Wide glyphs, combining marks, emoji, and zero-width characters remain atomic.
+
+The renderer never splits an ANSI sequence or a terminal cell.
+
+Truncation markers consume their own measured width.
+
+## Failure and safety
+
+An incomplete escape candidate stays buffered until it becomes safe text or a suppressed control.
+
+Oversized content is bounded before layout work.
+
+Malformed Markdown renders as safe text.
+
+Unknown color support falls back to semantic text without changing content.
+
+## Performance
+
+Sanitization processes each incoming character once with bounded carry state.
+
+Layout helpers avoid scanning durable history.
+
+Renderers cap visible rows and details before width fitting.
+
+## Proof
+
+Tests cover split control sequences, OSC, CSI, C1 controls, Unicode width, resize, paste, Markdown, long lines, and hostile provider output.
+
+Captures compare semantic cells and raster output at the four required dimensions.
+
+## Non-goals
+
+Sanitization does not interpret provider-native protocol output.
+
+Responsive layout does not hide a blocking status, missing value, or capability reason.
diff --git a/docs/components/selectors-and-commands.md b/docs/components/selectors-and-commands.md
new file mode 100644
index 0000000..07f92cb
--- /dev/null
+++ b/docs/components/selectors-and-commands.md
@@ -0,0 +1,90 @@
+# Selectors and commands
+
+## Job
+
+Selectors provide one searchable keyboard contract for commands, profiles, conversations, branches, runs, workers, analyses, and rules.
+
+## Best simple implementation
+
+Use `SearchableSelector` as the only generic list interaction.
+
+Supply immutable items with stable values, safe labels, optional descriptions, and declared actions.
+
+Build the command palette as a selector over the canonical command registry.
+
+Build autocomplete from the same registry and current capability map.
+
+Do not maintain a second command list inside the terminal.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `SearchableSelector` | Filter, navigate, select, cancel, and route declared row actions. |
+| `CommandPalette` | Present supported commands from the canonical registry. |
+| `DynamicAutocompleteProvider` | Combine command completion with bounded workspace path completion. |
+| `GuardedAutocompleteProvider` | Ignore stale completion results after the input context changes. |
+
+## Inputs and outputs
+
+A selector receives a title, immutable items, theme, visible-row limit, footer, and callbacks.
+
+Selection emits the item's stable value rather than its display label.
+
+Command selection emits the same command path that typed slash input uses.
+
+Disabled commands remain visible with the exact capability reason.
+
+## Interaction contract
+
+Typing filters safe label and description text.
+
+Arrow keys move one row.
+
+Page keys move one viewport.
+
+Enter selects the current row.
+
+Escape or left closes the surface without changing application state.
+
+Declared action keys operate on the current row and never infer an entity from display order.
+
+## State
+
+Query text, selected index, and scroll offset are local presentation state.
+
+The source collection and capability decisions remain in the view model.
+
+Each update keeps selection by stable item value when possible.
+
+An empty or no-match state is explicit and still accepts cancel input.
+
+## Failure and safety
+
+Autocomplete is disabled during bracketed paste and other unsafe editor states.
+
+Late filesystem completion cannot replace results for a newer query.
+
+Paths stay under the configured workspace root.
+
+Labels, descriptions, paths, and capability reasons are sanitized before display.
+
+## Performance
+
+Filtering operates over bounded projected collections.
+
+Only visible rows render.
+
+Dynamic filesystem completion debounces input and discards stale work.
+
+## Proof
+
+Tests cover Unicode filtering, narrow widths, empty lists, no matches, paging, declared actions, late autocomplete, paste, and disabled commands.
+
+The keyboard recording opens the palette, filters an action, selects it, and returns focus.
+
+## Non-goals
+
+Selectors do not fetch provider capabilities or mutate entities.
+
+Autocomplete does not search outside the workspace or execute a command.
diff --git a/docs/components/supervision.md b/docs/components/supervision.md
new file mode 100644
index 0000000..b127ce2
--- /dev/null
+++ b/docs/components/supervision.md
@@ -0,0 +1,174 @@
+# Supervisor graph
+
+## Job
+
+The supervisor graph shows the runtime-owned tree of active supervisors and workers and routes supported controls to one exact worker.
+
+## Best simple implementation
+
+Read the canonical runtime supervisor snapshot through the shared Runtime API.
+
+The protected LIVE-11 command provisions one Runtime-owned supervisor when no external run is supplied.
+
+The Runtime provisioner creates the root, worker, acknowledger, and provider binding through its public APIs.
+
+The provisioner returns exact identifiers and an owner-scoped cleanup function.
+
+Project it into bounded `GraphNodeView` rows with stable supervisor, worker, run, and parent identifiers.
+
+Render it through `GraphView` and the shared entity browser.
+
+Dispatch steer or cancel through the runtime control API with a stable operation identifier.
+
+Wait for the runtime acknowledgement and render its effect instead of treating request admission as success.
+
+Reconnect by loading a fresh runtime snapshot and rereading the same operation identifier.
+
+Use `attachWorker` only when an exact provider source exists and the runtime returns an opaque interactive handle.
+
+Do not read `.agent/supervisor` files or infer control support from worker status text.
+
+The protected command accepts `BRAID_SUPERVISOR_ROOT`, `BRAID_SUPERVISOR_ID`, and `BRAID_SUPERVISOR_WORKER` only as an all-or-nothing external-run override.
+
+Those identifiers are not the normal path and Braid never cleans up an external run it does not own.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `GraphView` | Filter and navigate the projected hierarchy and open node details. |
+| `RuntimeSupervisorWatcher` | Read and refresh the Runtime-owned immutable snapshot. |
+| `RuntimeSupervisorController` | Resolve one exact worker and route typed steer, cancel, and attach operations. |
+| `SupervisorService` | Serialize projection commits and expose the supervisor port to the application. |
+| `RuntimeSupervisorProvisioner` | Ask Runtime to create one owned proof run and validate its cleanup receipt. |
+
+The runtime owns graph reads, control reconciliation, and live worker state.
+
+## Inputs and outputs
+
+Each node includes kind, stable identifier, parent, depth, status, label, spend, timing, and declared actions.
+
+Graph edges contain explicit source and destination identifiers.
+
+Steer and cancel intents include the source Braid run, supervisor, worker, payload, and operation identifier.
+
+The component renders the recorded control outcome after runtime reconciliation.
+
+Steer acknowledgement includes the matching request digest, exact worker, and delivered effect.
+
+Cancellation acknowledgement includes the matching operation, proven terminated worker identifiers, and effect.
+
+Terminal takeover exposes only the runtime handle or the runtime's explicit unavailable reason.
+
+## Hierarchy and refresh
+
+Projection keeps required ancestors for every retained recent worker.
+
+Sibling order follows the runtime snapshot order and stable recency rules.
+
+Two Braid runs keep separate supervisor bindings even when snapshot order changes.
+
+Refresh ignores an unchanged snapshot and stops when the graph closes.
+
+Selection remains on the same node identifier across refreshes.
+
+Reconnect never reuses a stale local control result as a new effect.
+
+## Capability behavior
+
+Steer appears only when the runtime reports steer support for that worker.
+
+Cancel appears only when the runtime reports cancellation support.
+
+Attach appears in the interactive TUI when at least one projected worker is running.
+
+Braid resolves the selected projected identifiers back to Runtime identifiers before attachment.
+
+Runtime rereads the exact durable worker binding and returns an opaque handle or a named unavailable reason.
+
+Braid claims control, suspends its own screen, forwards terminal input and resize, and restores the same screen after detach.
+
+The JSONL interface keeps attachment unavailable because it cannot present a native terminal.
+
+If Runtime reports that the selected provider supports terminal takeover, LIVE-11 requires a successful exact attach.
+
+A failed attach never becomes a simulated terminal row.
+
+The disabled action includes that exact reason.
+
+An available attach result carries the exact provider-owned process handle, not a reconstructed display row.
+
+## Failure and safety
+
+An unavailable runtime read preserves the last confirmed snapshot and shows stale status.
+
+An unknown control result remains unknown until the runtime reports a terminal outcome.
+
+Duplicate controls reconcile by operation identifier.
+
+A control can never target a row by display position.
+
+Worker output and labels are sanitized before display.
+
+An admitted request without an acknowledgement remains queued or unknown.
+
+The graph never reports delivered steering or cancellation without the matching Runtime effect.
+
+## Performance
+
+Projection retains a bounded recent set plus required ancestors.
+
+Graph filtering and layout remain linear in the bounded set.
+
+Refresh uses one subscription or bounded poll per open surface.
+
+## Proof
+
+Tests cover hierarchy, cycles, missing parents, two supervisors, status updates, spend, steer, cancel, exact attach, unavailable actions, restart, and unchanged refresh.
+
+The deterministic supervisor fixture exercises the same public Runtime API shape without creating supervisor files.
+
+Live proof provisions a real root and worker through Runtime, then requires a stream, a changed spend observation, acknowledged steering, proven cancellation, and a fresh reconnect snapshot.
+
+The release check records terminal takeover as attached or unavailable and never treats an unavailable provider as an attachment.
+
+An owned proof run must return a completed cleanup receipt with terminal root and worker status, `resourcesReleased: true`, and no remaining resources.
+
+The receipt validator binds cleanup to the provisioned root, supervisor, and worker identifiers.
+
+Cleanup runs after a passing proof and after every failed observation or control attempt.
+
+The proof records configured external runs as `not-owned` and records the owner-scoped cleanup receipt for provisioned runs.
+
+Runtime provisioner contract:
+
+```text
+provisionSupervisor({ invocationId, task, profile, workerEnvironment?, workspaceDir?,
+ timeoutMs, pollMs, connection })
+ -> { rootDir, supervisorId, workerId, providers?, terminalTakeover, cleanup() }
+cleanup()
+ -> { status: "completed", rootDir, supervisorId, workerId,
+ supervisorStatus, workerStatus, resourcesReleased: true, remainingResources: [] }
+```
+
+The Braid LIVE-11 caller resolves its task, canonical profile, and provider connection before it calls Runtime.
+
+The task is the initial worker assignment and remains caller-owned.
+
+The profile is the canonical `AgentProfile` supplied by the caller.
+
+The connection is either a provider or client object, or an explicit endpoint and API key.
+
+`workerEnvironment` carries generic provider create fields such as workspace, name, and metadata.
+
+Runtime does not receive Braid environment keys or resolve Braid credentials and endpoints.
+
+The Braid caller may use `https://sandbox.tangle.tools` as its endpoint default, but it passes the resolved endpoint and credential to Runtime explicitly.
+
+The Runtime owns all supervisor files and provider resources created by this contract.
+
+## Non-goals
+
+Braid does not implement a supervisor, agent loop, worker process, or attach transport.
+
+The graph does not equate a branch, run, worker, and provider session.
diff --git a/docs/components/terminal-shell.md b/docs/components/terminal-shell.md
new file mode 100644
index 0000000..03ab45f
--- /dev/null
+++ b/docs/components/terminal-shell.md
@@ -0,0 +1,107 @@
+# Terminal shell and chrome
+
+## Job
+
+The terminal shell keeps the transcript, composer, identity, status, focus, and terminal lifecycle coherent.
+
+It is the stable frame around every Braid workflow.
+
+## Best simple implementation
+
+Use one `BraidTerminalApp` coordinator and one `BraidShell` layout root.
+
+Feed both from the immutable `BraidViewModel` through `ApplicationUiController`.
+
+Keep terminal mode ownership in `AlternateScreenTerminal` and the application start, suspend, resume, and stop paths.
+
+Keep status and identity rendering in the fixed-height `TerminalChrome`.
+
+Route keyboard input through `TerminalInputController` and commands through `TerminalCommandController`.
+
+Do not let a panel call an application port directly.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `BraidTerminalApp` | Compose the shell, controllers, overlays, subscriptions, terminal policy, and lifecycle. |
+| `BraidShell` | Allocate rows between transcript, composer, and fixed chrome. |
+| `TerminalChrome` | Render bounded identity, status, navigation, work, and measured usage rows. |
+| `TerminalInputController` | Interpret global keys before forwarding text to the focused component. |
+| `TerminalCommandController` | Resolve a command to one typed intent or a local presentation action. |
+| `ApplicationUiController` | Project application state and dispatch typed intents. |
+| `AlternateScreenTerminal` | Enter and restore the real terminal mode without leaking control state. |
+
+## Inputs and outputs
+
+The shell receives a controller, TUI instance, theme, workspace, operation-id source, keymap, and optional native actions.
+
+The controller supplies immutable view models and accepts typed intents.
+
+The shell outputs terminal rows and never returns provider-native data.
+
+User actions become typed intents with explicit run, conversation, branch, interaction, or worker identifiers.
+
+## State and focus
+
+The application owns only presentation state such as the open modal, quit arming, composer mode, and saved draft.
+
+Durable conversations, runs, interactions, and operations remain in the application core.
+
+The modal coordinator owns focus while a modal is visible.
+
+Closing the top modal restores the previous valid focus target.
+
+Suspension releases the local terminal while preserving the controller subscription and application state.
+
+## Responsive behavior
+
+The shell computes one layout from the current columns and rows on every render.
+
+The transcript receives all rows left after chrome and composer allocation.
+
+Narrow chrome keeps status and the route to activity.
+
+Standard chrome adds navigation and a small Work Strip.
+
+Wide chrome adds execution limits and measured usage only when those values are real.
+
+No layout creates a permanent side pane.
+
+## Failure and safety
+
+Terminal cleanup must run after normal exit, signal exit, startup failure, stream failure, and test interruption.
+
+The signal lifecycle queues frame requests and atomically replaces the latest signal frame during repeated captures.
+
+Unknown capabilities render through `UnavailablePanel` with the provider reason.
+
+All title, status, identity, and notification text is sanitized before terminal output.
+
+The shell never renders credential values or secret-designated interaction answers.
+
+## Performance
+
+One frame subscription coalesces stream deltas at the configured frame interval.
+
+`ApplicationUiController` reuses one immutable final view while the application revision, failure signals, and local presentation inputs remain unchanged.
+
+An application revision or a local surface, notice, preview, or analysis selection change invalidates that view without a provider-specific path.
+
+Rendering remains proportional to the bounded visible transcript and visible Work Strip.
+
+The shell does not scan the journal or provider state during render.
+
+## Proof
+
+PTY tests prove startup, keyboard routing, suspend, resume, shutdown, and terminal restoration.
+
+Virtual-terminal tests prove exact rows and focus behavior.
+
+Captures prove the shell at 40×12, 80×24, 120×40, and 200×60.
+
+## Non-goals
+
+The shell does not own agent execution, replay, persistence, profiles, or provider sessions.
+
+The shell does not infer a runner or model from display text.
diff --git a/docs/components/transcript-composer.md b/docs/components/transcript-composer.md
new file mode 100644
index 0000000..fa78f5e
--- /dev/null
+++ b/docs/components/transcript-composer.md
@@ -0,0 +1,103 @@
+# Transcript and composer
+
+## Job
+
+The transcript shows one selected conversation branch while the composer accepts the next user action.
+
+The component preserves reading position, draft text, and action mode across streaming and focus changes.
+
+## Best simple implementation
+
+Render the transcript from semantic message parts instead of raw provider chunks.
+
+Use one Pi editor inside `ComposerView` for text entry, history, paste, selection, and autocomplete.
+
+Use `TerminalDraftController` as the only owner of durable draft synchronization.
+
+Represent submit, queue, and steer as composer modes that change the emitted intent.
+
+Do not create separate transcript implementations for streaming, completed, replayed, or imported messages.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `TranscriptView` | Render and navigate the bounded semantic document for the selected branch. |
+| `ComposerView` | Present the editor and the active submit, queue, or steer mode. |
+| `TerminalDraftController` | Save, restore, and clear branch-scoped drafts through typed intents. |
+
+`SafeMarkdown` supplies the sanitized block renderer described in [safe-rendering.md](safe-rendering.md).
+
+## Inputs and outputs
+
+The transcript receives ordered `MessageView` values and semantic parts from `BraidViewModel`.
+
+The composer receives the selected branch, run focus, capabilities, queue state, and current mode.
+
+Submission emits a typed send, queue, or steer intent with a stable operation identifier.
+
+Draft changes emit no provider call.
+
+## State
+
+Scroll position and expanded detail are local presentation state.
+
+Messages, tool parts, usage, and terminal outcomes are durable application state.
+
+Draft text is keyed by conversation and branch so navigation cannot move text into another history.
+
+A submitted draft clears only after the application accepts its operation.
+
+An unavailable action preserves the draft and shows the reason.
+
+## Streaming
+
+Semantic parts update by stable message and part identifiers.
+
+Replacement events replace one part instead of appending duplicate text.
+
+Auto-follow remains active only when the user is already at the end.
+
+Manual scroll remains stable while new background content arrives.
+
+Switching focus changes the visible branch without stopping other run readers.
+
+## Responsive behavior
+
+The composer keeps at least one editable row.
+
+It grows only within a bounded share of terminal height.
+
+The transcript receives the remaining rows and clips whole terminal cells.
+
+Narrow layouts remove secondary part metadata before message content.
+
+## Failure and safety
+
+Provider text passes through the stream sanitizer and terminal sanitizer before rendering.
+
+Incomplete control-sequence candidates never reach the Markdown renderer.
+
+Unknown message parts use the generic semantic presentation and remain bounded.
+
+Secret answers never enter transcript parts or saved drafts.
+
+## Performance
+
+The transcript projects a bounded activity document and renders only its viewport.
+
+Frame delivery coalesces rapid deltas without dropping durable events.
+
+Draft persistence uses operation identity so restart replay cannot duplicate a mutation.
+
+## Proof
+
+Tests cover multiline editing, paste, history, queue, steer, streaming replacement, branch drafts, scroll retention, and restart.
+
+PTY recordings prove prompt entry, editing, streaming, queueing, and cancellation through the real terminal.
+
+## Non-goals
+
+The transcript does not parse provider-native output.
+
+The composer does not decide admission, continuation, queue order, or steering support.
diff --git a/docs/components/work-strip.md b/docs/components/work-strip.md
new file mode 100644
index 0000000..18e67ec
--- /dev/null
+++ b/docs/components/work-strip.md
@@ -0,0 +1,143 @@
+# Work Strip
+
+## Job
+
+The Work Strip makes multiple active, queued, waiting, or detached runs discoverable without taking space from the transcript.
+
+It appears only when at least two work items require attention.
+
+It provides a compact route to switch focus and inspect the full activity surface.
+
+## Best simple implementation
+
+Project one immutable row for each non-terminal run or actionable queue entry.
+
+Show the strip only when at least two rows exist, and move full selection and details into Activity.
+
+Derive the `focus` label from the exact focused run while leaving conversation selection independent.
+
+Emit typed run intents and let the application own every control effect.
+
+## Ownership
+
+`workStripFor` in `src/adapters/tui/ui-projection.ts` converts canonical runs and queued entries into immutable work item views.
+
+`TerminalChrome` in `src/views/tui/terminal-chrome.ts` renders the strip beside stable status chrome.
+
+`ActivityBrowser` and `EntityBrowser` provide the searchable full-viewport selector at narrow sizes.
+
+`focus-run` is the typed intent that transfers focus without changing run ownership.
+
+The application owns control and interaction dispatch after the focused run changes.
+
+## Inputs
+
+The projection receives immutable Braid state with runs, queued entries, branch identifiers, receipts, capabilities, interactions, and focus.
+
+The renderer receives a Braid view model, terminal width, terminal context mode, and theme.
+
+The activity selector receives keyboard input and a bounded list of run rows.
+
+## Outputs and intents
+
+Each item exposes branch, state, runner, model, pending interaction count, a `focus` or `work` label, and switch, ask, steer, and cancel actions.
+
+Each activity run row carries its run identifier for explicit focus dispatch.
+
+The narrow strip emits a visible `/activity` route instead of opening a permanent side pane.
+
+The activity browser emits `focus-run` when the selected run row is opened.
+
+The focused run remains separate from the selected conversation branch so background controls target the intended run.
+
+## State
+
+The strip includes all non-terminal runs and all queued entries with a known source run.
+
+Detached runs remain visible so the operator can distinguish remote work from local work.
+
+Queued entries remain separate items even when they share a source run.
+
+An item labels the controlled run as `focus` and every other row as `work`.
+
+The label comes from `focusedRunId` and never from row order or the selected conversation.
+
+An item reports runner and model from the admitted run receipt or canonical run record.
+
+An item reports only pending interactions and never includes response values.
+
+## Algorithms
+
+The projection filters terminal runs before constructing items.
+
+The projection appends queued entries after active runs and preserves journal order.
+
+The projection returns no strip for fewer than two items.
+
+The narrow renderer emits one bounded summary line with the item count and activity route.
+
+The standard renderer emits up to three rows with bounded branch identities and priority-aware state, waiting, and control fields.
+
+The wide renderer emits up to eight rows, includes unavailable control markers, and keeps detail in the selected activity view.
+
+Long branch identities retain both a stable prefix and suffix while the canonical identifier remains unchanged in emitted intents.
+
+The renderer sanitizes branch, state, runner, model, and action text before terminal output.
+
+The activity view uses the existing searchable selector and opens detail in the full viewport.
+
+## Concurrency
+
+Projection runs against immutable state and never reads provider streams directly.
+
+Rows update independently as each run commits events through the shared journal.
+
+Focus changes commit one durable event and do not pause, cancel, or detach another run.
+
+Interaction and control actions carry an explicit run identifier from the row to the application.
+
+The strip remains conditional so one active run keeps the original transcript-first layout.
+
+## Failures
+
+Malformed provider text is sanitized before it reaches the strip or activity selector.
+
+Missing runner or model values render as bounded unknown values rather than guessed identities.
+
+An unavailable control has a `!` marker in the action list and remains disabled by the capability map.
+
+An unknown run focus request returns a stable application error without changing state.
+
+Terminal rows remain inspectable but cannot receive live cancellation or steering.
+
+Rows select complete fields by priority before they elide a bounded branch identity, so controls never become partial words.
+
+## Performance
+
+The projection performs bounded scans over the existing run and queue arrays.
+
+The renderer caps visible rows at eight on wide terminals and three on standard terminals.
+
+The narrow renderer performs one string fit and adds no persistent pane.
+
+The full activity selector reuses existing bounded filtering and row rendering.
+
+## Tests
+
+`test/application.test.ts` proves focus switching and explicit background interaction and cancellation routing.
+
+The TUI test scopes prove keyboard focus dispatch, selector behavior, and stable narrow layouts.
+
+The responsive terminal proof captures 40×12, 80×24, 120×40, and 200×60 layouts.
+
+The visual capture records an eight-turn keyboard walkthrough, while TUI tests cover activity selection and focus dispatch.
+
+## Non-goals
+
+The Work Strip does not replace the transcript or duplicate provider output.
+
+The Work Strip does not create a permanent activity pane at any terminal width.
+
+The Work Strip does not decide provider capabilities or invent runner and model catalogs.
+
+The Work Strip does not expose credentials, secret answers, raw provider payloads, or worker internals.
diff --git a/docs/components/workspace-branching.md b/docs/components/workspace-branching.md
new file mode 100644
index 0000000..ac4dde2
--- /dev/null
+++ b/docs/components/workspace-branching.md
@@ -0,0 +1,125 @@
+# Workspace branching
+
+## Job
+
+Workspace branching creates an isolated provider environment from an exact source run and records every cleanup result.
+
+It supports checkpoint, lookup, fork, restart replay, destination mutation, source preservation, and resource cleanup.
+
+## Component map
+
+| Component | Responsibility |
+| --- | --- |
+| `ConversationBranches` | Build and validate the digest-bound workspace plan. |
+| `conversation-branch-effects.ts` | Execute provider checkpoint and fork effects, then record Braid identities. |
+| `AgentWorkspaceBranchingProvider` | Reconstruct a fresh source-scoped operation handle after restart. |
+| `createTangleWorkspaceBranchingProvider` | Resolve Tangle credentials and delegate exact Sandbox operations. |
+| `tangle-workspace-proof.mjs` | Run the protected LIVE-09 and LIVE-10 production proofs. |
+
+## Best simple implementation
+
+Braid stores the source control reference, operation digest, provider checkpoint identity, and provider environment identity.
+
+Braid stores no live provider environment handle in durable state.
+
+The provider exposes `forEnvironment(sourceEnvironmentId)` and creates a fresh operation handle for each recovery path.
+
+The Tangle adapter owns Sandbox calls for checkpoint, lookup, delete, fork, lookup, and destroy.
+
+The application validates every response against the canonical request digest before it records a resource.
+
+The application calls lookup before creation, so a retry cannot create a second checkpoint or fork.
+
+Cleanup names the resource kind, provider, target identifier, and cleanup request digest.
+
+The application refuses source cleanup when the target is the source environment.
+
+## Confidential placement
+
+The request records `requested` placement separately from provider evidence.
+
+The Tangle adapter calls `getTeeAttestation` on the forked Sandbox child.
+
+The selected `tangle-sandbox` connection carries an immutable, public Nitro trust policy.
+
+The policy requires non-empty SHA-256 measurement and policy identifier allowlists.
+
+The policy also sets a bounded maximum age for signed and provider timestamps.
+
+The startup configuration persists this policy with the connection record.
+
+Credentials, quotes, certificates, and executable module paths never enter that record.
+
+The adapter pins the AWS Nitro Enclaves Root-G1 certificate and checks its SHA-256 fingerprint at construction.
+
+The adapter parses the provider report and the CBOR/COSE document through the published Tangle attestation package.
+
+The adapter verifies the certificate chain, COSE signature, exact nonce, raw measurement, signed-document age, and bindings.
+
+The adapter derives `providerKeyId` from the verified leaf certificate fingerprint.
+
+The adapter derives `providerSignature` from the verified COSE signature bytes.
+
+The canonical replay path decodes the persisted quote and repeats every check.
+
+Replay also requires the persisted provider key and signature to match the derived identities.
+
+Braid marks `confidentialVerified` only after this canonical verifier accepts the complete attestation.
+
+The request and attestation remain unverified when either verifier or attestation evidence is absent.
+
+## Restart and cleanup flow
+
+1. Plan from one immutable source branch, run, control reference, and environment.
+2. Checkpoint through the fresh source-scoped provider handle.
+3. Fork through the same handle with a separate idempotency key.
+4. Record the returned destination environment and graph edge.
+5. Reopen Braid and replay the same operation digest.
+6. Reconstruct the provider handle from the persisted source environment identifier.
+7. Look up both resources before cleanup.
+8. Delete the checkpoint and destroy the destination environment with separate requests.
+9. Verify the source contents and destroy the source environment through a fresh provider environment handle.
+
+## Production proof
+
+`LIVE-09` requires source materialization, checkpoint lookup, fork lookup, restart replay, independent destination mutation, unchanged source content, and exact cleanup.
+
+`LIVE-10` requires the typed Nitro policy, a valid attestation, missing-attestation rejection, wrong-nonce rejection, wrong-measurement rejection, and exact cleanup.
+
+The built-in proofs run through Braid application and connection adapters.
+
+They do not import the Sandbox SDK or call Sandbox methods directly.
+
+Set `BRAID_TANGLE_CONFIDENTIAL_MEASUREMENTS` to the accepted canonical `sha256:` measurements.
+
+Set `BRAID_TANGLE_CONFIDENTIAL_POLICY_IDS` to the accepted policy identifiers.
+
+Set `BRAID_TANGLE_CONFIDENTIAL_POLICY_ID` to the selected identifier from that allowlist.
+
+Set `BRAID_TANGLE_CONFIDENTIAL_MAX_AGE_SECONDS` to the bounded freshness limit.
+
+LIVE-10 persists these values as the selected connection's typed trust policy.
+
+The production composition constructs the same Nitro verifier factory for provider admission and replay.
+
+No arbitrary verifier module is loaded or executed.
+
+Missing credentials, deployment capability, or verifier configuration returns typed unavailable evidence.
+
+Configured provider failures remain failed and never become simulated passes.
+
+## Tests
+
+`test/conversation-branch-effects.test.ts` proves exact requests, provider reconstruction, restart cleanup, idempotent replay, and source protection.
+
+`test/tangle-workspace-proof.test.mjs` proves the confidential negative checks reject nonce, measurement, and self-echo mutations.
+
+`test/nitro-confidential-attestation.test.ts` proves COSE verification, identity derivation, mutation rejection, freshness, persistence, migration, replay, and secret-free snapshots.
+
+The protected live matrix validates both receipts against the public evidence schema.
+
+## Non-goals
+
+This component does not parse Sandbox output, persist provider-private state, or infer attestation trust from request fields.
+
+It does not create a workspace fork when the provider cannot prove lookup and cleanup support.
diff --git a/docs/patches/pi-tui.md b/docs/patches/pi-tui.md
index 6a22139..810f4d8 100644
--- a/docs/patches/pi-tui.md
+++ b/docs/patches/pi-tui.md
@@ -19,3 +19,11 @@ The adapter contains no renderer, viewport, input handler, or application state.
Removal condition: replace the adapter with `TuiAltScreen` only if Braid moves transcript history into Pi's `ScrollView` without losing the current keyboard, restart, visual, and full-history checks.
Revalidation required on every Pi TUI update.
+
+Revalidated: 2026-08-29 against `@earendil-works/pi-tui@0.84.4` from source commit `b79e4cc834970cca69daebffab7df1da7d1e52c4`.
+
+The published package still omits the virtual-terminal helper and still reserves alternate-screen viewport actions.
+
+The current adapter remains necessary.
+
+Proof: 156 virtual-terminal checks passed, and packed PTY checks passed at 40×12, 80×24, 120×40, and 200×60.
diff --git a/package.json b/package.json
index 55c72fa..9ed09c7 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@tangle-network/braid",
- "version": "0.2.2",
+ "version": "0.3.0",
"description": "A universal terminal interface for portable agent profiles",
"type": "module",
"bin": {
@@ -30,7 +30,7 @@
"darwin",
"linux"
],
- "packageManager": "pnpm@11.18.0",
+ "packageManager": "pnpm@11.24.0",
"license": "MIT",
"repository": {
"type": "git",
@@ -70,10 +70,12 @@
"test:live": "pnpm test:live:bridge && pnpm test:live:tangle && pnpm test:live:supervisor && pnpm test:live:analysis",
"test:live:bridge": "node scripts/live-bridge.mjs",
"test:live:bridge:release": "node scripts/live-bridge-release.mjs",
+ "test:live:bridge:continuation": "node scripts/live-bridge/native-continuation.mjs",
"test:live:bridge:matrix": "node scripts/live-bridge/matrix.mjs",
"test:live:required:self": "pnpm run build && node --test scripts/live-required.test.mjs test/tangle-live07-wiring.test.mjs",
"test:live:tangle": "node scripts/live-required.mjs live-tangle",
"test:live:tangle:sandbox:stress": "pnpm run build && node scripts/live-required/tangle-sandbox-braid-soak.mjs",
+ "test:live:tangle:sandbox:multirun": "pnpm run build && node scripts/live-required/tangle-sandbox-braid-multirun.mjs",
"test:live:tangle:sandbox:interactive": "pnpm run build && node scripts/live-required/tangle-sandbox-braid-interactive.mjs",
"test:live:tangle:sandbox:execution": "pnpm run build && node scripts/live-required/tangle-sandbox-braid-execution-soak.mjs",
"test:live:supervisor": "node scripts/live-required.mjs live-supervisor",
@@ -98,21 +100,22 @@
},
"dependencies": {
"@dataiku/uv": "0.12.0",
- "@earendil-works/pi-tui": "0.84.2",
+ "@earendil-works/pi-tui": "0.84.4",
"@napi-rs/keyring": "1.3.0",
- "@tangle-network/agent-eval": "0.163.2",
- "@tangle-network/agent-interface": "1.4.0",
- "@tangle-network/agent-provider-cli-bridge": "0.9.5",
- "@tangle-network/agent-provider-tangle": "0.13.1",
- "@tangle-network/agent-runtime": "0.153.2",
- "@tangle-network/sandbox": "0.31.0",
+ "@tangle-network/agent-eval": "0.170.0",
+ "@tangle-network/agent-interface": "1.9.0",
+ "@tangle-network/agent-provider-cli-bridge": "0.11.1",
+ "@tangle-network/agent-provider-tangle": "0.14.4",
+ "@tangle-network/agent-runtime": "0.182.0",
+ "@tangle-network/sandbox": "0.34.4",
+ "@tangle-network/tcloud-attestation": "0.1.1",
"better-sqlite3-multiple-ciphers": "13.0.3",
"chalk": "6.0.0",
- "koffi": "3.1.4"
+ "koffi": "3.1.6"
},
"devDependencies": {
- "@biomejs/biome": "2.5.7",
- "@types/node": "26.2.0",
+ "@biomejs/biome": "2.5.11",
+ "@types/node": "26.4.0",
"@xterm/headless": "6.0.0",
"esbuild": "0.28.2",
"node-pty": "1.1.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4d2798e..cf817d2 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,6 +5,8 @@ settings:
excludeLinksFromLockfile: false
overrides:
+ '@tangle-network/agent-interface': 1.9.0
+ '@tangle-network/agent-knowledge': 10.8.0
hono: 4.13.0
undici: 7.29.0
@@ -16,29 +18,32 @@ importers:
specifier: 0.12.0
version: 0.12.0
'@earendil-works/pi-tui':
- specifier: 0.84.2
- version: 0.84.2
+ specifier: 0.84.4
+ version: 0.84.4
'@napi-rs/keyring':
specifier: 1.3.0
version: 1.3.0
'@tangle-network/agent-eval':
- specifier: 0.163.2
- version: 0.163.2
+ specifier: 0.170.0
+ version: 0.170.0
'@tangle-network/agent-interface':
- specifier: 1.4.0
- version: 1.4.0
+ specifier: 1.9.0
+ version: 1.9.0
'@tangle-network/agent-provider-cli-bridge':
- specifier: 0.9.5
- version: 0.9.5
+ specifier: 0.11.1
+ version: 0.11.1
'@tangle-network/agent-provider-tangle':
- specifier: 0.13.1
- version: 0.13.1(@tangle-network/sandbox@0.31.0)
+ specifier: 0.14.4
+ version: 0.14.4(@tangle-network/sandbox@0.34.4)
'@tangle-network/agent-runtime':
- specifier: 0.153.2
- version: 0.153.2(@tangle-network/agent-eval@0.163.2)(@tangle-network/agent-interface@1.4.0)(@tangle-network/sandbox@0.31.0)
+ specifier: 0.182.0
+ version: 0.182.0(@tangle-network/agent-eval@0.170.0)(@tangle-network/agent-interface@1.9.0)(@tangle-network/sandbox@0.34.4)
'@tangle-network/sandbox':
- specifier: 0.31.0
- version: 0.31.0
+ specifier: 0.34.4
+ version: 0.34.4
+ '@tangle-network/tcloud-attestation':
+ specifier: 0.1.1
+ version: 0.1.1
better-sqlite3-multiple-ciphers:
specifier: 13.0.3
version: 13.0.3
@@ -46,15 +51,15 @@ importers:
specifier: 6.0.0
version: 6.0.0
koffi:
- specifier: 3.1.4
- version: 3.1.4
+ specifier: 3.1.6
+ version: 3.1.6
devDependencies:
'@biomejs/biome':
- specifier: 2.5.7
- version: 2.5.7
+ specifier: 2.5.11
+ version: 2.5.11
'@types/node':
- specifier: 26.2.0
- version: 26.2.0
+ specifier: 26.4.0
+ version: 26.4.0
'@xterm/headless':
specifier: 6.0.0
version: 6.0.0
@@ -75,59 +80,59 @@ packages:
peerDependencies:
zod: ^4.0.0
- '@biomejs/biome@2.5.7':
- resolution: {integrity: sha512-zr8K/DcY5tYsQOQwqMJ0AWElo6QgmgNI7idXgXLhevVszlt8RGVpesEJPqx3ThazLaOwjJ5Y8fz3BtH5fGZNsw==}
+ '@biomejs/biome@2.5.11':
+ resolution: {integrity: sha512-Tj0dnkLPdW0ASjHfj2D/ZkkvPU2wrFmnE1jWTD2xzV1ycapV1DutbYXk4NDnR3rYTi1ZCbNFD4G2gRMEY65WaA==}
engines: {node: '>=14.21.3'}
hasBin: true
- '@biomejs/cli-darwin-arm64@2.5.7':
- resolution: {integrity: sha512-vxo/Ls3/PYdQWyLhYYcgMOCzQypAjcY+iihS8M0wW03l16TCLW4zqZzGo75gm1VdCMj38hTVZ31KBWrZ4G9dJw==}
+ '@biomejs/cli-darwin-arm64@2.5.11':
+ resolution: {integrity: sha512-6SGZxoKbXvUjMn1t6A98HqWISPnGNbYs0R/Rt2JarmXBSev+lva4QxUMWEBX9lX1Wo1XTJ78uk5xVDtG58SRZg==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [darwin]
- '@biomejs/cli-darwin-x64@2.5.7':
- resolution: {integrity: sha512-Cd3Ga61amT/Yl/0x8elP5hhGYaFy4bw6WuysTgf7oo8TA5tJ5A1k+DkVoJ2BHbTVil51gTX9VPzArnrlLJ3Kyg==}
+ '@biomejs/cli-darwin-x64@2.5.11':
+ resolution: {integrity: sha512-nYkXY7tLBEgnGbYapDKAyKzgt44ZEyG+AKalvTXtCWKYgepI9dw327q+cVgedxm+Udi1ZzHKUyZrIusHi/KQbw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [darwin]
- '@biomejs/cli-linux-arm64-musl@2.5.7':
- resolution: {integrity: sha512-xPI5yB6XlpDbNkS+bm1t42olw5c4l3UrlOmLg7KtLJvjvkNF/1V4tnUgfkylGIeb3u/T+BzMGYqgQhzjAoJzuQ==}
+ '@biomejs/cli-linux-arm64-musl@2.5.11':
+ resolution: {integrity: sha512-qhyZUMyCbWYFV2bAwRNVvfMVZ+hv7WYl6mossGrxC+uiQQXhvsuWWU8zz6jYX0mChZd9MgQZbm4vozTmG/5iGw==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@biomejs/cli-linux-arm64@2.5.7':
- resolution: {integrity: sha512-rR2QE0yF2GYSuYuKIa7pKvODGJqnOH+2eDREAM8wV+mWKSkMQKdAp4zXEZfTaxY8PMoNONnpgSWcBCyLDPDOKg==}
+ '@biomejs/cli-linux-arm64@2.5.11':
+ resolution: {integrity: sha512-3PVLSTD9RR73rvVPt5G3T1gc+ycggWEGfTD7RvzzbtcDPD27NxgxBbAFfpm7DXJKW6VLHWE1lLMGvFt2Qxjcow==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@biomejs/cli-linux-x64-musl@2.5.7':
- resolution: {integrity: sha512-rE5VZi+qtmPgQH+l7jVxYoZ18b/TiHEhulhMpjmCZH1PltSbjRcxNWywC3HZ9tYottG7ORkeTtoscBilKSBm0g==}
+ '@biomejs/cli-linux-x64-musl@2.5.11':
+ resolution: {integrity: sha512-oRRlrchG5EfrEL/EmtT1qUjSNHk3/5LGeZhQqADBBAJF1b1ET6964xEKe7aGlGARzDfza8H/seEsFJl7S6Ql9w==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@biomejs/cli-linux-x64@2.5.7':
- resolution: {integrity: sha512-FQgqJhscrqJUFptGaRSUJWlXAExwWcDwLuK49dvKfkQ1bB5SEEyFssnsxQY83Xm6jR0EbbX3+8+D5bfvYqUG2Q==}
+ '@biomejs/cli-linux-x64@2.5.11':
+ resolution: {integrity: sha512-JOytptlsgM33B2MMFUg8iBrb4IKpbD5JnJrSeYiaFEeAj4vuXx0iQSQZ4qK7sqyMtfjZxxPdNdMZZVL4y/mFyA==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@biomejs/cli-win32-arm64@2.5.7':
- resolution: {integrity: sha512-Oq4x0CCwP4jirrcTywXs5kOGZ4v5vuEP+gWrbtjApOA2CL9F3F9GlIdQIci8AKSCa/zURanMRpX/4wQ7Am6hHg==}
+ '@biomejs/cli-win32-arm64@2.5.11':
+ resolution: {integrity: sha512-e49E6K9hzH/ohJNx8Y26mY8HaV4I4ZViIeoqhKsmoXLKHhQnMeBAVqCgsGf2Wa3lXlS7RkporDXMHHWkzvZzFw==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [win32]
- '@biomejs/cli-win32-x64@2.5.7':
- resolution: {integrity: sha512-V+0wu/nrj2S+MhP4EQ0uHNolP0IALEsz45pg0WoKkHfDeh0+ItHwP/p7bX5RPoMOl9NkpHYWdYPhIcy2mACHvQ==}
+ '@biomejs/cli-win32-x64@2.5.11':
+ resolution: {integrity: sha512-QSQr/KjOgXA7OzXJUWS+oguKyAZ3Q0l/lnlDGbu397eKo83atuWUjBPJrsqbKNF6CARGw8XXJLGzpHC8Ryhd4Q==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [win32]
@@ -178,8 +183,8 @@ packages:
resolution: {integrity: sha512-GDjOPA1l3IBxRml8/3j/v4HD4mDbEOHYqYMfjMW8pISpOrq73o1QLGVWw6PC0gYV7ovO5MVAq1Brab56MS5WFQ==}
hasBin: true
- '@earendil-works/pi-tui@0.84.2':
- resolution: {integrity: sha512-ds2TLihOnM5sLJB3VpXV6y0uR5efVuHf4MN7yDpsty6hA2DUO/EDVzjp/0od0G2JslzVLMjT8T8zavtxVb+qbg==}
+ '@earendil-works/pi-tui@0.84.4':
+ resolution: {integrity: sha512-nPUnwDkLtupPXnZQYrCwPFcuTydCDqTY6ZbFqhsL4S4kVq0AT418kPa/6uXwtaCD+MjBNBltb7ScTYX65yeE1w==}
engines: {node: '>=22.19.0'}
'@esbuild/aix-ppc64@0.28.2':
@@ -344,78 +349,78 @@ packages:
peerDependencies:
hono: 4.13.0
- '@koromix/koffi-darwin-arm64@3.1.4':
- resolution: {integrity: sha512-/9o0uahf25sNXz7CczfMAsgdHrrrkDK3/d1W5ygJUC7QnpWo80103yTYpYahWP3vTABK5yjzKtURgssv1paskA==}
+ '@koromix/koffi-darwin-arm64@3.1.6':
+ resolution: {integrity: sha512-8FHyXGCZN7/iQf4f7W5BRysmtdlAFvSx6FpmX4u6wmkZiX/2e9hIRdGLiZYlHGudlcA18UmXB/cMiyhJ7fJkzA==}
cpu: [arm64]
os: [darwin]
- '@koromix/koffi-darwin-x64@3.1.4':
- resolution: {integrity: sha512-6IOhfAHbrySr6lYRU720Hg+IMQvtMpN08k9Ppf9WF8NxYRdHLnW1FJm7zCbClfrwudtjhS/piwDYwgAkO5u8cg==}
+ '@koromix/koffi-darwin-x64@3.1.6':
+ resolution: {integrity: sha512-uzx/jqFQuSHqgg1zaRidTBTCfj8Y9M0SDTO8HeoI9s9fJhiJ1mbB9TTwJO5c2hiMnuWg2m1byczC8BaIH6cG/w==}
cpu: [x64]
os: [darwin]
- '@koromix/koffi-freebsd-arm64@3.1.4':
- resolution: {integrity: sha512-JKCWC0awdVvq7Nd/etn4PXFTa7uvyHn7IzqtaOZ3r4dJRdwQVby7Ai/wsQo8UUrJfAYlALkLYgFgU8wgsnAE/A==}
+ '@koromix/koffi-freebsd-arm64@3.1.6':
+ resolution: {integrity: sha512-PjpTVrsCK5YTtixOw7VsseYXJOyoY6k0qBt+bf0T9h3wyV06y73rALsorFDDEoYpLUBZO7R6EIMs6CpUrEkNTQ==}
cpu: [arm64]
os: [freebsd]
- '@koromix/koffi-freebsd-ia32@3.1.4':
- resolution: {integrity: sha512-gU9pShDRLMZzftdGW+mTzyL8Cpa/7nzHPHe5vFakjGgtIzVFzdFBqwli4oB+tFsx44W1VqMMlvMMVlnz54ERiQ==}
+ '@koromix/koffi-freebsd-ia32@3.1.6':
+ resolution: {integrity: sha512-ETYwL820HtFwYoOVzgyvmFmzTHRo9DJtGYTxa5Nb7ajaa5ldCum0jbmUJ3PMECxFTLxD5Q6PYZ8Xbp101bGeSg==}
cpu: [ia32]
os: [freebsd]
- '@koromix/koffi-freebsd-x64@3.1.4':
- resolution: {integrity: sha512-2kppLX97xBM3WoQET6noN4W02zT2fkFRXHYluAwcCcmkEax8AVJ1CYs6hxcZ3kaNPc+5P7yMw3V/b1lg2v3aMw==}
+ '@koromix/koffi-freebsd-x64@3.1.6':
+ resolution: {integrity: sha512-BkqxkNXhAAT9toU2stvLwx1iKHPDx7h08NCICyBbjYEXkCAEr84igTkpE5V3XJ9xZZ2gKll7VvdhxorHtHUqZw==}
cpu: [x64]
os: [freebsd]
- '@koromix/koffi-linux-arm64@3.1.4':
- resolution: {integrity: sha512-yYbypuGVGqrNchkAMY59kj+7TZ1c1u9lXRG1+74X9T8G4rOaushoVONNYLuu+ygpbwsKzz/NvEDtRioRU/dQlQ==}
+ '@koromix/koffi-linux-arm64@3.1.6':
+ resolution: {integrity: sha512-cM4XPm9ljbCrcPgXjzFYjDNxDUvvuR7TCYaEoo1AKjwZT/vmWhu2xN3pomfbsHh6aVn80SFA3enufQnaETW1rQ==}
cpu: [arm64]
os: [linux]
- '@koromix/koffi-linux-ia32@3.1.4':
- resolution: {integrity: sha512-IoA/8Qfc6ZEmwMw2Nf4aSp9RfJnxh0UHhdqD4FsVXm0vC797kLMuzj744vv5tll+waVfjrU10jREqjtnMVFoQw==}
+ '@koromix/koffi-linux-ia32@3.1.6':
+ resolution: {integrity: sha512-l1SVTpO10iaQt8slbowJpzK4fbwQZ7ufj9tmCyAcIwWUpyAbPS83mJMctU72If6N9/gCS2wuRqwnYB2uPLLhLg==}
cpu: [ia32]
os: [linux]
- '@koromix/koffi-linux-loong64@3.1.4':
- resolution: {integrity: sha512-ZUTdea+9dg6CV9J9CIGbhTh0FtSBgvcGKqDrlp9BVQF71jEDKOri1by/TrDe8yQUyC5kzWN8vWnkzES5wT0xDg==}
+ '@koromix/koffi-linux-loong64@3.1.6':
+ resolution: {integrity: sha512-KpTJpMSbIdCVFU26ynt0xy4x15h+y6AwPJxj2+iVxJhCzJf4oisCPc0YH2VnutuLV2nVzSrFm7sL/WSOqPgkXw==}
cpu: [loong64]
os: [linux]
- '@koromix/koffi-linux-riscv64@3.1.4':
- resolution: {integrity: sha512-CINyyhNYV/8MX52MGhYcik2G6PXH+KEU2JEO7dOONlsGol4lSGyW40RvYA4RQgNYk8q8imGSEScL08X8eOXnaA==}
+ '@koromix/koffi-linux-riscv64@3.1.6':
+ resolution: {integrity: sha512-YdFNpsywnXiYOYQlDAatf7TJLnspbGXdmfwIZhf82kbKSflYUsq4tI6NmoUOzM89oIWDGpYqd4Hz3xL7tsyXsw==}
cpu: [riscv64]
os: [linux]
- '@koromix/koffi-linux-x64@3.1.4':
- resolution: {integrity: sha512-x3XnAy/tUTTCX/gMpV7VJNpOQIVQvzNhNYDrpyIeS9Q8/f1qLsE0vp0tj7A/YEDIfMVLqoJtyamfRJc04+vk4w==}
+ '@koromix/koffi-linux-x64@3.1.6':
+ resolution: {integrity: sha512-Xx5mpr9VcaMCXfvbqIiLIWIL9Iuu6F4r3iMXg7+zZCqYUFZPFwJgiDQBLxctHv2OYgIfAoaaHMW0GC1cJkHfbA==}
cpu: [x64]
os: [linux]
- '@koromix/koffi-openbsd-ia32@3.1.4':
- resolution: {integrity: sha512-r9p/fffvmBm7+iT5BZ+c17gZJ280jvmbinrPZqjG14rF9I4lk7xrlV79YfsexkeN4mcPjF2hSPtbMNFBoQU3Dw==}
+ '@koromix/koffi-openbsd-ia32@3.1.6':
+ resolution: {integrity: sha512-39Np4QTxhTlTT6RRveIeP+TnbzrwuDJ0UMyHxEZ+oGtzmb9GqWhl9T1oyehG6v/O+c4BffafG2NwLkCZ7tDKWw==}
cpu: [ia32]
os: [openbsd]
- '@koromix/koffi-openbsd-x64@3.1.4':
- resolution: {integrity: sha512-SNp5AxOzheC2YaWPu3Y86wxRHHWf6V9NMl5Ot5nu9OpnP61Yinzug7JwsCeXtcZZTbKLsfsWoT7y4n17UYpOVA==}
+ '@koromix/koffi-openbsd-x64@3.1.6':
+ resolution: {integrity: sha512-3EynGn3ycQRqaMWGmUJ0tdtuQdStByqSy/tJ0ZGKWizbMGdFAE73YpgLsyd8BDvwnKWytVG/OLNb5nDHpfd9Dg==}
cpu: [x64]
os: [openbsd]
- '@koromix/koffi-win32-arm64@3.1.4':
- resolution: {integrity: sha512-oS8ETU35AelOD6DY7xmmz9qq26Xl38upXWiZbsdxbtH9UEIY0QpenQOuCK/0+q4CtfiLorRUlglGkO9YgPAIeA==}
+ '@koromix/koffi-win32-arm64@3.1.6':
+ resolution: {integrity: sha512-27FdPPRtT4xbO9bsd2OZa95M5YQ7bcJ8QjCRO57UUMI21REfkDegjqKwqo/CFlugxXlJf5IYtG2rq4BEYIrvxg==}
cpu: [arm64]
os: [win32]
- '@koromix/koffi-win32-ia32@3.1.4':
- resolution: {integrity: sha512-zd7Qh8s4fzblD9zzuDf44XCbujYg3QrffhgcNJg79/YC6ABT2m0CUtX4yFic9EWm2ps8NPAM25kCTCXPpt3eaw==}
+ '@koromix/koffi-win32-ia32@3.1.6':
+ resolution: {integrity: sha512-5mVelLKVDup4eoxZOpCzCyMPxoctsg+Qe4J9O5BP4KbBEdqoOEqaNEBBRgNzXcdr2g+GGfmIUo+oVR1NvIdiJw==}
cpu: [ia32]
os: [win32]
- '@koromix/koffi-win32-x64@3.1.4':
- resolution: {integrity: sha512-BPeQXc1bRd0QBOklvsP+AjoRnUzKbPNE6rfx7VNxrebhh09MKld2ibstgKWn6ejQLEcfKEoUJ+WAWIhX4AOsIg==}
+ '@koromix/koffi-win32-x64@3.1.6':
+ resolution: {integrity: sha512-lPKjAaHz0aoiZXT/wDVqH+joR5y3lCZj1s9Bk5qx/DGRq+0MK8Ib8VoqiBOrJ69NG5AsJSvn0tQDcSqfRgLmBQ==}
cpu: [x64]
os: [win32]
@@ -504,54 +509,51 @@ packages:
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
engines: {node: ^14.21.3 || >=16}
- '@tangle-network/agent-core@0.9.4':
- resolution: {integrity: sha512-2iSPCHPKI/9A4t1XXPTbpaJTzf3BkwNzXOJfb3M7AMjpIGR1SKNiRHKpDTTEUVbfx4tRny5qDDMhCnFmKgPsHA==}
+ '@tangle-network/agent-core@0.9.5':
+ resolution: {integrity: sha512-F+frKU7BqKANuXVcI4+mu93HrzCe8/hBzRz0R1UGG0poe2Rbrud4w4L3mFqd/7I06Qzi3eLnrxgXyPwBh5VKzw==}
peerDependencies:
'@modelcontextprotocol/sdk': ^1.30.0
peerDependenciesMeta:
'@modelcontextprotocol/sdk':
optional: true
- '@tangle-network/agent-eval@0.163.2':
- resolution: {integrity: sha512-uKhaHpeSgwiExr9fhU4aHuhK0bb5U7bZEf4uH2ElA+LyJIhXA7suMBPCHWVeIhiun9Nz8hbemOxX60Z1J5W0YQ==}
+ '@tangle-network/agent-eval@0.170.0':
+ resolution: {integrity: sha512-GoUIrtnXbN4gSDxHNB3c8vhA2JvPTlLtx7dnWZRCUFArQU2EMIvqhyVPaKnCmoJgDfbPgCwRuv60Pw2w9jSOeA==}
engines: {node: '>=20'}
hasBin: true
- '@tangle-network/agent-interface@1.3.0':
- resolution: {integrity: sha512-FsuSUkWyEvpGIjp9ENX3yrcXD8G7QhnVIoepknRYaPaaCaDPlHJzF483mBNix1GZ2bTU3aCr2KgHDSUdcjn1kg==}
+ '@tangle-network/agent-interface@1.9.0':
+ resolution: {integrity: sha512-HB43+EjiMFYQ+sA4h6FNd1pP81jm6HmOfo5Enfd9FZm0NrTWufK2WbbCUpoGgrnbG1vJv8h/Ly/YevnGTZ5baw==}
- '@tangle-network/agent-interface@1.4.0':
- resolution: {integrity: sha512-oUN5Ok0DJuNXIwlpi/ZHLeOUQq/LSAAa1Boe4RTt7S4feAWGddya1fTgQogHbnRiHEswFHdw2wvpEb8qyVx49g==}
-
- '@tangle-network/agent-knowledge@10.7.0':
- resolution: {integrity: sha512-zBrDmwAZzvpGm3YzlVXnjrAPgG/bhGsLFl9FXJn2XjwmI4x5ziX9xrHVlHEnG+LCCjAkwu7dn1I+976H+v8/nA==}
+ '@tangle-network/agent-knowledge@10.8.0':
+ resolution: {integrity: sha512-3XJvf5mtAUpT6B1cDAzkbc1tVHhXuC56ZFU/srlecKFceEiZ5CRwH9NouBThbwNGfF8Q0qhTvfQ8fxqT4urEnQ==}
engines: {node: '>=20.19.0'}
hasBin: true
peerDependencies:
- '@tangle-network/agent-eval': '>=0.163.2 <0.164.0'
- '@tangle-network/agent-interface': ^1.4.0
+ '@tangle-network/agent-eval': '>=0.170.0 <0.171.0'
+ '@tangle-network/agent-interface': 1.9.0
'@tangle-network/agent-profile-materialize@0.17.1':
resolution: {integrity: sha512-Nk/2PhkHndabvT53Wtrpd19V7btcJiJqvWcsUyRMSZQsjwAXDT/v3ipqhV4ysbyDRidAspadpDbo86enx/eExw==}
peerDependencies:
- '@tangle-network/agent-interface': ^1.0.0
+ '@tangle-network/agent-interface': 1.9.0
- '@tangle-network/agent-provider-cli-bridge@0.9.5':
- resolution: {integrity: sha512-9FrptdbnEelsziDpfaOGlpLE+xS0bw4fgNjzzOHBYBLkZWPRB+TOtGf9iuD4muOIcjnjzWchyKQzoB3P01i+Dg==}
+ '@tangle-network/agent-provider-cli-bridge@0.11.1':
+ resolution: {integrity: sha512-KwzNK1iBS9fZ8KgpMS+/wpBQ4EvvNwPJxioraiiJ7lbuosFesrS3v9hJb4R/02+gDNf5z7D/YS4XExc1KtFx7Q==}
- '@tangle-network/agent-provider-tangle@0.13.1':
- resolution: {integrity: sha512-DxEZ29SMp/BsjreaD6HM/KroDzinePC65dtLVE0yqdg0KbBT/vkUX8/S7pXsBJTPAxPkjb7rtGCk5uv51pVvzA==}
+ '@tangle-network/agent-provider-tangle@0.14.4':
+ resolution: {integrity: sha512-3LSBaK1FZyhKOgTkLYiSJCOsUTYDnVm6YSYpjnVVQD4vI7GOQdxYgfQPHE4MLCqYk6MazjiLZ5iR8sQeaTWAqw==}
peerDependencies:
- '@tangle-network/sandbox': '>=0.30.1 <1.0.0'
+ '@tangle-network/sandbox': '>=0.34.4 <1.0.0'
- '@tangle-network/agent-runtime@0.153.2':
- resolution: {integrity: sha512-xlRgKLh9r7TnqUd/We7X+O+pQF7wxaR+8Yi7vd90Cf7VQDMLcm0F2gxF3UKUc6IpfnLVPxHj+UdF9cCN2bRVkQ==}
+ '@tangle-network/agent-runtime@0.182.0':
+ resolution: {integrity: sha512-0uCrvS73+ZFNBJIMhJxCCg1fnmstvf56vjP15GIPFjhlg+WtxjoHWt7TPswqG8ZKH0BPJUnmVAJ2eYaNvzH8ew==}
engines: {node: '>=22.13.0'}
hasBin: true
peerDependencies:
- '@tangle-network/agent-eval': '>=0.163.2 <0.164.0'
- '@tangle-network/agent-interface': ^1.4.0
- '@tangle-network/sandbox': '>=0.31.0 <0.32.0'
+ '@tangle-network/agent-eval': '>=0.170.0 <0.171.0'
+ '@tangle-network/agent-interface': 1.9.0
+ '@tangle-network/sandbox': '>=0.34.3 <0.35.0'
peerDependenciesMeta:
'@tangle-network/sandbox':
optional: true
@@ -559,8 +561,8 @@ packages:
'@tangle-network/agent-trace-contract@1.0.2':
resolution: {integrity: sha512-v7uMh56jkEp4vckevEU9xKsIatbs5dqzGPp69dFLSSXUVit0RP6VD6EANMXVlTCUk+6wVKBLHJx23XspVCEiIA==}
- '@tangle-network/sandbox@0.31.0':
- resolution: {integrity: sha512-3NotVKNH/VbppdQCyRM3EuxttbO/WxBkZfHM8tR1ujtW18sC4beYYG0NYvTsIbqtTGOMhTJI0ji1kETpdrlaDA==}
+ '@tangle-network/sandbox@0.34.4':
+ resolution: {integrity: sha512-j0tkH1zZ0xdk718m4qaZVeUGGh2xA7LhP8uS/VivpEWyFVTrlpJWowMTUD11tNtIFjU3tWrIQRVVhNMk7rBoOw==}
peerDependencies:
'@mastra/core': ^1.36.0
'@modelcontextprotocol/sdk': ^1.30.0
@@ -579,8 +581,12 @@ packages:
viem:
optional: true
- '@types/node@26.2.0':
- resolution: {integrity: sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==}
+ '@tangle-network/tcloud-attestation@0.1.1':
+ resolution: {integrity: sha512-+TAF9s5t1jOWGyGHvKhIWe2FYmG7puVaxmmg0Et67ylAjGa7GqUAvISXGjG/6dzld7A170V0kQHK0WVdh2Wh0Q==}
+ engines: {node: '>=18'}
+
+ '@types/node@26.4.0':
+ resolution: {integrity: sha512-faiGnoIrLH/V8cibOMEAZ8pMw6oXqSukl29ra4mN8GdaB2ZewzeaLj+INpV5N+Z1eKWzY+IzaIZH2EIR6YZRNQ==}
'@types/proper-lockfile@4.1.4':
resolution: {integrity: sha512-uo2ABllncSqg9F1D4nugVl9v93RmjxF6LJzQLMLDdPaXCUIDPeOJ21Gbqi43xNKzBi/WQ0Q0dICqufzQbMjipQ==}
@@ -719,16 +725,16 @@ packages:
react-native-b4a:
optional: true
- bare-events@2.9.1:
- resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==}
+ bare-events@2.9.2:
+ resolution: {integrity: sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==}
peerDependencies:
bare-abort-controller: '*'
peerDependenciesMeta:
bare-abort-controller:
optional: true
- bare-fs@4.8.0:
- resolution: {integrity: sha512-fM+MhCvdQhZ7NV6S95a07gPSqjIYKn6mFaXfx266wN3ajZGl/+1AzH+ubkXQ0fFZvOe2nk9VHkzdYkQE5zMV3Q==}
+ bare-fs@4.8.1:
+ resolution: {integrity: sha512-N1nnXdHZAOSstz0XiHikGS4HGMH4CnSwhqWdGQQMqqdvp4Jybm9sE3R1WVnpWVd4SFkc8ryPDBLViNLwiEqECg==}
engines: {bare: '>=1.28.0'}
peerDependencies:
bare-buffer: '*'
@@ -739,8 +745,8 @@ packages:
bare-path@3.1.1:
resolution: {integrity: sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ==}
- bare-stream@2.13.3:
- resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==}
+ bare-stream@2.13.4:
+ resolution: {integrity: sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA==}
peerDependencies:
bare-abort-controller: '*'
bare-buffer: '*'
@@ -798,9 +804,8 @@ packages:
is-any-array@3.0.0:
resolution: {integrity: sha512-o4h+tylWykC4BD1vaejp6gDxoM13bwW8FGuNs4yIKpj8xbBJcRxJx8vZpq0dCr7ZDEfeKjmsi/euolKhX6f/ww==}
- koffi@3.1.4:
- resolution: {integrity: sha512-KHX39XIg7afe8ds+0MHPoLiKR9dCzsVK4oAmBUSaeJlcX0xur22f15C2DILbZ6GJ9eyqC+e6Sb1cTG7M17z+Tg==}
- deprecated: Unstable Windows builds
+ koffi@3.1.6:
+ resolution: {integrity: sha512-ln60chEb3o7Du1ayjwl6BFiNN1wZK+3cTM2wWGiHLEzCY/FdTIN1ER5VWDwHq7J/j4tSnnrHaH5ABS1EO6+6ag==}
linear-sum-assignment@1.0.9:
resolution: {integrity: sha512-1T2Ek3sxpt2mBHeBFMRJEikiIK/yIOwf+mrxv/DkAU/5ddnCMndZL//hFH7QuHa1tbaQADzsf9t7rkGZKqoFfQ==}
@@ -822,8 +827,8 @@ packages:
ml-matrix@6.15.0:
resolution: {integrity: sha512-wFa1v6KP8bKp+fj0nYmRs1Pb5K4zRkXGKsOvLinvILENFIADncm4XlOI+S1M7yuACMGfI6cfk0IifDgd4j5xmw==}
- ml-spectra-processing@14.33.0:
- resolution: {integrity: sha512-zg71v6exRvPpzDh9SiN5iNAIG8yTFpzfJrRCRSb/hWf5gMsik7q60DkO5ew4knR7xF4DbjYmNWeqLq8gWcQdEQ==}
+ ml-spectra-processing@14.34.0:
+ resolution: {integrity: sha512-sNM3nOg7s4tyinRnU5FyYZFV//cPHMvjwfxQvFh3GyrvWNuZmPIZTPS+kiT/SPXMymxA4+qx8oFSZ9K03clGyQ==}
ml-xsadd@3.0.1:
resolution: {integrity: sha512-Fz2q6dwgzGM8wYKGArTUTZDGa4lQFA2Vi6orjGeTVRy22ZnQFKlJuwS9n8NRviqz1KHAHAzdKJwbnYhdo38uYg==}
@@ -864,11 +869,11 @@ packages:
spdx-license-ids@3.0.23:
resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==}
- streamx@2.28.0:
- resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==}
+ streamx@2.28.1:
+ resolution: {integrity: sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==}
- tar-stream@3.2.0:
- resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==}
+ tar-stream@3.2.1:
+ resolution: {integrity: sha512-nqsEO8zLZJvrOMdEwkA0QdCLFbetHMn95Zqu4fKwX+hkaTWJPZZOrxx/PwtxoK0MMGQmBQNRW3CPs8IFYQz4cQ==}
teex@1.0.1:
resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==}
@@ -903,39 +908,39 @@ snapshots:
openapi3-ts: 4.6.1
zod: 4.4.3
- '@biomejs/biome@2.5.7':
+ '@biomejs/biome@2.5.11':
optionalDependencies:
- '@biomejs/cli-darwin-arm64': 2.5.7
- '@biomejs/cli-darwin-x64': 2.5.7
- '@biomejs/cli-linux-arm64': 2.5.7
- '@biomejs/cli-linux-arm64-musl': 2.5.7
- '@biomejs/cli-linux-x64': 2.5.7
- '@biomejs/cli-linux-x64-musl': 2.5.7
- '@biomejs/cli-win32-arm64': 2.5.7
- '@biomejs/cli-win32-x64': 2.5.7
+ '@biomejs/cli-darwin-arm64': 2.5.11
+ '@biomejs/cli-darwin-x64': 2.5.11
+ '@biomejs/cli-linux-arm64': 2.5.11
+ '@biomejs/cli-linux-arm64-musl': 2.5.11
+ '@biomejs/cli-linux-x64': 2.5.11
+ '@biomejs/cli-linux-x64-musl': 2.5.11
+ '@biomejs/cli-win32-arm64': 2.5.11
+ '@biomejs/cli-win32-x64': 2.5.11
- '@biomejs/cli-darwin-arm64@2.5.7':
+ '@biomejs/cli-darwin-arm64@2.5.11':
optional: true
- '@biomejs/cli-darwin-x64@2.5.7':
+ '@biomejs/cli-darwin-x64@2.5.11':
optional: true
- '@biomejs/cli-linux-arm64-musl@2.5.7':
+ '@biomejs/cli-linux-arm64-musl@2.5.11':
optional: true
- '@biomejs/cli-linux-arm64@2.5.7':
+ '@biomejs/cli-linux-arm64@2.5.11':
optional: true
- '@biomejs/cli-linux-x64-musl@2.5.7':
+ '@biomejs/cli-linux-x64-musl@2.5.11':
optional: true
- '@biomejs/cli-linux-x64@2.5.7':
+ '@biomejs/cli-linux-x64@2.5.11':
optional: true
- '@biomejs/cli-win32-arm64@2.5.7':
+ '@biomejs/cli-win32-arm64@2.5.11':
optional: true
- '@biomejs/cli-win32-x64@2.5.7':
+ '@biomejs/cli-win32-x64@2.5.11':
optional: true
'@dataiku/uv-darwin-arm64@0.12.0':
@@ -969,7 +974,7 @@ snapshots:
'@dataiku/uv-win32-ia32': 0.12.0
'@dataiku/uv-win32-x64': 0.12.0
- '@earendil-works/pi-tui@0.84.2':
+ '@earendil-works/pi-tui@0.84.4':
dependencies:
get-east-asian-width: 1.6.0
marked: 18.0.5
@@ -1056,49 +1061,49 @@ snapshots:
dependencies:
hono: 4.13.0
- '@koromix/koffi-darwin-arm64@3.1.4':
+ '@koromix/koffi-darwin-arm64@3.1.6':
optional: true
- '@koromix/koffi-darwin-x64@3.1.4':
+ '@koromix/koffi-darwin-x64@3.1.6':
optional: true
- '@koromix/koffi-freebsd-arm64@3.1.4':
+ '@koromix/koffi-freebsd-arm64@3.1.6':
optional: true
- '@koromix/koffi-freebsd-ia32@3.1.4':
+ '@koromix/koffi-freebsd-ia32@3.1.6':
optional: true
- '@koromix/koffi-freebsd-x64@3.1.4':
+ '@koromix/koffi-freebsd-x64@3.1.6':
optional: true
- '@koromix/koffi-linux-arm64@3.1.4':
+ '@koromix/koffi-linux-arm64@3.1.6':
optional: true
- '@koromix/koffi-linux-ia32@3.1.4':
+ '@koromix/koffi-linux-ia32@3.1.6':
optional: true
- '@koromix/koffi-linux-loong64@3.1.4':
+ '@koromix/koffi-linux-loong64@3.1.6':
optional: true
- '@koromix/koffi-linux-riscv64@3.1.4':
+ '@koromix/koffi-linux-riscv64@3.1.6':
optional: true
- '@koromix/koffi-linux-x64@3.1.4':
+ '@koromix/koffi-linux-x64@3.1.6':
optional: true
- '@koromix/koffi-openbsd-ia32@3.1.4':
+ '@koromix/koffi-openbsd-ia32@3.1.6':
optional: true
- '@koromix/koffi-openbsd-x64@3.1.4':
+ '@koromix/koffi-openbsd-x64@3.1.6':
optional: true
- '@koromix/koffi-win32-arm64@3.1.4':
+ '@koromix/koffi-win32-arm64@3.1.6':
optional: true
- '@koromix/koffi-win32-ia32@3.1.4':
+ '@koromix/koffi-win32-ia32@3.1.6':
optional: true
- '@koromix/koffi-win32-x64@3.1.4':
+ '@koromix/koffi-win32-x64@3.1.6':
optional: true
'@napi-rs/keyring-darwin-arm64@1.3.0':
@@ -1154,17 +1159,17 @@ snapshots:
'@noble/hashes@1.8.0': {}
- '@tangle-network/agent-core@0.9.4':
+ '@tangle-network/agent-core@0.9.5':
dependencies:
- '@tangle-network/agent-interface': 1.3.0
+ '@tangle-network/agent-interface': 1.9.0
zod: 4.4.3
- '@tangle-network/agent-eval@0.163.2':
+ '@tangle-network/agent-eval@0.170.0':
dependencies:
'@asteasolutions/zod-to-openapi': 9.1.0(zod@4.4.3)
'@hono/node-server': 2.1.1(hono@4.13.0)
- '@tangle-network/agent-core': 0.9.4
- '@tangle-network/agent-interface': 1.4.0
+ '@tangle-network/agent-core': 0.9.5
+ '@tangle-network/agent-interface': 1.9.0
'@tangle-network/agent-trace-contract': 1.0.2
hono: 4.13.0
linear-sum-assignment: 1.0.9
@@ -1173,51 +1178,45 @@ snapshots:
transitivePeerDependencies:
- '@modelcontextprotocol/sdk'
- '@tangle-network/agent-interface@1.3.0':
+ '@tangle-network/agent-interface@1.9.0':
dependencies:
'@noble/hashes': 1.8.0
spdx-expression-parse: 5.0.0
zod: 4.4.3
- '@tangle-network/agent-interface@1.4.0':
+ '@tangle-network/agent-knowledge@10.8.0(@tangle-network/agent-eval@0.170.0)(@tangle-network/agent-interface@1.9.0)':
dependencies:
- '@noble/hashes': 1.8.0
- spdx-expression-parse: 5.0.0
- zod: 4.4.3
-
- '@tangle-network/agent-knowledge@10.7.0(@tangle-network/agent-eval@0.163.2)(@tangle-network/agent-interface@1.4.0)':
- dependencies:
- '@tangle-network/agent-eval': 0.163.2
- '@tangle-network/agent-interface': 1.4.0
+ '@tangle-network/agent-eval': 0.170.0
+ '@tangle-network/agent-interface': 1.9.0
'@types/proper-lockfile': 4.1.4
proper-lockfile: 4.1.2
zod: 4.4.3
- '@tangle-network/agent-profile-materialize@0.17.1(@tangle-network/agent-interface@1.4.0)':
+ '@tangle-network/agent-profile-materialize@0.17.1(@tangle-network/agent-interface@1.9.0)':
dependencies:
- '@tangle-network/agent-interface': 1.4.0
+ '@tangle-network/agent-interface': 1.9.0
- '@tangle-network/agent-provider-cli-bridge@0.9.5':
+ '@tangle-network/agent-provider-cli-bridge@0.11.1':
dependencies:
- '@tangle-network/agent-interface': 1.4.0
+ '@tangle-network/agent-interface': 1.9.0
undici: 7.29.0
- '@tangle-network/agent-provider-tangle@0.13.1(@tangle-network/sandbox@0.31.0)':
+ '@tangle-network/agent-provider-tangle@0.14.4(@tangle-network/sandbox@0.34.4)':
dependencies:
- '@tangle-network/agent-interface': 1.4.0
- '@tangle-network/sandbox': 0.31.0
+ '@tangle-network/agent-interface': 1.9.0
+ '@tangle-network/sandbox': 0.34.4
- '@tangle-network/agent-runtime@0.153.2(@tangle-network/agent-eval@0.163.2)(@tangle-network/agent-interface@1.4.0)(@tangle-network/sandbox@0.31.0)':
+ '@tangle-network/agent-runtime@0.182.0(@tangle-network/agent-eval@0.170.0)(@tangle-network/agent-interface@1.9.0)(@tangle-network/sandbox@0.34.4)':
dependencies:
- '@tangle-network/agent-core': 0.9.4
- '@tangle-network/agent-eval': 0.163.2
- '@tangle-network/agent-interface': 1.4.0
- '@tangle-network/agent-knowledge': 10.7.0(@tangle-network/agent-eval@0.163.2)(@tangle-network/agent-interface@1.4.0)
- '@tangle-network/agent-profile-materialize': 0.17.1(@tangle-network/agent-interface@1.4.0)
+ '@tangle-network/agent-core': 0.9.5
+ '@tangle-network/agent-eval': 0.170.0
+ '@tangle-network/agent-interface': 1.9.0
+ '@tangle-network/agent-knowledge': 10.8.0(@tangle-network/agent-eval@0.170.0)(@tangle-network/agent-interface@1.9.0)
+ '@tangle-network/agent-profile-materialize': 0.17.1(@tangle-network/agent-interface@1.9.0)
'@tangle-network/agent-trace-contract': 1.0.2
- tar-stream: 3.2.0
+ tar-stream: 3.2.1
optionalDependencies:
- '@tangle-network/sandbox': 0.31.0
+ '@tangle-network/sandbox': 0.34.4
transitivePeerDependencies:
- '@modelcontextprotocol/sdk'
- bare-abort-controller
@@ -1226,13 +1225,15 @@ snapshots:
'@tangle-network/agent-trace-contract@1.0.2': {}
- '@tangle-network/sandbox@0.31.0':
+ '@tangle-network/sandbox@0.34.4':
dependencies:
- '@tangle-network/agent-core': 0.9.4
- '@tangle-network/agent-interface': 1.3.0
+ '@tangle-network/agent-core': 0.9.5
+ '@tangle-network/agent-interface': 1.9.0
zod: 4.4.3
- '@types/node@26.2.0':
+ '@tangle-network/tcloud-attestation@0.1.1': {}
+
+ '@types/node@26.4.0':
dependencies:
undici-types: 8.3.0
@@ -1306,13 +1307,13 @@ snapshots:
b4a@1.8.1: {}
- bare-events@2.9.1: {}
+ bare-events@2.9.2: {}
- bare-fs@4.8.0:
+ bare-fs@4.8.1:
dependencies:
- bare-events: 2.9.1
+ bare-events: 2.9.2
bare-path: 3.1.1
- bare-stream: 2.13.3(bare-events@2.9.1)
+ bare-stream: 2.13.4(bare-events@2.9.2)
bare-url: 2.5.2
fast-fifo: 1.3.2
transitivePeerDependencies:
@@ -1321,13 +1322,13 @@ snapshots:
bare-path@3.1.1: {}
- bare-stream@2.13.3(bare-events@2.9.1):
+ bare-stream@2.13.4(bare-events@2.9.2):
dependencies:
b4a: 1.8.1
- streamx: 2.28.0
+ streamx: 2.28.1
teex: 1.0.1
optionalDependencies:
- bare-events: 2.9.1
+ bare-events: 2.9.2
transitivePeerDependencies:
- react-native-b4a
@@ -1376,7 +1377,7 @@ snapshots:
events-universal@1.0.1:
dependencies:
- bare-events: 2.9.1
+ bare-events: 2.9.2
transitivePeerDependencies:
- bare-abort-controller
@@ -1392,29 +1393,29 @@ snapshots:
is-any-array@3.0.0: {}
- koffi@3.1.4:
+ koffi@3.1.6:
optionalDependencies:
- '@koromix/koffi-darwin-arm64': 3.1.4
- '@koromix/koffi-darwin-x64': 3.1.4
- '@koromix/koffi-freebsd-arm64': 3.1.4
- '@koromix/koffi-freebsd-ia32': 3.1.4
- '@koromix/koffi-freebsd-x64': 3.1.4
- '@koromix/koffi-linux-arm64': 3.1.4
- '@koromix/koffi-linux-ia32': 3.1.4
- '@koromix/koffi-linux-loong64': 3.1.4
- '@koromix/koffi-linux-riscv64': 3.1.4
- '@koromix/koffi-linux-x64': 3.1.4
- '@koromix/koffi-openbsd-ia32': 3.1.4
- '@koromix/koffi-openbsd-x64': 3.1.4
- '@koromix/koffi-win32-arm64': 3.1.4
- '@koromix/koffi-win32-ia32': 3.1.4
- '@koromix/koffi-win32-x64': 3.1.4
+ '@koromix/koffi-darwin-arm64': 3.1.6
+ '@koromix/koffi-darwin-x64': 3.1.6
+ '@koromix/koffi-freebsd-arm64': 3.1.6
+ '@koromix/koffi-freebsd-ia32': 3.1.6
+ '@koromix/koffi-freebsd-x64': 3.1.6
+ '@koromix/koffi-linux-arm64': 3.1.6
+ '@koromix/koffi-linux-ia32': 3.1.6
+ '@koromix/koffi-linux-loong64': 3.1.6
+ '@koromix/koffi-linux-riscv64': 3.1.6
+ '@koromix/koffi-linux-x64': 3.1.6
+ '@koromix/koffi-openbsd-ia32': 3.1.6
+ '@koromix/koffi-openbsd-x64': 3.1.6
+ '@koromix/koffi-win32-arm64': 3.1.6
+ '@koromix/koffi-win32-ia32': 3.1.6
+ '@koromix/koffi-win32-x64': 3.1.6
linear-sum-assignment@1.0.9:
dependencies:
cheminfo-types: 1.15.0
ml-matrix: 6.15.0
- ml-spectra-processing: 14.33.0
+ ml-spectra-processing: 14.34.0
marked@18.0.5: {}
@@ -1437,7 +1438,7 @@ snapshots:
is-any-array: 3.0.0
ml-array-rescale: 2.0.0
- ml-spectra-processing@14.33.0:
+ ml-spectra-processing@14.34.0:
dependencies:
binary-search: 1.3.6
cheminfo-types: 1.15.0
@@ -1481,7 +1482,7 @@ snapshots:
spdx-license-ids@3.0.23: {}
- streamx@2.28.0:
+ streamx@2.28.1:
dependencies:
events-universal: 1.0.1
fast-fifo: 1.3.2
@@ -1490,12 +1491,12 @@ snapshots:
- bare-abort-controller
- react-native-b4a
- tar-stream@3.2.0:
+ tar-stream@3.2.1:
dependencies:
b4a: 1.8.1
- bare-fs: 4.8.0
+ bare-fs: 4.8.1
fast-fifo: 1.3.2
- streamx: 2.28.0
+ streamx: 2.28.1
transitivePeerDependencies:
- bare-abort-controller
- bare-buffer
@@ -1503,7 +1504,7 @@ snapshots:
teex@1.0.1:
dependencies:
- streamx: 2.28.0
+ streamx: 2.28.1
transitivePeerDependencies:
- bare-abort-controller
- react-native-b4a
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 8af75be..702b56a 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,4 +1,6 @@
overrides:
+ '@tangle-network/agent-interface': 1.9.0
+ '@tangle-network/agent-knowledge': 10.8.0
hono: 4.13.0
undici: 7.29.0
allowBuilds:
@@ -9,14 +11,14 @@ allowBuilds:
node-pty: true
ignoreScripts: false
minimumReleaseAgeExclude:
- - '@tangle-network/agent-runtime@0.126.0 || 0.128.0 || 0.131.0 || 0.131.1 || 0.131.2 || 0.131.3 || 0.131.4 || 0.131.5 || 0.131.6 || 0.131.7 || 0.132.0 || 0.132.4 || 0.132.6 || 0.132.9 || 0.132.10 || 0.132.11 || 0.132.12 || 0.133.6 || 0.134.2 || 0.134.4 || 0.134.5 || 0.134.9 || 0.135.0 || 0.135.3 || 0.142.0 || 0.142.1 || 0.142.3 || 0.143.0 || 0.153.2'
- - '@tangle-network/agent-eval@0.143.0 || 0.144.0 || 0.144.1 || 0.144.3 || 0.144.4 || 0.144.6 || 0.144.8 || 0.144.10 || 0.144.11 || 0.144.13 || 0.145.0 || 0.145.1 || 0.145.2 || 0.145.3 || 0.145.9 || 0.145.10 || 0.145.11 || 0.145.14 || 0.145.15 || 0.145.21 || 0.149.0 || 0.163.2'
- - '@tangle-network/agent-interface@0.46.0 || 0.46.1 || 0.47.0 || 0.51.0 || 0.52.0 || 0.53.0 || 0.54.0 || 1.0.0 || 1.1.0 || 1.3.0 || 1.4.0'
- - '@tangle-network/agent-knowledge@7.0.8 || 7.1.2 || 7.1.3 || 7.2.0 || 7.2.2 || 7.2.3 || 7.2.4 || 7.2.6 || 8.0.0 || 8.0.1 || 8.0.5 || 8.0.10 || 10.7.0'
+ - '@tangle-network/agent-runtime@0.126.0 || 0.128.0 || 0.131.0 || 0.131.1 || 0.131.2 || 0.131.3 || 0.131.4 || 0.131.5 || 0.131.6 || 0.131.7 || 0.132.0 || 0.132.4 || 0.132.6 || 0.132.9 || 0.132.10 || 0.132.11 || 0.132.12 || 0.133.6 || 0.134.2 || 0.134.4 || 0.134.5 || 0.134.9 || 0.135.0 || 0.135.3 || 0.142.0 || 0.142.1 || 0.142.3 || 0.143.0 || 0.153.2 || 0.177.0 || 0.178.0 || 0.179.0 || 0.180.0 || 0.182.0'
+ - '@tangle-network/agent-eval@0.143.0 || 0.144.0 || 0.144.1 || 0.144.3 || 0.144.4 || 0.144.6 || 0.144.8 || 0.144.10 || 0.144.11 || 0.144.13 || 0.145.0 || 0.145.1 || 0.145.2 || 0.145.3 || 0.145.9 || 0.145.10 || 0.145.11 || 0.145.14 || 0.145.15 || 0.145.21 || 0.149.0 || 0.163.2 || 0.170.0'
+ - '@tangle-network/agent-interface@0.46.0 || 0.46.1 || 0.47.0 || 0.51.0 || 0.52.0 || 0.53.0 || 0.54.0 || 1.0.0 || 1.1.0 || 1.3.0 || 1.4.0 || 1.7.0 || 1.7.1 || 1.8.0 || 1.9.0'
+ - '@tangle-network/agent-knowledge@7.0.8 || 7.1.2 || 7.1.3 || 7.2.0 || 7.2.2 || 7.2.3 || 7.2.4 || 7.2.6 || 8.0.0 || 8.0.1 || 8.0.5 || 8.0.10 || 10.7.0 || 10.8.0'
- '@tangle-network/agent-profile-materialize@0.10.2 || 0.13.1 || 0.14.0 || 0.14.2 || 0.15.1 || 0.15.2 || 0.17.1'
- - '@tangle-network/agent-provider-cli-bridge@0.4.2 || 0.4.3 || 0.5.0 || 0.6.0 || 0.6.4 || 0.7.1 || 0.7.2 || 0.7.3 || 0.7.6 || 0.8.0 || 0.8.1 || 0.9.0 || 0.9.2 || 0.9.3 || 0.9.4 || 0.9.5'
- - '@tangle-network/agent-provider-tangle@0.13.0 || 0.13.1'
- - '@tangle-network/sandbox@0.30.1 || 0.31.0'
+ - '@tangle-network/agent-provider-cli-bridge@0.4.2 || 0.4.3 || 0.5.0 || 0.6.0 || 0.6.4 || 0.7.1 || 0.7.2 || 0.7.3 || 0.7.6 || 0.8.0 || 0.8.1 || 0.9.0 || 0.9.2 || 0.9.3 || 0.9.4 || 0.9.5 || 0.9.6 || 0.10.0 || 0.11.0 || 0.11.1'
+ - '@tangle-network/agent-provider-tangle@0.13.0 || 0.13.1 || 0.13.3 || 0.14.0 || 0.14.1 || 0.14.2 || 0.14.3 || 0.14.4'
+ - '@tangle-network/sandbox@0.30.1 || 0.31.0 || 0.34.0 || 0.34.3 || 0.34.4'
- hono@4.13.0
- '@esbuild/aix-ppc64@0.28.2'
- '@esbuild/android-arm64@0.28.2'
@@ -46,4 +48,4 @@ minimumReleaseAgeExclude:
- '@esbuild/win32-x64@0.28.2'
- esbuild@0.28.2
- '@tangle-network/agent-core@0.5.4 || 0.6.0 || 0.6.1 || 0.7.1 || 0.8.0 || 0.8.1 || 0.9.0 || 0.9.4'
- - '@earendil-works/pi-tui@0.84.2'
+ - '@earendil-works/pi-tui@0.84.2 || 0.84.3 || 0.84.4'
diff --git a/scripts/capture-connections.mjs b/scripts/capture-connections.mjs
index 54410fc..37aae57 100644
--- a/scripts/capture-connections.mjs
+++ b/scripts/capture-connections.mjs
@@ -22,16 +22,20 @@ const sizes = [
[200, 60],
]
const captureSecret = `connection-capture-${randomUUID()}`
+const captureProfileName = 'Connection workflow proof'
const XtermTerminal = xterm.Terminal
function sleep(milliseconds) {
return new Promise((resolve) => setTimeout(resolve, milliseconds))
}
-async function waitFor(predicate, label, timeoutMs = 10_000) {
+async function waitFor(predicate, label, diagnostic, timeoutMs = 10_000) {
const deadline = Date.now() + timeoutMs
while (!predicate()) {
- if (Date.now() >= deadline) throw new Error(`Timed out waiting for ${label}`)
+ if (Date.now() >= deadline) {
+ const detail = diagnostic?.()
+ throw new Error(`Timed out waiting for ${label}${detail ? `\n${detail}` : ''}`)
+ }
await sleep(20)
}
}
@@ -40,6 +44,10 @@ function normalized(value) {
return value.replace(/\s+/gu, ' ').trim()
}
+function conversationShellReady(screen) {
+ return screen.includes(captureProfileName) && screen.includes('new message')
+}
+
function screenFrom(emulator, rows) {
const buffer = emulator.buffer.active
return Array.from(
@@ -88,7 +96,7 @@ async function createProductionFixture(root) {
format: 'braid-startup-config',
schemaVersion: 2,
profile: {
- name: 'Connection workflow proof',
+ name: captureProfileName,
description: 'Packed terminal connection workflow proof',
harness: 'pi',
model: { default: 'openai/gpt-5' },
@@ -186,15 +194,31 @@ async function spawnTerminal(binary, columns, rows, root) {
waitFor(
() => pendingWrites === 0 && performance.now() - lastOutputAt >= 75,
`${columns}x${rows} ${label}`,
+ () => screen,
)
const close = async () => {
if (exited) return
- for (let index = 0; index < 3; index += 1) {
+ for (let index = 0; index < 8; index += 1) {
+ const before = normalized(screen)
+ if (conversationShellReady(before)) break
input('\u001b')
- await sleep(50)
+ await waitFor(
+ () => conversationShellReady(normalized(screen)) || normalized(screen) !== before,
+ 'overlay close',
+ () => screen,
+ 1_000,
+ )
}
+ if (!conversationShellReady(normalized(screen)))
+ throw new Error(
+ `Packed connection capture could not return to the conversation shell\n${screen}`,
+ )
input('\u0003')
- await waitFor(() => normalized(screen).includes('ctrl+c again to quit'), 'safe exit')
+ await waitFor(
+ () => normalized(screen).toLowerCase().includes('ctrl+c again to quit'),
+ 'safe exit',
+ () => screen,
+ )
input('\u0003')
const result = await Promise.race([
exit,
@@ -223,31 +247,39 @@ async function spawnTerminal(binary, columns, rows, root) {
}
}
-async function reachCredentialPrompt(terminal) {
- await waitFor(
- () => normalized(terminal.screen()).includes('Braid starter'),
- 'Braid conversation shell',
+function waitForScreen(terminal, predicate, label) {
+ return waitFor(
+ () => predicate(normalized(terminal.screen())),
+ label,
+ () => terminal.screen(),
)
+}
+
+async function reachCredentialPrompt(terminal) {
+ await waitForScreen(terminal, conversationShellReady, 'Braid conversation shell')
terminal.input('/connection create\r')
- await waitFor(
- () => normalized(terminal.screen()).includes('connection metadata'),
+ await waitForScreen(
+ terminal,
+ (screen) => screen.includes('connection metadata'),
'connection kind editor',
)
terminal.input('\u001b[B')
terminal.input('\r')
- await waitFor(
- () => normalized(terminal.screen()).includes('Tangle inference metadata'),
+ await waitForScreen(
+ terminal,
+ (screen) => screen.includes('Tangle inference metadata'),
'connection fields',
)
for (let index = 0; index < 4; index += 1) terminal.input('\r')
- await waitFor(() => normalized(terminal.screen()).includes('review connection'), 'review')
+ await waitForScreen(terminal, (screen) => screen.includes('review connection'), 'review')
terminal.input('\r')
- await waitFor(
- () => normalized(terminal.screen()).includes('credential · Tangle Inference'),
+ await waitForScreen(
+ terminal,
+ (screen) => screen.includes('credential · Tangle Inference'),
'credential prompt',
)
terminal.sensitiveInput(captureSecret)
- await waitFor(() => terminal.screen().includes('••••'), 'masked credential')
+ await waitForScreen(terminal, (screen) => screen.includes('••••'), 'masked credential')
await terminal.stable('masked credential frame')
}
@@ -286,24 +318,28 @@ async function captureKeyboardFlow(binary) {
await reachCredentialPrompt(terminal)
await sleep(350)
terminal.input('\r')
- await waitFor(() => {
- const screen = normalized(terminal.screen())
- return screen.includes('connections') && screen.includes('^D remove')
- }, 'created connection picker')
+ await waitForScreen(
+ terminal,
+ (screen) => screen.includes('connections') && screen.includes('^D remove'),
+ 'created connection picker',
+ )
terminal.input('Tangle')
- await waitFor(
- () => normalized(terminal.screen()).includes('Tangle Inference'),
+ await waitForScreen(
+ terminal,
+ (screen) => screen.includes('Tangle Inference'),
'created connection filter',
)
terminal.input('\u0004')
- await waitFor(
- () => normalized(terminal.screen()).includes('remove connection'),
+ await waitForScreen(
+ terminal,
+ (screen) => screen.includes('remove connection'),
'removal confirmation',
)
await sleep(500)
terminal.input('\r')
- await waitFor(
- () => !normalized(terminal.screen()).includes('remove connection'),
+ await waitForScreen(
+ terminal,
+ (screen) => !screen.includes('remove connection'),
'connection removal',
)
await terminal.stable('removed connection picker')
diff --git a/scripts/capture-visual-definitions.mjs b/scripts/capture-visual-definitions.mjs
index e0c0c66..19cb603 100644
--- a/scripts/capture-visual-definitions.mjs
+++ b/scripts/capture-visual-definitions.mjs
@@ -1,3 +1,7 @@
+export function isRunningWorkStripRow(line) {
+ return /^(?:focus|work) .+ · running(?: ·|\s|$)/u.test(line.trimStart())
+}
+
export function createStateDefinitions(normalized) {
return [
...[40, 80, 120].map((columns) => commandPaletteDefinition(columns, normalized)),
@@ -37,6 +41,111 @@ export function createStateDefinitions(normalized) {
return { point, record }
},
},
+ {
+ name: 'multi-run',
+ columns: 80,
+ rows: 24,
+ environment: { BRAID_FIXTURE_CHUNK_DELAY_MS: '10000' },
+ run: async (terminal) => {
+ terminal.input('/new Parallel run A')
+ terminal.input('\r')
+ await new Promise((resolve) => setTimeout(resolve, 100))
+ terminal.input('parallel run A')
+ terminal.input('\r')
+ await terminal.waitFor(
+ () => normalized(terminal.screen()).includes('working'),
+ 'first active run',
+ )
+ terminal.input('/new Parallel run B')
+ terminal.input('\r')
+ await new Promise((resolve) => setTimeout(resolve, 100))
+ terminal.input('parallel run B')
+ terminal.input('\r')
+ await terminal.waitFor(
+ () => terminal.screen().split('\n').filter(isRunningWorkStripRow).length >= 2,
+ 'two Work Strip rows',
+ )
+ const before = await terminal.captureState()
+ const switchedFrom = before.record.view?.focusedRunId
+ const activityRuns = (before.record.view?.activity ?? [])
+ .filter((item) => item.kind === 'run')
+ .slice()
+ .reverse()
+ const targetIndex = activityRuns.findIndex((item) => item.runId !== switchedFrom)
+ const targetRunId = activityRuns[targetIndex]?.runId
+ const targetTitle = activityRuns[targetIndex]?.title
+ if (typeof targetRunId !== 'string' || typeof targetTitle !== 'string') {
+ throw new Error('multi-run capture could not resolve the background Activity row')
+ }
+ if (targetIndex !== 1) {
+ throw new Error(`multi-run capture expected one background row, received ${targetIndex}`)
+ }
+ terminal.input('\u001bOQ')
+ await terminal.waitFor(() => /^\s*activity\b/iu.test(terminal.screen()), 'activity browser')
+ terminal.input('\t')
+ await new Promise((resolve) => setTimeout(resolve, 250))
+ terminal.input('\u001b[B')
+ await new Promise((resolve) => setTimeout(resolve, 250))
+ await terminal.waitForStable('background Activity row')
+ const selectedLine = terminal
+ .screen()
+ .split('\n')
+ .find((line) => /^\s*›\s/u.test(line))
+ if (!selectedLine?.includes(targetTitle)) {
+ throw new Error(
+ `multi-run capture could not select ${JSON.stringify(targetTitle)} in Activity; selected=${JSON.stringify(selectedLine ?? '')}`,
+ )
+ }
+ terminal.input('\r')
+ await terminal.waitForStable('background focus selection')
+ terminal.input('\u001b[D')
+ await terminal.waitForStable('activity list return')
+ terminal.input('\u001b')
+ await new Promise((resolve) => setTimeout(resolve, 250))
+ await terminal.waitFor(
+ () => !/^\s*runs\b/iu.test(terminal.screen()),
+ 'activity browser dismissal',
+ )
+ const { point, record } = await terminal.captureState()
+ await terminal.closeWithSignal()
+ return { point, record, switchedFrom, targetRunId }
+ },
+ },
+ {
+ name: 'supervision',
+ columns: 80,
+ rows: 24,
+ uiFixture: 'supervision',
+ run: async (terminal) => {
+ terminal.input('/activity')
+ terminal.input('\r')
+ await terminal.waitFor(
+ () => normalized(terminal.screen()).includes('stream and replay'),
+ 'supervisor activity',
+ )
+ // Activity starts on the all scope. Cycle until the worker scope is visible.
+ for (let attempt = 0; attempt < 4; attempt += 1) {
+ if (/^\s*workers\b/iu.test(terminal.screen())) break
+ const previousHeading = terminal.screen().split('\n', 1)[0]
+ terminal.input('\t')
+ await terminal.waitFor(
+ () => terminal.screen().split('\n', 1)[0] !== previousHeading,
+ `worker activity scope ${attempt + 1}`,
+ )
+ }
+ await terminal.waitFor(
+ () => /^\s*workers\b/iu.test(terminal.screen()),
+ 'worker activity filter',
+ )
+ await terminal.waitFor(
+ () => normalized(terminal.screen()).includes('a/r'),
+ 'worker attach control',
+ )
+ const { point, record } = await terminal.captureState()
+ await terminal.closeNormally()
+ return { point, record }
+ },
+ },
{
name: 'interaction',
columns: 80,
diff --git a/scripts/capture-visual.mjs b/scripts/capture-visual.mjs
index 79668f2..0fb37e7 100644
--- a/scripts/capture-visual.mjs
+++ b/scripts/capture-visual.mjs
@@ -7,7 +7,7 @@ import { join } from 'node:path'
import { promisify } from 'node:util'
import xterm from '@xterm/headless'
import * as pty from 'node-pty'
-import { createStateDefinitions } from './capture-visual-definitions.mjs'
+import { createStateDefinitions, isRunningWorkStripRow } from './capture-visual-definitions.mjs'
import {
captureProvenance,
createArtifactFor,
@@ -221,6 +221,7 @@ async function spawnTerminal(
const captureState = async () => {
await waitForStable()
const point = snapshot()
+ await rm(`${recordPath}.frame`, { force: true })
process.kill(session.pid, 'SIGUSR2')
return { point, record: await readRecord('.frame') }
}
@@ -463,6 +464,32 @@ try {
if (!normalized(result.point.screen).includes('working'))
throw new Error('active-streaming frame does not show active work')
}
+ if (definition.name === 'multi-run') {
+ const workStrip = result.record.view?.workStrip ?? []
+ const renderedRows = result.point.screen.split('\n').filter(isRunningWorkStripRow)
+ if (workStrip.length !== 2 || renderedRows.length !== 2) {
+ throw new Error(
+ `multi-run capture did not expose two Work Strip rows (view=${workStrip.length}, rendered=${renderedRows.length})`,
+ )
+ }
+ if (
+ typeof result.switchedFrom !== 'string' ||
+ typeof result.targetRunId !== 'string' ||
+ result.record.view?.focusedRunId !== result.targetRunId
+ ) {
+ throw new Error(
+ `multi-run capture did not switch the focused run through Activity (before=${String(result.switchedFrom)}, target=${String(result.targetRunId)}, after=${String(result.record.view?.focusedRunId)}, rows=${JSON.stringify(workStrip.map((item) => ({ runId: item.runId, focused: item.focused })))})`,
+ )
+ }
+ }
+ if (definition.name === 'supervision') {
+ if (result.record.view?.activity?.filter((item) => item.kind === 'worker').length !== 3) {
+ throw new Error('supervision capture did not contain three projected workers')
+ }
+ if (!normalized(result.point.screen).includes('a/r')) {
+ throw new Error('supervision capture did not expose the worker attach control')
+ }
+ }
if (
result.record.capturePhase !== 'atomic-signal-frame' ||
result.record.state?.revision !== result.record.view?.revision
@@ -578,6 +605,11 @@ try {
await writeCastGif(join(rawRoot, 'automation-frame.cast'), automationGif)
artifacts.push(await artifactFor(automationGif, 'automation-flow', 80, 24, 'automation'))
+ const multiRunGif = join(outputRoot, '80x24-multirun.gif')
+ await writeCastGif(join(rawRoot, 'multi-run.cast'), multiRunGif)
+ const multiRunArtifact = await artifactFor(multiRunGif, 'multi-run-flow', 80, 24, 'multi-run')
+ artifacts.push(multiRunArtifact)
+
const keyboardFlow = await transcriptKeyboardCapture()
const keyboardCast = join(rawRoot, 'transcript-keyboard.cast')
const keyboardGif = join(outputRoot, '80x24-transcript-keyboard.gif')
@@ -611,6 +643,16 @@ try {
steps: keyboardFlow.steps,
artifacts: keyboardArtifacts.map((artifact) => artifact.path),
},
+ multiRunFlow: {
+ steps: [
+ 'start run A',
+ 'create conversation B while A remains active',
+ 'start run B',
+ 'open Activity',
+ 'switch focus to run A',
+ ],
+ artifacts: [multiRunArtifact.path],
+ },
states: stateManifests,
artifacts,
},
diff --git a/scripts/check-dependencies.mjs b/scripts/check-dependencies.mjs
index ac3b403..c774344 100644
--- a/scripts/check-dependencies.mjs
+++ b/scripts/check-dependencies.mjs
@@ -1,8 +1,11 @@
import { execFileSync } from 'node:child_process'
+import { readFileSync } from 'node:fs'
+
+const root = new URL('../', import.meta.url)
const graph = JSON.parse(
execFileSync('pnpm', ['list', '--prod', '--depth', 'Infinity', '--json'], {
- cwd: new URL('../', import.meta.url),
+ cwd: root,
encoding: 'utf8',
env: { ...process.env, FORCE_COLOR: '0' },
}),
@@ -31,15 +34,40 @@ if (!packages.has('@earendil-works/pi-tui')) {
violations.push('missing @earendil-works/pi-tui')
}
+const manifest = JSON.parse(readFileSync(new URL('package.json', root), 'utf8'))
+const runtimeContracts = readFileSync(new URL('docs/04-runtime-contracts.md', root), 'utf8')
+const documentedCohort = [
+ '@tangle-network/agent-interface',
+ '@tangle-network/agent-runtime',
+ '@tangle-network/agent-eval',
+ '@tangle-network/agent-provider-cli-bridge',
+ '@tangle-network/agent-provider-tangle',
+ '@tangle-network/sandbox',
+]
+for (const name of documentedCohort) {
+ const expected = manifest.dependencies?.[name]
+ const row = runtimeContracts
+ .split('\n')
+ .find((line) => line.startsWith('|') && line.split('|')[1]?.includes(name))
+ const documented = row?.split('|')[2]?.trim().replaceAll('`', '')
+ if (typeof expected !== 'string') {
+ violations.push(`missing direct dependency ${name}`)
+ } else if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/u.test(expected)) {
+ violations.push(`${name} must use an exact version; found ${expected}`)
+ } else if (documented !== expected) {
+ violations.push(`${name} documentation is ${documented ?? 'missing'}; expected ${expected}`)
+ }
+}
+
if (violations.length > 0) {
- process.stderr.write(`Forbidden dependency graph entries:\n${violations.join('\n')}\n`)
+ process.stderr.write(`Dependency checks failed:\n${violations.join('\n')}\n`)
process.exitCode = 1
process.exit()
}
try {
execFileSync('pnpm', ['audit', '--prod', '--audit-level', 'high'], {
- cwd: new URL('../', import.meta.url),
+ cwd: root,
stdio: 'inherit',
})
} catch {
@@ -49,5 +77,5 @@ try {
if (process.exitCode !== 1)
process.stdout.write(
- `Production dependency graph: ${packages.size} packages; Pi TUI present; no copied agent application; no high or critical audit finding\n`,
+ `Production dependency graph: ${packages.size} packages; documented cohort matches; Pi TUI present; no copied agent application; no high or critical audit finding\n`,
)
diff --git a/scripts/live-bridge/config.mjs b/scripts/live-bridge/config.mjs
index ae84432..f037a52 100644
--- a/scripts/live-bridge/config.mjs
+++ b/scripts/live-bridge/config.mjs
@@ -172,7 +172,7 @@ export async function probePackedAnalysisReadiness(installRoot, endpoint, target
}
}
-export async function loadProviderCapabilities(installRoot) {
+export async function loadProviderCapabilities(installRoot, backend) {
const module = await import(
pathToFileURL(
join(
@@ -185,7 +185,7 @@ export async function loadProviderCapabilities(installRoot) {
),
).href
)
- return module.defaultCliBridgeCapabilities()
+ return module.defaultCliBridgeCapabilities(backend)
}
export async function writeTargetConfig(root, endpoint, target, credential) {
@@ -193,7 +193,8 @@ export async function writeTargetConfig(root, endpoint, target, credential) {
.replaceAll(/[^a-z0-9]+/giu, '-')
.replace(/^-|-$/gu, '')
.toLowerCase()
- const workspace = join(root, `workspace-${key}`)
+ const operationNamespace = randomUUID()
+ const workspace = join(root, `workspace-${key}-${operationNamespace}`)
const configDirectory = join(workspace, '.braid')
const profileDirectory = join(configDirectory, 'profiles')
await mkdir(profileDirectory, { recursive: true, mode: 0o700 })
@@ -202,7 +203,7 @@ export async function writeTargetConfig(root, endpoint, target, credential) {
const profile = profileForBridgeTarget(target)
const connectionId = 'connection-live-cli-bridge'
const now = new Date().toISOString()
- const databaseKeyFile = join(root, `database-key-${key}`)
+ const databaseKeyFile = join(root, `database-key-${key}-${operationNamespace}`)
await writeFile(databaseKeyFile, `${randomBytes(32).toString('hex')}\n`, { mode: 0o600 })
const connection = {
id: connectionId,
@@ -240,6 +241,7 @@ export async function writeTargetConfig(root, endpoint, target, credential) {
profile,
connection,
key,
+ operationNamespace,
databaseKeyFile,
}
}
diff --git a/scripts/live-bridge/constants.mjs b/scripts/live-bridge/constants.mjs
index fb7117c..db70c3e 100644
--- a/scripts/live-bridge/constants.mjs
+++ b/scripts/live-bridge/constants.mjs
@@ -46,16 +46,45 @@ export const targetDefinitions = Object.freeze([
},
])
+export const releaseRunnerTargetDefinitions = Object.freeze([
+ {
+ key: 'pi-tangle-router-deepseek-v4-flash',
+ label: 'Pi with Tangle Router DeepSeek V4 Flash',
+ modelId: 'pi/tangle-router/deepseek-v4-flash',
+ backend: 'pi',
+ },
+ {
+ key: 'codex-default',
+ label: 'Codex default',
+ modelId: 'codex/default',
+ backend: 'codex',
+ },
+])
+
+function marker(key, suffix) {
+ return `LIVE_BRAID_${key.toUpperCase().replaceAll('.', '_')}_${suffix}`
+}
+
+export const liveMarkers = Object.freeze({
+ normal: (key) => marker(key, 'OK'),
+ cancel: (key) => marker(key, 'CANCEL'),
+ handoffSource: (key) => marker(key, 'HANDOFF_SOURCE_OK'),
+ handoffDestination: (key) => marker(key, 'HANDOFF_OK'),
+ interactive: (key) => marker(key, 'INTERACTIVE_OK'),
+ restart: (key) => marker(key, 'RESTART'),
+})
+
export const livePrompts = Object.freeze({
- normal: (key) => `Reply with exactly LIVE_BRAID_${key.toUpperCase().replaceAll('.', '_')}_OK.`,
+ normal: (key) =>
+ `Output only this token, with no punctuation or explanation: ${liveMarkers.normal(key)}`,
cancel: (key) =>
- `For LIVE_BRAID_${key.toUpperCase().replaceAll('.', '_')}_CANCEL, produce a numbered list from 1 to 1000 with one short word per line.`,
+ `For ${liveMarkers.cancel(key)}, produce a numbered list from 1 to 1000 with one short word per line.`,
handoffSource: (key) =>
- `Reply with exactly LIVE_BRAID_${key.toUpperCase().replaceAll('.', '_')}_HANDOFF_SOURCE_OK.`,
+ `Output only this token, with no punctuation or explanation: ${liveMarkers.handoffSource(key)}`,
handoffDestination: (key) =>
- `Reply with exactly LIVE_BRAID_${key.toUpperCase().replaceAll('.', '_')}_HANDOFF_OK.`,
+ `Output only this token, with no punctuation or explanation: ${liveMarkers.handoffDestination(key)}`,
interactive: (key) =>
- `Ask one user-visible permission question before completing LIVE_BRAID_${key.toUpperCase().replaceAll('.', '_')}_INTERACTIVE_OK.`,
+ `Use the read tool now to read ./interaction-proof-${key}.txt. Do not guess its contents or answer without the tool call. After the permission response, report what happened.`,
restart: (key) =>
- `For LIVE_BRAID_${key.toUpperCase().replaceAll('.', '_')}_RESTART, produce a numbered list from 1 to 1000 with one short word per line.`,
+ `Do not use tools. Reply directly with ${liveMarkers.restart(key)}, then count from 1 to 1000 with one integer per line.`,
})
diff --git a/scripts/live-bridge/endpoint.mjs b/scripts/live-bridge/endpoint.mjs
index b71614f..643c646 100644
--- a/scripts/live-bridge/endpoint.mjs
+++ b/scripts/live-bridge/endpoint.mjs
@@ -1,3 +1,5 @@
+import { createHash } from 'node:crypto'
+
import { exitCodes } from './constants.mjs'
import { LiveBridgeError } from './errors.mjs'
import { evidenceValue, redactString } from './redaction.mjs'
@@ -62,29 +64,58 @@ export function bridgeAuthToken() {
)
}
-export async function requestJson(endpoint, path, token, timeoutMs = 10_000) {
+/**
+ * Issue one bounded JSON request against CLI Bridge.
+ *
+ * The optional request object keeps live checks on this shared transport while
+ * allowing them to prove POST acknowledgements without retaining raw bodies.
+ */
+export async function requestJson(
+ endpoint,
+ path,
+ token,
+ timeoutMs = 10_000,
+ {
+ method = 'GET',
+ body: requestBody,
+ headers: requestHeaders = {},
+ captureWireDigest = false,
+ } = {},
+) {
const controller = new AbortController()
const timer = setTimeout(() => controller.abort(), timeoutMs)
try {
const response = await fetch(`${endpoint}${path}`, {
+ method,
headers: {
accept: 'application/json',
+ ...(requestBody === undefined ? {} : { 'content-type': 'application/json' }),
+ ...requestHeaders,
...(token === undefined ? {} : { authorization: `Bearer ${token}` }),
},
+ ...(requestBody === undefined ? {} : { body: requestBody }),
signal: controller.signal,
})
const text = await response.text()
- let body
+ let responseBody
try {
- body = text.length === 0 ? undefined : JSON.parse(text)
+ responseBody = text.length === 0 ? undefined : JSON.parse(text)
} catch {
- body = undefined
+ responseBody = undefined
}
return {
status: response.status,
ok: response.ok,
- body: evidenceValue(body, '', 0, token === undefined ? [] : [token]),
+ body: evidenceValue(responseBody, '', 0, token === undefined ? [] : [token]),
text: redactString(text, token === undefined ? [] : [token]).slice(0, 64_000),
+ ...(captureWireDigest
+ ? {
+ wire: {
+ bytes: Buffer.byteLength(text),
+ digest: `sha256:${createHash('sha256').update(text).digest('hex')}`,
+ },
+ }
+ : {}),
}
} catch (error) {
return {
diff --git a/scripts/live-bridge/evidence.mjs b/scripts/live-bridge/evidence.mjs
index a9e99cb..2eb0797 100644
--- a/scripts/live-bridge/evidence.mjs
+++ b/scripts/live-bridge/evidence.mjs
@@ -39,8 +39,9 @@ export async function removeTemp(paths) {
}
}
-export async function writeEvidence(evidence) {
+export async function writeEvidence(evidence, destinationOverride) {
const destination =
+ destinationOverride ??
process.env.BRAID_LIVE_BRIDGE_EVIDENCE ??
(process.env.BRAID_RELEASE_ARTIFACT_ROOT
? join(process.env.BRAID_RELEASE_ARTIFACT_ROOT, 'live', 'bridge', 'evidence.json')
diff --git a/scripts/live-bridge/main.mjs b/scripts/live-bridge/main.mjs
index 1692f94..3d450c2 100644
--- a/scripts/live-bridge/main.mjs
+++ b/scripts/live-bridge/main.mjs
@@ -8,6 +8,7 @@ import {
exitCodes,
liveProofScope,
liveReleaseProofScope,
+ releaseRunnerTargetDefinitions,
repository,
} from './constants.mjs'
import {
@@ -142,11 +143,22 @@ export async function main({ requireCompleteReleaseProof = false } = {}) {
bridgeCleanup = bridge.cleanup
let selected = bridge.selected
if (discoverFromHealth) {
- const releaseDefinitions = releaseTargetDefinitions(
- policy.definitions,
+ const preferredDefinitions = [...policy.definitions, ...releaseRunnerTargetDefinitions]
+ const requiredDefinitions = requireCompleteReleaseProof
+ ? preferredDefinitions
+ : policy.definitions
+ const discoveredDefinitions = releaseTargetDefinitions(
+ preferredDefinitions,
bridgeEvidence.models,
bridge.health,
)
+ const releaseDefinitions = [
+ ...(requireCompleteReleaseProof ? requiredDefinitions : []),
+ ...discoveredDefinitions,
+ ].filter(
+ (definition, index, definitions) =>
+ definitions.findIndex(({ modelId }) => modelId === definition.modelId) === index,
+ )
if (releaseDefinitions.length === 0) {
throw new LiveBridgeError(
'LIVE_RELEASE_TARGETS_UNAVAILABLE',
@@ -169,10 +181,17 @@ export async function main({ requireCompleteReleaseProof = false } = {}) {
}
evidence.selectedTargets = bridgeEvidence.selectedTargets
const packed = await buildPackedBinary(evidence, repository, (path) => tempPaths.push(path))
- const providerCapabilities = await loadProviderCapabilities(packed.installRoot)
+ const providerCapabilitiesByBackend = Object.fromEntries(
+ await Promise.all(
+ [...new Set(selected.map(({ backend }) => backend))].map(async (backend) => [
+ backend,
+ await loadProviderCapabilities(packed.installRoot, backend),
+ ]),
+ ),
+ )
evidence.provider = {
package: '@tangle-network/agent-provider-cli-bridge',
- capabilities: evidenceValue(providerCapabilities),
+ capabilitiesByBackend: evidenceValue(providerCapabilitiesByBackend),
}
evidence.analysis = await probePackedAnalysisReadiness(
packed.installRoot,
@@ -190,7 +209,7 @@ export async function main({ requireCompleteReleaseProof = false } = {}) {
packed.installRoot,
targetRoot,
endpoint,
- providerCapabilities,
+ providerCapabilitiesByBackend[target.backend],
target,
token,
Number(process.env.BRAID_LIVE_BRIDGE_TIMEOUT_MS ?? defaultTimeoutMs),
@@ -229,7 +248,7 @@ export async function main({ requireCompleteReleaseProof = false } = {}) {
installRoot: packed.installRoot,
root: targetRoot,
endpoint,
- providerCapabilities,
+ providerCapabilitiesByBackend,
targets: selected,
targetRecords: evidence.targets,
token,
diff --git a/scripts/live-bridge/matrix.mjs b/scripts/live-bridge/matrix.mjs
index a378572..236af77 100644
--- a/scripts/live-bridge/matrix.mjs
+++ b/scripts/live-bridge/matrix.mjs
@@ -320,9 +320,16 @@ async function runConfigurationMatrix() {
const root = await mkdtemp(join(tmpdir(), 'braid-live-config-matrix-'))
try {
const written = await writeTargetConfig(root, endpoint, piGlm, undefined)
+ const repeated = await writeTargetConfig(root, endpoint, piGlm, undefined)
assert.deepEqual(JSON.parse(await readFile(written.profilePath, 'utf8')), written.profile)
assert.equal(written.profile.model.default, 'deepseek-v4-flash')
assert.equal(written.profile.model.provider, 'deepseek')
+ assert.notEqual(repeated.workspace, written.workspace)
+ assert.notEqual(repeated.databaseKeyFile, written.databaseKeyFile)
+ assert.equal(
+ resolve(written.databaseKeyFile).startsWith(`${resolve(written.workspace)}/`),
+ false,
+ )
const credential = await writeTargetConfig(root, endpoint, glm, {
recordRef: createLiveCredentialId('11111111-1111-1111-1111-111111111111'),
})
@@ -383,7 +390,10 @@ async function runSemanticMatrix() {
interactionFromResponse(
{
type: 'event',
- event: { kind: 'run.interaction', runId: 'run-live', request: interactionRequest },
+ event: {
+ kind: 'run.interaction',
+ payload: { runId: 'run-live', interaction: interactionRequest },
+ },
},
'run-live',
),
@@ -391,7 +401,13 @@ async function runSemanticMatrix() {
)
assert.equal(
interactionFromResponse(
- { type: 'event', event: { kind: 'run.interaction', runId: 'other-run' } },
+ {
+ type: 'event',
+ event: {
+ kind: 'run.interaction',
+ payload: { runId: 'other-run', interaction: interactionRequest },
+ },
+ },
'run-live',
),
undefined,
diff --git a/scripts/live-bridge/native-continuation.mjs b/scripts/live-bridge/native-continuation.mjs
new file mode 100644
index 0000000..6715c24
--- /dev/null
+++ b/scripts/live-bridge/native-continuation.mjs
@@ -0,0 +1,1378 @@
+import { join } from 'node:path'
+import { fileURLToPath } from 'node:url'
+
+import {
+ AgentEnvironmentCapabilitiesSchema,
+ AgentExactRunControlRefSchema,
+ AgentNativeContextContinuationAdmissionSchema,
+ AgentNativeContextContinuationResultSchema,
+ AgentRunCancellationAcknowledgementSchema,
+ AgentRunCancellationRequestSchema,
+ agentNativeContextContinuationAdmissionMatchesRequest,
+ agentNativeContextContinuationResultMatchesRequest,
+ agentRunCancellationAcknowledgementMatchesRequest,
+ agentRunCancellationRequestDigest,
+ NativeContextBoundaryProofSchema,
+ NativeContextContinuationRequestSchema,
+ NativeContextContinuationTurnSchema,
+ nativeContextContinuationRequestDigest,
+ nativeContextContinuationTurnDigest,
+} from '@tangle-network/agent-interface'
+import { createCliBridgeProvider } from '@tangle-network/agent-provider-cli-bridge'
+
+import { defaultTimeoutMs, exitCodes, repository } from './constants.mjs'
+import {
+ bridgeAuthToken,
+ endpointForEvidence,
+ healthBackendsReady,
+ requestJson,
+ safeEndpoint,
+} from './endpoint.mjs'
+import { LiveBridgeError } from './errors.mjs'
+import { errorEvidence, writeEvidence } from './evidence.mjs'
+import { evidenceValue, redactString } from './redaction.mjs'
+
+export const NATIVE_CONTINUATION_RECEIPT_SCHEMA = 'braid.live-bridge.native-continuation.v1'
+export const NATIVE_CONTINUATION_MODEL = 'pi/tangle-router/deepseek-v4-flash'
+export const NATIVE_CONTINUATION_EVIDENCE_PATH = join(
+ repository,
+ 'artifacts',
+ 'verification',
+ 'live',
+ 'bridge',
+ 'native-continuation.json',
+)
+
+const DEFAULT_FIRST_PROMPT = 'Reply exactly with: Braid live continuation first complete.'
+const DEFAULT_CANCEL_PROMPT =
+ 'Use the terminal to run `sleep 30`. After it finishes, reply exactly: cancelled continuation.'
+const DEFAULT_SUCCESS_PROMPT = 'Reply exactly with: Braid live continuation success.'
+const DEFAULT_EVENT_TIMEOUT_MS = 3_000
+const DEFAULT_REQUEST_TIMEOUT_MS = 30_000
+const DEFAULT_MAX_SSE_EVENTS = 12
+const RUNNER_NAME = 'pi'
+const ROUTER_PROVIDER = 'tangle-router'
+
+export function nativeContinuationTarget(route) {
+ const prefix = `${RUNNER_NAME}/${ROUTER_PROVIDER}/`
+ if (typeof route !== 'string' || !route.startsWith(prefix)) return undefined
+ const model = route.slice(prefix.length)
+ if (model.length === 0) return undefined
+ return { route, runner: RUNNER_NAME, provider: ROUTER_PROVIDER, model }
+}
+
+function recordValue(value) {
+ return value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined
+}
+
+function stringValue(value) {
+ return typeof value === 'string' && value.length > 0 ? value : undefined
+}
+
+function fail(code, message, details = {}, exitCode = exitCodes.failed) {
+ throw new LiveBridgeError(code, message, exitCode, details)
+}
+
+function assertCondition(condition, code, message, details = {}, exitCode = exitCodes.failed) {
+ if (!condition) fail(code, message, details, exitCode)
+}
+
+function responseFailureDetails(response) {
+ return {
+ status: response?.status,
+ ...(response?.error === undefined ? {} : { error: response.error }),
+ }
+}
+
+function requireResponse(response, expectedStatus, label, { unavailable = false } = {}) {
+ if (response?.status === expectedStatus && response.ok === true) return response
+ fail(
+ unavailable ? 'LIVE_NATIVE_BRIDGE_UNAVAILABLE' : 'LIVE_NATIVE_REQUEST_FAILED',
+ `${label} returned an unexpected response`,
+ responseFailureDetails(response),
+ unavailable ? exitCodes.unavailable : exitCodes.failed,
+ )
+}
+
+function assertRunCoordinates(reference, label = 'run reference') {
+ try {
+ return AgentExactRunControlRefSchema.parse(reference)
+ } catch (error) {
+ fail('LIVE_NATIVE_RUN_IDENTITY_INVALID', `${label} is not an exact run reference`, {
+ cause: error instanceof Error ? error.message : String(error),
+ })
+ }
+}
+
+function assertBoundaryCoordinates(boundary, reference) {
+ assertCondition(
+ boundary.runId === reference.runId &&
+ boundary.provider === reference.provider &&
+ boundary.environmentId === reference.environmentId &&
+ boundary.sessionId === reference.sessionId &&
+ boundary.executionId === reference.executionId &&
+ boundary.requestDigest === reference.requestDigest,
+ 'LIVE_NATIVE_BOUNDARY_IDENTITY_MISMATCH',
+ 'native context boundary does not bind to the source run',
+ )
+}
+
+function advancedReference(source, candidate) {
+ return (
+ candidate.provider === source.provider &&
+ candidate.environmentId === source.environmentId &&
+ candidate.sessionId === source.sessionId &&
+ (candidate.runId !== source.runId || candidate.executionId !== source.executionId)
+ )
+}
+
+function statusSummary(body) {
+ const value = recordValue(body)
+ if (!value) return undefined
+ return {
+ status: stringValue(value.status),
+ terminal: typeof value.terminal === 'boolean' ? value.terminal : undefined,
+ state: stringValue(value.state),
+ canonicalLastSeq: Number.isSafeInteger(value.canonicalLastSeq)
+ ? value.canonicalLastSeq
+ : undefined,
+ }
+}
+
+function sessionIdentitySummary(body) {
+ const value = recordValue(body)
+ if (!value) return undefined
+ return {
+ id: stringValue(value.id),
+ backend: stringValue(value.backend),
+ model: stringValue(value.model),
+ status: stringValue(value.status),
+ runId: stringValue(value.runId ?? value.run_id),
+ }
+}
+
+async function readSessionIdentity(endpoint, sessionId, token, timeoutMs) {
+ const response = await requestJson(
+ endpoint,
+ `/v1/sessions/${encodeURIComponent(sessionId)}`,
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ )
+ requireResponse(response, 200, `session ${sessionId} identity`)
+ const session = sessionIdentitySummary(response.body)
+ assertCondition(
+ session?.id === sessionId &&
+ session.backend === RUNNER_NAME &&
+ nativeContinuationTarget(session.model) !== undefined,
+ 'LIVE_NATIVE_SESSION_IDENTITY_MISMATCH',
+ 'CLI Bridge session identity did not retain the requested Pi model route',
+ { session },
+ )
+ return session
+}
+
+function referenceSummary(reference) {
+ const parsed = assertRunCoordinates(reference)
+ return {
+ runId: parsed.runId,
+ provider: parsed.provider,
+ environmentId: parsed.environmentId,
+ sessionId: parsed.sessionId,
+ executionId: parsed.executionId,
+ requestDigest: parsed.requestDigest,
+ }
+}
+
+function boundarySummary(boundary) {
+ const parsed = NativeContextBoundaryProofSchema.parse(boundary)
+ return {
+ runId: parsed.runId,
+ provider: parsed.provider,
+ environmentId: parsed.environmentId,
+ sessionId: parsed.sessionId,
+ executionId: parsed.executionId,
+ requestDigest: parsed.requestDigest,
+ kind: parsed.boundary.kind,
+ observedAt: parsed.observedAt,
+ }
+}
+
+function capabilitySummary(capabilities) {
+ return evidenceValue({
+ nativeContinuation: capabilities.nativeContinuation,
+ retainedControl: capabilities.retainedControl,
+ streaming: capabilities.streaming,
+ sessions: capabilities.sessions,
+ interactions: capabilities.interactions,
+ })
+}
+
+function assertNativeCapabilities(capabilities) {
+ const parsed = AgentEnvironmentCapabilitiesSchema.parse(capabilities)
+ const retained = parsed.retainedControl
+ const native = parsed.nativeContinuation
+ assertCondition(
+ parsed.sessions.continue === true &&
+ parsed.streaming.live === true &&
+ parsed.streaming.replay === true &&
+ parsed.streaming.detach === true &&
+ parsed.streaming.turnIdempotency === true,
+ 'LIVE_NATIVE_CAPABILITY_INCOMPLETE',
+ 'CLI Bridge did not advertise the complete retained stream contract',
+ )
+ assertCondition(
+ retained?.exactRunIdentity === true &&
+ retained.resultIdentity === true &&
+ retained.eventIdentity === true &&
+ retained.cancellationIdempotency === true,
+ 'LIVE_NATIVE_CAPABILITY_INCOMPLETE',
+ 'CLI Bridge did not advertise exact retained-run controls',
+ )
+ assertCondition(
+ native?.atomicBoundary === true &&
+ native.requestIdempotency === true &&
+ native.admissionControl === true,
+ 'LIVE_NATIVE_CAPABILITY_INCOMPLETE',
+ 'CLI Bridge did not advertise native admission control',
+ )
+ return parsed
+}
+
+/** Build the canonical native continuation request used by the live check. */
+export function nativeContinuationRequest({ operationId, run, expectedBoundary, prompt }) {
+ const turn = { prompt }
+ const material = {
+ operationId,
+ turnDigest: nativeContextContinuationTurnDigest(turn),
+ run: assertRunCoordinates(run),
+ expectedBoundary: NativeContextBoundaryProofSchema.parse(expectedBoundary),
+ }
+ const request = NativeContextContinuationRequestSchema.parse({
+ ...material,
+ requestDigest: nativeContextContinuationRequestDigest(material),
+ })
+ return { request, turn }
+}
+
+/** Build the canonical exact cancellation request used by the live check. */
+export function exactCancellationRequest({ operationId, run, reason }) {
+ const material = {
+ operationId,
+ run: assertRunCoordinates(run),
+ ...(reason === undefined ? {} : { reason }),
+ }
+ return AgentRunCancellationRequestSchema.parse({
+ ...material,
+ requestDigest: agentRunCancellationRequestDigest(material),
+ })
+}
+
+/** Encode one continuation body without provider-specific fields. */
+export function nativeContinuationBody(input) {
+ const request = NativeContextContinuationRequestSchema.parse(input.request)
+ const turn = NativeContextContinuationTurnSchema.parse(input.turn)
+ return JSON.stringify({ request, turn })
+}
+
+/** Parse complete SSE frames without interpreting provider-native payloads. */
+export function parseSseEvents(value) {
+ const text = String(value).replaceAll('\r\n', '\n').replaceAll('\r', '\n')
+ return text.split('\n\n').flatMap((frame) => {
+ const eventLines = []
+ const dataLines = []
+ for (const line of frame.split('\n')) {
+ if (line.startsWith('event:')) eventLines.push(line.slice(6).trimStart())
+ else if (line.startsWith('data:')) dataLines.push(line.slice(5).trimStart())
+ }
+ if (dataLines.length === 0) return []
+ const dataText = dataLines.join('\n')
+ let data
+ try {
+ data = JSON.parse(dataText)
+ } catch {
+ data = undefined
+ }
+ return [{ event: eventLines.at(-1) ?? 'message', data }]
+ })
+}
+
+async function raceWithTimeout(promises, timeoutMs, message) {
+ let timer
+ try {
+ return await Promise.race([
+ ...promises,
+ new Promise((_, reject) => {
+ timer = setTimeout(() => reject(new Error(message)), timeoutMs)
+ }),
+ ])
+ } finally {
+ clearTimeout(timer)
+ }
+}
+
+async function observeSettlement(promise, timeoutMs, onFulfilled) {
+ let timer
+ try {
+ await Promise.race([
+ promise.then(onFulfilled, () => {}),
+ new Promise((resolve) => {
+ timer = setTimeout(resolve, timeoutMs)
+ }),
+ ])
+ } finally {
+ clearTimeout(timer)
+ }
+}
+
+export function eventSummary(frame) {
+ const event = recordValue(frame.data)
+ // Retained Bridge streams wrap the native event as envelope.event.event.
+ // Pi puts provider and model on message_start.message (or messages[*]).
+ const bridgeEvent = recordValue(event?.event)
+ const nativeEvent = recordValue(bridgeEvent?.event)
+ const nativeData = recordValue(nativeEvent?.data)
+ const nativeProviderEvent = recordValue(nativeEvent?.providerEvent)
+ const nativeMessage = recordValue(nativeEvent?.message)
+ const nativeMessages = Array.isArray(nativeEvent?.messages)
+ ? nativeEvent.messages.map(recordValue).filter(Boolean)
+ : []
+ const candidates = [
+ event,
+ bridgeEvent,
+ recordValue(event?.data),
+ recordValue(event?.providerEvent),
+ nativeEvent,
+ nativeData,
+ nativeProviderEvent,
+ nativeMessage,
+ ...nativeMessages,
+ ].filter(Boolean)
+ const eventType =
+ stringValue(frame.event) ??
+ candidates
+ .map((candidate) => stringValue(candidate.type) ?? stringValue(candidate.kind))
+ .find(Boolean)
+ const backend = candidates.map((candidate) => stringValue(candidate.backend)).find(Boolean)
+ const provider = candidates
+ .map((candidate) => stringValue(candidate.provider) ?? stringValue(candidate.providerName))
+ .find(Boolean)
+ const model = candidates.map((candidate) => stringValue(candidate.model)).find(Boolean)
+ const status = candidates.map((candidate) => stringValue(candidate.status)).find(Boolean)
+ return {
+ ...(eventType === undefined ? {} : { type: eventType }),
+ ...(backend === undefined ? {} : { backend }),
+ ...(provider === undefined ? {} : { provider }),
+ ...(model === undefined ? {} : { model }),
+ ...(status === undefined ? {} : { status }),
+ }
+}
+
+function appendSseFrames(buffer, maxEvents) {
+ const frames = []
+ let remainder = buffer
+ while (frames.length < maxEvents) {
+ const separator = remainder.indexOf('\n\n')
+ if (separator < 0) break
+ const frame = remainder.slice(0, separator)
+ remainder = remainder.slice(separator + 2)
+ frames.push(...parseSseEvents(`${frame}\n\n`))
+ }
+ return { frames: frames.slice(0, maxEvents), remainder }
+}
+
+async function captureRunEvents(
+ endpoint,
+ runId,
+ token,
+ { timeoutMs = DEFAULT_EVENT_TIMEOUT_MS, maxEvents = DEFAULT_MAX_SSE_EVENTS } = {},
+) {
+ const controller = new AbortController()
+ const timer = setTimeout(() => controller.abort(), timeoutMs)
+ let response
+ let reader
+ let raw = ''
+ let frames = []
+ let remainder = ''
+ try {
+ response = await fetch(`${endpoint}/v1/runs/${encodeURIComponent(runId)}/events`, {
+ headers: {
+ accept: 'text/event-stream',
+ ...(token === undefined ? {} : { authorization: `Bearer ${token}` }),
+ },
+ signal: controller.signal,
+ })
+ if (!response.ok || !response.body) {
+ return {
+ ok: false,
+ status: response.status,
+ error: `run events returned HTTP ${String(response.status)}`,
+ events: [],
+ }
+ }
+ reader = response.body.getReader()
+ const decoder = new TextDecoder()
+ while (frames.length < maxEvents) {
+ const next = await reader.read()
+ if (next.done) break
+ raw += decoder.decode(next.value, { stream: true })
+ if (Buffer.byteLength(raw) > 128_000) {
+ return {
+ ok: false,
+ status: response.status,
+ error: 'run events exceeded the bounded observation window',
+ events: frames.map(eventSummary),
+ }
+ }
+ const parsed = appendSseFrames(`${remainder}${raw}`, maxEvents - frames.length)
+ frames = [...frames, ...parsed.frames]
+ remainder = parsed.remainder
+ raw = ''
+ }
+ return {
+ ok: true,
+ status: response.status,
+ contentType: response.headers.get('content-type'),
+ events: frames.map(eventSummary),
+ }
+ } catch (error) {
+ if (response?.ok === true) {
+ return {
+ ok: true,
+ status: response.status,
+ contentType: response.headers.get('content-type'),
+ events: frames.map(eventSummary),
+ ...(frames.length === 0
+ ? {
+ error: redactString(
+ error instanceof Error ? error.message : String(error),
+ token ? [token] : [],
+ ),
+ }
+ : {}),
+ }
+ }
+ return {
+ ok: false,
+ status: response?.status,
+ error: redactString(
+ error instanceof Error ? error.message : String(error),
+ token ? [token] : [],
+ ),
+ events: frames.map(eventSummary),
+ }
+ } finally {
+ clearTimeout(timer)
+ controller.abort()
+ if (reader !== undefined) await reader.cancel().catch(() => {})
+ }
+}
+
+export function observedProviderAndModel(events, expectedRoute = NATIVE_CONTINUATION_MODEL) {
+ const target = nativeContinuationTarget(expectedRoute)
+ const backends = [...new Set(events.map((event) => event.backend).filter(Boolean))]
+ const providers = [...new Set(events.map((event) => event.provider).filter(Boolean))]
+ const models = [...new Set(events.map((event) => event.model).filter(Boolean))]
+ return {
+ backends,
+ providers,
+ models,
+ backend: backends.find((value) => value === target?.runner),
+ provider: providers.find((value) => value === target?.provider),
+ model: models.find(
+ (value) => value === target?.model || value.endsWith(`/${target?.model ?? ''}`),
+ ),
+ }
+}
+
+function observedIdentityMatchesSession(observed, session) {
+ const target = nativeContinuationTarget(session?.model)
+ if (target === undefined) return false
+ return (
+ observed.backend === session?.backend &&
+ observed.backends.every((value) => value === session?.backend) &&
+ observed.providers.every((value) => value === target.provider) &&
+ observed.models.every(
+ (value) => `${observed.backend}/${target.provider}/${value}` === session?.model,
+ ) &&
+ observed.provider === target.provider &&
+ observed.model !== undefined &&
+ `${observed.backend}/${observed.provider}/${observed.model}` === session?.model
+ )
+}
+
+export function assertObservedIdentity(observed, session) {
+ assertCondition(
+ (observed.backend === undefined || observed.backend === session?.backend) &&
+ (observed.provider === undefined && observed.model === undefined
+ ? true
+ : observedIdentityMatchesSession(observed, session)),
+ 'LIVE_NATIVE_PROVIDER_UNVERIFIED',
+ 'live events reported a provider or model that did not match the retained session route',
+ {
+ session,
+ backends: observed.backends,
+ providers: observed.providers,
+ models: observed.models,
+ },
+ )
+}
+
+async function readActiveStatus(endpoint, runId, token, timeoutMs) {
+ const response = await requestJson(
+ endpoint,
+ `/v1/runs/${encodeURIComponent(runId)}`,
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ )
+ requireResponse(response, 200, 'active run status')
+ const status = statusSummary(response.body)
+ assertCondition(
+ status?.status === 'running' && status.terminal === false,
+ 'LIVE_NATIVE_ADMISSION_NOT_ACTIVE',
+ 'native continuation was not observable as an active run after admission',
+ { status },
+ )
+ return status
+}
+
+async function closeSession(endpoint, sessionId, token, timeoutMs) {
+ const response = await requestJson(
+ endpoint,
+ `/v1/sessions/${encodeURIComponent(sessionId)}/close`,
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ { method: 'POST' },
+ )
+ requireResponse(response, 200, `close session ${sessionId}`)
+ assertCondition(
+ recordValue(response.body)?.closed === true,
+ 'LIVE_NATIVE_CLEANUP_FAILED',
+ 'CLI Bridge did not confirm retained session cleanup',
+ )
+ return {
+ status: response.status,
+ closed: true,
+ session: statusSummary(recordValue(response.body)?.session),
+ }
+}
+
+async function firstTurn(environment, sessionId, suffix, prompt, endpoint, token, timeoutMs) {
+ const session = environment.session(sessionId)
+ const startedAt = performance.now()
+ const result = await session.prompt({
+ prompt,
+ turnId: `${suffix}-turn-1`,
+ executionId: `${suffix}-execution-1`,
+ })
+ const elapsedMs = Math.round(performance.now() - startedAt)
+ assertCondition(
+ result.success === true && result.metadata?.status === 'done',
+ 'LIVE_NATIVE_FIRST_TURN_FAILED',
+ 'the real Pi first turn did not complete successfully',
+ { status: result.metadata?.status },
+ )
+ const controlRef = assertRunCoordinates(session.controlRef, 'first turn control reference')
+ const boundaryValue = await session.contextBoundary?.()
+ assertCondition(
+ boundaryValue !== null && boundaryValue !== undefined,
+ 'LIVE_NATIVE_BOUNDARY_MISSING',
+ 'the real Pi session did not return a context boundary',
+ )
+ const boundary = NativeContextBoundaryProofSchema.parse(boundaryValue)
+ assertBoundaryCoordinates(boundary, controlRef)
+ const sessionIdentity = await readSessionIdentity(endpoint, sessionId, token, timeoutMs)
+ return {
+ session,
+ controlRef,
+ boundary,
+ receipt: {
+ success: true,
+ status: result.metadata?.status,
+ elapsedMs,
+ run: referenceSummary(controlRef),
+ boundary: boundarySummary(boundary),
+ session: sessionIdentity,
+ },
+ }
+}
+
+async function runCancellationCase({
+ environment,
+ endpoint,
+ token,
+ timeoutMs,
+ suffix,
+ cleanupReports = [],
+}) {
+ const sessionId = `${suffix}-session`
+ let session
+ let continuationPromise
+ let admitted
+ let cancellationSent = false
+ let terminalOutcome
+ let cleanup
+ let cleanupCancellation = { attempted: false }
+ try {
+ const first = await firstTurn(
+ environment,
+ sessionId,
+ suffix,
+ DEFAULT_FIRST_PROMPT,
+ endpoint,
+ token,
+ timeoutMs,
+ )
+ session = first.session
+ const continuation = nativeContinuationRequest({
+ operationId: `${suffix}-continue`,
+ run: first.controlRef,
+ expectedBoundary: first.boundary,
+ prompt: DEFAULT_CANCEL_PROMPT,
+ })
+ const admissionStartedAt = performance.now()
+ let resolveAdmission
+ let rejectAdmission
+ const admissionPromise = new Promise((resolve, reject) => {
+ resolveAdmission = resolve
+ rejectAdmission = reject
+ })
+ continuationPromise = session.continueNative?.(continuation.request, {
+ turn: continuation.turn,
+ onAdmission: (controlRef) => {
+ try {
+ const parsed = assertRunCoordinates(controlRef, 'native continuation admission')
+ if (!advancedReference(first.controlRef, parsed)) {
+ rejectAdmission(
+ new Error('native continuation admission did not advance the run identity'),
+ )
+ return
+ }
+ admitted = {
+ controlRef: parsed,
+ elapsedMs: Math.round(performance.now() - admissionStartedAt),
+ }
+ resolveAdmission(admitted)
+ } catch (error) {
+ rejectAdmission(error)
+ }
+ },
+ })
+ assertCondition(
+ continuationPromise !== undefined,
+ 'LIVE_NATIVE_CONTINUATION_UNAVAILABLE',
+ 'the Braid CLI Bridge provider did not expose native continuation',
+ )
+ const admission = await raceWithTimeout(
+ [
+ admissionPromise,
+ continuationPromise.then(
+ () =>
+ fail(
+ 'LIVE_NATIVE_ADMISSION_MISSING',
+ 'native continuation completed without early admission',
+ ),
+ (error) => {
+ throw error
+ },
+ ),
+ ],
+ timeoutMs,
+ 'native continuation admission timed out',
+ )
+ const activeStatus = await readActiveStatus(
+ endpoint,
+ admission.controlRef.runId,
+ token,
+ timeoutMs,
+ )
+ const events = await captureRunEvents(endpoint, admission.controlRef.runId, token)
+ assertCondition(
+ events.ok === true && events.events.length > 0,
+ 'LIVE_NATIVE_EVENTS_UNAVAILABLE',
+ 'the admitted real run did not expose live events',
+ { status: events.status, eventCount: events.events.length, error: events.error },
+ )
+ const observed = observedProviderAndModel(events.events, first.receipt.session.model)
+ assertObservedIdentity(observed, first.receipt.session)
+ const cancellation = exactCancellationRequest({
+ operationId: `${suffix}-cancel`,
+ run: admission.controlRef,
+ reason: 'live native continuation cancellation proof',
+ })
+ const cancelStartedAt = performance.now()
+ const acknowledgement = await session.cancelRun?.(cancellation)
+ cancellationSent = true
+ const cancelElapsedMs = Math.round(performance.now() - cancelStartedAt)
+ const parsedAcknowledgement = AgentRunCancellationAcknowledgementSchema.parse(acknowledgement)
+ assertCondition(
+ agentRunCancellationAcknowledgementMatchesRequest(cancellation, parsedAcknowledgement),
+ 'LIVE_NATIVE_CANCEL_IDENTITY_MISMATCH',
+ 'exact cancellation acknowledgement did not match its request',
+ )
+ assertCondition(
+ parsedAcknowledgement.status === 'accepted' || parsedAcknowledgement.status === 'replayed',
+ 'LIVE_NATIVE_CANCEL_REJECTED',
+ 'exact cancellation was not accepted',
+ { status: parsedAcknowledgement.status, effect: parsedAcknowledgement.effect },
+ )
+ assertCondition(
+ parsedAcknowledgement.effect === 'cancel_requested' ||
+ parsedAcknowledgement.effect === 'cancelled',
+ 'LIVE_NATIVE_CANCEL_UNCERTAIN',
+ 'exact cancellation did not return a known cancellation effect',
+ { effect: parsedAcknowledgement.effect },
+ )
+ const terminalStartedAt = performance.now()
+ terminalOutcome = await continuationPromise
+ const terminalElapsedMs = Math.round(performance.now() - terminalStartedAt)
+ const parsedOutcome = AgentNativeContextContinuationResultSchema.parse(terminalOutcome)
+ assertCondition(
+ parsedOutcome.acknowledgement.status === 'accepted' ||
+ parsedOutcome.acknowledgement.status === 'replayed',
+ 'LIVE_NATIVE_CANCEL_TERMINAL_REJECTED',
+ 'the continuation did not return a durable terminal acknowledgement',
+ { status: parsedOutcome.acknowledgement.status },
+ )
+ assertCondition(
+ parsedOutcome.result.success === false &&
+ parsedOutcome.result.metadata?.status === 'cancelled',
+ 'LIVE_NATIVE_CANCEL_TERMINAL_NOT_CANCELLED',
+ 'the cancelled continuation did not replay a cancelled terminal result',
+ { status: parsedOutcome.result.metadata?.status, success: parsedOutcome.result.success },
+ )
+ assertCondition(
+ agentNativeContextContinuationResultMatchesRequest(continuation.request, parsedOutcome),
+ 'LIVE_NATIVE_RESULT_IDENTITY_MISMATCH',
+ 'the cancelled continuation result did not match its exact request',
+ )
+ const terminalStatusResponse = await requestJson(
+ endpoint,
+ `/v1/runs/${encodeURIComponent(admission.controlRef.runId)}`,
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ )
+ requireResponse(terminalStatusResponse, 200, 'cancelled terminal status')
+ const terminalStatus = statusSummary(terminalStatusResponse.body)
+ assertCondition(
+ terminalStatus?.status === 'cancelled' && terminalStatus.terminal === true,
+ 'LIVE_NATIVE_CANCEL_TERMINAL_NOT_CANCELLED',
+ 'the Bridge terminal run snapshot was not cancelled',
+ { status: terminalStatus },
+ )
+ const body = nativeContinuationBody(continuation)
+ const replayResponse = await requestJson(
+ endpoint,
+ `/v1/sessions/${encodeURIComponent(sessionId)}/continue`,
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ { method: 'POST', body },
+ )
+ requireResponse(replayResponse, 200, 'cancelled continuation replay')
+ const replayOutcome = AgentNativeContextContinuationResultSchema.parse(replayResponse.body)
+ assertCondition(
+ replayOutcome.acknowledgement.status === 'replayed' &&
+ replayOutcome.result.success === false &&
+ replayOutcome.result.metadata?.status === 'cancelled',
+ 'LIVE_NATIVE_CANCEL_REPLAY_INVALID',
+ 'the post-terminal continuation replay was not byte-stable cancelled state',
+ {
+ status: replayOutcome.acknowledgement.status,
+ resultStatus: replayOutcome.result.metadata?.status,
+ },
+ )
+ assertCondition(
+ agentNativeContextContinuationResultMatchesRequest(continuation.request, replayOutcome),
+ 'LIVE_NATIVE_REPLAY_IDENTITY_MISMATCH',
+ 'the cancelled terminal replay did not match its exact request',
+ )
+ const admissionReplayResponses = await Promise.all([
+ requestJson(
+ endpoint,
+ `/v1/sessions/${encodeURIComponent(sessionId)}/continue?return=admission`,
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ { method: 'POST', body, captureWireDigest: true },
+ ),
+ requestJson(
+ endpoint,
+ `/v1/sessions/${encodeURIComponent(sessionId)}/continue?return=admission`,
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ { method: 'POST', body, captureWireDigest: true },
+ ),
+ ])
+ for (const response of admissionReplayResponses)
+ requireResponse(response, 202, 'duplicate admission replay')
+ const admissionReplays = admissionReplayResponses.map((response) =>
+ AgentNativeContextContinuationAdmissionSchema.parse(response.body),
+ )
+ for (const replay of admissionReplays) {
+ assertCondition(
+ agentNativeContextContinuationAdmissionMatchesRequest(continuation.request, replay),
+ 'LIVE_NATIVE_ADMISSION_REPLAY_IDENTITY_MISMATCH',
+ 'duplicate admission did not match the exact continuation request',
+ )
+ }
+ const firstWire = admissionReplayResponses[0].wire
+ const secondWire = admissionReplayResponses[1].wire
+ assertCondition(
+ firstWire?.bytes === secondWire?.bytes && firstWire?.digest === secondWire?.digest,
+ 'LIVE_NATIVE_ADMISSION_REPLAY_NOT_BYTE_IDENTICAL',
+ 'duplicate admission responses were not byte-identical',
+ { firstWire, secondWire },
+ )
+ const terminalAt = admissionStartedAt + admission.elapsedMs + terminalElapsedMs
+ return {
+ sessionId,
+ first: first.receipt,
+ admission: {
+ ...admitted,
+ request: {
+ operationId: continuation.request.operationId,
+ requestDigest: continuation.request.requestDigest,
+ turnDigest: continuation.request.turnDigest,
+ },
+ },
+ active: {
+ status: activeStatus,
+ events: {
+ status: events.status,
+ contentType: events.contentType,
+ count: events.events.length,
+ types: [...new Set(events.events.map((event) => event.type).filter(Boolean))],
+ session: first.receipt.session,
+ backends: observed.backends,
+ providers: observed.providers,
+ models: observed.models,
+ },
+ },
+ cancellation: {
+ request: {
+ operationId: cancellation.operationId,
+ requestDigest: cancellation.requestDigest,
+ },
+ acknowledgement: {
+ status: parsedAcknowledgement.status,
+ effect: parsedAcknowledgement.effect,
+ },
+ elapsedMs: cancelElapsedMs,
+ },
+ terminal: {
+ status: terminalStatus,
+ acknowledgement: parsedOutcome.acknowledgement.status,
+ result: {
+ success: parsedOutcome.result.success,
+ status: parsedOutcome.result.metadata?.status,
+ error: parsedOutcome.result.error,
+ },
+ elapsedMs: terminalElapsedMs,
+ },
+ terminalReplay: {
+ status: replayResponse.status,
+ acknowledgement: replayOutcome.acknowledgement.status,
+ result: {
+ success: replayOutcome.result.success,
+ status: replayOutcome.result.metadata?.status,
+ },
+ },
+ duplicateAdmission: {
+ statuses: admissionReplayResponses.map((response) => response.status),
+ phases: admissionReplays.map((replay) => replay.phase),
+ controlRefs: admissionReplays.map((replay) => referenceSummary(replay.controlRef)),
+ byteIdentical: true,
+ wire: { bytes: firstWire.bytes, digest: firstWire.digest },
+ },
+ assertions: {
+ admissionBeforeTerminal: true,
+ activeStatus: true,
+ activeEvents: true,
+ exactCancel: true,
+ cancelledTerminalReplay: true,
+ duplicateAdmissionByteIdentical: true,
+ timing: {
+ admissionElapsedMs: admitted.elapsedMs,
+ cancelElapsedMs: cancelElapsedMs,
+ terminalElapsedMs: terminalElapsedMs,
+ terminalObservedAfterCancel: terminalAt >= admissionStartedAt,
+ },
+ },
+ }
+ } finally {
+ if (continuationPromise !== undefined && !terminalOutcome && admitted && !cancellationSent) {
+ try {
+ const cleanupRequest = exactCancellationRequest({
+ operationId: `${suffix}-cleanup-cancel`,
+ run: admitted.controlRef,
+ reason: 'live check cleanup',
+ })
+ const acknowledgement = await session?.cancelRun?.(cleanupRequest)
+ cleanupCancellation = {
+ attempted: true,
+ acknowledged: acknowledgement !== undefined,
+ }
+ } catch (error) {
+ cleanupCancellation = {
+ attempted: true,
+ acknowledged: false,
+ error: errorEvidence(error),
+ }
+ }
+ }
+ if (continuationPromise !== undefined && !terminalOutcome) {
+ await observeSettlement(continuationPromise, Math.min(timeoutMs, 10_000), (result) => {
+ terminalOutcome = result
+ })
+ }
+ try {
+ cleanup = await closeSession(endpoint, sessionId, token, timeoutMs)
+ } catch (error) {
+ cleanup = { closed: false, error: errorEvidence(error) }
+ }
+ cleanupReports.push({
+ scope: 'session',
+ sessionId,
+ continuationObserved: terminalOutcome !== undefined,
+ cancellation: cleanupCancellation,
+ ...cleanup,
+ })
+ }
+}
+
+async function runSuccessCase({
+ environment,
+ endpoint,
+ token,
+ timeoutMs,
+ suffix,
+ cleanupReports = [],
+}) {
+ const sessionId = `${suffix}-session`
+ let session
+ let continuationPromise
+ let admitted
+ let terminalOutcome
+ let cleanup
+ let cleanupCancellation = { attempted: false }
+ try {
+ const first = await firstTurn(
+ environment,
+ sessionId,
+ suffix,
+ DEFAULT_FIRST_PROMPT,
+ endpoint,
+ token,
+ timeoutMs,
+ )
+ session = first.session
+ const continuation = nativeContinuationRequest({
+ operationId: `${suffix}-continue`,
+ run: first.controlRef,
+ expectedBoundary: first.boundary,
+ prompt: DEFAULT_SUCCESS_PROMPT,
+ })
+ const admissionStartedAt = performance.now()
+ continuationPromise = session.continueNative?.(continuation.request, {
+ turn: continuation.turn,
+ onAdmission: (controlRef) => {
+ admitted = {
+ controlRef: assertRunCoordinates(controlRef, 'successful continuation admission'),
+ elapsedMs: Math.round(performance.now() - admissionStartedAt),
+ }
+ },
+ })
+ assertCondition(
+ continuationPromise !== undefined,
+ 'LIVE_NATIVE_CONTINUATION_UNAVAILABLE',
+ 'the Braid CLI Bridge provider did not expose native continuation',
+ )
+ terminalOutcome = await continuationPromise
+ const parsedOutcome = AgentNativeContextContinuationResultSchema.parse(terminalOutcome)
+ assertCondition(
+ admitted !== undefined,
+ 'LIVE_NATIVE_ADMISSION_MISSING',
+ 'successful continuation omitted early admission',
+ )
+ assertCondition(
+ advancedReference(first.controlRef, admitted.controlRef),
+ 'LIVE_NATIVE_ADMISSION_IDENTITY_MISMATCH',
+ 'successful continuation did not advance the run identity',
+ )
+ assertCondition(
+ (parsedOutcome.acknowledgement.status === 'accepted' ||
+ parsedOutcome.acknowledgement.status === 'replayed') &&
+ parsedOutcome.result.success === true &&
+ parsedOutcome.result.metadata?.status === 'done',
+ 'LIVE_NATIVE_SUCCESS_CONTINUATION_FAILED',
+ 'the real Pi successful continuation did not complete',
+ {
+ acknowledgement: parsedOutcome.acknowledgement.status,
+ status: parsedOutcome.result.metadata?.status,
+ success: parsedOutcome.result.success,
+ },
+ )
+ assertCondition(
+ agentNativeContextContinuationResultMatchesRequest(continuation.request, parsedOutcome),
+ 'LIVE_NATIVE_RESULT_IDENTITY_MISMATCH',
+ 'the successful continuation result did not match its exact request',
+ )
+ const terminalStatusResponse = await requestJson(
+ endpoint,
+ `/v1/runs/${encodeURIComponent(admitted.controlRef.runId)}`,
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ )
+ requireResponse(terminalStatusResponse, 200, 'successful terminal status')
+ const terminalStatus = statusSummary(terminalStatusResponse.body)
+ assertCondition(
+ terminalStatus?.status === 'done' && terminalStatus.terminal === true,
+ 'LIVE_NATIVE_SUCCESS_TERMINAL_INVALID',
+ 'the successful continuation did not expose a done terminal run',
+ { status: terminalStatus },
+ )
+ return {
+ sessionId,
+ first: first.receipt,
+ admission: {
+ ...admitted,
+ request: {
+ operationId: continuation.request.operationId,
+ requestDigest: continuation.request.requestDigest,
+ turnDigest: continuation.request.turnDigest,
+ },
+ },
+ terminal: {
+ status: terminalStatus,
+ acknowledgement: parsedOutcome.acknowledgement.status,
+ result: {
+ success: parsedOutcome.result.success,
+ status: parsedOutcome.result.metadata?.status,
+ text: parsedOutcome.result.text,
+ },
+ },
+ assertions: {
+ admissionBeforeTerminal: admitted.elapsedMs >= 0,
+ successfulContinuation: true,
+ },
+ }
+ } finally {
+ if (continuationPromise !== undefined && !terminalOutcome && admitted) {
+ try {
+ const acknowledgement = await session?.cancelRun?.(
+ exactCancellationRequest({
+ operationId: `${suffix}-cleanup-cancel`,
+ run: admitted.controlRef,
+ reason: 'live check cleanup',
+ }),
+ )
+ cleanupCancellation = {
+ attempted: true,
+ acknowledged: acknowledgement !== undefined,
+ }
+ } catch (error) {
+ cleanupCancellation = {
+ attempted: true,
+ acknowledged: false,
+ error: errorEvidence(error),
+ }
+ }
+ await observeSettlement(continuationPromise, Math.min(timeoutMs, 10_000), (result) => {
+ terminalOutcome = result
+ })
+ }
+ try {
+ cleanup = await closeSession(endpoint, sessionId, token, timeoutMs)
+ } catch (error) {
+ cleanup = { closed: false, error: errorEvidence(error) }
+ }
+ cleanupReports.push({
+ scope: 'session',
+ sessionId,
+ continuationObserved: terminalOutcome !== undefined,
+ cancellation: cleanupCancellation,
+ ...cleanup,
+ })
+ }
+}
+
+function defaultEndpoint() {
+ return (
+ process.env.BRAID_CLI_BRIDGE_URL ??
+ process.env.CLI_BRIDGE_URL ??
+ `http://127.0.0.1:${process.env.BRIDGE_PORT ?? '3344'}`
+ )
+}
+
+function receiptBase(endpoint, model, timeoutMs) {
+ return {
+ schema: NATIVE_CONTINUATION_RECEIPT_SCHEMA,
+ command: 'pnpm test:live:bridge:continuation',
+ scope: {
+ claims: [
+ 'admission before terminal output',
+ 'active status and event access',
+ 'exact cancellation',
+ 'cancelled terminal replay',
+ 'byte-identical duplicate admission',
+ 'successful native continuation',
+ ],
+ provider: 'real Pi through Tangle Router',
+ },
+ startedAt: new Date().toISOString(),
+ runtime: {
+ node: process.version,
+ platform: process.platform,
+ arch: process.arch,
+ },
+ environment: {
+ endpoint: endpointForEvidence(endpoint),
+ bearerConfigured: bridgeAuthToken() !== undefined,
+ model,
+ runner: RUNNER_NAME,
+ provider: ROUTER_PROVIDER,
+ timeoutMs,
+ },
+ }
+}
+
+/** Run the provider-backed live continuation release check. */
+export async function runNativeContinuationProof({
+ endpoint: rawEndpoint = defaultEndpoint(),
+ token = bridgeAuthToken(),
+ model = NATIVE_CONTINUATION_MODEL,
+ timeoutMs = Number(process.env.BRAID_LIVE_BRIDGE_TIMEOUT_MS ?? defaultTimeoutMs),
+ now = () => new Date().toISOString(),
+} = {}) {
+ const endpoint = safeEndpoint(rawEndpoint)
+ const target = nativeContinuationTarget(model)
+ assertCondition(
+ Number.isSafeInteger(timeoutMs) && timeoutMs > 0,
+ 'LIVE_NATIVE_TIMEOUT_INVALID',
+ 'native continuation timeout must be a positive safe integer',
+ )
+ if (!new URL(endpoint).hostname.match(/^(localhost|127\.0\.0\.1|::1)$/u) && token === undefined)
+ fail(
+ 'BRIDGE_CREDENTIAL_REQUIRED',
+ 'a non-loopback CLI Bridge endpoint requires a bearer credential',
+ {},
+ exitCodes.unavailable,
+ )
+ assertCondition(
+ target !== undefined,
+ 'LIVE_NATIVE_MODEL_INVALID',
+ `native continuation proof requires a ${RUNNER_NAME}/${ROUTER_PROVIDER}/ route`,
+ )
+ const health = await requestJson(
+ endpoint,
+ '/health',
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ )
+ requireResponse(health, 200, 'CLI Bridge health', { unavailable: true })
+ assertCondition(
+ healthBackendsReady(health, [target.runner]),
+ 'LIVE_NATIVE_BACKEND_UNAVAILABLE',
+ 'CLI Bridge did not report a ready Pi backend',
+ { health: statusSummary(health.body) },
+ exitCodes.unavailable,
+ )
+ const capabilityResponse = await requestJson(
+ endpoint,
+ `/v1/capabilities?model=${encodeURIComponent(model)}`,
+ token,
+ Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ )
+ requireResponse(capabilityResponse, 200, 'CLI Bridge capabilities', { unavailable: true })
+ const capabilities = assertNativeCapabilities(capabilityResponse.body)
+ const provider = createCliBridgeProvider({
+ baseUrl: endpoint,
+ ...(token === undefined ? {} : { bearerToken: token }),
+ defaultModel: model,
+ defaultExecution: { kind: 'host', jail: { mode: 'fs-jail' } },
+ headersTimeoutMs: Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ bodyTimeoutMs: Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ cancelWaitMs: Math.min(timeoutMs, DEFAULT_REQUEST_TIMEOUT_MS),
+ })
+ const providerCapabilities = assertNativeCapabilities(await provider.capabilities())
+ let environment
+ const startedAt = now()
+ const cleanupReports = []
+ let proof
+ let failure
+ try {
+ environment = await provider.create({
+ profile: {
+ name: 'Braid live native continuation',
+ harness: target.runner,
+ model: { provider: target.provider, default: target.model },
+ },
+ })
+ const suffix = `braid-live-native-${Date.now()}`
+ const cancellation = await runCancellationCase({
+ environment,
+ endpoint,
+ token,
+ timeoutMs,
+ suffix: `${suffix}-cancel`,
+ cleanupReports,
+ })
+ const success = await runSuccessCase({
+ environment,
+ endpoint,
+ token,
+ timeoutMs,
+ suffix: `${suffix}-success`,
+ cleanupReports,
+ })
+ assertCondition(
+ cleanupReports.every((report) => report.scope !== 'session' || report.closed === true),
+ 'LIVE_NATIVE_CLEANUP_FAILED',
+ 'the live continuation check did not confirm every retained session was closed',
+ { cleanup: cleanupReports },
+ )
+ proof = {
+ schema: NATIVE_CONTINUATION_RECEIPT_SCHEMA,
+ startedAt,
+ capabilities: capabilitySummary(providerCapabilities),
+ bridgeCapabilities: capabilitySummary(capabilities),
+ provider: {
+ name: provider.name,
+ environmentId: environment.id,
+ route: model,
+ real: true,
+ },
+ cleanup: cleanupReports,
+ cancellation,
+ success,
+ assertions: {
+ admissionBeforeTerminal: cancellation.assertions.admissionBeforeTerminal,
+ activeStatus: cancellation.assertions.activeStatus,
+ activeEvents: cancellation.assertions.activeEvents,
+ exactCancel: cancellation.assertions.exactCancel,
+ cancelledTerminalReplay: cancellation.assertions.cancelledTerminalReplay,
+ duplicateAdmissionByteIdentical: cancellation.assertions.duplicateAdmissionByteIdentical,
+ successfulContinuation: success.assertions.successfulContinuation,
+ },
+ }
+ } catch (error) {
+ failure = error
+ } finally {
+ if (environment !== undefined) {
+ try {
+ await environment.destroy?.()
+ cleanupReports.push({
+ scope: 'environment',
+ environmentId: environment.id,
+ destroyed: true,
+ })
+ } catch (error) {
+ cleanupReports.push({
+ scope: 'environment',
+ environmentId: environment.id,
+ destroyed: false,
+ error: errorEvidence(error),
+ })
+ }
+ }
+ }
+ if (failure !== undefined) {
+ if (failure instanceof LiveBridgeError) {
+ failure.details = { ...failure.details, cleanup: cleanupReports }
+ throw failure
+ }
+ throw new LiveBridgeError(
+ 'LIVE_NATIVE_CONTINUATION_FAILED',
+ failure instanceof Error ? failure.message : String(failure),
+ exitCodes.failed,
+ { cause: errorEvidence(failure), cleanup: cleanupReports },
+ )
+ }
+ assertCondition(
+ cleanupReports.every((report) => report.scope !== 'environment' || report.destroyed === true),
+ 'LIVE_NATIVE_CLEANUP_FAILED',
+ 'the live continuation check did not confirm provider environment cleanup',
+ { cleanup: cleanupReports },
+ )
+ return proof
+}
+
+/** Write a redacted native continuation receipt to the release artifact path. */
+export async function writeNativeContinuationReceipt(receipt, destination) {
+ const output =
+ destination ??
+ process.env.BRAID_LIVE_BRIDGE_CONTINUATION_EVIDENCE ??
+ NATIVE_CONTINUATION_EVIDENCE_PATH
+ return writeEvidence(receipt, output)
+}
+
+/** Execute the live check and always persist a sanitized receipt. */
+export async function executeNativeContinuationReleaseCheck(options = {}) {
+ const endpoint = safeEndpoint(options.endpoint ?? defaultEndpoint())
+ const model =
+ options.model ?? process.env.BRAID_LIVE_BRIDGE_CONTINUATION_MODEL ?? NATIVE_CONTINUATION_MODEL
+ const timeoutMs =
+ options.timeoutMs ?? Number(process.env.BRAID_LIVE_BRIDGE_TIMEOUT_MS ?? defaultTimeoutMs)
+ const base = receiptBase(endpoint, model, timeoutMs)
+ let proof
+ let failure
+ try {
+ proof = await runNativeContinuationProof({ ...options, endpoint, model, timeoutMs })
+ } catch (error) {
+ failure = error
+ }
+ const receipt = evidenceValue({
+ ...base,
+ ...(proof ?? {}),
+ status:
+ failure === undefined
+ ? 'passed'
+ : failure instanceof LiveBridgeError && failure.exitCode === exitCodes.unavailable
+ ? 'unavailable'
+ : 'failed',
+ ...(failure === undefined ? {} : { error: errorEvidence(failure) }),
+ finishedAt: new Date().toISOString(),
+ })
+ const evidencePath = await writeNativeContinuationReceipt(receipt, options.evidencePath)
+ if (failure !== undefined) {
+ if (failure instanceof LiveBridgeError) {
+ failure.details = { ...failure.details, evidencePath }
+ throw failure
+ }
+ throw new LiveBridgeError(
+ 'LIVE_NATIVE_CONTINUATION_FAILED',
+ failure instanceof Error ? failure.message : String(failure),
+ exitCodes.failed,
+ { evidencePath },
+ )
+ }
+ return { receipt, evidencePath }
+}
+
+function isMainModule() {
+ return process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]
+}
+
+if (isMainModule()) {
+ try {
+ const result = await executeNativeContinuationReleaseCheck()
+ process.stdout.write(
+ `${JSON.stringify({
+ status: result.receipt.status,
+ evidence: result.evidencePath,
+ assertions: result.receipt.assertions,
+ })}\n`,
+ )
+ } catch (error) {
+ const details = error instanceof LiveBridgeError ? error.details : {}
+ process.stdout.write(
+ `${JSON.stringify({
+ status:
+ error instanceof LiveBridgeError && error.exitCode === exitCodes.unavailable
+ ? 'unavailable'
+ : 'failed',
+ evidence: details?.evidencePath,
+ error: errorEvidence(error),
+ })}\n`,
+ )
+ process.exitCode = error instanceof LiveBridgeError ? error.exitCode : exitCodes.failed
+ }
+}
diff --git a/scripts/live-bridge/process-tree.mjs b/scripts/live-bridge/process-tree.mjs
index 85d8c37..13584f9 100644
--- a/scripts/live-bridge/process-tree.mjs
+++ b/scripts/live-bridge/process-tree.mjs
@@ -1,15 +1,156 @@
+import { randomUUID } from 'node:crypto'
+import { readdirSync, readFileSync } from 'node:fs'
+
import { releaseWindowsJob, terminateWindowsJob, windowsJobStatus } from './windows-job-host.mjs'
const pollMs = 25
+const procRoot = '/proc'
+const processTreeToken = 'BRAID_PROCESS_TREE_TOKEN'
+const processTreeTrackers = new WeakMap()
+const ownershipObservationTimeoutMs = 1_000
+const defaultTermTimeoutMs = 2_000
+const defaultKillTimeoutMs = 2_000
function childHasExited(child) {
return child.exitCode !== null || child.signalCode !== null
}
+function errorMessage(error) {
+ return error instanceof Error ? error.message : String(error)
+}
+
+function unsupported(reason) {
+ return {
+ supported: false,
+ gone: false,
+ mechanism: 'posix-descendant-tracker',
+ reason,
+ }
+}
+
+function pendingOwnership(reason) {
+ return {
+ ...unsupported(reason),
+ pending: true,
+ mechanism: 'posix-descendant-tracker',
+ ownership: 'pid-start-time-and-descendant-lineage',
+ observed: false,
+ }
+}
+
+function numericPid(value) {
+ return Number.isInteger(value) && value > 0 ? value : undefined
+}
+
+function procFile(pid, name) {
+ return `${procRoot}/${pid}/${name}`
+}
+
+function processStat(pid) {
+ const normalizedPid = numericPid(pid)
+ if (normalizedPid === undefined) return undefined
+ try {
+ const value = readFileSync(procFile(normalizedPid, 'stat'), 'utf8')
+ const closingParenthesis = value.lastIndexOf(') ')
+ if (closingParenthesis < 0) throw new Error('Linux process stat has no command terminator')
+ const fields = value
+ .slice(closingParenthesis + 2)
+ .trim()
+ .split(/\s+/u)
+ const ppid = Number(fields[1])
+ const processGroup = Number(fields[2])
+ const startTime = fields[19]
+ if (
+ !Number.isInteger(ppid) ||
+ ppid < 0 ||
+ !Number.isInteger(processGroup) ||
+ processGroup < 0 ||
+ typeof startTime !== 'string' ||
+ startTime.length === 0
+ ) {
+ throw new Error(`Linux process stat for ${normalizedPid} is incomplete`)
+ }
+ return {
+ pid: normalizedPid,
+ ppid,
+ processGroup,
+ startTime,
+ }
+ } catch (error) {
+ if (error?.code === 'ENOENT' || error?.code === 'ESRCH') return undefined
+ throw error
+ }
+}
+
+function processTable(token, requiredPids) {
+ let names
+ try {
+ names = readdirSync(procRoot)
+ } catch (error) {
+ return { error: `The POSIX process table could not be read: ${errorMessage(error)}` }
+ }
+ const records = new Map()
+ const marked = []
+ for (const name of names) {
+ if (!/^\d+$/u.test(name)) continue
+ const pid = Number(name)
+ let record
+ let marker
+ let markerInspected = false
+ try {
+ record = processStat(pid)
+ } catch {
+ try {
+ marker = readOwnershipMarker(pid, token)
+ markerInspected = true
+ } catch (markerError) {
+ if (markerError?.code !== 'EACCES')
+ return {
+ error: `The POSIX process ownership could not be inspected: ${errorMessage(markerError)}`,
+ }
+ markerInspected = true
+ }
+ if (marker !== true && !requiredPids.has(pid)) continue
+ try {
+ record = processStat(pid)
+ } catch (retryError) {
+ return {
+ error: `The POSIX process table could not be inspected: ${errorMessage(retryError)}`,
+ }
+ }
+ }
+ if (record === undefined) continue
+ records.set(record.pid, record)
+ if (!markerInspected) {
+ try {
+ marker = readOwnershipMarker(record.pid, token)
+ } catch (error) {
+ if (error?.code !== 'EACCES')
+ return {
+ error: `The POSIX process ownership could not be inspected: ${errorMessage(error)}`,
+ }
+ }
+ }
+ if (marker === true) marked.push(record)
+ }
+ return { records, marked }
+}
+
+function processExists(pid) {
+ try {
+ process.kill(pid, 0)
+ return true
+ } catch (error) {
+ if (error?.code === 'ESRCH') return false
+ return undefined
+ }
+}
+
function processGroupPresent(pid) {
- if (!Number.isInteger(pid) || pid <= 0) return undefined
+ const normalizedPid = numericPid(pid)
+ if (normalizedPid === undefined) return undefined
try {
- process.kill(-pid, 0)
+ process.kill(-normalizedPid, 0)
return true
} catch (error) {
if (error?.code === 'ESRCH') return false
@@ -18,54 +159,487 @@ function processGroupPresent(pid) {
}
}
+function readOwnershipMarker(pid, token) {
+ try {
+ const environment = readFileSync(procFile(pid, 'environ'), 'utf8')
+ return environment.split('\0').includes(`${processTreeToken}=${token}`)
+ } catch (error) {
+ if (error?.code === 'ENOENT' || error?.code === 'ESRCH') return undefined
+ throw error
+ }
+}
+
+function descendants(records, roots) {
+ const childrenByParent = new Map()
+ for (const record of records.values()) {
+ const children = childrenByParent.get(record.ppid) ?? []
+ children.push(record)
+ childrenByParent.set(record.ppid, children)
+ }
+ const result = new Map()
+ const pending = [...roots]
+ while (pending.length > 0) {
+ const root = pending.shift()
+ if (root === undefined || result.has(root.pid)) continue
+ result.set(root.pid, root)
+ for (const child of childrenByParent.get(root.pid) ?? []) pending.push(child)
+ }
+ return result
+}
+
+function currentIdentity(pid, expectedStartTime) {
+ const identity = processStat(pid)
+ if (identity === undefined) {
+ const present = processExists(pid)
+ if (present === undefined) return { inaccessible: true }
+ return present ? { inaccessible: true } : { gone: true }
+ }
+ if (expectedStartTime !== undefined && identity.startTime !== expectedStartTime)
+ return { reused: true, identity }
+ return { identity }
+}
+
+function sortDeepestFirst(entries) {
+ return [...entries].sort((left, right) => {
+ if (left.depth !== right.depth) return right.depth - left.depth
+ return right.pid - left.pid
+ })
+}
+
+class PosixProcessTreeTracker {
+ constructor(child, token) {
+ this.child = child
+ this.token = token
+ this.entries = new Map()
+ this.rootPid = numericPid(child.pid)
+ this.rootObserved = false
+ this.rootStartTime = undefined
+ this.ownerGroupId = undefined
+ this.ownershipDeadline = Date.now() + ownershipObservationTimeoutMs
+ this.released = false
+ this.failure = undefined
+ this.observeRoot()
+ this.refresh()
+ this.monitor = setInterval(() => this.refresh(), pollMs)
+ this.monitor.unref()
+ }
+
+ observeRoot() {
+ if (this.rootPid === undefined) {
+ this.failure = 'The POSIX process has no valid owner PID'
+ return
+ }
+ let root
+ let marker
+ try {
+ root = processStat(this.rootPid)
+ marker = readOwnershipMarker(this.rootPid, this.token)
+ } catch (error) {
+ this.failure = `The POSIX process ownership marker could not be read: ${errorMessage(error)}`
+ return
+ }
+ if (root === undefined) {
+ this.failure = 'The POSIX process exited before ownership was observed'
+ return
+ }
+ this.rootStartTime = root.startTime
+ this.ownerGroupId = numericPid(root.processGroup)
+ if (this.ownerGroupId === undefined) {
+ this.failure = `The POSIX process ${this.rootPid} has no valid process group`
+ return
+ }
+ this.entries.set(root.pid, { ...root, depth: 0 })
+ if (marker === true) this.rootObserved = true
+ }
+
+ refresh() {
+ if (this.released || this.failure !== undefined) return
+ if (this.rootPid === undefined) {
+ this.failure = 'The POSIX process has no valid owner PID'
+ return
+ }
+ const requiredPids = new Set([this.rootPid, ...this.entries.keys()])
+ const table = processTable(this.token, requiredPids)
+ if (table.error !== undefined) {
+ this.failure = table.error
+ return
+ }
+ const root = table.records.get(this.rootPid)
+ if (!this.rootObserved) {
+ if (root === undefined) {
+ this.failure = 'The POSIX process exited before ownership was observed'
+ return
+ }
+ let marker
+ try {
+ marker = readOwnershipMarker(this.rootPid, this.token)
+ } catch (error) {
+ this.failure = `The POSIX process ownership marker could not be read: ${errorMessage(error)}`
+ return
+ }
+ if (marker !== true) {
+ if (Date.now() >= this.ownershipDeadline) {
+ this.failure = 'The POSIX process did not retain its ownership marker'
+ }
+ return
+ }
+ this.rootObserved = true
+ this.rootStartTime = root.startTime
+ } else if (root !== undefined && root.startTime !== this.rootStartTime) {
+ this.failure = 'The POSIX owner PID was reused before cleanup completed'
+ return
+ }
+
+ const roots = [...table.marked]
+ if (root !== undefined && root.startTime === this.rootStartTime) roots.push(root)
+ for (const entry of this.entries.values()) {
+ const record = table.records.get(entry.pid)
+ if (record !== undefined && record.startTime === entry.startTime) roots.push(record)
+ }
+ const discovered = descendants(table.records, roots)
+ for (const record of discovered.values()) {
+ const existing = this.entries.get(record.pid)
+ if (existing !== undefined && existing.startTime !== record.startTime) {
+ this.failure = `The POSIX process identity for ${record.pid} changed during tracking`
+ return
+ }
+ if (existing === undefined) {
+ this.entries.set(record.pid, {
+ ...record,
+ depth: this.depthFor(record, discovered),
+ })
+ } else {
+ existing.ppid = record.ppid
+ existing.processGroup = record.processGroup
+ existing.depth = this.depthFor(record, discovered)
+ }
+ }
+ }
+
+ depthFor(record, discovered) {
+ let depth = 0
+ let parent = record.ppid
+ const seen = new Set([record.pid])
+ while (parent !== 0 && !seen.has(parent)) {
+ const parentRecord = discovered.get(parent)
+ if (parentRecord === undefined) break
+ seen.add(parent)
+ depth += 1
+ parent = parentRecord.ppid
+ }
+ return depth
+ }
+
+ status() {
+ this.refresh()
+ if (this.failure !== undefined) return unsupported(this.failure)
+ if (!this.rootObserved) {
+ return pendingOwnership('The POSIX process ownership marker is not observable yet')
+ }
+ const active = []
+ for (const entry of this.entries.values()) {
+ const current = currentIdentity(entry.pid, entry.startTime)
+ if (current.inaccessible)
+ return unsupported(`The POSIX process ${entry.pid} could not be inspected`)
+ if (current.reused || current.gone) this.entries.delete(entry.pid)
+ else if (current.identity !== undefined) active.push({ ...entry, ...current.identity })
+ }
+ const root = currentIdentity(this.rootPid, this.rootStartTime)
+ if (root.inaccessible)
+ return unsupported(`The POSIX owner process ${this.rootPid} could not be inspected`)
+ const rootActive = root.identity !== undefined
+ if (root.reused) this.failure = 'The POSIX owner PID was reused before cleanup completed'
+ if (this.failure !== undefined) return unsupported(this.failure)
+ const processGroup = processGroupPresent(this.ownerGroupId)
+ if (processGroup === undefined)
+ return unsupported(`The POSIX process group for ${this.ownerGroupId} could not be inspected`)
+ const processGroupMember = active.some(
+ ({ processGroup: groupId }) => groupId === this.ownerGroupId,
+ )
+ if (processGroup && !processGroupMember)
+ return unsupported(
+ `The POSIX process group ${this.ownerGroupId} is present without an observed tracked member`,
+ )
+ const processGroupOwned = processGroup && processGroupMember
+ // The detached owner group catches descendants that exit before lineage polling observes them.
+ return {
+ supported: true,
+ gone: !rootActive && active.length === 0 && !processGroup,
+ present: rootActive || active.length > 0 || processGroup,
+ pids: active.map(({ pid }) => pid),
+ roots: rootActive ? [this.rootPid] : [],
+ version: rootActive || active.length > 0 || processGroup ? 0 : 1,
+ mechanism: 'posix-descendant-tracker',
+ ownership: 'pid-start-time-descendant-lineage-and-process-group-member',
+ observed: this.rootObserved,
+ escaped: !rootActive && active.some(({ ppid }) => ppid !== this.rootPid),
+ processGroup,
+ processGroupId: this.ownerGroupId,
+ processGroupOwned,
+ }
+ }
+
+ signal(signal) {
+ const status = this.status()
+ if (!status.supported) return { method: 'unavailable', sent: false, reason: status.reason }
+ if (status.gone) return { method: 'already-exited', sent: false }
+ let sent = false
+ let groupSent = false
+ const group = status.processGroupOwned === true ? this.ownerGroupId : undefined
+ if (group !== undefined) {
+ try {
+ process.kill(-group, signal)
+ groupSent = true
+ sent = true
+ } catch (error) {
+ if (error?.code !== 'ESRCH' && error?.code !== 'EPERM')
+ return { method: 'failed', sent, error: errorMessage(error) }
+ }
+ }
+ for (const entry of sortDeepestFirst(this.entries.values())) {
+ const current = currentIdentity(entry.pid, entry.startTime)
+ if (current.identity === undefined) continue
+ try {
+ process.kill(entry.pid, signal)
+ sent = true
+ } catch (error) {
+ if (error?.code !== 'ESRCH') return { method: 'failed', sent, error: errorMessage(error) }
+ }
+ }
+ return {
+ method: groupSent ? 'process-group' : sent ? 'owned-processes' : 'already-exited',
+ sent,
+ }
+ }
+
+ release() {
+ this.released = true
+ clearInterval(this.monitor)
+ }
+}
+
+class PosixProcessGroupTracker {
+ constructor(child) {
+ this.child = child
+ this.rootPid = numericPid(child.pid)
+ // A detached group remains owned after its leader exits until the kernel removes the group.
+ this.groupState = 'unobserved'
+ this.groupObserved = false
+ if (this.rootPid !== undefined && !childHasExited(this.child)) {
+ const present = processGroupPresent(this.rootPid)
+ if (present === true) {
+ this.groupState = 'present'
+ this.groupObserved = true
+ }
+ }
+ }
+
+ statusForGroupState() {
+ const present = this.groupState === 'present'
+ const ownerActive = !childHasExited(this.child)
+ return {
+ supported: true,
+ gone: !present,
+ present,
+ pids: [],
+ roots: present && ownerActive ? [this.rootPid] : [],
+ version: present ? 0 : 1,
+ mechanism: 'posix-process-group',
+ ownership: 'kernel-process-group',
+ observed: this.groupObserved,
+ escaped: false,
+ }
+ }
+
+ status() {
+ if (this.rootPid === undefined)
+ return {
+ ...unsupported('The POSIX process has no valid owner PID'),
+ mechanism: 'posix-process-group',
+ }
+ if (this.groupState === 'gone') return this.statusForGroupState()
+ const present = processGroupPresent(this.rootPid)
+ if (present === undefined)
+ return {
+ ...unsupported('The POSIX process group could not be inspected'),
+ mechanism: 'posix-process-group',
+ }
+ if (this.groupState === 'unobserved') {
+ if (present) {
+ if (childHasExited(this.child))
+ return {
+ ...unsupported(
+ `The POSIX process group for ${this.rootPid} remained before its owner was observed`,
+ ),
+ mechanism: 'posix-process-group',
+ }
+ this.groupState = 'present'
+ this.groupObserved = true
+ } else if (childHasExited(this.child)) {
+ this.groupState = 'gone'
+ return this.statusForGroupState()
+ } else {
+ return {
+ ...unsupported('The POSIX process group was not observed while its owner was active'),
+ pending: true,
+ mechanism: 'posix-process-group',
+ ownership: 'kernel-process-group',
+ observed: false,
+ }
+ }
+ } else if (!present) {
+ this.groupState = 'gone'
+ }
+ return this.statusForGroupState()
+ }
+
+ signal(signal) {
+ const status = this.status()
+ if (!status.supported) return { method: 'unavailable', sent: false, reason: status.reason }
+ if (status.gone) return { method: 'already-exited', sent: false }
+ try {
+ process.kill(-this.rootPid, signal)
+ return { method: 'process-group', sent: true }
+ } catch (error) {
+ if (error?.code === 'ESRCH') {
+ this.groupState = 'gone'
+ return { method: 'already-exited', sent: false }
+ }
+ return { method: 'failed', sent: false, error: errorMessage(error) }
+ }
+ }
+
+ release() {}
+}
+
+export function processTreeEnvironment(environment = process.env) {
+ if (process.platform !== 'linux') return { environment, token: undefined }
+ const token = randomUUID()
+ return {
+ environment: { ...environment, [processTreeToken]: token },
+ token,
+ }
+}
+
+export function trackProcessTree(child, token) {
+ if (process.platform === 'win32') return undefined
+ if (child === null || typeof child !== 'object')
+ throw new TypeError('A child process is required')
+ const tracker =
+ process.platform === 'linux'
+ ? token === undefined
+ ? undefined
+ : new PosixProcessTreeTracker(child, token)
+ : new PosixProcessGroupTracker(child)
+ if (tracker === undefined) return undefined
+ processTreeTrackers.set(child, tracker)
+ return tracker
+}
+
export function releaseProcessTree(child) {
+ const tracker = processTreeTrackers.get(child)
+ if (tracker?.status().gone) tracker.release()
if (process.platform === 'win32') releaseWindowsJob(child)
}
export function processTreeStatus(child) {
if (process.platform === 'win32') return windowsJobStatus(child, childHasExited(child))
- const present = processGroupPresent(child.pid)
- if (present === undefined)
- return {
- supported: false,
- gone: false,
- reason: 'The POSIX process group could not be inspected',
- }
- return { supported: true, gone: !present, present }
+ const tracker = processTreeTrackers.get(child)
+ if (tracker === undefined)
+ return unsupported('The POSIX process was not started by a lifecycle tracker')
+ return tracker.status()
}
export async function waitForTreeGone(child, timeoutMs) {
- const deadline = Date.now() + timeoutMs
+ const boundedTimeout = Number.isFinite(timeoutMs) ? Math.max(0, timeoutMs) : 0
+ const deadline = Date.now() + boundedTimeout
while (true) {
const status = processTreeStatus(child)
- if (!status.supported) return status
+ if (!status.supported && status.pending !== true) return status
if (status.gone) return status
if (Date.now() >= deadline) return status
await new Promise((resolve) => setTimeout(resolve, Math.min(pollMs, deadline - Date.now())))
}
}
+async function waitForTreeOwnership(child, timeoutMs) {
+ const boundedTimeout = Number.isFinite(timeoutMs) ? Math.max(0, timeoutMs) : 0
+ const deadline = Date.now() + boundedTimeout
+ while (true) {
+ const status = processTreeStatus(child)
+ if (status.pending !== true || Date.now() >= deadline) return status
+ await new Promise((resolve) => setTimeout(resolve, Math.min(pollMs, deadline - Date.now())))
+ }
+}
+
export async function sendTreeSignal(child, signal) {
if (process.platform === 'win32') return await terminateWindowsJob(child)
- if (!Number.isInteger(child.pid) || child.pid <= 0) return { method: 'unavailable', sent: false }
- try {
- process.kill(-child.pid, signal)
- return { method: 'process-group', sent: true }
- } catch (error) {
- if (error?.code === 'ESRCH')
- return {
- method: childHasExited(child) ? 'already-exited' : 'process-group-gone',
- sent: false,
- }
- try {
- child.kill(signal)
- return { method: 'child-fallback', sent: true }
- } catch (fallbackError) {
- return {
- method: 'failed',
- sent: false,
- error: fallbackError instanceof Error ? fallbackError.message : String(fallbackError),
- }
+ const tracker = processTreeTrackers.get(child)
+ if (tracker === undefined)
+ return {
+ method: 'unavailable',
+ sent: false,
+ reason: 'The POSIX process was not started by a lifecycle tracker',
}
+ return tracker.signal(signal)
+}
+
+export async function terminateTrackedProcessTree(
+ child,
+ { termTimeoutMs = defaultTermTimeoutMs, killTimeoutMs = defaultKillTimeoutMs } = {},
+) {
+ const initialTree = await waitForTreeOwnership(child, termTimeoutMs)
+ let tree = initialTree
+ let termSignal
+ let killSignal
+ const usesWindowsJob = tree.mechanism === 'windows-job-object'
+
+ if (usesWindowsJob && !tree.gone) {
+ killSignal = await sendTreeSignal(child, 'SIGKILL')
+ tree = await waitForTreeGone(child, killTimeoutMs)
+ }
+ if (!usesWindowsJob && (!tree.supported || !tree.gone)) {
+ termSignal = await sendTreeSignal(child, 'SIGTERM')
+ tree = await waitForTreeGone(child, termTimeoutMs)
+ }
+ if (!usesWindowsJob && (!tree.supported || !tree.gone)) {
+ killSignal = await sendTreeSignal(child, 'SIGKILL')
+ tree = await waitForTreeGone(child, killTimeoutMs)
+ }
+
+ const termSent = termSignal?.sent === true
+ const killSent = killSignal?.sent === true
+ const cleanupStatus = !tree.supported
+ ? 'unsupported'
+ : tree.gone && !termSent && !killSent
+ ? 'already-exited'
+ : tree.gone && !killSent
+ ? 'term'
+ : tree.gone
+ ? 'kill'
+ : 'descendants-still-running'
+ const strategy = killSent
+ ? killSignal.method
+ : termSent
+ ? termSignal.method
+ : (killSignal?.method ??
+ termSignal?.method ??
+ (initialTree.supported ? 'already-exited' : 'unsupported'))
+
+ releaseProcessTree(child)
+ return {
+ strategy,
+ termTimeoutMs,
+ killTimeoutMs,
+ termSent,
+ killSent,
+ forcedKill: killSent,
+ initialTree,
+ tree,
+ descendantsExited: tree.supported && tree.gone,
+ descendantsVerified: tree.supported && tree.gone,
+ cleanupStatus,
+ termSignal,
+ killSignal,
}
}
diff --git a/scripts/live-bridge/process.mjs b/scripts/live-bridge/process.mjs
index 5336b8d..ce26c7f 100644
--- a/scripts/live-bridge/process.mjs
+++ b/scripts/live-bridge/process.mjs
@@ -5,9 +5,11 @@ import { StreamingRedactor } from './capture.mjs'
import { exitCodes } from './constants.mjs'
import { LiveBridgeError } from './errors.mjs'
import {
+ processTreeEnvironment,
processTreeStatus,
releaseProcessTree,
sendTreeSignal,
+ trackProcessTree,
waitForTreeGone,
} from './process-tree.mjs'
import { secretValues } from './redaction.mjs'
@@ -24,8 +26,14 @@ export function sleep(ms) {
}
export async function managedSpawn(command, args, options) {
- if (process.platform === 'win32') return await spawnWindowsJob(command, args, options)
- return spawn(command, args, { ...options, detached: true })
+ const prepared = processTreeEnvironment(options.env)
+ const spawnOptions = { ...options, env: prepared.environment }
+ const child =
+ process.platform === 'win32'
+ ? await spawnWindowsJob(command, args, spawnOptions)
+ : spawn(command, args, { ...spawnOptions, detached: true })
+ trackProcessTree(child, prepared.token)
+ return child
}
function hasExited(child) {
@@ -269,6 +277,24 @@ export class RpcSession {
})
}
+ async waitForExit(label, timeoutMs = this.timeoutMs) {
+ let timer
+ const timeout = new Promise((_, rejectExit) => {
+ timer = setTimeout(() => {
+ rejectExit(
+ new LiveBridgeError('RPC_TIMEOUT', `timed out waiting for ${label}`, exitCodes.failed, {
+ timeoutMs,
+ }),
+ )
+ }, timeoutMs)
+ })
+ try {
+ return await Promise.race([this.exit, timeout])
+ } finally {
+ clearTimeout(timer)
+ }
+ }
+
async close() {
if (this.closePromise !== undefined) return this.closePromise
this.closePromise = (async () => {
diff --git a/scripts/live-bridge/process.test.mjs b/scripts/live-bridge/process.test.mjs
index 3def518..88ee81a 100644
--- a/scripts/live-bridge/process.test.mjs
+++ b/scripts/live-bridge/process.test.mjs
@@ -1,12 +1,39 @@
import assert from 'node:assert/strict'
-import test from 'node:test'
-import { managedSpawn, terminateProcess } from './process.mjs'
+import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'
+import { tmpdir } from 'node:os'
+import { join } from 'node:path'
+import test, { mock } from 'node:test'
+import * as pty from 'node-pty'
+import { runCommand } from './command.mjs'
+import { managedSpawn, RpcSession, terminateProcess } from './process.mjs'
+import {
+ processTreeEnvironment,
+ processTreeStatus,
+ releaseProcessTree,
+ sendTreeSignal,
+ terminateTrackedProcessTree,
+ trackProcessTree,
+ waitForTreeGone,
+} from './process-tree.mjs'
function waitForClose(child) {
if (child.exitCode !== null || child.signalCode !== null) return Promise.resolve()
return new Promise((resolve) => child.once('close', resolve))
}
+async function waitForFile(path, timeoutMs = 2_000) {
+ const deadline = Date.now() + timeoutMs
+ while (Date.now() < deadline) {
+ try {
+ return await readFile(path, 'utf8')
+ } catch (error) {
+ if (error?.code !== 'ENOENT') throw error
+ await new Promise((resolve) => setTimeout(resolve, 10))
+ }
+ }
+ throw new Error(`Timed out waiting for ${path}`)
+}
+
test('termination evidence marks a naturally exited process as unsignalled', async () => {
const child = await managedSpawn(process.execPath, ['-e', 'process.exit(0)'], {
stdio: 'ignore',
@@ -37,3 +64,302 @@ test('termination evidence records signal-driven process-tree cleanup', async ()
assert.equal(result.descendantsVerified, true)
assert.notEqual(result.cleanupStatus, 'already-exited')
})
+
+test('tracked process-tree termination verifies absence without a child close event', async () => {
+ const child = await managedSpawn(process.execPath, ['-e', 'setInterval(() => {}, 1000)'], {
+ stdio: 'ignore',
+ })
+
+ const result = await terminateTrackedProcessTree(child, {
+ termTimeoutMs: 1_000,
+ killTimeoutMs: 1_000,
+ })
+
+ assert.equal(result.termSent || result.killSent, true)
+ assert.equal(result.descendantsExited, true, JSON.stringify(result))
+ assert.equal(result.descendantsVerified, true, JSON.stringify(result))
+ assert.equal(result.tree.gone, true, JSON.stringify(result))
+})
+
+test('tracked PTY termination verifies the exact process group used by live proofs', {
+ skip: process.platform === 'win32',
+}, async () => {
+ const tracked = processTreeEnvironment(process.env)
+ const child = pty.spawn(process.execPath, ['-e', 'setInterval(() => {}, 1000)'], {
+ cwd: process.cwd(),
+ env: tracked.environment,
+ name: 'xterm-256color',
+ cols: 80,
+ rows: 24,
+ })
+ trackProcessTree(child, tracked.token)
+
+ const result = await terminateTrackedProcessTree(child, {
+ termTimeoutMs: 1_000,
+ killTimeoutMs: 1_000,
+ })
+
+ assert.equal(result.termSent || result.killSent, true)
+ assert.equal(result.descendantsExited, true, JSON.stringify(result))
+ assert.equal(result.descendantsVerified, true, JSON.stringify(result))
+ assert.equal(result.tree.gone, true, JSON.stringify(result))
+})
+
+test('timeout cleanup terminates a tracked descendant set', async () => {
+ const result = await runCommand(process.execPath, ['-e', 'setInterval(() => {}, 1000)'], {
+ cwd: process.cwd(),
+ timeoutMs: 50,
+ })
+
+ assert.equal(result.timedOut, true)
+ assert.equal(result.cleanupOk, true, JSON.stringify(result.termination))
+ assert.equal(result.termination.descendantsExited, true)
+ assert.equal(result.termination.descendantsVerified, true)
+})
+
+test('missing POSIX owner identity refuses cleanup', async () => {
+ const child = { pid: undefined }
+ const status = processTreeStatus(child)
+
+ assert.equal(status.supported, false)
+ assert.equal(status.gone, false)
+ assert.match(
+ status.reason,
+ /lifecycle tracker|valid owner PID|Windows Job Object host process id/u,
+ )
+ assert.deepEqual(await waitForTreeGone(child, 0), status)
+ const signal = await sendTreeSignal(child, 'SIGTERM')
+ assert.equal(signal.sent, false)
+ assert.equal(
+ signal.method,
+ process.platform === 'win32' ? 'windows-job-object-unavailable' : 'unavailable',
+ )
+})
+
+test('detached descendants stay owned after their parent exits', {
+ skip: process.platform !== 'linux',
+}, async () => {
+ const root = await mkdtemp(join(tmpdir(), 'braid-process-tree-'))
+ const pidPath = join(root, 'detached.pid')
+ let descendantPid
+ try {
+ const child = await managedSpawn(
+ process.execPath,
+ [
+ '-e',
+ [
+ "import { spawn } from 'node:child_process'",
+ "import { writeFileSync } from 'node:fs'",
+ "const detached = spawn(process.execPath, ['-e', \"process.on('SIGTERM', () => {}); setInterval(() => {}, 1000)\"], { detached: true, stdio: 'ignore' })",
+ 'detached.unref()',
+ 'writeFileSync(process.env.PID_PATH, String(detached.pid))',
+ 'setTimeout(() => process.exit(0), 200)',
+ ].join(';'),
+ ],
+ { cwd: root, env: { PID_PATH: pidPath }, stdio: 'ignore' },
+ )
+ descendantPid = Number(await waitForFile(pidPath))
+ assert.ok(Number.isInteger(descendantPid) && descendantPid > 0)
+ await waitForClose(child)
+
+ const observed = processTreeStatus(child)
+ assert.equal(observed.supported, true, JSON.stringify(observed))
+ assert.equal(observed.gone, false, JSON.stringify(observed))
+ assert.equal(observed.escaped, true, JSON.stringify(observed))
+ const stillRunning = await waitForTreeGone(child, 100)
+ assert.equal(stillRunning.supported, true)
+ assert.equal(stillRunning.gone, false)
+
+ const termination = await terminateProcess(child, { termTimeoutMs: 100, killTimeoutMs: 1_000 })
+ assert.equal(termination.descendantsExited, true, JSON.stringify(termination))
+ assert.equal(termination.descendantsVerified, true, JSON.stringify(termination))
+ assert.equal(await waitForTreeGone(child, 1_000).then((status) => status.gone), true)
+ } finally {
+ if (descendantPid !== undefined) {
+ try {
+ process.kill(descendantPid, 'SIGKILL')
+ } catch {}
+ }
+ await rm(root, { recursive: true, force: true })
+ }
+})
+
+test('RPC stop cleanup proves terminal state and kills an unmarked process-group descendant', {
+ skip: process.platform !== 'linux',
+}, async () => {
+ const root = await mkdtemp(join(tmpdir(), 'braid-rpc-stop-cleanup-'))
+ const binary = join(root, 'rpc-child.mjs')
+ const pidPath = join(root, 'descendant.pid')
+ const source = `import { spawn } from 'node:child_process'
+import { writeFileSync } from 'node:fs'
+
+let buffer = ''
+const run = { id: 'run-stop-proof', status: 'streaming' }
+const emit = (value) => process.stdout.write(\`\${JSON.stringify(value)}\\n\`)
+const state = () => emit({ type: 'state', state: { runs: [{ ...run }] } })
+const respond = (request) => {
+ if (request.command === 'initialize') {
+ emit({ type: 'ack', requestId: request.requestId, command: request.command })
+ state()
+ } else if (request.command === 'cancel_run') {
+ run.status = 'cancelled'
+ emit({ type: 'ack', requestId: request.requestId, command: request.command })
+ state()
+ } else if (request.command === 'shutdown') {
+ emit({ type: 'ack', requestId: request.requestId, command: request.command })
+ }
+}
+process.stdin.setEncoding('utf8')
+process.stdin.on('data', (chunk) => {
+ buffer += chunk
+ for (;;) {
+ const newline = buffer.indexOf('\\n')
+ if (newline < 0) break
+ const line = buffer.slice(0, newline)
+ buffer = buffer.slice(newline + 1)
+ if (line.length > 0) respond(JSON.parse(line))
+ }
+})
+process.stdin.on('end', () => {
+ const descendant = spawn(process.execPath, ['-e', 'setInterval(() => {}, 1000)'], {
+ stdio: 'inherit',
+ env: Object.fromEntries(Object.entries(process.env).filter(([name]) => name !== 'BRAID_PROCESS_TREE_TOKEN')),
+ })
+ descendant.unref()
+ writeFileSync(process.env.PID_PATH, String(descendant.pid))
+ setTimeout(() => process.exit(0), 200)
+})
+`
+ await writeFile(binary, source, { mode: 0o700 })
+
+ let session
+ try {
+ session = await RpcSession.create(binary, root, { PID_PATH: pidPath }, 4_000)
+ session.send({ requestId: 'request-initialize', command: 'initialize' })
+ await session.waitFor(
+ 'running terminal state',
+ (candidate) =>
+ candidate.type === 'state' && candidate.state?.runs?.[0]?.status === 'streaming',
+ )
+
+ session.send({
+ requestId: 'request-cancel',
+ operationId: 'op-live-required-cancel-stop-proof',
+ command: 'cancel_run',
+ params: { runId: 'run-stop-proof' },
+ })
+ const stopped = await session.waitFor(
+ 'cancelled terminal state',
+ (candidate) =>
+ candidate.type === 'state' && candidate.state?.runs?.[0]?.status === 'cancelled',
+ )
+ assert.equal(stopped.state.runs[0].id, 'run-stop-proof')
+ const closed = await session.close()
+ assert.equal(closed.natural.cleanupStatus, 'still-running', JSON.stringify(closed))
+ assert.equal(closed.termination.initialTree.processGroup, true, JSON.stringify(closed))
+ assert.equal(closed.termination.termSignal?.method, 'process-group', JSON.stringify(closed))
+ assert.equal(closed.termination.exited, true, JSON.stringify(closed))
+ assert.equal(closed.termination.descendantsVerified, true, JSON.stringify(closed))
+ assert.equal(closed.termination.tree.gone, true, JSON.stringify(closed))
+ assert.equal(closed.exit.timeout, undefined, JSON.stringify(closed))
+ assert.equal(closed.exit.code, 0, JSON.stringify(closed))
+ } finally {
+ try {
+ const pid = Number(await readFile(pidPath, 'utf8'))
+ if (Number.isInteger(pid) && pid > 0) process.kill(pid, 'SIGKILL')
+ } catch {}
+ await session?.forceStop().catch(() => undefined)
+ await rm(root, { recursive: true, force: true })
+ }
+})
+
+test('refuses to signal a reused process group without an observed owner', {
+ skip: process.platform !== 'linux',
+}, async () => {
+ const child = await managedSpawn(process.execPath, ['-e', 'process.exit(0)'], {
+ stdio: 'ignore',
+ })
+ await waitForClose(child)
+
+ const groupSignals = []
+ const originalKill = process.kill
+ const killMock = mock.method(process, 'kill', (pid, signal) => {
+ if (pid === -child.pid) {
+ if (signal !== 0) groupSignals.push({ pid, signal })
+ if (signal === 0) return true
+ const error = new Error('group signal must not be attempted')
+ error.code = 'EPERM'
+ throw error
+ }
+ return originalKill.call(process, pid, signal)
+ })
+ try {
+ const result = await terminateTrackedProcessTree(child, {
+ termTimeoutMs: 100,
+ killTimeoutMs: 100,
+ })
+
+ assert.equal(result.termSent, false, JSON.stringify(result))
+ assert.equal(result.killSent, false, JSON.stringify(result))
+ assert.equal(result.tree.supported, false, JSON.stringify(result))
+ assert.match(result.tree.reason, /without an observed tracked member/u)
+ assert.deepEqual(groupSignals, [])
+ } finally {
+ killMock.mock.restore()
+ }
+})
+
+test('retains detached POSIX group ownership after leader exit and latches absence', async () => {
+ const originalPlatform = process.platform
+ const originalKill = process.kill
+ const child = { pid: 42_424, exitCode: null, signalCode: null }
+ let groupPresent = true
+ const groupCalls = []
+
+ Object.defineProperty(process, 'platform', { value: 'darwin' })
+ const killMock = mock.method(process, 'kill', (pid, signal) => {
+ if (pid !== -child.pid) return originalKill.call(process, pid, signal)
+ groupCalls.push({ pid, signal })
+ if (groupPresent) return true
+ const error = new Error('process group is absent')
+ error.code = 'ESRCH'
+ throw error
+ })
+ try {
+ trackProcessTree(child)
+ assert.deepEqual(groupCalls, [{ pid: -child.pid, signal: 0 }])
+
+ child.exitCode = 0
+ const leaderExited = processTreeStatus(child)
+ assert.equal(leaderExited.supported, true, JSON.stringify(leaderExited))
+ assert.equal(leaderExited.gone, false, JSON.stringify(leaderExited))
+ assert.deepEqual(leaderExited.roots, [])
+
+ const signal = await sendTreeSignal(child, 'SIGKILL')
+ assert.deepEqual(signal, { method: 'process-group', sent: true })
+
+ groupPresent = false
+ const gone = processTreeStatus(child)
+ assert.equal(gone.supported, true, JSON.stringify(gone))
+ assert.equal(gone.gone, true, JSON.stringify(gone))
+ const callsAtAbsence = groupCalls.length
+
+ groupPresent = true
+ const reused = processTreeStatus(child)
+ assert.equal(reused.supported, true, JSON.stringify(reused))
+ assert.equal(reused.gone, true, JSON.stringify(reused))
+ assert.deepEqual(await sendTreeSignal(child, 'SIGKILL'), {
+ method: 'already-exited',
+ sent: false,
+ })
+ assert.equal(groupCalls.length, callsAtAbsence)
+ assert.deepEqual(
+ groupCalls.filter(({ signal: value }) => value !== 0),
+ [{ pid: -child.pid, signal: 'SIGKILL' }],
+ )
+ } finally {
+ releaseProcessTree(child)
+ killMock.mock.restore()
+ Object.defineProperty(process, 'platform', { value: originalPlatform })
+ }
+})
diff --git a/scripts/live-bridge/protocol.mjs b/scripts/live-bridge/protocol.mjs
index 9ac93a3..a8615db 100644
--- a/scripts/live-bridge/protocol.mjs
+++ b/scripts/live-bridge/protocol.mjs
@@ -32,6 +32,24 @@ export function runFromState(state, runId) {
return state?.runs?.find((run) => run.id === runId)
}
+export function runWithAdmissionReceipt(run, admission) {
+ if (run === undefined || admission?.runId !== run.id) return run
+ return { ...run, receipt: structuredClone(admission) }
+}
+
+export function eventPayload(response) {
+ if (response?.type !== 'event') return undefined
+ const payload = response.event?.payload
+ return payload !== null && typeof payload === 'object' && !Array.isArray(payload)
+ ? payload
+ : undefined
+}
+
+export function runEventPayload(response, runId) {
+ const payload = eventPayload(response)
+ return payload?.runId === runId ? payload : undefined
+}
+
export function terminalMessage(state, runId) {
return (
state?.messages?.findLast?.(
@@ -60,13 +78,14 @@ export function interactionFromResponse(response, runId) {
}
}
if (response?.type === 'event' && response.event?.kind === 'run.interaction') {
- if (response.event.runId !== runId) return undefined
- const interactionId = response.event.interactionId ?? response.event.request?.id
+ const payload = runEventPayload(response, runId)
+ const request = payload?.interaction
+ const interactionId = request?.id
if (typeof interactionId !== 'string' || interactionId.length === 0) return undefined
return {
runId,
interactionId,
- request: response.event.request ?? response.event,
+ request,
}
}
return undefined
@@ -99,6 +118,16 @@ export function capabilityAvailability(providerValue, effectiveValue) {
}
}
+export function retainedCancellationAdvertised(capabilities) {
+ const retained = capabilities?.retainedControl
+ return (
+ retained?.exactRunIdentity === true &&
+ retained.resultIdentity === true &&
+ retained.eventIdentity === true &&
+ retained.cancellationIdempotency === true
+ )
+}
+
export function assertSemanticOutcome(name, status, advertised, details = {}) {
const expected = advertised ? 'verified' : 'reported-unavailable'
if (status === expected) return
diff --git a/scripts/live-bridge/provider-session-cleanup.mjs b/scripts/live-bridge/provider-session-cleanup.mjs
new file mode 100644
index 0000000..b08641b
--- /dev/null
+++ b/scripts/live-bridge/provider-session-cleanup.mjs
@@ -0,0 +1,92 @@
+import { exitCodes } from './constants.mjs'
+import { requestJson } from './endpoint.mjs'
+import { LiveBridgeError } from './errors.mjs'
+
+const providerName = 'cli-bridge'
+
+function record(value) {
+ return value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined
+}
+
+function addBinding(sessionIds, value) {
+ const candidate = record(value)
+ if (candidate === undefined) return
+ const controlRef = record(candidate.controlRef)
+ const receipt = record(candidate.receipt)
+ const provider = controlRef?.provider ?? candidate.provider ?? receipt?.provider
+ const sessionId =
+ controlRef?.sessionId ?? candidate.providerSessionId ?? receipt?.providerSessionId
+ if (
+ provider === providerName &&
+ typeof sessionId === 'string' &&
+ sessionId.length > 0 &&
+ sessionId.length <= 1_024
+ ) {
+ sessionIds.add(sessionId)
+ }
+}
+
+export function ownedProviderSessionIds(responses) {
+ const sessionIds = new Set()
+ for (const response of responses ?? []) {
+ addBinding(sessionIds, response?.admission)
+ for (const run of response?.state?.runs ?? []) addBinding(sessionIds, run)
+ addBinding(sessionIds, response?.event?.payload)
+ }
+ return [...sessionIds]
+}
+
+export function providerSessionReleaseResult(sessionId, response) {
+ const closed = response.status === 200 && response.body?.closed === true
+ const alreadyAbsent = response.status === 404
+ return {
+ sessionId,
+ status: response.status ?? null,
+ closed,
+ alreadyAbsent,
+ released: closed || alreadyAbsent,
+ }
+}
+
+export async function closeOwnedProviderSessions({ endpoint, responses, token, timeoutMs }) {
+ const sessionIds = ownedProviderSessionIds(responses)
+ const admitted = (responses ?? []).some(
+ (response) => response?.type === 'ack' && typeof response.runId === 'string',
+ )
+ if (admitted && sessionIds.length === 0) {
+ throw new LiveBridgeError(
+ 'LIVE_PROVIDER_SESSION_BINDING_MISSING',
+ 'An admitted packed run did not expose its exact provider session for cleanup',
+ exitCodes.failed,
+ )
+ }
+
+ const results = []
+ for (const sessionId of sessionIds) {
+ const response = await requestJson(
+ endpoint,
+ `/v1/sessions/${encodeURIComponent(sessionId)}/close`,
+ token,
+ Math.min(timeoutMs, 30_000),
+ { method: 'POST' },
+ )
+ results.push(providerSessionReleaseResult(sessionId, response))
+ }
+ const failed = results.filter((result) => result.released !== true)
+ if (failed.length > 0) {
+ throw new LiveBridgeError(
+ 'LIVE_PROVIDER_SESSION_CLEANUP_FAILED',
+ 'CLI Bridge did not close every provider session owned by the packed proof',
+ exitCodes.failed,
+ { failures: failed },
+ )
+ }
+ return {
+ attempted: results.length,
+ closed: results.filter((result) => result.closed).length,
+ alreadyAbsent: results.filter((result) => result.alreadyAbsent).length,
+ released: results.length,
+ complete: true,
+ results,
+ }
+}
diff --git a/scripts/live-bridge/release-operations.mjs b/scripts/live-bridge/release-operations.mjs
index b47c9bd..df9eedf 100644
--- a/scripts/live-bridge/release-operations.mjs
+++ b/scripts/live-bridge/release-operations.mjs
@@ -1,12 +1,19 @@
+import { writeFile } from 'node:fs/promises'
+import { join } from 'node:path'
+
import { profileForBridgeTarget } from './config.mjs'
-import { exitCodes, livePrompts } from './constants.mjs'
+import { exitCodes, liveMarkers, livePrompts } from './constants.mjs'
import { LiveBridgeError } from './errors.mjs'
import { RpcSession } from './process.mjs'
import {
classifyPackedStartup,
+ eventPayload,
+ exactMarker,
interactionFromResponse,
requestBase,
+ runEventPayload,
runFromState,
+ runWithAdmissionReceipt,
terminalMessage,
} from './protocol.mjs'
import { evidenceValue } from './redaction.mjs'
@@ -87,7 +94,7 @@ export async function executeCrossRunnerHandoff(
const sourceTurn = await runNormalTurn(session, result, sourceTarget, timeoutMs, {
operationPrefix: `${operationPrefix}-source`,
prompt: livePrompts.handoffSource(sourceTarget.key),
- marker: 'LIVE_BRAID_PI_HANDOFF_SOURCE_OK',
+ marker: liveMarkers.handoffSource(sourceTarget.key),
})
const sourceMessage = terminalMessage(sourceTurn.terminal.state, sourceTurn.runId)
if (typeof sourceMessage?.id !== 'string') {
@@ -101,10 +108,13 @@ export async function executeCrossRunnerHandoff(
const sourceProof = assertTargetRunIdentity(sourceTurn.finalRun, sourceTarget)
const sourceUsage = assertObservedUsage(sourceTurn.finalRun)
const destinationProfile = profileForBridgeTarget(destinationTarget)
+ const destinationPrompt = livePrompts.handoffDestination(destinationTarget.key)
+ const destinationMarker = liveMarkers.handoffDestination(destinationTarget.key)
const forkParams = {
conversationId: result.conversationId,
branchId: result.branchId,
messageId: sourceMessage.id,
+ text: destinationPrompt,
workspace: false,
runner: destinationTarget.definition.backend,
model: destinationProfile.model.default,
@@ -127,17 +137,22 @@ export async function executeCrossRunnerHandoff(
timeoutMs,
)
const plan = planResponse.type === 'ack' ? planResponse.result : undefined
+ const portablePlan = plan?.portableContextPlan
if (
planResponse.type === 'error' ||
plan?.allowed !== true ||
plan.providerSession !== 'new' ||
typeof plan.digest !== 'string' ||
+ typeof portablePlan?.digest !== 'string' ||
+ typeof portablePlan.requiresAcceptance !== 'boolean' ||
typeof plan.destinationBranchId !== 'string' ||
!Array.isArray(plan.context?.messages) ||
plan.throughMessageId !== sourceMessage.id ||
plan.context?.sourceRunId !== sourceTurn.runId ||
plan.context?.sourceBoundary !== sourceMessage.id ||
- typeof plan.context?.digest !== 'string'
+ typeof plan.context?.digest !== 'string' ||
+ portablePlan.source?.source?.runId !== sourceTurn.runId ||
+ portablePlan.source?.source?.messageId !== sourceMessage.id
) {
throw new LiveBridgeError(
'LIVE_RELEASE_HANDOFF_PLAN_INVALID',
@@ -154,8 +169,15 @@ export async function executeCrossRunnerHandoff(
'execute_fork',
forkOperationId,
),
- params: { ...forkParams, planDigest: plan.digest },
+ params: {
+ ...forkParams,
+ planDigest: plan.digest,
+ ...(portablePlan.requiresAcceptance === true
+ ? { acceptedDigest: portablePlan.digest }
+ : {}),
+ },
}
+ const executeResponseStartIndex = session.responses.length
const executeResponse = await sendOperationRequest(
session,
result,
@@ -188,12 +210,55 @@ export async function executeCrossRunnerHandoff(
result.sourceRunId = sourceTurn.runId
result.branchId = plan.destinationBranchId
applyTargetReceipt(result, config, destinationTarget)
- const destinationTurn = await runNormalTurn(session, result, destinationTarget, timeoutMs, {
- operationPrefix: `${operationPrefix}-destination`,
- prompt: livePrompts.handoffDestination(destinationTarget.key),
- marker: 'LIVE_BRAID_CODEX_HANDOFF_OK',
- })
- const destinationSessionId = providerSessionId(destinationTurn.finalRun)
+ const destinationAdmissionResponse = await session.waitFor(
+ 'cross-runner destination admission',
+ (response) => {
+ const payload = eventPayload(response)
+ return (
+ session.responses.indexOf(response) >= executeResponseStartIndex &&
+ response?.event?.kind === 'run.requested' &&
+ payload?.status === 'admitted' &&
+ typeof payload.runId === 'string' &&
+ payload.admission?.runId === payload.runId &&
+ payload.admission?.branchId === plan.destinationBranchId
+ )
+ },
+ timeoutMs,
+ )
+ const destinationAdmission = eventPayload(destinationAdmissionResponse)
+ const destinationRunId = destinationAdmission.runId
+ const destinationTerminal = await terminalOperationState(
+ session,
+ result,
+ `${operationPrefix}-destination`,
+ destinationRunId,
+ timeoutMs,
+ )
+ const destinationRun = runWithAdmissionReceipt(
+ destinationTerminal.run,
+ destinationAdmission.admission,
+ )
+ const destinationMessage = terminalMessage(
+ destinationTerminal.response.state,
+ destinationRunId,
+ )
+ const destinationMarkerObserved = exactMarker(destinationMessage?.text, destinationMarker)
+ if (
+ destinationRun?.status !== 'completed' ||
+ typeof destinationMessage?.text !== 'string' ||
+ destinationMessage.text.trim() === '' ||
+ !destinationMarkerObserved
+ ) {
+ throw new LiveBridgeError(
+ destinationMarkerObserved ? 'LIVE_FINAL_OUTPUT_MISSING' : 'LIVE_FINAL_OUTPUT_MISMATCH',
+ destinationMarkerObserved
+ ? 'The cross-runner destination did not retain a completed assistant message'
+ : 'The cross-runner destination completed without the expected response marker',
+ exitCodes.failed,
+ { run: destinationRun, assistant: destinationMessage },
+ )
+ }
+ const destinationSessionId = providerSessionId(destinationRun)
if (
typeof destinationSessionId !== 'string' ||
destinationSessionId.length === 0 ||
@@ -203,20 +268,20 @@ export async function executeCrossRunnerHandoff(
'LIVE_RELEASE_DESTINATION_RECEIPT_INVALID',
'The Codex destination run did not prove a distinct runner and provider session',
exitCodes.failed,
- { run: destinationTurn.finalRun, sourceSessionId },
+ { run: destinationRun, sourceSessionId },
)
}
- const destinationProof = assertTargetRunIdentity(destinationTurn.finalRun, destinationTarget)
- const destinationUsage = assertObservedUsage(destinationTurn.finalRun)
+ const destinationProof = assertTargetRunIdentity(destinationRun, destinationTarget)
+ const destinationUsage = assertObservedUsage(destinationRun)
const transfer = assertContextTransfer({
sourceRunId: sourceTurn.runId,
sourceMessageId: sourceMessage.id,
plan,
- destinationRun: destinationTurn.finalRun,
+ destinationRun,
})
return {
- runId: destinationTurn.runId,
- runIds: [sourceTurn.runId, destinationTurn.runId],
+ runId: destinationRunId,
+ runIds: [sourceTurn.runId, destinationRunId],
targetProof: destinationProof,
evidence: {
sourceRunner: sourceProof.harness,
@@ -224,11 +289,11 @@ export async function executeCrossRunnerHandoff(
sourceProvider: sourceProof.provider,
destinationProvider: destinationProof.provider,
sourceRun: evidenceValue(sourceRun),
- destinationRun: evidenceValue(destinationTurn.finalRun),
+ destinationRun: evidenceValue(destinationRun),
sourceUsage,
destinationUsage,
sourceRunId: sourceTurn.runId,
- destinationRunId: destinationTurn.runId,
+ destinationRunId,
sourceProviderSessionId: sourceSessionId,
destinationProviderSessionId: destinationSessionId,
sourceMessageId: sourceMessage.id,
@@ -237,9 +302,17 @@ export async function executeCrossRunnerHandoff(
planDigest: plan.digest,
contextPlanDigest: plan.context.digest,
providerSession: plan.providerSession,
+ acceptance:
+ portablePlan.requiresAcceptance === true
+ ? { required: true, acceptedDigest: portablePlan.digest }
+ : { required: false },
transfer: evidenceValue(transfer),
plan: evidenceValue(plan),
execution: evidenceValue(branch),
+ destinationAdmission: evidenceValue(destinationAdmissionResponse),
+ destinationPrompt,
+ destinationMarker,
+ destinationMarkerObserved,
},
}
},
@@ -276,8 +349,13 @@ export async function executeInteractiveProtocol(
timeoutMs,
operation,
operationPrefix,
- execute: async ({ result, getSession }) => {
+ execute: async ({ result, config, getSession }) => {
const session = getSession()
+ await writeFile(
+ join(config.workspace, `interaction-proof-${target.key}.txt`),
+ `${liveMarkers.interactive(target.key)}\n`,
+ { mode: 0o600 },
+ )
const started = await admitOperationTurn(
session,
result,
@@ -293,9 +371,11 @@ export async function executeInteractiveProtocol(
timeoutMs,
)
const interaction = interactionFromResponse(interactionResponse, started.runId)
+ const interactionPayload = runEventPayload(interactionResponse, started.runId)
if (
typeof interaction?.interactionId !== 'string' ||
- interaction.interactionId.length === 0
+ interaction.interactionId.length === 0 ||
+ !Number.isSafeInteger(interactionPayload?.source?.providerSequence)
) {
throw new LiveBridgeError(
'LIVE_RELEASE_INTERACTION_INVALID',
@@ -347,6 +427,7 @@ export async function executeInteractiveProtocol(
const staleCodes = new Set([
'INTERACTION_RESPONSE_IN_PROGRESS',
'INTERACTION_RESPONSE_CONFLICT',
+ 'INTERACTION_STALE',
])
if (duplicateResponse.type !== 'error' || !staleCodes.has(duplicateResponse.code)) {
throw new LiveBridgeError(
@@ -356,6 +437,56 @@ export async function executeInteractiveProtocol(
{ response: duplicateResponse },
)
}
+ const responseIndex = session.responses.indexOf(responseAck)
+ const providerProgress = await session.waitFor(
+ 'post-response provider progress',
+ (response) => {
+ const payload = runEventPayload(response, started.runId)
+ return (
+ session.responses.indexOf(response) > responseIndex &&
+ Number.isSafeInteger(payload?.source?.providerSequence) &&
+ payload.source.providerSequence > interactionPayload.source.providerSequence
+ )
+ },
+ timeoutMs,
+ )
+ const providerProgressPayload = runEventPayload(providerProgress, started.runId)
+ const postResponseState = await operationState(
+ session,
+ result,
+ operationPrefix,
+ 'post-response',
+ timeoutMs,
+ )
+ const postResponseRun = runFromState(postResponseState.state, started.runId)
+ let cleanupCancel
+ if (['running', 'waiting', 'streaming', 'reconnecting'].includes(postResponseRun?.status)) {
+ const cancelRequest = operationRequest(
+ result,
+ operationPrefix,
+ 'cleanup-cancel',
+ 'cancel_run',
+ {
+ runId: started.runId,
+ reason: 'live interactive proof completed',
+ },
+ )
+ cleanupCancel = await sendOperationRequest(
+ session,
+ result,
+ cancelRequest,
+ 'interactive proof cleanup cancellation',
+ timeoutMs,
+ )
+ if (cleanupCancel.type !== 'ack') {
+ throw new LiveBridgeError(
+ 'LIVE_RELEASE_INTERACTION_CLEANUP_FAILED',
+ 'The named interactive operation did not acknowledge cleanup cancellation',
+ exitCodes.failed,
+ { response: cleanupCancel },
+ )
+ }
+ }
const terminal = await terminalOperationState(
session,
result,
@@ -378,11 +509,13 @@ export async function executeInteractiveProtocol(
{ run: terminal.run, interaction: interactionState },
)
}
- const targetProof = assertTargetRunIdentity(terminal.run, target)
- const usage = assertObservedUsage(terminal.run)
+ const verifiedRun = runWithAdmissionReceipt(terminal.run, started.response.admission)
+ const targetProof = assertTargetRunIdentity(verifiedRun, target)
const retainedInteraction = assertRetainedInteraction(
- terminal.run,
+ session.responses,
+ started.runId,
interaction.interactionId,
+ responseRequest.operationId,
responseAck,
)
return {
@@ -395,10 +528,27 @@ export async function executeInteractiveProtocol(
interaction: evidenceValue(interaction),
response: evidenceValue(responseAck),
staleDuplicate: evidenceValue(duplicateResponse),
- terminalRun: evidenceValue(terminal.run),
+ providerProgress: evidenceValue({
+ kind: providerProgress.event.kind,
+ sequence: providerProgress.sequence,
+ revision: providerProgress.revision,
+ providerSequence: providerProgressPayload.source.providerSequence,
+ cursor: providerProgressPayload.source.cursor ?? null,
+ }),
+ postResponseStatus: postResponseRun?.status ?? null,
+ ...(cleanupCancel === undefined ? {} : { cleanupCancel: evidenceValue(cleanupCancel) }),
+ terminalRun: evidenceValue(verifiedRun),
interactionStatus: retainedInteraction.status,
responseOutcome: retainedInteraction.responseOperation.outcome,
- usage,
+ usage: evidenceValue({
+ terminalStatus: verifiedRun.status,
+ input: verifiedRun.inputTokens,
+ output: verifiedRun.outputTokens,
+ tokenStatus: verifiedRun.tokenStatus,
+ costStatus: verifiedRun.costStatus,
+ settled: false,
+ reason: 'The interactive proof cancels after provider progress',
+ }),
},
}
},
@@ -466,24 +616,28 @@ export async function executeRestartReconciliation(
}
const activeStream = await getSession().waitFor(
'restart operation streamed active run event',
- (response) =>
- response.type === 'event' &&
- response.event?.runId === started.runId &&
- getSession().responses.indexOf(response) > admissionResponseIndex &&
- [
- 'run.text.delta',
- 'run.part.updated',
- 'run.reasoning.delta',
- 'run.tool.call',
- 'run.tool.result',
- 'run.artifact',
- 'run.proposal',
- 'run.interaction',
- ].includes(response.event.kind) &&
- Number.isSafeInteger(response.event?.provider?.providerSequence) &&
- response.event.provider.providerSequence > 0,
+ (response) => {
+ const payload = runEventPayload(response, started.runId)
+ return (
+ payload !== undefined &&
+ getSession().responses.indexOf(response) > admissionResponseIndex &&
+ [
+ 'run.text.delta',
+ 'run.part.updated',
+ 'run.reasoning.delta',
+ 'run.tool.call',
+ 'run.tool.result',
+ 'run.artifact',
+ 'run.proposal',
+ 'run.interaction',
+ ].includes(response.event.kind) &&
+ Number.isSafeInteger(payload.source?.providerSequence) &&
+ payload.source.providerSequence > 0
+ )
+ },
timeoutMs,
)
+ const activeStreamPayload = runEventPayload(activeStream, started.runId)
const streamedState = await operationState(
getSession(),
result,
@@ -492,6 +646,23 @@ export async function executeRestartReconciliation(
timeoutMs,
)
const streamedRun = runFromState(streamedState.state, started.runId)
+ if (!['running', 'waiting', 'streaming'].includes(streamedRun?.status)) {
+ throw new LiveBridgeError(
+ 'LIVE_RELEASE_RESTART_STREAM_ENDED',
+ 'The selected run reached a terminal state before Braid could disconnect',
+ exitCodes.failed,
+ {
+ run: streamedRun,
+ progress: {
+ kind: activeStream.event.kind,
+ sequence: activeStream.sequence,
+ revision: activeStream.revision,
+ providerSequence: activeStreamPayload.source.providerSequence,
+ cursor: activeStreamPayload.source.cursor ?? null,
+ },
+ },
+ )
+ }
const activeStateResponseIndex = getSession().responses.indexOf(activeState)
const activeStreamResponseIndex = getSession().responses.indexOf(activeStream)
const activeModel = {
@@ -515,12 +686,32 @@ export async function executeRestartReconciliation(
responseIndex: activeStreamResponseIndex,
sequence: activeStream.sequence,
revision: activeStream.revision,
- providerSequence: activeStream.event.provider.providerSequence,
- cursor: activeStream.event.provider.cursor ?? null,
+ providerSequence: activeStreamPayload.source.providerSequence,
+ cursor: activeStreamPayload.source.cursor ?? null,
},
}
- const savedCursor = streamedRun?.lastCursor
- const savedProviderSequence = streamedRun?.lastProviderSequence
+ const savedCursor = streamedRun?.cursor
+ const savedCursorCommittedSequence = streamedRun?.cursorCommittedSequence
+ const savedCursorResponse = getSession().responses.findLast((response) => {
+ const payload = runEventPayload(response, started.runId)
+ return (
+ response.type === 'event' &&
+ response.sequence === savedCursorCommittedSequence &&
+ payload?.source?.cursor === savedCursor &&
+ Number.isSafeInteger(payload.source.providerSequence)
+ )
+ })
+ const savedCursorPayload = runEventPayload(savedCursorResponse, started.runId)
+ const savedProviderSequence = savedCursorPayload?.source?.providerSequence
+ const savedCursorBoundary = {
+ runId: started.runId,
+ kind: savedCursorResponse?.event?.kind,
+ responseIndex: getSession().responses.indexOf(savedCursorResponse),
+ sequence: savedCursorResponse?.sequence,
+ revision: savedCursorResponse?.revision,
+ cursor: savedCursorPayload?.source?.cursor,
+ providerSequence: savedProviderSequence,
+ }
const detachRequest = operationRequest(result, operationPrefix, 'detach', 'detach', {
runId: started.runId,
})
@@ -547,7 +738,7 @@ export async function executeRestartReconciliation(
(response) =>
response.type === 'event' &&
response.event?.kind === 'run.detached' &&
- response.event?.runId === started.runId,
+ runEventPayload(response, started.runId) !== undefined,
timeoutMs,
)
const detachedState = await operationState(
@@ -615,7 +806,7 @@ export async function executeRestartReconciliation(
restarted.responses.indexOf(response) >= responseCountBeforeReconnect &&
response.type === 'event' &&
response.event?.kind === 'run.reconnecting' &&
- response.event?.runId === started.runId &&
+ runEventPayload(response, started.runId) !== undefined &&
Number.isSafeInteger(response.sequence) &&
response.sequence > 0 &&
Number.isSafeInteger(response.revision) &&
@@ -623,25 +814,87 @@ export async function executeRestartReconciliation(
timeoutMs,
)
const reconnectBoundaryResponseIndex = restarted.responses.indexOf(reconnectBoundaryResponse)
- const replayEvent = await restarted.waitFor(
- 'restart replayed post-cursor event',
- (response) =>
- restarted.responses.indexOf(response) > reconnectBoundaryResponseIndex &&
- response.type === 'event' &&
- response.event?.runId === started.runId &&
- response.event?.kind !== 'run.reconnecting' &&
- Number.isSafeInteger(response.sequence) &&
- response.sequence > reconnectBoundaryResponse.sequence &&
- Number.isSafeInteger(response.revision) &&
- response.revision > reconnectBoundaryResponse.revision &&
- Number.isSafeInteger(response.event?.provider?.providerSequence) &&
- Number.isSafeInteger(savedProviderSequence) &&
- savedProviderSequence > 0 &&
- response.event.provider.providerSequence === savedProviderSequence + 1 &&
- response.sequence <= reconnectResponse.revision &&
- response.revision <= reconnectResponse.revision,
- timeoutMs,
- )
+ const reconnectBoundaryPayload = runEventPayload(reconnectBoundaryResponse, started.runId)
+ let replayEvent
+ try {
+ replayEvent = await restarted.waitFor(
+ 'restart replayed post-cursor event',
+ (response) => {
+ const payload = runEventPayload(response, started.runId)
+ return (
+ restarted.responses.indexOf(response) > reconnectBoundaryResponseIndex &&
+ payload !== undefined &&
+ response.event?.kind !== 'run.reconnecting' &&
+ Number.isSafeInteger(response.sequence) &&
+ response.sequence > reconnectBoundaryResponse.sequence &&
+ Number.isSafeInteger(response.revision) &&
+ response.revision > reconnectBoundaryResponse.revision &&
+ Number.isSafeInteger(payload.source?.providerSequence) &&
+ Number.isSafeInteger(savedProviderSequence) &&
+ savedProviderSequence > 0 &&
+ payload.source.providerSequence > savedProviderSequence &&
+ response.sequence <= reconnectResponse.revision &&
+ response.revision <= reconnectResponse.revision
+ )
+ },
+ timeoutMs,
+ )
+ } catch (error) {
+ const postReconnectResponses = restarted.responses
+ .slice(responseCountBeforeReconnect)
+ .map((response, responseOffset) => {
+ const payload = runEventPayload(response, started.runId)
+ return {
+ responseIndex: responseCountBeforeReconnect + responseOffset,
+ type: response.type,
+ ...(response.requestId === undefined ? {} : { requestId: response.requestId }),
+ ...(response.sequence === undefined ? {} : { sequence: response.sequence }),
+ ...(response.revision === undefined ? {} : { revision: response.revision }),
+ ...(response.event?.kind === undefined ? {} : { kind: response.event.kind }),
+ ...(payload === undefined
+ ? {}
+ : {
+ run: {
+ runId: payload.runId,
+ ...(payload.status === undefined ? {} : { status: payload.status }),
+ ...(payload.cursor === undefined ? {} : { cursor: payload.cursor }),
+ ...(payload.source?.providerSequence === undefined
+ ? {}
+ : { providerSequence: payload.source.providerSequence }),
+ ...(payload.source?.cursor === undefined
+ ? {}
+ : { providerCursor: payload.source.cursor }),
+ },
+ }),
+ ...(response.type !== 'error'
+ ? {}
+ : { error: { code: response.code, message: response.message } }),
+ }
+ })
+ const postReconnect = {
+ count: postReconnectResponses.length,
+ first: postReconnectResponses.slice(0, 8),
+ last: postReconnectResponses.slice(-8),
+ }
+ throw new LiveBridgeError(
+ 'LIVE_RELEASE_REPLAY_TIMEOUT',
+ 'The restart operation did not retain a provider event after its saved cursor',
+ exitCodes.failed,
+ {
+ cause:
+ error instanceof LiveBridgeError
+ ? { code: error.code, message: error.message, details: error.details }
+ : { message: error instanceof Error ? error.message : String(error) },
+ savedCursor,
+ savedProviderSequence,
+ reopenedRun,
+ reconnectResponse,
+ reconnectBoundary: reconnectBoundaryResponse,
+ postReconnect,
+ },
+ )
+ }
+ const replayPayload = runEventPayload(replayEvent, started.runId)
const terminal = await terminalOperationState(
restarted,
result,
@@ -674,19 +927,20 @@ export async function executeRestartReconciliation(
newProcess,
forcedProcess,
activeModel,
+ savedCursorBoundary,
reopenedRevision: reopenedState.revision,
reconnectRequest,
reconnectResponse,
reconnectBoundary: {
- runId: reconnectBoundaryResponse.event.runId,
+ runId: reconnectBoundaryPayload.runId,
kind: reconnectBoundaryResponse.event.kind,
responseIndex: reconnectBoundaryResponseIndex,
sequence: reconnectBoundaryResponse.sequence,
revision: reconnectBoundaryResponse.revision,
- savedCursor: reconnectBoundaryResponse.event.after ?? null,
+ savedCursor: reconnectBoundaryPayload.cursor ?? null,
},
replayEvent: {
- event: replayEvent.event,
+ event: replayPayload,
kind: replayEvent.event.kind,
responseIndex: restarted.responses.indexOf(replayEvent),
sequence: replayEvent.sequence,
@@ -696,8 +950,9 @@ export async function executeRestartReconciliation(
finalState: terminal.response,
terminalSession: newProcess.instanceId,
})
- const targetProof = assertTargetRunIdentity(terminal.run, target)
- const usage = assertObservedUsage(terminal.run)
+ const verifiedRun = runWithAdmissionReceipt(terminal.run, started.response.admission)
+ const targetProof = assertTargetRunIdentity(verifiedRun, target)
+ const usage = assertObservedUsage(verifiedRun)
return {
runId: started.runId,
runIds: [started.runId],
@@ -714,6 +969,7 @@ export async function executeRestartReconciliation(
detachedState: evidenceValue(detachedState),
savedCursor,
savedProviderSequence,
+ savedCursorBoundary: evidenceValue(savedCursorBoundary),
reopenedState: evidenceValue(reopenedState),
detach: evidenceValue(detachResponse),
reconnect: evidenceValue(reconnectResponse),
diff --git a/scripts/live-bridge/release-proof-validation.mjs b/scripts/live-bridge/release-proof-validation.mjs
index bf2ca4d..924b4cb 100644
--- a/scripts/live-bridge/release-proof-validation.mjs
+++ b/scripts/live-bridge/release-proof-validation.mjs
@@ -1,5 +1,6 @@
import { exitCodes } from './constants.mjs'
import { LiveBridgeError } from './errors.mjs'
+import { runEventPayload } from './protocol.mjs'
const ACTIVE_RUN_STATUSES = new Set(['running', 'waiting', 'streaming'])
const ACTIVE_PROGRESS_KINDS = new Set([
@@ -112,7 +113,12 @@ export function assertTargetRunIdentity(run, target) {
receipt,
materialization,
})
- if (text(run.model)) same(run.model, expected.model, 'run model', { run, expected })
+ if (text(run.model) && run.model !== target.modelId && run.model !== expected.model)
+ fail(
+ 'LIVE_RELEASE_TARGET_IDENTITY_INVALID',
+ 'run model does not match the selected route or provider model',
+ { run, target, expected },
+ )
return {
key: target.key,
@@ -127,49 +133,91 @@ export function assertTargetRunIdentity(run, target) {
}
export function assertObservedUsage(run) {
- if (run?.status !== 'completed' || run.complete !== true)
+ if (run?.status !== 'completed' || run.completeness !== 'complete')
fail('LIVE_RELEASE_USAGE_MISSING', 'The release run did not complete', { run })
if (
- run.tokensKnown === false ||
+ run.tokensKnown !== true ||
+ run.tokenStatus !== 'complete' ||
!Number.isFinite(run.inputTokens) ||
!Number.isFinite(run.outputTokens)
)
fail('LIVE_RELEASE_USAGE_MISSING', 'The release run omitted known token usage', { run })
- if (!Number.isInteger(run.llmCalls) || run.llmCalls < 1)
- fail('LIVE_RELEASE_USAGE_MISSING', 'The release run omitted observed model-call usage', { run })
- return { inputTokens: run.inputTokens, outputTokens: run.outputTokens, llmCalls: run.llmCalls }
+ if (run.inputTokens + run.outputTokens < 1)
+ fail('LIVE_RELEASE_USAGE_MISSING', 'The release run reported empty token usage', { run })
+ if (run.llmCalls !== undefined && (!Number.isInteger(run.llmCalls) || run.llmCalls < 1))
+ fail('LIVE_RELEASE_USAGE_MISSING', 'The release run reported invalid model-call usage', { run })
+ return {
+ inputTokens: run.inputTokens,
+ outputTokens: run.outputTokens,
+ ...(run.llmCalls === undefined ? {} : { llmCalls: run.llmCalls }),
+ }
}
-export function assertRetainedInteraction(run, interactionId, responseAck) {
- if (responseAck?.type !== 'ack')
+export function assertRetainedInteraction(
+ responses,
+ runId,
+ interactionId,
+ operationId,
+ responseAck,
+) {
+ if (
+ responseAck?.type !== 'ack' ||
+ responseAck.operationId !== operationId ||
+ !['accepted', 'already-applied'].includes(responseAck.outcome)
+ )
fail('LIVE_RELEASE_INTERACTION_NOT_RETAINED', 'The interaction response was not acknowledged', {
responseAck,
})
- const interaction = run?.interactions?.find((item) => item?.request?.id === interactionId)
- if (interaction === undefined || interaction.status === 'unknown')
+ const retained = (kind) =>
+ responses
+ .map((response, index) => ({ response, index, payload: runEventPayload(response, runId) }))
+ .find(
+ ({ response, payload }) =>
+ response.event?.kind === kind &&
+ payload?.value?.interactionId === interactionId &&
+ payload.value.operationId === operationId,
+ )
+ const requested = retained('run.interaction.response.requested')
+ const responded = retained('run.interaction.responded')
+ if (requested === undefined || responded === undefined)
fail('LIVE_RELEASE_INTERACTION_UNKNOWN', 'The interaction outcome is unknown or absent', {
- run,
+ runId,
interactionId,
+ operationId,
})
- if (!['declined', 'resolved'].includes(interaction.status))
- fail(
- 'LIVE_RELEASE_INTERACTION_NOT_RETAINED',
- 'The interaction did not retain a declined or resolved outcome',
- { interaction },
- )
- if (interaction.responseOperation?.outcome !== 'declined')
+ if (
+ requested.index >= responded.index ||
+ requested.payload.value.outcome !== 'declined' ||
+ responded.payload.value.outcome !== 'declined'
+ )
fail(
'LIVE_RELEASE_INTERACTION_NOT_RETAINED',
- 'The durable interaction receipt did not retain the declined response',
- { interaction },
+ 'The durable interaction events did not retain one ordered declined response',
+ { requested, responded },
)
- return interaction
+ return {
+ status: 'declined',
+ responseOperation: responded.payload.value,
+ requestedSequence: requested.response.sequence,
+ respondedSequence: responded.response.sequence,
+ }
}
export function assertContextTransfer({ sourceRunId, sourceMessageId, plan, destinationRun }) {
const context = plan?.context
+ const portablePlan = plan?.portableContextPlan
+ const portableSource = portablePlan?.source?.source
+ const portableContext = portablePlan?.context
const transfer = destinationRun?.receipt?.contextTransfer
- if (!text(sourceRunId) || !text(sourceMessageId) || !context || !transfer)
+ if (
+ !text(sourceRunId) ||
+ !text(sourceMessageId) ||
+ !context ||
+ !portablePlan ||
+ !portableSource ||
+ !portableContext ||
+ !transfer
+ )
fail(
'LIVE_RELEASE_CONTEXT_TRANSFER_MISSING',
'The handoff omitted durable context transfer evidence',
@@ -181,13 +229,37 @@ export function assertContextTransfer({ sourceRunId, sourceMessageId, plan, dest
context,
sourceMessageId,
})
- if (!text(context.digest) || !text(plan.digest))
+ same(portableSource.runId, sourceRunId, 'portable source run', {
+ portableSource,
+ sourceRunId,
+ })
+ same(portableSource.messageId, sourceMessageId, 'portable source boundary', {
+ portableSource,
+ sourceMessageId,
+ })
+ same(portableContext.source?.runId, sourceRunId, 'transferred context source run', {
+ portableContext,
+ sourceRunId,
+ })
+ same(portableContext.source?.messageId, sourceMessageId, 'transferred context source boundary', {
+ portableContext,
+ sourceMessageId,
+ })
+ if (
+ !text(context.digest) ||
+ !text(plan.digest) ||
+ !text(portablePlan.digest) ||
+ !text(portableContext.digest)
+ )
fail(
'LIVE_RELEASE_CONTEXT_TRANSFER_INVALID',
'The handoff omitted a context or fork-plan digest',
{ plan },
)
- same(transfer.planDigest, context.digest, 'destination context digest', { transfer, context })
+ same(transfer.planDigest, portablePlan.digest, 'destination plan digest', {
+ transfer,
+ portablePlan,
+ })
same(transfer.sourceRunId, sourceRunId, 'destination source run', { transfer, sourceRunId })
same(transfer.destinationRunId, destinationRun.id, 'destination run', {
transfer,
@@ -195,9 +267,9 @@ export function assertContextTransfer({ sourceRunId, sourceMessageId, plan, dest
})
same(
destinationRun.receipt.requested?.contextPlanDigest,
- context.digest,
- 'destination requested context digest',
- { destinationRun, context },
+ portablePlan.digest,
+ 'destination requested plan digest',
+ { destinationRun, portablePlan },
)
if (text(transfer.sourceBoundary))
same(transfer.sourceBoundary, sourceMessageId, 'destination source boundary', {
@@ -207,8 +279,9 @@ export function assertContextTransfer({ sourceRunId, sourceMessageId, plan, dest
return {
sourceRunId,
sourceMessageId,
- contextDigest: context.digest,
- planDigest: plan.digest,
+ contextDigest: portableContext.digest,
+ planDigest: portablePlan.digest,
+ forkPlanDigest: plan.digest,
transfer,
}
}
@@ -239,13 +312,14 @@ function nonNegativeInteger(value) {
export function terminalReceipts(responses, session, runId) {
if (!Array.isArray(responses)) return []
return responses.flatMap((response, responseIndex) => {
+ const payload = runEventPayload(response, runId)
if (
response?.type !== 'event' ||
response.event?.kind !== 'run.finished' ||
- response.event?.runId !== runId
+ payload === undefined
)
return []
- const provider = response.event.provider
+ const provider = payload.source
return [
{
session,
@@ -253,7 +327,7 @@ export function terminalReceipts(responses, session, runId) {
runId,
sequence: response.sequence ?? null,
revision: response.revision ?? null,
- status: response.event.status ?? null,
+ status: payload.status ?? null,
providerEventId: provider?.eventId ?? null,
providerSequence: provider?.providerSequence ?? null,
cursor: provider?.cursor ?? null,
@@ -302,13 +376,39 @@ function assertRecoveryIdentity(before, after, label) {
})
}
-function assertSavedCursor(run, cursor, providerSequence, label) {
- if (run?.lastCursor !== cursor || run?.lastProviderSequence !== providerSequence)
+function assertSavedCursor(run, cursor, committedSequence, label) {
+ if (run?.cursor !== cursor || run?.cursorCommittedSequence !== committedSequence)
fail(
'LIVE_RELEASE_RESTART_CURSOR_CHANGED',
`${label} did not retain the saved provider cursor`,
- { cursor, providerSequence, run },
+ { cursor, committedSequence, run },
+ )
+}
+
+function assertSavedCursorBoundary(boundary, runId, cursor, providerSequence) {
+ if (
+ boundary?.runId !== runId ||
+ typeof boundary.kind !== 'string' ||
+ boundary.kind.length === 0 ||
+ !nonNegativeInteger(boundary.responseIndex) ||
+ !positiveInteger(boundary.sequence) ||
+ !positiveInteger(boundary.revision) ||
+ boundary.cursor !== cursor ||
+ boundary.providerSequence !== providerSequence
+ )
+ fail(
+ 'LIVE_RELEASE_RESTART_CURSOR_BOUNDARY_MISSING',
+ 'The restart proof did not bind its saved cursor to a durable provider event',
+ { boundary, runId, cursor, providerSequence },
)
+ return {
+ kind: boundary.kind,
+ responseIndex: boundary.responseIndex,
+ sequence: boundary.sequence,
+ revision: boundary.revision,
+ cursor: boundary.cursor,
+ providerSequence: boundary.providerSequence,
+ }
}
function assertForcedRestartProcess({ oldProcess, newProcess, forcedProcess }) {
@@ -504,11 +604,12 @@ function assertReconnectBoundary({
'The restart proof did not retain the durable reconnect boundary',
{ reconnectBoundary, reconnectResponse },
)
- const provider = replayEvent?.event?.provider
+ const provider = replayEvent?.event?.source
const nextProviderSequence = savedProviderSequence + 1
if (
replayEvent?.event?.runId !== runId ||
- replayEvent.kind !== replayEvent.event.kind ||
+ typeof replayEvent.kind !== 'string' ||
+ replayEvent.kind.length === 0 ||
replayEvent.kind === 'run.reconnecting' ||
!nonNegativeInteger(replayEvent.responseIndex) ||
replayEvent.responseIndex <= reconnectBoundary.responseIndex ||
@@ -563,19 +664,23 @@ function assertTerminalUniqueness(terminalReceiptsValue, finalState, runId, term
)
const receipt = terminalReceiptsValue[0]
const finalRun = finalState?.state?.runs?.find((run) => run?.id === runId)
+ const receiptCursor = receipt.cursor !== null && text(receipt.cursor) ? receipt.cursor : undefined
+ const durableCursor = text(finalRun?.cursor) ? finalRun.cursor : undefined
if (
receipt.runId !== runId ||
(terminalSession !== undefined && receipt.session !== terminalSession) ||
receipt.status !== 'completed' ||
!text(receipt.providerEventId) ||
!positiveInteger(receipt.providerSequence) ||
- !text(receipt.cursor) ||
+ (receipt.cursor !== null && receiptCursor === undefined) ||
+ durableCursor === undefined ||
+ (receiptCursor !== undefined && receiptCursor !== durableCursor) ||
!positiveInteger(receipt.sequence) ||
!positiveInteger(receipt.revision) ||
!positiveInteger(finalState?.revision) ||
!positiveInteger(finalState?.state?.revision) ||
finalRun?.status !== 'completed' ||
- finalRun.complete !== true ||
+ finalRun.completeness !== 'complete' ||
receipt.sequence > finalState.state.revision ||
receipt.revision > finalState.state.revision
)
@@ -588,6 +693,7 @@ function assertTerminalUniqueness(terminalReceiptsValue, finalState, runId, term
deliveryCount: terminalReceiptsValue.length,
receipt,
durableRevision: finalState.state.revision,
+ durableCursor,
}
}
@@ -603,6 +709,7 @@ export function assertRetainedRestartProof({
newProcess,
forcedProcess,
activeModel,
+ savedCursorBoundary,
reopenedRevision,
reconnectRequest,
reconnectResponse,
@@ -639,6 +746,12 @@ export function assertRetainedRestartProof({
{ savedCursor, savedProviderSequence, beforeDetach },
)
const activeEvidence = assertActiveModelTiming(activeModel, runId)
+ const cursorEvidence = assertSavedCursorBoundary(
+ savedCursorBoundary,
+ runId,
+ savedCursor,
+ savedProviderSequence,
+ )
if (beforeDetach?.status === undefined || !ACTIVE_RUN_STATUSES.has(beforeDetach.status))
fail('LIVE_RELEASE_RESTART_NOT_ACTIVE', 'The restart proof did not detach an active run', {
beforeDetach,
@@ -659,9 +772,9 @@ export function assertRetainedRestartProof({
assertRecoveryIdentity(beforeDetach, detached, 'detach')
assertRecoveryIdentity(beforeDetach, reopened, 'restart')
assertRecoveryIdentity(beforeDetach, final, 'reconnect')
- assertSavedCursor(beforeDetach, savedCursor, savedProviderSequence, 'active stream')
- assertSavedCursor(detached, savedCursor, savedProviderSequence, 'detached state')
- assertSavedCursor(reopened, savedCursor, savedProviderSequence, 'reopened state')
+ assertSavedCursor(beforeDetach, savedCursor, cursorEvidence.sequence, 'active stream')
+ assertSavedCursor(detached, savedCursor, cursorEvidence.sequence, 'detached state')
+ assertSavedCursor(reopened, savedCursor, cursorEvidence.sequence, 'reopened state')
const reconnectEvidence = assertReconnectBoundary({
runId,
savedCursor,
@@ -678,12 +791,13 @@ export function assertRetainedRestartProof({
'The restart proof did not replay a provider event after the saved cursor',
{ savedCursor, savedProviderSequence, replayEvent },
)
- if (final?.status !== 'completed' || final.complete !== true)
+ if (final?.status !== 'completed' || final.completeness !== 'complete')
fail(
'LIVE_RELEASE_RESTART_NOT_COMPLETED',
'The retained run did not complete after reconnect',
{
final,
+ lastError: finalState?.state?.lastError ?? null,
},
)
const terminalEvidence = assertTerminalUniqueness(
@@ -700,6 +814,7 @@ export function assertRetainedRestartProof({
controlRef: final.controlRef,
process: processEvidence,
activeModel: activeEvidence,
+ savedCursorBoundary: cursorEvidence,
reconnect: reconnectEvidence,
terminal: terminalEvidence,
}
diff --git a/scripts/live-bridge/release-proof-validation.test.mjs b/scripts/live-bridge/release-proof-validation.test.mjs
index 1dc410c..072590a 100644
--- a/scripts/live-bridge/release-proof-validation.test.mjs
+++ b/scripts/live-bridge/release-proof-validation.test.mjs
@@ -2,6 +2,21 @@ import assert from 'node:assert/strict'
import test from 'node:test'
import { bridgeLaunchEnvironment } from './bridge.mjs'
import { StreamingRedactor } from './capture.mjs'
+import {
+ assertObservedIdentity,
+ eventSummary,
+ observedProviderAndModel,
+ parseSseEvents,
+} from './native-continuation.mjs'
+import {
+ interactionFromResponse,
+ retainedCancellationAdvertised,
+ runWithAdmissionReceipt,
+} from './protocol.mjs'
+import {
+ ownedProviderSessionIds,
+ providerSessionReleaseResult,
+} from './provider-session-cleanup.mjs'
import {
evidenceValue,
secretValues,
@@ -17,7 +32,9 @@ import {
assertUniqueRunIds,
terminalReceipts,
} from './release-proof-validation.mjs'
-import { assertTargetSemantics, verifyInteraction } from './target-actions.mjs'
+import { selectRestartTarget } from './release-proofs.mjs'
+import { assertTargetSemantics, cancelFailedTarget, verifyInteraction } from './target-actions.mjs'
+import { operationRequest, operationState } from './target-flow.mjs'
const target = {
key: 'pi-test',
@@ -25,15 +42,198 @@ const target = {
definition: { backend: 'pi' },
}
+test('restart proof selects the target with measured incremental delivery', () => {
+ const buffered = {
+ key: 'buffered',
+ modelId: 'opencode/provider/buffered',
+ definition: { backend: 'opencode' },
+ }
+ const incremental = {
+ key: 'incremental',
+ modelId: 'pi/provider/incremental',
+ definition: { backend: 'pi' },
+ }
+ const records = [
+ {
+ status: 'passed',
+ targetProof: { key: buffered.key, route: buffered.modelId },
+ normal: { run: { cursorCommittedSequence: 12 } },
+ },
+ {
+ status: 'passed',
+ targetProof: { key: incremental.key, route: incremental.modelId },
+ normal: { run: { cursorCommittedSequence: 48 } },
+ },
+ ]
+
+ assert.equal(selectRestartTarget([buffered, incremental], records), incremental)
+ assert.equal(selectRestartTarget([buffered, incremental], []), buffered)
+ assert.equal(selectRestartTarget([], records), undefined)
+})
+
+test('provider cleanup selects only exact CLI Bridge session bindings', () => {
+ const responses = [
+ {
+ type: 'ack',
+ admission: { provider: 'cli-bridge', providerSessionId: 'session-admission' },
+ },
+ {
+ type: 'state',
+ state: {
+ runs: [
+ {
+ provider: 'cli-bridge',
+ providerSessionId: 'session-admission',
+ controlRef: { provider: 'cli-bridge', sessionId: 'session-control' },
+ },
+ { provider: 'another-provider', providerSessionId: 'session-foreign' },
+ ],
+ },
+ },
+ ]
+
+ assert.deepEqual(ownedProviderSessionIds(responses), ['session-admission', 'session-control'])
+})
+
+test('provider cleanup accepts closed and already absent sessions only', () => {
+ assert.deepEqual(
+ providerSessionReleaseResult('session-closed', {
+ status: 200,
+ body: { closed: true },
+ }),
+ {
+ sessionId: 'session-closed',
+ status: 200,
+ closed: true,
+ alreadyAbsent: false,
+ released: true,
+ },
+ )
+ assert.deepEqual(providerSessionReleaseResult('session-absent', { status: 404 }), {
+ sessionId: 'session-absent',
+ status: 404,
+ closed: false,
+ alreadyAbsent: true,
+ released: true,
+ })
+ assert.equal(providerSessionReleaseResult('session-conflict', { status: 409 }).released, false)
+})
+
+test('retained cancellation proof reads the environment capability contract', () => {
+ assert.equal(retainedCancellationAdvertised({}), false)
+ assert.equal(
+ retainedCancellationAdvertised({
+ retainedControl: {
+ exactRunIdentity: true,
+ resultIdentity: true,
+ eventIdentity: true,
+ cancellationIdempotency: true,
+ },
+ }),
+ true,
+ )
+})
+
+test('native continuation proof reads provider identity from retained Bridge envelopes', () => {
+ const [frame] = parseSseEvents(
+ [
+ 'event: raw',
+ 'data: {"runId":"run-1","event":{"type":"raw","backend":"pi","event":{"type":"message_start","message":{"provider":"tangle-router","model":"glm-5.2"}}}}',
+ '',
+ ].join('\n'),
+ )
+ const summary = eventSummary(frame)
+ assert.deepEqual(summary, {
+ type: 'raw',
+ backend: 'pi',
+ provider: 'tangle-router',
+ model: 'glm-5.2',
+ })
+ assert.deepEqual(observedProviderAndModel([summary], 'pi/tangle-router/glm-5.2'), {
+ backends: ['pi'],
+ providers: ['tangle-router'],
+ models: ['glm-5.2'],
+ backend: 'pi',
+ provider: 'tangle-router',
+ model: 'glm-5.2',
+ })
+})
+
+test('native continuation identity stays bound to the retained session route', () => {
+ const session = { backend: 'pi', model: 'pi/tangle-router/glm-5.2' }
+ assert.doesNotThrow(() =>
+ assertObservedIdentity(
+ observedProviderAndModel([{ type: 'status', backend: 'pi' }], session.model),
+ session,
+ ),
+ )
+ assert.throws(
+ () =>
+ assertObservedIdentity(
+ observedProviderAndModel(
+ [{ type: 'raw', backend: 'pi', provider: 'other', model: 'glm-5.2' }],
+ session.model,
+ ),
+ session,
+ ),
+ /did not match the retained session route/u,
+ )
+ assert.throws(
+ () =>
+ assertObservedIdentity(
+ observedProviderAndModel(
+ [{ type: 'raw', backend: 'pi', provider: 'tangle-router', model: 'glm-5.3' }],
+ session.model,
+ ),
+ session,
+ ),
+ /did not match the retained session route/u,
+ )
+ assert.throws(
+ () =>
+ assertObservedIdentity(
+ observedProviderAndModel(
+ [
+ { type: 'raw', backend: 'pi', provider: 'tangle-router', model: 'glm-5.2' },
+ { type: 'raw', backend: 'pi', provider: 'tangle-router', model: 'glm-5.3' },
+ ],
+ session.model,
+ ),
+ session,
+ ),
+ /did not match the retained session route/u,
+ )
+
+ const alternateSession = { backend: 'pi', model: 'pi/tangle-router/gpt-5.4-mini' }
+ assert.doesNotThrow(() =>
+ assertObservedIdentity(
+ observedProviderAndModel(
+ [
+ {
+ type: 'raw',
+ backend: 'pi',
+ provider: 'tangle-router',
+ model: 'gpt-5.4-mini',
+ },
+ ],
+ alternateSession.model,
+ ),
+ alternateSession,
+ ),
+ )
+})
+
function run(overrides = {}) {
return {
id: 'run-1',
status: 'completed',
- complete: true,
+ completeness: 'complete',
inputTokens: 2,
outputTokens: 3,
+ tokensKnown: true,
+ tokenStatus: 'complete',
llmCalls: 1,
- model: 'model',
+ model: 'pi/provider/model',
receipt: {
runId: 'run-1',
profileDigest: 'profile-digest',
@@ -57,6 +257,11 @@ function run(overrides = {}) {
test('identity validation rejects configured-label false positives', () => {
assert.doesNotThrow(() => assertTargetRunIdentity(run(), target))
+ assert.doesNotThrow(() => assertTargetRunIdentity(run({ model: 'model' }), target))
+ assert.throws(
+ () => assertTargetRunIdentity(run({ model: 'other' }), target),
+ /selected route or provider model/u,
+ )
for (const broken of [
{ requested: { runner: 'codex' } },
{ requested: { model: 'other' } },
@@ -100,7 +305,7 @@ test('identity validation retains nested and runner-only model routes', () => {
definition: { backend: 'pi' },
}
const nestedRun = run({
- model: 'openai/gpt-5.6-luna',
+ model: nestedTarget.modelId,
receipt: {
...run().receipt,
requested: {
@@ -127,7 +332,7 @@ test('identity validation retains nested and runner-only model routes', () => {
definition: { backend: 'codex' },
}
const defaultRun = run({
- model: 'default',
+ model: defaultTarget.modelId,
receipt: {
...run().receipt,
requested: {
@@ -146,14 +351,30 @@ test('identity validation retains nested and runner-only model routes', () => {
assert.equal(assertTargetRunIdentity(defaultRun, defaultTarget).provider, undefined)
})
-test('usage, replay, and cancellation unavailable states cannot pass strict conformance', () => {
+test('usage and cancellation unavailable states cannot pass strict conformance', () => {
assert.throws(() => assertObservedUsage(run({ tokensKnown: false })), /known token usage/u)
assert.throws(() => assertObservedUsage(run({ llmCalls: 0 })), /model-call usage/u)
- const unavailable = {
+ assert.deepEqual(assertObservedUsage(run({ llmCalls: undefined })), {
+ inputTokens: 2,
+ outputTokens: 3,
+ })
+ const cancellationUnavailable = {
cancel: { status: 'reported-unavailable', advertised: false },
interaction: { status: 'reported-unavailable', advertised: false },
}
- assert.throws(() => assertTargetSemantics(unavailable, { strict: true }), /verified live proof/u)
+ assert.throws(
+ () => assertTargetSemantics(cancellationUnavailable, { strict: true }),
+ /verified live proof/u,
+ )
+ assert.doesNotThrow(() =>
+ assertTargetSemantics(
+ {
+ cancel: { status: 'verified', advertised: true },
+ interaction: { status: 'reported-unavailable', advertised: false },
+ },
+ { strict: true },
+ ),
+ )
assert.throws(
() =>
assertTargetSemantics(
@@ -201,8 +422,8 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
const identity = {
id: 'run-1',
providerSessionId: 'session-1',
- lastCursor: '1:0',
- lastProviderSequence: 1,
+ cursor: '1:0',
+ cursorCommittedSequence: 11,
controlRef: {
runId: 'provider-run-1',
provider: 'cli-bridge',
@@ -226,7 +447,7 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
beforeDetach: { ...identity, status: 'streaming' },
detached: { ...identity, status: 'detached' },
reopened: { ...identity, status: 'detached' },
- final: { ...identity, status: 'completed', complete: true },
+ final: { ...identity, status: 'completed', completeness: 'complete' },
oldProcess,
newProcess,
forcedProcess: {
@@ -268,6 +489,15 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
cursor: '2:0',
},
},
+ savedCursorBoundary: {
+ runId: 'run-1',
+ kind: 'run.text.delta',
+ responseIndex: 10,
+ sequence: 11,
+ revision: 11,
+ cursor: '1:0',
+ providerSequence: 1,
+ },
reopenedRevision: 12,
reconnectRequest,
reconnectResponse: {
@@ -291,9 +521,8 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
sequence: 14,
revision: 14,
event: {
- kind: 'run.text.delta',
runId: 'run-1',
- provider: { providerSequence: 2, cursor: '2:0' },
+ source: { providerSequence: 2, cursor: '2:0' },
},
},
terminalReceipts: [
@@ -313,12 +542,19 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
revision: 16,
state: {
revision: 16,
- runs: [{ id: 'run-1', status: 'completed', complete: true }],
+ runs: [{ id: 'run-1', status: 'completed', completeness: 'complete', cursor: '3:0' }],
},
},
terminalSession: newProcess.instanceId,
}
assert.equal(assertRetainedRestartProof(proof).terminal.deliveryCount, 1)
+ assert.equal(
+ assertRetainedRestartProof({
+ ...proof,
+ terminalReceipts: [{ ...proof.terminalReceipts[0], cursor: null }],
+ }).terminal.durableCursor,
+ '3:0',
+ )
const adversarial = [
{
@@ -394,6 +630,10 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
replayEvent: { ...proof.replayEvent, responseIndex: proof.reconnectBoundary.responseIndex },
},
},
+ {
+ name: 'replay without a public kind',
+ proof: { ...proof, replayEvent: { ...proof.replayEvent, kind: '' } },
+ },
{
name: 'reconnect boundary uses a different saved cursor',
proof: {
@@ -409,7 +649,7 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
...proof.replayEvent,
event: {
...proof.replayEvent.event,
- provider: { providerSequence: 99, cursor: '99:0' },
+ source: { providerSequence: 99, cursor: '99:0' },
},
},
},
@@ -435,6 +675,13 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
name: 'terminal not durable',
proof: { ...proof, finalState: { revision: 14, state: { revision: 14 } } },
},
+ {
+ name: 'terminal cursor conflicts with durable run',
+ proof: {
+ ...proof,
+ terminalReceipts: [{ ...proof.terminalReceipts[0], cursor: 'other-cursor' }],
+ },
+ },
{
name: 'terminal completion missing',
proof: { ...proof, terminalReceipts: [] },
@@ -454,9 +701,11 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
revision: 4,
event: {
kind: 'run.finished',
- runId: 'run-1',
- status: 'completed',
- provider: { eventId: 'provider-finished', providerSequence: 3, cursor: '3:0' },
+ payload: {
+ runId: 'run-1',
+ status: 'completed',
+ source: { eventId: 'provider-finished', providerSequence: 3, cursor: '3:0' },
+ },
},
}
assert.deepEqual(terminalReceipts([terminalResponse], 'restarted-session', 'run-1'), [
@@ -474,32 +723,126 @@ test('restart proof rejects process, timing, reconnect, replay, and terminal fal
])
})
-test('interaction proof requires durable declined or resolved state', () => {
- const retained = {
- request: { id: 'interaction-1' },
- status: 'declined',
- responseOperation: { outcome: 'declined' },
+test('release RPC reads state and interaction frames from the public envelope', async () => {
+ const stateFrame = {
+ version: 1,
+ type: 'state',
+ requestId: 'interactive-proof-execution-a-state-active-pi-test',
+ state: { runs: [{ id: 'run-1', status: 'streaming' }] },
+ }
+ const sent = []
+ const session = {
+ send(request) {
+ sent.push(request)
+ },
+ async waitFor(label, predicate, timeoutMs) {
+ assert.equal(label, 'release operation state')
+ assert.equal(timeoutMs, 15_000)
+ assert.equal(predicate(stateFrame), true)
+ return stateFrame
+ },
}
+ const result = { operationNamespace: 'proof-execution-a', targetKey: 'pi-test', requests: [] }
+ assert.equal(await operationState(session, result, 'interactive', 'active', 120_000), stateFrame)
+ assert.deepEqual(sent, result.requests)
+
+ const requestInput = ['interactive', 'respond', 'respond_interaction', { runId: 'run-1' }]
+ const first = operationRequest(result, ...requestInput)
+ const retry = operationRequest(result, ...requestInput)
+ const independent = operationRequest(
+ { ...result, operationNamespace: 'proof-execution-b' },
+ ...requestInput,
+ )
+ assert.deepEqual(retry, first)
+ assert.notEqual(independent.operationId, first.operationId)
+
+ const projectedRun = { id: 'run-1', status: 'completed' }
+ const admission = { runId: 'run-1', profileDigest: 'profile-digest' }
+ assert.deepEqual(runWithAdmissionReceipt(projectedRun, admission), {
+ ...projectedRun,
+ receipt: admission,
+ })
+ assert.equal(
+ runWithAdmissionReceipt(projectedRun, { ...admission, runId: 'run-2' }),
+ projectedRun,
+ )
+
+ const interactionFrame = {
+ version: 1,
+ type: 'event',
+ sequence: 10,
+ revision: 10,
+ event: {
+ kind: 'run.interaction',
+ payload: {
+ runId: 'run-1',
+ interaction: {
+ id: 'interaction-local-1',
+ kind: 'permission',
+ title: 'Permission: bash',
+ },
+ },
+ },
+ }
+ assert.deepEqual(interactionFromResponse(interactionFrame, 'run-1'), {
+ runId: 'run-1',
+ interactionId: 'interaction-local-1',
+ request: interactionFrame.event.payload.interaction,
+ })
+})
+
+test('interaction proof requires ordered durable response events', () => {
+ const operationId = 'operation-interaction-1'
+ const event = (sequence, kind, outcome = 'declined') => ({
+ type: 'event',
+ sequence,
+ revision: sequence,
+ event: {
+ kind,
+ payload: {
+ runId: 'run-1',
+ value: { interactionId: 'interaction-1', operationId, outcome },
+ },
+ },
+ })
+ const requested = event(1, 'run.interaction.response.requested')
+ const responded = event(2, 'run.interaction.responded')
+ const acknowledgement = { type: 'ack', operationId, outcome: 'accepted' }
assert.deepEqual(
- assertRetainedInteraction({ interactions: [retained] }, 'interaction-1', { type: 'ack' }),
- retained,
+ assertRetainedInteraction(
+ [requested, responded],
+ 'run-1',
+ 'interaction-1',
+ operationId,
+ acknowledgement,
+ ),
+ {
+ status: 'declined',
+ responseOperation: responded.event.payload.value,
+ requestedSequence: 1,
+ respondedSequence: 2,
+ },
)
- for (const interaction of [
- undefined,
- { request: { id: 'interaction-1' }, status: 'unknown' },
- { request: { id: 'interaction-1' }, status: 'pending' },
+ for (const input of [
+ { responses: [], acknowledgement },
+ { responses: [responded, requested], acknowledgement },
+ {
+ responses: [requested, event(2, 'run.interaction.responded', 'unknown')],
+ acknowledgement,
+ },
{
- request: { id: 'interaction-1' },
- status: 'resolved',
- responseOperation: { outcome: 'accepted' },
+ responses: [requested, responded],
+ acknowledgement: { ...acknowledgement, outcome: 'rejected' },
},
]) {
assert.throws(
() =>
assertRetainedInteraction(
- { interactions: interaction === undefined ? [] : [interaction] },
+ input.responses,
+ 'run-1',
'interaction-1',
- { type: 'ack' },
+ operationId,
+ input.acknowledgement,
),
/interaction/u,
)
@@ -516,15 +859,26 @@ test('context transfer binds boundary, source run, digest, and destination recei
digest: 'context-digest',
messages: [{ id: 'message-1' }],
},
+ portableContextPlan: {
+ digest: 'portable-plan-digest',
+ source: {
+ source: { runId: 'source-run', messageId: 'message-1' },
+ },
+ context: {
+ source: { runId: 'source-run', messageId: 'message-1' },
+ digest: 'portable-context-digest',
+ },
+ requiresAcceptance: true,
+ },
}
const destination = run({
id: 'destination-run',
receipt: {
...run().receipt,
runId: 'destination-run',
- requested: { ...run().receipt.requested, contextPlanDigest: 'context-digest' },
+ requested: { ...run().receipt.requested, contextPlanDigest: 'portable-plan-digest' },
contextTransfer: {
- planDigest: 'context-digest',
+ planDigest: 'portable-plan-digest',
sourceRunId: 'source-run',
destinationRunId: 'destination-run',
acceptedAt: '2026-08-10T00:00:00.000Z',
@@ -542,6 +896,15 @@ test('context transfer binds boundary, source run, digest, and destination recei
for (const broken of [
{ plan: { ...plan, throughMessageId: 'other' } },
{ plan: { ...plan, context: { ...plan.context, sourceRunId: 'other' } } },
+ {
+ plan: {
+ ...plan,
+ portableContextPlan: {
+ ...plan.portableContextPlan,
+ source: { source: { runId: 'other', messageId: 'message-1' } },
+ },
+ },
+ },
{
destinationRun: run({
id: 'destination-run',
@@ -557,7 +920,7 @@ test('context transfer binds boundary, source run, digest, and destination recei
plan: broken.plan ?? plan,
destinationRun: broken.destinationRun ?? destination,
}),
- /message|context|boundary/u,
+ /message|context|boundary|source/u,
)
}
})
@@ -577,6 +940,43 @@ test('release operations reject reused run IDs and redact bridge bearers', () =>
assert.equal(withoutBridgeSecrets({ BRIDGE_BEARER: secret }).BRIDGE_BEARER, undefined)
})
+test('failed release operations cancel active work and await RPC exit', async () => {
+ const sent = []
+ const acknowledgement = {
+ type: 'ack',
+ requestId: 'interactive-failure-shutdown-pi-test',
+ command: 'shutdown',
+ revision: 7,
+ }
+ const session = {
+ send(request) {
+ sent.push(request)
+ },
+ async waitFor(label, predicate, timeoutMs) {
+ assert.equal(label, 'failed operation cancellation acknowledgement')
+ assert.equal(timeoutMs, 2_000)
+ assert.equal(predicate(acknowledgement), true)
+ return acknowledgement
+ },
+ async waitForExit(label, timeoutMs) {
+ assert.equal(label, 'failed operation cancellation shutdown')
+ assert.equal(timeoutMs, 2_000)
+ return { code: 0, signal: null }
+ },
+ }
+ const result = { targetKey: 'pi-test', requests: [] }
+
+ const receipt = await cancelFailedTarget(session, result, {
+ operationPrefix: 'interactive',
+ timeoutMs: 2_000,
+ })
+
+ assert.deepEqual(sent, result.requests)
+ assert.deepEqual(sent[0]?.params, { mode: 'cancel' })
+ assert.equal(receipt.response.command, 'shutdown')
+ assert.deepEqual(receipt.exit, { code: 0, signal: null })
+})
+
test('started CLI Bridge keeps local subscription settings but strips Braid live credentials', () => {
const environment = {
PATH: '/usr/bin',
diff --git a/scripts/live-bridge/release-proofs.mjs b/scripts/live-bridge/release-proofs.mjs
index 5ebdcc2..49a33c9 100644
--- a/scripts/live-bridge/release-proofs.mjs
+++ b/scripts/live-bridge/release-proofs.mjs
@@ -24,6 +24,38 @@ function targetForHarness(targets, harness) {
return (targets ?? []).find((target) => target.definition.backend === harness)
}
+function capabilitiesForTarget(capabilitiesByBackend, target) {
+ return target === undefined ? undefined : capabilitiesByBackend?.[target.definition.backend]
+}
+
+function interactionTarget(targets, capabilitiesByBackend) {
+ return (targets ?? []).find(
+ (target) => capabilitiesForTarget(capabilitiesByBackend, target)?.interactions !== undefined,
+ )
+}
+
+function observedCommittedSequence(target, targetRecords) {
+ const record = (targetRecords ?? []).find(
+ (candidate) =>
+ candidate?.status === 'passed' &&
+ candidate?.targetProof?.key === target?.key &&
+ candidate?.targetProof?.route === target?.modelId,
+ )
+ const sequence = record?.normal?.run?.cursorCommittedSequence
+ return Number.isSafeInteger(sequence) && sequence > 0 ? sequence : 0
+}
+
+/** Select the runner that has already proved the richest incremental delivery. */
+export function selectRestartTarget(targets, targetRecords) {
+ return (targets ?? []).reduce((selected, candidate) => {
+ if (selected === undefined) return candidate
+ return observedCommittedSequence(candidate, targetRecords) >
+ observedCommittedSequence(selected, targetRecords)
+ ? candidate
+ : selected
+ }, undefined)
+}
+
function proofTarget(target, operationResult) {
const proof = operationResult?.targetProof
if (
@@ -69,7 +101,13 @@ function passedProof(requirementId, operation, target, operationResult, targetRe
'LIVE_RELEASE_OPERATION_EVIDENCE_MISSING',
`${operation} did not return a passed packed operation receipt`,
exitCodes.failed,
- { requirementId, operation },
+ {
+ requirementId,
+ operation,
+ status: operationResult?.status,
+ error: operationResult?.error,
+ receipt: operationResult?.operationReceipt,
+ },
)
}
const descriptor = proofTarget(target, operationResult)
@@ -141,6 +179,31 @@ function operationFailure(requirementId, operation, target, error) {
}
}
+function operationResultFailure(requirementId, operation, target, result) {
+ const missing = errorEvidence(
+ new LiveBridgeError(
+ 'LIVE_RELEASE_OPERATION_EVIDENCE_MISSING',
+ `${operation} returned no failure evidence`,
+ exitCodes.failed,
+ { requirementId, operation },
+ ),
+ )
+ return evidenceValue({
+ requirementId,
+ operation,
+ target: {
+ key: target.key,
+ modelId: target.modelId,
+ harness: target.definition.backend,
+ },
+ status: result?.status === 'unavailable' ? 'unavailable' : 'failed',
+ error: result?.error ?? missing,
+ ...(typeof result?.stderr === 'string' && result.stderr.length > 0
+ ? { stderr: result.stderr }
+ : {}),
+ })
+}
+
function missingTarget(requirementId, operation, harness, targets) {
return operationFailure(
requirementId,
@@ -167,7 +230,7 @@ export async function executeReleaseProofs({
installRoot,
root,
endpoint,
- providerCapabilities,
+ providerCapabilitiesByBackend = {},
targets = [],
targetRecords = [],
token,
@@ -212,6 +275,12 @@ export async function executeReleaseProofs({
}
try {
const operationResult = await action(target)
+ if (operationResult?.status !== 'passed') {
+ const failure = operationResultFailure(requirementId, operation, target, operationResult)
+ releaseOperations.push(failure)
+ failures.push(failure)
+ return
+ }
const proof = passedProof(
requirementId,
operation,
@@ -249,7 +318,7 @@ export async function executeReleaseProofs({
installRoot,
root,
endpoint,
- providerCapabilities,
+ capabilitiesForTarget(providerCapabilitiesByBackend, target),
target,
token,
timeoutMs,
@@ -272,7 +341,7 @@ export async function executeReleaseProofs({
installRoot,
root,
endpoint,
- providerCapabilities,
+ capabilitiesForTarget(providerCapabilitiesByBackend, piTarget),
piTarget,
target,
token,
@@ -280,7 +349,7 @@ export async function executeReleaseProofs({
),
)
- const interactiveTarget = targets[0]
+ const interactiveTarget = interactionTarget(targets, providerCapabilitiesByBackend)
await execute(
REQUIREMENTS.interactive,
liveReleaseProofOperations.interactive,
@@ -291,21 +360,21 @@ export async function executeReleaseProofs({
installRoot,
root,
endpoint,
- providerCapabilities,
+ capabilitiesForTarget(providerCapabilitiesByBackend, target),
target,
token,
timeoutMs,
),
)
- const restartTarget = targets[0]
+ const restartTarget = selectRestartTarget(targets, targetRecords)
await execute(REQUIREMENTS.restart, liveReleaseProofOperations.restart, restartTarget, (target) =>
executeRestartReconciliation(
binary,
installRoot,
root,
endpoint,
- providerCapabilities,
+ capabilitiesForTarget(providerCapabilitiesByBackend, target),
target,
token,
timeoutMs,
@@ -319,7 +388,7 @@ export async function executeReleaseProofs({
installRoot,
root,
endpoint,
- providerCapabilities,
+ capabilitiesForTarget(providerCapabilitiesByBackend, candidate),
candidate,
token,
timeoutMs,
diff --git a/scripts/live-bridge/target-actions.mjs b/scripts/live-bridge/target-actions.mjs
index a3c1ac1..4778a08 100644
--- a/scripts/live-bridge/target-actions.mjs
+++ b/scripts/live-bridge/target-actions.mjs
@@ -1,4 +1,4 @@
-import { exitCodes, livePrompts } from './constants.mjs'
+import { exitCodes, liveMarkers, livePrompts } from './constants.mjs'
import { LiveBridgeError } from './errors.mjs'
import { sleep } from './process.mjs'
import {
@@ -10,7 +10,9 @@ import {
interactionFromResponse,
requestBase,
responseForRequest,
+ retainedCancellationAdvertised,
runFromState,
+ runWithAdmissionReceipt,
semanticCommandStatus,
stateForRequest,
stateForRun,
@@ -83,7 +85,7 @@ export async function runNormalTurn(
{ operationPrefix = 'live', prompt, marker } = {},
) {
const normalPrompt = prompt ?? livePrompts.normal(target.key)
- const expectedMarker = marker ?? `LIVE_BRAID_${target.key.toUpperCase().replaceAll('.', '_')}_OK`
+ const expectedMarker = marker ?? liveMarkers.normal(target.key)
const send = {
...requestBase(
requestIdFor(operationPrefix, 'send', target.key),
@@ -131,7 +133,10 @@ export async function runNormalTurn(
(response) => response.requestId === send.requestId && stateForRun(response, runId),
timeoutMs,
)
- const finalRun = runFromState(terminal.state, runId)
+ const finalRun = runWithAdmissionReceipt(
+ runFromState(terminal.state, runId),
+ sendResponse.admission,
+ )
const finalMessage = terminalMessage(terminal.state, runId)
const markerObserved = exactMarker(finalMessage?.text, expectedMarker)
result.normal = {
@@ -143,6 +148,7 @@ export async function runNormalTurn(
marker: expectedMarker,
markerObserved,
prompt: normalPrompt,
+ lastError: terminal.state?.lastError ?? null,
}
if (
finalRun?.status !== 'completed' ||
@@ -150,13 +156,20 @@ export async function runNormalTurn(
finalMessage.text.trim() === '' ||
!markerObserved
) {
+ const providerFailed = finalRun?.status === 'failed'
throw new LiveBridgeError(
- markerObserved ? 'LIVE_FINAL_OUTPUT_MISSING' : 'LIVE_FINAL_OUTPUT_MISMATCH',
- markerObserved
- ? `Packed Braid ${target.definition.label} turn did not produce a completed assistant message`
- : `Packed Braid ${target.definition.label} turn completed without the expected response marker`,
+ providerFailed
+ ? 'LIVE_PROVIDER_RUN_FAILED'
+ : markerObserved
+ ? 'LIVE_FINAL_OUTPUT_MISSING'
+ : 'LIVE_FINAL_OUTPUT_MISMATCH',
+ providerFailed
+ ? `Packed Braid ${target.definition.label} reported a failed provider run`
+ : markerObserved
+ ? `Packed Braid ${target.definition.label} turn did not produce a completed assistant message`
+ : `Packed Braid ${target.definition.label} turn completed without the expected response marker`,
exitCodes.failed,
- { run: finalRun, assistant: finalMessage },
+ { run: finalRun, assistant: finalMessage, lastError: terminal.state?.lastError ?? null },
)
}
return { finalRun, runId, terminal }
@@ -173,9 +186,9 @@ export async function verifyCancel(
const advertisedByNormalAdmission =
result.send?.admission?.capabilities?.controls?.cancel === true
const advertisedByNormalRun = finalRun?.capabilities?.controls?.cancel === true
- const advertisedByProvider = capabilityAdvertised(providerCapabilities.controls?.cancel)
+ const advertisedByProvider = retainedCancellationAdvertised(providerCapabilities)
if (!advertisedByProvider && !advertisedByNormalAdmission && !advertisedByNormalRun) {
- const availability = capabilityAvailability(providerCapabilities.controls?.cancel, false)
+ const availability = capabilityAvailability(advertisedByProvider, false)
const cancel = {
...requestBase(
requestIdFor(operationPrefix, 'cancel', target.key),
@@ -233,10 +246,7 @@ export async function verifyCancel(
return
}
const advertisedByRun = cancelSendResponse.admission?.capabilities?.controls?.cancel === true
- const availability = capabilityAvailability(
- providerCapabilities.controls?.cancel,
- advertisedByRun,
- )
+ const availability = capabilityAvailability(advertisedByProvider, advertisedByRun)
result.cancel.advertisedByProvider = availability.advertisedByProvider
result.cancel.advertisedByNormalAdmission = advertisedByNormalAdmission
result.cancel.advertisedByNormalRun = advertisedByNormalRun
@@ -361,7 +371,7 @@ export function assertTargetSemantics(result, { strict = false } = {}) {
['interaction', result.interaction],
]) {
assertSemanticOutcome(name, capability.status, capability.advertised, { capability })
- if (strict && capability.status !== 'verified')
+ if (strict && name === 'cancel' && capability.status !== 'verified')
throw new LiveBridgeError(
'LIVE_RELEASE_REQUIRED_PROOF_MISSING',
`${name} did not produce a verified live proof`,
@@ -403,3 +413,31 @@ export async function finishTarget(session, result, { operationPrefix = 'live' }
),
)
}
+
+export async function cancelFailedTarget(session, result, { operationPrefix, timeoutMs = 30_000 }) {
+ const shutdown = {
+ ...requestBase(
+ requestIdFor(operationPrefix, 'failure-shutdown', result.targetKey),
+ 'shutdown',
+ operationIdFor(operationPrefix, 'failure-shutdown', result.targetKey),
+ ),
+ params: { mode: 'cancel' },
+ }
+ result.requests.push(evidenceValue(shutdown))
+ session.send(shutdown)
+ const response = await session.waitFor(
+ 'failed operation cancellation acknowledgement',
+ responseForRequest(shutdown.requestId),
+ timeoutMs,
+ )
+ if (response.type !== 'ack') {
+ throw new LiveBridgeError(
+ 'LIVE_RELEASE_FAILURE_CLEANUP_REJECTED',
+ 'Packed Braid rejected cancellation cleanup for a failed release operation',
+ exitCodes.failed,
+ { response },
+ )
+ }
+ const exit = await session.waitForExit('failed operation cancellation shutdown', timeoutMs)
+ return evidenceValue({ response, exit })
+}
diff --git a/scripts/live-bridge/target-flow.mjs b/scripts/live-bridge/target-flow.mjs
index 7c1aa36..b794d7b 100644
--- a/scripts/live-bridge/target-flow.mjs
+++ b/scripts/live-bridge/target-flow.mjs
@@ -15,8 +15,10 @@ import {
requestBase,
responseForRequest,
runFromState,
+ stateForRequest,
stateForRun,
} from './protocol.mjs'
+import { closeOwnedProviderSessions } from './provider-session-cleanup.mjs'
import {
evidenceValue,
redactString,
@@ -30,6 +32,7 @@ import {
} from './release-proof-validation.mjs'
import {
assertTargetSemantics,
+ cancelFailedTarget,
finishTarget,
initializeTarget,
runNormalTurn,
@@ -119,7 +122,9 @@ export async function executeTarget(
provider: targetProof.provider,
}
result.runIds = assertUniqueRunIds(
- [runId, result.cancel?.runId, result.interaction?.runId],
+ [runId, result.cancel?.runId, result.interaction?.runId].filter(
+ (candidate) => typeof candidate === 'string',
+ ),
new Set(),
operation,
)
@@ -160,6 +165,7 @@ export async function executeTarget(
? 'unavailable'
: 'failed'
} finally {
+ const providerResponses = session?.responses ?? []
const processResult =
session === undefined
? { started: false }
@@ -187,6 +193,7 @@ export async function executeTarget(
),
)
}
+ await recordProviderSessionCleanup(result, endpoint, providerResponses, token, timeoutMs)
if (credentialInstallation !== undefined) {
try {
result.credentialLifecycle = evidenceValue(await credentialInstallation.cleanup())
@@ -216,6 +223,7 @@ export async function executeTarget(
function targetResult(config, target, providerCapabilities, credential, operation) {
return {
+ operationNamespace: config.operationNamespace,
targetKey: target.key,
workspace: config.workspace,
label: target.definition.label,
@@ -375,7 +383,18 @@ export async function executeNamedOperation({
normalizedError.exitCode === exitCodes.unavailable
? 'unavailable'
: 'failed'
+ if (session !== undefined) {
+ try {
+ result.failureCleanup = await cancelFailedTarget(session, result, {
+ operationPrefix,
+ timeoutMs: Math.min(timeoutMs, 30_000),
+ })
+ } catch (cleanupError) {
+ result.failureCleanupError = errorEvidence(cleanupError)
+ }
+ }
} finally {
+ const providerResponses = session?.responses ?? []
const processResult =
session === undefined
? { started: false }
@@ -399,6 +418,7 @@ export async function executeNamedOperation({
),
)
}
+ await recordProviderSessionCleanup(result, endpoint, providerResponses, token, timeoutMs)
if (credentialInstallation !== undefined) {
try {
const lifecycle = evidenceValue(await credentialInstallation.cleanup())
@@ -438,8 +458,27 @@ export async function executeNamedOperation({
return evidenceValue(result)
}
+async function recordProviderSessionCleanup(result, endpoint, responses, token, timeoutMs) {
+ try {
+ result.providerSessionCleanup = evidenceValue(
+ await closeOwnedProviderSessions({ endpoint, responses, token, timeoutMs }),
+ )
+ } catch (error) {
+ result.providerSessionCleanup = { complete: false, error: errorEvidence(error) }
+ result.status = 'failed'
+ if (result.error === undefined) result.error = errorEvidence(error)
+ }
+}
+
export function operationRequest(result, prefix, action, command, params, suffix) {
- const stem = `${prefix}-${action}${suffix === undefined ? '' : `-${suffix}`}-${result.targetKey}`
+ if (typeof result.operationNamespace !== 'string' || result.operationNamespace.length === 0) {
+ throw new LiveBridgeError(
+ 'LIVE_RELEASE_OPERATION_NAMESPACE_MISSING',
+ 'The release operation has no stable execution namespace',
+ exitCodes.failed,
+ )
+ }
+ const stem = `${prefix}-${result.operationNamespace}-${action}${suffix === undefined ? '' : `-${suffix}`}-${result.targetKey}`
return {
...requestBase(stem, command, command === 'get_state' ? undefined : `op-${stem}`),
params,
@@ -485,11 +524,11 @@ export async function operationState(session, result, prefix, suffix, timeoutMs)
{ projection: 'full' },
suffix,
)
- const response = await sendOperationRequest(
- session,
- result,
- request,
+ result.requests.push(evidenceValue(request))
+ session.send(request)
+ const response = await session.waitFor(
'release operation state',
+ stateForRequest(request.requestId),
Math.min(timeoutMs, 15_000),
)
if (response.type !== 'state') {
diff --git a/scripts/live-required.test.mjs b/scripts/live-required.test.mjs
index 64fbcf3..8193831 100644
--- a/scripts/live-required.test.mjs
+++ b/scripts/live-required.test.mjs
@@ -25,8 +25,17 @@ import {
configEvidence,
initializedSession,
prepareProductionWorkspace,
+ profileFor,
runHeadlessTurn,
} from './live-required/headless.mjs'
+import {
+ createSupervisorProofFixture,
+ runSupervisorFlow,
+ supervisorConnection,
+ supervisorProfile,
+ supervisorTask,
+ supervisorWorkerEnvironment,
+} from './live-required/supervisor.mjs'
import { runMatrixAdapter, runSandbox } from './live-required/tangle.mjs'
import { executionLatencyDistribution } from './live-required/tangle-sandbox-braid-execution-soak.mjs'
import {
@@ -42,6 +51,10 @@ import {
runStressProof,
} from './live-required/tangle-sandbox-stress.mjs'
import { runWorker } from './live-required/tangle-sandbox-worker.mjs'
+import { sandboxConfiguration as workspaceSandboxConfiguration } from './live-required/tangle-workspace-proof.mjs'
+import './live-required/tangle-sandbox-braid-multirun.test.mjs'
+import { MULTIRUN_REQUIRED_PHASES } from './live-required/multirun-contract.mjs'
+import { readLiveTangleProof } from './release/live-tangle-proof.mjs'
const repository = resolve(new URL('../', import.meta.url).pathname)
@@ -78,6 +91,105 @@ test('config evidence accepts connections without optional provider options', ()
)
})
+test('live model-provider resolution preserves qualified and unqualified model ids', () => {
+ const options = {
+ prefix: 'BRAID_TANGLE',
+ kind: 'tangle-inference',
+ fallbackRunner: 'cli-base',
+ fallbackModelProvider: 'tangle-router',
+ providerNames: ['BRAID_TANGLE_PROVIDER'],
+ }
+ const qualified = connectionConfiguration(
+ {
+ BRAID_TANGLE_ENDPOINT: 'https://router.tangle.tools',
+ BRAID_TANGLE_MODEL: 'zai/glm-5.3',
+ BRAID_TANGLE_CREDENTIAL_REF: 'credential-ref-model-provider-qualified',
+ },
+ options,
+ )
+ assert.equal(qualified.model, 'zai/glm-5.3')
+ assert.equal(qualified.modelProvider, 'tangle-router')
+
+ const unqualified = connectionConfiguration(
+ {
+ BRAID_TANGLE_ENDPOINT: 'https://router.tangle.tools',
+ BRAID_TANGLE_MODEL: 'glm-5.3',
+ BRAID_TANGLE_CREDENTIAL_REF: 'credential-ref-model-provider-unqualified',
+ },
+ options,
+ )
+ assert.equal(unqualified.model, 'glm-5.3')
+ assert.equal(unqualified.modelProvider, 'tangle-router')
+
+ const explicit = connectionConfiguration(
+ {
+ BRAID_TANGLE_ENDPOINT: 'https://router.tangle.tools',
+ BRAID_TANGLE_MODEL: 'zai/glm-5.3',
+ BRAID_TANGLE_MODEL_PROVIDER: 'custom-router',
+ BRAID_TANGLE_CREDENTIAL_REF: 'credential-ref-model-provider-explicit',
+ },
+ options,
+ )
+ assert.equal(explicit.model, 'zai/glm-5.3')
+ assert.equal(explicit.modelProvider, 'custom-router')
+
+ const currentAlias = connectionConfiguration(
+ {
+ BRAID_TANGLE_ENDPOINT: 'https://router.tangle.tools',
+ BRAID_TANGLE_MODEL: 'glm-5.3',
+ BRAID_TANGLE_PROVIDER: 'legacy-router-alias',
+ BRAID_TANGLE_CREDENTIAL_REF: 'credential-ref-model-provider-alias',
+ },
+ options,
+ )
+ assert.equal(currentAlias.model, 'glm-5.3')
+ assert.equal(currentAlias.modelProvider, 'legacy-router-alias')
+
+ const sandboxDefault = workspaceSandboxConfiguration({
+ BRAID_TANGLE_SANDBOX_CREDENTIAL_REF: 'credential-ref-model-provider-sandbox-default',
+ })
+ assert.equal(sandboxDefault.model, 'tangle-router/glm-5.3')
+ assert.equal(sandboxDefault.modelProvider, 'tangle-router')
+})
+
+test('generic unqualified live profiles fail closed without a model provider', () => {
+ assert.throws(
+ () => profileFor({ kind: 'generic', model: 'glm-5.3', runner: 'pi' }),
+ (error) => {
+ assert.equal(error.code, 'PROTECTED_MODEL_PROVIDER_REQUIRED')
+ return true
+ },
+ )
+})
+
+test('live profile and evidence preserve the full portable model id', () => {
+ const profile = profileFor({
+ kind: 'tangle-sandbox',
+ model: 'zai/glm-5.3',
+ runner: 'opencode',
+ modelProvider: 'tangle-router',
+ })
+ assert.equal(profile.model.default, 'zai/glm-5.3')
+ assert.equal(profile.model.provider, 'tangle-router')
+ assert.deepEqual(
+ configEvidence({
+ endpoint: { scheme: 'https', host: 'sandbox.tangle.tools' },
+ connection: { id: 'connection-model-provider', kind: 'tangle-sandbox' },
+ credentialConfigured: true,
+ profile,
+ }),
+ {
+ endpoint: { scheme: 'https', host: 'sandbox.tangle.tools' },
+ connectionId: 'connection-model-provider',
+ connectionKind: 'tangle-sandbox',
+ credentialConfigured: true,
+ model: 'zai/glm-5.3',
+ modelProvider: 'tangle-router',
+ runner: 'opencode',
+ },
+ )
+})
+
function protectedEnvironment() {
const environment = { ...process.env }
for (const name of [
@@ -90,6 +202,8 @@ function protectedEnvironment() {
'BRAID_ANALYSIS_BEARER',
'BRAID_TANGLE_ENDPOINT',
'BRAID_TANGLE_MODEL',
+ 'BRAID_TANGLE_MODEL_PROVIDER',
+ 'BRAID_TANGLE_INFERENCE_MODEL_PROVIDER',
'BRAID_TANGLE_RUNNER',
'BRAID_TANGLE_CREDENTIAL_REF',
'BRAID_TANGLE_AUTH',
@@ -97,6 +211,7 @@ function protectedEnvironment() {
'BRAID_TANGLE_BEARER',
'BRAID_TANGLE_SANDBOX_ENDPOINT',
'BRAID_TANGLE_SANDBOX_MODEL',
+ 'BRAID_TANGLE_SANDBOX_MODEL_PROVIDER',
'BRAID_TANGLE_SANDBOX_RUNNER',
'BRAID_TANGLE_SANDBOX_CREDENTIAL_REF',
'BRAID_TANGLE_SANDBOX_AUTH',
@@ -106,7 +221,21 @@ function protectedEnvironment() {
'BRAID_SUPERVISOR_ROOT',
'BRAID_SUPERVISOR_ID',
'BRAID_SUPERVISOR_WORKER',
+ 'BRAID_SUPERVISOR_WORKSPACE',
+ 'BRAID_SUPERVISOR_ENDPOINT',
+ 'BRAID_SUPERVISOR_CONNECTION_ID',
+ 'BRAID_SUPERVISOR_CONNECTION_KIND',
+ 'BRAID_SUPERVISOR_CREDENTIAL_CONFIGURED',
+ 'BRAID_SUPERVISOR_API_KEY',
+ 'BRAID_SUPERVISOR_AUTH',
+ 'BRAID_SUPERVISOR_BEARER',
+ 'BRAID_SUPERVISOR_MODEL',
+ 'BRAID_SUPERVISOR_MODEL_PROVIDER',
+ 'BRAID_SUPERVISOR_RUNNER',
+ 'BRAID_SUPERVISOR_TASK',
+ 'BRAID_SUPERVISOR_WORKER_NAME',
'BRAID_SUPERVISOR_LIVE_ADAPTER',
+ 'TANGLE_API_KEY',
])
delete environment[name]
return environment
@@ -123,6 +252,186 @@ const TANGLE_SANDBOX_CHECKS = [
'exact-resource-cleanup',
]
+function validMultirunProof() {
+ const runs = [
+ {
+ runId: 'multirun-a',
+ conversationId: 'conversation-a',
+ branchId: 'branch-a',
+ eventCount: 2,
+ eventIdsUnique: true,
+ localEnvironmentId: 'local-environment-a',
+ providerEnvironmentId: 'environment-a',
+ identifiers: [
+ { kind: 'provider-environment', id: 'environment-a' },
+ { kind: 'provider-session', id: 'session-a' },
+ { kind: 'provider-execution', id: 'execution-a' },
+ { kind: 'provider-run', id: 'multirun-a' },
+ ],
+ status: 'completed',
+ },
+ {
+ runId: 'multirun-b',
+ conversationId: 'conversation-b',
+ branchId: 'branch-b',
+ eventCount: 2,
+ eventIdsUnique: true,
+ localEnvironmentId: 'local-environment-b',
+ providerEnvironmentId: 'environment-b',
+ identifiers: [
+ { kind: 'provider-environment', id: 'environment-b' },
+ { kind: 'provider-session', id: 'session-b' },
+ { kind: 'provider-execution', id: 'execution-b' },
+ { kind: 'provider-run', id: 'multirun-b' },
+ ],
+ status: 'cancelled',
+ },
+ ]
+ return {
+ schemaVersion: 'braid.live-required.multirun.v2',
+ status: 'passed',
+ provider: {
+ endpoint: 'https://sandbox.tangle.tools',
+ runner: 'opencode',
+ model: 'tangle-router/glm-5.2',
+ lifecycle: 'retained',
+ credentialConfigured: true,
+ },
+ conversations: {
+ first: { conversationId: 'conversation-a', branchId: 'branch-a' },
+ second: { conversationId: 'conversation-b', branchId: 'branch-b' },
+ },
+ runs,
+ overlap: {
+ activeRunCount: 2,
+ streamEventCounts: runs.map(({ runId, eventCount }) => ({ runId, count: eventCount })),
+ workStripCount: 2,
+ renderedWorkStripCount: 2,
+ independentConversations: true,
+ },
+ focus: {
+ beforeRunId: 'multirun-b',
+ firstSwitchRunId: 'multirun-a',
+ secondSwitchRunId: 'multirun-b',
+ firstSwitchPreservedStatuses: true,
+ secondSwitchPreservedStatuses: true,
+ },
+ cancellation: {
+ dispatch: {
+ eventKind: 'run.control.requested',
+ control: 'cancel',
+ runId: 'multirun-b',
+ operationId: 'operation-cancel-b',
+ sequence: 3,
+ },
+ targetRunId: 'multirun-b',
+ targetStatus: 'cancelled',
+ unaffectedRunId: 'multirun-a',
+ unaffectedStatusAtAck: 'streaming',
+ unaffectedFinalStatus: 'completed',
+ },
+ replay: {
+ restartedRunCount: 2,
+ noDuplicateEventIds: true,
+ eventSetsStable: true,
+ },
+ cleanup: {
+ exact: true,
+ errors: [],
+ resources: [
+ {
+ runId: 'multirun-a',
+ providerEnvironmentId: 'environment-a',
+ id: 'resource-a',
+ confirmed: true,
+ },
+ {
+ runId: 'multirun-b',
+ providerEnvironmentId: 'environment-b',
+ id: 'resource-b',
+ confirmed: true,
+ },
+ ],
+ activeResourceDelta: 0,
+ accountStable: true,
+ workspace: { protectedStoreClean: true, temporaryRootRemoved: true },
+ },
+ error: null,
+ phases: Object.fromEntries(
+ MULTIRUN_REQUIRED_PHASES.map((name) => [name, { status: 'passed' }]),
+ ),
+ }
+}
+
+function passingTangleProcess() {
+ const measurements = Array.from({ length: 5 }, (_, index) => ({
+ kind: 'scalar',
+ name: `LIVE-${String(index + 6).padStart(2, '0')}`,
+ unit: 'verified-flow',
+ value: 1,
+ }))
+ const structuredStdout = Buffer.from(
+ `BRAID_RELEASE_RESULT_JSON={"status":"passed"}\nBRAID_RELEASE_MEASUREMENTS_JSON=${JSON.stringify({ measurements })}\n`,
+ )
+ return {
+ exitCode: 0,
+ signal: null,
+ timedOut: false,
+ spawnError: null,
+ cleanupConfirmed: true,
+ durationMs: 1,
+ stdout: { redactionFailClosed: false, bytes: structuredStdout },
+ stderr: { redactionFailClosed: false, bytes: Buffer.alloc(0) },
+ structuredStdout: { bytes: structuredStdout, error: null },
+ }
+}
+
+test('LIVE-07 release artifact validation requires complete multirun evidence and exact cleanup', async () => {
+ const artifactRoot = await mkdtemp(join(tmpdir(), 'braid-live-tangle-proof-'))
+ const artifactPath = join(artifactRoot, 'live', 'tangle', 'evidence.json')
+ try {
+ await mkdir(join(artifactRoot, 'live', 'tangle'), { recursive: true })
+ await writeFile(artifactPath, `${JSON.stringify(validMultirunProof())}\n`)
+ const passed = await readLiveTangleProof({
+ artifactRoot,
+ checkId: 'live-tangle',
+ processResult: passingTangleProcess(),
+ })
+ assert.equal(passed.result, 'passed')
+
+ await rm(artifactPath)
+ const missing = await readLiveTangleProof({
+ artifactRoot,
+ checkId: 'live-tangle',
+ processResult: passingTangleProcess(),
+ })
+ assert.equal(missing.result, 'uncaptured')
+ assert.match(missing.reason, /artifact is missing/u)
+
+ for (const proof of [
+ { ...validMultirunProof(), status: 'failed' },
+ {
+ ...validMultirunProof(),
+ cleanup: { ...validMultirunProof().cleanup, exact: false },
+ },
+ {
+ ...validMultirunProof(),
+ cancellation: { ...validMultirunProof().cancellation, dispatch: null },
+ },
+ ]) {
+ await writeFile(artifactPath, `${JSON.stringify(proof)}\n`)
+ const invalid = await readLiveTangleProof({
+ artifactRoot,
+ checkId: 'live-tangle',
+ processResult: passingTangleProcess(),
+ })
+ assert.equal(invalid.result, 'uncaptured')
+ }
+ } finally {
+ await rm(artifactRoot, { recursive: true, force: true })
+ }
+})
+
function validTangleSandboxReceiptInput(overrides = {}) {
const cloudControl = {
provider: 'tangle-sandbox',
@@ -144,6 +453,7 @@ function validTangleSandboxReceiptInput(overrides = {}) {
connectionKind: 'tangle-sandbox',
credentialConfigured: true,
model: 'glm-5.2',
+ modelProvider: 'tangle-router',
runner: 'pi',
},
runIds: ['local-run-1', 'local-run-follow-up', 'local-run-cancelled'],
@@ -163,52 +473,13 @@ function validTangleSandboxReceiptInput(overrides = {}) {
phase: 'completed',
cloudControl,
usage: { inputTokens: 12, outputTokens: 8, costUsd: 0.001 },
+ multirun: validMultirunProof(),
},
checks: TANGLE_SANDBOX_CHECKS,
...overrides,
}
}
-function expectedFailureOutput(scope, environment, expectedStatus = 1) {
- let failure
- try {
- execFileSync(process.execPath, ['scripts/live-required.mjs', scope], {
- cwd: repository,
- env: environment,
- encoding: 'utf8',
- stdio: ['ignore', 'pipe', 'pipe'],
- })
- } catch (error) {
- failure = error
- }
- assert(failure, `${scope} unexpectedly passed`)
- assert.equal(failure.status, expectedStatus)
- return `${failure.stdout ?? ''}${failure.stderr ?? ''}`
-}
-
-async function createSupervisorFixture(root) {
- const supervisorId = 'supervisor-live-required'
- const workerId = 'worker-live-required'
- const runDir = join(root, '.agent', 'supervisor', supervisorId)
- await mkdir(runDir, { recursive: true })
- await writeFile(
- join(runDir, 'state.json'),
- `${JSON.stringify({
- id: supervisorId,
- status: 'running',
- task: 'live-required test',
- workspaceDir: root,
- budget: 1,
- })}\n`,
- )
- const now = '2026-08-10T00:00:00.000Z'
- await writeFile(
- join(runDir, 'spawn-journal.jsonl'),
- `${JSON.stringify({ kind: 'spawned', id: supervisorId, label: 'root', at: now })}\n${JSON.stringify({ kind: 'spawned', id: workerId, label: workerId, parent: supervisorId, at: now })}\n`,
- )
- return { supervisorId, workerId }
-}
-
test('protected live scopes emit unavailable release evidence without credentials', () => {
for (const scope of ['live-tangle', 'live-supervisor', 'live-analysis', 'semantic-eval']) {
assert.throws(
@@ -240,6 +511,123 @@ test('protected live scopes emit unavailable release evidence without credential
}
})
+test('live wrappers preserve provider unavailability', () => {
+ const providerError = Object.assign(new Error('provider credential is unavailable'), {
+ unavailable: true,
+ })
+ const normalized = normalizeExternalFailure(providerError, 'live-supervisor', {})
+ assert.equal(normalized.code, 'LIVE_PROTECTED_PATH_UNAVAILABLE')
+ assert.equal(normalized.unavailable, true)
+ assert.equal(normalized.message, 'provider credential is unavailable')
+})
+
+test('live wrappers retain redacted nested external failure causes', () => {
+ const secret = 'live-nested-failure-secret'
+ const failure = new AggregateError(
+ [
+ new Error(`provider request failed with ${secret}`),
+ new AggregateError([new Error('exact cloud cleanup failed')], 'cleanup incomplete'),
+ ],
+ 'interactive proof failed',
+ )
+ const normalized = normalizeExternalFailure(failure, 'live-tangle', {
+ TANGLE_API_KEY: secret,
+ })
+ assert.match(normalized.message, /interactive proof failed/u)
+ assert.match(normalized.message, /provider request failed with \[REDACTED\]/u)
+ assert.match(normalized.message, /cleanup incomplete/u)
+ assert.match(normalized.message, /exact cloud cleanup failed/u)
+ assert.doesNotMatch(normalized.message, new RegExp(secret, 'u'))
+})
+
+test('LIVE-11 composes a complete canonical profile by default', () => {
+ assert.deepEqual(supervisorProfile({}), {
+ name: 'Braid live supervisor',
+ description: 'Protected LIVE-11 supervisor profile',
+ version: '1.0.0',
+ harness: 'opencode',
+ model: {
+ provider: 'tangle-router',
+ default: 'tangle-router/glm-5.3',
+ reasoningEffort: 'none',
+ },
+ prompt: {
+ instructions: ['Remain available for the protected LIVE-11 supervisor proof.'],
+ },
+ })
+ assert.deepEqual(
+ supervisorProfile({
+ BRAID_SUPERVISOR_MODEL: 'custom/model',
+ BRAID_SUPERVISOR_MODEL_PROVIDER: 'custom-provider',
+ BRAID_SUPERVISOR_RUNNER: 'pi',
+ }),
+ {
+ name: 'Braid live supervisor',
+ description: 'Protected LIVE-11 supervisor profile',
+ version: '1.0.0',
+ harness: 'pi',
+ model: { provider: 'custom-provider', default: 'custom/model', reasoningEffort: 'none' },
+ prompt: {
+ instructions: ['Remain available for the protected LIVE-11 supervisor proof.'],
+ },
+ },
+ )
+})
+
+test('LIVE-11 resolves caller-owned task, connection, and generic worker input', () => {
+ const environment = {
+ BRAID_SUPERVISOR_TASK: 'Inspect the retained worker workspace',
+ BRAID_SUPERVISOR_ENDPOINT: 'https://sandbox.example/v1',
+ BRAID_SUPERVISOR_API_KEY: 'supervisor-api-key-fixture',
+ BRAID_SUPERVISOR_CONNECTION_KIND: 'tangle-sandbox',
+ BRAID_SUPERVISOR_WORKSPACE: '/tmp/supervisor-fixture-workspace',
+ BRAID_SUPERVISOR_WORKER_NAME: 'retained-worker-fixture',
+ }
+ assert.equal(supervisorTask(environment), 'Inspect the retained worker workspace')
+ assert.deepEqual(supervisorConnection(environment), {
+ endpoint: 'https://sandbox.example/v1',
+ apiKey: 'supervisor-api-key-fixture',
+ kind: 'tangle-sandbox',
+ })
+ assert.deepEqual(supervisorWorkerEnvironment(environment, 'invocation-fixture'), {
+ workspace: { cwd: '/tmp/supervisor-fixture-workspace' },
+ name: 'retained-worker-fixture',
+ metadata: {
+ owner: 'braid-live-supervisor',
+ proof: 'LIVE-11',
+ invocationId: 'invocation-fixture',
+ },
+ })
+})
+
+test('LIVE-11 requires a caller-owned provider credential for a new run', () => {
+ assert.throws(
+ () => supervisorConnection({}),
+ (error) => {
+ assert.equal(error.unavailable, true)
+ assert.equal(error.code, 'PROTECTED_CREDENTIAL_REQUIRED')
+ assert.match(error.message, /BRAID_SUPERVISOR_API_KEY/u)
+ return true
+ },
+ )
+})
+
+function supervisorProvisionInputs(invocationId) {
+ return {
+ task: `fixture supervisor task ${invocationId}`,
+ profile: supervisorProfile({}),
+ connection: {
+ endpoint: 'https://sandbox.example/v1',
+ apiKey: 'fixture-supervisor-api-key',
+ kind: 'tangle-sandbox',
+ },
+ workerEnvironment: {
+ name: `fixture-supervisor-${invocationId}`,
+ metadata: { owner: 'braid-live-supervisor-test', invocationId },
+ },
+ }
+}
+
test('only explicit protected configuration failures remain unavailable', () => {
const unavailable = normalizeExternalFailure(
protectedUnavailable('PROTECTED_CREDENTIAL_REQUIRED', 'credential is missing'),
@@ -355,6 +743,7 @@ test('receipts use a fixed schema and bind to one operation and invocation', ()
connectionKind: 'tangle-sandbox',
credentialConfigured: true,
model: 'glm-5.2',
+ modelProvider: 'tangle-router',
runner: 'pi',
},
runIds: ['run-live-test'],
@@ -374,6 +763,7 @@ test('receipts use a fixed schema and bind to one operation and invocation', ()
checks: ['marker', 'environment-id'],
})
assert.equal(receipt.schema, PUBLIC_EVIDENCE_SCHEMA)
+ assert.equal(receipt.connection.modelProvider, 'tangle-router')
assert.deepEqual(Object.keys(receipt).sort(), [
'checks',
'completedAt',
@@ -396,6 +786,14 @@ test('receipts use a fixed schema and bind to one operation and invocation', ()
),
/outside the public schema/u,
)
+ assert.throws(
+ () =>
+ assertProofReceipt({
+ ...receipt,
+ connection: { ...receipt.connection, modelProvider: 42 },
+ }),
+ /modelProvider must be a non-empty string or null/u,
+ )
assert.throws(
() =>
assertProofReceipt({ ...receipt, invocationId: 'different-invocation' }, { invocationId }),
@@ -488,13 +886,14 @@ test('LIVE-07 wiring carries cloud identity, cleanup proof, and observations int
binary: 'unused-injected-binary',
invocationId: input.invocationId,
stressRunner: async () => cohort,
+ multirunRunner: async () => validMultirunProof(),
})
assert.equal(result.evidence.status, 'passed')
assert.deepEqual(result.evidence.facts.cloudControl, input.facts.cloudControl)
assert.equal(result.evidence.facts.exactResource, true)
assert.equal(result.evidence.facts.activeResourceDelta, 0)
- assert.equal(result.evidence.observations.detailed, true)
+ assert.equal(result.evidence.observations.stress.detailed, true)
})
test('passed Tangle Sandbox receipts reject null or forged acceptance facts', () => {
@@ -651,72 +1050,521 @@ test('nested credential fields and error text are redacted before public output'
assert.match(nestedMessage, /\[REDACTED\]/u)
})
+test('public JSON redaction preserves field names', () => {
+ const output = safeJson(
+ {
+ status: 'completed',
+ startedAt: '2026-08-28T00:00:00.000Z',
+ completedAt: '2026-08-28T00:00:01.000Z',
+ },
+ { TANGLE_API_KEY: 'completed' },
+ )
+ const parsed = JSON.parse(output)
+ assert.equal(parsed.status, '[REDACTED]')
+ assert.equal(parsed.startedAt, '2026-08-28T00:00:00.000Z')
+ assert.equal(parsed.completedAt, '2026-08-28T00:00:01.000Z')
+})
+
test('retained Sandbox error details are safe for direct proof output', () => {
const secret = 'retained-sandbox-error-secret-canary-4f8c'
+ const networkError = Object.assign(new Error(`transport failed ${secret}`), {
+ name: 'NetworkError',
+ code: 'NETWORK_ERROR',
+ status: 503,
+ })
const rawDetails = errorDetails(
- new MissingIntegrationError('provider rejected the request', {
- authorization: secret,
- nested: { token: secret },
- }),
+ Object.assign(
+ new MissingIntegrationError('provider rejected the request', {
+ authorization: secret,
+ nested: { token: secret },
+ }),
+ {
+ cause: Object.assign(new Error(`runtime failed ${secret}`), {
+ code: 'RETAINED_RESULT_READ_FAILED',
+ cause: networkError,
+ }),
+ },
+ ),
)
const output = safeJson({ status: 'failed', failure: rawDetails }, { TANGLE_API_KEY: secret })
assert.doesNotMatch(output, new RegExp(secret, 'u'))
assert.match(output, /\[REDACTED\]/u)
+ assert.deepEqual(rawDetails.fingerprint, {
+ name: 'MissingIntegrationError',
+ code: 'BRAID_LIVE_INTEGRATION_MISSING',
+ cause: {
+ name: 'Error',
+ code: 'RETAINED_RESULT_READ_FAILED',
+ cause: { name: 'NetworkError', code: 'NETWORK_ERROR', status: 503 },
+ },
+ })
+})
+
+test('supervisor proof proves public observation, effects, replay, and reconnect', async () => {
+ const fixture = createSupervisorProofFixture({ terminalTakeover: 'attached' })
+ const environment = {
+ BRAID_SUPERVISOR_ROOT: fixture.rootDir,
+ BRAID_SUPERVISOR_ID: fixture.supervisorId,
+ BRAID_SUPERVISOR_WORKER: fixture.workerId,
+ BRAID_SUPERVISOR_STEER_OPERATION_ID: 'supervisor-steer-test-1',
+ BRAID_SUPERVISOR_CANCEL_OPERATION_ID: 'supervisor-cancel-test-1',
+ BRAID_SUPERVISOR_MESSAGE: 'inspect the deterministic worker',
+ BRAID_SUPERVISOR_TIMEOUT_MS: '1000',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ }
+ const result = await runSupervisorFlow({
+ environment,
+ invocationId: 'live-required-supervisor-test',
+ runtime: fixture.api,
+ providers: {},
+ })
+ assert.equal(result.status, 'passed')
+ assert.deepEqual(result.measurements, [
+ { kind: 'scalar', name: 'LIVE-11', unit: 'verified-flow', value: 1 },
+ ])
+ assert.equal(result.steering.effect, 'delivered')
+ assert.equal(result.steering.replayed, true)
+ assert.equal(result.cancellation.effect, 'cancelled')
+ assert.equal(result.terminalTakeover.status, 'attached')
+ assert.equal(result.proof.facts.spendObserved, true)
+ assert.equal(result.proof.facts.statusObserved, true)
+ assert.equal(result.proof.facts.reconnectable, true)
+ assert.equal(result.proof.facts.cancellationAvailable, true)
+ assert.equal(assertProofReceipt(result.proof), result.proof)
+ assert.throws(
+ () =>
+ assertProofReceipt({
+ ...result.proof,
+ facts: { ...result.proof.facts, cancellationEffect: 'not_live' },
+ }),
+ /cancelled worker effect/u,
+ )
+ assert.throws(
+ () =>
+ assertProofReceipt({
+ ...result.proof,
+ status: 'partial',
+ checks: ['snapshot'],
+ }),
+ /cannot have a partial status/u,
+ )
+ assert.equal(fixture.calls.filter((call) => call.name === 'writeWorkerSteer').length, 2)
+ assert.equal(fixture.calls.filter((call) => call.name === 'cancelWorker').length, 2)
+ assert.equal(
+ fixture.calls.some((call) => call.name === 'supervisorRunDir'),
+ true,
+ )
+ assert.equal(
+ fixture.calls.some((call) => call.name === 'readWorkerCancellation'),
+ true,
+ )
})
-test('configured supervisor failures stay unavailable and redact environment credentials', async () => {
- const root = await mkdtemp(join(tmpdir(), 'braid-live-required-supervisor-test-'))
- const missingRoot = join(root, 'missing-runtime-root')
- const common = {
+test('supervisor proof fails closed when a required runtime effect is absent or unclean', async () => {
+ const cases = [
+ [
+ 'missing steering acknowledgement',
+ { steerAcknowledgement: false },
+ /worker steer acknowledgement was not acknowledged/u,
+ ],
+ ['refused steering effect', { steerEffect: 'refused' }, /did not report delivered effect/u],
+ [
+ 'missing cancellation acknowledgement',
+ { cancellationAcknowledgement: false },
+ /worker cancellation acknowledgement was not acknowledged/u,
+ ],
+ [
+ 'unclean cancellation effect',
+ { cancellationEffect: 'not_live' },
+ /did not report a proven effect/u,
+ ],
+ ]
+ for (const [label, options, expected] of cases) {
+ const fixture = createSupervisorProofFixture(options)
+ await assert.rejects(
+ () =>
+ runSupervisorFlow({
+ environment: {
+ BRAID_SUPERVISOR_ROOT: fixture.rootDir,
+ BRAID_SUPERVISOR_ID: fixture.supervisorId,
+ BRAID_SUPERVISOR_WORKER: fixture.workerId,
+ BRAID_SUPERVISOR_TIMEOUT_MS: '5',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ },
+ invocationId: `live-required-supervisor-${label.replaceAll(' ', '-')}`,
+ runtime: fixture.api,
+ }),
+ expected,
+ label,
+ )
+ }
+})
+
+test('supervisor proof rejects incomplete public snapshots before control', async () => {
+ const fixture = createSupervisorProofFixture({ snapshotCompleteness: 'partial' })
+ await assert.rejects(
+ () =>
+ runSupervisorFlow({
+ environment: {
+ BRAID_SUPERVISOR_ROOT: fixture.rootDir,
+ BRAID_SUPERVISOR_ID: fixture.supervisorId,
+ BRAID_SUPERVISOR_WORKER: fixture.workerId,
+ BRAID_SUPERVISOR_TIMEOUT_MS: '5',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ },
+ runtime: fixture.api,
+ }),
+ /runtime supervisor snapshot is incomplete/u,
+ )
+ assert.equal(
+ fixture.calls.some((call) => call.name === 'writeWorkerSteer'),
+ false,
+ )
+ assert.equal(
+ fixture.calls.some((call) => call.name === 'cancelWorker'),
+ false,
+ )
+})
+
+test('supervisor proof fails unavailable when a required Runtime API is missing', async () => {
+ const fixture = createSupervisorProofFixture()
+ const runtime = { ...fixture.api }
+ delete runtime.cancelWorker
+ await assert.rejects(
+ () =>
+ runSupervisorFlow({
+ environment: {
+ BRAID_SUPERVISOR_ROOT: fixture.rootDir,
+ BRAID_SUPERVISOR_ID: fixture.supervisorId,
+ BRAID_SUPERVISOR_WORKER: fixture.workerId,
+ },
+ runtime,
+ }),
+ (error) => {
+ assert.equal(error.unavailable, true)
+ assert.equal(error.code, 'RUNTIME_SUPERVISOR_API_REQUIRED')
+ return true
+ },
+ )
+})
+
+test('supervisor proof records unsupported terminal takeover without claiming attachment', async () => {
+ const fixture = createSupervisorProofFixture()
+ const result = await runSupervisorFlow({
+ environment: {
+ BRAID_SUPERVISOR_ROOT: fixture.rootDir,
+ BRAID_SUPERVISOR_ID: fixture.supervisorId,
+ BRAID_SUPERVISOR_WORKER: fixture.workerId,
+ BRAID_SUPERVISOR_TIMEOUT_MS: '1000',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ },
+ runtime: fixture.api,
+ })
+ assert.equal(result.status, 'passed')
+ assert.deepEqual(result.terminalTakeover, {
+ status: 'unavailable',
+ reason: 'No environment provider source was supplied for exact terminal takeover',
+ })
+ assert.equal(result.proof.facts.terminalTakeover, 'unavailable')
+})
+
+test('supervisor proof provisions an owned Runtime run and validates cleanup', async () => {
+ const fixture = createSupervisorProofFixture({ terminalTakeover: 'attached' })
+ const environment = {
...protectedEnvironment(),
- BRAID_SUPERVISOR_ROOT: missingRoot,
- BRAID_SUPERVISOR_ID: 'configured-supervisor',
- BRAID_SUPERVISOR_WORKER: 'configured-worker',
+ BRAID_SUPERVISOR_ENDPOINT: 'https://router.example/v1',
+ BRAID_SUPERVISOR_WORKSPACE: '/tmp/supervisor-proof-workspace',
+ BRAID_SUPERVISOR_TASK: 'Inspect the provisioned worker',
+ BRAID_SUPERVISOR_API_KEY: 'must-not-cross-the-provision-boundary',
+ BRAID_SUPERVISOR_AUTH: 'must-not-cross-the-provision-boundary',
+ BRAID_SUPERVISOR_TIMEOUT_MS: '1000',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ BRAID_SUPERVISOR_MESSAGE: 'inspect the provisioned worker',
}
- try {
- let output = expectedFailureOutput('live-supervisor', common)
- assert.match(output, /failed against the configured live path/u)
- assert.doesNotMatch(output, /BRAID_RELEASE_RESULT_JSON=\{"status":"unavailable"/u)
-
- const { supervisorId, workerId } = await createSupervisorFixture(root)
- const wrongShape = join(root, 'wrong-supervisor-adapter.mjs')
- await writeFile(wrongShape, 'export default 42\n')
- output = expectedFailureOutput(
- 'live-supervisor',
- {
- ...common,
- BRAID_SUPERVISOR_ROOT: root,
- BRAID_SUPERVISOR_ID: supervisorId,
- BRAID_SUPERVISOR_WORKER: workerId,
- BRAID_SUPERVISOR_LIVE_ADAPTER: wrongShape,
+ let provisionRequest
+ let cleanupCalls = 0
+ const result = await runSupervisorFlow({
+ environment,
+ invocationId: 'live-required-supervisor-provisioned',
+ runtime: {
+ ...fixture.api,
+ provisionSupervisor: async (request) => {
+ provisionRequest = request
+ return {
+ rootDir: fixture.rootDir,
+ supervisorId: fixture.supervisorId,
+ workerId: fixture.workerId,
+ providers: {},
+ terminalTakeover: 'required',
+ cleanup: async () => {
+ cleanupCalls += 1
+ return {
+ status: 'completed',
+ rootDir: fixture.rootDir,
+ supervisorId: fixture.supervisorId,
+ workerId: fixture.workerId,
+ supervisorStatus: 'cancelled',
+ workerStatus: 'cancelled',
+ resourcesReleased: true,
+ remainingResources: [],
+ }
+ },
+ }
},
- 2,
- )
- assert.match(output, /BRAID_RELEASE_RESULT_JSON=\{"status":"unavailable"/u)
+ },
+ })
+ assert.equal(result.status, 'passed')
+ assert.equal(result.provisioning.mode, 'provisioned')
+ assert.equal(result.provisioning.terminalTakeover, 'required')
+ assert.equal(result.cleanup.status, 'completed')
+ assert.equal(cleanupCalls, 1)
+ assert.equal(provisionRequest.invocationId, 'live-required-supervisor-provisioned')
+ assert.equal(provisionRequest.task, 'Inspect the provisioned worker')
+ assert.equal(provisionRequest.timeoutMs, 1000)
+ assert.equal(provisionRequest.pollMs, 1)
+ assert.equal(provisionRequest.workspaceDir, '/tmp/supervisor-proof-workspace')
+ assert.deepEqual(provisionRequest.profile, supervisorProfile(environment))
+ assert.deepEqual(provisionRequest.connection, {
+ endpoint: 'https://router.example/v1',
+ apiKey: 'must-not-cross-the-provision-boundary',
+ kind: 'tangle-sandbox',
+ })
+ assert.deepEqual(provisionRequest.workerEnvironment, {
+ workspace: { cwd: '/tmp/supervisor-proof-workspace' },
+ name: 'braid-live-supervisor-live-required-supervisor-provisioned',
+ metadata: {
+ owner: 'braid-live-supervisor',
+ proof: 'LIVE-11',
+ invocationId: 'live-required-supervisor-provisioned',
+ },
+ })
+ assert.equal('environment' in provisionRequest, false)
+ assert.equal('BRAID_SUPERVISOR_API_KEY' in provisionRequest.workerEnvironment, false)
+ assert.deepEqual(result.proof.run.ids, [fixture.supervisorId, fixture.workerId])
+ assert.equal(result.proof.facts.provisioned, true)
+ assert.equal(result.proof.facts.cleanupVerified, true)
+ assert.equal(result.proof.facts.terminalTakeoverRequired, true)
+ assert.equal(assertProofReceipt(result.proof), result.proof)
+})
- const secret = 'live-required-secret-7e5d'
- const throwingAdapter = join(root, 'throwing-supervisor-adapter.mjs')
- await writeFile(
- throwingAdapter,
- 'process.stdout.write(process.env.BRAID_TANGLE_API_KEY)\nthrow new Error(process.env.BRAID_TANGLE_API_KEY)\n',
- )
- const configured = {
- ...common,
- BRAID_SUPERVISOR_ROOT: root,
- BRAID_SUPERVISOR_ID: supervisorId,
- BRAID_SUPERVISOR_WORKER: workerId,
- BRAID_SUPERVISOR_LIVE_ADAPTER: throwingAdapter,
- BRAID_TANGLE_API_KEY: secret,
- }
- const direct = safeMessage(new Error(`provider rejected ${secret}`), configured)
- assert.doesNotMatch(direct, new RegExp(secret, 'u'))
- assert.match(direct, /\[REDACTED\]/u)
- output = expectedFailureOutput('live-supervisor', configured, 2)
- assert.equal(output.includes(secret), false)
- assert.match(output, /BRAID_RELEASE_RESULT_JSON=\{"status":"unavailable"/u)
- } finally {
- await rm(root, { recursive: true, force: true })
+test('supervisor proof cleans an owned Runtime run after an observation failure', async () => {
+ const fixture = createSupervisorProofFixture({ snapshotCompleteness: 'partial' })
+ let cleanupCalls = 0
+ await assert.rejects(
+ () =>
+ runSupervisorFlow({
+ environment: {
+ ...protectedEnvironment(),
+ BRAID_SUPERVISOR_TIMEOUT_MS: '5',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ },
+ invocationId: 'live-required-supervisor-cleanup-on-failure',
+ runtime: fixture.api,
+ ...supervisorProvisionInputs('live-required-supervisor-cleanup-on-failure'),
+ provision: async () => ({
+ rootDir: fixture.rootDir,
+ supervisorId: fixture.supervisorId,
+ workerId: fixture.workerId,
+ terminalTakeover: 'unsupported',
+ cleanup: async () => {
+ cleanupCalls += 1
+ return {
+ status: 'completed',
+ rootDir: fixture.rootDir,
+ supervisorId: fixture.supervisorId,
+ workerId: fixture.workerId,
+ supervisorStatus: 'cancelled',
+ workerStatus: 'cancelled',
+ resourcesReleased: true,
+ remainingResources: [],
+ }
+ },
+ }),
+ }),
+ /runtime supervisor snapshot is incomplete/u,
+ )
+ assert.equal(cleanupCalls, 1)
+})
+
+test('supervisor proof rejects a supported terminal takeover without a real attachment', async () => {
+ const fixture = createSupervisorProofFixture({ terminalTakeover: 'unavailable' })
+ let cleanupCalls = 0
+ await assert.rejects(
+ () =>
+ runSupervisorFlow({
+ environment: {
+ ...protectedEnvironment(),
+ BRAID_SUPERVISOR_TIMEOUT_MS: '1000',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ },
+ invocationId: 'live-required-supervisor-required-attach',
+ runtime: fixture.api,
+ ...supervisorProvisionInputs('live-required-supervisor-required-attach'),
+ provision: async () => ({
+ rootDir: fixture.rootDir,
+ supervisorId: fixture.supervisorId,
+ workerId: fixture.workerId,
+ providers: {},
+ terminalTakeover: 'required',
+ cleanup: async () => {
+ cleanupCalls += 1
+ return {
+ status: 'completed',
+ rootDir: fixture.rootDir,
+ supervisorId: fixture.supervisorId,
+ workerId: fixture.workerId,
+ supervisorStatus: 'cancelled',
+ workerStatus: 'cancelled',
+ resourcesReleased: true,
+ remainingResources: [],
+ }
+ },
+ }),
+ }),
+ /supports terminal takeover/u,
+ )
+ assert.equal(cleanupCalls, 1)
+})
+
+test('supervisor proof refuses an incomplete owned cleanup receipt', async () => {
+ const fixture = createSupervisorProofFixture()
+ let cleanupCalls = 0
+ await assert.rejects(
+ () =>
+ runSupervisorFlow({
+ environment: {
+ ...protectedEnvironment(),
+ BRAID_SUPERVISOR_TIMEOUT_MS: '1000',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ },
+ invocationId: 'live-required-supervisor-incomplete-cleanup',
+ runtime: fixture.api,
+ ...supervisorProvisionInputs('live-required-supervisor-incomplete-cleanup'),
+ provision: async () => ({
+ rootDir: fixture.rootDir,
+ supervisorId: fixture.supervisorId,
+ workerId: fixture.workerId,
+ terminalTakeover: 'unsupported',
+ cleanup: async () => {
+ cleanupCalls += 1
+ return {
+ status: 'completed',
+ rootDir: fixture.rootDir,
+ supervisorId: fixture.supervisorId,
+ workerId: fixture.workerId,
+ supervisorStatus: 'cancelled',
+ workerStatus: 'cancelled',
+ resourcesReleased: true,
+ remainingResources: ['worker-process'],
+ }
+ },
+ }),
+ }),
+ /left unconfirmed resources/u,
+ )
+ assert.equal(cleanupCalls, 1)
+})
+
+test('supervisor proof requires Runtime provisioning when no external run is configured', async () => {
+ const fixture = createSupervisorProofFixture()
+ await assert.rejects(
+ () =>
+ runSupervisorFlow({
+ environment: {
+ ...protectedEnvironment(),
+ BRAID_SUPERVISOR_TIMEOUT_MS: '5',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ },
+ runtime: fixture.api,
+ }),
+ (error) => {
+ assert.equal(error.unavailable, true)
+ assert.equal(error.code, 'RUNTIME_SUPERVISOR_PROVISION_REQUIRED')
+ return true
+ },
+ )
+})
+
+test('supervisor provisioning failures retain the provider cause', async () => {
+ const fixture = createSupervisorProofFixture()
+ await assert.rejects(
+ () =>
+ runSupervisorFlow({
+ environment: {
+ ...protectedEnvironment(),
+ BRAID_SUPERVISOR_TIMEOUT_MS: '5',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ },
+ runtime: {
+ ...fixture.api,
+ provisionSupervisor: async () => {
+ throw new Error('SESSION_DELETING')
+ },
+ },
+ ...supervisorProvisionInputs('fixture-provisioning-failure'),
+ }),
+ (error) => {
+ assert.match(
+ error.message,
+ /Runtime supervisor provisioning failed before LIVE-11 controls: SESSION_DELETING/u,
+ )
+ return true
+ },
+ )
+})
+
+test('supervisor proof rejects a partial external binding before provisioning', async () => {
+ const fixture = createSupervisorProofFixture()
+ let provisionCalls = 0
+ await assert.rejects(
+ () =>
+ runSupervisorFlow({
+ environment: {
+ ...protectedEnvironment(),
+ BRAID_SUPERVISOR_ROOT: fixture.rootDir,
+ },
+ runtime: {
+ ...fixture.api,
+ provisionSupervisor: async () => {
+ provisionCalls += 1
+ throw new Error('provisioning must not run for a partial override')
+ },
+ },
+ }),
+ (error) => {
+ assert.equal(error.unavailable, true)
+ assert.equal(error.code, 'PROTECTED_SUPERVISOR_CONFIGURATION_INVALID')
+ return true
+ },
+ )
+ assert.equal(provisionCalls, 0)
+})
+
+test('configured supervisor failures are failed and never reported as partial', () => {
+ let failure
+ try {
+ execFileSync(process.execPath, ['scripts/live-required.mjs', 'live-supervisor'], {
+ cwd: repository,
+ env: {
+ ...protectedEnvironment(),
+ BRAID_SUPERVISOR_ROOT: join(tmpdir(), 'missing-braid-supervisor-root'),
+ BRAID_SUPERVISOR_ID: 'configured-supervisor',
+ BRAID_SUPERVISOR_WORKER: 'configured-worker',
+ BRAID_SUPERVISOR_TIMEOUT_MS: '5',
+ BRAID_SUPERVISOR_POLL_MS: '1',
+ },
+ encoding: 'utf8',
+ stdio: ['ignore', 'pipe', 'pipe'],
+ })
+ } catch (error) {
+ failure = error
}
+ assert(failure, 'configured supervisor unexpectedly passed')
+ assert.equal(failure.status, 1)
+ const output = `${failure.stdout ?? ''}${failure.stderr ?? ''}`
+ assert.match(output, /failed against the configured live path/u)
+ assert.doesNotMatch(output, /status":"partial/u)
+ assert.doesNotMatch(output, /BRAID_RELEASE_RESULT_JSON=\{"status":"unavailable"/u)
})
test('configured headless checks execute the real Braid RPC process and validate its marker', async () => {
@@ -740,7 +1588,7 @@ test('configured headless checks execute the real Braid RPC process and validate
endpoint: 'http://127.0.0.1:3344',
model: 'openai-codex/gpt-5.6-luna',
runner: 'pi',
- provider: 'openai-codex',
+ modelProvider: 'openai-codex',
})
try {
const turn = await runHeadlessTurn({
@@ -781,7 +1629,7 @@ test('production live workspaces remove every raw authentication alias from chil
endpoint: 'https://router.tangle.tools',
model: 'openai/gpt-5',
runner: 'pi',
- provider: 'tangle',
+ modelProvider: 'tangle-router',
credentialRef: 'credential-ref-live-required-test',
})
try {
@@ -801,7 +1649,7 @@ test('generated live credentials use the same protected store as production Brai
endpoint: 'https://router.tangle.tools',
model: 'glm-5.2',
runner: 'cli-base',
- provider: 'tangle',
+ modelProvider: 'tangle-router',
credentialValue: secret,
})
let session
@@ -834,7 +1682,7 @@ test('generated credential cleanup disposes failed removal, cleans root, and ret
endpoint: 'https://router.tangle.tools',
model: 'glm-5.2',
runner: 'cli-base',
- provider: 'tangle',
+ modelProvider: 'tangle-router',
credentialValue: secret,
credentialContextFactory: () => ({
store: {
@@ -910,7 +1758,7 @@ test('temporary-root cleanup retries after a transient failure without repeating
endpoint: 'https://router.tangle.tools',
model: 'glm-5.2',
runner: 'cli-base',
- provider: 'tangle',
+ modelProvider: 'tangle-router',
credentialValue: 'live-required-root-cleanup-canary-154d',
credentialContextFactory: () => ({
store: {
diff --git a/scripts/live-required/analysis.mjs b/scripts/live-required/analysis.mjs
index ba59589..fee0118 100644
--- a/scripts/live-required/analysis.mjs
+++ b/scripts/live-required/analysis.mjs
@@ -49,6 +49,18 @@ function analysisSummary(analysis) {
checks: Array.isArray(analysis.checks)
? analysis.checks.map((check) => ({ id: check.id, status: check.status }))
: null,
+ modelCalls: Array.isArray(analysis.modelCalls)
+ ? analysis.modelCalls.map((call) => ({
+ id: call.id,
+ model: call.model,
+ status: call.status,
+ errorKind: call.errorKind,
+ errorStatus: call.errorStatus,
+ inputTokens: call.inputTokens,
+ outputTokens: call.outputTokens,
+ cost: call.cost,
+ }))
+ : null,
}
}
@@ -63,6 +75,7 @@ export async function runTraceAnalysis({ repository, environment }) {
modelNames: ['BRAID_TANGLE_MODEL'],
runnerNames: ['BRAID_TANGLE_RUNNER'],
providerNames: ['BRAID_TANGLE_PROVIDER'],
+ fallbackModelProvider: 'tangle-router',
fallbackRunner: 'cli-base',
credentialFallbacks: ['BRAID_TANGLE_CREDENTIAL_REF'],
})
@@ -96,8 +109,13 @@ export async function runTraceAnalysis({ repository, environment }) {
const analysis = data?.analysis
if (data?.status !== 'completed' || typeof analysis?.id !== 'string') {
const detail = typeof data?.error === 'string' ? `: ${data.error}` : ''
+ const failedAnalysis =
+ analysis ??
+ (Array.isArray(afterResponse.state?.analyses)
+ ? afterResponse.state.analyses.at(-1)
+ : undefined)
throw new Error(
- `trace analysis returned ${String(data?.status ?? 'no status')} instead of completed${detail}`,
+ `trace analysis returned ${String(data?.status ?? 'no status')} instead of completed; evidence=${JSON.stringify(analysisSummary(failedAnalysis))}${detail}`,
)
}
if (!supportedFindings(analysis)) {
diff --git a/scripts/live-required/configuration.mjs b/scripts/live-required/configuration.mjs
index b9ed06b..e739825 100644
--- a/scripts/live-required/configuration.mjs
+++ b/scripts/live-required/configuration.mjs
@@ -1,9 +1,24 @@
import { protectedUnavailable } from './contracts.mjs'
+function textValue(value) {
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined
+}
+
function firstValue(environment, names) {
return names
.map((name) => environment[name])
- .find((value) => typeof value === 'string' && value.trim())
+ .map(textValue)
+ .find((value) => value !== undefined)
+}
+
+/**
+ * Resolve the model provider without changing the portable model id.
+ *
+ * The caller supplies the owning path's fallback because a model prefix can
+ * identify an upstream model, not the connection's provider.
+ */
+export function resolveModelProvider({ override, fallback } = {}) {
+ return textValue(override) ?? textValue(fallback)
}
function credential(environment, prefix, fallbacks = []) {
@@ -30,10 +45,11 @@ export function connectionConfiguration(
modelNames = [],
runnerNames = [],
providerNames = [],
+ modelProviderNames = [],
fallbackEndpoint,
fallbackModel,
fallbackRunner,
- fallbackProvider = 'tangle',
+ fallbackModelProvider,
credentialFallbacks = [],
},
) {
@@ -41,8 +57,15 @@ export function connectionConfiguration(
firstValue(environment, [`${prefix}_ENDPOINT`, ...endpointNames]) ?? fallbackEndpoint
const model = firstValue(environment, [`${prefix}_MODEL`, ...modelNames]) ?? fallbackModel
const runner = firstValue(environment, [`${prefix}_RUNNER`, ...runnerNames]) ?? fallbackRunner
- const provider =
- firstValue(environment, [`${prefix}_PROVIDER`, ...providerNames]) ?? fallbackProvider
+ const modelProvider = resolveModelProvider({
+ override: firstValue(environment, [
+ `${prefix}_MODEL_PROVIDER`,
+ ...modelProviderNames,
+ `${prefix}_PROVIDER`,
+ ...providerNames,
+ ]),
+ fallback: fallbackModelProvider,
+ })
const missing = [
[endpoint, `${prefix}_ENDPOINT`, 'provider endpoint'],
[model, `${prefix}_MODEL`, 'profile model'],
@@ -61,7 +84,7 @@ export function connectionConfiguration(
endpoint,
model,
runner,
- provider,
+ ...(modelProvider === undefined ? {} : { modelProvider }),
...credential(environment, prefix, credentialFallbacks),
}
}
diff --git a/scripts/live-required/contracts.mjs b/scripts/live-required/contracts.mjs
index 8c3f170..222777a 100644
--- a/scripts/live-required/contracts.mjs
+++ b/scripts/live-required/contracts.mjs
@@ -1,6 +1,7 @@
import { randomUUID } from 'node:crypto'
import { collectCredentialSecrets, redactText } from '../release/redaction.mjs'
+import { assertMultirunProof } from './multirun-contract.mjs'
export const EXIT_CODES = Object.freeze({
passed: 0,
@@ -14,6 +15,8 @@ export const PROOF_OPERATIONS = Object.freeze({
tangleInference: 'tangle.inference.turn',
tangleSandbox: 'tangle.sandbox.turn',
tangleSandboxInteractive: 'tangle.sandbox.interactive',
+ tangleWorkspaceFork: 'tangle.sandbox.workspace-fork',
+ tangleConfidential: 'tangle.sandbox.confidential',
traceAnalysis: 'trace.analysis.ask-promote',
supervisor: 'supervisor.snapshot-reconnect-steer',
})
@@ -49,6 +52,37 @@ const PROOF_OPERATION_CHECKS = Object.freeze({
'exact-resource-cleanup',
'process-exited-before-cleanup',
'process-group-exited-before-cleanup',
+ 'provider-bound-input',
+ 'provider-bound-reconnect',
+ 'single-provider-execution-attempt',
+ 'exact-owned-resource-set-cleanup',
+ 'account-identity-stable',
+ 'active-resource-delta',
+ 'telemetry-complete',
+ 'spend-disclosed',
+ 'latency-observed',
+ ]),
+ [PROOF_OPERATIONS.tangleWorkspaceFork]: Object.freeze([
+ 'configuration',
+ 'source-run',
+ 'plan',
+ 'execute',
+ 'retry',
+ 'restart',
+ 'independent-destination',
+ 'source-unchanged',
+ 'cleanup-checkpoint',
+ 'cleanup-environment',
+ ]),
+ [PROOF_OPERATIONS.tangleConfidential]: Object.freeze([
+ 'configuration',
+ 'nitro-attestation',
+ 'requested-unverified-binding',
+ 'missing-attestation',
+ 'valid-attestation',
+ 'wrong-nonce',
+ 'wrong-measurement',
+ 'cleanup',
]),
[PROOF_OPERATIONS.traceAnalysis]: Object.freeze([
'source-frozen',
@@ -56,7 +90,15 @@ const PROOF_OPERATION_CHECKS = Object.freeze({
'restart-restored',
'promoted',
]),
- [PROOF_OPERATIONS.supervisor]: Object.freeze(['snapshot', 'reconnect', 'steering']),
+ [PROOF_OPERATIONS.supervisor]: Object.freeze([
+ 'snapshot',
+ 'spend-status',
+ 'steering',
+ 'steering-acknowledged',
+ 'cancellation',
+ 'reconnect',
+ 'terminal-takeover',
+ ]),
})
const PROOF_OPERATION_FACT_KEYS = Object.freeze({
@@ -81,6 +123,38 @@ const PROOF_OPERATION_FACT_KEYS = Object.freeze({
'processExitedBeforeWorkspaceCleanup',
'terminalResize',
'processGroupExitedBeforeWorkspaceCleanup',
+ 'providerInput',
+ 'providerReconnect',
+ 'singleProviderExecutionAttempt',
+ 'exactOwnedResourceSetCleanup',
+ 'accountIdentityStable',
+ 'activeResourceDelta',
+ 'telemetryComplete',
+ 'spendDisclosed',
+ 'latencyObserved',
+ ]),
+ [PROOF_OPERATIONS.tangleWorkspaceFork]: Object.freeze([
+ 'sourceProviderEnvironmentId',
+ 'destinationProviderEnvironmentId',
+ 'checkpointRetried',
+ 'forkRetried',
+ 'restarted',
+ 'sourceDigestBefore',
+ 'sourceDigestAfter',
+ 'destinationDigest',
+ 'cleanupCheckpoint',
+ 'cleanupEnvironment',
+ ]),
+ [PROOF_OPERATIONS.tangleConfidential]: Object.freeze([
+ 'sourceProviderEnvironmentId',
+ 'destinationProviderEnvironmentId',
+ 'confidentialRequested',
+ 'confidentialVerified',
+ 'missingAttestationRejected',
+ 'wrongNonceRejected',
+ 'wrongMeasurementRejected',
+ 'cleanupCheckpoint',
+ 'cleanupEnvironment',
]),
[PROOF_OPERATIONS.traceAnalysis]: Object.freeze([
'analysisId',
@@ -93,7 +167,20 @@ const PROOF_OPERATION_FACT_KEYS = Object.freeze({
'supervisorId',
'workerId',
'steeringRequestId',
+ 'steeringOperationId',
+ 'steeringEffect',
+ 'cancellationOperationId',
+ 'cancellationEffect',
+ 'initialStatus',
+ 'finalStatus',
+ 'spendObserved',
+ 'statusObserved',
+ 'reconnectable',
+ 'terminalTakeover',
+ 'terminalTakeoverRequired',
'cancellationAvailable',
+ 'provisioned',
+ 'cleanupVerified',
]),
})
@@ -117,6 +204,7 @@ const PROOF_CONNECTION_KEYS = Object.freeze([
'connectionKind',
'credentialConfigured',
'model',
+ 'modelProvider',
'runner',
])
const PROOF_RUN_KEYS = Object.freeze(['ids', 'environmentId', 'materializationDigest'])
@@ -370,9 +458,31 @@ function validateProofFacts(operation, status, facts) {
if (
key === 'promoted' ||
key === 'cancellationAvailable' ||
+ key === 'terminalTakeoverRequired' ||
+ key === 'spendObserved' ||
+ key === 'statusObserved' ||
+ key === 'reconnectable' ||
+ key === 'provisioned' ||
+ key === 'cleanupVerified' ||
+ key === 'checkpointRetried' ||
+ key === 'forkRetried' ||
+ key === 'restarted' ||
+ key === 'confidentialRequested' ||
+ key === 'confidentialVerified' ||
+ key === 'missingAttestationRejected' ||
+ key === 'wrongNonceRejected' ||
+ key === 'wrongMeasurementRejected' ||
key === 'processExitedBeforeWorkspaceCleanup' ||
key === 'terminalResize' ||
- key === 'processGroupExitedBeforeWorkspaceCleanup'
+ key === 'processGroupExitedBeforeWorkspaceCleanup' ||
+ key === 'providerInput' ||
+ key === 'providerReconnect' ||
+ key === 'singleProviderExecutionAttempt' ||
+ key === 'exactOwnedResourceSetCleanup' ||
+ key === 'accountIdentityStable' ||
+ key === 'telemetryComplete' ||
+ key === 'spendDisclosed' ||
+ key === 'latencyObserved'
) {
if (typeof value !== 'boolean') throw new Error(`Live proof ${key} must be boolean`)
continue
@@ -405,6 +515,80 @@ function validateProofFacts(operation, status, facts) {
}
}
+function validatePassedSupervisorReceipt(receipt) {
+ const { facts } = receipt
+ for (const key of ['spendObserved', 'statusObserved', 'reconnectable', 'cancellationAvailable']) {
+ if (facts[key] !== true) throw new Error(`Passed supervisor proof requires ${key} to be true`)
+ }
+ if (facts.initialStatus !== 'running')
+ throw new Error('Passed supervisor proof requires a running worker at the first snapshot')
+ if (!['cancelled', 'down'].includes(facts.finalStatus))
+ throw new Error('Passed supervisor proof requires a terminal cancelled worker snapshot')
+ if (facts.steeringEffect !== 'delivered')
+ throw new Error('Passed supervisor proof requires a delivered steering effect')
+ if (facts.cancellationEffect !== 'cancelled')
+ throw new Error('Passed supervisor proof requires a cancelled worker effect')
+ if (!['attached', 'unavailable'].includes(facts.terminalTakeover))
+ throw new Error('Passed supervisor proof requires an attached or unavailable terminal takeover')
+ if (facts.provisioned === true && facts.cleanupVerified !== true)
+ throw new Error('Passed provisioned supervisor proof requires verified cleanup')
+ if (facts.terminalTakeoverRequired === true && facts.terminalTakeover !== 'attached')
+ throw new Error(
+ 'Passed supervisor proof requires terminal takeover when the provider supports it',
+ )
+ if (receipt.observations === null || typeof receipt.observations !== 'object')
+ throw new Error('Passed supervisor proof requires provisioning and cleanup observations')
+ const provisioning = receipt.observations.provisioning
+ const cleanup = receipt.observations.cleanup
+ if (provisioning === undefined || cleanup === undefined)
+ throw new Error('Passed supervisor proof requires provisioning and cleanup observations')
+ if (typeof provisioning !== 'object' || Array.isArray(provisioning))
+ throw new Error('Passed supervisor provisioning observation must be an object')
+ if (typeof cleanup !== 'object' || Array.isArray(cleanup))
+ throw new Error('Passed supervisor cleanup observation must be an object')
+ const provisioningKeys = ['mode', 'rootDir', 'supervisorId', 'workerId', 'terminalTakeover']
+ exactKeys(provisioning, provisioningKeys, 'Passed supervisor provisioning observation')
+ if (!['configured', 'provisioned'].includes(provisioning.mode))
+ throw new Error('Passed supervisor provisioning mode is invalid')
+ for (const key of ['rootDir', 'supervisorId', 'workerId'])
+ validRequiredString(provisioning[key], `Passed supervisor provisioning ${key}`)
+ if (!['required', 'unsupported', 'unspecified'].includes(provisioning.terminalTakeover))
+ throw new Error('Passed supervisor provisioning terminal takeover requirement is invalid')
+ const cleanupKeys = [
+ 'status',
+ 'rootDir',
+ 'supervisorId',
+ 'workerId',
+ 'supervisorStatus',
+ 'workerStatus',
+ 'resourcesReleased',
+ 'remainingResources',
+ ]
+ exactKeys(cleanup, cleanupKeys, 'Passed supervisor cleanup observation')
+ if (!['completed', 'not-owned'].includes(cleanup.status))
+ throw new Error('Passed supervisor cleanup status is invalid')
+ for (const key of ['rootDir', 'supervisorId', 'workerId'])
+ validRequiredString(cleanup[key], `Passed supervisor cleanup ${key}`)
+ if (cleanup.supervisorStatus !== null && typeof cleanup.supervisorStatus !== 'string')
+ throw new Error('Passed supervisor cleanup supervisorStatus must be a string or null')
+ if (cleanup.workerStatus !== null && typeof cleanup.workerStatus !== 'string')
+ throw new Error('Passed supervisor cleanup workerStatus must be a string or null')
+ if (cleanup.resourcesReleased !== null && typeof cleanup.resourcesReleased !== 'boolean')
+ throw new Error('Passed supervisor cleanup resourcesReleased must be boolean or null')
+ if (cleanup.remainingResources !== null && !Array.isArray(cleanup.remainingResources))
+ throw new Error('Passed supervisor cleanup remainingResources must be an array or null')
+ if (facts.provisioned === true) {
+ if (provisioning.mode !== 'provisioned')
+ throw new Error('Passed provisioned supervisor proof has a configured provisioning mode')
+ if (cleanup.status !== 'completed' || cleanup.resourcesReleased !== true)
+ throw new Error('Passed provisioned supervisor proof requires completed resource cleanup')
+ if (!Array.isArray(cleanup.remainingResources) || cleanup.remainingResources.length !== 0)
+ throw new Error('Passed provisioned supervisor proof left resources behind')
+ } else if (provisioning.mode !== 'configured' || cleanup.status !== 'not-owned') {
+ throw new Error('Passed configured supervisor proof has an invalid ownership receipt')
+ }
+}
+
function validatePassedTangleSandboxReceipt(receipt) {
if (receipt.run.ids.length === 0)
throw new Error('Passed Tangle Sandbox proof requires at least one local run ID')
@@ -447,6 +631,7 @@ function validatePassedTangleSandboxReceipt(receipt) {
throw new Error('Passed Tangle Sandbox proof requires numeric activeResourceDelta=0')
if (receipt.observations === null || Object.keys(receipt.observations).length === 0)
throw new Error('Passed Tangle Sandbox proof requires redacted observations')
+ assertMultirunProof(receipt.observations.multirun)
}
function validatePassedTangleSandboxInteractiveReceipt(receipt) {
@@ -487,6 +672,21 @@ function validatePassedTangleSandboxInteractiveReceipt(receipt) {
throw new Error('Passed Tangle interactive proof requires terminal resize evidence')
if (receipt.facts.processGroupExitedBeforeWorkspaceCleanup !== true)
throw new Error('Passed Tangle interactive proof requires process-group exit before cleanup')
+ for (const field of [
+ 'providerInput',
+ 'providerReconnect',
+ 'singleProviderExecutionAttempt',
+ 'exactOwnedResourceSetCleanup',
+ 'accountIdentityStable',
+ 'telemetryComplete',
+ 'spendDisclosed',
+ 'latencyObserved',
+ ]) {
+ if (receipt.facts[field] !== true)
+ throw new Error(`Passed Tangle interactive proof requires ${field}=true`)
+ }
+ if (receipt.facts.activeResourceDelta !== 0)
+ throw new Error('Passed Tangle interactive proof requires activeResourceDelta=0')
if (!record(receipt.observations) || Object.keys(receipt.observations).length === 0)
throw new Error('Passed Tangle interactive proof requires redacted observations')
for (const field of [
@@ -496,12 +696,92 @@ function validatePassedTangleSandboxInteractiveReceipt(receipt) {
'sandbox',
'identityContinuity',
'processCleanup',
+ 'providerEvidence',
+ 'executionAttempt',
+ 'usage',
+ 'accountIdentities',
+ 'accountIdentityConsistency',
+ 'usageDelta',
+ 'telemetry',
+ 'spend',
+ 'timing',
]) {
if (!record(receipt.observations[field]))
throw new Error(`Passed Tangle interactive proof requires observations.${field}`)
}
}
+function validatePassedTangleWorkspaceForkReceipt(receipt) {
+ const requiredConnectionFields = ['endpoint', 'connectionId', 'connectionKind', 'model', 'runner']
+ for (const field of requiredConnectionFields)
+ validRequiredString(
+ receipt.connection[field],
+ `Passed Tangle workspace-fork connection.${field}`,
+ )
+ if (receipt.connection.connectionKind !== 'tangle-sandbox')
+ throw new Error('Passed Tangle workspace-fork proof requires a tangle-sandbox connection')
+ if (receipt.connection.credentialConfigured !== true)
+ throw new Error('Passed Tangle workspace-fork proof requires configured credentials')
+ if (receipt.run.ids.length !== 1)
+ throw new Error('Passed Tangle workspace-fork proof requires one source run ID')
+ validRequiredString(receipt.run.environmentId, 'Passed Tangle workspace-fork environmentId')
+ for (const field of [
+ 'sourceProviderEnvironmentId',
+ 'destinationProviderEnvironmentId',
+ 'sourceDigestBefore',
+ 'sourceDigestAfter',
+ 'destinationDigest',
+ ])
+ validRequiredString(receipt.facts[field], `Passed Tangle workspace-fork ${field}`)
+ if (receipt.facts.sourceProviderEnvironmentId === receipt.facts.destinationProviderEnvironmentId)
+ throw new Error('Passed Tangle workspace-fork proof reused its source environment')
+ if (receipt.facts.sourceDigestBefore !== receipt.facts.sourceDigestAfter)
+ throw new Error('Passed Tangle workspace-fork proof changed the source workspace')
+ for (const field of ['checkpointRetried', 'forkRetried', 'restarted']) {
+ if (receipt.facts[field] !== true)
+ throw new Error(`Passed Tangle workspace-fork proof requires ${field}=true`)
+ }
+ for (const field of ['cleanupCheckpoint', 'cleanupEnvironment']) {
+ if (!['deleted', 'already_absent'].includes(receipt.facts[field]))
+ throw new Error(`Passed Tangle workspace-fork proof requires ${field} cleanup`)
+ }
+ if (receipt.observations === null || Object.keys(receipt.observations).length === 0)
+ throw new Error('Passed Tangle workspace-fork proof requires redacted observations')
+}
+
+function validatePassedTangleConfidentialReceipt(receipt) {
+ const requiredConnectionFields = ['endpoint', 'connectionId', 'connectionKind', 'model', 'runner']
+ for (const field of requiredConnectionFields)
+ validRequiredString(receipt.connection[field], `Passed Tangle confidential connection.${field}`)
+ if (receipt.connection.connectionKind !== 'tangle-sandbox')
+ throw new Error('Passed Tangle confidential proof requires a tangle-sandbox connection')
+ if (receipt.connection.credentialConfigured !== true)
+ throw new Error('Passed Tangle confidential proof requires configured credentials')
+ if (receipt.run.ids.length !== 1)
+ throw new Error('Passed Tangle confidential proof requires one source run ID')
+ validRequiredString(receipt.run.environmentId, 'Passed Tangle confidential environmentId')
+ if (receipt.facts.confidentialRequested !== true)
+ throw new Error('Passed Tangle confidential proof requires a requested confidential fork')
+ if (receipt.facts.confidentialVerified !== true)
+ throw new Error('Passed Tangle confidential proof requires an externally verified attestation')
+ if (
+ receipt.facts.missingAttestationRejected !== true ||
+ receipt.facts.wrongNonceRejected !== true ||
+ receipt.facts.wrongMeasurementRejected !== true
+ )
+ throw new Error('Passed Tangle confidential proof requires all negative checks')
+ for (const field of ['sourceProviderEnvironmentId', 'destinationProviderEnvironmentId'])
+ validRequiredString(receipt.facts[field], `Passed Tangle confidential ${field}`)
+ if (receipt.facts.sourceProviderEnvironmentId === receipt.facts.destinationProviderEnvironmentId)
+ throw new Error('Passed Tangle confidential proof reused its source environment')
+ for (const field of ['cleanupCheckpoint', 'cleanupEnvironment']) {
+ if (!['deleted', 'already_absent'].includes(receipt.facts[field]))
+ throw new Error(`Passed Tangle confidential proof requires ${field} cleanup`)
+ }
+ if (receipt.observations === null || Object.keys(receipt.observations).length === 0)
+ throw new Error('Passed Tangle confidential proof requires redacted observations')
+}
+
export function proofInvocation(scope) {
if (typeof scope !== 'string' || scope.trim().length === 0)
throw new Error('Live proof scope must be a non-empty string')
@@ -524,6 +804,8 @@ export function assertProofReceipt(receipt, { invocationId, operation } = {}) {
throw new Error('Live proof receipt belongs to a different operation')
if (!PROOF_STATUSES.has(receipt.status))
throw new Error('Live proof receipt has an invalid status')
+ if (receipt.operation === PROOF_OPERATIONS.supervisor && receipt.status === 'partial')
+ throw new Error('LIVE-11 supervisor proof cannot have a partial status')
validTimestamp(receipt.startedAt, 'Live proof startedAt')
validTimestamp(receipt.completedAt, 'Live proof completedAt')
if (Date.parse(receipt.completedAt) < Date.parse(receipt.startedAt))
@@ -538,6 +820,7 @@ export function assertProofReceipt(receipt, { invocationId, operation } = {}) {
)
throw new Error('Live proof credentialConfigured must be boolean or null')
validNullableString(receipt.connection.model, 'Live proof model')
+ validNullableString(receipt.connection.modelProvider, 'Live proof modelProvider')
validNullableString(receipt.connection.runner, 'Live proof runner')
validateObservations(receipt.observations)
exactKeys(receipt.run, PROOF_RUN_KEYS, 'Live proof run')
@@ -574,6 +857,12 @@ export function assertProofReceipt(receipt, { invocationId, operation } = {}) {
receipt.status === 'passed'
)
validatePassedTangleSandboxInteractiveReceipt(receipt)
+ if (receipt.operation === PROOF_OPERATIONS.tangleWorkspaceFork && receipt.status === 'passed')
+ validatePassedTangleWorkspaceForkReceipt(receipt)
+ if (receipt.operation === PROOF_OPERATIONS.tangleConfidential && receipt.status === 'passed')
+ validatePassedTangleConfidentialReceipt(receipt)
+ if (receipt.operation === PROOF_OPERATIONS.supervisor && receipt.status === 'passed')
+ validatePassedSupervisorReceipt(receipt)
return receipt
}
@@ -614,6 +903,7 @@ export function proofReceipt({
credentialConfigured:
typeof config?.credentialConfigured === 'boolean' ? config.credentialConfigured : null,
model: config?.model ?? null,
+ modelProvider: config?.modelProvider ?? null,
runner: config?.runner ?? null,
},
run: {
@@ -641,6 +931,35 @@ export function safeMessage(error, environment = process.env) {
return safeText(value, environment, credentialFieldSecrets(error)).slice(0, 1_024)
}
+const MAX_EXTERNAL_FAILURE_MESSAGES = 8
+const MAX_EXTERNAL_FAILURE_MESSAGE_LENGTH = 4_096
+
+function externalFailureMessages(error, environment, messages = [], seen = new Set()) {
+ if (
+ error === null ||
+ (typeof error !== 'object' && typeof error !== 'function') ||
+ seen.has(error) ||
+ messages.length >= MAX_EXTERNAL_FAILURE_MESSAGES
+ )
+ return messages
+ seen.add(error)
+ const message = safeMessage(error, environment)
+ if (message.length > 0 && !messages.includes(message)) messages.push(message)
+ if (error instanceof AggregateError) {
+ for (const nested of error.errors) {
+ externalFailureMessages(nested, environment, messages, seen)
+ if (messages.length >= MAX_EXTERNAL_FAILURE_MESSAGES) break
+ }
+ }
+ externalFailureMessages(error.cause, environment, messages, seen)
+ return messages
+}
+
+function externalFailureMessage(error, environment) {
+ const messages = externalFailureMessages(error, environment)
+ return messages.join('; ').slice(0, MAX_EXTERNAL_FAILURE_MESSAGE_LENGTH)
+}
+
export function safeJson(value, environment = process.env) {
const secrets = redactionSecretsFor(value, environment)
const sanitized = sanitizePublicValue(value, environment, secrets)
@@ -650,7 +969,7 @@ export function safeJson(value, environment = process.env) {
} catch {
serialized = JSON.stringify({ status: 'unavailable', reason: '[UNAVAILABLE]' })
}
- return redactText(serialized === undefined ? 'null' : serialized, secrets)
+ return serialized === undefined ? 'null' : serialized
}
export function endpointEvidence(value) {
@@ -680,11 +999,17 @@ export function requiredEnvironment(environment, entries, label) {
}
export function normalizeExternalFailure(error, label, environment = process.env) {
- const message = safeMessage(error, environment)
+ const message =
+ error instanceof LiveRequiredError
+ ? safeMessage(error, environment)
+ : externalFailureMessage(error, environment)
if (error instanceof LiveRequiredError) {
if (error.message === message) return error
return new LiveRequiredError(error.code, message, { unavailable: error.unavailable })
}
+ if (error?.unavailable === true) {
+ return new LiveRequiredError('LIVE_PROTECTED_PATH_UNAVAILABLE', message, { unavailable: true })
+ }
return new LiveRequiredError(
'LIVE_REAL_PATH_FAILED',
`${label} failed against the configured live path: ${message}`,
diff --git a/scripts/live-required/headless.mjs b/scripts/live-required/headless.mjs
index 18991d5..ef030fa 100644
--- a/scripts/live-required/headless.mjs
+++ b/scripts/live-required/headless.mjs
@@ -12,6 +12,7 @@ import {
stateForRun,
terminalMessage,
} from '../live-bridge/protocol.mjs'
+import { resolveModelProvider } from './configuration.mjs'
import { endpointEvidence, protectedUnavailable, safeMessage } from './contracts.mjs'
const AUTH_ENVIRONMENT_NAMES = Object.freeze([
@@ -43,13 +44,20 @@ function validCredentialId(value) {
return candidate
}
-function profileFor({ kind, model, runner, provider }) {
+export function profileFor({ kind, model, runner, modelProvider }) {
+ const provider = resolveModelProvider({ override: modelProvider })
+ if (provider === undefined) {
+ throw protectedUnavailable(
+ 'PROTECTED_MODEL_PROVIDER_REQUIRED',
+ `The ${kind} live check requires an explicit model provider for model '${model}'`,
+ )
+ }
return {
name: `Braid live ${kind}`,
description: 'Protected release flow profile',
version: '1.0.0',
harness: runner,
- model: { provider, default: model, reasoningEffort: 'none' },
+ model: { provider: modelProvider, default: model, reasoningEffort: 'none' },
prompt: {
instructions: ['Follow the release prompt exactly and return the requested marker.'],
},
@@ -246,9 +254,10 @@ export async function prepareProductionWorkspace({
endpoint,
model,
runner,
- provider,
+ modelProvider,
connectionName,
providerOptions = {},
+ confidentialAttestationPolicy,
credentialRef,
credentialValue,
credentialContextFactory,
@@ -270,7 +279,7 @@ export async function prepareProductionWorkspace({
: `credential-live-${kindId}-${randomUUID().replaceAll('-', '')}`
const selectedCredentialId = generatedCredentialId ?? credentialRef
if (selectedCredentialId !== undefined) validCredentialId(selectedCredentialId)
- const profile = profileFor({ kind, model, runner, provider })
+ const profile = profileFor({ kind, model, runner, modelProvider })
const profileFile = `profile-${kindId}.json`
const profilePath = join(profileDirectory, profileFile)
const now = timestamp()
@@ -280,6 +289,7 @@ export async function prepareProductionWorkspace({
name: connectionName ?? `Live ${kind}`,
endpoint,
...(selectedCredentialId === undefined ? {} : { credentialRef: selectedCredentialId }),
+ ...(confidentialAttestationPolicy === undefined ? {} : { confidentialAttestationPolicy }),
providerOptions: { ...providerOptions, transport: 'https' },
createdAt: now,
updatedAt: now,
@@ -492,8 +502,19 @@ export async function runHeadlessTurn({ binary, config, marker, prompt, fixture
Number(process.env.BRAID_LIVE_REQUIRED_TIMEOUT_MS ?? 180_000),
)
const run = runFromState(terminal.state, response.runId)
- if (run?.status !== 'completed')
- throw new Error(`turn ${response.runId} ended with status ${run?.status ?? 'missing'}`)
+ if (run?.status !== 'completed') {
+ const diagnostics = [
+ typeof run?.error === 'string' && run.error.length > 0
+ ? `error=${JSON.stringify(safeMessage(run.error, config.environment))}`
+ : undefined,
+ typeof run?.model === 'string' && run.model.length > 0
+ ? `model=${JSON.stringify(safeMessage(run.model, config.environment))}`
+ : undefined,
+ ].filter(Boolean)
+ throw new Error(
+ `turn ${response.runId} ended with status ${run?.status ?? 'missing'}${diagnostics.length === 0 ? '' : `; ${diagnostics.join('; ')}`}`,
+ )
+ }
const message = terminalMessage(terminal.state, response.runId)
if (!exactMarker(message?.text, marker)) {
throw new Error(
@@ -557,12 +578,14 @@ export async function runHeadlessCancellation({ binary, config, marker, prompt,
export function configEvidence(config) {
const providerOptions = config.connection.providerOptions ?? {}
+ const modelProvider = config.profile.model.provider
return {
endpoint: config.endpoint,
connectionId: config.connection.id,
connectionKind: config.connection.kind,
credentialConfigured: config.credentialConfigured,
model: config.profile.model.default,
+ ...(modelProvider === undefined ? {} : { modelProvider }),
runner: config.profile.harness,
...(providerOptions.lifecycle === undefined ? {} : { lifecycle: providerOptions.lifecycle }),
...(providerOptions.idleTtlSeconds === undefined
diff --git a/scripts/live-required/model-defaults.mjs b/scripts/live-required/model-defaults.mjs
new file mode 100644
index 0000000..5ec17dc
--- /dev/null
+++ b/scripts/live-required/model-defaults.mjs
@@ -0,0 +1,2 @@
+export const DEFAULT_TANGLE_ROUTER_MODEL_ID = 'glm-5.3'
+export const DEFAULT_TANGLE_ROUTER_MODEL = `tangle-router/${DEFAULT_TANGLE_ROUTER_MODEL_ID}`
diff --git a/scripts/live-required/multirun-contract.mjs b/scripts/live-required/multirun-contract.mjs
new file mode 100644
index 0000000..78e1e40
--- /dev/null
+++ b/scripts/live-required/multirun-contract.mjs
@@ -0,0 +1,320 @@
+const REQUIRED_PHASES = Object.freeze([
+ 'account.before',
+ 'binary.resolve',
+ 'workspace.prepare',
+ 'terminal.start',
+ 'branch-a.send',
+ 'branch-a.stream',
+ 'conversation-b.create',
+ 'branch-b.send',
+ 'concurrent.stream',
+ 'focus-a',
+ 'focus-b',
+ 'cancel-b.dispatch',
+ 'cancel-b',
+ 'branch-a.complete',
+ 'remote.status',
+ 'terminal.first.close',
+ 'terminal.restart',
+ 'replay.restart',
+ 'terminal.restart.close',
+ 'provider.observe',
+])
+
+export const MULTIRUN_PROOF_SCHEMA = 'braid.live-required.multirun.v2'
+export { REQUIRED_PHASES as MULTIRUN_REQUIRED_PHASES }
+
+const PROVIDER_IDENTIFIER_KINDS = Object.freeze([
+ 'provider-environment',
+ 'provider-session',
+ 'provider-execution',
+ 'provider-run',
+])
+
+function assert(condition, message) {
+ if (!condition) throw new Error(message)
+}
+
+function object(value) {
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
+}
+
+function text(value) {
+ return typeof value === 'string' && value.length > 0
+}
+
+function assertRun(run, index) {
+ assert(object(run), `multirun proof run ${index} is missing`)
+ assert(text(run.runId), `multirun proof run ${index} has no run id`)
+ assert(text(run.conversationId), `multirun proof run ${index} has no conversation id`)
+ assert(text(run.branchId), `multirun proof run ${index} has no branch id`)
+ assert(
+ Number.isInteger(run.eventCount) && run.eventCount > 0,
+ `multirun proof run ${index} has no streamed events`,
+ )
+ assert(run.eventIdsUnique === true, `multirun proof run ${index} has duplicate event identities`)
+ assert(text(run.localEnvironmentId), `multirun proof run ${index} has no local environment id`)
+ assert(
+ text(run.providerEnvironmentId),
+ `multirun proof run ${index} has no provider environment id`,
+ )
+ assert(
+ Array.isArray(run.identifiers) &&
+ run.identifiers.length === PROVIDER_IDENTIFIER_KINDS.length &&
+ run.identifiers.every(
+ (identifier, identifierIndex) =>
+ object(identifier) &&
+ identifier.kind === PROVIDER_IDENTIFIER_KINDS[identifierIndex] &&
+ text(identifier.id),
+ ),
+ `multirun proof run ${index} has incomplete provider identity`,
+ )
+ assert(
+ run.identifiers[0].id === run.providerEnvironmentId,
+ `multirun proof run ${index} has a mismatched provider environment identity`,
+ )
+}
+
+/** Validates the complete two-conversation proof used by LIVE-07. */
+export function assertMultirunProof(proof) {
+ assert(object(proof), 'LIVE-07 multirun evidence is missing')
+ assert(
+ proof.schemaVersion === MULTIRUN_PROOF_SCHEMA,
+ 'LIVE-07 multirun evidence has an unsupported schema',
+ )
+ assert(proof.status === 'passed', 'LIVE-07 multirun evidence did not pass')
+ assert(object(proof.provider), 'LIVE-07 multirun evidence has no provider receipt')
+ assert(proof.provider.lifecycle === 'retained', 'LIVE-07 multirun proof is not retained')
+ assert(proof.provider.runner === 'opencode', 'LIVE-07 multirun proof used an unproven runner')
+ assert(text(proof.provider.endpoint), 'LIVE-07 multirun proof has no endpoint')
+ assert(text(proof.provider.model), 'LIVE-07 multirun proof has no model')
+ assert(
+ proof.provider.credentialConfigured === true,
+ 'LIVE-07 multirun proof did not confirm configured credentials',
+ )
+ assert(proof.error === null, 'LIVE-07 multirun proof retained an execution error')
+
+ assert(object(proof.conversations?.first), 'LIVE-07 multirun proof has no first conversation')
+ assert(object(proof.conversations?.second), 'LIVE-07 multirun proof has no second conversation')
+ assert(
+ text(proof.conversations.first.conversationId),
+ 'LIVE-07 first conversation identity is missing',
+ )
+ assert(
+ text(proof.conversations.second.conversationId),
+ 'LIVE-07 second conversation identity is missing',
+ )
+ assert(
+ proof.conversations.first.conversationId !== proof.conversations.second.conversationId,
+ 'LIVE-07 multirun proof reused the conversation identity',
+ )
+ assert(text(proof.conversations.first.branchId), 'LIVE-07 first branch identity is missing')
+ assert(text(proof.conversations.second.branchId), 'LIVE-07 second branch identity is missing')
+ assert(
+ proof.conversations.first.branchId !== proof.conversations.second.branchId,
+ 'LIVE-07 multirun proof reused the branch identity',
+ )
+
+ assert(
+ Array.isArray(proof.runs) && proof.runs.length === 2,
+ 'LIVE-07 multirun proof requires exactly two runs',
+ )
+ assert(
+ new Set(proof.runs.map((run) => run?.runId)).size === 2,
+ 'LIVE-07 multirun proof reused a run identity',
+ )
+ proof.runs.forEach(assertRun)
+ assert(
+ new Set(proof.runs.map((run) => run.conversationId)).size === 2,
+ 'LIVE-07 runs are not on independent conversations',
+ )
+ assert(
+ new Set(proof.runs.map((run) => run.branchId)).size === 2,
+ 'LIVE-07 runs are not on independent branches',
+ )
+ assert(
+ new Set(proof.runs.map((run) => run.localEnvironmentId)).size === 2,
+ 'LIVE-07 multirun proof reused a local environment identity',
+ )
+ const conversations = new Map([
+ [proof.conversations.first.conversationId, proof.conversations.first.branchId],
+ [proof.conversations.second.conversationId, proof.conversations.second.branchId],
+ ])
+ assert(
+ proof.runs.every((run) => conversations.get(run.conversationId) === run.branchId),
+ 'LIVE-07 runs do not bind to the recorded conversations and branches',
+ )
+ for (const kind of PROVIDER_IDENTIFIER_KINDS) {
+ const identifiers = proof.runs.map(
+ (run) => run.identifiers.find((identifier) => identifier.kind === kind)?.id,
+ )
+ assert(
+ new Set(identifiers).size === proof.runs.length,
+ `LIVE-07 multirun proof reused a ${kind} identity`,
+ )
+ }
+
+ assert(object(proof.overlap), 'LIVE-07 multirun overlap evidence is missing')
+ assert(
+ proof.overlap.activeRunCount === 2,
+ 'LIVE-07 multirun proof did not overlap two active runs',
+ )
+ assert(
+ proof.overlap.independentConversations === true,
+ 'LIVE-07 multirun proof did not keep conversations independent',
+ )
+ assert(
+ Number.isInteger(proof.overlap.workStripCount) && proof.overlap.workStripCount >= 2,
+ 'LIVE-07 multirun proof did not expose both runs in the work strip',
+ )
+ assert(
+ Number.isInteger(proof.overlap.renderedWorkStripCount) &&
+ proof.overlap.renderedWorkStripCount >= 2,
+ 'LIVE-07 multirun proof did not render both work-strip rows',
+ )
+ assert(
+ Array.isArray(proof.overlap.streamEventCounts) && proof.overlap.streamEventCounts.length === 2,
+ 'LIVE-07 multirun stream evidence is incomplete',
+ )
+ assert(
+ proof.overlap.streamEventCounts.every(
+ (entry) =>
+ object(entry) && text(entry.runId) && Number.isInteger(entry.count) && entry.count > 0,
+ ),
+ 'LIVE-07 multirun stream evidence has no events for every run',
+ )
+ const runIds = new Set(proof.runs.map((run) => run.runId))
+ assert(
+ new Set(proof.overlap.streamEventCounts.map((entry) => entry.runId)).size === 2 &&
+ proof.overlap.streamEventCounts.every((entry) => runIds.has(entry.runId)),
+ 'LIVE-07 multirun stream evidence does not map to both runs',
+ )
+
+ assert(object(proof.focus), 'LIVE-07 focus evidence is missing')
+ const [firstRun, secondRun] = proof.runs
+ assert(firstRun.status === 'completed', 'LIVE-07 first run did not complete')
+ assert(
+ ['aborted', 'cancelled'].includes(secondRun.status),
+ 'LIVE-07 second run was not cancelled',
+ )
+ assert(
+ proof.focus.beforeRunId === secondRun.runId,
+ 'LIVE-07 focus did not foreground the newly admitted run',
+ )
+ assert(
+ proof.focus.firstSwitchRunId === firstRun.runId,
+ 'LIVE-07 focus did not switch to the first run',
+ )
+ assert(
+ proof.focus.secondSwitchRunId === secondRun.runId,
+ 'LIVE-07 focus did not switch back to the second run',
+ )
+ assert(
+ proof.focus.firstSwitchPreservedStatuses === true,
+ 'LIVE-07 focus switch did not preserve both run statuses',
+ )
+ assert(
+ proof.focus.secondSwitchPreservedStatuses === true,
+ 'LIVE-07 focus return did not preserve both run statuses',
+ )
+
+ assert(object(proof.cancellation), 'LIVE-07 cancellation evidence is missing')
+ assert(object(proof.cancellation.dispatch), 'LIVE-07 cancellation dispatch evidence is missing')
+ assert(
+ proof.cancellation.dispatch.eventKind === 'run.control.requested',
+ 'LIVE-07 cancellation dispatch used an unknown event kind',
+ )
+ assert(
+ proof.cancellation.dispatch.control === 'cancel',
+ 'LIVE-07 cancellation dispatch did not request cancel',
+ )
+ assert(
+ proof.cancellation.dispatch.runId === secondRun.runId,
+ 'LIVE-07 cancellation dispatch targeted the wrong run',
+ )
+ assert(
+ text(proof.cancellation.dispatch.operationId),
+ 'LIVE-07 cancellation dispatch has no operation identity',
+ )
+ assert(proof.cancellation.targetRunId === secondRun.runId, 'LIVE-07 cancelled the wrong run')
+ assert(
+ ['aborted', 'cancelled'].includes(proof.cancellation.targetStatus),
+ 'LIVE-07 cancellation did not reach a terminal status',
+ )
+ assert(
+ proof.cancellation.unaffectedRunId === firstRun.runId,
+ 'LIVE-07 cancellation has no unaffected run',
+ )
+ assert(
+ proof.cancellation.unaffectedStatusAtAck !== null,
+ 'LIVE-07 cancellation omitted the unaffected status',
+ )
+ assert(
+ proof.cancellation.unaffectedFinalStatus === 'completed',
+ 'LIVE-07 cancellation stopped the unaffected run',
+ )
+
+ assert(object(proof.replay), 'LIVE-07 restart replay evidence is missing')
+ assert(proof.replay.restartedRunCount === 2, 'LIVE-07 restart did not restore both runs')
+ assert(
+ proof.replay.noDuplicateEventIds === true,
+ 'LIVE-07 restart replay duplicated provider events',
+ )
+ assert(
+ proof.replay.eventSetsStable === true,
+ 'LIVE-07 restart replay changed provider event identities',
+ )
+
+ assert(object(proof.cleanup), 'LIVE-07 multirun cleanup evidence is missing')
+ assert(proof.cleanup.exact === true, 'LIVE-07 multirun cleanup was not exact')
+ assert(
+ Array.isArray(proof.cleanup.errors) && proof.cleanup.errors.length === 0,
+ 'LIVE-07 multirun cleanup has unresolved errors',
+ )
+ assert(
+ Array.isArray(proof.cleanup.resources) && proof.cleanup.resources.length === 2,
+ 'LIVE-07 multirun cleanup did not account for both resources',
+ )
+ assert(
+ proof.cleanup.resources.every(
+ (resource) =>
+ object(resource) &&
+ text(resource.runId) &&
+ text(resource.providerEnvironmentId) &&
+ text(resource.id) &&
+ resource.confirmed === true,
+ ),
+ 'LIVE-07 multirun cleanup did not confirm every resource',
+ )
+ const runsById = new Map(proof.runs.map((run) => [run.runId, run]))
+ assert(
+ proof.cleanup.resources.every(
+ (resource) =>
+ resource.providerEnvironmentId === runsById.get(resource.runId)?.providerEnvironmentId,
+ ),
+ 'LIVE-07 multirun cleanup did not bind provider environments to runs',
+ )
+ assert(
+ new Set(proof.cleanup.resources.map((resource) => resource.runId)).size === 2 &&
+ proof.cleanup.resources.every((resource) => runIds.has(resource.runId)),
+ 'LIVE-07 multirun cleanup did not bind both run identities',
+ )
+ assert(
+ proof.cleanup.activeResourceDelta === 0,
+ 'LIVE-07 multirun cleanup changed active resource count',
+ )
+ assert(proof.cleanup.accountStable === true, 'LIVE-07 multirun cleanup changed account identity')
+ assert(
+ proof.cleanup.workspace?.protectedStoreClean === true,
+ 'LIVE-07 multirun cleanup retained protected workspace state',
+ )
+ assert(
+ proof.cleanup.workspace?.temporaryRootRemoved === true,
+ 'LIVE-07 multirun cleanup retained its temporary workspace',
+ )
+
+ assert(object(proof.phases), 'LIVE-07 multirun phase evidence is missing')
+ for (const phase of REQUIRED_PHASES)
+ assert(proof.phases[phase]?.status === 'passed', `LIVE-07 multirun phase ${phase} did not pass`)
+ return proof
+}
diff --git a/scripts/live-required/provider-observation.mjs b/scripts/live-required/provider-observation.mjs
new file mode 100644
index 0000000..da4cf9d
--- /dev/null
+++ b/scripts/live-required/provider-observation.mjs
@@ -0,0 +1,166 @@
+import { NetworkError, QuotaError, ServerError, TimeoutError } from '@tangle-network/sandbox'
+
+import { sleep } from '../live-bridge/process.mjs'
+
+export const PROVIDER_OBSERVATION_INTERVAL_MS = 500
+const defaultNow = () => performance.now()
+
+function transientDelay(error, intervalMs) {
+ if (error instanceof QuotaError) {
+ const retryAfterMs =
+ Number.isFinite(error.retryAfterMs) && error.retryAfterMs >= 0 ? error.retryAfterMs : 0
+ return Math.max(intervalMs, retryAfterMs)
+ }
+ if (error instanceof NetworkError || error instanceof TimeoutError) return intervalMs
+ if (error instanceof ServerError && [502, 503, 504].includes(error.status)) return intervalMs
+ return undefined
+}
+
+function validateLabel(label) {
+ if (typeof label !== 'string' || label.length === 0) {
+ throw new TypeError('provider observation label is required')
+ }
+}
+
+function validateTimeout(timeoutMs) {
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
+ throw new RangeError('provider observation timeout must be positive')
+ }
+}
+
+function validateNow(now) {
+ if (typeof now !== 'function') throw new TypeError('provider observation clock is required')
+}
+
+export function createProviderObservationDeadline(label, timeoutMs, { now = defaultNow } = {}) {
+ validateLabel(label)
+ validateTimeout(timeoutMs)
+ validateNow(now)
+ const startedAt = now()
+ if (!Number.isFinite(startedAt)) {
+ throw new RangeError('provider observation clock must return a finite number')
+ }
+ return Object.freeze({
+ label,
+ timeoutMs,
+ deadline: startedAt + timeoutMs,
+ now,
+ })
+}
+
+function validateDeadline(deadline) {
+ if (
+ deadline === null ||
+ typeof deadline !== 'object' ||
+ !Number.isFinite(deadline.deadline) ||
+ !Number.isFinite(deadline.timeoutMs) ||
+ deadline.timeoutMs <= 0 ||
+ typeof deadline.now !== 'function'
+ ) {
+ throw new TypeError('provider observation deadline is invalid')
+ }
+}
+
+function timeoutError(deadline, label, attempts, transientFailures, lastTransientError, stage) {
+ const suffix =
+ stage === undefined
+ ? ''
+ : `; ${stage === 'operation' ? 'provider operation' : stage} exceeded deadline`
+ const error = new Error(
+ `${label} timed out after ${deadline.timeoutMs}ms (${attempts} attempts, ${transientFailures} transient failures)${suffix}`,
+ lastTransientError === undefined ? undefined : { cause: lastTransientError },
+ )
+ error.code = 'PROVIDER_OBSERVATION_TIMEOUT'
+ error.deadline = deadline.deadline
+ error.attempts = attempts
+ error.transientFailures = transientFailures
+ return error
+}
+
+function assertBeforeDeadline(
+ deadline,
+ label,
+ attempts,
+ transientFailures,
+ lastTransientError,
+ stage,
+) {
+ const now = deadline.now()
+ if (!Number.isFinite(now)) {
+ throw new RangeError('provider observation clock must return a finite number')
+ }
+ if (now >= deadline.deadline) {
+ throw timeoutError(deadline, label, attempts, transientFailures, lastTransientError, stage)
+ }
+ return now
+}
+
+export function assertProviderObservationDeadline(deadline, label, stage = 'operation') {
+ validateLabel(label)
+ validateDeadline(deadline)
+ return assertBeforeDeadline(deadline, label, 0, 0, undefined, stage)
+}
+
+export async function waitForProviderObservation(
+ label,
+ observe,
+ timeoutMs,
+ {
+ intervalMs = PROVIDER_OBSERVATION_INTERVAL_MS,
+ now = defaultNow,
+ pause = sleep,
+ deadline: providedDeadline,
+ } = {},
+) {
+ validateLabel(label)
+ if (typeof observe !== 'function') throw new TypeError('provider observer is required')
+ if (providedDeadline === undefined) validateTimeout(timeoutMs)
+ else validateDeadline(providedDeadline)
+ if (!Number.isFinite(intervalMs) || intervalMs <= 0) {
+ throw new RangeError('provider observation interval must be positive')
+ }
+ if (typeof pause !== 'function') throw new TypeError('provider observation pause is required')
+
+ const deadline = providedDeadline ?? createProviderObservationDeadline(label, timeoutMs, { now })
+ let attempts = 0
+ let transientFailures = 0
+ let lastTransientError
+ for (;;) {
+ assertBeforeDeadline(deadline, label, attempts, transientFailures, lastTransientError)
+ attempts += 1
+ let delayMs = intervalMs
+ let value
+ try {
+ value = await observe()
+ } catch (error) {
+ if (deadline.now() >= deadline.deadline) {
+ throw timeoutError(deadline, label, attempts, transientFailures, error, 'operation')
+ }
+ const retryDelayMs = transientDelay(error, intervalMs)
+ if (retryDelayMs === undefined) throw error
+ transientFailures += 1
+ lastTransientError = error
+ delayMs = retryDelayMs
+ }
+
+ const observedAt = assertBeforeDeadline(
+ deadline,
+ label,
+ attempts,
+ transientFailures,
+ lastTransientError,
+ 'operation',
+ )
+ if (value !== undefined) return value
+
+ await pause(Math.min(delayMs, deadline.deadline - observedAt))
+ assertBeforeDeadline(
+ deadline,
+ label,
+ attempts,
+ transientFailures,
+ lastTransientError,
+ 'retry delay',
+ )
+ }
+}
diff --git a/scripts/live-required/supervisor.mjs b/scripts/live-required/supervisor.mjs
index b3b43fd..aec3eb9 100644
--- a/scripts/live-required/supervisor.mjs
+++ b/scripts/live-required/supervisor.mjs
@@ -1,111 +1,1091 @@
-import { access, readFile } from 'node:fs/promises'
-import { join, resolve } from 'node:path'
-import { pathToFileURL } from 'node:url'
+import { createHash } from 'node:crypto'
+import { resolveModelProvider } from './configuration.mjs'
import {
PROOF_OPERATIONS,
proofInvocation,
proofReceipt,
protectedUnavailable,
+ safeMessage,
+ scalarMeasurement,
} from './contracts.mjs'
+import { DEFAULT_TANGLE_ROUTER_MODEL } from './model-defaults.mjs'
-export async function runSupervisorFlow({
- repository,
- environment,
- invocationId = proofInvocation('live-supervisor'),
-}) {
- const startedAt = new Date().toISOString()
- const rootDir = environment.BRAID_SUPERVISOR_ROOT
- const supervisorId = environment.BRAID_SUPERVISOR_ID
- const workerId = environment.BRAID_SUPERVISOR_WORKER
- if (!rootDir || !supervisorId || !workerId) {
+const SUPERVISOR_CHECKS = Object.freeze([
+ 'snapshot',
+ 'spend-status',
+ 'steering',
+ 'steering-acknowledged',
+ 'cancellation',
+ 'reconnect',
+ 'terminal-takeover',
+])
+const DEFAULT_TIMEOUT_MS = 60_000
+const DEFAULT_POLL_INTERVAL_MS = 100
+const DEFAULT_SUPERVISOR_RUNNER = 'opencode'
+const DEFAULT_SUPERVISOR_MODEL = DEFAULT_TANGLE_ROUTER_MODEL
+const DEFAULT_SUPERVISOR_MODEL_PROVIDER = 'tangle-router'
+const DEFAULT_SANDBOX_ENDPOINT = 'https://sandbox.tangle.tools'
+const DEFAULT_SUPERVISOR_CONNECTION_KIND = 'tangle-sandbox'
+const DEFAULT_SUPERVISOR_TASK =
+ 'Start the assigned interactive worker and remain available for supervision.'
+const SPEND_FIELDS = Object.freeze(['iterations', 'tokensInput', 'tokensOutput', 'usd', 'ms'])
+const TOTAL_FIELDS = Object.freeze([
+ 'tokensInput',
+ 'tokensOutput',
+ 'tokensTotal',
+ 'usd',
+ 'latencyMs',
+])
+function requiredText(value, name) {
+ if (typeof value !== 'string' || value.trim().length === 0)
+ throw new Error(`${name} must be a non-empty string`)
+ return value.trim()
+}
+
+function requiredProtectedText(value, name) {
+ if (typeof value !== 'string' || value.trim().length === 0)
throw protectedUnavailable(
'PROTECTED_SUPERVISOR_CONFIGURATION_REQUIRED',
- 'Supervisor proof requires BRAID_SUPERVISOR_ROOT, BRAID_SUPERVISOR_ID, and BRAID_SUPERVISOR_WORKER for a real runtime root',
+ `Supervisor proof requires ${name}`,
)
- }
- const distRoot = resolve(repository, 'dist', 'adapters', 'runtime')
+ return value.trim()
+}
+
+function configuredDuration(environment, names, fallback, label) {
+ const configured = names
+ .map((name) => environment[name])
+ .find((value) => typeof value === 'string' && value.trim().length > 0)
+ if (configured === undefined) return fallback
+ const value = Number(configured)
+ if (!Number.isSafeInteger(value) || value < 1 || value > 300_000)
+ throw protectedUnavailable(
+ 'PROTECTED_SUPERVISOR_CONFIGURATION_INVALID',
+ `${label} must be an integer between 1 and 300000 milliseconds`,
+ )
+ return value
+}
+
+function publicRuntimeApi(runtime) {
+ if (runtime !== undefined) return runtime
+ return Promise.all([
+ import('@tangle-network/agent-runtime/kernel'),
+ import('@tangle-network/agent-runtime/tui'),
+ ]).then(([kernel, tui]) => ({ ...kernel, ...tui }))
+}
+
+async function loadPublicRuntimeApi(runtime) {
try {
- await access(join(distRoot, 'supervisor-watch.js'))
- await access(join(distRoot, 'supervisor-control.js'))
+ const api = await publicRuntimeApi(runtime)
+ if (api === null || typeof api !== 'object')
+ throw new Error('public runtime API is not an object')
+ return api
} catch (error) {
throw protectedUnavailable(
- 'BRAID_BUILD_REQUIRED',
- 'The compiled Braid supervisor adapters are unavailable; run the release build before live checks',
+ 'RUNTIME_SUPERVISOR_API_REQUIRED',
+ 'The installed agent-runtime package does not expose the public supervisor APIs',
error,
)
}
+}
+
+function requireRuntimeFunctions(runtime) {
+ const required = [
+ 'loadTopSnapshot',
+ 'supervisorRunDir',
+ 'writeWorkerSteer',
+ 'readWorkerSteerAcknowledgement',
+ 'cancelWorker',
+ 'readWorkerCancellation',
+ ]
+ for (const name of required) {
+ if (typeof runtime[name] !== 'function')
+ throw protectedUnavailable(
+ 'RUNTIME_SUPERVISOR_API_REQUIRED',
+ `The installed agent-runtime package is missing public supervisor API '${name}'`,
+ )
+ }
+}
+
+function findTarget(snapshot, supervisorId, workerId) {
+ if (
+ snapshot === null ||
+ typeof snapshot !== 'object' ||
+ snapshot.completeness !== 'complete' ||
+ !Array.isArray(snapshot.diagnostics) ||
+ snapshot.diagnostics.length !== 0
+ ) {
+ throw new Error(
+ `runtime supervisor snapshot is incomplete: ${JSON.stringify({
+ completeness: snapshot?.completeness ?? null,
+ diagnostics: Array.isArray(snapshot?.diagnostics) ? snapshot.diagnostics : null,
+ })}`,
+ )
+ }
+ const supervisor = Array.isArray(snapshot.supervisors)
+ ? snapshot.supervisors.find((candidate) => candidate?.id === supervisorId)
+ : undefined
+ const worker = supervisor?.workers?.find((candidate) => candidate?.id === workerId)
+ if (supervisor === undefined || worker === undefined) {
+ throw new Error(
+ `runtime snapshot contains no exact supervisor '${supervisorId}' and worker '${workerId}'`,
+ )
+ }
+ if (typeof supervisor.status !== 'string' || supervisor.status.length === 0)
+ throw new Error(`runtime supervisor '${supervisorId}' has no status`)
+ if (!['running', 'done', 'down', 'cancelled'].includes(worker.status))
+ throw new Error(`runtime worker '${workerId}' has an unknown status`)
+ return { snapshot, supervisor, worker }
+}
+
+function readTarget(runtime, rootDir, supervisorId, workerId) {
+ return findTarget(runtime.loadTopSnapshot(rootDir), supervisorId, workerId)
+}
+
+function numericFields(value, fields) {
+ return (
+ value !== null &&
+ typeof value === 'object' &&
+ fields.every((field) => typeof value[field] === 'number' && Number.isFinite(value[field]))
+ )
+}
+
+function numericView(value, fields) {
+ if (!numericFields(value, fields)) return null
+ return Object.fromEntries(fields.map((field) => [field, value[field]]))
+}
+
+function spendView(supervisor, worker) {
+ const workerSpend = numericView(worker.spend, SPEND_FIELDS)
+ const workerMetered = numericView(worker.metered, SPEND_FIELDS)
+ const driverSpend = numericView(supervisor.driverSpend, SPEND_FIELDS)
+ const totals = numericView(supervisor.totals, TOTAL_FIELDS)
+ return { workerSpend, workerMetered, driverSpend, totals }
+}
+
+function knownSpend(view) {
+ return view.workerSpend !== null && view.workerMetered !== null
+}
+
+function changedSpend(before, after) {
+ return JSON.stringify(before) !== JSON.stringify(after)
+}
+
+function snapshotObservation(target) {
+ const spend = spendView(target.supervisor, target.worker)
+ return {
+ generatedAt: target.snapshot.generatedAt,
+ completeness: target.snapshot.completeness,
+ diagnostics: target.snapshot.diagnostics.length,
+ supervisor: {
+ id: target.supervisor.id,
+ status: target.supervisor.status,
+ workers: target.supervisor.workers.length,
+ totals: spend.totals,
+ },
+ worker: {
+ id: target.worker.id,
+ status: target.worker.status,
+ spend: spend.workerSpend,
+ metered: spend.workerMetered,
+ },
+ }
+}
+
+function delay(ms) {
+ return new Promise((resolve) => setTimeout(resolve, ms))
+}
+
+async function waitForSnapshot({
+ runtime,
+ rootDir,
+ supervisorId,
+ workerId,
+ predicate,
+ label,
+ timeoutMs,
+ pollMs,
+}) {
+ const deadline = Date.now() + timeoutMs
+ let latest
+ while (true) {
+ latest = readTarget(runtime, rootDir, supervisorId, workerId)
+ if (predicate(latest)) return latest
+ if (Date.now() >= deadline)
+ throw new Error(
+ `${label} was not observed before ${timeoutMs}ms: ${JSON.stringify(snapshotObservation(latest))}`,
+ )
+ await delay(Math.min(pollMs, Math.max(1, deadline - Date.now())))
+ }
+}
+
+async function waitForAcknowledgement({
+ read,
+ eventDir,
+ operationId,
+ label,
+ timeoutMs,
+ pollMs,
+ accepted,
+}) {
+ const deadline = Date.now() + timeoutMs
+ let latest
+ while (true) {
+ latest = read(eventDir, operationId)
+ if (latest !== undefined && (accepted === undefined || accepted(latest))) return latest
+ if (Date.now() >= deadline)
+ throw new Error(
+ `${label} was not acknowledged before ${timeoutMs}ms: ${JSON.stringify({ operationId, response: latest })}`,
+ )
+ await delay(Math.min(pollMs, Math.max(1, deadline - Date.now())))
+ }
+}
+
+function assertSteerResult(result, workerId, operationId, message) {
+ if (
+ result === null ||
+ typeof result !== 'object' ||
+ result.worker !== workerId ||
+ result.request?.operationId !== operationId ||
+ result.request?.message !== message ||
+ !/^sha256:[0-9a-f]{64}$/u.test(result.request?.requestDigest ?? '')
+ )
+ throw new Error('runtime supervisor returned an invalid worker steer admission')
+}
+
+function assertSteerAcknowledgement(acknowledgement, request, workerId, operationId) {
+ if (
+ acknowledgement === null ||
+ typeof acknowledgement !== 'object' ||
+ acknowledgement.operationId !== operationId ||
+ acknowledgement.worker !== workerId ||
+ acknowledgement.requestDigest !== request.requestDigest ||
+ acknowledgement.effect !== 'delivered'
+ )
+ throw new Error(
+ `worker steer '${operationId}' did not report delivered effect: ${JSON.stringify({
+ worker: acknowledgement.worker,
+ effect: acknowledgement.effect,
+ requestDigest: acknowledgement.requestDigest,
+ })}`,
+ )
+}
+
+function assertCancellationAcknowledgement(acknowledgement, workerId, operationId) {
+ if (
+ acknowledgement === null ||
+ typeof acknowledgement !== 'object' ||
+ acknowledgement.operationId !== operationId ||
+ acknowledgement.worker !== workerId ||
+ acknowledgement.effect !== 'cancelled' ||
+ !Array.isArray(acknowledgement.terminated) ||
+ !acknowledgement.terminated.includes(workerId)
+ )
+ throw new Error(
+ `worker cancellation '${operationId}' did not report a proven effect: ${JSON.stringify({
+ worker: acknowledgement.worker,
+ effect: acknowledgement.effect,
+ terminated: acknowledgement.terminated,
+ })}`,
+ )
+}
+
+function configuredOperation(environment, name, invocationId) {
+ return requiredText(
+ environment[`BRAID_SUPERVISOR_${name}_OPERATION_ID`] ??
+ `braid-live-supervisor-${invocationId}-${name.toLowerCase()}`,
+ `${name} operation id`,
+ )
+}
+
+function proofConfig(environment) {
+ return {
+ endpoint: environment.BRAID_SUPERVISOR_ENDPOINT ?? null,
+ connectionId: environment.BRAID_SUPERVISOR_CONNECTION_ID ?? null,
+ connectionKind: environment.BRAID_SUPERVISOR_CONNECTION_KIND ?? null,
+ credentialConfigured:
+ environment.BRAID_SUPERVISOR_CREDENTIAL_CONFIGURED === undefined
+ ? null
+ : environment.BRAID_SUPERVISOR_CREDENTIAL_CONFIGURED === '1',
+ model: environment.BRAID_SUPERVISOR_MODEL ?? null,
+ runner: environment.BRAID_SUPERVISOR_RUNNER ?? null,
+ }
+}
+
+export function supervisorProfile(environment) {
+ const runner = environment.BRAID_SUPERVISOR_RUNNER?.trim() || DEFAULT_SUPERVISOR_RUNNER
+ const model = environment.BRAID_SUPERVISOR_MODEL?.trim() || DEFAULT_SUPERVISOR_MODEL
+ const modelProvider = resolveModelProvider({
+ override: environment.BRAID_SUPERVISOR_MODEL_PROVIDER,
+ fallback: DEFAULT_SUPERVISOR_MODEL_PROVIDER,
+ })
+ return {
+ name: 'Braid live supervisor',
+ description: 'Protected LIVE-11 supervisor profile',
+ version: '1.0.0',
+ harness: runner,
+ model: { provider: modelProvider, default: model, reasoningEffort: 'none' },
+ prompt: {
+ instructions: ['Remain available for the protected LIVE-11 supervisor proof.'],
+ },
+ }
+}
+
+export function supervisorTask(environment) {
+ return requiredText(
+ environment.BRAID_SUPERVISOR_TASK?.trim() || DEFAULT_SUPERVISOR_TASK,
+ 'BRAID_SUPERVISOR_TASK',
+ )
+}
+
+function firstConfigured(environment, names) {
+ return names
+ .map((name) => environment[name])
+ .find((value) => typeof value === 'string' && value.trim().length > 0)
+ ?.trim()
+}
+
+export function supervisorConnection(environment) {
+ const endpoint = environment.BRAID_SUPERVISOR_ENDPOINT?.trim() || DEFAULT_SANDBOX_ENDPOINT
+ const apiKey = firstConfigured(environment, [
+ 'BRAID_SUPERVISOR_API_KEY',
+ 'BRAID_SUPERVISOR_AUTH',
+ 'BRAID_SUPERVISOR_BEARER',
+ 'TANGLE_API_KEY',
+ ])
+ if (apiKey === undefined)
+ throw protectedUnavailable(
+ 'PROTECTED_CREDENTIAL_REQUIRED',
+ 'LIVE-11 supervisor requires BRAID_SUPERVISOR_API_KEY, BRAID_SUPERVISOR_AUTH, BRAID_SUPERVISOR_BEARER, or TANGLE_API_KEY',
+ )
+ const kind =
+ environment.BRAID_SUPERVISOR_CONNECTION_KIND?.trim() || DEFAULT_SUPERVISOR_CONNECTION_KIND
+ return {
+ endpoint,
+ apiKey,
+ kind,
+ }
+}
+
+export function supervisorWorkerEnvironment(environment, invocationId) {
+ const workspaceDir = environment.BRAID_SUPERVISOR_WORKSPACE?.trim()
+ const name =
+ environment.BRAID_SUPERVISOR_WORKER_NAME?.trim() || `braid-live-supervisor-${invocationId}`
+ return {
+ ...(workspaceDir === undefined ? {} : { workspace: { cwd: workspaceDir } }),
+ name,
+ metadata: {
+ owner: 'braid-live-supervisor',
+ proof: 'LIVE-11',
+ invocationId,
+ },
+ }
+}
+
+/**
+ * Prove one Runtime supervisor through its published read and control APIs.
+ *
+ * A protected run provisions its own Runtime supervisor unless all three legacy identifiers are
+ * supplied as an explicit external-resource override. The provisioner owns the run and returns
+ * its exact identifiers plus a cleanup function; Braid never reads or writes Runtime files.
+ */
+function supervisorConfiguration(environment) {
+ const values = {
+ rootDir: environment.BRAID_SUPERVISOR_ROOT,
+ supervisorId: environment.BRAID_SUPERVISOR_ID,
+ workerId: environment.BRAID_SUPERVISOR_WORKER,
+ }
+ const configured = Object.values(values).filter(
+ (value) => typeof value === 'string' && value.trim().length > 0,
+ ).length
+ if (configured === 0) return undefined
+ if (configured !== Object.keys(values).length)
+ throw protectedUnavailable(
+ 'PROTECTED_SUPERVISOR_CONFIGURATION_INVALID',
+ 'BRAID_SUPERVISOR_ROOT, BRAID_SUPERVISOR_ID, and BRAID_SUPERVISOR_WORKER must be set together',
+ )
+ return {
+ mode: 'configured',
+ rootDir: requiredProtectedText(values.rootDir, 'BRAID_SUPERVISOR_ROOT'),
+ supervisorId: requiredProtectedText(values.supervisorId, 'BRAID_SUPERVISOR_ID'),
+ workerId: requiredProtectedText(values.workerId, 'BRAID_SUPERVISOR_WORKER'),
+ providers: undefined,
+ terminalTakeover: 'unspecified',
+ cleanup: undefined,
+ }
+}
+
+function provisionRequest({
+ invocationId,
+ task,
+ timeoutMs,
+ pollMs,
+ profile,
+ connection,
+ workerEnvironment,
+ workspaceDir,
+}) {
+ return {
+ invocationId,
+ task,
+ profile,
+ connection,
+ ...(workerEnvironment === undefined ? {} : { workerEnvironment }),
+ workspaceDir: workspaceDir || undefined,
+ timeoutMs,
+ pollMs,
+ }
+}
+
+function validateProvisionedSupervisor(value) {
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
+ throw new Error('Runtime supervisor provisioner returned no receipt')
+ const rootDir = requiredText(value.rootDir, 'Runtime provision root directory')
+ const supervisorId = requiredText(value.supervisorId, 'Runtime provision supervisor id')
+ const workerId = requiredText(value.workerId, 'Runtime provision worker id')
+ if (typeof value.cleanup !== 'function')
+ throw new Error('Runtime supervisor provision receipt has no cleanup function')
+ const terminalTakeover = value.terminalTakeover ?? 'unspecified'
+ if (!['required', 'unsupported', 'unspecified'].includes(terminalTakeover))
+ throw new Error(
+ 'Runtime supervisor provision receipt has an invalid terminal takeover requirement',
+ )
+ return {
+ mode: 'provisioned',
+ rootDir,
+ supervisorId,
+ workerId,
+ providers: value.providers,
+ terminalTakeover,
+ cleanup: value.cleanup,
+ }
+}
+
+async function acquireSupervisor({
+ environment,
+ invocationId,
+ runtimeApi,
+ timeoutMs,
+ pollMs,
+ provision,
+ task,
+ profile,
+ connection,
+ workerEnvironment,
+}) {
+ const configured = supervisorConfiguration(environment)
+ if (configured !== undefined) return configured
+ const provisioner = provision ?? runtimeApi.provisionSupervisor
+ if (typeof provisioner !== 'function')
+ throw protectedUnavailable(
+ 'RUNTIME_SUPERVISOR_PROVISION_REQUIRED',
+ 'The installed agent-runtime package must expose provisionSupervisor for the protected LIVE-11 path',
+ )
+ try {
+ const receipt = await provisioner(
+ provisionRequest({
+ invocationId,
+ task: task ?? supervisorTask(environment),
+ profile: profile ?? supervisorProfile(environment),
+ connection: connection ?? supervisorConnection(environment),
+ workerEnvironment:
+ workerEnvironment ?? supervisorWorkerEnvironment(environment, invocationId),
+ workspaceDir: environment.BRAID_SUPERVISOR_WORKSPACE?.trim(),
+ timeoutMs,
+ pollMs,
+ }),
+ )
+ return validateProvisionedSupervisor(receipt)
+ } catch (error) {
+ if (error?.unavailable === true) throw error
+ throw new Error(
+ `Runtime supervisor provisioning failed before LIVE-11 controls: ${safeMessage(error, environment)}`,
+ {
+ cause: error,
+ },
+ )
+ }
+}
+
+function notOwnedCleanup(binding) {
+ return {
+ status: 'not-owned',
+ rootDir: binding.rootDir,
+ supervisorId: binding.supervisorId,
+ workerId: binding.workerId,
+ supervisorStatus: null,
+ workerStatus: null,
+ resourcesReleased: null,
+ remainingResources: null,
+ }
+}
+
+function validateCleanupReceipt(value, binding) {
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
+ throw new Error('Runtime supervisor cleanup returned no receipt')
+ if (value.status !== 'completed')
+ throw new Error(`Runtime supervisor cleanup was not completed: ${String(value.status)}`)
+ if (value.rootDir !== binding.rootDir)
+ throw new Error('Runtime supervisor cleanup receipt names another root directory')
+ if (value.supervisorId !== binding.supervisorId)
+ throw new Error('Runtime supervisor cleanup receipt names another supervisor')
+ if (value.workerId !== binding.workerId)
+ throw new Error('Runtime supervisor cleanup receipt names another worker')
+ if (typeof value.supervisorStatus !== 'string' || value.supervisorStatus.length === 0)
+ throw new Error('Runtime supervisor cleanup receipt has no terminal supervisor status')
+ if (typeof value.workerStatus !== 'string' || value.workerStatus.length === 0)
+ throw new Error('Runtime supervisor cleanup receipt has no terminal worker status')
+ if (value.resourcesReleased !== true)
+ throw new Error('Runtime supervisor cleanup did not prove resource release')
+ if (!Array.isArray(value.remainingResources) || value.remainingResources.length !== 0)
+ throw new Error('Runtime supervisor cleanup left unconfirmed resources')
+ return {
+ status: 'completed',
+ rootDir: binding.rootDir,
+ supervisorId: binding.supervisorId,
+ workerId: binding.workerId,
+ supervisorStatus: value.supervisorStatus,
+ workerStatus: value.workerStatus,
+ resourcesReleased: true,
+ remainingResources: [],
+ }
+}
+
+function cleanupObservation(value) {
+ return {
+ status: value.status,
+ rootDir: value.rootDir,
+ supervisorId: value.supervisorId,
+ workerId: value.workerId,
+ supervisorStatus: value.supervisorStatus,
+ workerStatus: value.workerStatus,
+ resourcesReleased: value.resourcesReleased,
+ remainingResources: value.remainingResources,
+ }
+}
+
+export async function runSupervisorFlow({
+ environment = process.env,
+ invocationId = proofInvocation('live-supervisor'),
+ runtime,
+ providers,
+ provision,
+ task,
+ profile,
+ connection,
+ workerEnvironment,
+} = {}) {
+ const startedAt = new Date().toISOString()
+ const timeoutMs = configuredDuration(
+ environment,
+ ['BRAID_SUPERVISOR_TIMEOUT_MS', 'BRAID_LIVE_REQUIRED_TIMEOUT_MS'],
+ DEFAULT_TIMEOUT_MS,
+ 'Supervisor proof timeout',
+ )
+ const pollMs = configuredDuration(
+ environment,
+ ['BRAID_SUPERVISOR_POLL_MS'],
+ DEFAULT_POLL_INTERVAL_MS,
+ 'Supervisor proof poll interval',
+ )
+ const steerOperationId = configuredOperation(environment, 'STEER', invocationId)
+ const cancelOperationId = configuredOperation(environment, 'CANCEL', invocationId)
+ const message = requiredText(
+ environment.BRAID_SUPERVISOR_MESSAGE ?? `Braid live supervisor ${invocationId}`,
+ 'BRAID_SUPERVISOR_MESSAGE',
+ )
+ const runtimeApi = await loadPublicRuntimeApi(runtime)
+ requireRuntimeFunctions(runtimeApi)
+ const binding = await acquireSupervisor({
+ environment,
+ invocationId,
+ runtimeApi,
+ timeoutMs,
+ pollMs,
+ provision,
+ task,
+ profile,
+ connection,
+ workerEnvironment,
+ })
+ const { rootDir, supervisorId, workerId } = binding
+ const providerSource = providers ?? binding.providers
+ let cleanupStarted = false
+ let cleanupReceipt = notOwnedCleanup(binding)
+ const cleanupOwned = async () => {
+ if (cleanupStarted) return cleanupReceipt
+ cleanupStarted = true
+ if (binding.mode === 'configured') return cleanupReceipt
+ cleanupReceipt = validateCleanupReceipt(await binding.cleanup(), binding)
+ return cleanupReceipt
+ }
+
try {
- const [{ RuntimeSupervisorWatcher }, { RuntimeSupervisorController }] = await Promise.all([
- import(pathToFileURL(join(distRoot, 'supervisor-watch.js')).href),
- import(pathToFileURL(join(distRoot, 'supervisor-control.js')).href),
- ])
- const watcher = new RuntimeSupervisorWatcher()
- const first = watcher.snapshot(rootDir)
- const supervisor = first.supervisors.find((candidate) => candidate.id === supervisorId)
- const worker = supervisor?.workers.find(
- (candidate) => candidate.id === workerId || candidate.label === workerId,
- )
- if (!supervisor || !worker) {
+ const initial = readTarget(runtimeApi, rootDir, supervisorId, workerId)
+ if (initial.supervisor.status !== 'running')
throw new Error(
- `The configured runtime root contains no supervisor '${supervisorId}' with worker '${workerId}'`,
+ `supervisor '${supervisorId}' is ${initial.supervisor.status}; cancellation proof requires a running supervisor`,
)
- }
- const reconnected = watcher.reconnect(rootDir)
- const reconnectedSupervisor = reconnected.supervisors.find(
- (candidate) => candidate.id === supervisorId,
+ if (initial.worker.status !== 'running')
+ throw new Error(
+ `supervisor worker '${workerId}' is ${initial.worker.status}; cancellation proof requires a live worker`,
+ )
+ const initialSpend = spendView(initial.supervisor, initial.worker)
+ if (!knownSpend(initialSpend))
+ throw new Error(`runtime worker '${workerId}' did not report complete spend fields`)
+
+ const spendUpdated = await waitForSnapshot({
+ runtime: runtimeApi,
+ rootDir,
+ supervisorId,
+ workerId,
+ label: 'worker spend update',
+ timeoutMs,
+ pollMs,
+ predicate: (candidate) => {
+ const spend = spendView(candidate.supervisor, candidate.worker)
+ return (
+ candidate.worker.status === 'running' &&
+ knownSpend(spend) &&
+ changedSpend(initialSpend, spend)
+ )
+ },
+ })
+ const updatedSpend = spendView(spendUpdated.supervisor, spendUpdated.worker)
+
+ const reconnected = readTarget(runtimeApi, rootDir, supervisorId, workerId)
+ if (reconnected.worker.status !== 'running')
+ throw new Error(
+ `worker '${workerId}' stopped before reconnectable control proof: ${reconnected.worker.status}`,
+ )
+ const eventDir = requiredText(
+ runtimeApi.supervisorRunDir(rootDir, supervisorId),
+ 'Runtime supervisor event directory',
)
- if (!reconnectedSupervisor?.workers.some((candidate) => candidate.id === worker.id)) {
- throw new Error('supervisor reconnect did not recover the selected worker')
+
+ let terminalTakeover
+ if (typeof runtimeApi.attachWorker !== 'function') {
+ terminalTakeover = { status: 'unavailable', reason: 'Runtime has no public attachWorker API' }
+ } else if (providerSource === undefined) {
+ terminalTakeover = {
+ status: 'unavailable',
+ reason: 'No environment provider source was supplied for exact terminal takeover',
+ }
+ } else {
+ const attachment = await runtimeApi.attachWorker(eventDir, workerId, {
+ providers: providerSource,
+ })
+ if (attachment?.status === 'available' && attachment.handle !== undefined) {
+ terminalTakeover = { status: 'attached' }
+ } else {
+ terminalTakeover = {
+ status: 'unavailable',
+ reason: attachment?.reason ?? 'Runtime did not return an exact interactive handle',
+ }
+ }
}
- const message = environment.BRAID_SUPERVISOR_MESSAGE ?? `Braid live supervisor ${Date.now()}`
- const controller = new RuntimeSupervisorController({ watcher })
- const steered = controller.steerWorker(rootDir, supervisorId, worker.id, message, 'braid-live')
- if (steered.status !== 'queued' || !steered.requestId || !steered.file) {
- throw new Error('runtime supervisor rejected the typed worker steering request')
+ if (binding.terminalTakeover === 'required' && terminalTakeover.status !== 'attached')
+ throw new Error(
+ `Runtime provider supports terminal takeover, but LIVE-11 could not attach the exact worker: ${terminalTakeover.reason}`,
+ )
+
+ const steer = runtimeApi.writeWorkerSteer(rootDir, supervisorId, workerId, {
+ operationId: steerOperationId,
+ message,
+ source: 'braid-live-supervisor',
+ interrupt: true,
+ })
+ assertSteerResult(steer, workerId, steerOperationId, message)
+ const steerReplay = runtimeApi.writeWorkerSteer(rootDir, supervisorId, workerId, {
+ operationId: steerOperationId,
+ message,
+ source: 'braid-live-supervisor',
+ interrupt: true,
+ })
+ assertSteerResult(steerReplay, workerId, steerOperationId, message)
+ if (
+ steerReplay.replayed !== true ||
+ steerReplay.request.requestDigest !== steer.request.requestDigest
+ )
+ throw new Error('worker steer retry did not replay the same admitted operation')
+ const steerAcknowledgement = await waitForAcknowledgement({
+ read: runtimeApi.readWorkerSteerAcknowledgement,
+ eventDir,
+ operationId: steerOperationId,
+ label: 'worker steer acknowledgement',
+ timeoutMs,
+ pollMs,
+ })
+ assertSteerAcknowledgement(steerAcknowledgement, steer.request, workerId, steerOperationId)
+
+ const beforeCancel = readTarget(runtimeApi, rootDir, supervisorId, workerId)
+ if (beforeCancel.worker.status !== 'running')
+ throw new Error(
+ `worker '${workerId}' stopped before cancellation dispatch: ${beforeCancel.worker.status}`,
+ )
+ const cancel = runtimeApi.cancelWorker(eventDir, workerId, cancelOperationId, {
+ reason: 'Braid live supervisor cancellation proof',
+ source: 'braid-live-supervisor',
+ })
+ const cancelReplay = runtimeApi.cancelWorker(eventDir, workerId, cancelOperationId, {
+ reason: 'Braid live supervisor cancellation proof',
+ source: 'braid-live-supervisor',
+ })
+ if (
+ cancel?.operationId !== cancelOperationId ||
+ cancelReplay?.operationId !== cancelOperationId ||
+ cancelReplay?.worker !== workerId
+ )
+ throw new Error('worker cancellation retry did not preserve its operation identity')
+ const cancellationAcknowledgement = await waitForAcknowledgement({
+ read: runtimeApi.readWorkerCancellation,
+ eventDir,
+ operationId: cancelOperationId,
+ label: 'worker cancellation acknowledgement',
+ timeoutMs,
+ pollMs,
+ accepted: (value) => value?.effect !== 'cancel_requested',
+ })
+ assertCancellationAcknowledgement(cancellationAcknowledgement, workerId, cancelOperationId)
+
+ const final = await waitForSnapshot({
+ runtime: runtimeApi,
+ rootDir,
+ supervisorId,
+ workerId,
+ label: 'cancelled worker snapshot',
+ timeoutMs,
+ pollMs,
+ predicate: (candidate) => ['cancelled', 'down'].includes(candidate.worker.status),
+ })
+ const persistedCancellation = runtimeApi.readWorkerCancellation(eventDir, cancelOperationId)
+ assertCancellationAcknowledgement(persistedCancellation, workerId, cancelOperationId)
+
+ await cleanupOwned()
+ const provisioning = {
+ mode: binding.mode,
+ rootDir,
+ supervisorId,
+ workerId,
+ terminalTakeover: binding.terminalTakeover,
}
- const inbox = await readFile(steered.file, 'utf8')
- if (!inbox.includes(message))
- throw new Error('worker inbox did not contain the steering message')
+ const cleanup = cleanupObservation(cleanupReceipt)
const proof = proofReceipt({
invocationId,
operation: PROOF_OPERATIONS.supervisor,
startedAt,
completedAt: new Date().toISOString(),
+ config: proofConfig(environment),
+ runIds: [supervisorId, workerId],
facts: {
- supervisorId: supervisor.id,
- workerId: worker.id,
- steeringRequestId: steered.requestId,
- cancellationAvailable: false,
+ supervisorId,
+ workerId,
+ steeringRequestId: steer.request.operationId,
+ steeringOperationId: steerOperationId,
+ steeringEffect: steerAcknowledgement.effect,
+ cancellationOperationId: cancelOperationId,
+ cancellationEffect: cancellationAcknowledgement.effect,
+ initialStatus: initial.worker.status,
+ finalStatus: final.worker.status,
+ spendObserved: true,
+ statusObserved: true,
+ reconnectable: true,
+ terminalTakeover: terminalTakeover.status,
+ terminalTakeoverRequired: binding.terminalTakeover === 'required',
+ cancellationAvailable: true,
+ provisioned: binding.mode === 'provisioned',
+ cleanupVerified: binding.mode === 'provisioned',
+ },
+ checks: SUPERVISOR_CHECKS,
+ observations: {
+ snapshots: [
+ snapshotObservation(initial),
+ snapshotObservation(spendUpdated),
+ snapshotObservation(reconnected),
+ snapshotObservation(beforeCancel),
+ snapshotObservation(final),
+ ],
+ spend: { initial: initialSpend, updated: updatedSpend },
+ steering: {
+ operationId: steerOperationId,
+ requestDigest: steer.request.requestDigest,
+ replayed: steerReplay.replayed === true,
+ acknowledgement: {
+ operationId: steerAcknowledgement.operationId,
+ worker: steerAcknowledgement.worker,
+ effect: steerAcknowledgement.effect,
+ detail: steerAcknowledgement.detail,
+ },
+ },
+ cancellation: {
+ operationId: cancelOperationId,
+ acknowledgement: {
+ operationId: cancellationAcknowledgement.operationId,
+ worker: cancellationAcknowledgement.worker,
+ effect: cancellationAcknowledgement.effect,
+ terminated: cancellationAcknowledgement.terminated,
+ detail: cancellationAcknowledgement.detail,
+ },
+ replay: {
+ effect: cancelReplay.effect,
+ terminated: cancelReplay.terminated,
+ },
+ },
+ terminalTakeover,
+ provisioning,
+ cleanup,
},
- checks: ['snapshot', 'reconnect', 'steering'],
+ environment,
})
return {
- supervisor: supervisor.id,
- worker: worker.id,
+ status: 'passed',
+ measurements: [scalarMeasurement('LIVE-11')],
+ supervisor: supervisorId,
+ worker: workerId,
+ provisioning,
+ cleanup,
+ steering: {
+ operationId: steerOperationId,
+ effect: steerAcknowledgement.effect,
+ replayed: steerReplay.replayed === true,
+ },
+ cancellation: {
+ operationId: cancelOperationId,
+ effect: cancellationAcknowledgement.effect,
+ replayed: cancelReplay.operationId === cancelOperationId,
+ },
reconnect: true,
- steering: { status: steered.status, requestId: steered.requestId },
- cancellation: 'unavailable: published runtime has no external worker-cancel operation',
+ terminalTakeover,
proof,
}
} catch (error) {
- if (error?.unavailable === true) throw error
+ if (binding.mode === 'provisioned' && !cleanupStarted) {
+ try {
+ await cleanupOwned()
+ } catch (cleanupError) {
+ throw new AggregateError(
+ [error, cleanupError],
+ 'LIVE-11 failed and Runtime supervisor cleanup also failed',
+ )
+ }
+ }
throw error
}
}
-export async function runSupervisorCheck({ repository, environment }) {
- const invocationId = proofInvocation('live-supervisor')
- const direct = await runSupervisorFlow({ repository, environment, invocationId })
+export async function runSupervisorCheck({ environment }) {
+ const direct = await runSupervisorFlow({ environment, profile: supervisorProfile(environment) })
return {
- status: 'partial',
+ status: direct.status,
+ measurements: direct.measurements,
evidence: direct.proof,
- unavailable: [
- {
- row: 'LIVE-11',
- reason:
- 'The parent can prove snapshot, reconnect, and steering, but it has no worker-cancel operation. External adapters cannot certify LIVE-11.',
- },
- ],
+ }
+}
+
+function fixtureSpend(iteration) {
+ return {
+ iterations: iteration,
+ tokensInput: iteration * 2,
+ tokensOutput: iteration,
+ usd: iteration / 1000,
+ ms: iteration * 10,
+ }
+}
+
+function fixtureDigest(value) {
+ return `sha256:${createHash('sha256').update(JSON.stringify(value)).digest('hex')}`
+}
+
+/**
+ * Build a deterministic public-runtime substitute for self-tests.
+ *
+ * It models the published API and acknowledgement boundaries, including replay-safe operations;
+ * it never creates or reads Runtime supervisor files.
+ */
+export function createSupervisorProofFixture({
+ rootDir = 'fixture-root',
+ supervisorId = 'fixture-supervisor',
+ workerId = 'fixture-worker',
+ steerAcknowledgement = true,
+ steerEffect = 'delivered',
+ cancellationAcknowledgement = true,
+ cancellationEffect = 'cancelled',
+ terminalTakeover = 'unavailable',
+ snapshotCompleteness = 'complete',
+ snapshotDiagnostics = [],
+} = {}) {
+ let snapshotCount = 0
+ let workerStatus = 'running'
+ let supervisorStatus = 'running'
+ let spendIteration = 1
+ const steerRequests = new Map()
+ const steerAcks = new Map()
+ const cancellationAcks = new Map()
+ const calls = []
+ const eventDir = `fixture-event-dir:${supervisorId}`
+
+ function snapshot() {
+ snapshotCount += 1
+ if (workerStatus === 'running' && snapshotCount > 1) spendIteration += 1
+ const spend = fixtureSpend(spendIteration)
+ const worker = {
+ id: workerId,
+ label: 'fixture worker',
+ status: workerStatus,
+ latencyMs: spend.ms,
+ spend,
+ metered: { ...spend },
+ liveTail: ['fixture worker is active'],
+ }
+ const totals = {
+ workers: 1,
+ running: workerStatus === 'running' ? 1 : 0,
+ done: 0,
+ down: 0,
+ cancelled: workerStatus === 'cancelled' ? 1 : 0,
+ inFlight: workerStatus === 'running' ? 1 : 0,
+ settled: workerStatus === 'running' ? 0 : 1,
+ tokensInput: spend.tokensInput,
+ tokensOutput: spend.tokensOutput,
+ tokensTotal: spend.tokensInput + spend.tokensOutput,
+ usd: spend.usd,
+ latencyMs: spend.ms,
+ workerLatency: { n: 1, min: spend.ms, median: spend.ms, p90: spend.ms, max: spend.ms },
+ }
+ return {
+ root: rootDir,
+ generatedAt: snapshotCount,
+ supervisors: [
+ {
+ id: supervisorId,
+ status: supervisorStatus,
+ task: 'deterministic supervisor proof',
+ workspaceDir: rootDir,
+ budget: 1,
+ stateDir: eventDir,
+ workers: [worker],
+ progressTail: ['fixture progress'],
+ journalTail: [],
+ driverSpend: { ...spend },
+ totals,
+ },
+ ],
+ completeness: snapshotCompleteness,
+ diagnostics: snapshotDiagnostics,
+ discovered: 1,
+ loaded: 1,
+ }
+ }
+
+ const api = {
+ loadTopSnapshot(root) {
+ calls.push({ name: 'loadTopSnapshot', root })
+ return snapshot()
+ },
+ supervisorRunDir(root, id) {
+ calls.push({ name: 'supervisorRunDir', root, id })
+ if (root !== rootDir || id !== supervisorId) throw new Error('fixture event lookup mismatch')
+ return eventDir
+ },
+ writeWorkerSteer(root, id, worker, options) {
+ calls.push({ name: 'writeWorkerSteer', root, id, worker, options: { ...options } })
+ if (root !== rootDir || id !== supervisorId || worker !== workerId)
+ throw new Error('fixture steer target mismatch')
+ const operation = {
+ operationId: options.operationId,
+ worker,
+ message: options.message,
+ source: options.source ?? 'human',
+ interrupt: options.interrupt === true,
+ }
+ const requestDigest = fixtureDigest(operation)
+ const prior = steerRequests.get(options.operationId)
+ if (prior !== undefined && prior.request.requestDigest !== requestDigest)
+ throw new Error('fixture steer operation body changed on retry')
+ const request = prior?.request ?? {
+ schemaVersion: 1,
+ operationId: options.operationId,
+ requestDigest,
+ at: '2026-08-28T00:00:00.000Z',
+ source: operation.source,
+ worker,
+ message: options.message,
+ interrupt: operation.interrupt,
+ }
+ steerRequests.set(options.operationId, { request })
+ if (steerAcknowledgement && !steerAcks.has(options.operationId))
+ steerAcks.set(options.operationId, {
+ schemaVersion: 1,
+ operationId: options.operationId,
+ requestDigest,
+ worker,
+ effect: steerEffect,
+ requestedAt: request.at,
+ observedAt: '2026-08-28T00:00:00.001Z',
+ detail: `fixture steer ${steerEffect}`,
+ })
+ return {
+ worker,
+ file: `fixture-steer-request:${options.operationId}`,
+ request,
+ replayed: prior !== undefined,
+ ...(steerAcks.has(options.operationId)
+ ? { acknowledgement: steerAcks.get(options.operationId) }
+ : {}),
+ }
+ },
+ readWorkerSteerAcknowledgement(event, operationId) {
+ calls.push({ name: 'readWorkerSteerAcknowledgement', event, operationId })
+ return steerAcks.get(operationId)
+ },
+ cancelWorker(event, worker, operationId, options) {
+ calls.push({ name: 'cancelWorker', event, worker, operationId, options: { ...options } })
+ if (event !== eventDir || worker !== workerId)
+ throw new Error('fixture cancel target mismatch')
+ if (cancellationAcks.has(operationId)) return cancellationAcks.get(operationId)
+ if (cancellationAcknowledgement) {
+ workerStatus = cancellationEffect === 'cancelled' ? 'cancelled' : 'done'
+ supervisorStatus = 'completed'
+ const acknowledgement = {
+ operationId,
+ worker,
+ effect: cancellationEffect,
+ requestedAt: '2026-08-28T00:00:00.002Z',
+ observedAt: '2026-08-28T00:00:00.003Z',
+ reason: options?.reason,
+ detail: `fixture cancellation ${cancellationEffect}`,
+ terminated: cancellationEffect === 'cancelled' ? [workerId] : [],
+ }
+ cancellationAcks.set(operationId, acknowledgement)
+ return acknowledgement
+ }
+ return {
+ operationId,
+ worker,
+ effect: 'unknown',
+ requestedAt: '2026-08-28T00:00:00.002Z',
+ observedAt: '2026-08-28T00:00:00.002Z',
+ terminated: [],
+ }
+ },
+ readWorkerCancellation(event, operationId) {
+ calls.push({ name: 'readWorkerCancellation', event, operationId })
+ return cancellationAcks.get(operationId)
+ },
+ async attachWorker(event, worker, options) {
+ calls.push({ name: 'attachWorker', event, worker, providers: options?.providers })
+ if (event !== eventDir || worker !== workerId)
+ throw new Error('fixture attach target mismatch')
+ if (terminalTakeover === 'attached') return { status: 'available', handle: { fixture: true } }
+ return { status: 'unavailable', reason: 'fixture has no interactive process' }
+ },
+ }
+
+ return {
+ api,
+ calls,
+ rootDir,
+ supervisorId,
+ workerId,
}
}
diff --git a/scripts/live-required/tangle-sandbox-braid-execution-soak.mjs b/scripts/live-required/tangle-sandbox-braid-execution-soak.mjs
index eba397b..953205c 100644
--- a/scripts/live-required/tangle-sandbox-braid-execution-soak.mjs
+++ b/scripts/live-required/tangle-sandbox-braid-execution-soak.mjs
@@ -13,6 +13,7 @@ import {
resolveBinary,
runHeadlessTurn,
} from './headless.mjs'
+import { DEFAULT_TANGLE_ROUTER_MODEL } from './model-defaults.mjs'
import {
environmentForRun,
resourceDelta,
@@ -57,16 +58,14 @@ export function executionLatencyDistribution(attempts) {
}
}
-function sandboxEnvironment(environment) {
+export function sandboxEnvironment(environment) {
return {
...environment,
BRAID_TANGLE_SANDBOX_ENDPOINT:
environment.BRAID_TANGLE_SANDBOX_ENDPOINT?.trim() || 'https://sandbox.tangle.tools',
BRAID_TANGLE_SANDBOX_MODEL:
- environment.BRAID_TANGLE_SANDBOX_MODEL?.trim() || 'tangle-router/glm-5.2',
+ environment.BRAID_TANGLE_SANDBOX_MODEL?.trim() || DEFAULT_TANGLE_ROUTER_MODEL,
BRAID_TANGLE_SANDBOX_RUNNER: environment.BRAID_TANGLE_SANDBOX_RUNNER?.trim() || 'opencode',
- BRAID_TANGLE_SANDBOX_PROVIDER:
- environment.BRAID_TANGLE_SANDBOX_PROVIDER?.trim() || 'tangle-router',
...(!environment.BRAID_TANGLE_SANDBOX_API_KEY && environment.TANGLE_API_KEY
? { BRAID_TANGLE_SANDBOX_API_KEY: environment.TANGLE_API_KEY }
: {}),
@@ -81,6 +80,8 @@ function sandboxConfiguration(environment) {
modelNames: ['BRAID_TANGLE_MODEL'],
runnerNames: ['BRAID_TANGLE_RUNNER'],
providerNames: ['BRAID_TANGLE_SANDBOX_PROVIDER'],
+ modelProviderNames: ['BRAID_TANGLE_SANDBOX_MODEL_PROVIDER'],
+ fallbackModelProvider: 'tangle-router',
})
}
@@ -361,7 +362,7 @@ export async function runBraidSandboxExecutionSoak({
credentialConfigured: true,
profile: { model: { default: values.model }, harness: values.runner },
}),
- provider: values.provider,
+ modelProvider: values.modelProvider,
},
account: {
stable: failures.includes('Sandbox account identity changed during the cohort') === false,
diff --git a/scripts/live-required/tangle-sandbox-braid-interactive.mjs b/scripts/live-required/tangle-sandbox-braid-interactive.mjs
index 18d4d84..b45f218 100644
--- a/scripts/live-required/tangle-sandbox-braid-interactive.mjs
+++ b/scripts/live-required/tangle-sandbox-braid-interactive.mjs
@@ -1,17 +1,19 @@
import assert from 'node:assert/strict'
import { randomUUID } from 'node:crypto'
-import { readFile, rm, writeFile } from 'node:fs/promises'
+import { readFile, rm, stat, writeFile } from 'node:fs/promises'
import { dirname, join, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
-import {
- AgentExactRunControlRefSchema,
- AgentInteractiveSessionRefSchema,
-} from '@tangle-network/agent-interface'
+import { AgentExactRunControlRefSchema } from '@tangle-network/agent-interface'
import { Sandbox } from '@tangle-network/sandbox'
import xterm from '@xterm/headless'
import * as pty from 'node-pty'
import { sleep } from '../live-bridge/process.mjs'
-import { waitForTreeGone } from '../live-bridge/process-tree.mjs'
+import {
+ processTreeEnvironment,
+ terminateTrackedProcessTree,
+ trackProcessTree,
+ waitForTreeGone,
+} from '../live-bridge/process-tree.mjs'
import { runFromState, stateForRun } from '../live-bridge/protocol.mjs'
import { installPackedBraid } from '../packed-binary.mjs'
import { connectionConfiguration } from './configuration.mjs'
@@ -26,26 +28,57 @@ import {
scalarMeasurement,
} from './contracts.mjs'
import {
- closeSession,
configEvidence,
initializedSession,
prepareProductionWorkspace,
rpcRequest,
rpcState,
} from './headless.mjs'
+import { DEFAULT_TANGLE_ROUTER_MODEL } from './model-defaults.mjs'
import {
- assertVerifiedProcessCleanup,
- cleanupRetainedResourceByControlRef,
- observeRetainedResource,
+ assertProviderObservationDeadline,
+ createProviderObservationDeadline,
+ waitForProviderObservation,
+} from './provider-observation.mjs'
+import {
+ accountIdentity,
+ assertSingleExecutionAttemptLedger,
+ assertStableAccountIdentity,
+ closeBraidWithProof,
+ executionAttemptLedgerPath,
+ providerWorkspaceReadbackEvidence,
+ publicAccountIdentityEvidence,
+ readRetainedWorkspaceFile,
+ retainedBox,
+ singleRunSpendDisclosure,
+ telemetryDisclosure,
+ usage,
} from './tangle-sandbox-braid-stress.mjs'
+import { resourceDelta } from './tangle-sandbox-braid-stress-support.mjs'
+import {
+ createTerminalOutputTracker,
+ waitForPiTerminalReady,
+ waitForTerminalQuiescence,
+} from './terminal-quiescence.mjs'
const scriptPath = fileURLToPath(import.meta.url)
const repository = resolve(dirname(scriptPath), '../..')
const DEFAULT_TIMEOUT_MS = 180_000
const DEFAULT_IDLE_TTL_SECONDS = 1_800
const DEFAULT_PROCESS_EXIT_TIMEOUT_MS = 10_000
+const SANDBOX_LIST_PAGE_SIZE = 100
const DETACH = '\u001d'
const RUN_STATUS_AFTER_STOP = new Set(['aborted', 'cancelled'])
+const CANCELLABLE_INTERACTIVE_RUN_STATUSES = new Set([
+ 'prepared',
+ 'starting',
+ 'running',
+ 'streaming',
+ 'waiting',
+ 'detached',
+ 'reconnecting',
+ 'cancelling',
+])
const CONTROL_REF_FIELDS = Object.freeze([
'provider',
'environmentId',
@@ -69,6 +102,15 @@ const INTERACTIVE_PROOF_CHECKS = Object.freeze([
'exact-resource-cleanup',
'process-exited-before-cleanup',
'process-group-exited-before-cleanup',
+ 'provider-bound-input',
+ 'provider-bound-reconnect',
+ 'single-provider-execution-attempt',
+ 'exact-owned-resource-set-cleanup',
+ 'account-identity-stable',
+ 'active-resource-delta',
+ 'telemetry-complete',
+ 'spend-disclosed',
+ 'latency-observed',
])
const SECRET_ENVIRONMENT_NAMES = [
'BRAID_TANGLE_SANDBOX_AUTH',
@@ -115,28 +157,52 @@ export function sandboxConfiguration(environment) {
modelNames: ['BRAID_TANGLE_MODEL'],
runnerNames: ['BRAID_TANGLE_RUNNER'],
providerNames: ['BRAID_TANGLE_SANDBOX_PROVIDER'],
+ modelProviderNames: ['BRAID_TANGLE_SANDBOX_MODEL_PROVIDER'],
fallbackEndpoint: 'https://sandbox.tangle.tools',
- fallbackModel: 'tangle-router/glm-5.2',
+ fallbackModel: DEFAULT_TANGLE_ROUTER_MODEL,
fallbackRunner: 'pi',
- fallbackProvider: 'tangle',
+ fallbackModelProvider: 'tangle-router',
})
}
+export function isCancellableInteractiveRunStatus(status) {
+ return typeof status === 'string' && CANCELLABLE_INTERACTIVE_RUN_STATUSES.has(status)
+}
+
+export function stoppedRunFromState(response, runId) {
+ if (!stateForRun(response, runId)) return undefined
+ const run = runFromState(response.state, runId)
+ return run !== undefined && RUN_STATUS_AFTER_STOP.has(run.status) ? run : undefined
+}
+
export function interactiveProofCommandSequence(markers) {
const input = markers.input ?? markers.inputSeed?.toUpperCase()
const reconnect = markers.reconnect ?? markers.reconnectSeed?.toUpperCase()
+ const proofId = markers.proofId ?? `interactive-${markers.outputSeed ?? 'proof'}`
+ const inputPath = markers.inputPath ?? `.braid-live/${proofId}/native-input.txt`
+ const reconnectPath = markers.reconnectPath ?? `.braid-live/${proofId}/native-reconnect.txt`
+ const attemptPath = markers.attemptPath ?? executionAttemptLedgerPath(proofId)
+ const attempt = markers.executionAttempt ?? `ATTEMPT_${proofId.replaceAll(/[^A-Za-z0-9]/gu, '_')}`
return [
- `/interactive Reply with exactly the uppercase version of ${markers.outputSeed}.`,
- input,
+ `/interactive Use a shell command with append redirection (>>) in the current Tangle Sandbox workspace to write exactly ${attempt} followed by a newline to ${attemptPath}; never overwrite this file. Then reply with exactly the uppercase version of ${markers.outputSeed}.`,
+ interactiveShellMutationCommand(input, inputPath),
DETACH,
'/help',
'/attach',
- reconnect,
+ interactiveShellMutationCommand(reconnect, reconnectPath),
DETACH,
'/help',
]
}
+function shellLiteral(value) {
+ return `'${String(value).replaceAll("'", "'\"'\"'")}'`
+}
+
+function interactiveShellMutationCommand(value, path) {
+ return `!!printf '%s\\n' ${shellLiteral(value)} >> ${shellLiteral(path)}`
+}
+
function occurrences(value, marker) {
if (!marker) return 0
let count = 0
@@ -150,6 +216,132 @@ function occurrences(value, marker) {
return count
}
+export function assertProviderBoundEvidence(evidence, label = 'provider-bound mutation') {
+ assert.ok(evidence && typeof evidence === 'object', `${label} evidence is missing`)
+ assert.equal(evidence.provider, 'tangle-sandbox', `${label} was not observed by the provider`)
+ assert.equal(evidence.source, 'sandbox-workspace-read', `${label} lacks provider readback`)
+ assert.equal(
+ evidence.providerObserved ?? evidence.matched,
+ true,
+ `${label} was not provider-bound; local terminal echo is insufficient`,
+ )
+ assert.equal(evidence.localEchoOnly, false, `${label} relied on local terminal echo`)
+ return evidence
+}
+
+export function assertInteractiveTelemetry(telemetry, spend, timing) {
+ assert.equal(
+ telemetry?.completeDisclosure,
+ true,
+ 'interactive telemetry disclosure is incomplete',
+ )
+ const fields = telemetry.fields ?? {}
+ const missingTelemetry = Object.entries(fields)
+ .filter(([, field]) => field?.status === 'missing' || field?.status === 'in-flight')
+ .map(([name]) => name)
+ assert.deepEqual(missingTelemetry, [], 'interactive telemetry contains missing fields')
+ const rows = Array.isArray(spend?.rows) ? spend.rows : []
+ assert.equal(rows.length, 1, 'interactive spend disclosure must contain one run')
+ const missingSpend = rows.flatMap((row) =>
+ ['tokens', 'cost', 'duration']
+ .filter((name) => row?.[name]?.status === 'missing')
+ .map((name) => `${row.label ?? 'run'}.${name}`),
+ )
+ assert.deepEqual(missingSpend, [], 'interactive spend disclosure contains missing fields')
+ assert.equal(timing?.status, 'observed', 'interactive latency was not observed')
+ assert.ok(
+ Number.isFinite(timing?.milliseconds) && timing.milliseconds >= 0,
+ 'interactive latency is not a finite measurement',
+ )
+ return { complete: true }
+}
+
+export function assertInteractiveOwnedResourceCleanup(cleanup, expectedEnvironmentId) {
+ assert.equal(cleanup?.confirmed, true, 'owned Sandbox cleanup was not confirmed')
+ assert.ok(
+ Array.isArray(cleanup?.removedIds) && cleanup.removedIds.includes(expectedEnvironmentId),
+ 'owned Sandbox cleanup omitted the exact resource',
+ )
+ assert.equal(cleanup?.remainingIds?.length, 0, 'owned Sandbox cleanup left a resource behind')
+ assert.equal(
+ cleanup?.matchedCount,
+ 1,
+ `owned Sandbox cleanup found ${cleanup?.matchedCount ?? 'an unknown number of'} resources; expected one`,
+ )
+ return cleanup
+}
+
+async function waitForProviderReadback(client, controlRef, path, expectedValue, timeoutMs, label) {
+ const deadline = createProviderObservationDeadline(label, timeoutMs)
+ const box = await waitForProviderObservation(
+ `${label} retained Sandbox`,
+ () => retainedBox(client, controlRef, label),
+ timeoutMs,
+ { deadline },
+ )
+ const observation = await waitForProviderObservation(
+ `${label} provider readback`,
+ () =>
+ readRetainedWorkspaceFile(client, controlRef, path, {
+ label,
+ allowMissing: true,
+ box,
+ }).then((value) => (value?.value === expectedValue ? value : undefined)),
+ timeoutMs,
+ { deadline },
+ )
+ return assertProviderBoundEvidence(
+ providerWorkspaceReadbackEvidence(observation, expectedValue, `provider-bound ${label}`),
+ label,
+ )
+}
+
+async function waitForExecutionAttempt(client, controlRef, path, expectedAttempt, timeoutMs) {
+ const expectedValue = `${expectedAttempt}\n`
+ const deadline = createProviderObservationDeadline('execution attempt', timeoutMs)
+ const box = await waitForProviderObservation(
+ 'Execution-attempt retained Sandbox',
+ () => retainedBox(client, controlRef, 'Execution-attempt ledger'),
+ timeoutMs,
+ { deadline },
+ )
+ let previousValue
+ let stableReads = 0
+ const observation = await waitForProviderObservation(
+ 'single provider execution attempt',
+ async () => {
+ const value = await readRetainedWorkspaceFile(client, controlRef, path, {
+ label: 'Execution-attempt ledger',
+ allowMissing: true,
+ box,
+ })
+ if (value?.value === undefined) return undefined
+ assertSingleExecutionAttemptLedger(value.value, expectedAttempt)
+ if (value.value === previousValue) stableReads += 1
+ else {
+ previousValue = value.value
+ stableReads = 1
+ }
+ return stableReads >= 3 ? value : undefined
+ },
+ timeoutMs,
+ { deadline },
+ )
+ const ledger = assertSingleExecutionAttemptLedger(observation.value, expectedAttempt)
+ return {
+ ...assertProviderBoundEvidence(
+ providerWorkspaceReadbackEvidence(
+ observation,
+ expectedValue,
+ 'provider-bound execution attempt',
+ ),
+ 'execution attempt',
+ ),
+ path: observation.path,
+ ...ledger,
+ }
+}
+
function terminalText(terminal) {
let text = ''
for (let row = 0; row < terminal.rows; row += 1) {
@@ -159,6 +351,263 @@ function terminalText(terminal) {
return text
}
+function terminalDiagnostic(runtime) {
+ if (runtime === undefined) return 'terminal unavailable'
+ const rows = runtime.screen
+ .split('\n')
+ .map((row) => row.trim())
+ .filter((row) => row.length > 0)
+ .slice(-8)
+ return rows.length === 0 ? 'terminal screen empty' : rows.join(' | ').slice(-768)
+}
+
+function stateDiagnostic(frame) {
+ const runs = Array.isArray(frame?.state?.runs) ? frame.state.runs : []
+ return runs.map((run) => ({
+ id: typeof run?.id === 'string' ? run.id : null,
+ status: typeof run?.status === 'string' ? run.status : null,
+ retainedAdmission: interactiveAdmissionPhase(frame, run?.id),
+ controlRef: AgentExactRunControlRefSchema.safeParse(run?.controlRef).success,
+ }))
+}
+
+export function interactiveMaterializationEvidence(record) {
+ const runs = Array.isArray(record?.state?.runs) ? record.state.runs : []
+ if (runs.length !== 1) return undefined
+ const run = runs[0]
+ const runId = typeof run?.id === 'string' && run.id.length > 0 ? run.id : undefined
+ const phase = interactiveAdmissionPhase(record, runId)
+ const materialized =
+ phase === 'interactive_environment' ||
+ phase === 'interactive_started' ||
+ typeof run?.environmentId === 'string' ||
+ typeof run?.controlRef?.environmentId === 'string'
+ return {
+ ...(runId === undefined ? {} : { runId }),
+ phase,
+ materialized,
+ boundary: materialized
+ ? 'provider-environment-identity'
+ : phase === 'interactive_intent'
+ ? 'before-interactive_environment'
+ : 'unknown',
+ }
+}
+
+function interactiveResourceName(runId) {
+ if (typeof runId !== 'string' || !/^[A-Za-z0-9._:-]{1,95}$/u.test(runId)) {
+ throw new Error('Interactive run-derived cleanup requires a bounded Braid run identity')
+ }
+ return `braid-interactive-${runId}`
+}
+
+function isOwnedInteractiveResource(box, expectedName) {
+ return (
+ typeof box?.id === 'string' &&
+ box.name === expectedName &&
+ box.metadata?.owner === 'braid' &&
+ box.metadata?.lifecycle === 'retained' &&
+ box.metadata?.surface === 'interactive-agent'
+ )
+}
+
+function sameNameInteractiveResources(resources, expectedName, predicate) {
+ const matches = resources.filter((resource) => resource?.name === expectedName)
+ if (matches.length > 1) {
+ throw new Error(
+ `Interactive run-derived cleanup found ${String(matches.length)} same-name Sandbox resources; cleanup refused`,
+ )
+ }
+ if (matches.length === 1 && !predicate(matches[0])) {
+ throw new Error(
+ `Interactive run-derived resource ${String(matches[0]?.id ?? 'without-id')} failed exact ownership validation`,
+ )
+ }
+ return matches
+}
+
+async function listAllSandboxResources(
+ client,
+ {
+ deadline: providedDeadline,
+ timeoutMs = DEFAULT_TIMEOUT_MS,
+ label = 'Sandbox resource list',
+ } = {},
+) {
+ const deadline = providedDeadline ?? createProviderObservationDeadline(label, timeoutMs)
+ const resources = []
+ const seenIds = new Set()
+ let offset = 0
+ for (;;) {
+ const page = await waitForProviderObservation(
+ `${label} page ${offset}`,
+ () => client.list({ limit: SANDBOX_LIST_PAGE_SIZE, offset }),
+ timeoutMs,
+ { deadline },
+ )
+ if (!Array.isArray(page)) throw new Error('Sandbox list returned an invalid page')
+ for (const resource of page) {
+ if (typeof resource?.id === 'string') {
+ if (seenIds.has(resource.id)) throw new Error(`Sandbox list repeated ${resource.id}`)
+ seenIds.add(resource.id)
+ }
+ resources.push(resource)
+ }
+ if (page.length < SANDBOX_LIST_PAGE_SIZE) return resources
+ offset += page.length
+ }
+}
+
+async function observeInteractiveResource(
+ client,
+ controlRef,
+ runId,
+ { box: providedBox, deadline: providedDeadline, timeoutMs = DEFAULT_TIMEOUT_MS } = {},
+) {
+ const deadline =
+ providedDeadline ??
+ createProviderObservationDeadline('Interactive Sandbox observation', timeoutMs)
+ const expectedName = interactiveResourceName(runId)
+ const box =
+ providedBox ??
+ (await waitForProviderObservation(
+ 'Interactive Sandbox identity',
+ () => retainedBox(client, controlRef, 'Interactive Sandbox observation'),
+ timeoutMs,
+ { deadline },
+ ))
+ if (box === null) {
+ throw new Error(`Interactive Sandbox ${controlRef.environmentId} was not visible`)
+ }
+ if (!isOwnedInteractiveResource(box, expectedName)) {
+ throw new Error(
+ `Interactive Sandbox ${controlRef.environmentId} failed exact Braid ownership validation`,
+ )
+ }
+ const matches = sameNameInteractiveResources(
+ await listAllSandboxResources(client, {
+ deadline,
+ timeoutMs,
+ label: 'Interactive Sandbox resource census',
+ }),
+ expectedName,
+ (resource) => isOwnedInteractiveResource(resource, expectedName),
+ )
+ if (matches.length !== 1 || matches[0]?.id !== box.id) {
+ throw new Error('Interactive Sandbox control identity did not match its owned resource census')
+ }
+ return {
+ observed: true,
+ id: box.id,
+ name: expectedName,
+ metadata: {
+ owner: 'braid',
+ lifecycle: 'retained',
+ surface: 'interactive-agent',
+ },
+ }
+}
+
+async function cleanupInteractiveByRunId(
+ client,
+ materialization,
+ { deadline: providedDeadline, timeoutMs = DEFAULT_TIMEOUT_MS } = {},
+) {
+ const deadline =
+ providedDeadline ?? createProviderObservationDeadline('Interactive Sandbox cleanup', timeoutMs)
+ const runId = materialization?.runId
+ const expectedName = interactiveResourceName(runId)
+ const predicate = (resource) => isOwnedInteractiveResource(resource, expectedName)
+ const listed = sameNameInteractiveResources(
+ await listAllSandboxResources(client, {
+ deadline,
+ timeoutMs,
+ label: 'Interactive Sandbox cleanup resource census',
+ }),
+ expectedName,
+ predicate,
+ )
+ const deletions = []
+ const removedIds = []
+ for (const resource of listed) {
+ const exact = await waitForProviderObservation(
+ `Interactive Sandbox cleanup identity ${resource.id}`,
+ () => client.get(resource.id),
+ timeoutMs,
+ { deadline },
+ )
+ if (exact === null) {
+ deletions.push({
+ id: resource.id,
+ observed: true,
+ resolved: true,
+ deleted: false,
+ confirmed: true,
+ })
+ continue
+ }
+ if (!predicate(exact)) {
+ throw new Error(
+ `Interactive run-derived resource ${resource.id} failed exact ownership validation`,
+ )
+ }
+ assertProviderObservationDeadline(
+ deadline,
+ `Interactive Sandbox deletion ${resource.id}`,
+ 'delete',
+ )
+ await exact.delete()
+ assertProviderObservationDeadline(
+ deadline,
+ `Interactive Sandbox deletion ${resource.id}`,
+ 'delete',
+ )
+ const remaining = await waitForProviderObservation(
+ `Interactive Sandbox deletion verification ${resource.id}`,
+ () => client.get(resource.id),
+ timeoutMs,
+ { deadline },
+ )
+ if (remaining !== null) {
+ throw new Error(`Interactive run-derived resource ${resource.id} remained after delete`)
+ }
+ removedIds.push(resource.id)
+ deletions.push({
+ id: resource.id,
+ observed: true,
+ resolved: true,
+ deleted: true,
+ confirmed: true,
+ })
+ }
+ const remaining = sameNameInteractiveResources(
+ await listAllSandboxResources(client, {
+ deadline,
+ timeoutMs,
+ label: 'Interactive Sandbox cleanup final census',
+ }),
+ expectedName,
+ predicate,
+ )
+ if (remaining.length > 0) {
+ throw new Error(
+ `Interactive run-derived cleanup left ${String(remaining.length)} same-name Sandbox resources`,
+ )
+ }
+ return {
+ confirmed: true,
+ mode: listed.length === 0 ? 'run-derived-absence' : 'run-derived-owned-resource-set',
+ phase: materialization.phase,
+ runId,
+ expectedName,
+ matchedCount: listed.length,
+ observedIds: listed.map((resource) => resource.id),
+ removedIds,
+ deletions,
+ remainingIds: [],
+ }
+}
+
async function waitFor(label, predicate, timeoutMs) {
const deadline = performance.now() + timeoutMs
for (;;) {
@@ -171,29 +620,32 @@ async function waitFor(label, predicate, timeoutMs) {
function createPty(binary, config, statePath, exitTimeoutMs) {
const terminal = new xterm.Terminal({ cols: 120, rows: 36, allowProposedApi: true })
+ const environment = processTreeEnvironment({
+ ...config.environment,
+ BRAID_SHUTDOWN_MODE: 'detach',
+ NO_COLOR: '1',
+ NODE_NO_WARNINGS: '1',
+ })
const child = pty.spawn(process.execPath, [binary, '--inline', '--record-state', statePath], {
cwd: config.workspace,
- env: {
- ...config.environment,
- BRAID_SHUTDOWN_MODE: 'detach',
- NO_COLOR: '1',
- NODE_NO_WARNINGS: '1',
- },
+ env: environment.environment,
name: 'xterm-256color',
cols: 120,
rows: 36,
})
+ trackProcessTree(child, environment.token)
let output = ''
let exited = false
let exitResult
let processCleanup
+ const outputTracker = createTerminalOutputTracker()
const waitForProcessCleanup = async () => {
processCleanup ??= await waitForTreeGone(child, exitTimeoutMs)
return processCleanup
}
child.onData((chunk) => {
output += chunk
- terminal.write(chunk)
+ outputTracker.observe(chunk, (settle) => terminal.write(chunk, settle))
})
child.onExit((result) => {
exited = true
@@ -209,11 +661,27 @@ function createPty(binary, config, statePath, exitTimeoutMs) {
return terminalText(terminal)
},
get exited() {
- return exited
+ return exited || (processCleanup?.supported === true && processCleanup.gone === true)
},
get processCleanup() {
return processCleanup
},
+ get terminalOutputRevision() {
+ return outputTracker.snapshot().revision
+ },
+ waitForTerminalQuiescence(timeoutMs, afterRevision) {
+ return waitForTerminalQuiescence(outputTracker, { timeoutMs, afterRevision, pause: sleep })
+ },
+ waitForPiTerminalReady(timeoutMs, afterRevision, beforeScreen) {
+ return waitForPiTerminalReady({
+ tracker: outputTracker,
+ readScreen: () => terminalText(terminal),
+ timeoutMs,
+ afterRevision,
+ beforeScreen,
+ pause: sleep,
+ })
+ },
write(value) {
child.write(value)
},
@@ -236,13 +704,19 @@ function createPty(binary, config, statePath, exitTimeoutMs) {
return { ...result, processCleanup: await waitForProcessCleanup() }
},
async forceClose() {
- if (!exited) child.kill()
- const result = await waitFor(
- 'forced Braid terminal exit',
- () => exited && exitResult,
- exitTimeoutMs,
- )
- return { ...result, processCleanup: await waitForProcessCleanup() }
+ if (exited) return { ...exitResult, processCleanup: await waitForProcessCleanup() }
+ const termTimeoutMs = Math.min(1_000, exitTimeoutMs)
+ const termination = await terminateTrackedProcessTree(child, {
+ termTimeoutMs,
+ killTimeoutMs: Math.max(0, exitTimeoutMs - termTimeoutMs),
+ })
+ processCleanup = termination.tree
+ if (!termination.descendantsVerified) {
+ throw new Error(
+ `forced Braid terminal cleanup did not remove the tracked process tree (${termination.cleanupStatus})`,
+ )
+ }
+ return { ...exitResult, processCleanup, termination }
},
dispose() {
terminal.dispose()
@@ -251,14 +725,19 @@ function createPty(binary, config, statePath, exitTimeoutMs) {
}
async function captureStateFrame(runtime, recordPath, timeoutMs) {
- await rm(`${recordPath}.frame`, { force: true })
+ const framePath = `${recordPath}.frame`
+ const previousVersion = await stateFrameVersion(framePath)
process.kill(runtime.child.pid, 'SIGUSR2')
return waitFor(
'atomic Braid interactive state frame',
async () => {
try {
- return JSON.parse(await readFile(`${recordPath}.frame`, 'utf8'))
- } catch {
+ const version = await stateFrameVersion(framePath)
+ if (version === undefined || version === previousVersion) return undefined
+ const frame = JSON.parse(await readFile(framePath, 'utf8'))
+ return (await stateFrameVersion(framePath)) === version ? frame : undefined
+ } catch (error) {
+ if (error?.code !== 'ENOENT' && !(error instanceof SyntaxError)) throw error
return undefined
}
},
@@ -266,6 +745,16 @@ async function captureStateFrame(runtime, recordPath, timeoutMs) {
)
}
+async function stateFrameVersion(path) {
+ try {
+ const value = await stat(path, { bigint: true })
+ return `${value.dev}:${value.ino}:${value.mtimeNs}:${value.size}`
+ } catch (error) {
+ if (error?.code === 'ENOENT') return undefined
+ throw error
+ }
+}
+
async function proveTuiReturned(runtime, timeoutMs, label) {
const before = runtime.output.length
runtime.write('/help\r')
@@ -280,11 +769,11 @@ async function proveTuiReturned(runtime, timeoutMs, label) {
}
function eventKind(event) {
- return event?.kind ?? event?.event?.kind ?? event?.type
+ return event?.kind
}
function eventRunId(event) {
- return event?.runId ?? event?.event?.runId
+ return event?.payload?.runId
}
function assertOrderedRunEvents(events, runId, required) {
@@ -292,9 +781,7 @@ function assertOrderedRunEvents(events, runId, required) {
for (const kind of required) {
const found = events.findIndex(
(event, index) =>
- index >= nextIndex &&
- eventKind(event) === kind &&
- (eventRunId(event) === undefined || eventRunId(event) === runId),
+ index >= nextIndex && eventKind(event) === kind && eventRunId(event) === runId,
)
assert.ok(found >= nextIndex, `interactive record omitted ordered ${kind}`)
nextIndex = found + 1
@@ -316,37 +803,65 @@ function assertControlRefsEqual(expected, actual, label) {
return actualRef
}
-function interactiveAdmissionIdentity(run) {
- const admission = run?.retainedAdmission
+function projectedRetainedAdmission(event) {
+ if (eventKind(event) !== 'run.retained.admitted') return undefined
+ const value = event?.payload?.value
+ if (
+ value === null ||
+ typeof value !== 'object' ||
+ Array.isArray(value) ||
+ value.kind !== 'run.retained.admitted' ||
+ typeof value.runId !== 'string' ||
+ value.runId.length === 0 ||
+ event?.payload?.runId !== value.runId
+ )
+ return undefined
+ const admission = value.admission
+ return admission && typeof admission === 'object' ? admission : undefined
+}
+
+function interactiveAdmissions(record, runId) {
+ const events = Array.isArray(record?.events) ? record.events : []
+ return events.flatMap((event) => {
+ const admission = projectedRetainedAdmission(event)
+ if (admission === undefined) return []
+ const admittedRunId = eventRunId(event)
+ return admittedRunId === runId ? [admission] : []
+ })
+}
+
+function interactiveAdmissionPhase(record, runId) {
+ if (typeof runId !== 'string' || runId.length === 0) return null
+ const projected = interactiveAdmissions(record, runId).at(-1)?.phase
+ return typeof projected === 'string' ? projected : null
+}
+
+function interactiveAdmissionIdentity(record, run) {
+ const admission = interactiveAdmissions(record, run?.id).findLast(
+ (candidate) => candidate?.phase === 'interactive_started',
+ )
assert.equal(
admission?.phase,
'interactive_started',
'interactive proof requires the canonical interactive_started admission phase',
)
- assert.equal(
- typeof admission?.interactiveIdempotencyKey,
- 'string',
- 'interactive_started admission omitted interactiveIdempotencyKey',
- )
- assert.ok(
- admission.interactiveIdempotencyKey.length > 0,
- 'interactive_started admission has an empty interactiveIdempotencyKey',
+ const startedControlRef = exactControlRef(
+ admission.ref?.run,
+ 'interactive_started admission control reference',
)
- const parsedRef = AgentInteractiveSessionRefSchema.safeParse(admission.ref)
- assert.ok(parsedRef.success, 'interactive_started admission ref is invalid')
const controlRef = assertControlRefsEqual(
run.controlRef,
- parsedRef.data.run,
+ startedControlRef,
'interactive admission control reference',
)
if (run.providerSessionId !== undefined) {
assert.equal(
- parsedRef.data.run.sessionId,
+ startedControlRef.sessionId,
run.providerSessionId,
'interactive admission session differs from the stored provider session',
)
}
- return { admission, ref: parsedRef.data, controlRef }
+ return { admission, ref: { run: startedControlRef }, controlRef }
}
export function recoverInteractiveIdentity(record) {
@@ -355,7 +870,7 @@ export function recoverInteractiveIdentity(record) {
return undefined
const run = runs[0]
try {
- const { admission, ref, controlRef } = interactiveAdmissionIdentity(run)
+ const { admission, ref, controlRef } = interactiveAdmissionIdentity(record, run)
return {
run,
admission,
@@ -368,11 +883,33 @@ export function recoverInteractiveIdentity(record) {
}
}
+export async function waitForInteractiveIdentityFrame({ captureFrame, timeoutMs }) {
+ assert.equal(
+ typeof captureFrame,
+ 'function',
+ 'interactive identity polling requires captureFrame',
+ )
+ assert.ok(
+ Number.isFinite(timeoutMs) && timeoutMs > 0,
+ 'interactive identity timeout must be positive',
+ )
+ const deadline = performance.now() + timeoutMs
+ for (;;) {
+ const frame = await captureFrame()
+ const identity = recoverInteractiveIdentity(frame)
+ if (identity !== undefined) return { frame, identity }
+ if (performance.now() >= deadline) {
+ throw new Error(`retained interactive identity timed out after ${timeoutMs}ms`)
+ }
+ await sleep(50)
+ }
+}
+
export function assertInteractiveRecord(record) {
const runs = Array.isArray(record?.state?.runs) ? record.state.runs : []
assert.equal(runs.length, 1, 'interactive proof must retain exactly one local run')
const run = runs[0]
- const { controlRef } = interactiveAdmissionIdentity(run)
+ const { controlRef } = interactiveAdmissionIdentity(record, run)
assert.equal(controlRef.provider, 'tangle-sandbox')
const events = Array.isArray(record?.events) ? record.events : []
const kinds = events.map(eventKind)
@@ -398,27 +935,46 @@ export function assertStoppedTerminal(terminal) {
return { terminal, stopped: true }
}
-async function observeSandbox(client, controlRef, timeoutMs, expectedRunning, expectedGeometry) {
- const resource = await observeRetainedResource(client, controlRef)
- const box = await client.get(controlRef.environmentId)
- assert.equal(box?.id, resource.id, 'Sandbox observation changed environment identity')
+async function observeSandbox(
+ client,
+ controlRef,
+ runId,
+ timeoutMs,
+ expectedRunning,
+ expectedGeometry,
+) {
+ const deadline = createProviderObservationDeadline('interactive Sandbox observation', timeoutMs)
+ const box = await waitForProviderObservation(
+ 'interactive Sandbox identity',
+ () => retainedBox(client, controlRef, 'Interactive Sandbox observation'),
+ timeoutMs,
+ { deadline },
+ )
+ const resource = await waitForProviderObservation(
+ 'interactive Sandbox ownership',
+ () => observeInteractiveResource(client, controlRef, runId, { box, deadline, timeoutMs }),
+ timeoutMs,
+ { deadline },
+ )
+ assert.equal(box.id, resource.id, 'Sandbox observation changed environment identity')
assert.ok(box.terminals && typeof box.terminals.get === 'function')
let terminal
- await waitFor(
+ await waitForProviderObservation(
expectedRunning ? 'retained interactive terminal' : 'stopped retained interactive terminal',
async () => {
terminal = await box.terminals.get(controlRef.sessionId)
if (terminal !== null) assert.equal(terminal.sessionId, controlRef.sessionId)
if (expectedRunning) {
- return (
+ const ready =
terminal?.isRunning === true &&
(expectedGeometry === undefined ||
(terminal.cols === expectedGeometry.cols && terminal.rows === expectedGeometry.rows))
- )
+ return ready ? terminal : undefined
}
- return terminal === null || terminal?.isRunning === false
+ return terminal === null || terminal?.isRunning === false ? terminal : undefined
},
timeoutMs,
+ { deadline },
)
const stopped = expectedRunning ? undefined : assertStoppedTerminal(terminal)
if (expectedGeometry !== undefined) {
@@ -429,9 +985,33 @@ async function observeSandbox(client, controlRef, timeoutMs, expectedRunning, ex
)
assert.equal(terminal?.rows, expectedGeometry.rows, 'Sandbox terminal rows were not retained')
}
+ let resourceSample
+ let resourceSampleError
+ try {
+ if (typeof box.resourceUsage !== 'function') {
+ resourceSample = undefined
+ } else {
+ const sample = await waitForProviderObservation(
+ 'interactive Sandbox resource usage',
+ async () => ({ value: await box.resourceUsage() }),
+ timeoutMs,
+ { deadline },
+ )
+ resourceSample = sample.value
+ }
+ } catch (error) {
+ resourceSampleError = safeMessage(error)
+ }
return {
resource,
terminal,
+ resourceSample:
+ resourceSample === undefined
+ ? { status: 'missing' }
+ : resourceSample === null
+ ? { status: 'unavailable', value: null }
+ : { status: 'observed', value: resourceSample },
+ ...(resourceSampleError === undefined ? {} : { resourceSampleError }),
...(terminal === null
? {}
: { geometry: { cols: terminal.cols ?? null, rows: terminal.rows ?? null } }),
@@ -439,18 +1019,45 @@ async function observeSandbox(client, controlRef, timeoutMs, expectedRunning, ex
}
}
-async function cleanupExactSandbox(client, identity) {
- const observed = await observeRetainedResource(client, identity.controlRef)
- const cleanup = await cleanupRetainedResourceByControlRef(client, identity.controlRef)
- assert.equal(cleanup.id, observed.id, 'Sandbox cleanup changed the exact Braid resource')
- assert.equal(cleanup.id, identity.controlRef.environmentId)
- return cleanup
+async function cleanupExactSandbox(client, identity, timeoutMs = DEFAULT_TIMEOUT_MS) {
+ const deadline = createProviderObservationDeadline('Interactive Sandbox cleanup', timeoutMs)
+ const observed = await observeInteractiveResource(client, identity.controlRef, identity.run.id, {
+ deadline,
+ timeoutMs,
+ })
+ const cleanup = await cleanupInteractiveByRunId(
+ client,
+ {
+ runId: identity.run.id,
+ phase: 'interactive_started',
+ },
+ { deadline, timeoutMs },
+ )
+ return assertInteractiveOwnedResourceCleanup(cleanup, observed.id)
}
function cleanupFailure(label, error) {
return new Error(`${label}: ${safeMessage(error)}`, { cause: error })
}
+export function interactiveFailureMessages(error, environment = process.env) {
+ const messages = []
+ const seen = new Set()
+ const visit = (candidate) => {
+ if (candidate === null || (typeof candidate !== 'object' && typeof candidate !== 'function'))
+ return
+ if (seen.has(candidate)) return
+ seen.add(candidate)
+ messages.push(safeMessage(candidate, environment))
+ if (candidate instanceof AggregateError) {
+ for (const nested of candidate.errors) visit(nested)
+ }
+ visit(candidate.cause)
+ }
+ visit(error)
+ return [...new Set(messages)]
+}
+
function assertStopResultMatchesIdentity(stopResult, identity) {
assert.ok(stopResult && typeof stopResult === 'object', 'Braid stop returned no result')
const controlRef = assertControlRefsEqual(
@@ -485,6 +1092,7 @@ export async function finalizeInteractiveProof({
runtime,
recordPath,
identity,
+ materialization,
client,
timeoutMs = DEFAULT_TIMEOUT_MS,
exitTimeoutMs = DEFAULT_PROCESS_EXIT_TIMEOUT_MS,
@@ -493,8 +1101,8 @@ export async function finalizeInteractiveProof({
stopResult,
stop = ({ binary, targetConfig, runId, timeout }) =>
stopThroughBraid(binary, targetConfig, runId, timeout),
- observe = (targetClient, controlRef, timeout) =>
- observeSandbox(targetClient, controlRef, timeout, false),
+ observe = (targetClient, controlRef, runId, timeout) =>
+ observeSandbox(targetClient, controlRef, runId, timeout, false),
cleanupSandbox = cleanupExactSandbox,
} = {}) {
const errors = []
@@ -519,18 +1127,42 @@ export async function finalizeInteractiveProof({
}
let resolvedIdentity = identity
- if (resolvedIdentity === undefined && recordPath !== undefined) {
- const recovered = await attemptCleanup(errors, 'recorded Braid identity recovery', async () => {
- const record = JSON.parse(await readFile(recordPath, 'utf8'))
- const recoveredIdentity = recoverInteractiveIdentity(record)
- if (recoveredIdentity === undefined)
- throw new Error('recorded state did not contain one exact Braid run identity')
- return recoveredIdentity
- })
+ const identityRecoveryErrors = []
+ if (resolvedIdentity === undefined && executionStarted && recordPath !== undefined) {
+ const recovered = await attemptCleanup(
+ identityRecoveryErrors,
+ 'recorded Braid identity recovery',
+ async () => {
+ const record = JSON.parse(await readFile(recordPath, 'utf8'))
+ const recoveredIdentity = recoverInteractiveIdentity(record)
+ if (recoveredIdentity === undefined)
+ throw new Error('recorded state did not contain one exact Braid run identity')
+ return recoveredIdentity
+ },
+ )
if (recovered.ok) resolvedIdentity = recovered.value
}
+ let providerMaterialization
if (executionStarted && resolvedIdentity === undefined) {
- errors.push(new Error('Braid run identity was unavailable; exact cloud cleanup was refused'))
+ if (materialization?.runId !== undefined) {
+ if (client === undefined) {
+ errors.push(
+ new Error(
+ 'Sandbox observation client was unavailable; run-derived absence could not be confirmed',
+ ),
+ )
+ } else {
+ const observed = await attemptCleanup(errors, 'run-derived Sandbox cleanup', () =>
+ cleanupInteractiveByRunId(client, materialization, { timeoutMs }),
+ )
+ if (observed.ok) providerMaterialization = observed.value
+ }
+ } else {
+ errors.push(new Error('Braid run identity was unavailable; exact cloud cleanup was refused'))
+ }
+ }
+ if (resolvedIdentity === undefined && providerMaterialization === undefined) {
+ errors.unshift(...identityRecoveryErrors)
}
let resolvedStop = stopResult
@@ -574,20 +1206,23 @@ export async function finalizeInteractiveProof({
)
} else {
const observed = await attemptCleanup(errors, 'stopped Sandbox observation', () =>
- observe(client, resolvedIdentity.controlRef, timeoutMs),
+ observe(client, resolvedIdentity.controlRef, resolvedIdentity.run.id, timeoutMs),
)
if (observed.ok) {
afterStop = observed.value
const deleted = await attemptCleanup(errors, 'exact Sandbox deletion', () =>
- cleanupSandbox(client, resolvedIdentity),
+ cleanupSandbox(client, resolvedIdentity, timeoutMs),
)
if (deleted.ok) {
cleanup = deleted.value
- if (
- cleanup?.confirmed !== true ||
- cleanup.id !== resolvedIdentity.controlRef.environmentId
- )
- errors.push(new Error('exact Sandbox deletion did not return confirmed identity'))
+ try {
+ assertInteractiveOwnedResourceCleanup(
+ cleanup,
+ resolvedIdentity.controlRef.environmentId,
+ )
+ } catch (error) {
+ errors.push(error)
+ }
}
}
}
@@ -634,6 +1269,7 @@ export async function finalizeInteractiveProof({
processGroupExited,
processCleanup: runtime?.processCleanup,
identity: resolvedIdentity,
+ ...(providerMaterialization === undefined ? {} : { providerMaterialization }),
stop: resolvedStop,
afterStop,
cleanup,
@@ -654,7 +1290,10 @@ async function stopThroughBraid(binary, config, runId, timeoutMs) {
controlRef: exactControlRef(beforeRun.controlRef, 'already-stopped Braid run'),
}
} else {
- assert.equal(beforeRun?.status, 'detached', 'Braid stop must target the detached run')
+ assert.ok(
+ isCancellableInteractiveRunStatus(beforeRun?.status),
+ `Braid stop cannot target run status ${beforeRun?.status ?? 'missing'}`,
+ )
const operationId = `live-interactive-stop-${randomUUID()}`
const acknowledgement = await rpcRequest(
initialized.session,
@@ -668,13 +1307,10 @@ async function stopThroughBraid(binary, config, runId, timeoutMs) {
)
const terminal = await initialized.session.waitFor(
'Braid interactive stop state',
- (candidate) => {
- const run = stateForRun(candidate, runId)
- return run !== undefined && RUN_STATUS_AFTER_STOP.has(run.status)
- },
+ (candidate) => stoppedRunFromState(candidate, runId) !== undefined,
timeoutMs,
)
- const stoppedRun = runFromState(terminal.state, runId)
+ const stoppedRun = stoppedRunFromState(terminal, runId)
assert.ok(stoppedRun, 'Braid stop did not return the target run')
assert.ok(RUN_STATUS_AFTER_STOP.has(stoppedRun.status))
const controlRef = assertControlRefsEqual(
@@ -685,9 +1321,8 @@ async function stopThroughBraid(binary, config, runId, timeoutMs) {
result = { operationId, acknowledgement, run: stoppedRun, controlRef }
}
} finally {
- const closed = await closeSession(initialized.session)
- const processCleanup = assertVerifiedProcessCleanup(
- closed?.termination,
+ const processCleanup = await closeBraidWithProof(
+ initialized.session,
'Braid interactive stop RPC process',
)
if (result !== undefined) result = { ...result, processCleanup }
@@ -724,10 +1359,16 @@ async function runProof({
let runtime
let recordPath
let identity
+ let materialization
let client
let proofData
let proofError
+ let runObserved = false
let stopped = false
+ const proofStartedAt = performance.now()
+ const usageRecords = []
+ const identityRecords = []
+ let metrics
try {
packed = await installPackedBraid(targetRepository)
config = await prepareProductionWorkspace({
@@ -737,61 +1378,99 @@ async function runProof({
endpoint: values.endpoint,
model: values.model,
runner: values.runner,
- provider: values.provider,
+ modelProvider: values.modelProvider,
providerOptions: { lifecycle: 'retained', idleTtlSeconds },
credentialRef: values.credentialRef,
credentialValue: values.credentialValue,
})
client = new Sandbox({ baseUrl: values.endpoint, apiKey: values.credentialValue })
+ usageRecords.push(await usage(client, 'before'))
+ identityRecords.push(await accountIdentity(client, 'before'))
recordPath = join(config.root, 'interactive-state.json')
runtime = createPty(packed.binary, config, recordPath, exitTimeoutMs)
await waitFor('packed Braid TUI startup', () => /Braid/iu.test(runtime.screen), timeoutMs)
const markers = {
+ proofId: `braid-live-interactive-${randomUUID().replaceAll('-', '')}`,
outputSeed: `braid_interactive_output_${randomUUID().replaceAll('-', '')}`,
inputSeed: `braid_interactive_input_${randomUUID().replaceAll('-', '')}`,
reconnectSeed: `braid_interactive_reconnect_${randomUUID().replaceAll('-', '')}`,
+ executionAttempt: `ATTEMPT_${randomUUID().replaceAll('-', '')}`,
}
markers.output = markers.outputSeed.toUpperCase()
markers.input = markers.inputSeed.toUpperCase()
markers.reconnect = markers.reconnectSeed.toUpperCase()
+ markers.inputPath = `.braid-live/${markers.proofId}/native-input.txt`
+ markers.reconnectPath = `.braid-live/${markers.proofId}/native-reconnect.txt`
+ markers.attemptPath = executionAttemptLedgerPath(markers.proofId)
- const [interactiveCommand, inputMarker, detach, , attach, reconnectMarker] =
+ const [interactiveCommand, inputCommand, detach, , attach, reconnectCommand] =
interactiveProofCommandSequence(markers)
const promptCount = occurrences(runtime.output, markers.output)
+ const interactiveBeforeScreen = runtime.screen
+ const interactiveActionRevision = runtime.terminalOutputRevision
runtime.write(`${interactiveCommand}\r`)
await waitFor(
'native interactive output',
- () => occurrences(runtime.output, markers.output) > promptCount,
+ () => {
+ if (/This action is unavailable with the selected connection/iu.test(runtime.screen)) {
+ throw new Error(
+ `native interactive command was unavailable: ${terminalDiagnostic(runtime)}`,
+ )
+ }
+ return occurrences(runtime.output, markers.output) > promptCount
+ },
+ timeoutMs,
+ )
+ await runtime.waitForPiTerminalReady(
timeoutMs,
+ interactiveActionRevision,
+ interactiveBeforeScreen,
)
- const initialFrame = await captureStateFrame(runtime, recordPath, timeoutMs)
- const initialIdentity = recoverInteractiveIdentity(initialFrame)
- assert.ok(initialIdentity, 'interactive frame did not contain one exact Braid run identity')
+ const { frame: initialFrame, identity: initialIdentity } =
+ await waitForInteractiveIdentityFrame({
+ captureFrame: () => captureStateFrame(runtime, recordPath, timeoutMs),
+ timeoutMs,
+ })
+ runObserved = stateDiagnostic(initialFrame).length > 0
const initialAttach = await observeSandbox(
client,
initialIdentity.controlRef,
+ initialIdentity.run.id,
timeoutMs,
true,
{ cols: 120, rows: 36 },
)
- const inputCount = occurrences(runtime.output, markers.input)
- runtime.write(`${inputMarker}\r`)
- await waitFor(
- 'native interactive input',
- () => occurrences(runtime.output, markers.input) > inputCount,
+ const inputBeforeScreen = runtime.screen
+ const inputActionRevision = runtime.terminalOutputRevision
+ runtime.write(`${inputCommand}\r`)
+ const inputEvidence = await waitForProviderReadback(
+ client,
+ initialIdentity.controlRef,
+ markers.inputPath,
+ `${markers.input}\n`,
timeoutMs,
+ 'interactive input',
)
+ await runtime.waitForPiTerminalReady(timeoutMs, inputActionRevision, inputBeforeScreen)
runtime.write(detach)
await proveTuiReturned(runtime, timeoutMs, 'native interactive detach')
+ const attachOutputRevision = runtime.terminalOutputRevision
+ const attachBeforeScreen = runtime.screen
runtime.write(`${attach}\r`)
- await sleep(250)
+ await runtime.waitForPiTerminalReady(timeoutMs, attachOutputRevision, attachBeforeScreen)
+ const resizeOutputRevision = runtime.terminalOutputRevision
runtime.resize(100, 30)
- const resized = await observeSandbox(client, initialIdentity.controlRef, timeoutMs, true, {
- cols: 100,
- rows: 30,
- })
+ await runtime.waitForTerminalQuiescence(timeoutMs, resizeOutputRevision)
+ const resized = await observeSandbox(
+ client,
+ initialIdentity.controlRef,
+ initialIdentity.run.id,
+ timeoutMs,
+ true,
+ { cols: 100, rows: 30 },
+ )
const reconnectedFrame = await captureStateFrame(runtime, recordPath, timeoutMs)
const reconnectedIdentity = recoverInteractiveIdentity(reconnectedFrame)
assert.ok(reconnectedIdentity, 'reconnected frame did not contain one exact Braid run identity')
@@ -805,11 +1484,23 @@ async function runProof({
reconnectedIdentity.controlRef,
'native reconnect provider control reference',
)
- const reconnectCount = occurrences(runtime.output, markers.reconnect)
- runtime.write(`${reconnectMarker}\r`)
- await waitFor(
- 'native interactive reconnect input',
- () => occurrences(runtime.output, markers.reconnect) > reconnectCount,
+ const reconnectBeforeScreen = runtime.screen
+ const reconnectActionRevision = runtime.terminalOutputRevision
+ runtime.write(`${reconnectCommand}\r`)
+ const reconnectEvidence = await waitForProviderReadback(
+ client,
+ initialIdentity.controlRef,
+ markers.reconnectPath,
+ `${markers.reconnect}\n`,
+ timeoutMs,
+ 'interactive reconnect input',
+ )
+ await runtime.waitForPiTerminalReady(timeoutMs, reconnectActionRevision, reconnectBeforeScreen)
+ const executionAttempt = await waitForExecutionAttempt(
+ client,
+ initialIdentity.controlRef,
+ markers.attemptPath,
+ markers.executionAttempt,
timeoutMs,
)
runtime.write(detach)
@@ -837,10 +1528,14 @@ async function runProof({
initialIdentity.controlRef[field] === reconnectedIdentity.controlRef[field] &&
initialIdentity.controlRef[field] === identity.controlRef[field],
)
- const beforeStop = await observeSandbox(client, identity.controlRef, timeoutMs, true, {
- cols: 100,
- rows: 30,
- })
+ const beforeStop = await observeSandbox(
+ client,
+ identity.controlRef,
+ identity.run.id,
+ timeoutMs,
+ true,
+ { cols: 100, rows: 30 },
+ )
const stop = await stopThroughBraid(packed.binary, config, identity.run.id, timeoutMs)
stopped = true
proofData = {
@@ -849,6 +1544,10 @@ async function runProof({
resized,
beforeStop,
stop,
+ recordState: record.state,
+ inputEvidence,
+ reconnectEvidence,
+ executionAttempt,
sameLocalRun,
sameProviderControlRef,
identityContinuity: {
@@ -861,7 +1560,26 @@ async function runProof({
},
}
} catch (error) {
- proofError = error
+ const failures = [error]
+ if (runtime !== undefined && !runtime.exited && recordPath !== undefined) {
+ try {
+ const failureFrame = await captureStateFrame(runtime, recordPath, exitTimeoutMs)
+ materialization = interactiveMaterializationEvidence(failureFrame)
+ runObserved ||= materialization?.runId !== undefined
+ identity ??= recoverInteractiveIdentity(failureFrame)
+ failures.push(
+ new Error(`failure Braid state: ${JSON.stringify(stateDiagnostic(failureFrame))}`),
+ )
+ } catch (captureError) {
+ failures.push(
+ new Error(`failure-state identity capture failed: ${safeMessage(captureError)}`, {
+ cause: captureError,
+ }),
+ )
+ }
+ }
+ failures.push(new Error(`last Braid terminal screen: ${terminalDiagnostic(runtime)}`))
+ proofError = new AggregateError(failures, 'Braid native interactive flow failed')
}
let cleanup
@@ -873,10 +1591,11 @@ async function runProof({
runtime,
recordPath,
identity,
+ materialization,
client,
timeoutMs,
exitTimeoutMs,
- executionStarted: runtime !== undefined,
+ executionStarted: runObserved,
stopped,
stopResult: proofData?.stop,
})
@@ -884,6 +1603,86 @@ async function runProof({
cleanupError = error
}
+ if (client !== undefined) {
+ usageRecords.push(await usage(client, 'after'))
+ identityRecords.push(await accountIdentity(client, 'after'))
+ }
+ if (proofError === undefined && cleanupError === undefined) {
+ try {
+ const beforeUsage = usageRecords.find((entry) => entry.phase === 'before')
+ const afterUsage = usageRecords.find((entry) => entry.phase === 'after')
+ const usageDelta = resourceDelta(afterUsage?.value, beforeUsage?.value)
+ const usageObservationComplete =
+ beforeUsage?.error === undefined &&
+ beforeUsage?.value !== undefined &&
+ beforeUsage?.value !== null &&
+ afterUsage?.error === undefined &&
+ afterUsage?.value !== undefined &&
+ afterUsage?.value !== null &&
+ usageDelta.activeSandboxes !== null
+ assert.equal(usageObservationComplete, true, 'interactive usage telemetry was unavailable')
+ assert.equal(
+ usageDelta.activeSandboxes,
+ 0,
+ 'interactive resource cleanup changed active usage',
+ )
+ const accountIdentityConsistency = assertStableAccountIdentity(identityRecords)
+ const telemetry = telemetryDisclosure(
+ proofData.stop.run,
+ proofData.recordState,
+ proofData.beforeStop,
+ { identityDigest: accountIdentityConsistency.identityDigest },
+ )
+ const spend = singleRunSpendDisclosure(proofData.stop.run)
+ const timing = {
+ status: 'observed',
+ milliseconds: performance.now() - proofStartedAt,
+ }
+ assertInteractiveTelemetry(telemetry, spend, timing)
+ metrics = {
+ usage: usageRecords.map((entry) => ({
+ phase: entry.phase,
+ status:
+ entry.error !== undefined
+ ? 'unavailable'
+ : entry.value === undefined
+ ? 'missing'
+ : entry.value === null
+ ? 'unavailable'
+ : 'observed',
+ ...(entry.value === undefined ? {} : { value: entry.value }),
+ ...(entry.error ? { error: entry.error } : {}),
+ })),
+ accountIdentities: identityRecords.map((entry) => ({
+ phase: entry.phase,
+ status: entry.error ? 'unavailable' : entry.value === undefined ? 'missing' : 'observed',
+ ...(entry.value === undefined
+ ? {}
+ : { value: publicAccountIdentityEvidence(entry.value) }),
+ ...(entry.error ? { error: entry.error } : {}),
+ })),
+ accountIdentityConsistency,
+ usageDelta,
+ telemetry,
+ spend,
+ timing,
+ }
+ } catch (error) {
+ proofError = new AggregateError([error], 'Braid interactive telemetry proof failed')
+ }
+ }
+
+ if (proofError !== undefined && cleanup?.providerMaterialization !== undefined) {
+ const prior = proofError instanceof AggregateError ? [...proofError.errors] : [proofError]
+ const materialization = cleanup.providerMaterialization
+ const phase = materialization.phase ?? 'no-retained-phase'
+ const cleanupMessage =
+ materialization.matchedCount === 0
+ ? `Sandbox interactive resource absence confirmed before ${phase} for ${materialization.runId}`
+ : `Sandbox interactive resource cleanup confirmed after ${phase} for ${materialization.runId}; removed ${materialization.matchedCount}`
+ proofError = new AggregateError([...prior, new Error(cleanupMessage)], proofError.message)
+ }
+
if (proofError !== undefined && cleanupError !== undefined)
throw new AggregateError(
[proofError, cleanupError],
@@ -899,9 +1698,12 @@ async function runProof({
checks: {
packedBinary: true,
interactiveCommand: true,
- input: true,
+ input: proofData.inputEvidence?.matched === true,
detach: true,
reconnect: true,
+ providerBoundInput: proofData.inputEvidence?.matched === true,
+ providerBoundReconnect: proofData.reconnectEvidence?.matched === true,
+ singleProviderExecutionAttempt: proofData.executionAttempt?.lineCount === 1,
terminalResize:
proofData.resized.geometry?.cols === 100 && proofData.resized.geometry?.rows === 30,
sameLocalRun: proofData.sameLocalRun === true,
@@ -910,6 +1712,13 @@ async function runProof({
stopThroughBraid: RUN_STATUS_AFTER_STOP.has(proofData.stop.run.status),
sandboxObservedStopped: cleanup.afterStop?.stopped === true,
exactSandboxCleanup: cleanup.cleanup?.confirmed === true,
+ exactOwnedResourceSetCleanup:
+ cleanup.cleanup?.confirmed === true && cleanup.cleanup?.matchedCount === 1,
+ accountIdentityStable: metrics.accountIdentityConsistency?.stable === true,
+ activeResourceDelta: metrics.usageDelta?.activeSandboxes === 0,
+ telemetryComplete: metrics.telemetry?.completeDisclosure === true,
+ spendDisclosed: metrics.spend?.rows?.length === 1,
+ latencyObserved: metrics.timing?.status === 'observed',
processExitedBeforeWorkspaceCleanup: cleanup.processExited === true,
processGroupExitedBeforeWorkspaceCleanup: cleanup.processGroupExited === true,
},
@@ -930,6 +1739,18 @@ async function runProof({
},
identityContinuity: proofData.identityContinuity,
processCleanup: cleanup.processCleanup,
+ providerEvidence: {
+ input: proofData.inputEvidence,
+ reconnect: proofData.reconnectEvidence,
+ },
+ executionAttempt: proofData.executionAttempt,
+ usage: metrics.usage,
+ accountIdentities: metrics.accountIdentities,
+ accountIdentityConsistency: metrics.accountIdentityConsistency,
+ usageDelta: metrics.usageDelta,
+ telemetry: metrics.telemetry,
+ spend: metrics.spend,
+ timing: metrics.timing,
markers: proofData.markers,
}
}
@@ -959,6 +1780,15 @@ export async function runInteractiveProof({
terminalResize: proof.checks.terminalResize,
processGroupExitedBeforeWorkspaceCleanup:
proof.checks.processGroupExitedBeforeWorkspaceCleanup,
+ providerInput: proof.checks.providerBoundInput,
+ providerReconnect: proof.checks.providerBoundReconnect,
+ singleProviderExecutionAttempt: proof.checks.singleProviderExecutionAttempt,
+ exactOwnedResourceSetCleanup: proof.checks.exactOwnedResourceSetCleanup,
+ accountIdentityStable: proof.checks.accountIdentityStable,
+ activeResourceDelta: proof.usageDelta.activeSandboxes,
+ telemetryComplete: proof.checks.telemetryComplete,
+ spendDisclosed: proof.checks.spendDisclosed,
+ latencyObserved: proof.checks.latencyObserved,
},
checks: INTERACTIVE_PROOF_CHECKS,
observations: proof,
@@ -981,8 +1811,9 @@ export async function main(argv = process.argv, environment = process.env) {
return EXIT_CODES.passed
} catch (error) {
const status = error?.unavailable === true ? 'unavailable' : 'failed'
+ const messages = interactiveFailureMessages(error, environment)
process.stderr.write(
- `${safeJson({ status, error: safeMessage(error, environment) }, environment)}\n`,
+ `${safeJson({ status, error: messages[0], causes: messages.slice(1) }, environment)}\n`,
)
return status === 'unavailable' ? EXIT_CODES.unavailable : EXIT_CODES.failed
}
diff --git a/scripts/live-required/tangle-sandbox-braid-multirun.mjs b/scripts/live-required/tangle-sandbox-braid-multirun.mjs
new file mode 100644
index 0000000..754e814
--- /dev/null
+++ b/scripts/live-required/tangle-sandbox-braid-multirun.mjs
@@ -0,0 +1,1174 @@
+import assert from 'node:assert/strict'
+import { createHash, randomUUID } from 'node:crypto'
+import { mkdir, readFile, stat, writeFile } from 'node:fs/promises'
+import { dirname, join, resolve } from 'node:path'
+import { fileURLToPath } from 'node:url'
+
+import { AgentExactRunControlRefSchema } from '@tangle-network/agent-interface'
+import { Sandbox } from '@tangle-network/sandbox'
+import xterm from '@xterm/headless'
+import * as pty from 'node-pty'
+
+import {
+ processTreeEnvironment,
+ terminateTrackedProcessTree,
+ trackProcessTree,
+ waitForTreeGone,
+} from '../live-bridge/process-tree.mjs'
+import { pause } from '../live-demo/terminal.mjs'
+import { connectionConfiguration } from './configuration.mjs'
+import { safeJson, safeMessage } from './contracts.mjs'
+import { configEvidence, prepareProductionWorkspace, resolveBinary } from './headless.mjs'
+import { DEFAULT_TANGLE_ROUTER_MODEL } from './model-defaults.mjs'
+import { MULTIRUN_PROOF_SCHEMA } from './multirun-contract.mjs'
+import {
+ cleanupRetainedResourceByControlRef,
+ observeRetainedResource,
+} from './tangle-sandbox-braid-stress.mjs'
+import { createTerminalOutputTracker, waitForTerminalQuiescence } from './terminal-quiescence.mjs'
+
+const scriptPath = fileURLToPath(import.meta.url)
+const repository = resolve(dirname(scriptPath), '../..')
+const DEFAULT_TIMEOUT_MS = 300_000
+const DEFAULT_HOLD_SECONDS = 180
+const DEFAULT_COLUMNS = 120
+const DEFAULT_ROWS = 40
+const TERMINAL_STATUSES = new Set([
+ 'completed',
+ 'failed',
+ 'aborted',
+ 'cancelled',
+ 'expired',
+ 'blocked',
+ 'unknown',
+])
+const SECRET_ENVIRONMENT_NAMES = [
+ 'BRAID_ANALYSIS_AUTH',
+ 'BRAID_ANALYSIS_API_KEY',
+ 'BRAID_ANALYSIS_BEARER',
+ 'BRAID_CLI_BRIDGE_AUTH',
+ 'BRAID_CLI_BRIDGE_BEARER',
+ 'BRAID_TANGLE_AUTH',
+ 'BRAID_TANGLE_API_KEY',
+ 'BRAID_TANGLE_BEARER',
+ 'BRAID_TANGLE_SANDBOX_AUTH',
+ 'BRAID_TANGLE_SANDBOX_API_KEY',
+ 'BRAID_TANGLE_SANDBOX_BEARER',
+ 'TANGLE_API_KEY',
+]
+
+function argument(name, argv = process.argv) {
+ const index = argv.indexOf(`--${name}`)
+ return index >= 0 && index + 1 < argv.length ? argv[index + 1] : undefined
+}
+
+function positiveEnvironment(environment, name, fallback) {
+ const value = Number(environment[name])
+ return Number.isFinite(value) && value > 0 ? value : fallback
+}
+
+function configurationEnvironment(environment) {
+ if (
+ !environment.BRAID_TANGLE_SANDBOX_CREDENTIAL_REF &&
+ !environment.BRAID_TANGLE_SANDBOX_AUTH &&
+ !environment.BRAID_TANGLE_SANDBOX_API_KEY &&
+ !environment.BRAID_TANGLE_SANDBOX_BEARER &&
+ environment.TANGLE_API_KEY
+ ) {
+ return { ...environment, BRAID_TANGLE_SANDBOX_API_KEY: environment.TANGLE_API_KEY }
+ }
+ return environment
+}
+
+function sanitizedEnvironment(environment) {
+ const child = { ...environment }
+ for (const name of SECRET_ENVIRONMENT_NAMES) delete child[name]
+ return child
+}
+
+export function sandboxConfiguration(environment) {
+ return connectionConfiguration(configurationEnvironment(environment), {
+ prefix: 'BRAID_TANGLE_SANDBOX',
+ kind: 'tangle-sandbox',
+ endpointNames: ['BRAID_TANGLE_ENDPOINT'],
+ modelNames: ['BRAID_TANGLE_MODEL'],
+ runnerNames: ['BRAID_TANGLE_RUNNER'],
+ providerNames: ['BRAID_TANGLE_SANDBOX_PROVIDER'],
+ modelProviderNames: ['BRAID_TANGLE_SANDBOX_MODEL_PROVIDER'],
+ fallbackEndpoint: 'https://sandbox.tangle.tools',
+ fallbackModel: DEFAULT_TANGLE_ROUTER_MODEL,
+ fallbackRunner: 'opencode',
+ fallbackModelProvider: 'tangle-router',
+ })
+}
+
+function proofId() {
+ return `braid-multirun-${Date.now()}-${randomUUID().replaceAll('-', '')}`
+}
+
+function markerFor(proof, label) {
+ return `BRAID_MULTIRUN_${proof}_${label}`.toUpperCase()
+}
+
+function promptFor(marker, holdSeconds) {
+ return [
+ 'Use the current Tangle Sandbox working directory for every command in this turn.',
+ `Write exactly ${marker} followed by a newline to .braid-live/${marker}/marker.txt.`,
+ `Read .braid-live/${marker}/marker.txt and print the result.`,
+ 'Run git -C . rev-parse --is-inside-work-tree and print its result.',
+ `Run sleep ${holdSeconds} before the final response so another branch can stream concurrently.`,
+ `Reply with exactly ${marker}.`,
+ ].join(' ')
+}
+
+function screenFrom(terminal) {
+ let text = ''
+ for (let row = 0; row < terminal.rows; row += 1) {
+ text += terminal.buffer.active.getLine(row)?.translateToString(true) ?? ''
+ text += '\n'
+ }
+ return text
+}
+
+export function terminalRecordPath(basePath, instance) {
+ if (!Number.isSafeInteger(instance) || instance < 0) {
+ throw new Error('Terminal record instance must be a non-negative safe integer')
+ }
+ return instance === 0 ? basePath : `${basePath}.restart-${instance}`
+}
+
+function normalizeScreen(screen) {
+ return screen.replace(/\s+/gu, ' ').trim()
+}
+
+const TRANSCRIPT_FOOTER = 'type / for commands ·'
+
+function createTerminal(
+ binary,
+ config,
+ recordPath,
+ columns = DEFAULT_COLUMNS,
+ rows = DEFAULT_ROWS,
+) {
+ const terminal = new xterm.Terminal({
+ cols: columns,
+ rows,
+ disableStdin: true,
+ allowProposedApi: true,
+ })
+ const environment = {
+ ...config.environment,
+ TERM: 'xterm-256color',
+ COLORTERM: 'truecolor',
+ BRAID_SHUTDOWN_MODE: 'cancel',
+ NO_COLOR: '1',
+ NODE_NO_WARNINGS: '1',
+ }
+ for (const name of SECRET_ENVIRONMENT_NAMES) delete environment[name]
+ const tracked = processTreeEnvironment(environment)
+ const child = pty.spawn(process.execPath, [binary, '--inline', '--record-state', recordPath], {
+ cwd: config.workspace,
+ env: tracked.environment,
+ name: 'xterm-256color',
+ cols: columns,
+ rows,
+ })
+ trackProcessTree(child, tracked.token)
+ let output = ''
+ let exited = false
+ let exitResult
+ const outputTracker = createTerminalOutputTracker({ quietIntervalMs: 100 })
+ let lastFrame
+ let lastFrameError
+ let processCleanup
+ const exitPromise = new Promise((resolveExit) => {
+ child.onExit((result) => {
+ exited = true
+ exitResult = result
+ resolveExit(result)
+ })
+ })
+ child.onData((data) => {
+ output += data
+ outputTracker.observe(data, (settle) => terminal.write(data, settle))
+ })
+ const waitForStable = async (timeoutMs = 10_000) => {
+ await waitForTerminalQuiescence(outputTracker, { timeoutMs, pause })
+ }
+ const captureState = async (timeoutMs = 10_000) => {
+ // A live provider can keep writing stream frames without a quiet interval.
+ // Signal the recorder after a short drain window instead of waiting for the full phase timeout.
+ await waitForStable(Math.min(timeoutMs, 1_000)).catch(() => undefined)
+ if (exited)
+ throw new Error(
+ `Braid exited before semantic frame capture (${exitResult?.exitCode ?? 'unknown'})`,
+ )
+ let previousMtime
+ try {
+ previousMtime = (await stat(`${recordPath}.frame`)).mtimeNs
+ } catch {}
+ process.kill(child.pid, 'SIGUSR2')
+ const deadline = performance.now() + timeoutMs
+ for (;;) {
+ try {
+ const framePath = `${recordPath}.frame`
+ const metadata = await stat(framePath)
+ if (previousMtime === undefined || metadata.mtimeNs !== previousMtime) {
+ const frame = JSON.parse(await readFile(framePath, 'utf8'))
+ lastFrame = frame
+ lastFrameError = undefined
+ return frame
+ }
+ } catch (error) {
+ lastFrameError = safeMessage(error, config.environment)
+ }
+ if (performance.now() >= deadline) throw new Error('semantic terminal frame was not recorded')
+ await pause(25)
+ }
+ }
+ const close = async () => {
+ if (exited) return { ...exitResult, processCleanup: await waitForTreeGone(child, 10_000) }
+ for (let layer = 0; layer < 4; layer += 1) {
+ child.write('\u001b')
+ await pause(250)
+ await waitForStable()
+ }
+ child.write('\u0003')
+ const deadline = performance.now() + 10_000
+ while (!normalizeScreen(screenFrom(terminal)).includes('Ctrl+C again to quit')) {
+ if (performance.now() >= deadline) throw new Error('safe quit prompt was not rendered')
+ await pause(25)
+ }
+ child.write('\u0003')
+ const result = await Promise.race([
+ exitPromise,
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Braid did not exit')), 15_000)),
+ ])
+ processCleanup = await waitForTreeGone(child, 10_000)
+ return { ...result, processCleanup }
+ }
+ const dispose = async () => {
+ if (!exited) {
+ const termination = await terminateTrackedProcessTree(child, {
+ termTimeoutMs: 1_000,
+ killTimeoutMs: 5_000,
+ })
+ processCleanup = termination.tree
+ }
+ processCleanup ??= await waitForTreeGone(child, 10_000)
+ terminal.dispose()
+ return processCleanup
+ }
+ return {
+ child,
+ columns,
+ rows,
+ input(value) {
+ child.write(value)
+ },
+ get exited() {
+ return exited
+ },
+ get output() {
+ return output
+ },
+ get lastFrame() {
+ return lastFrame
+ },
+ get lastFrameError() {
+ return lastFrameError
+ },
+ screen: () => screenFrom(terminal),
+ snapshot: () => ({ screen: screenFrom(terminal), outputBytes: Buffer.byteLength(output) }),
+ captureState,
+ close,
+ dispose,
+ }
+}
+
+/** Preserve the last terminal evidence when a live phase fails. */
+export function terminalFailureEvidence(runtime) {
+ return {
+ ...runtime.snapshot(),
+ exited: runtime.exited,
+ outputTail: runtime.output.slice(-20_000),
+ latestFrame: runtime.lastFrame ?? null,
+ latestFrameError: runtime.lastFrameError ?? null,
+ }
+}
+
+async function waitFor(label, predicate, timeoutMs) {
+ const deadline = performance.now() + timeoutMs
+ let lastError
+ for (;;) {
+ try {
+ const value = await predicate()
+ if (value) return value
+ } catch (error) {
+ lastError = error
+ }
+ if (performance.now() >= deadline) {
+ throw new Error(
+ `${label} timed out after ${timeoutMs}ms${lastError instanceof Error ? `: ${lastError.message}` : ''}`,
+ )
+ }
+ await pause(100)
+ }
+}
+
+export function activityBrowserOpen(screen) {
+ return typeof screen === 'string' && screen.split('\n').some((line) => /^\s*runs ›/u.test(line))
+}
+
+export function transcriptSurfaceReady(screen) {
+ return (
+ typeof screen === 'string' && !activityBrowserOpen(screen) && screen.includes(TRANSCRIPT_FOOTER)
+ )
+}
+
+export async function waitForActivityBrowserDismissal(runtime, label, timeoutMs) {
+ return waitFor(
+ `${label} activity browser dismissal`,
+ () => transcriptSurfaceReady(runtime.screen()),
+ timeoutMs,
+ )
+}
+
+export async function sendCancellationAfterActivityBrowserDismissal(runtime, label, timeoutMs) {
+ if (!transcriptSurfaceReady(runtime.screen())) {
+ runtime.input('\u001b')
+ await waitForActivityBrowserDismissal(runtime, label, timeoutMs)
+ }
+ runtime.input('\u0003')
+}
+
+async function typeAndSubmit(runtime, value) {
+ for (const character of value) {
+ runtime.input(character)
+ await pause(2)
+ }
+ runtime.input('\r')
+}
+
+async function waitForFrame(runtime, label, predicate, timeoutMs) {
+ return waitFor(
+ label,
+ async () => {
+ const frame = await runtime.captureState(timeoutMs)
+ return predicate(frame) ? frame : undefined
+ },
+ timeoutMs,
+ )
+}
+
+function exactControlRef(value, label) {
+ const parsed = AgentExactRunControlRefSchema.safeParse(value)
+ assert.ok(parsed.success, `${label} is not an exact provider control reference`)
+ return parsed.data
+}
+
+function runFromFrame(frame, runId) {
+ const stateRun = frame.state?.runs?.find((run) => run.id === runId)
+ const viewRun = frame.view?.runs?.find((run) => run.id === runId)
+ if (!stateRun || !viewRun) throw new Error(`frame omitted run ${runId}`)
+ return { stateRun, viewRun }
+}
+
+function eventIdsForRun(frame, runId) {
+ const activityIds = (frame?.view?.activity ?? [])
+ .filter((item) => item.runId === runId && typeof item.sourceEventId === 'string')
+ .map((item) => item.sourceEventId)
+ const partIds = (frame?.view?.messages ?? [])
+ .filter((message) => message.runId === runId)
+ .flatMap((message) => message.parts ?? [])
+ .map((part) => part.sourceEventId)
+ .filter((value) => typeof value === 'string')
+ return [...activityIds, ...partIds]
+}
+
+function runStatus(frame, runId) {
+ return runFromFrame(frame, runId).stateRun.status
+}
+
+function isActive(status) {
+ return !TERMINAL_STATUSES.has(status)
+}
+
+function assertUniqueEventIds(frame, runId, phase) {
+ const ids = eventIdsForRun(frame, runId)
+ assert.ok(ids.length > 0, `${phase} did not expose provider event identities for ${runId}`)
+ assert.equal(ids.length, new Set(ids).size, `${phase} duplicated provider events for ${runId}`)
+ return [...new Set(ids)]
+}
+
+function identifiersForControl(controlRef) {
+ return [
+ { kind: 'provider-environment', id: controlRef.environmentId },
+ { kind: 'provider-session', id: controlRef.sessionId },
+ { kind: 'provider-execution', id: controlRef.executionId },
+ { kind: 'provider-run', id: controlRef.runId },
+ ]
+}
+
+async function accountSnapshot(client, phase) {
+ const [identity, usage, resources] = await Promise.all([
+ client.getIdentity(),
+ client.usage(),
+ listBraidResources(client),
+ ])
+ const customerId = identity?.customerId
+ const billingOwnerId = identity?.billingOwnerId
+ assert.equal(typeof customerId, 'string', `${phase} account identity omitted customerId`)
+ assert.equal(typeof billingOwnerId, 'string', `${phase} account identity omitted billingOwnerId`)
+ const identityDigest = createHash('sha256')
+ .update(`${customerId}:${billingOwnerId}`)
+ .digest('hex')
+ return {
+ phase,
+ identityDigest,
+ usage: {
+ activeSandboxes: usage.activeSandboxes ?? null,
+ totalSandboxes: usage.totalSandboxes ?? null,
+ computeMinutes: usage.computeMinutes ?? null,
+ gpuSeconds: usage.gpuSeconds ?? null,
+ gpuCostUsd: usage.gpuCostUsd ?? null,
+ },
+ resources,
+ }
+}
+
+async function listBraidResources(client) {
+ const page = await client.list({ limit: 100, offset: 0 })
+ assert.ok(Array.isArray(page), 'Sandbox list returned an invalid page')
+ return page
+ .filter((box) => box?.metadata?.owner === 'braid' && box.metadata?.lifecycle === 'retained')
+ .map((box) => ({
+ id: box.id,
+ providerSessionId: box.metadata?.providerSessionId ?? null,
+ displayName: box.metadata?.displayName ?? null,
+ createdAt: box.createdAt ?? null,
+ }))
+}
+
+async function remoteStatus(client, controlRef, expectedStatus, timeoutMs) {
+ const box = await client.get(controlRef.environmentId)
+ assert.ok(box, `provider environment ${controlRef.environmentId} was not found`)
+ const session = box.session(controlRef.sessionId)
+ return waitFor(
+ `remote ${expectedStatus} status`,
+ async () => {
+ const status = await session.status()
+ assert.equal(status.latestExecutionId, controlRef.executionId)
+ assert.equal(status.runControlRef?.executionId, controlRef.executionId)
+ return status.status === expectedStatus ? status : undefined
+ },
+ timeoutMs,
+ )
+}
+
+async function writeArtifact(path, result, environment) {
+ await mkdir(dirname(path), { recursive: true, mode: 0o700 })
+ await writeFile(path, `${safeJson(result, environment)}\n`, { mode: 0o600 })
+}
+
+export function frameRunIds(frame) {
+ return (frame.view?.runs ?? []).map((run) => run.id)
+}
+
+export function frameEventIds(frame, runId) {
+ return eventIdsForRun(frame, runId)
+}
+
+function eventKind(event) {
+ return event?.kind ?? event?.event?.kind ?? event?.type
+}
+
+function eventPayload(event) {
+ if (event?.payload !== undefined) return event.payload
+ if (event?.event?.payload !== undefined) return event.event.payload
+ return event?.event ?? event
+}
+
+function eventRunId(event) {
+ return event?.runId ?? eventPayload(event)?.runId
+}
+
+function eventOperationId(event) {
+ const payload = eventPayload(event)
+ return (
+ event?.operationId ??
+ payload?.operationId ??
+ payload?.value?.operationId ??
+ payload?.control?.operationId
+ )
+}
+
+function eventControl(event) {
+ const payload = eventPayload(event)
+ if (typeof payload?.control === 'string') return payload.control
+ return payload?.value?.control ?? payload?.control?.control
+}
+
+export function frameCancellationDispatch(frame, runId) {
+ const event = (Array.isArray(frame?.events) ? frame.events : []).find((candidate) => {
+ return (
+ eventKind(candidate) === 'run.control.requested' &&
+ eventRunId(candidate) === runId &&
+ eventControl(candidate) === 'cancel' &&
+ typeof eventOperationId(candidate) === 'string' &&
+ eventOperationId(candidate).length > 0
+ )
+ })
+ if (event === undefined) return undefined
+ return {
+ eventKind: eventKind(event),
+ control: eventControl(event),
+ runId: eventRunId(event),
+ operationId: eventOperationId(event),
+ sequence: event?.sequence ?? event?.event?.sequence ?? null,
+ }
+}
+
+export function cancellationDispatchVisible(frame, unaffectedRunId, targetRunId) {
+ const dispatch = frameCancellationDispatch(frame, targetRunId)
+ if (dispatch === undefined) return false
+ const targetStatus = runStatus(frame, targetRunId)
+ return (
+ isActive(runStatus(frame, unaffectedRunId)) &&
+ (isActive(targetStatus) || ['aborted', 'cancelled'].includes(targetStatus))
+ )
+}
+
+export function assertSuccessfulTerminalExit(exit, label) {
+ assert.equal(exit?.exitCode, 0, `${label} Braid terminal process exited with a non-zero status`)
+}
+
+export function renderedWorkStripCount(screen) {
+ return screen
+ .split('\n')
+ .filter((line) =>
+ /^(?:focus|work) .+ · (?:queued|starting|running|waiting|detached|reconnecting|cancelling)(?: ·|\s|$)/u.test(
+ line.trimStart(),
+ ),
+ ).length
+}
+
+export function assertFrameHasConcurrentRuns(frame, runIds) {
+ assert.equal(runIds.length, 2, 'concurrent proof requires exactly two run ids')
+ for (const runId of runIds) {
+ assert.ok(frameRunIds(frame).includes(runId), `frame omitted concurrent run ${runId}`)
+ assert.ok(isActive(runStatus(frame, runId)), `run ${runId} is not active`)
+ assert.ok(eventIdsForRun(frame, runId).length > 0, `run ${runId} has no streamed events`)
+ }
+ const activeOwnership = frame.state?.activeRuns?.filter((entry) => runIds.includes(entry.runId))
+ assert.equal(activeOwnership?.length, 2, 'frame did not expose two active run ownership records')
+ const workStrip = frame.view?.workStrip?.filter((entry) => runIds.includes(entry.runId))
+ assert.equal(workStrip?.length, 2, 'frame did not project both runs into the work strip')
+ return true
+}
+
+export async function runProof({
+ targetRepository = process.env.BRAID_LIVE_REPOSITORY ?? repository,
+ environment = process.env,
+ outputPath: suppliedOutputPath,
+} = {}) {
+ const startedAt = new Date().toISOString()
+ const startedClock = performance.now()
+ const timeoutMs = positiveEnvironment(
+ environment,
+ 'BRAID_TANGLE_SANDBOX_MULTI_RUN_TIMEOUT_MS',
+ DEFAULT_TIMEOUT_MS,
+ )
+ const holdSeconds = Math.max(
+ 20,
+ Math.floor(
+ positiveEnvironment(
+ environment,
+ 'BRAID_TANGLE_SANDBOX_MULTI_RUN_HOLD_SECONDS',
+ DEFAULT_HOLD_SECONDS,
+ ),
+ ),
+ )
+ const values = sandboxConfiguration(environment)
+ assert.equal(values.runner, 'opencode', 'multi-run proof uses the proven OpenCode harness')
+ assert.ok(values.credentialValue, 'multi-run proof needs a raw Sandbox credential for cleanup')
+ const proof = proofId()
+ const markerA = markerFor(proof, 'A')
+ const markerB = markerFor(proof, 'B')
+ const outputPath =
+ suppliedOutputPath ??
+ argument('output') ??
+ environment.BRAID_TANGLE_SANDBOX_MULTI_RUN_EVIDENCE ??
+ environment.BRAID_LIVE_TANGLE_EVIDENCE ??
+ join(
+ targetRepository,
+ 'artifacts',
+ 'verification',
+ 'live',
+ `tangle-sandbox-braid-multirun-production-${Date.now()}.json`,
+ )
+ const phases = {}
+ const identifiers = []
+ const terminalEvidence = {}
+ const timings = {}
+ const controls = new Map()
+ const runIds = new Set()
+ let config
+ let client
+ let runtime
+ let restarted
+ let firstFrame
+ let secondFrame
+ let focusAFrame
+ let focusBFrame
+ let cancelDispatchFrame
+ let cancelDispatch
+ let cancelFrame
+ let finalFrame
+ let restartedFrame
+ let runAId
+ let runBId
+ let proofError
+ const cleanup = {
+ resources: [],
+ errors: [],
+ exact: false,
+ activeResourceDelta: null,
+ accountStable: false,
+ }
+ let beforeAccount
+ let afterAccount
+
+ const phase = async (name, operation) => {
+ const start = performance.now()
+ try {
+ const value = await operation()
+ phases[name] = { status: 'passed', elapsedMs: performance.now() - start }
+ timings[name] = performance.now() - start
+ return value
+ } catch (error) {
+ phases[name] = {
+ status: 'failed',
+ elapsedMs: performance.now() - start,
+ error: safeMessage(error, environment),
+ }
+ timings[name] = performance.now() - start
+ throw error
+ }
+ }
+
+ try {
+ client = new Sandbox({ baseUrl: values.endpoint, apiKey: values.credentialValue })
+ beforeAccount = await phase('account.before', () => accountSnapshot(client, 'before'))
+ const binary = await phase('binary.resolve', () => resolveBinary(targetRepository, environment))
+ config = await phase('workspace.prepare', () =>
+ prepareProductionWorkspace({
+ repository: targetRepository,
+ environment: sanitizedEnvironment(configurationEnvironment(environment)),
+ kind: values.kind,
+ endpoint: values.endpoint,
+ model: values.model,
+ runner: values.runner,
+ modelProvider: values.modelProvider,
+ providerOptions: { lifecycle: 'retained', idleTtlSeconds: 1_800 },
+ credentialRef: values.credentialRef,
+ credentialValue: values.credentialValue,
+ }),
+ )
+ const recordPath = join(config.root, 'multirun-state.json')
+ runtime = createTerminal(binary, config, terminalRecordPath(recordPath, 0))
+ await phase('terminal.start', () =>
+ waitFor('Braid terminal startup', () => /Braid/iu.test(runtime.screen()), timeoutMs),
+ )
+ firstFrame = await runtime.captureState(timeoutMs)
+ const firstConversation = firstFrame.state.conversationId
+ const firstBranch = firstFrame.state.branchId
+ await phase('branch-a.send', async () => {
+ await typeAndSubmit(runtime, promptFor(markerA, holdSeconds))
+ firstFrame = await waitForFrame(
+ runtime,
+ 'branch A admission',
+ (frame) =>
+ frame.view.runs.length >= 1 &&
+ frame.view.runs.some((run) => {
+ if (run.conversationId !== firstConversation || !isActive(run.status)) return false
+ try {
+ exactControlRef(runFromFrame(frame, run.id).stateRun.controlRef, 'branch A control')
+ return true
+ } catch {
+ return false
+ }
+ }),
+ timeoutMs,
+ )
+ })
+ const runAView = firstFrame.view.runs.find(
+ (run) => run.conversationId === firstConversation && isActive(run.status),
+ )
+ assert.ok(runAView, 'branch A did not expose an active run')
+ runAId = runAView.id
+ runIds.add(runAId)
+ const runARecord = runFromFrame(firstFrame, runAId)
+ const controlA = exactControlRef(runARecord.stateRun.controlRef, 'branch A control')
+ controls.set(runAId, controlA)
+ identifiers.push(...identifiersForControl(controlA))
+ await phase('branch-a.stream', async () => {
+ firstFrame = await waitForFrame(
+ runtime,
+ 'branch A stream',
+ (frame) => eventIdsForRun(frame, runAId).length > 0 && isActive(runStatus(frame, runAId)),
+ timeoutMs,
+ )
+ assertUniqueEventIds(firstFrame, runAId, 'branch A stream')
+ })
+ await phase('conversation-b.create', async () => {
+ await typeAndSubmit(runtime, `/new ${markerB} conversation`)
+ secondFrame = await waitForFrame(
+ runtime,
+ 'conversation B creation',
+ (frame) =>
+ frame.view.conversations.length >= 2 && frame.state.conversationId !== firstConversation,
+ timeoutMs,
+ )
+ })
+ const secondConversation = secondFrame.state.conversationId
+ const secondBranch = secondFrame.state.branchId
+ assert.notEqual(
+ secondConversation,
+ firstConversation,
+ 'the proof did not create an independent conversation',
+ )
+ assert.notEqual(secondBranch, firstBranch, 'independent conversations reused the branch id')
+ await phase('branch-b.send', async () => {
+ await typeAndSubmit(runtime, promptFor(markerB, holdSeconds))
+ secondFrame = await waitForFrame(
+ runtime,
+ 'branch B admission',
+ (frame) =>
+ frame.view.runs.some((run) => {
+ if (run.conversationId !== secondConversation || !isActive(run.status)) return false
+ try {
+ exactControlRef(runFromFrame(frame, run.id).stateRun.controlRef, 'branch B control')
+ return true
+ } catch {
+ return false
+ }
+ }),
+ timeoutMs,
+ )
+ })
+ const runBView = secondFrame.view.runs.find(
+ (run) => run.conversationId === secondConversation && isActive(run.status),
+ )
+ assert.ok(runBView, 'branch B did not expose an active run')
+ runBId = runBView.id
+ runIds.add(runBId)
+ assert.notEqual(runAId, runBId, 'independent conversations reused the local run id')
+ const runBRecord = runFromFrame(secondFrame, runBId)
+ const controlB = exactControlRef(runBRecord.stateRun.controlRef, 'branch B control')
+ controls.set(runBId, controlB)
+ identifiers.push(...identifiersForControl(controlB))
+ await phase('concurrent.stream', async () => {
+ secondFrame = await waitForFrame(
+ runtime,
+ 'two concurrent streams',
+ (frame) => {
+ try {
+ return (
+ assertFrameHasConcurrentRuns(frame, [runAId, runBId]) &&
+ renderedWorkStripCount(runtime.screen()) >= 2
+ )
+ } catch {
+ return false
+ }
+ },
+ timeoutMs,
+ )
+ assertUniqueEventIds(secondFrame, runAId, 'concurrent branch A')
+ assertUniqueEventIds(secondFrame, runBId, 'concurrent branch B')
+ })
+ terminalEvidence.concurrent = runtime.snapshot()
+ const focusedBefore = secondFrame.view.focusedRunId
+ assert.equal(focusedBefore, runBId, 'newly admitted branch B was not foreground')
+ await phase('focus-a', async () => {
+ runtime.input('\u001bOQ')
+ await waitFor('activity browser', () => /activity/iu.test(runtime.screen()), timeoutMs)
+ runtime.input('\t')
+ await pause(100)
+ runtime.input('\u001b[B')
+ runtime.input('\r')
+ focusAFrame = await waitForFrame(
+ runtime,
+ 'focus branch A',
+ (frame) => frame.view.focusedRunId === runAId,
+ timeoutMs,
+ )
+ assertFrameHasConcurrentRuns(focusAFrame, [runAId, runBId])
+ assert.ok(isActive(runStatus(focusAFrame, runAId)))
+ assert.ok(isActive(runStatus(focusAFrame, runBId)))
+ runtime.input('\u001b')
+ await waitForActivityBrowserDismissal(runtime, 'focus branch A', timeoutMs)
+ })
+ terminalEvidence.focusA = runtime.snapshot()
+ await phase('focus-b', async () => {
+ runtime.input('\u001bOQ')
+ await waitFor('activity browser again', () => /activity/iu.test(runtime.screen()), timeoutMs)
+ runtime.input('\t')
+ await pause(100)
+ runtime.input('\u001b[A')
+ runtime.input('\r')
+ focusBFrame = await waitForFrame(
+ runtime,
+ 'focus branch B',
+ (frame) => frame.view.focusedRunId === runBId,
+ timeoutMs,
+ )
+ assertFrameHasConcurrentRuns(focusBFrame, [runAId, runBId])
+ runtime.input('\u001b')
+ await waitForActivityBrowserDismissal(runtime, 'focus branch B', timeoutMs)
+ })
+ terminalEvidence.focusB = runtime.snapshot()
+ await phase('cancel-b.dispatch', async () => {
+ await sendCancellationAfterActivityBrowserDismissal(runtime, 'branch B', timeoutMs)
+ cancelDispatchFrame = await waitForFrame(
+ runtime,
+ 'branch B cancellation dispatch',
+ (frame) => cancellationDispatchVisible(frame, runAId, runBId),
+ timeoutMs,
+ )
+ cancelDispatch = frameCancellationDispatch(cancelDispatchFrame, runBId)
+ assert.ok(cancelDispatch, 'branch B cancellation did not persist its dispatch event')
+ terminalEvidence.cancelDispatch = runtime.snapshot()
+ })
+ await phase('cancel-b', async () => {
+ cancelFrame = await waitForFrame(
+ runtime,
+ 'branch B cancellation',
+ (frame) =>
+ frameCancellationDispatch(frame, runBId)?.operationId === cancelDispatch?.operationId &&
+ ['aborted', 'cancelled'].includes(runStatus(frame, runBId)) &&
+ isActive(runStatus(frame, runAId)),
+ timeoutMs,
+ )
+ assert.ok(isActive(runStatus(cancelFrame, runAId)), 'cancelling B stopped branch A')
+ assertUniqueEventIds(cancelFrame, runAId, 'branch A after branch B cancellation')
+ assertUniqueEventIds(cancelFrame, runBId, 'branch B cancellation')
+ })
+ terminalEvidence.cancel = runtime.snapshot()
+ await phase('branch-a.complete', async () => {
+ finalFrame = await waitForFrame(
+ runtime,
+ 'branch A completion',
+ (frame) =>
+ runStatus(frame, runAId) === 'completed' &&
+ ['aborted', 'cancelled'].includes(runStatus(frame, runBId)),
+ timeoutMs,
+ )
+ const finalA = runFromFrame(finalFrame, runAId).viewRun
+ assert.ok((finalA.contentBytes ?? 0) > 0, 'branch A completed without transcript content')
+ assertUniqueEventIds(finalFrame, runAId, 'branch A completion')
+ assertUniqueEventIds(finalFrame, runBId, 'branch B terminal state')
+ })
+ await phase('remote.status', async () => {
+ await remoteStatus(client, controlA, 'completed', timeoutMs)
+ await remoteStatus(client, controlB, 'cancelled', timeoutMs)
+ })
+ await phase('terminal.first.close', async () => {
+ const exit = await runtime.close()
+ assertSuccessfulTerminalExit(exit, 'first')
+ await runtime.dispose()
+ })
+ terminalEvidence.final = runtime.snapshot()
+ restarted = createTerminal(binary, config, terminalRecordPath(recordPath, 1))
+ await phase('terminal.restart', () =>
+ waitFor('restarted Braid terminal', () => /Braid/iu.test(restarted.screen()), timeoutMs),
+ )
+ restartedFrame = await restarted.captureState(timeoutMs)
+ await phase('replay.restart', async () => {
+ assert.deepEqual(new Set(frameRunIds(restartedFrame)), new Set([runAId, runBId]))
+ for (const runId of [runAId, runBId]) {
+ const ids = assertUniqueEventIds(restartedFrame, runId, 'restart replay')
+ const prior = new Set(eventIdsForRun(finalFrame, runId))
+ assert.deepEqual(
+ new Set(ids),
+ prior,
+ `restart replay changed event identities for ${runId}`,
+ )
+ }
+ assert.equal(
+ restartedFrame.state.runs.filter((run) => [runAId, runBId].includes(run.id)).length,
+ 2,
+ )
+ })
+ terminalEvidence.restart = restarted.snapshot()
+ await phase('terminal.restart.close', async () => {
+ const exit = await restarted.close()
+ assertSuccessfulTerminalExit(exit, 'restarted')
+ await restarted.dispose()
+ })
+ await phase('provider.observe', async () => {
+ await observeRetainedResource(client, controlA)
+ await observeRetainedResource(client, controlB)
+ })
+ } catch (error) {
+ proofError = error
+ if (runtime !== undefined) terminalEvidence.failure = terminalFailureEvidence(runtime)
+ if (restarted !== undefined)
+ terminalEvidence.restartFailure = terminalFailureEvidence(restarted)
+ }
+
+ if (runtime !== undefined && !runtime.exited) {
+ await runtime
+ .dispose()
+ .catch((error) =>
+ cleanup.errors.push({ phase: 'terminal.dispose', error: safeMessage(error, environment) }),
+ )
+ }
+ if (restarted !== undefined && !restarted.exited) {
+ await restarted.dispose().catch((error) =>
+ cleanup.errors.push({
+ phase: 'terminal.restart.dispose',
+ error: safeMessage(error, environment),
+ }),
+ )
+ }
+
+ for (const [runId, controlRef] of controls) {
+ try {
+ const result = await cleanupRetainedResourceByControlRef(client, controlRef)
+ cleanup.resources.push({
+ runId,
+ providerEnvironmentId: controlRef.environmentId,
+ ...result,
+ })
+ } catch (error) {
+ cleanup.errors.push({
+ runId,
+ providerEnvironmentId: controlRef.environmentId,
+ error: safeMessage(error, environment),
+ })
+ }
+ }
+ if (client !== undefined) {
+ const baselineIds = new Set((beforeAccount?.resources ?? []).map((resource) => resource.id))
+ const cleanedIds = new Set(cleanup.resources.map((resource) => resource.id))
+ try {
+ const remaining = await listBraidResources(client)
+ for (const resource of remaining) {
+ if (baselineIds.has(resource.id) || cleanedIds.has(resource.id)) continue
+ const box = await client.get(resource.id)
+ assert.ok(box, `new Braid resource ${resource.id} disappeared before cleanup`)
+ assert.equal(box.metadata?.owner, 'braid')
+ assert.equal(box.metadata?.lifecycle, 'retained')
+ await box.delete()
+ assert.equal(await client.get(resource.id), null)
+ cleanup.resources.push({
+ runId: null,
+ providerEnvironmentId: null,
+ id: resource.id,
+ discovered: true,
+ confirmed: true,
+ })
+ }
+ } catch (error) {
+ cleanup.errors.push({
+ phase: 'provider.discovery-cleanup',
+ error: safeMessage(error, environment),
+ })
+ }
+ }
+ if (client !== undefined) {
+ try {
+ afterAccount = await accountSnapshot(client, 'after')
+ cleanup.activeResourceDelta =
+ beforeAccount === undefined || afterAccount === undefined
+ ? null
+ : afterAccount.usage.activeSandboxes - beforeAccount.usage.activeSandboxes
+ cleanup.accountStable = afterAccount.identityDigest === beforeAccount?.identityDigest
+ } catch (error) {
+ cleanup.errors.push({ phase: 'account.after', error: safeMessage(error, environment) })
+ }
+ }
+ if (config !== undefined) {
+ try {
+ const workspaceCleanup = await config.cleanup()
+ cleanup.workspace = workspaceCleanup
+ } catch (error) {
+ cleanup.errors.push({ phase: 'workspace.cleanup', error: safeMessage(error, environment) })
+ }
+ }
+ cleanup.exact =
+ cleanup.resources.length === controls.size &&
+ cleanup.resources.every((resource) => resource.confirmed === true) &&
+ cleanup.errors.length === 0 &&
+ cleanup.activeResourceDelta === 0 &&
+ cleanup.accountStable === true &&
+ cleanup.workspace?.credentialRemoved === true &&
+ cleanup.workspace?.temporaryRootRemoved === true
+ const publicCleanup = {
+ ...cleanup,
+ ...(cleanup.workspace === undefined
+ ? {}
+ : {
+ workspace: {
+ protectedStoreClean: cleanup.workspace.credentialRemoved === true,
+ temporaryRootRemoved: cleanup.workspace.temporaryRootRemoved === true,
+ },
+ }),
+ }
+ const passed =
+ proofError === undefined &&
+ finalFrame !== undefined &&
+ restartedFrame !== undefined &&
+ cancelDispatch !== undefined &&
+ controls.size === 2 &&
+ cleanup.exact === true
+ const completedAt = new Date().toISOString()
+ const result = {
+ schemaVersion: MULTIRUN_PROOF_SCHEMA,
+ status: passed ? 'passed' : 'failed',
+ proofId: proof,
+ startedAt,
+ completedAt,
+ elapsedMs: performance.now() - startedClock,
+ config: config === undefined ? null : configEvidence(config),
+ provider: {
+ endpoint: values.endpoint,
+ runner: values.runner,
+ model: values.model,
+ modelProvider: values.modelProvider,
+ lifecycle: 'retained',
+ credentialConfigured: Boolean(values.credentialValue || values.credentialRef),
+ },
+ conversations: {
+ first: {
+ conversationId: firstFrame?.state?.conversationId ?? null,
+ branchId: firstFrame?.state?.branchId ?? null,
+ },
+ second: {
+ conversationId: secondFrame?.state?.conversationId ?? null,
+ branchId: secondFrame?.state?.branchId ?? null,
+ },
+ },
+ runs: [...runIds].map((runId) => {
+ const frame = finalFrame ?? secondFrame
+ const record = frame === undefined ? undefined : runFromFrame(frame, runId)
+ const viewRun = record?.viewRun
+ const controlRef = controls.get(runId)
+ const events = frame === undefined ? [] : eventIdsForRun(frame, runId)
+ return {
+ runId,
+ conversationId: viewRun?.conversationId ?? null,
+ branchId: viewRun?.branchId ?? null,
+ turnId: viewRun?.turnId ?? null,
+ operationId: viewRun?.operationId ?? null,
+ status: record?.stateRun?.status ?? null,
+ provider: viewRun?.provider ?? null,
+ runner: viewRun?.runner ?? null,
+ model: viewRun?.model ?? null,
+ localEnvironmentId: viewRun?.environmentId ?? null,
+ providerEnvironmentId: controlRef?.environmentId ?? null,
+ materializationDigest: viewRun?.materializationDigest ?? null,
+ cursor: viewRun?.cursor ?? null,
+ contentBytes: viewRun?.contentBytes ?? null,
+ eventCount: events.length,
+ eventIdsUnique: events.length === new Set(events).size,
+ identifiers: controlRef === undefined ? [] : identifiersForControl(controlRef),
+ }
+ }),
+ overlap: {
+ activeRunCount:
+ secondFrame?.state?.activeRuns?.filter((entry) => runIds.has(entry.runId)).length ?? 0,
+ streamEventCounts: [runAId, runBId].map((runId) => ({
+ runId,
+ count: eventIdsForRun(secondFrame, runId).length,
+ })),
+ workStripCount:
+ secondFrame?.view?.workStrip?.filter((entry) => runIds.has(entry.runId)).length ?? 0,
+ renderedWorkStripCount: renderedWorkStripCount(terminalEvidence.concurrent?.screen ?? ''),
+ independentConversations:
+ firstFrame?.state?.conversationId !== secondFrame?.state?.conversationId,
+ },
+ focus: {
+ beforeRunId: secondFrame?.view?.focusedRunId ?? null,
+ firstSwitchRunId: focusAFrame?.view?.focusedRunId ?? null,
+ secondSwitchRunId: focusBFrame?.view?.focusedRunId ?? null,
+ firstSwitchPreservedStatuses:
+ focusAFrame === undefined
+ ? false
+ : [runAId, runBId].every((runId) => isActive(runStatus(focusAFrame, runId))),
+ secondSwitchPreservedStatuses:
+ focusBFrame === undefined
+ ? false
+ : [runAId, runBId].every((runId) => isActive(runStatus(focusBFrame, runId))),
+ },
+ cancellation: {
+ dispatch: cancelDispatch ?? null,
+ targetRunId: runBId ?? null,
+ targetStatus:
+ cancelFrame === undefined || runBId === undefined ? null : runStatus(cancelFrame, runBId),
+ unaffectedRunId: runAId ?? null,
+ unaffectedStatusAtAck:
+ cancelFrame === undefined || runAId === undefined ? null : runStatus(cancelFrame, runAId),
+ unaffectedFinalStatus:
+ finalFrame === undefined || runAId === undefined ? null : runStatus(finalFrame, runAId),
+ },
+ replay: {
+ restartedRunCount:
+ restartedFrame === undefined
+ ? 0
+ : frameRunIds(restartedFrame).filter((runId) => runIds.has(runId)).length,
+ noDuplicateEventIds:
+ restartedFrame === undefined
+ ? false
+ : [...runIds].every((runId) => {
+ const events = eventIdsForRun(restartedFrame, runId)
+ return events.length === new Set(events).size
+ }),
+ eventSetsStable:
+ finalFrame !== undefined &&
+ restartedFrame !== undefined &&
+ [...runIds].every(
+ (runId) =>
+ new Set(eventIdsForRun(finalFrame, runId)).size ===
+ new Set(eventIdsForRun(restartedFrame, runId)).size,
+ ),
+ },
+ terminal: {
+ columns: DEFAULT_COLUMNS,
+ rows: DEFAULT_ROWS,
+ phases: terminalEvidence,
+ },
+ identifiers,
+ timings,
+ phases,
+ account: { before: beforeAccount ?? null, after: afterAccount ?? null },
+ cleanup: publicCleanup,
+ error: proofError === undefined ? null : safeMessage(proofError, environment),
+ }
+ await writeArtifact(outputPath, result, environment)
+ if (!passed) {
+ const error =
+ proofError ??
+ new Error('multi-run live proof did not satisfy its cleanup or concurrency checks')
+ error.artifactPath = outputPath
+ throw error
+ }
+ return { ...result, artifactPath: outputPath }
+}
+
+if (process.argv[1] !== undefined && resolve(process.argv[1]) === scriptPath) {
+ try {
+ const result = await runProof()
+ process.stdout.write(
+ `${safeJson({ status: result.status, artifactPath: result.artifactPath }, process.env)}\n`,
+ )
+ } catch (error) {
+ process.stderr.write(`${safeMessage(error, process.env)}\n`)
+ if (error?.artifactPath)
+ process.stdout.write(
+ `${safeJson({ status: 'failed', artifactPath: error.artifactPath }, process.env)}\n`,
+ )
+ process.exitCode = 1
+ }
+}
diff --git a/scripts/live-required/tangle-sandbox-braid-multirun.test.mjs b/scripts/live-required/tangle-sandbox-braid-multirun.test.mjs
new file mode 100644
index 0000000..8bbde9c
--- /dev/null
+++ b/scripts/live-required/tangle-sandbox-braid-multirun.test.mjs
@@ -0,0 +1,230 @@
+import assert from 'node:assert/strict'
+import test from 'node:test'
+import { assertMultirunProof } from './multirun-contract.mjs'
+import {
+ activityBrowserOpen,
+ assertFrameHasConcurrentRuns,
+ assertSuccessfulTerminalExit,
+ cancellationDispatchVisible,
+ frameCancellationDispatch,
+ frameEventIds,
+ renderedWorkStripCount,
+ sendCancellationAfterActivityBrowserDismissal,
+ terminalFailureEvidence,
+ terminalRecordPath,
+ transcriptSurfaceReady,
+ waitForActivityBrowserDismissal,
+} from './tangle-sandbox-braid-multirun.mjs'
+
+const activityBrowserScreen = [
+ 'Braid',
+ 'runs › run run-b',
+ '↑↓ select · PgUp/PgDn detail · home/end jump · ←/esc close · tab filter · r refresh',
+].join('\n')
+const transcriptScreen = 'Braid\n──────────────── type / for commands · Alt+Enter newline'
+
+function frame({ statusA = 'streaming', statusB = 'streaming', duplicate = false } = {}) {
+ const eventA = { id: 'activity-a-1', runId: 'run-a', sourceEventId: 'provider-a-1' }
+ const eventB = { id: 'activity-b-1', runId: 'run-b', sourceEventId: 'provider-b-1' }
+ return {
+ state: {
+ runs: [
+ { id: 'run-a', status: statusA },
+ { id: 'run-b', status: statusB },
+ ],
+ activeRuns: [
+ { runId: 'run-a', conversationId: 'conversation-a', branchId: 'branch-a' },
+ { runId: 'run-b', conversationId: 'conversation-b', branchId: 'branch-b' },
+ ],
+ },
+ view: {
+ runs: [
+ { id: 'run-a', conversationId: 'conversation-a', branchId: 'branch-a' },
+ { id: 'run-b', conversationId: 'conversation-b', branchId: 'branch-b' },
+ ],
+ workStrip: [
+ { runId: 'run-a', branchId: 'branch-a' },
+ { runId: 'run-b', branchId: 'branch-b' },
+ ],
+ activity: duplicate ? [eventA, eventA, eventB] : [eventA, eventB],
+ messages: [],
+ },
+ }
+}
+
+test('multirun frame guard requires two active streamed runs', () => {
+ assert.equal(assertFrameHasConcurrentRuns(frame(), ['run-a', 'run-b']), true)
+ assert.deepEqual(frameEventIds(frame(), 'run-a'), ['provider-a-1'])
+ assert.deepEqual(frameEventIds(frame(), 'run-b'), ['provider-b-1'])
+})
+
+test('activity browser dismissal is an explicit waitable terminal state', async () => {
+ assert.equal(activityBrowserOpen(activityBrowserScreen), true)
+ assert.equal(transcriptSurfaceReady(activityBrowserScreen), false)
+ assert.equal(activityBrowserOpen('Braid\nruns › run run-b\ntype / for commands ·'), true)
+ assert.equal(transcriptSurfaceReady('Braid\nruns › run run-b\ntype / for commands ·'), false)
+ assert.equal(activityBrowserOpen(transcriptScreen), false)
+ assert.equal(transcriptSurfaceReady(transcriptScreen), true)
+
+ let screen = activityBrowserScreen
+ let settled = false
+ const runtime = { screen: () => screen }
+ const dismissal = waitForActivityBrowserDismissal(runtime, 'focus branch B', 1_000).then(() => {
+ settled = true
+ })
+ await new Promise((resolve) => setImmediate(resolve))
+ assert.equal(settled, false)
+ screen = transcriptScreen
+ await dismissal
+ assert.equal(settled, true)
+})
+
+test('cancellation sends Ctrl-C only after the activity browser is closed', async () => {
+ let screen = activityBrowserScreen
+ const inputs = []
+ const runtime = {
+ screen: () => screen,
+ input(value) {
+ inputs.push(value)
+ if (value === '\u001b') screen = transcriptScreen
+ },
+ }
+ await sendCancellationAfterActivityBrowserDismissal(runtime, 'branch B', 1_000)
+ assert.deepEqual(inputs, ['\u001b', '\u0003'])
+})
+
+test('cancellation dispatch extraction requires canonical cancel event and operation identity', () => {
+ const frame = {
+ events: [
+ {
+ sequence: 4,
+ kind: 'run.control.requested',
+ payload: {
+ runId: 'run-b',
+ control: {
+ operationId: 'op-cancel-b',
+ runId: 'run-b',
+ control: 'cancel',
+ status: 'requested',
+ },
+ },
+ },
+ ],
+ }
+ assert.deepEqual(frameCancellationDispatch(frame, 'run-b'), {
+ eventKind: 'run.control.requested',
+ control: 'cancel',
+ runId: 'run-b',
+ operationId: 'op-cancel-b',
+ sequence: 4,
+ })
+ assert.equal(frameCancellationDispatch(frame, 'run-a'), undefined)
+ assert.equal(
+ frameCancellationDispatch(
+ { events: [{ kind: 'run.cancel.requested', payload: { runId: 'run-b' } }] },
+ 'run-b',
+ ),
+ undefined,
+ )
+})
+
+test('cancellation dispatch accepts a fast acknowledgement after an active proof frame', () => {
+ const acknowledged = frame({ statusB: 'cancelled' })
+ acknowledged.events = [
+ {
+ sequence: 4,
+ kind: 'run.control.requested',
+ payload: {
+ runId: 'run-b',
+ control: {
+ operationId: 'op-cancel-b',
+ runId: 'run-b',
+ control: 'cancel',
+ status: 'requested',
+ },
+ },
+ },
+ ]
+ assert.equal(cancellationDispatchVisible(acknowledged, 'run-a', 'run-b'), true)
+})
+
+test('restart close rejects a nonzero terminal exit code', () => {
+ assert.doesNotThrow(() => assertSuccessfulTerminalExit({ exitCode: 0 }, 'restarted'))
+ assert.throws(
+ () => assertSuccessfulTerminalExit({ exitCode: 1 }, 'restarted'),
+ /restarted Braid terminal process exited with a non-zero status/u,
+ )
+})
+
+test('each terminal process owns one final state evidence path', () => {
+ assert.equal(terminalRecordPath('/tmp/multirun-state.json', 0), '/tmp/multirun-state.json')
+ assert.equal(
+ terminalRecordPath('/tmp/multirun-state.json', 1),
+ '/tmp/multirun-state.json.restart-1',
+ )
+ assert.notEqual(
+ terminalRecordPath('/tmp/multirun-state.json', 1),
+ terminalRecordPath('/tmp/multirun-state.json', 2),
+ )
+ assert.throws(() => terminalRecordPath('/tmp/multirun-state.json', -1), /non-negative/u)
+})
+
+test('rendered work-strip guard counts only actionable ownership rows', () => {
+ assert.equal(
+ renderedWorkStripCount(
+ [
+ 'work branch-a · running · opencode/model · actions switch/!ask/!steer/cancel',
+ 'status text mentioning work',
+ 'focus branch-b · running · opencode/model · 1 waiting interaction · actions swi…',
+ ].join('\n'),
+ ),
+ 2,
+ )
+})
+
+test('multirun frame guard rejects a terminal or underpowered run', () => {
+ assert.throws(
+ () => assertFrameHasConcurrentRuns(frame({ statusB: 'completed' }), ['run-a', 'run-b']),
+ /run run-b is not active/u,
+ )
+ assert.throws(() => assertFrameHasConcurrentRuns(frame(), ['run-a']), /exactly two run ids/u)
+ const missingOwnership = frame()
+ missingOwnership.state.activeRuns = missingOwnership.state.activeRuns.slice(0, 1)
+ assert.throws(
+ () => assertFrameHasConcurrentRuns(missingOwnership, ['run-a', 'run-b']),
+ /active run ownership/u,
+ )
+})
+
+test('event extraction preserves duplicates for the live replay assertion', () => {
+ const duplicated = frame({ duplicate: true })
+ assert.deepEqual(frameEventIds(duplicated, 'run-a'), ['provider-a-1', 'provider-a-1'])
+})
+
+test('multirun failure evidence retains the latest semantic frame and capture error', () => {
+ const latestFrame = { state: { focusedRunId: 'run-b' }, view: { runs: [] } }
+ const evidence = terminalFailureEvidence({
+ snapshot: () => ({ screen: 'screen', outputBytes: 10 }),
+ exited: false,
+ output: 'terminal output',
+ lastFrame: latestFrame,
+ lastFrameError: 'frame file was incomplete',
+ })
+ assert.deepEqual(evidence.latestFrame, latestFrame)
+ assert.equal(evidence.latestFrameError, 'frame file was incomplete')
+ assert.equal(evidence.exited, false)
+ assert.equal(evidence.outputTail, 'terminal output')
+})
+
+test('multirun release contract rejects missing, failed, or unclean evidence', () => {
+ assert.throws(() => assertMultirunProof(undefined), /evidence is missing/u)
+ assert.throws(
+ () => assertMultirunProof({ status: 'failed' }),
+ /evidence has an unsupported schema/u,
+ )
+ assert.throws(
+ () =>
+ assertMultirunProof({ schemaVersion: 'braid.live-required.multirun.v2', status: 'failed' }),
+ /evidence did not pass/u,
+ )
+})
diff --git a/scripts/live-required/tangle-sandbox-braid-soak.mjs b/scripts/live-required/tangle-sandbox-braid-soak.mjs
index 58eb77f..f3d973d 100644
--- a/scripts/live-required/tangle-sandbox-braid-soak.mjs
+++ b/scripts/live-required/tangle-sandbox-braid-soak.mjs
@@ -525,11 +525,14 @@ export function proofFailures(proof, { maxConcurrentRuns = 1 } = {}) {
workspace?.readMatched !== true ||
workspace?.continuity?.matched !== true ||
workspace?.git?.exitCode !== 0 ||
+ workspace?.executionAttempt?.matched !== true ||
+ workspace?.executionAttempt?.lineCount !== 1 ||
+ !nonEmptyString(workspace?.executionAttempt?.path) ||
continuity?.matched !== true ||
!Number.isSafeInteger(proof.followUpEvidence?.visibleProviderEvents) ||
proof.followUpEvidence.visibleProviderEvents < 1
) {
- failures.push('retained workspace continuity proof was incomplete')
+ failures.push('retained workspace continuity or exactly-once proof was incomplete')
}
const resourceIdentity = proof.resourceIdentity
diff --git a/scripts/live-required/tangle-sandbox-braid-stress-support.mjs b/scripts/live-required/tangle-sandbox-braid-stress-support.mjs
index cc1023f..be43dc8 100644
--- a/scripts/live-required/tangle-sandbox-braid-stress-support.mjs
+++ b/scripts/live-required/tangle-sandbox-braid-stress-support.mjs
@@ -773,15 +773,43 @@ export function proofCoordinates() {
}
export function errorDetails(error) {
+ const fingerprint = errorFingerprint(error)
return {
name: error instanceof Error ? error.name : 'Error',
message: error instanceof Error ? error.message : String(error),
+ ...(fingerprint === undefined ? {} : { fingerprint }),
...(error instanceof MissingIntegrationError
? { code: error.code, details: error.details }
: {}),
}
}
+function errorFingerprint(error, depth = 0) {
+ if (depth > 4 || error === null || typeof error !== 'object') return undefined
+ const code =
+ typeof error.code === 'string' && /^[A-Z][A-Z0-9_]{1,127}$/u.test(error.code)
+ ? error.code
+ : undefined
+ const status =
+ Number.isSafeInteger(error.status) && error.status >= 100 && error.status <= 599
+ ? error.status
+ : undefined
+ const name =
+ typeof error.name === 'string' && /^[A-Za-z][A-Za-z0-9]{0,79}$/u.test(error.name)
+ ? error.name
+ : undefined
+ const cause = errorFingerprint(error.cause, depth + 1)
+ if (code === undefined && status === undefined && name === undefined && cause === undefined) {
+ return undefined
+ }
+ return {
+ ...(name === undefined ? {} : { name }),
+ ...(code === undefined ? {} : { code }),
+ ...(status === undefined ? {} : { status }),
+ ...(cause === undefined ? {} : { cause }),
+ }
+}
+
export function terminalStatus(run) {
return run && TERMINAL_STATUSES.has(run.status) ? run.status : undefined
}
diff --git a/scripts/live-required/tangle-sandbox-braid-stress.mjs b/scripts/live-required/tangle-sandbox-braid-stress.mjs
index 099f2e8..23c7fe4 100644
--- a/scripts/live-required/tangle-sandbox-braid-stress.mjs
+++ b/scripts/live-required/tangle-sandbox-braid-stress.mjs
@@ -101,6 +101,8 @@ function sandboxConfiguration(environment) {
modelNames: ['BRAID_TANGLE_MODEL'],
runnerNames: ['BRAID_TANGLE_RUNNER'],
providerNames: ['BRAID_TANGLE_SANDBOX_PROVIDER'],
+ modelProviderNames: ['BRAID_TANGLE_SANDBOX_MODEL_PROVIDER'],
+ fallbackModelProvider: 'tangle-router',
})
}
@@ -116,6 +118,13 @@ function continuityResponsePath(coordinates) {
return `.braid-live/${coordinates.proofId}/continuity-response.txt`
}
+export function executionAttemptLedgerPath(proofId) {
+ if (typeof proofId !== 'string' || proofId.length === 0) {
+ throw new Error('Execution-attempt ledger paths require a proof ID')
+ }
+ return `.braid-live/${proofId}/execution-attempts.log`
+}
+
export function sandboxWorkspaceRelativePath(path) {
const normalized = path.startsWith('./') ? path.slice(2) : path
const segments = normalized.split('/')
@@ -134,6 +143,34 @@ function sha256(value) {
return createHash('sha256').update(value).digest('hex')
}
+export function assertSingleExecutionAttemptLedger(value, expectedAttempt) {
+ assert.equal(typeof value, 'string', 'Execution-attempt ledger was not readable')
+ assert.equal(typeof expectedAttempt, 'string', 'Execution-attempt ledger has no expected attempt')
+ const normalized = value.replaceAll('\r\n', '\n')
+ assert.equal(
+ normalized.endsWith('\n'),
+ true,
+ 'Execution-attempt ledger did not end with a newline',
+ )
+ const lines = normalized.slice(0, -1).split('\n')
+ assert.equal(
+ lines.length,
+ 1,
+ `Execution-attempt ledger recorded ${lines.length} attempts; expected exactly one`,
+ )
+ assert.equal(lines[0], expectedAttempt, 'Execution-attempt ledger recorded the wrong attempt')
+ return {
+ lineCount: lines.length,
+ expectedDigest: `sha256:${sha256(`${expectedAttempt}\n`)}`,
+ observedDigest: `sha256:${sha256(normalized)}`,
+ matched: true,
+ }
+}
+
+export function continuityDigestMatches(value, expectedDigest) {
+ return value === expectedDigest || value === `${expectedDigest}\n`
+}
+
function shellQuote(value) {
return `'${String(value).replaceAll("'", "'\\''")}'`
}
@@ -142,11 +179,13 @@ function proofPrompts(coordinates, holdMs) {
const path = workspaceMarkerPath(coordinates)
const challengePath = continuityChallengePath(coordinates)
const responsePath = continuityResponsePath(coordinates)
+ const attemptPath = executionAttemptLedgerPath(coordinates.proofId)
const holdSeconds = Math.max(5, Math.ceil(holdMs / 1000))
return {
first: [
'Use the current Tangle Sandbox working directory for every command in this turn.',
`Create ${path} and write exactly ${coordinates.marker} followed by a newline.`,
+ `Run a shell command with append redirection (>>) that writes exactly ${coordinates.executionAttempt} followed by a newline to ${attemptPath}; never overwrite this file.`,
`Read ${path}, print its contents, and prove the workspace is usable with a shell command.`,
'Run git -C . rev-parse --is-inside-work-tree. If it fails, run git -C . init.',
'Then run git -C . rev-parse --is-inside-work-tree again and print its result.',
@@ -168,7 +207,7 @@ function proofPrompts(coordinates, holdMs) {
}
}
-async function retainedBox(client, controlRef, label) {
+export async function retainedBox(client, controlRef, label) {
if (!client) {
throw new MissingIntegrationError(`${label} requires the Sandbox verification client`, {
required: 'BRAID_TANGLE_SANDBOX_API_KEY or TANGLE_API_KEY',
@@ -183,6 +222,59 @@ async function retainedBox(client, controlRef, label) {
return box
}
+export async function readRetainedWorkspaceFile(
+ client,
+ controlRef,
+ path,
+ { label = 'Workspace file read', allowMissing = false, box: providedBox } = {},
+) {
+ const box = providedBox ?? (await retainedBox(client, controlRef, label))
+ if (!box || !retainedResourceIdentity(box, controlRef)) {
+ throw new MissingIntegrationError(`${label} did not resolve the exact retained Sandbox`, {
+ environmentId: controlRef?.environmentId,
+ })
+ }
+ const relativePath = sandboxWorkspaceRelativePath(path)
+ let value
+ try {
+ value = await box.read(relativePath)
+ } catch (error) {
+ if (allowMissing && isMissingWorkspaceFileError(error)) return undefined
+ throw error
+ }
+ return { environmentId: box.id, path: relativePath, value }
+}
+
+function isMissingWorkspaceFileError(error) {
+ const status = error?.status ?? error?.statusCode
+ if (status === 404 || status === '404') return true
+ if (error?.code === 'NOT_FOUND' || error?.name === 'NotFoundError') return true
+ return /\b(?:enoent|no such file|file not found)\b/iu.test(error?.message ?? '')
+}
+
+export function providerWorkspaceReadbackEvidence(
+ observation,
+ expectedValue,
+ label = 'provider-bound readback',
+) {
+ assert.ok(observation && typeof observation === 'object', `${label} observation is missing`)
+ assert.equal(typeof observation.environmentId, 'string', `${label} omitted environment identity`)
+ assert.equal(typeof observation.path, 'string', `${label} omitted workspace path`)
+ assert.equal(typeof observation.value, 'string', `${label} did not return file bytes`)
+ assert.equal(observation.value, expectedValue, `${label} did not match the expected remote bytes`)
+ return {
+ provider: 'tangle-sandbox',
+ source: 'sandbox-workspace-read',
+ environmentId: observation.environmentId,
+ path: observation.path,
+ expectedDigest: `sha256:${sha256(expectedValue)}`,
+ observedDigest: `sha256:${sha256(observation.value)}`,
+ bytes: Buffer.byteLength(observation.value),
+ matched: true,
+ localEchoOnly: false,
+ }
+}
+
async function prepareContinuityChallenge(client, controlRef, coordinates) {
const box = await retainedBox(client, controlRef, 'Continuity challenge setup')
const challenge = randomBytes(32).toString('hex')
@@ -222,11 +314,17 @@ async function listAllSandboxes(client) {
async function verifyRetainedWorkspace(client, controlRef, coordinates, continuity) {
const box = await retainedBox(client, controlRef, 'Workspace verification')
const markerPath = workspaceMarkerPath(coordinates)
+ const attemptPath = executionAttemptLedgerPath(coordinates.proofId)
const expectedMarker = `${coordinates.marker}\n`
- const [readValue, continuityResponse] = await Promise.all([
+ const [readValue, continuityResponse, attemptValue] = await Promise.all([
box.read(sandboxWorkspaceRelativePath(markerPath)),
box.read(sandboxWorkspaceRelativePath(continuity.responsePath)),
+ box.read(sandboxWorkspaceRelativePath(attemptPath)),
])
+ const executionAttempt = assertSingleExecutionAttemptLedger(
+ attemptValue,
+ coordinates.executionAttempt,
+ )
const git = await box.exec(
`set -eu; test "$(cat -- ${shellQuote(markerPath)})" = ${shellQuote(coordinates.marker)}; test "$(cat -- ${shellQuote(continuity.responsePath)})" = ${shellQuote(continuity.expectedDigest)}; test "$(git -C . rev-parse --is-inside-work-tree)" = true; git -C . status --short --untracked-files=no`,
)
@@ -253,13 +351,19 @@ async function verifyRetainedWorkspace(client, controlRef, coordinates, continui
markerPath,
readValue,
readMatched: readValue === expectedMarker,
+ executionAttempt: {
+ path: attemptPath,
+ ...executionAttempt,
+ },
continuity: {
challengePath: continuity.path,
responsePath: continuity.responsePath,
challengeBytes: continuity.bytes,
expectedDigest: continuity.expectedDigest,
- responseDigest: continuityResponse.trim(),
- matched: continuityResponse === `${continuity.expectedDigest}\n`,
+ responseDigest: continuityDigestMatches(continuityResponse, continuity.expectedDigest)
+ ? continuity.expectedDigest
+ : null,
+ matched: continuityDigestMatches(continuityResponse, continuity.expectedDigest),
},
git: {
exitCode: gitExitCode,
@@ -559,14 +663,18 @@ async function deleteOwnedResource(client, box, predicate) {
return { id: box.id, attempts, confirmed: false }
}
-async function cleanupOwnedRetainedResources(client, { controlRef, firstRunId, operationId }) {
+export async function cleanupOwnedRetainedResources(
+ client,
+ { controlRef, firstRunId, operationId } = {},
+) {
if (!client) {
throw new MissingIntegrationError('Retained Sandbox cleanup has no authenticated client', {
required: 'the execution Sandbox credential',
})
}
const expectedSessionId =
- typeof firstRunId === 'string' ? `session-braid-${safeExecutionId(firstRunId)}` : undefined
+ controlRef?.sessionId ??
+ (typeof firstRunId === 'string' ? `session-braid-${safeExecutionId(firstRunId)}` : undefined)
const predicate = (box) =>
(controlRef !== undefined && retainedResourceIdentity(box, controlRef)) ||
(expectedSessionId !== undefined &&
@@ -607,7 +715,7 @@ async function cleanupOwnedRetainedResources(client, { controlRef, firstRunId, o
}
}
-async function usage(client, phase) {
+export async function usage(client, phase) {
if (!client) return { phase, value: undefined, error: undefined }
try {
return { phase, value: await client.usage(), error: undefined }
@@ -634,7 +742,7 @@ function accountIdentityDigest(value) {
return createHash('sha256').update(`${value.customerId}:${value.billingOwnerId}`).digest('hex')
}
-function publicAccountIdentityEvidence(value) {
+export function publicAccountIdentityEvidence(value) {
return {
identityDigest: accountIdentityDigest(value),
...(typeof value.billingDelegationAuthorized === 'boolean'
@@ -643,7 +751,7 @@ function publicAccountIdentityEvidence(value) {
}
}
-async function accountIdentity(client, phase) {
+export async function accountIdentity(client, phase) {
if (!client) return { phase, value: undefined, error: undefined }
try {
return { phase, value: publicAccountIdentity(await client.getIdentity()), error: undefined }
@@ -652,7 +760,7 @@ async function accountIdentity(client, phase) {
}
}
-function assertStableAccountIdentity(records) {
+export function assertStableAccountIdentity(records) {
const before = records.find((entry) => entry.phase === 'before')
const after = records.find((entry) => entry.phase === 'after')
if (!before?.value?.customerId || !before.value.billingOwnerId) {
@@ -867,6 +975,29 @@ export function spendDisclosure(runs) {
}
}
+export function singleRunSpendDisclosure(run, label = 'interactive-run') {
+ const row = runSpend(run, label)
+ return {
+ scope: 'the unique local run in this cloud proof',
+ rows: [row],
+ totals: {
+ tokens: {
+ observedRuns: row.tokens.status === 'observed' ? 1 : 0,
+ unavailableRuns: row.tokens.status === 'unavailable' ? 1 : 0,
+ missingRuns: row.tokens.status === 'missing' ? 1 : 0,
+ input: row.tokens.status === 'observed' ? row.tokens.input : 0,
+ output: row.tokens.status === 'observed' ? row.tokens.output : 0,
+ },
+ cost: {
+ observedRuns: row.cost.status === 'observed' ? 1 : 0,
+ unavailableRuns: row.cost.status === 'unavailable' ? 1 : 0,
+ missingRuns: row.cost.status === 'missing' ? 1 : 0,
+ usd: row.cost.status === 'observed' ? row.cost.usd : 0,
+ },
+ },
+ }
+}
+
export function telemetryDisclosure(
run,
state,
@@ -1066,7 +1197,11 @@ export async function runBraidSandboxStress({
requireZeroActiveResourceDelta = false,
} = {}) {
const startedAt = performance.now()
- const coordinates = proofCoordinates()
+ const baseCoordinates = proofCoordinates()
+ const coordinates = {
+ ...baseCoordinates,
+ executionAttempt: `ATTEMPT_${baseCoordinates.proofId.replaceAll(/[^A-Za-z0-9]/gu, '_')}`,
+ }
const ids = operationIds(coordinates.proofId)
const holdMs = numberEnvironment(
environment,
@@ -1753,6 +1888,10 @@ export async function runBraidSandboxStress({
config: config ? configEvidence(config) : undefined,
timing: phases,
}),
+ processes: {
+ ...(result?.processes ?? {}),
+ binarySha256: result?.processes?.binarySha256 ?? binarySha256 ?? null,
+ },
status:
failure === undefined &&
cleanupError === undefined &&
diff --git a/scripts/live-required/tangle-sandbox-interactive-continuity.mjs b/scripts/live-required/tangle-sandbox-interactive-continuity.mjs
index cfeee60..1695f56 100644
--- a/scripts/live-required/tangle-sandbox-interactive-continuity.mjs
+++ b/scripts/live-required/tangle-sandbox-interactive-continuity.mjs
@@ -62,6 +62,14 @@ function identityText(ref) {
.join('/')
}
+/**
+ * Accept the explicit identity conflict returned by the Sandbox sidecar.
+ * A mismatched incarnation is a rejected lookup, not an absent session.
+ */
+export function isStaleInteractiveIdentityError(error) {
+ return error?.code === 'STALE_INCARNATION'
+}
+
function directCredentialEnvironment(environment) {
const hasSandboxCredential = [
'BRAID_TANGLE_SANDBOX_AUTH',
@@ -204,6 +212,8 @@ function configuration(environment) {
modelNames: ['BRAID_TANGLE_MODEL'],
runnerNames: ['BRAID_TANGLE_RUNNER'],
providerNames: ['BRAID_TANGLE_SANDBOX_PROVIDER'],
+ modelProviderNames: ['BRAID_TANGLE_SANDBOX_MODEL_PROVIDER'],
+ fallbackModelProvider: 'tangle-router',
})
if (!values.credentialValue?.trim()) {
throw capabilityUnavailable(
@@ -249,10 +259,14 @@ export function buildExactInteractiveStart({
proofId,
runner,
model,
- modelProvider = 'tangle',
+ modelProvider,
cols = DEFAULT_COLS,
rows = DEFAULT_ROWS,
}) {
+ if (typeof modelProvider !== 'string' || modelProvider.trim().length === 0) {
+ throw new Error('Interactive start requires an explicit model provider')
+ }
+ const selectedModelProvider = modelProvider.trim()
const exactEnvironmentId = safeIdentifier(environmentId, 'environmentId')
const exactSessionId = safeIdentifier(sessionId, 'sessionId')
const exactExecutionId = safeIdentifier(executionId, 'executionId')
@@ -262,7 +276,7 @@ export function buildExactInteractiveStart({
harness: runner,
model: {
default: model,
- provider: modelProvider,
+ provider: selectedModelProvider,
},
}
const requestedProfileDigest = interfaceModule.canonicalAgentProfileDigest(profile)
@@ -559,7 +573,7 @@ export async function runInteractiveContinuityProof({
harness: values.runner,
model: {
default: values.model,
- provider: values.provider,
+ provider: values.modelProvider,
},
}
const options = createOptions(values, createProfile, exactProofId)
@@ -612,7 +626,7 @@ export async function runInteractiveContinuityProof({
proofId: exactProofId,
runner: values.runner,
model: values.model,
- modelProvider: values.provider,
+ modelProvider: values.modelProvider,
})
startInfo = await bounded(
`Interactive start [${identityText(exact.start)}]`,
@@ -763,26 +777,34 @@ export async function runInteractiveContinuityProof({
incarnationId: `${ref.incarnationId}-stale`,
}
const staleHandle = session.interactive({ ref: staleRef, control: startInfo.control })
- const staleStatus = await bounded(
- `Stale identity status [${identityText(staleRef)}]`,
- () => staleHandle.status(),
- timeoutMs,
- )
- assert.equal(
- staleStatus,
- null,
- `Stale identity [${identityText(staleRef)}] resolved to a live process`,
+ let staleStatusError
+ await assert.rejects(
+ () =>
+ bounded(
+ `Stale identity status [${identityText(staleRef)}]`,
+ () => staleHandle.status(),
+ timeoutMs,
+ ),
+ (error) => {
+ staleStatusError = error
+ assert.equal(
+ isStaleInteractiveIdentityError(error),
+ true,
+ `Stale identity [${identityText(staleRef)}] returned an unrelated status error`,
+ )
+ return true
+ },
)
await assert.rejects(
() => staleHandle.attach({ cols: DEFAULT_COLS, rows: DEFAULT_ROWS }),
(error) => {
- const message = safeMessage(error, environment)
- return /stale|identity|not running|exists/iu.test(message)
+ return isStaleInteractiveIdentityError(error)
},
)
checks.push(
checkRecord('stale-identity-rejected', box.id, ref, {
rejectedIncarnationId: staleRef.incarnationId,
+ statusErrorCode: typeof staleStatusError?.code === 'string' ? staleStatusError.code : null,
}),
)
@@ -864,7 +886,7 @@ export async function runInteractiveContinuityProof({
credentialConfigured: true,
model: values.model,
runner: values.runner,
- provider: values.provider,
+ modelProvider: values.modelProvider,
},
run: {
environmentId: box.id,
diff --git a/scripts/live-required/tangle-sandbox-interactive-continuity.test.mjs b/scripts/live-required/tangle-sandbox-interactive-continuity.test.mjs
index ec66493..ed5b7ed 100644
--- a/scripts/live-required/tangle-sandbox-interactive-continuity.test.mjs
+++ b/scripts/live-required/tangle-sandbox-interactive-continuity.test.mjs
@@ -7,6 +7,7 @@ import {
assertSameInteractiveRef,
assertStatusForRef,
buildExactInteractiveStart,
+ isStaleInteractiveIdentityError,
safeErrorRecord,
} from './tangle-sandbox-interactive-continuity.mjs'
@@ -121,6 +122,8 @@ class FakeTerminalWebSocket {
}
}
+const EXACT_INCARNATION_ID = '00000000-0000-4000-8000-000000000001'
+
test('missing exact public methods are a hard unavailable result', () => {
assert.throws(
() =>
@@ -162,6 +165,7 @@ test('exact start material binds one run to one profile and session', () => {
proofId: 'proof-1',
runner: 'pi',
model: 'test-model',
+ modelProvider: 'tangle-router',
})
assert.equal(exact.start.run.environmentId, 'sandbox-1')
assert.equal(exact.start.run.sessionId, 'session-1')
@@ -200,6 +204,30 @@ test('same-ref assertions reject a changed incarnation and accept an exact repla
)
})
+test('stale identity requires the explicit sidecar conflict code', () => {
+ const stale = Object.assign(new Error('Interactive session incarnation is stale'), {
+ code: 'STALE_INCARNATION',
+ })
+ assert.equal(isStaleInteractiveIdentityError(stale), true)
+ assert.equal(
+ isStaleInteractiveIdentityError(new Error('Interactive session identity is stale')),
+ false,
+ )
+ assert.equal(
+ isStaleInteractiveIdentityError(
+ Object.assign(new Error('stale'), { code: 'stale_incarnation' }),
+ ),
+ false,
+ )
+ assert.equal(isStaleInteractiveIdentityError(new Error('Interactive session not found')), false)
+ assert.equal(
+ isStaleInteractiveIdentityError(
+ Object.assign(new Error('identity service unavailable'), { code: 'TRANSPORT' }),
+ ),
+ false,
+ )
+})
+
test('status and control assertions stay bound to the exact process', () => {
const ref = {
run: {
@@ -253,7 +281,7 @@ test('public TerminalStream proves input, detach, and same-connection replay wit
url: 'https://sandbox.test/terminals/session-unit/ws',
token: 'unit-token',
connectionId: 'session-unit',
- incarnationId: 'incarnation-unit',
+ incarnationId: EXACT_INCARNATION_ID,
control,
handlers: {
onData(data) {
@@ -301,9 +329,9 @@ test('public TerminalStream proves input, detach, and same-connection replay wit
true,
)
if (Object.hasOwn(initFrames[0].frame, 'incarnationId')) {
- assert.equal(initFrames[0].frame.incarnationId, 'incarnation-unit')
+ assert.equal(initFrames[0].frame.incarnationId, EXACT_INCARNATION_ID)
assert.deepEqual(initFrames[0].frame.control, control)
- assert.equal(initFrames[1].frame.incarnationId, 'incarnation-unit')
+ assert.equal(initFrames[1].frame.incarnationId, EXACT_INCARNATION_ID)
assert.deepEqual(initFrames[1].frame.control, control)
}
} finally {
diff --git a/scripts/live-required/tangle-sandbox-worker.mjs b/scripts/live-required/tangle-sandbox-worker.mjs
index 1031aad..62754d1 100644
--- a/scripts/live-required/tangle-sandbox-worker.mjs
+++ b/scripts/live-required/tangle-sandbox-worker.mjs
@@ -2,10 +2,10 @@ import { createInterface } from 'node:readline'
import { resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { Sandbox } from '@tangle-network/sandbox'
+import { DEFAULT_TANGLE_ROUTER_MODEL_ID } from './model-defaults.mjs'
const DEFAULT_SANDBOX_ENDPOINT = 'https://sandbox.tangle.tools'
const DEFAULT_MODEL_ENDPOINT = 'https://router.tangle.tools/v1'
-const DEFAULT_MODEL = 'glm-5.2'
const DEFAULT_MODEL_PROVIDER = 'openai-compat'
function argument(name, argv = process.argv) {
@@ -35,9 +35,9 @@ function clientConfiguration(environment = process.env) {
}
}
-function backendConfiguration(environment = process.env) {
+export function backendConfiguration(environment = process.env) {
const provider = environment.BRAID_TANGLE_SANDBOX_MODEL_PROVIDER?.trim() || DEFAULT_MODEL_PROVIDER
- const model = environment.BRAID_TANGLE_SANDBOX_MODEL?.trim() || DEFAULT_MODEL
+ const model = environment.BRAID_TANGLE_SANDBOX_MODEL?.trim() || DEFAULT_TANGLE_ROUTER_MODEL_ID
const baseUrl = environment.BRAID_TANGLE_SANDBOX_MODEL_ENDPOINT?.trim() || DEFAULT_MODEL_ENDPOINT
const apiKey = requiredEnvironment(
'BRAID_TANGLE_SANDBOX_MODEL_API_KEY',
diff --git a/scripts/live-required/tangle-workspace-proof.mjs b/scripts/live-required/tangle-workspace-proof.mjs
new file mode 100644
index 0000000..1bd4d90
--- /dev/null
+++ b/scripts/live-required/tangle-workspace-proof.mjs
@@ -0,0 +1,1307 @@
+import { createHash, randomUUID } from 'node:crypto'
+import { dirname, join, resolve } from 'node:path'
+import { fileURLToPath, pathToFileURL } from 'node:url'
+
+import {
+ confidentialExecutionVerified,
+ forkedEnvironmentConfidentialityVerified,
+ workspaceCleanupAcknowledgementMatches,
+ workspaceCheckpointRequestDigest,
+ workspaceCheckpointResultMatchesRequest,
+ workspaceCleanupRequestDigest,
+ workspaceForkRequestDigest,
+ workspaceForkResultMatchesRequest,
+} from '@tangle-network/agent-interface'
+import { generateAttestationNonce } from '@tangle-network/sandbox'
+
+import { connectionConfiguration } from './configuration.mjs'
+import {
+ PROOF_OPERATIONS,
+ proofInvocation,
+ proofReceipt,
+ protectedUnavailable,
+ scalarMeasurement,
+} from './contracts.mjs'
+import { configEvidence, prepareProductionWorkspace } from './headless.mjs'
+import { DEFAULT_TANGLE_ROUTER_MODEL } from './model-defaults.mjs'
+
+const DEFAULT_REPOSITORY = resolve(dirname(fileURLToPath(import.meta.url)), '../..')
+const DEFAULT_ENDPOINT = 'https://sandbox.tangle.tools'
+const DEFAULT_RUNNER = 'opencode'
+const DEFAULT_IDLE_TTL_SECONDS = 1_800
+const DEFAULT_ABSENCE_ATTEMPTS = 6
+const DEFAULT_ABSENCE_DELAY_MS = 500
+const SOURCE_TERMINAL_STATUSES = new Set([
+ 'completed',
+ 'failed',
+ 'aborted',
+ 'cancelled',
+ 'blocked',
+ 'expired',
+ 'unknown',
+])
+
+function configurationEnvironment(environment) {
+ if (
+ !environment.BRAID_TANGLE_SANDBOX_CREDENTIAL_REF &&
+ !environment.BRAID_TANGLE_SANDBOX_AUTH &&
+ !environment.BRAID_TANGLE_SANDBOX_API_KEY &&
+ !environment.BRAID_TANGLE_SANDBOX_BEARER &&
+ environment.TANGLE_API_KEY
+ ) {
+ return { ...environment, BRAID_TANGLE_SANDBOX_API_KEY: environment.TANGLE_API_KEY }
+ }
+ return environment
+}
+
+export function sandboxConfiguration(environment) {
+ return connectionConfiguration(configurationEnvironment(environment), {
+ prefix: 'BRAID_TANGLE_SANDBOX',
+ kind: 'tangle-sandbox',
+ endpointNames: ['BRAID_TANGLE_ENDPOINT'],
+ modelNames: ['BRAID_TANGLE_MODEL'],
+ runnerNames: ['BRAID_TANGLE_RUNNER'],
+ providerNames: ['BRAID_TANGLE_SANDBOX_PROVIDER'],
+ modelProviderNames: ['BRAID_TANGLE_SANDBOX_MODEL_PROVIDER'],
+ fallbackEndpoint: DEFAULT_ENDPOINT,
+ fallbackModel: DEFAULT_TANGLE_ROUTER_MODEL,
+ fallbackRunner: DEFAULT_RUNNER,
+ fallbackModelProvider: 'tangle-router',
+ })
+}
+
+function idleTtlSeconds(environment) {
+ const candidate = Number(environment.BRAID_TANGLE_SANDBOX_IDLE_TTL_SECONDS)
+ if (!Number.isSafeInteger(candidate) || candidate < 60 || candidate > 604_800)
+ return DEFAULT_IDLE_TTL_SECONDS
+ return candidate
+}
+
+const MAX_CONFIDENTIAL_POLICY_ITEMS = 256
+const MAX_CONFIDENTIAL_ATTESTATION_AGE_SECONDS = 86_400
+const SHA256_DIGEST_PATTERN = /^sha256:[0-9a-f]{64}$/u
+const POLICY_ID_PATTERN = /^[A-Za-z][A-Za-z0-9._:-]{0,255}$/u
+
+function configuredList(environment, name) {
+ const value = environment[name]
+ if (typeof value !== 'string' || value.trim().length === 0) {
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_TRUST_POLICY_REQUIRED',
+ `LIVE-10 requires ${name} as a comma-separated non-secret allowlist`,
+ )
+ }
+ const values = value.split(',').map((entry) => entry.trim())
+ if (
+ values.length === 0 ||
+ values.length > MAX_CONFIDENTIAL_POLICY_ITEMS ||
+ values.some((entry) => entry.length === 0)
+ ) {
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_TRUST_POLICY_INVALID',
+ `${name} must contain one to ${MAX_CONFIDENTIAL_POLICY_ITEMS} values`,
+ )
+ }
+ return values
+}
+
+export function parseConfidentialTrustPolicy(environment) {
+ const acceptedMeasurements = configuredList(environment, 'BRAID_TANGLE_CONFIDENTIAL_MEASUREMENTS')
+ if (acceptedMeasurements.some((entry) => !SHA256_DIGEST_PATTERN.test(entry))) {
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_TRUST_POLICY_INVALID',
+ 'BRAID_TANGLE_CONFIDENTIAL_MEASUREMENTS must contain canonical sha256 digests',
+ )
+ }
+ if (new Set(acceptedMeasurements).size !== acceptedMeasurements.length) {
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_TRUST_POLICY_INVALID',
+ 'BRAID_TANGLE_CONFIDENTIAL_MEASUREMENTS must not contain duplicates',
+ )
+ }
+ const acceptedPolicyIds = configuredList(environment, 'BRAID_TANGLE_CONFIDENTIAL_POLICY_IDS')
+ if (acceptedPolicyIds.some((entry) => !POLICY_ID_PATTERN.test(entry))) {
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_TRUST_POLICY_INVALID',
+ 'BRAID_TANGLE_CONFIDENTIAL_POLICY_IDS must contain canonical policy identifiers',
+ )
+ }
+ if (new Set(acceptedPolicyIds).size !== acceptedPolicyIds.length) {
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_TRUST_POLICY_INVALID',
+ 'BRAID_TANGLE_CONFIDENTIAL_POLICY_IDS must not contain duplicates',
+ )
+ }
+ const selectedPolicyId =
+ typeof environment.BRAID_TANGLE_CONFIDENTIAL_POLICY_ID === 'string'
+ ? environment.BRAID_TANGLE_CONFIDENTIAL_POLICY_ID.trim()
+ : environment.BRAID_TANGLE_CONFIDENTIAL_POLICY_ID
+ if (
+ typeof selectedPolicyId !== 'string' ||
+ !POLICY_ID_PATTERN.test(selectedPolicyId) ||
+ !acceptedPolicyIds.includes(selectedPolicyId)
+ ) {
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_TRUST_POLICY_INVALID',
+ 'BRAID_TANGLE_CONFIDENTIAL_POLICY_ID must name an accepted policy id',
+ )
+ }
+ const maxAgeSeconds = Number(environment.BRAID_TANGLE_CONFIDENTIAL_MAX_AGE_SECONDS)
+ if (
+ !Number.isSafeInteger(maxAgeSeconds) ||
+ maxAgeSeconds < 1 ||
+ maxAgeSeconds > MAX_CONFIDENTIAL_ATTESTATION_AGE_SECONDS
+ ) {
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_TRUST_POLICY_INVALID',
+ `BRAID_TANGLE_CONFIDENTIAL_MAX_AGE_SECONDS must be an integer from 1 to ${MAX_CONFIDENTIAL_ATTESTATION_AGE_SECONDS}`,
+ )
+ }
+ return Object.freeze({
+ policy: Object.freeze({
+ acceptedMeasurements: Object.freeze(acceptedMeasurements),
+ acceptedPolicyIds: Object.freeze(acceptedPolicyIds),
+ maxAgeSeconds,
+ }),
+ selectedPolicyId,
+ })
+}
+
+function shellQuote(value) {
+ return `'${String(value).replaceAll("'", "'\\''")}'`
+}
+
+function sha256(value) {
+ return createHash('sha256').update(value, 'utf8').digest('hex')
+}
+
+function sha256Digest(value) {
+ if (typeof value !== 'string') throw new Error('A provider digest is missing')
+ if (/^sha256:[0-9a-f]{64}$/u.test(value)) return value
+ if (/^[0-9a-f]{64}$/u.test(value)) return `sha256:${value}`
+ throw new Error('A provider returned an invalid SHA-256 digest')
+}
+
+function assertCondition(condition, message) {
+ if (!condition) throw new Error(message)
+}
+
+function unavailable(code, message, cause) {
+ return protectedUnavailable(code, message, cause)
+}
+
+function providerEnvironmentId(record, label) {
+ const value = record?.providerEnvironmentId
+ if (typeof value !== 'string' || value.length === 0)
+ throw new Error(`${label} has no provider environment identity`)
+ return value
+}
+
+function sourceEnvironmentRecord(state, run) {
+ const environment = state.environments.find((candidate) => candidate.id === run.environmentId)
+ if (environment === undefined) throw new Error(`Source run ${run.id} has no environment record`)
+ const providerId = providerEnvironmentId(environment, 'Source environment')
+ assertCondition(
+ run.controlRef?.environmentId === providerId,
+ 'Source run and environment identities do not match',
+ )
+ return { environment, providerId }
+}
+
+export function sourceIdentityForRun(state, runId) {
+ const run = state.runs.find((candidate) => candidate.id === runId)
+ if (run === undefined || run.controlRef === undefined) return undefined
+ try {
+ return Object.freeze({ run, ...sourceEnvironmentRecord(state, run) })
+ } catch {
+ return undefined
+ }
+}
+
+export function checkpointIdForOperation(state, operationId) {
+ return state.checkpoints.find((candidate) => candidate.operationId === operationId)?.id
+}
+
+function sourceRunFor(state, runId) {
+ const run = state.runs.find((candidate) => candidate.id === runId)
+ if (run === undefined) throw new Error(`Source run ${runId} is missing from durable state`)
+ if (run.status !== 'completed' || run.complete !== true)
+ throw new Error(`Source run ${runId} did not complete`)
+ if (run.controlRef === undefined)
+ throw new Error(`Source run ${runId} has no exact provider control reference`)
+ return run
+}
+
+async function runtimeModules(repository) {
+ const dist = resolve(repository, 'dist')
+ const [startup, application, credentials, connections, profiles] = await Promise.all([
+ import(pathToFileURL(join(dist, 'bin', 'production-startup.js')).href),
+ import(pathToFileURL(join(dist, 'bin', 'production-application.js')).href),
+ import(pathToFileURL(join(dist, 'bin', 'production-credential-context.js')).href),
+ import(pathToFileURL(join(dist, 'adapters', 'connections', 'production-connections.js')).href),
+ import(pathToFileURL(join(dist, 'adapters', 'agent-interface', 'profile-runtime.js')).href),
+ ])
+ return { startup, application, credentials, connections, profiles }
+}
+
+async function openProofApplication({ repository, config }) {
+ const modules = await runtimeModules(repository)
+ let context
+ try {
+ context = modules.credentials.createProductionCredentialContext({
+ workspace: config.workspace,
+ configPath: config.configPath,
+ databaseKeyFile: config.databaseKeyFile,
+ dataDirectory: config.dataDirectory,
+ })
+ if (context === undefined)
+ throw unavailable(
+ 'PROTECTED_DATABASE_KEY_REQUIRED',
+ "The live proof could not create Braid's protected credential context",
+ )
+ const startupOptions = {
+ workspace: config.workspace,
+ configPath: config.configPath,
+ databaseKeyFile: config.databaseKeyFile,
+ credentialContext: context,
+ credentialStore: context.store,
+ }
+ const startup = await modules.startup.loadProductionStartup(startupOptions)
+ const connection = startup.connections.find(
+ (candidate) => candidate.id === startup.connectionId,
+ )
+ if (connection === undefined)
+ throw new Error('The live proof configuration selected no connection')
+ const connectionOptions = {
+ ...(startup.connectionOptions ?? {}),
+ credentials: context.store,
+ }
+ const production = {
+ ...startup,
+ workspaceRoot: config.workspace,
+ connectionOptions,
+ }
+ const opened = await modules.application.openProductionApplication({
+ workspace: config.workspace,
+ statePath: config.statePath,
+ startupOptions,
+ production,
+ })
+ try {
+ await modules.application.activateProductionConnection(
+ opened.app,
+ startup.connectionId,
+ startup.connections,
+ )
+ } catch (error) {
+ await opened.close().catch(() => undefined)
+ throw error
+ }
+ const confidentialVerifiers =
+ connection.confidentialAttestationPolicy === undefined
+ ? undefined
+ : modules.connections.createNitroConfidentialAttestationVerifiers(
+ connection.confidentialAttestationPolicy,
+ )
+ return Object.freeze({
+ ...opened,
+ startup,
+ production,
+ connection,
+ ...(confidentialVerifiers === undefined ? {} : { confidentialVerifiers }),
+ modules,
+ })
+ } catch (error) {
+ context?.dispose()
+ throw error
+ }
+}
+
+function confidentialVerifiersFor(opened) {
+ if (opened.confidentialVerifiers === undefined) {
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_TRUST_POLICY_REQUIRED',
+ 'LIVE-10 selected a connection without a persisted Nitro trust policy',
+ )
+ }
+ return opened.confidentialVerifiers
+}
+
+function providerAdapters(opened) {
+ const { createTangleWorkspaceBranchingProvider, getTangleSandboxEnvironment } =
+ opened.modules.connections
+ const options = opened.production.connectionOptions ?? {}
+ const factory = createTangleWorkspaceBranchingProvider(opened.connection, options)
+ return Object.freeze({
+ freshBranching: async (sourceEnvironmentId) => {
+ const branching = await factory.forEnvironment(sourceEnvironmentId)
+ if (branching === null)
+ throw unavailable(
+ 'PROTECTED_WORKSPACE_BRANCHING_UNAVAILABLE',
+ `Tangle Sandbox did not expose workspace branching for ${sourceEnvironmentId}`,
+ )
+ return branching
+ },
+ freshEnvironment: (environmentId) =>
+ getTangleSandboxEnvironment(opened.connection, options, environmentId),
+ })
+}
+
+function markerFor(proofId, label) {
+ return `BRAID_WORKSPACE_${proofId}_${label}`.toUpperCase()
+}
+
+function markerPath(proofId) {
+ return `.braid-live/${proofId}/workspace-marker.txt`
+}
+
+function sourcePrompt(marker, path) {
+ return [
+ 'Use the current Tangle Sandbox working directory for every command in this turn.',
+ `Run mkdir -p ${shellQuote(dirname(path))}.`,
+ `Run printf '%s\\n' ${shellQuote(marker)} > ${shellQuote(path)}.`,
+ `Run cat ${shellQuote(path)} and verify the content is exactly ${shellQuote(marker)}.`,
+ `Reply with exactly ${marker}.`,
+ ].join(' ')
+}
+
+async function sendSource(app, proofId, onIdentity = () => {}) {
+ const initial = app.state()
+ const marker = markerFor(proofId, 'SOURCE')
+ const path = markerPath(proofId)
+ const operationId = `op-live-required-${proofId}-source-${randomUUID()}`
+ const receipt = app.send({
+ operationId,
+ conversationId: initial.conversationId,
+ branchId: initial.branchId,
+ text: sourcePrompt(marker, path),
+ })
+ const captureIdentity = () => {
+ const identity = sourceIdentityForRun(app.state(), receipt.runId)
+ if (identity === undefined) return
+ onIdentity(
+ Object.freeze({
+ marker,
+ path,
+ operationId,
+ receipt,
+ ...identity,
+ }),
+ )
+ }
+ let terminal
+ try {
+ await receipt.admissionReady
+ captureIdentity()
+ terminal = await receipt.completion
+ } catch (error) {
+ captureIdentity()
+ throw error
+ }
+ const run = sourceRunFor(terminal, receipt.runId)
+ const source = sourceEnvironmentRecord(terminal, run)
+ return Object.freeze({
+ marker,
+ path,
+ operationId,
+ receipt,
+ run,
+ ...source,
+ })
+}
+
+async function readWorkspace(adapters, environmentId, path, label) {
+ const environment = await adapters.freshEnvironment(environmentId)
+ if (environment === null)
+ throw new Error(`${label} provider environment ${environmentId} is missing`)
+ if (typeof environment.read !== 'function')
+ throw unavailable(
+ 'PROTECTED_WORKSPACE_READ_UNAVAILABLE',
+ `Tangle Sandbox did not expose workspace read for ${label}`,
+ )
+ const content = await environment.read(path)
+ return Object.freeze({ content, digest: sha256(content) })
+}
+
+async function writeWorkspace(adapters, environmentId, path, content, label) {
+ const environment = await adapters.freshEnvironment(environmentId)
+ if (environment === null)
+ throw new Error(`${label} provider environment ${environmentId} is missing`)
+ if (typeof environment.write !== 'function')
+ throw unavailable(
+ 'PROTECTED_WORKSPACE_WRITE_UNAVAILABLE',
+ `Tangle Sandbox did not expose workspace write for ${label}`,
+ )
+ await environment.write(path, content)
+}
+
+function checkpointAndForkRequests(state, plan, operationId, sourceRun, destinationId) {
+ const checkpoint = state.checkpoints.find((candidate) => candidate.operationId === operationId)
+ if (checkpoint === undefined) throw new Error('Braid did not persist the workspace checkpoint')
+ const operation = state.operations.find((candidate) => candidate.id === operationId)
+ const providerCheckpointId = operation?.result?.providerCheckpointId
+ if (typeof providerCheckpointId !== 'string' || providerCheckpointId.length === 0)
+ throw new Error('Braid did not persist the provider checkpoint identity')
+ const persistedForkDigest = operation?.result?.forkRequestDigest
+ if (typeof persistedForkDigest !== 'string' || persistedForkDigest.length === 0)
+ throw new Error('Braid did not persist the provider fork request identity')
+ const source = structuredClone(sourceRun.controlRef)
+ const checkpointMaterial = {
+ source,
+ name: `braid checkpoint ${plan.sourceBranchId}`,
+ metadata: {
+ braidOperationId: operationId,
+ sourceBranchId: String(plan.sourceBranchId),
+ ...(plan.throughMessageId === undefined ? {} : { throughMessageId: plan.throughMessageId }),
+ },
+ }
+ const checkpointRequestDigest = workspaceCheckpointRequestDigest(checkpointMaterial)
+ assertCondition(
+ sha256Digest(checkpoint.requestDigest) === checkpointRequestDigest,
+ 'Persisted checkpoint digest does not match Braid request material',
+ )
+ const checkpointRef = {
+ checkpointId: providerCheckpointId,
+ provider: source.provider,
+ source,
+ idempotencyKey: `${operationId}:checkpoint`,
+ requestDigest: checkpointRequestDigest,
+ createdAt: checkpoint.createdAt,
+ metadata: checkpointMaterial.metadata,
+ }
+ const placement = plan.placement ?? { kind: 'provider' }
+ const forkMaterial = {
+ checkpoint: checkpointRef,
+ name: `braid fork ${plan.destinationBranchId}`,
+ placement,
+ ...(plan.confidential === undefined ? {} : { confidential: plan.confidential }),
+ metadata: {
+ braidOperationId: operationId,
+ destinationBranchId: String(plan.destinationBranchId),
+ },
+ }
+ const forkRequestDigest = workspaceForkRequestDigest(forkMaterial)
+ assertCondition(
+ sha256Digest(persistedForkDigest) === forkRequestDigest,
+ 'Persisted fork request identity does not match Braid request material',
+ )
+ const graphEdge = state.graphEdges.find((candidate) => {
+ const sourceNode = state.graphNodes.find((node) => node.id === candidate.source)
+ const destinationNode = state.graphNodes.find((node) => node.id === candidate.destination)
+ return (
+ candidate.kind === 'forked_environment' &&
+ sourceNode?.reference.kind === 'checkpoint' &&
+ sourceNode.reference.id === checkpoint.id &&
+ destinationNode?.reference.kind === 'environment' &&
+ destinationNode.reference.id === destinationId
+ )
+ })
+ assertCondition(graphEdge !== undefined, 'Braid did not persist the fork graph edge')
+ const recordedForkDigest = graphEdge.provenance.sourceDigest
+ assertCondition(recordedForkDigest !== undefined, 'Braid fork graph edge has no request digest')
+ assertCondition(
+ sha256Digest(recordedForkDigest) === forkRequestDigest,
+ 'Persisted fork digest does not match Braid request material',
+ )
+ return Object.freeze({
+ checkpoint,
+ checkpointRef,
+ checkpointRequest: {
+ ...checkpointMaterial,
+ idempotencyKey: `${operationId}:checkpoint`,
+ requestDigest: checkpointRequestDigest,
+ },
+ forkRequest: {
+ ...forkMaterial,
+ idempotencyKey: `${operationId}:fork`,
+ requestDigest: forkRequestDigest,
+ },
+ })
+}
+
+async function lookupAfterRestart(adapters, sourceProviderEnvironmentId, requests) {
+ const checkpointHandle = await adapters.freshBranching(sourceProviderEnvironmentId)
+ const checkpoint = await checkpointHandle.lookupCheckpoint({
+ idempotencyKey: requests.checkpointRequest.idempotencyKey,
+ requestDigest: requests.checkpointRequest.requestDigest,
+ })
+ if (checkpoint.status !== 'found')
+ throw new Error(`Restart checkpoint lookup returned ${checkpoint.status}`)
+ assertCondition(
+ workspaceCheckpointResultMatchesRequest(requests.checkpointRequest, checkpoint),
+ 'Restart checkpoint lookup returned another checkpoint request',
+ )
+ assertCondition(
+ checkpoint.checkpoint.checkpointId === requests.checkpointRef.checkpointId,
+ 'Restart checkpoint lookup returned another checkpoint',
+ )
+ const forkHandle = await adapters.freshBranching(sourceProviderEnvironmentId)
+ const fork = await forkHandle.lookupFork({
+ idempotencyKey: requests.forkRequest.idempotencyKey,
+ requestDigest: requests.forkRequest.requestDigest,
+ })
+ if (fork.status !== 'found') throw new Error(`Restart fork lookup returned ${fork.status}`)
+ assertCondition(
+ workspaceForkResultMatchesRequest(requests.forkRequest, fork),
+ 'Restart fork lookup returned another fork request',
+ )
+ assertCondition(
+ fork.environment.sourceEnvironmentId === sourceProviderEnvironmentId,
+ 'Restart fork lookup returned another source environment',
+ )
+ return Object.freeze({ checkpoint, fork })
+}
+
+async function destroySource(adapters, sourceProviderEnvironmentId) {
+ const environment = await adapters.freshEnvironment(sourceProviderEnvironmentId)
+ if (environment === null) return true
+ if (typeof environment.destroy !== 'function')
+ throw unavailable(
+ 'PROTECTED_ENVIRONMENT_CLEANUP_UNAVAILABLE',
+ 'Tangle Sandbox did not expose source environment cleanup',
+ )
+ await environment.destroy()
+ for (let attempt = 0; attempt < DEFAULT_ABSENCE_ATTEMPTS; attempt += 1) {
+ if ((await adapters.freshEnvironment(sourceProviderEnvironmentId)) === null) return true
+ await new Promise((resolvePromise) => setTimeout(resolvePromise, DEFAULT_ABSENCE_DELAY_MS))
+ }
+ throw new Error(
+ `Source provider environment ${sourceProviderEnvironmentId} remained after cleanup`,
+ )
+}
+
+async function cancelSourceRun(app, source, operationId) {
+ const run = app.state().runs.find((candidate) => candidate.id === source.run.id)
+ if (run === undefined || SOURCE_TERMINAL_STATUSES.has(run.status)) return
+ if (typeof app.cancelRun !== 'function')
+ throw new Error('Braid did not expose source-run cancellation for cleanup')
+ const cancellation = await app.cancelRun({
+ operationId: `${operationId}:source-cancel`,
+ runId: run.id,
+ reason: 'LIVE-09 proof cleanup',
+ terminalStatus: 'aborted',
+ legacy: true,
+ })
+ await cancellation.completion
+}
+
+function checkpointIdForDestination(state, destinationId) {
+ const edge = state.graphEdges.find((candidate) => {
+ const source = state.graphNodes.find((node) => node.id === candidate.source)
+ const destination = state.graphNodes.find((node) => node.id === candidate.destination)
+ return (
+ candidate.kind === 'forked_environment' &&
+ destination?.reference.kind === 'environment' &&
+ destination.reference.id === destinationId &&
+ source?.reference.kind === 'checkpoint'
+ )
+ })
+ if (edge === undefined) return undefined
+ const source = state.graphNodes.find((node) => node.id === edge.source)
+ if (source?.reference.kind !== 'checkpoint') return undefined
+ return state.checkpoints.find((candidate) => candidate.id === source.reference.id)?.id
+}
+
+function forkRequestForRecovery(state, plan, operationId, source) {
+ if (plan === undefined || operationId === undefined || source?.run?.controlRef === undefined)
+ return undefined
+ if (!Array.isArray(state.checkpoints) || !Array.isArray(state.operations)) return undefined
+ const checkpoint = state.checkpoints.find((candidate) => candidate.operationId === operationId)
+ const operation = state.operations.find((candidate) => candidate.id === operationId)
+ const providerCheckpointId = operation?.result?.providerCheckpointId
+ const persistedForkDigest = operation?.result?.forkRequestDigest
+ if (
+ checkpoint === undefined ||
+ typeof providerCheckpointId !== 'string' ||
+ providerCheckpointId.length === 0 ||
+ typeof persistedForkDigest !== 'string' ||
+ persistedForkDigest.length === 0
+ )
+ return undefined
+ const sourceRef = structuredClone(source.run.controlRef)
+ const checkpointMaterial = {
+ source: sourceRef,
+ name: `braid checkpoint ${plan.sourceBranchId}`,
+ metadata: {
+ braidOperationId: operationId,
+ sourceBranchId: String(plan.sourceBranchId),
+ ...(plan.throughMessageId === undefined ? {} : { throughMessageId: plan.throughMessageId }),
+ },
+ }
+ const checkpointRequestDigest = workspaceCheckpointRequestDigest(checkpointMaterial)
+ const checkpointRef = {
+ checkpointId: providerCheckpointId,
+ provider: sourceRef.provider,
+ source: sourceRef,
+ idempotencyKey: `${operationId}:checkpoint`,
+ requestDigest: checkpointRequestDigest,
+ createdAt: checkpoint.createdAt,
+ metadata: checkpointMaterial.metadata,
+ }
+ const forkMaterial = {
+ checkpoint: checkpointRef,
+ name: `braid fork ${plan.destinationBranchId}`,
+ placement: plan.placement ?? { kind: 'provider' },
+ ...(plan.confidential === undefined ? {} : { confidential: plan.confidential }),
+ metadata: {
+ braidOperationId: operationId,
+ destinationBranchId: String(plan.destinationBranchId),
+ },
+ }
+ const requestDigest = workspaceForkRequestDigest(forkMaterial)
+ assertCondition(
+ sha256Digest(persistedForkDigest) === requestDigest,
+ 'Persisted fork request identity does not match Braid request material',
+ )
+ return Object.freeze({
+ ...forkMaterial,
+ idempotencyKey: `${operationId}:fork`,
+ requestDigest,
+ })
+}
+
+async function cleanupProviderFork(
+ adapters,
+ source,
+ request,
+ cleanupOperationId,
+ providerEnvironmentId,
+) {
+ // Use provider lookup only when Braid lacks the local destination edge.
+ // Normal cleanup remains the application path and records local lifecycle state.
+ if (adapters === undefined || source?.providerId === undefined || request === undefined)
+ return undefined
+ const branching = await adapters.freshBranching(source.providerId)
+ const lookup = await branching.lookupFork({
+ idempotencyKey: request.idempotencyKey,
+ requestDigest: request.requestDigest,
+ })
+ if (lookup.status === 'not_found' && providerEnvironmentId === undefined) return 'already_absent'
+ if (lookup.status !== 'found' && lookup.status !== 'not_found')
+ throw new Error(`Fork cleanup lookup returned ${lookup.status}`)
+ if (lookup.status === 'found') {
+ assertCondition(
+ workspaceForkResultMatchesRequest(request, lookup),
+ 'Fork cleanup lookup returned another fork request',
+ )
+ assertCondition(
+ lookup.environment.sourceEnvironmentId === source.providerId,
+ 'Fork cleanup lookup returned another source environment',
+ )
+ }
+ const material = {
+ kind: 'fork',
+ targetId: lookup.status === 'found' ? lookup.environment.environmentId : providerEnvironmentId,
+ provider:
+ lookup.status === 'found' ? lookup.environment.provider : source.run.controlRef.provider,
+ }
+ const cleanupRequest = {
+ operationId: `${cleanupOperationId}:fork-cleanup`,
+ ...material,
+ requestDigest: workspaceCleanupRequestDigest(material),
+ }
+ const acknowledgement = await branching.destroyFork({ ...cleanupRequest, kind: 'fork' })
+ assertCondition(
+ workspaceCleanupAcknowledgementMatches(cleanupRequest, acknowledgement),
+ 'Fork cleanup acknowledgement does not match its request',
+ )
+ if (acknowledgement.status === 'deleted' || acknowledgement.status === 'already_absent')
+ return acknowledgement.status
+ throw new Error(
+ `Fork cleanup returned ${acknowledgement.status}${acknowledgement.message === undefined ? '' : `: ${acknowledgement.message}`}`,
+ )
+}
+
+export async function cleanupWorkspaceProofResources({
+ cleanupOwner,
+ adapters,
+ source,
+ destination,
+ resources,
+ branchOperationId,
+ cleanupOperationId,
+ proofId,
+ cleanupResult,
+ plan,
+ sourceDestroyed = false,
+}) {
+ let cleanupError
+ let resolvedCleanupOperationId = cleanupOperationId
+ let resolvedCleanupResult = cleanupResult
+ let resolvedSourceDestroyed = sourceDestroyed
+ if (cleanupOwner !== undefined && source !== undefined) {
+ const cleanupCheckpointId =
+ resources?.checkpoint.id ??
+ (branchOperationId === undefined
+ ? undefined
+ : checkpointIdForOperation(cleanupOwner.app.state(), branchOperationId)) ??
+ (destination === undefined
+ ? undefined
+ : checkpointIdForDestination(cleanupOwner.app.state(), destination.id))
+ if (cleanupCheckpointId !== undefined && resolvedCleanupResult === undefined) {
+ resolvedCleanupOperationId ??= `op-live-required-${proofId}-cleanup`
+ try {
+ resolvedCleanupResult = await cleanupOwner.app.conversations.branches.cleanup({
+ operationId: resolvedCleanupOperationId,
+ checkpointId: String(cleanupCheckpointId),
+ ...(destination === undefined ? {} : { environmentId: String(destination.id) }),
+ })
+ } catch (error) {
+ cleanupError ??= error
+ }
+ }
+ const cleanupState = cleanupOwner.app.state()
+ const operation =
+ branchOperationId === undefined || !Array.isArray(cleanupState.operations)
+ ? undefined
+ : cleanupState.operations.find((candidate) => candidate.id === branchOperationId)
+ const persistedForkDigest = operation?.result?.forkRequestDigest
+ let forkRequest = resources?.forkRequest
+ const hasForkIdentity =
+ forkRequest !== undefined ||
+ typeof persistedForkDigest === 'string' ||
+ typeof operation?.result?.providerEnvironmentId === 'string'
+ const forkCleanupComplete =
+ resolvedCleanupResult?.environment === 'deleted' ||
+ resolvedCleanupResult?.environment === 'already_absent'
+ if (hasForkIdentity && !forkCleanupComplete) {
+ resolvedCleanupOperationId ??= `op-live-required-${proofId}-cleanup`
+ try {
+ forkRequest ??= forkRequestForRecovery(cleanupState, plan, branchOperationId, source)
+ if (forkRequest === undefined)
+ throw new Error('Braid did not persist enough fork identity for provider cleanup')
+ const forkOutcome = await cleanupProviderFork(
+ adapters ?? providerAdapters(cleanupOwner),
+ source,
+ forkRequest,
+ resolvedCleanupOperationId,
+ destination?.providerEnvironmentId ?? operation?.result?.providerEnvironmentId,
+ )
+ if (forkOutcome !== undefined) {
+ resolvedCleanupResult = {
+ checkpoint: resolvedCleanupResult?.checkpoint ?? 'not_requested',
+ environment: forkOutcome,
+ }
+ }
+ } catch (error) {
+ cleanupError ??= error
+ }
+ }
+ if (!resolvedSourceDestroyed) {
+ try {
+ await cancelSourceRun(
+ cleanupOwner.app,
+ source,
+ resolvedCleanupOperationId ?? `op-live-required-${proofId}-cleanup`,
+ )
+ } catch (error) {
+ cleanupError ??= error
+ }
+ }
+ if (!resolvedSourceDestroyed) {
+ try {
+ const sourceAdapters = adapters ?? providerAdapters(cleanupOwner)
+ resolvedSourceDestroyed = await destroySource(sourceAdapters, source.providerId)
+ } catch (error) {
+ cleanupError ??= error
+ }
+ }
+ }
+ return {
+ cleanupError,
+ cleanupOperationId: resolvedCleanupOperationId,
+ cleanupResult: resolvedCleanupResult,
+ sourceDestroyed: resolvedSourceDestroyed,
+ }
+}
+
+function confidentialExpected(source, destinationProviderEnvironmentId, requestDigest) {
+ return {
+ provider: source.provider,
+ environmentId: destinationProviderEnvironmentId,
+ source: structuredClone(source),
+ requestDigest,
+ confidentialRequested: true,
+ }
+}
+
+/** Run the canonical negative checks used by LIVE-10 and by its deterministic test. */
+export function confidentialNegativeChecks({
+ request,
+ environment,
+ attestation,
+ verifyProviderAttestation,
+}) {
+ const wrongNonce = {
+ ...request,
+ nonce: `${request.nonce}-wrong`,
+ }
+ const wrongMeasurement = {
+ ...attestation,
+ measurement: `sha256:${'f'.repeat(64)}`,
+ }
+ const selfEcho = {
+ ...attestation,
+ providerKeyId: 'unverified',
+ providerSignature: 'unverified',
+ }
+ return Object.freeze({
+ missingAttestationRejected: !confidentialExecutionVerified({
+ request,
+ environment,
+ verifyProviderAttestation,
+ }),
+ wrongNonceRejected: !confidentialExecutionVerified({
+ request: wrongNonce,
+ environment,
+ attestation,
+ verifyProviderAttestation,
+ }),
+ wrongMeasurementRejected: !confidentialExecutionVerified({
+ request,
+ environment,
+ attestation: wrongMeasurement,
+ verifyProviderAttestation,
+ }),
+ selfEchoRejected: !confidentialExecutionVerified({
+ request,
+ environment,
+ attestation: selfEcho,
+ verifyProviderAttestation,
+ }),
+ })
+}
+
+async function runWorkspaceProof({
+ repository = DEFAULT_REPOSITORY,
+ environment = process.env,
+ invocationId = proofInvocation('live-tangle-workspace'),
+ confidential = false,
+}) {
+ const proofId = `${Date.now()}-${randomUUID().replaceAll('-', '')}`
+ const startedAt = new Date().toISOString()
+ const trust = confidential ? parseConfidentialTrustPolicy(environment) : undefined
+ const values = sandboxConfiguration(environment)
+ const config = await prepareProductionWorkspace({
+ repository,
+ environment,
+ kind: 'tangle-sandbox',
+ connectionName: confidential ? 'Live tangle confidential' : 'Live tangle workspace fork',
+ endpoint: values.endpoint,
+ model: values.model,
+ runner: values.runner,
+ modelProvider: values.modelProvider,
+ credentialRef: values.credentialRef,
+ credentialValue: values.credentialValue,
+ providerOptions: {
+ lifecycle: 'retained',
+ idleTtlSeconds: idleTtlSeconds(environment),
+ },
+ ...(trust === undefined ? {} : { confidentialAttestationPolicy: trust.policy }),
+ })
+ let opened
+ let restarted
+ let source
+ let destination
+ let destinationProviderId
+ let sourceBefore
+ let destinationAfterMutation
+ let sourceAfterCleanup
+ let branchOperationId
+ let cleanupOperationId
+ let resources
+ let cleanupResult
+ let plan
+ let sourceDestroyed = false
+ let primaryError
+ let completedResult
+ let cleanupFailure
+ try {
+ opened = await openProofApplication({ repository, config })
+ const verifier = confidential ? confidentialVerifiersFor(opened) : undefined
+ if (trust !== undefined) {
+ assertCondition(
+ opened.connection.confidentialAttestationPolicy?.acceptedPolicyIds.includes(
+ trust.selectedPolicyId,
+ ) === true,
+ 'LIVE-10 did not retain the selected policy id in the connection trust policy',
+ )
+ }
+ const adapters = providerAdapters(opened)
+ source = await sendSource(opened.app, proofId, (candidate) => {
+ source ??= candidate
+ })
+ sourceBefore = await readWorkspace(adapters, source.providerId, source.path, 'source')
+ assertCondition(
+ sourceBefore.content.trim() === source.marker,
+ 'Source workspace marker was not materialized exactly',
+ )
+ branchOperationId = `op-live-required-${proofId}-fork`
+ const planInput = {
+ operationId: branchOperationId,
+ conversationId: opened.app.state().conversationId,
+ branchId: opened.app.state().branchId,
+ kind: 'workspace',
+ placement: { kind: 'provider' },
+ ...(confidential
+ ? {
+ confidential: {
+ requested: true,
+ nonce: generateAttestationNonce(),
+ policy: trust.selectedPolicyId,
+ profileDigest: `sha256:${opened.modules.profiles.canonicalAgentProfileDigestHex(opened.app.state().profile)}`,
+ },
+ }
+ : {}),
+ }
+ plan = opened.app.conversations.branches.plan(planInput)
+ if (!plan.allowed)
+ throw unavailable(
+ 'PROTECTED_WORKSPACE_BRANCHING_UNAVAILABLE',
+ plan.reason ?? 'Tangle Sandbox did not report retry-safe workspace branching',
+ )
+ const requestedUnverifiedBinding = confidential
+ ? !confidentialExecutionVerified({
+ request: plan.confidential,
+ environment: confidentialExpected(
+ source.run.controlRef,
+ 'pending-destination',
+ `sha256:${'0'.repeat(64)}`,
+ ),
+ verifyProviderAttestation: verifier.canonical,
+ })
+ : true
+ assertCondition(
+ requestedUnverifiedBinding,
+ 'Confidential placement passed without an attestation before execution',
+ )
+ const branch = await opened.app.conversations.branches.execute({
+ ...planInput,
+ planDigest: plan.digest,
+ })
+ const afterExecute = opened.app.state()
+ const sourceRun = sourceRunFor(afterExecute, source.run.id)
+ destination = afterExecute.environments.find(
+ (candidate) => candidate.id === branch.environmentId,
+ )
+ if (destination === undefined) throw new Error('Braid did not persist the forked environment')
+ destinationProviderId = providerEnvironmentId(destination, 'Destination environment')
+ assertCondition(
+ destinationProviderId !== source.providerId,
+ 'Fork reused the source environment',
+ )
+ resources = checkpointAndForkRequests(
+ afterExecute,
+ plan,
+ branchOperationId,
+ sourceRun,
+ destination.id,
+ )
+ const destinationMarker = markerFor(proofId, 'DESTINATION')
+ await writeWorkspace(
+ adapters,
+ destinationProviderId,
+ source.path,
+ `${destinationMarker}\n`,
+ 'destination',
+ )
+ destinationAfterMutation = await readWorkspace(
+ adapters,
+ destinationProviderId,
+ source.path,
+ 'destination',
+ )
+ assertCondition(
+ destinationAfterMutation.content.trim() === destinationMarker,
+ 'Destination mutation was not independently materialized',
+ )
+ const sourceAfterMutation = await readWorkspace(
+ adapters,
+ source.providerId,
+ source.path,
+ 'source',
+ )
+ assertCondition(
+ sourceAfterMutation.content === sourceBefore.content,
+ 'Destination mutation changed the source workspace',
+ )
+
+ await opened.close()
+ opened = undefined
+ restarted = await openProofApplication({ repository, config })
+ const restartedVerifier = confidential ? confidentialVerifiersFor(restarted) : undefined
+ const restartedAdapters = providerAdapters(restarted)
+ const replayBranch = await restarted.app.conversations.branches.execute({
+ ...planInput,
+ planDigest: plan.digest,
+ })
+ assertCondition(replayBranch.id === branch.id, 'Restart replay produced another branch')
+ const lookedUp = await lookupAfterRestart(restartedAdapters, source.providerId, resources)
+ if (confidential) {
+ const attestation = lookedUp.fork.environment.confidentialAttestation
+ if (attestation === undefined)
+ throw unavailable(
+ 'PROTECTED_CONFIDENTIAL_DEPLOYMENT_UNAVAILABLE',
+ 'Tangle Sandbox did not return a TEE attestation for the confidential fork',
+ )
+ assertCondition(
+ attestation.providerKeyId !== 'unverified' &&
+ attestation.providerSignature !== 'unverified',
+ 'Tangle Sandbox returned an unauthenticated confidential attestation',
+ )
+ assertCondition(
+ attestation.providerSignature !== attestation.quote,
+ 'Tangle Sandbox returned the quote as its provider signature',
+ )
+ const expected = confidentialExpected(
+ sourceRun.controlRef,
+ destinationProviderId,
+ resources.forkRequest.requestDigest,
+ )
+ assertCondition(
+ forkedEnvironmentConfidentialityVerified(
+ resources.forkRequest,
+ lookedUp.fork.environment,
+ restartedVerifier.canonical,
+ ),
+ 'Canonical confidential attestation verification failed for the valid fork',
+ )
+ const negatives = confidentialNegativeChecks({
+ request: resources.forkRequest.confidential,
+ environment: expected,
+ attestation,
+ verifyProviderAttestation: restartedVerifier.canonical,
+ })
+ assertCondition(
+ negatives.missingAttestationRejected,
+ 'Missing confidential attestation was accepted',
+ )
+ assertCondition(negatives.wrongNonceRejected, 'Wrong confidential nonce was accepted')
+ assertCondition(
+ negatives.wrongMeasurementRejected,
+ 'Wrong confidential measurement was accepted',
+ )
+ assertCondition(negatives.selfEchoRejected, 'Self-echoed confidential evidence was accepted')
+ assertCondition(
+ destination.placement.confidentialRequested,
+ 'Confidential request was not recorded',
+ )
+ assertCondition(
+ destination.placement.confidentialVerified,
+ 'Confidential attestation was not verified',
+ )
+ }
+ cleanupOperationId = `op-live-required-${proofId}-cleanup`
+ cleanupResult = await restarted.app.conversations.branches.cleanup({
+ operationId: cleanupOperationId,
+ checkpointId: String(resources.checkpoint.id),
+ environmentId: String(destination.id),
+ })
+ assertCondition(
+ ['deleted', 'already_absent'].includes(cleanupResult.checkpoint),
+ 'Checkpoint cleanup did not reach a terminal deletion status',
+ )
+ assertCondition(
+ ['deleted', 'already_absent'].includes(cleanupResult.environment),
+ 'Fork cleanup did not reach a terminal deletion status',
+ )
+ const cleanupReplay = await restarted.app.conversations.branches.cleanup({
+ operationId: cleanupOperationId,
+ checkpointId: String(resources.checkpoint.id),
+ environmentId: String(destination.id),
+ })
+ assertCondition(
+ JSON.stringify(cleanupReplay) === JSON.stringify(cleanupResult),
+ 'Cleanup replay returned a different durable result',
+ )
+ const finalState = restarted.app.state()
+ assertCondition(
+ finalState.checkpoints.find((candidate) => candidate.id === resources.checkpoint.id)
+ ?.status === 'deleted',
+ 'Braid did not record checkpoint cleanup',
+ )
+ assertCondition(
+ finalState.environments.find((candidate) => candidate.id === destination.id)?.lifecycle ===
+ 'destroyed',
+ 'Braid did not record fork environment cleanup',
+ )
+ sourceAfterCleanup = await readWorkspace(
+ restartedAdapters,
+ source.providerId,
+ source.path,
+ 'source',
+ )
+ assertCondition(
+ sourceAfterCleanup.digest === sourceBefore.digest,
+ 'Source workspace digest changed during cleanup',
+ )
+ sourceDestroyed = await destroySource(restartedAdapters, source.providerId)
+ await restarted.close()
+ restarted = undefined
+ completedResult = {
+ status: 'passed',
+ measurement: scalarMeasurement(confidential ? 'LIVE-10' : 'LIVE-09'),
+ evidence: proofReceipt({
+ invocationId,
+ operation: confidential
+ ? PROOF_OPERATIONS.tangleConfidential
+ : PROOF_OPERATIONS.tangleWorkspaceFork,
+ startedAt,
+ completedAt: new Date().toISOString(),
+ config: configEvidence(config),
+ runIds: [source.run.id],
+ environmentId: source.run.environmentId,
+ materializationDigest: source.run.materializationDigest ?? null,
+ facts: confidential
+ ? {
+ sourceProviderEnvironmentId: source.providerId,
+ destinationProviderEnvironmentId: destinationProviderId,
+ confidentialRequested: true,
+ confidentialVerified: true,
+ missingAttestationRejected: true,
+ wrongNonceRejected: true,
+ wrongMeasurementRejected: true,
+ cleanupCheckpoint: cleanupResult.checkpoint,
+ cleanupEnvironment: cleanupResult.environment,
+ }
+ : {
+ sourceProviderEnvironmentId: source.providerId,
+ destinationProviderEnvironmentId: destinationProviderId,
+ checkpointRetried: true,
+ forkRetried: true,
+ restarted: true,
+ sourceDigestBefore: sourceBefore.digest,
+ sourceDigestAfter: sourceAfterCleanup.digest,
+ destinationDigest: destinationAfterMutation.digest,
+ cleanupCheckpoint: cleanupResult.checkpoint,
+ cleanupEnvironment: cleanupResult.environment,
+ },
+ checks: confidential
+ ? [
+ 'configuration',
+ 'nitro-attestation',
+ 'requested-unverified-binding',
+ 'missing-attestation',
+ 'valid-attestation',
+ 'wrong-nonce',
+ 'wrong-measurement',
+ 'cleanup',
+ ]
+ : [
+ 'configuration',
+ 'source-run',
+ 'plan',
+ 'execute',
+ 'retry',
+ 'restart',
+ 'independent-destination',
+ 'source-unchanged',
+ 'cleanup-checkpoint',
+ 'cleanup-environment',
+ ],
+ observations: {
+ source: {
+ providerEnvironmentId: source.providerId,
+ path: source.path,
+ digestBefore: sourceBefore.digest,
+ digestAfter: sourceAfterCleanup.digest,
+ destroyed: sourceDestroyed,
+ },
+ destination: {
+ providerEnvironmentId: destinationProviderId,
+ digest: destinationAfterMutation.digest,
+ independentMutation: true,
+ },
+ recovery: {
+ checkpointLookup: 'found',
+ forkLookup: 'found',
+ branchReplay: true,
+ cleanupReplay: true,
+ },
+ ...(confidential
+ ? {
+ attestation: {
+ providerKeyAuthenticated: true,
+ signatureDistinctFromQuote: true,
+ requestedUnverifiedBeforeExecution: true,
+ wrongNonceRejected: true,
+ wrongMeasurementRejected: true,
+ selfEchoRejected: true,
+ },
+ }
+ : {}),
+ },
+ environment,
+ }),
+ }
+ } catch (error) {
+ primaryError = error
+ throw error
+ } finally {
+ let cleanupError
+ let cleanupOwner = restarted ?? opened
+ let rescueOwner = false
+ if (source !== undefined) {
+ if (cleanupOwner === undefined) {
+ try {
+ cleanupOwner = await openProofApplication({ repository, config })
+ rescueOwner = true
+ } catch (error) {
+ cleanupError ??= error
+ }
+ }
+ if (cleanupOwner !== undefined && !sourceDestroyed) {
+ const cleanup = await cleanupWorkspaceProofResources({
+ cleanupOwner,
+ source,
+ destination,
+ resources,
+ branchOperationId,
+ cleanupOperationId,
+ proofId,
+ cleanupResult,
+ plan,
+ sourceDestroyed,
+ })
+ cleanupError ??= cleanup.cleanupError
+ cleanupOperationId = cleanup.cleanupOperationId
+ cleanupResult = cleanup.cleanupResult
+ sourceDestroyed = cleanup.sourceDestroyed
+ }
+ }
+ if (rescueOwner && cleanupOwner !== undefined) {
+ try {
+ await cleanupOwner.close()
+ } catch (error) {
+ cleanupError ??= error
+ }
+ if (restarted === cleanupOwner) restarted = undefined
+ if (opened === cleanupOwner) opened = undefined
+ }
+ try {
+ if (restarted !== undefined) await restarted.close()
+ } catch (error) {
+ cleanupError ??= error
+ }
+ try {
+ if (opened !== undefined) await opened.close()
+ } catch (error) {
+ cleanupError ??= error
+ }
+ try {
+ await config.cleanup()
+ } catch (error) {
+ cleanupError ??= error
+ }
+ if (cleanupError !== undefined && primaryError === undefined) cleanupFailure = cleanupError
+ }
+ if (cleanupFailure !== undefined) throw cleanupFailure
+ return completedResult
+}
+
+export function runWorkspaceForkProof(input) {
+ return runWorkspaceProof({ ...input, confidential: false })
+}
+
+export function runConfidentialProof(input) {
+ return runWorkspaceProof({ ...input, confidential: true })
+}
diff --git a/scripts/live-required/tangle.mjs b/scripts/live-required/tangle.mjs
index 11c1ceb..816bd42 100644
--- a/scripts/live-required/tangle.mjs
+++ b/scripts/live-required/tangle.mjs
@@ -14,13 +14,29 @@ import {
runHeadlessCancellation,
runHeadlessTurn,
} from './headless.mjs'
-import { runBraidSandboxSoak } from './tangle-sandbox-braid-soak.mjs'
+import { assertMultirunProof } from './multirun-contract.mjs'
import { runInteractiveProof } from './tangle-sandbox-braid-interactive.mjs'
+import { runProof as runMultirunProof } from './tangle-sandbox-braid-multirun.mjs'
+import { runBraidSandboxSoak } from './tangle-sandbox-braid-soak.mjs'
+import { runConfidentialProof, runWorkspaceForkProof } from './tangle-workspace-proof.mjs'
const TANGLE_ROWS = Object.freeze(['LIVE-06', 'LIVE-07', 'LIVE-08', 'LIVE-09', 'LIVE-10'])
const MINIMUM_SANDBOX_STRESS_RUNS = 3
const MINIMUM_SANDBOX_STRESS_CONCURRENCY = 2
+function requiredMeasurement(row, result) {
+ if (result?.status === 'unavailable') return undefined
+ if (result?.status !== 'passed') {
+ throw new Error(
+ `${row} live proof returned invalid status ${String(result?.status ?? 'missing')}`,
+ )
+ }
+ if (result.measurement?.name !== row) {
+ throw new Error(`${row} live proof passed without its required measurement`)
+ }
+ return result.measurement
+}
+
function tokenMarker(name) {
return `LIVE_BRAID_${name}_OK`
}
@@ -34,6 +50,7 @@ async function runInference({ repository, environment, binary, invocationId }) {
modelNames: ['BRAID_TANGLE_INFERENCE_MODEL'],
runnerNames: ['BRAID_TANGLE_INFERENCE_RUNNER'],
providerNames: ['BRAID_TANGLE_INFERENCE_PROVIDER'],
+ fallbackModelProvider: 'tangle-router',
fallbackRunner: 'cli-base',
})
const config = await prepareProductionWorkspace({
@@ -88,6 +105,7 @@ export async function runSandbox({
binary,
invocationId,
stressRunner = runBraidSandboxSoak,
+ multirunRunner = runMultirunProof,
}) {
const startedAt = new Date().toISOString()
const cohort = await stressRunner({ repository, environment, binary })
@@ -117,6 +135,11 @@ export async function runSandbox({
if (proof?.status !== 'passed') {
throw new Error('LIVE-07 Braid Tangle Sandbox stress has no passing canary proof')
}
+ const multirun = await multirunRunner({
+ targetRepository: repository,
+ environment,
+ })
+ assertMultirunProof(multirun)
const firstRun = proof.runs?.first
const runIds = [
...new Set([
@@ -153,7 +176,7 @@ export async function runSandbox({
environmentId: localEnvironmentId,
materializationDigest: firstRun?.materializationDigest ?? null,
facts,
- observations: cohort,
+ observations: { stress: cohort, multirun },
environment,
checks: [
'marker',
@@ -166,19 +189,72 @@ export async function runSandbox({
'exact-resource-cleanup',
],
}),
- observations: cohort,
+ observations: { stress: cohort, multirun },
}
}
-export async function runMatrixAdapter({ environment }) {
+export async function runMatrixAdapter({
+ repository,
+ environment,
+ binary,
+ invocationId = proofInvocation('live-tangle-matrix'),
+}) {
const configured =
typeof environment.BRAID_TANGLE_LIVE_ADAPTER === 'string' &&
environment.BRAID_TANGLE_LIVE_ADAPTER.trim().length > 0
+ const flows = []
+ const measurements = []
+ const unavailable = []
+ const setFlow = (row, result) => {
+ const flow = {
+ row,
+ status: result.status,
+ ...(result.reason === undefined ? {} : { reason: result.reason }),
+ ...(result.evidence === undefined ? {} : { evidence: result.evidence }),
+ ...(result.observations === undefined ? {} : { observations: result.observations }),
+ }
+ const index = flows.findIndex((candidate) => candidate.row === row)
+ if (index === -1) flows.push(flow)
+ else flows[index] = flow
+ }
+ const addUnavailable = (row, reason) => {
+ const detail = configured
+ ? `External Tangle matrix adapters are not accepted as release proof; ${reason}`
+ : reason
+ unavailable.push({ row, reason: detail })
+ setFlow(row, { status: 'unavailable', reason: detail })
+ }
+ const runBuiltIn = async (row, runner) => {
+ try {
+ const result = await runner({ repository, environment, binary, invocationId })
+ if (result.status === 'failed') throw new Error(`${row} built-in proof failed`)
+ if (result.status !== 'passed') {
+ addUnavailable(row, result.reason ?? `${row} built-in proof is unavailable`)
+ return
+ }
+ setFlow(row, result)
+ if (result.measurement !== undefined) measurements.push(result.measurement)
+ } catch (error) {
+ const classified = classifyExternalFailure(error, `${row} built-in Tangle proof`, environment)
+ addUnavailable(row, classified.message)
+ }
+ }
+ await runBuiltIn('LIVE-09', runWorkspaceForkProof)
+ await runBuiltIn('LIVE-10', runConfidentialProof)
+ const status =
+ flows.length === 2 && flows.every((flow) => flow.status === 'passed')
+ ? 'passed'
+ : flows.every((flow) => flow.status === 'unavailable')
+ ? 'unavailable'
+ : 'partial'
return {
- status: 'unavailable',
- reason: configured
- ? 'External Tangle matrix adapters are not accepted as release proof; built-in parent checks for LIVE-09 and LIVE-10 are unavailable'
- : 'Built-in parent checks for LIVE-09 and LIVE-10 are unavailable',
+ status,
+ flows,
+ measurements,
+ unavailable,
+ ...(unavailable.length === 0
+ ? {}
+ : { reason: unavailable.map((entry) => entry.reason).join('; ') }),
}
}
@@ -208,43 +284,66 @@ export async function runTangleFlows({
let inference
try {
inference = await inferenceRunner({ repository, environment, binary, invocationId })
- setFlow('LIVE-06', { row: 'LIVE-06', status: inference.status, evidence: inference.evidence })
- measurements.push(inference.measurement)
+ const measurement = requiredMeasurement('LIVE-06', inference)
+ if (measurement === undefined) {
+ addUnavailable('LIVE-06', inference.reason ?? 'Tangle inference proof is unavailable')
+ } else {
+ setFlow('LIVE-06', { row: 'LIVE-06', status: inference.status, evidence: inference.evidence })
+ measurements.push(measurement)
+ }
} catch (error) {
const classified = classifyExternalFailure(error, 'Tangle inference', environment)
addUnavailable('LIVE-06', classified.message)
}
try {
const sandbox = await sandboxRunner({ repository, environment, binary, invocationId })
- setFlow('LIVE-07', {
- row: 'LIVE-07',
- status: sandbox.status,
- evidence: sandbox.evidence,
- observations: sandbox.observations,
- })
- measurements.push(sandbox.measurement)
- if (sandbox.unavailable) addUnavailable(sandbox.unavailable.row, sandbox.unavailable.reason)
+ const measurement = requiredMeasurement('LIVE-07', sandbox)
+ if (measurement === undefined) {
+ addUnavailable('LIVE-07', sandbox.reason ?? 'Tangle Sandbox proof is unavailable')
+ } else {
+ setFlow('LIVE-07', {
+ row: 'LIVE-07',
+ status: sandbox.status,
+ evidence: sandbox.evidence,
+ observations: sandbox.observations,
+ })
+ measurements.push(measurement)
+ if (sandbox.unavailable) addUnavailable(sandbox.unavailable.row, sandbox.unavailable.reason)
+ }
} catch (error) {
const classified = classifyExternalFailure(error, 'Tangle sandbox', environment)
addUnavailable('LIVE-07', classified.message)
}
try {
const interactive = await interactiveRunner({ repository, environment, invocationId })
- setFlow('LIVE-08', {
- row: 'LIVE-08',
- status: interactive.status,
- evidence: interactive.evidence,
- })
- measurements.push(interactive.measurement)
+ const measurement = requiredMeasurement('LIVE-08', interactive)
+ if (measurement === undefined) {
+ addUnavailable('LIVE-08', interactive.reason ?? 'Tangle interactive proof is unavailable')
+ } else {
+ setFlow('LIVE-08', {
+ row: 'LIVE-08',
+ status: interactive.status,
+ evidence: interactive.evidence,
+ })
+ measurements.push(measurement)
+ }
} catch (error) {
const classified = classifyExternalFailure(error, 'Tangle interactive session', environment)
addUnavailable('LIVE-08', classified.message)
}
try {
- const matrix = await matrixRunner({ repository, environment, binary })
+ const matrix = await matrixRunner({ repository, environment, binary, invocationId })
for (const row of TANGLE_ROWS.slice(3)) {
- const reason = `${row} remains protected-unavailable: ${matrix.reason}`
- addUnavailable(row, reason)
+ const result = matrix.flows?.find((candidate) => candidate.row === row)
+ if (result?.status === 'passed') {
+ setFlow(result.row, result)
+ const measurement = matrix.measurements?.find((candidate) => candidate.name === row)
+ if (measurement !== undefined) measurements.push(measurement)
+ } else if (result?.status === 'failed') {
+ throw new Error(result.reason ?? `${row} matrix proof failed`)
+ } else {
+ addUnavailable(row, result?.reason ?? matrix.reason ?? `${row} matrix proof unavailable`)
+ }
}
} catch (error) {
const classified = classifyExternalFailure(error, 'Tangle matrix', environment)
diff --git a/scripts/live-required/terminal-quiescence.mjs b/scripts/live-required/terminal-quiescence.mjs
new file mode 100644
index 0000000..8ec3cd8
--- /dev/null
+++ b/scripts/live-required/terminal-quiescence.mjs
@@ -0,0 +1,245 @@
+/**
+ * Track terminal output until the renderer has caught up and its animated
+ * status indicators have stopped producing frames.
+ *
+ * Pi's public Loader uses an 80ms default frame interval in 0.80.2, 0.82.1,
+ * and 0.84.4. Three complete intervals provide a renderer-observable quiet
+ * period that cannot occur while that indicator is still animating.
+ */
+export const PI_LOADER_INTERVAL_MS = 80
+export const TERMINAL_QUIET_INTERVAL_MS = PI_LOADER_INTERVAL_MS * 3
+export const TERMINAL_QUIET_POLL_INTERVAL_MS = 25
+
+const PI_EDITOR_RULE_PATTERN = /^─{8,}$/u
+const PI_FOOTER_PATH_PATTERN = /^(?:~|\/)[^\n]*$/u
+const PI_WIDGET_REGION_ROWS = 10
+const PI_ACTIVE_STATUS_ROW_PATTERN =
+ /^[⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]\s+(?:Working(?:\.\.\.|…)|Retrying\b|Compacting\b|Auto-compacting\b|Context overflow detected,\s+Auto-compacting\b|Summarizing branch\b)/iu
+const TERMINAL_ESCAPE = String.fromCharCode(27)
+const TERMINAL_BELL = String.fromCharCode(7)
+const OSC_TERMINAL_SEQUENCE = new RegExp(
+ `${TERMINAL_ESCAPE}\\][^${TERMINAL_BELL}]*(?:${TERMINAL_BELL}|${TERMINAL_ESCAPE}\\\\)`,
+ 'gu',
+)
+const CSI_TERMINAL_SEQUENCE = new RegExp(`${TERMINAL_ESCAPE}\\[[0-?]*[ -/]*[@-~]`, 'gu')
+const CHARSET_TERMINAL_SEQUENCE = new RegExp(`${TERMINAL_ESCAPE}\\([0-2A-Za-z]`, 'gu')
+
+function stripTerminalSequences(value) {
+ return value
+ .replace(OSC_TERMINAL_SEQUENCE, '')
+ .replace(CSI_TERMINAL_SEQUENCE, '')
+ .replace(CHARSET_TERMINAL_SEQUENCE, '')
+}
+
+function screenRows(screen) {
+ if (typeof screen !== 'string') throw new TypeError('Pi terminal screen must be a string')
+ return stripTerminalSequences(screen)
+ .split(/\r?\n/u)
+ .map((line) => line.replace(/[ \t]+$/u, ''))
+}
+
+function piEditorRule(line) {
+ return PI_EDITOR_RULE_PATTERN.test(line.trim())
+}
+
+function piComposerBounds(rows) {
+ const rules = []
+ for (let index = 0; index < rows.length; index += 1) {
+ if (piEditorRule(rows[index] ?? '')) rules.push(index)
+ }
+ for (let index = rules.length - 2; index >= 0; index -= 1) {
+ const top = rules[index]
+ const bottom = rules[index + 1]
+ if (top === undefined || bottom === undefined || bottom <= top + 1) continue
+ const trailingRows = rows.slice(bottom + 1).filter((line) => line.trim().length > 0)
+ if (trailingRows.length > 3) continue
+ const footerPath = trailingRows.findIndex((line) => PI_FOOTER_PATH_PATTERN.test(line.trim()))
+ if (footerPath >= 0) return { top, bottom, footer: bottom + 1 + footerPath }
+ }
+ return undefined
+}
+
+function piStatusRows(rows, top) {
+ const start = Math.max(0, top - PI_WIDGET_REGION_ROWS)
+ return rows
+ .slice(start, top)
+ .map((line) => line.trim())
+ .filter((line) => line.length > 0)
+}
+
+function normalizedScreen(screen) {
+ return screenRows(screen).join('\n').trim()
+}
+
+/**
+ * Classify the visible state of Pi's interactive terminal.
+ *
+ * Pi 0.84.4 renders a `Working...` status indicator above its editor.
+ * Its ready composer has two horizontal editor rules and a cwd footer row.
+ * These are public rendered behaviors, so this check does not inspect Pi's
+ * private session state or guess from elapsed time.
+ */
+export function piTerminalScreenState(screen) {
+ const rows = screenRows(screen)
+ const composer = piComposerBounds(rows)
+ if (composer === undefined) return { state: 'unknown', reason: 'composer-not-visible' }
+ const status = piStatusRows(rows, composer.top)
+ const working = status.find((line) => PI_ACTIVE_STATUS_ROW_PATTERN.test(line))
+ if (working !== undefined) {
+ return { state: 'working', composer, status: working }
+ }
+ return { state: 'ready', composer }
+}
+
+/**
+ * Wait until Pi has rendered a ready composer after an action.
+ *
+ * A quiet renderer is necessary but insufficient: a static `Working...` line
+ * can remain after its spinner stops, and a stale ready screen can precede a
+ * delayed remote render. The optional baseline requires a visible transition
+ * before readiness is accepted.
+ */
+export async function waitForPiTerminalReady({
+ tracker,
+ readScreen,
+ timeoutMs,
+ afterRevision,
+ beforeScreen,
+ now = () => performance.now(),
+ pause = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)),
+} = {}) {
+ if (
+ !tracker ||
+ typeof tracker.isQuiescent !== 'function' ||
+ typeof tracker.snapshot !== 'function'
+ ) {
+ throw new TypeError('terminal output tracker is required')
+ }
+ if (typeof readScreen !== 'function') throw new TypeError('Pi terminal screen reader is required')
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
+ throw new RangeError('Pi terminal readiness timeout must be positive')
+ }
+ if (afterRevision !== undefined && (!Number.isSafeInteger(afterRevision) || afterRevision < 0)) {
+ throw new RangeError('terminal output revision must be a non-negative safe integer')
+ }
+
+ const baseline = beforeScreen === undefined ? undefined : normalizedScreen(beforeScreen)
+ const deadline = now() + timeoutMs
+ let sawWorking = false
+ let sawScreenChange = false
+ let lastState = { state: 'unknown', reason: 'not-observed' }
+ for (;;) {
+ const screen = readScreen()
+ const state = piTerminalScreenState(screen)
+ lastState = state
+ if (state.state === 'working') sawWorking = true
+ if (baseline !== undefined && normalizedScreen(screen) !== baseline) sawScreenChange = true
+ const snapshot = tracker.snapshot()
+ const observedAfterAction = afterRevision === undefined || snapshot.revision > afterRevision
+ const transitioned =
+ baseline === undefined || sawWorking || sawScreenChange || state.state === 'working'
+ if (observedAfterAction && tracker.isQuiescent() && state.state === 'ready' && transitioned) {
+ return { ...snapshot, readiness: state, transitioned }
+ }
+ if (now() >= deadline) {
+ throw new Error(
+ `Pi terminal did not become ready after ${timeoutMs}ms: ${JSON.stringify({
+ ...snapshot,
+ state: lastState.state,
+ reason: lastState.reason,
+ observedAfterAction,
+ sawWorking,
+ sawScreenChange,
+ })}`,
+ )
+ }
+ await pause(Math.min(TERMINAL_QUIET_POLL_INTERVAL_MS, Math.max(0, deadline - now())))
+ }
+}
+
+export function createTerminalOutputTracker({
+ now = () => performance.now(),
+ quietIntervalMs = TERMINAL_QUIET_INTERVAL_MS,
+} = {}) {
+ if (!Number.isFinite(quietIntervalMs) || quietIntervalMs <= 0) {
+ throw new RangeError('terminal quiet interval must be positive')
+ }
+
+ let pendingWrites = 0
+ let lastOutputAt = now()
+ let revision = 0
+
+ const observe = (data, write) => {
+ if (typeof data !== 'string' || data.length === 0) {
+ throw new TypeError('terminal output must be a non-empty string')
+ }
+ if (typeof write !== 'function') throw new TypeError('terminal output writer is required')
+
+ lastOutputAt = now()
+ revision += 1
+ pendingWrites += 1
+ let settled = false
+ const settle = () => {
+ if (settled) return
+ settled = true
+ pendingWrites -= 1
+ }
+ try {
+ write(settle)
+ } catch (error) {
+ settle()
+ throw error
+ }
+ }
+
+ const snapshot = () => ({
+ pendingWrites,
+ lastOutputAt,
+ revision,
+ quietForMs: Math.max(0, now() - lastOutputAt),
+ quietIntervalMs,
+ })
+
+ return {
+ observe,
+ isQuiescent: () => pendingWrites === 0 && now() - lastOutputAt >= quietIntervalMs,
+ snapshot,
+ }
+}
+
+export async function waitForTerminalQuiescence(
+ tracker,
+ {
+ timeoutMs,
+ afterRevision,
+ now = () => performance.now(),
+ pause = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)),
+ } = {},
+) {
+ if (
+ !tracker ||
+ typeof tracker.isQuiescent !== 'function' ||
+ typeof tracker.snapshot !== 'function'
+ ) {
+ throw new TypeError('terminal output tracker is required')
+ }
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
+ throw new RangeError('terminal quiescence timeout must be positive')
+ }
+ if (afterRevision !== undefined && (!Number.isSafeInteger(afterRevision) || afterRevision < 0)) {
+ throw new RangeError('terminal output revision must be a non-negative safe integer')
+ }
+
+ const deadline = now() + timeoutMs
+ for (;;) {
+ const snapshot = tracker.snapshot()
+ const observedAfterAction = afterRevision === undefined || snapshot.revision > afterRevision
+ if (observedAfterAction && tracker.isQuiescent()) return snapshot
+ if (now() >= deadline) {
+ throw new Error(
+ `terminal output did not become quiescent after ${timeoutMs}ms: ${JSON.stringify(snapshot)}`,
+ )
+ }
+ await pause(Math.min(TERMINAL_QUIET_POLL_INTERVAL_MS, Math.max(0, deadline - now())))
+ }
+}
diff --git a/scripts/package-proof-parity.mjs b/scripts/package-proof-parity.mjs
index 10fc697..c1bc877 100644
--- a/scripts/package-proof-parity.mjs
+++ b/scripts/package-proof-parity.mjs
@@ -1,28 +1,8 @@
import { loadPackageProofCanonicalDigest } from './package-proof-product-modules.mjs'
-const canonicalDigest = await loadPackageProofCanonicalDigest()
+export { baselineEventEnd, firstTerminalTrace } from './package-proof-trace.mjs'
-export function baselineEventEnd(events) {
- const finishIndex = events.findIndex(
- (event) => event.kind === 'run.finished' && event.payload?.status === 'completed',
- )
- if (finishIndex < 0) throw new Error('proof has no completed baseline run')
- const requested = events.slice(0, finishIndex).find((event) => event.kind === 'run.requested')
- const operationId =
- requested?.payload?.operationId ??
- requested?.payload?.admission?.operationId ??
- requested?.payload?.receipt?.operationId
- let end = finishIndex + 1
- while (
- typeof operationId === 'string' &&
- events[end]?.kind === 'effect.upserted' &&
- (events[end]?.payload?.effect?.operationId === operationId ||
- events[end]?.payload?.value?.effect?.operationId === operationId)
- ) {
- end += 1
- }
- return end
-}
+const canonicalDigest = await loadPackageProofCanonicalDigest()
function sortParityValue(value, parentKey) {
if (Array.isArray(value)) return value.map((item) => sortParityValue(item, parentKey))
@@ -196,25 +176,3 @@ export function firstDifference(left, right, path = '$') {
}
return { path, left, right }
}
-
-export function firstTerminalTrace(evidence) {
- const finishIndex = evidence.events.findIndex(
- (event) => event.kind === 'run.finished' && event.payload?.status === 'completed',
- )
- if (finishIndex < 0) throw new Error('terminal proof has no completed baseline run')
- const finish = evidence.events[finishIndex]
- const baselineEnd = baselineEventEnd(evidence.events)
- const lastBaselineEvent = evidence.events[baselineEnd - 1] ?? finish
- return {
- state: {
- ...evidence.state,
- revision: lastBaselineEvent.revision,
- sequence: lastBaselineEvent.sequence,
- messages: evidence.state.messages.slice(0, 2),
- runs: evidence.state.runs.slice(0, 1),
- activeRunId: null,
- lastError: null,
- },
- events: evidence.events.slice(0, baselineEnd),
- }
-}
diff --git a/scripts/package-proof-trace.mjs b/scripts/package-proof-trace.mjs
new file mode 100644
index 0000000..fa2638c
--- /dev/null
+++ b/scripts/package-proof-trace.mjs
@@ -0,0 +1,45 @@
+export function baselineEventEnd(events) {
+ const finishIndex = events.findIndex(
+ (event) => event.kind === 'run.finished' && event.payload?.status === 'completed',
+ )
+ if (finishIndex < 0) throw new Error('proof has no completed baseline run')
+ const requested = events.slice(0, finishIndex).find((event) => event.kind === 'run.requested')
+ const operationId =
+ requested?.payload?.operationId ??
+ requested?.payload?.admission?.operationId ??
+ requested?.payload?.receipt?.operationId
+ let end = finishIndex + 1
+ while (
+ typeof operationId === 'string' &&
+ events[end]?.kind === 'effect.upserted' &&
+ (events[end]?.payload?.effect?.operationId === operationId ||
+ events[end]?.payload?.value?.effect?.operationId === operationId)
+ ) {
+ end += 1
+ }
+ return end
+}
+
+export function firstTerminalTrace(evidence) {
+ const finishIndex = evidence.events.findIndex(
+ (event) => event.kind === 'run.finished' && event.payload?.status === 'completed',
+ )
+ if (finishIndex < 0) throw new Error('terminal proof has no completed baseline run')
+ const finish = evidence.events[finishIndex]
+ const baselineEnd = baselineEventEnd(evidence.events)
+ const lastBaselineEvent = evidence.events[baselineEnd - 1] ?? finish
+ const baselineRun = evidence.state.runs[0]
+ return {
+ state: {
+ ...evidence.state,
+ revision: lastBaselineEvent.revision,
+ sequence: lastBaselineEvent.sequence,
+ messages: evidence.state.messages.slice(0, 2),
+ runs: evidence.state.runs.slice(0, 1),
+ focusedRunId: baselineRun?.id ?? null,
+ activeRunId: null,
+ lastError: null,
+ },
+ events: evidence.events.slice(0, baselineEnd),
+ }
+}
diff --git a/scripts/packed-binary.mjs b/scripts/packed-binary.mjs
index 403f5fd..0811ccf 100644
--- a/scripts/packed-binary.mjs
+++ b/scripts/packed-binary.mjs
@@ -41,6 +41,7 @@ export async function installPackedBraid(repository, options = {}) {
'--no-audit',
'--no-fund',
'--package-lock=false',
+ '--legacy-peer-deps',
tarball,
])
await run(npm.file, npm.args, {
diff --git a/scripts/packed-rpc/first-run-tui.mjs b/scripts/packed-rpc/first-run-tui.mjs
index 7d59682..db56ce5 100644
--- a/scripts/packed-rpc/first-run-tui.mjs
+++ b/scripts/packed-rpc/first-run-tui.mjs
@@ -90,7 +90,7 @@ export async function runPackedFirstRun(binary, repository) {
let completed = false
try {
await waitFor(
- () => (expectSetup ? output.includes('braid setup') : output.includes('Ctrl+P commands')),
+ () => (expectSetup ? output.includes('braid setup') : output.includes('new message')),
'packed TUI startup surface',
15_000,
() => output,
@@ -133,7 +133,7 @@ export async function runPackedFirstRun(binary, repository) {
const replyOffset = output.indexOf(expectedResponse, responseOffset)
if (replyOffset < 0) return false
const completedOutput = output.slice(replyOffset + expectedResponse.length)
- return completedOutput.includes('Ctrl+E') || completedOutput.includes('Ctrl+P')
+ return completedOutput.includes('new message')
},
'packed real response',
120_000,
diff --git a/scripts/performance/memory-child.mjs b/scripts/performance/memory-child.mjs
index 0981043..ba05ae2 100644
--- a/scripts/performance/memory-child.mjs
+++ b/scripts/performance/memory-child.mjs
@@ -9,14 +9,17 @@ if (!databasePath || !workspaceRoot || !keyPath || !credentialRoot || !packageRo
)
const indexUrl = (relativePath) => pathToFileURL(join(packageRoot, relativePath)).href
-const [tui, composition] = await Promise.all([
- import(indexUrl('dist/adapters/tui/application-ui-controller.js')),
- import(indexUrl('dist/app/composition.js')),
-])
+if (typeof globalThis.gc === 'function') globalThis.gc()
+const processStartRssMiB = process.memoryUsage().rss / (1024 * 1024)
+const composition = await import(indexUrl('dist/startup/durable-runtime.js'))
+if (typeof globalThis.gc === 'function') globalThis.gc()
+const durableRuntimeRssMiB = process.memoryUsage().rss / (1024 * 1024)
+const tui = await import(indexUrl('dist/adapters/tui/application-ui-controller.js'))
const profile = { name: 'Braid performance profile', harness: 'pi' }
const credentials = new FileCredentialStore(credentialRoot)
if (typeof globalThis.gc === 'function') globalThis.gc()
-const baselineRssMiB = process.memoryUsage().rss / (1024 * 1024)
+const viewRuntimeRssMiB = process.memoryUsage().rss / (1024 * 1024)
+const baselineRssMiB = viewRuntimeRssMiB
const durable = await composition.createDurableBraidApplication({
path: databasePath,
workspaceRoot,
@@ -31,6 +34,9 @@ try {
process.stdout.write(
`${JSON.stringify({
baselineRssMiB,
+ processStartRssMiB,
+ durableRuntimeRssMiB,
+ viewRuntimeRssMiB,
rssMiB: process.memoryUsage().rss / (1024 * 1024),
eventCount: state.sequence,
loadedTailEventCount: durable.app.events().length,
diff --git a/scripts/performance/process-measurements.mjs b/scripts/performance/process-measurements.mjs
index 33c11ce..537fffc 100644
--- a/scripts/performance/process-measurements.mjs
+++ b/scripts/performance/process-measurements.mjs
@@ -25,10 +25,12 @@ function readyFramePredicate(marker) {
!READY_ERROR.test(output)
}
-function interactiveReadyFramePredicate(marker) {
+export function interactiveReadyFramePredicate(marker) {
const ready = readyFramePredicate(marker)
return (lines, output) =>
- ready(lines, output) && lines.some((line) => line.includes('AgentProfile'))
+ ready(lines, output) &&
+ lines.some((line) => line.includes('profile Braid performance profile')) &&
+ lines.some((line) => line.includes('type / for commands'))
}
function composerKeyPredicate(snapshot, token) {
diff --git a/scripts/performance/reporting.mjs b/scripts/performance/reporting.mjs
index 913e78e..6028a37 100644
--- a/scripts/performance/reporting.mjs
+++ b/scripts/performance/reporting.mjs
@@ -1,4 +1,5 @@
import { execFile as execFileCallback } from 'node:child_process'
+import { readFileSync } from 'node:fs'
import { chmod, mkdir, readFile, writeFile } from 'node:fs/promises'
import os from 'node:os'
import { join, resolve } from 'node:path'
@@ -21,9 +22,25 @@ export const smokeReportPath = join(outputDirectory, 'smoke.json')
export const releaseReportPath = join(outputDirectory, 'release-measurements.json')
export const command = process.env.BRAID_PERFORMANCE_COMMAND ?? 'pnpm run test:performance'
export const FULL_REPETITIONS = 20
-export const processTerminal =
- 'node-pty@1.1.0 + @xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1'
-export const virtualTerminal = '@xterm/headless@6.0.0 + @earendil-works/pi-tui@0.84.1'
+function loadPackageManifest() {
+ for (const path of [join(repository, 'package.json'), join(process.cwd(), 'package.json')]) {
+ try {
+ return JSON.parse(readFileSync(path, 'utf8'))
+ } catch {
+ // A compiled test copy may not include package metadata beside its scripts.
+ }
+ }
+ return {}
+}
+
+const packageManifest = loadPackageManifest()
+const dependencyVersion = (name) =>
+ packageManifest.dependencies?.[name] ?? packageManifest.devDependencies?.[name] ?? 'unknown'
+const piTuiVersion = dependencyVersion('@earendil-works/pi-tui')
+const xtermHeadlessVersion = dependencyVersion('@xterm/headless')
+const nodePtyVersion = dependencyVersion('node-pty')
+export const processTerminal = `node-pty@${nodePtyVersion} + @xterm/headless@${xtermHeadlessVersion} + @earendil-works/pi-tui@${piTuiVersion}`
+export const virtualTerminal = `@xterm/headless@${xtermHeadlessVersion} + @earendil-works/pi-tui@${piTuiVersion}`
const packedProductionTuiChild = new URL('./packed-production-tui-child.mjs', import.meta.url)
export function errorReason(error) {
diff --git a/scripts/release/build-identity.mjs b/scripts/release/build-identity.mjs
index d4c3669..2927c08 100644
--- a/scripts/release/build-identity.mjs
+++ b/scripts/release/build-identity.mjs
@@ -1,6 +1,6 @@
import { execFileSync } from 'node:child_process'
import { createHash } from 'node:crypto'
-import { readdir } from 'node:fs/promises'
+import { lstat, readdir, realpath } from 'node:fs/promises'
import { basename, isAbsolute, join, relative, resolve, sep } from 'node:path'
import { REQUIREMENT_PATTERN } from '../release-check-catalog.mjs'
@@ -40,6 +40,11 @@ function sourceTreeChanges(repository) {
return [...changed].sort()
}
+function inside(root, target) {
+ const path = relative(root, target)
+ return path === '' || (!isAbsolute(path) && path !== '..' && !path.startsWith(`..${sep}`))
+}
+
async function filesBelow(root) {
const files = []
for (const entry of await readdir(root, { withFileTypes: true })) {
@@ -300,3 +305,48 @@ export async function readBuildIdentity({
tarballPath: tarballRelative,
}
}
+
+export async function readCandidateIdentity({
+ repository,
+ artifactRoot,
+ expectedCommit,
+ expectedVersion,
+} = {}) {
+ const root = resolve(repository)
+ const evidenceRoot = resolve(artifactRoot)
+ assert(!inside(root, evidenceRoot), 'Release artifacts must be outside the source checkout')
+ const evidenceInfo = await lstat(evidenceRoot)
+ assert(
+ evidenceInfo.isDirectory() && !evidenceInfo.isSymbolicLink(),
+ 'Release artifact root is not real',
+ )
+ assert(
+ (await realpath(evidenceRoot)) === evidenceRoot,
+ 'Release artifact root resolves indirectly',
+ )
+ const packageProofPath = join(evidenceRoot, 'w6', 'package-proof.json')
+ const packageProof = await readPackageProof({
+ repository: root,
+ packageProofRoot: evidenceRoot,
+ packageProofPath: 'w6/package-proof.json',
+ })
+ assert(
+ packageProof && typeof packageProof === 'object' && !Array.isArray(packageProof),
+ 'Package proof is not an object',
+ )
+ assert(
+ typeof packageProof.tarball === 'string' && packageProof.tarball.length > 0,
+ 'Package proof has no tarball filename',
+ )
+ const identity = await readBuildIdentity({
+ repository: root,
+ artifactRoot: evidenceRoot,
+ tarballPath: join(evidenceRoot, 'candidate', packageProof.tarball),
+ packageProof,
+ })
+ if (expectedCommit !== undefined)
+ assert(identity.gitCommit === expectedCommit, 'Candidate commit differs from expectation')
+ if (expectedVersion !== undefined)
+ assert(identity.braidVersion === expectedVersion, 'Candidate version differs from expectation')
+ return { identity, packageProof, packageProofPath }
+}
diff --git a/scripts/release/child-environment.mjs b/scripts/release/child-environment.mjs
index 290ff4b..ab5fedf 100644
--- a/scripts/release/child-environment.mjs
+++ b/scripts/release/child-environment.mjs
@@ -8,6 +8,11 @@ const PROVIDER_GROUPS = Object.freeze([
name: /^BRAID_(?:CLI_BRIDGE|LIVE_BRIDGE)(?:_|$)/u,
}),
Object.freeze({ commands: new Set(['pnpm test:eval']), name: /^BRAID_EVAL_/u }),
+ Object.freeze({
+ commands: new Set(['pnpm test:live:tangle', 'pnpm test:live:supervisor']),
+ name: /^TANGLE_API_KEY$/u,
+ }),
+ // LIVE-11 accepts the shared Sandbox credential through this fallback.
Object.freeze({
commands: new Set(['pnpm test:live:tangle']),
name: /^(?:BRAID_(?:LIVE_)?TANGLE|TANGLE)(?:_|$)/u,
diff --git a/scripts/release/collector.mjs b/scripts/release/collector.mjs
index 927eefe..9899e29 100644
--- a/scripts/release/collector.mjs
+++ b/scripts/release/collector.mjs
@@ -37,6 +37,7 @@ import {
sanitizeEnvironment,
} from './command-runner.mjs'
import { readLiveBridgeProof } from './live-bridge-proof.mjs'
+import { readLiveTangleProof } from './live-tangle-proof.mjs'
function assert(condition, message) {
if (!condition) throw new Error(message)
@@ -335,11 +336,19 @@ export async function collectReleaseEvidence({
environments.set(environmentValue.id, environmentValue)
const attempt = (previousAttempts.get(checkId) ?? 0) + 1
previousAttempts.set(checkId, attempt)
- const structuredEvidenceOverride = await readLiveBridgeProof({
+ const bridgeEvidence = await readLiveBridgeProof({
artifactRoot: evidenceRoot,
checkId,
processResult: result,
})
+ const structuredEvidenceOverride =
+ bridgeEvidence ??
+ (await readLiveTangleProof({
+ artifactRoot: evidenceRoot,
+ checkId,
+ processResult: result,
+ redactionSecrets: collectCredentialSecrets(commandEnvironment, redactionSecrets),
+ }))
const record = buildCheckRecord({
checkId,
category: result.category,
diff --git a/scripts/release/live-tangle-proof.mjs b/scripts/release/live-tangle-proof.mjs
new file mode 100644
index 0000000..fe93001
--- /dev/null
+++ b/scripts/release/live-tangle-proof.mjs
@@ -0,0 +1,96 @@
+import { join } from 'node:path'
+
+import { assertMultirunProof } from '../live-required/multirun-contract.mjs'
+import { structuredChildEvidence } from './collection-contract.mjs'
+import { readRegularFileNoFollow } from '../release-files.mjs'
+
+const TANGLE_CHECK_IDS = new Set([
+ 'live-tangle',
+ 'LIVE-06',
+ 'LIVE-07',
+ 'LIVE-08',
+ 'LIVE-09',
+ 'LIVE-10',
+])
+
+function object(value) {
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
+}
+
+function unavailable(checkId, reason) {
+ return {
+ result: 'uncaptured',
+ measurements: [{ kind: 'uncaptured', name: checkId, reason }],
+ reason,
+ }
+}
+
+function resultMarkerStatus(stdoutBytes) {
+ const markers = String(Buffer.from(stdoutBytes ?? Buffer.alloc(0)))
+ .split('\n')
+ .filter((line) => line.startsWith('BRAID_RELEASE_RESULT_JSON='))
+ if (markers.length !== 1) return undefined
+ try {
+ const marker = JSON.parse(markers[0].slice('BRAID_RELEASE_RESULT_JSON='.length))
+ return object(marker) && typeof marker.status === 'string' ? marker.status : undefined
+ } catch {
+ return undefined
+ }
+}
+
+async function readProof(artifactRoot) {
+ const bytes = await readRegularFileNoFollow(join(artifactRoot, 'live', 'tangle', 'evidence.json'))
+ const proof = JSON.parse(bytes.toString('utf8'))
+ assertMultirunProof(proof)
+ return proof
+}
+
+/** Validates the mandatory LIVE-07 multirun artifact after the command passes. */
+export async function readLiveTangleProof({
+ artifactRoot,
+ checkId,
+ processResult,
+ redactionSecrets = [],
+} = {}) {
+ if (!TANGLE_CHECK_IDS.has(checkId)) return undefined
+ if (
+ processResult?.exitCode !== 0 ||
+ processResult.signal !== null ||
+ processResult.timedOut !== false ||
+ processResult.spawnError !== null ||
+ processResult.cleanupConfirmed !== true ||
+ processResult.stdout?.redactionFailClosed !== false ||
+ processResult.stderr?.redactionFailClosed !== false
+ )
+ return undefined
+ if (
+ resultMarkerStatus(processResult.structuredStdout?.bytes ?? processResult.stdout?.bytes) !==
+ 'passed'
+ )
+ return unavailable(checkId, 'The Tangle live command did not emit a passed release result')
+ let childEvidence
+ try {
+ childEvidence = structuredChildEvidence(
+ 'live',
+ processResult.structuredStdout?.bytes ?? processResult.stdout?.bytes,
+ processResult.durationMs,
+ checkId,
+ processResult.structuredStdout?.error,
+ redactionSecrets,
+ )
+ } catch (error) {
+ return unavailable(checkId, error instanceof Error ? error.message : String(error))
+ }
+ if (childEvidence.result !== 'passed') return childEvidence
+ try {
+ await readProof(artifactRoot)
+ } catch (error) {
+ return unavailable(
+ checkId,
+ `The mandatory Tangle Sandbox multirun artifact is missing or invalid: ${error instanceof Error ? error.message : String(error)}`,
+ )
+ }
+ return childEvidence
+}
+
+export { TANGLE_CHECK_IDS }
diff --git a/scripts/release/prepare-candidate.mjs b/scripts/release/prepare-candidate.mjs
index 66fc428..2f5b222 100644
--- a/scripts/release/prepare-candidate.mjs
+++ b/scripts/release/prepare-candidate.mjs
@@ -1,8 +1,8 @@
import { spawn } from 'node:child_process'
-import { createHash } from 'node:crypto'
-import { lstat, mkdir, readFile, realpath, stat } from 'node:fs/promises'
-import { basename, isAbsolute, join, relative, resolve, sep } from 'node:path'
+import { lstat, mkdir, readFile, realpath } from 'node:fs/promises'
+import { isAbsolute, join, relative, resolve, sep } from 'node:path'
+import { readCandidateIdentity } from './build-identity.mjs'
import { pnpmInvocation } from './platform.mjs'
function assert(condition, message) {
@@ -31,12 +31,6 @@ async function run(file, args, options = {}) {
})
}
-async function sha256(path) {
- return createHash('sha256')
- .update(await readFile(path))
- .digest('hex')
-}
-
const repository = resolve(new URL('../../', import.meta.url).pathname)
const artifactRootValue = process.env.BRAID_RELEASE_ARTIFACT_ROOT
assert(artifactRootValue, 'BRAID_RELEASE_ARTIFACT_ROOT is required')
@@ -71,8 +65,8 @@ const archiveName = `${packageJson.name.replace(/^@/u, '').replace('/', '-')}-${
const candidateRoot = join(artifactRoot, 'candidate')
const tarballPath = join(candidateRoot, archiveName)
const packageProofPath = join(artifactRoot, 'w6', 'package-proof.json')
-const existingTarball = await stat(tarballPath).catch(() => undefined)
-const existingProof = await stat(packageProofPath).catch(() => undefined)
+const existingTarball = await lstat(tarballPath).catch(() => undefined)
+const existingProof = await lstat(packageProofPath).catch(() => undefined)
assert(Boolean(existingTarball) === Boolean(existingProof), 'Restored candidate is incomplete')
if (!existingTarball) {
@@ -91,36 +85,19 @@ if (!existingTarball) {
)
}
-const packageProof = JSON.parse(await readFile(packageProofPath, 'utf8'))
-const head = await new Promise((resolvePromise, reject) => {
- let stdout = ''
- const child = spawn('git', ['rev-parse', 'HEAD'], {
- cwd: repository,
- shell: false,
- stdio: ['ignore', 'pipe', 'inherit'],
- })
- child.stdout.setEncoding('utf8')
- child.stdout.on('data', (chunk) => {
- stdout += chunk
- })
- child.once('error', reject)
- child.once('close', (code) =>
- code === 0 ? resolvePromise(stdout.trim()) : reject(new Error(`git rev-parse exited ${code}`)),
- )
+const { identity } = await readCandidateIdentity({
+ repository,
+ artifactRoot,
+ expectedVersion: packageJson.version,
})
-assert(packageProof.version === packageJson.version, 'Package proof version differs')
-assert(packageProof.gitCommit === head, 'Restored candidate commit differs')
-assert(packageProof.tarball === basename(tarballPath), 'Package proof archive name differs')
-assert(packageProof.sha256 === (await sha256(tarballPath)), 'Package proof archive digest differs')
-assert(packageProof.packageFileManifest?.entries?.length > 0, 'Package proof has no file manifest')
process.stdout.write(
`${JSON.stringify(
{
version: packageJson.version,
- commit: packageProof.gitCommit,
+ commit: identity.gitCommit,
tarball: tarballPath,
- tarballSha256: packageProof.sha256,
+ tarballSha256: identity.tarballSha256,
packageProof: packageProofPath,
},
null,
diff --git a/scripts/release/publication-proof.mjs b/scripts/release/publication-proof.mjs
index f71f9e4..7704759 100644
--- a/scripts/release/publication-proof.mjs
+++ b/scripts/release/publication-proof.mjs
@@ -109,6 +109,16 @@ export async function createPublicationProof({
completedAt = new Date().toISOString(),
}) {
const root = resolve(artifactRoot)
+ const candidatePath = containedPath(
+ root,
+ join('candidate', packageProof.tarball),
+ 'Candidate package archive',
+ )
+ const candidateBytes = await readRegularFileNoFollow(candidatePath)
+ assert(
+ sha256(candidateBytes) === packageProof.sha256,
+ 'Candidate package archive digest differs from package proof',
+ )
const candidate = await readPhase({ artifactRoot: root, phase: 'candidate', packageProof })
const registry = await readPhase({ artifactRoot: root, phase: 'registry', packageProof })
const provenance = await readAndValidateNpmProvenance({ artifactRoot: root, packageProof })
diff --git a/scripts/release/release-collector.test.mjs b/scripts/release/release-collector.test.mjs
index cda0996..0cd333e 100644
--- a/scripts/release/release-collector.test.mjs
+++ b/scripts/release/release-collector.test.mjs
@@ -2,7 +2,7 @@ import { strict as assert } from 'node:assert'
import { execFileSync } from 'node:child_process'
import { createHash } from 'node:crypto'
import { EventEmitter } from 'node:events'
-import { chmod, mkdir, mkdtemp, readdir, readFile, rm, writeFile } from 'node:fs/promises'
+import { chmod, copyFile, mkdir, mkdtemp, readdir, readFile, rm, writeFile } from 'node:fs/promises'
import { tmpdir } from 'node:os'
import { join } from 'node:path'
import { PassThrough } from 'node:stream'
@@ -10,7 +10,12 @@ import { test } from 'node:test'
import { gzipSync } from 'node:zlib'
import { writeJsonAtomic } from './atomic-storage.mjs'
-import { bindingForCheck, readBuildIdentity, readRequirementIds } from './build-identity.mjs'
+import {
+ bindingForCheck,
+ readBuildIdentity,
+ readCandidateIdentity,
+ readRequirementIds,
+} from './build-identity.mjs'
import { releaseChildEnvironment } from './child-environment.mjs'
import { structuredChildEvidence } from './collection-contract.mjs'
import { collectReleaseEvidence } from './collector.mjs'
@@ -71,7 +76,7 @@ async function makeRepo({
`${JSON.stringify({
name: '@example/braid',
version: '1.0.0',
- packageManager: 'pnpm@11.18.0',
+ packageManager: 'pnpm@11.24.0',
dependencies: {},
})}\n`,
)
@@ -337,6 +342,7 @@ test('release children receive only credentials for their exact provider command
BRAID_CLI_BRIDGE_URL: 'http://127.0.0.1:4010',
BRAID_EVAL_API_KEY: 'eval-secret',
BRAID_EVAL_BASE_URL: 'https://router.example/v1',
+ TANGLE_API_KEY: 'shared-tangle-secret',
BRAID_TANGLE_API_KEY: 'tangle-secret',
BRAID_TANGLE_ENDPOINT: 'https://router.tangle.example',
BRAID_TANGLE_SANDBOX_API_KEY: 'sandbox-secret',
@@ -360,17 +366,21 @@ test('release children receive only credentials for their exact provider command
assert.equal(evaluation.BRAID_EVAL_BASE_URL, 'https://router.example/v1')
assert.equal(evaluation.BRAID_CLI_BRIDGE_BEARER, undefined)
assert.equal(evaluation.BRAID_TANGLE_API_KEY, undefined)
+ assert.equal(evaluation.TANGLE_API_KEY, undefined)
const tangle = releaseChildEnvironment(environment, 'pnpm test:live:tangle')
+ assert.equal(tangle.TANGLE_API_KEY, 'shared-tangle-secret')
assert.equal(tangle.BRAID_TANGLE_API_KEY, 'tangle-secret')
assert.equal(tangle.BRAID_TANGLE_ENDPOINT, 'https://router.tangle.example')
assert.equal(tangle.BRAID_TANGLE_SANDBOX_API_KEY, 'sandbox-secret')
assert.equal(tangle.BRAID_ANALYSIS_API_KEY, undefined)
assert.equal(tangle.BRAID_SUPERVISOR_ROOT, undefined)
const analysis = releaseChildEnvironment(environment, 'pnpm test:live:analysis')
+ assert.equal(analysis.TANGLE_API_KEY, undefined)
assert.equal(analysis.BRAID_ANALYSIS_API_KEY, 'analysis-secret')
assert.equal(analysis.BRAID_ANALYSIS_ENDPOINT, 'https://analysis.tangle.example')
assert.equal(analysis.BRAID_TANGLE_API_KEY, undefined)
const supervisor = releaseChildEnvironment(environment, 'pnpm test:live:supervisor')
+ assert.equal(supervisor.TANGLE_API_KEY, 'shared-tangle-secret')
assert.equal(supervisor.BRAID_SUPERVISOR_ROOT, '/runtime-root')
assert.equal(supervisor.BRAID_SUPERVISOR_ID, 'supervisor-1')
assert.equal(supervisor.BRAID_ANALYSIS_API_KEY, undefined)
@@ -726,6 +736,30 @@ test('build identity binds clean HEAD, explicit Git-tree algorithm, tarball dige
})
})
+test('candidate identity rejects restored proof metadata tampering', async () => {
+ await withRepo(async ({ root, artifactRoot, tarballPath, proof }) => {
+ await mkdir(join(artifactRoot, 'candidate'), { recursive: true })
+ await mkdir(join(artifactRoot, 'w6'), { recursive: true })
+ await copyFile(tarballPath, join(artifactRoot, 'candidate', proof.tarball))
+ const proofPath = join(artifactRoot, 'w6', 'package-proof.json')
+ await writeFile(proofPath, `${JSON.stringify(proof)}\n`)
+
+ const candidate = await readCandidateIdentity({
+ repository: root,
+ artifactRoot,
+ expectedCommit: proof.gitCommit,
+ expectedVersion: proof.version,
+ })
+ assert.equal(candidate.identity.tarballSha256, proof.sha256)
+
+ await writeFile(proofPath, `${JSON.stringify({ ...proof, sourceDigest: '0'.repeat(64) })}\n`)
+ await expectRejectAsync(
+ () => readCandidateIdentity({ repository: root, artifactRoot }),
+ /source digest differs/iu,
+ )
+ })
+})
+
test('atomic interruption leaves no partial file and permits a clean retry', async () => {
const root = await mkdtemp(join(tmpdir(), 'braid-atomic-'))
try {
@@ -823,6 +857,53 @@ test('one local catalog check produces redacted artifacts and an immutable colle
})
})
+test('Tangle release collection rejects a passing command without the multirun artifact', async () => {
+ await withRepo(async ({ root, artifactRoot, tarballPath, proof }) => {
+ const measurements = Array.from({ length: 5 }, (_, index) => ({
+ kind: 'scalar',
+ name: `LIVE-${String(index + 6).padStart(2, '0')}`,
+ unit: 'verified-flow',
+ value: 1,
+ }))
+ const output =
+ 'BRAID_RELEASE_RESULT_JSON={"status":"passed"}\n' +
+ `BRAID_RELEASE_MEASUREMENTS_JSON=${JSON.stringify({ measurements })}\n`
+ const result = await collectReleaseEvidence({
+ repository: root,
+ artifactRoot,
+ tarballPath,
+ packageProof: proof,
+ requirementBindings: { 'PR-01': { checks: ['live-tangle'] } },
+ checkIds: ['live-tangle'],
+ environment: { PATH: process.env.PATH ?? '', NODE_ENV: 'test' },
+ runCheck: async ({ checkId, cwd, environment }) => {
+ const evidenceRoot = join(artifactRoot, 'live', 'tangle')
+ await mkdir(evidenceRoot, { recursive: true })
+ await writeFile(join(evidenceRoot, 'stale.json'), '{}\n')
+ const processResult = await executeArgv({
+ file: process.execPath,
+ args: ['-e', `process.stdout.write(${JSON.stringify(output)})`],
+ cwd,
+ environment,
+ })
+ return {
+ checkId,
+ category: 'live',
+ command: 'pnpm test:live:tangle',
+ argv: ['pnpm', 'test:live:tangle'],
+ ...processResult,
+ }
+ },
+ })
+ assert.notEqual(result.result, 'passed')
+ assert.equal(result.envelope.checks[0].result, 'uncaptured')
+ assert.match(
+ result.envelope.checks[0].failureDetails.reason,
+ /multirun artifact is missing or invalid/u,
+ )
+ })
+})
+
test('a selected check reports only requirements covered by that check', async () => {
await withRepo(
async ({ root, artifactRoot, tarballPath, proof }) => {
diff --git a/scripts/release/smoke-package.mjs b/scripts/release/smoke-package.mjs
index 58231a4..d80c355 100644
--- a/scripts/release/smoke-package.mjs
+++ b/scripts/release/smoke-package.mjs
@@ -5,6 +5,7 @@ import { tmpdir } from 'node:os'
import { basename, dirname, join, relative, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
import { npmInvocation, portableEvidencePath } from './platform.mjs'
+import { readRegularFileNoFollow } from '../release-files.mjs'
function assert(condition, message) {
if (!condition) throw new Error(message)
@@ -127,7 +128,7 @@ async function runPlainFlow(binary, cwd) {
async function sha256(path) {
return createHash('sha256')
- .update(await readFile(path))
+ .update(await readRegularFileNoFollow(path))
.digest('hex')
}
@@ -140,7 +141,9 @@ const expectedArchitecture =
option('--expect-architecture') ?? process.env.BRAID_EXPECT_ARCHITECTURE
assert(artifactRootValue, '--artifact-root is required')
const artifactRoot = resolve(artifactRootValue)
-const proof = JSON.parse(await readFile(join(artifactRoot, 'w6', 'package-proof.json'), 'utf8'))
+const proof = JSON.parse(
+ (await readRegularFileNoFollow(join(artifactRoot, 'w6', 'package-proof.json'))).toString('utf8'),
+)
const smokeRoot = await realpath(await mkdtemp(join(tmpdir(), 'braid-platform-smoke-')))
let smokeResult
diff --git a/scripts/release/verify-candidate-identity.mjs b/scripts/release/verify-candidate-identity.mjs
new file mode 100644
index 0000000..eef8665
--- /dev/null
+++ b/scripts/release/verify-candidate-identity.mjs
@@ -0,0 +1,45 @@
+import { resolve } from 'node:path'
+
+import { readCandidateIdentity } from './build-identity.mjs'
+
+function assert(condition, message) {
+ if (!condition) throw new Error(message)
+}
+
+const repository = resolve(
+ process.env.BRAID_RELEASE_CHECKOUT ?? new URL('../../', import.meta.url).pathname,
+)
+const artifactRootValue = process.env.BRAID_RELEASE_ARTIFACT_ROOT
+const expectedCommit = process.env.BRAID_RELEASE_EXPECT_COMMIT
+const expectedVersion = process.env.BRAID_RELEASE_EXPECT_VERSION
+assert(artifactRootValue, 'BRAID_RELEASE_ARTIFACT_ROOT is required')
+assert(
+ /^[a-f0-9]{40}$/u.test(expectedCommit ?? ''),
+ 'BRAID_RELEASE_EXPECT_COMMIT must be a full SHA',
+)
+assert(expectedVersion, 'BRAID_RELEASE_EXPECT_VERSION is required')
+
+const { identity, packageProof } = await readCandidateIdentity({
+ repository,
+ artifactRoot: artifactRootValue,
+ expectedCommit,
+ expectedVersion,
+})
+
+process.stdout.write(
+ `${JSON.stringify(
+ {
+ schema: 'braid.candidate-identity.v1',
+ version: identity.braidVersion,
+ gitCommit: identity.gitCommit,
+ treeSha256: identity.treeSha256,
+ sourceDigest: packageProof.sourceDigest,
+ tarballSha256: identity.tarballSha256,
+ packageIntegrity: identity.packageIntegrity,
+ packageFileManifestDigest: identity.packageFileManifestDigest,
+ tarballPath: identity.tarballPath,
+ },
+ null,
+ 2,
+ )}\n`,
+)
diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs
index 4ae027f..73da437 100644
--- a/scripts/run-tests.mjs
+++ b/scripts/run-tests.mjs
@@ -37,9 +37,11 @@ const scopeFiles = {
unit: [
'agent-interface-runtime-parity.test.js',
'canonical.test.js',
+ 'component-docs.test.js',
'analysis-model-call-observability.test.js',
'analysis-model-call-roundtrip.test.js',
'application.test.js',
+ 'conversation-branch-effects.test.js',
'cli-startup.test.js',
'conversations.test.js',
'coordination.test.js',
@@ -50,12 +52,15 @@ const scopeFiles = {
'eval.test.js',
'native-interactive-actions.test.js',
'native-interactive-run-broker.test.js',
+ 'nitro-confidential-attestation.test.js',
'observability.test.js',
'plain-accessibility.test.js',
'property.test.js',
'reducer.test.js',
+ 'run-event-mapper-stream-safety.test.js',
'sanitize.test.js',
'scripts.test.js',
+ 'storage-journal-routing.test.js',
'terminal-usage-status.test.js',
'usage-projection.test.js',
'w6-ui.test.js',
@@ -65,6 +70,8 @@ const scopeFiles = {
'analysis-model-call-observability.test.js',
'analysis-model-call-roundtrip.test.js',
'application.test.js',
+ 'conversation-branch-effects.test.js',
+ 'cli-bridge-context-transfer.test.js',
'cli-bridge-interactions.test.js',
'cli-bridge-profile-contract.test.js',
'cli-bridge-retained-restart.test.js',
@@ -76,6 +83,7 @@ const scopeFiles = {
'reducer.test.js',
'scripts.test.js',
'tangle-retained-lifecycle.test.js',
+ 'nitro-confidential-attestation.test.js',
'usage-projection.test.js',
'w6-contract.test.js',
],
@@ -117,6 +125,7 @@ const scopeFiles = {
'domain-reducer.test.js',
'effect-admission.test.js',
'storage-crash.test.js',
+ 'storage-journal-routing.test.js',
'storage-snapshots.test.js',
'storage.test.js',
],
@@ -125,12 +134,15 @@ const scopeFiles = {
'analysis-model-call-roundtrip.test.js',
'cli-startup.test.js',
'configuration-product-flow.test.js',
+ 'conversation-branch-effects.test.js',
'conversations.test.js',
'coordination.test.js',
'observability.test.js',
'plain-accessibility.test.js',
'profile-connection-actions.test.js',
'profile-save-recovery.test.js',
+ 'nitro-confidential-attestation.test.js',
+ 'run-event-mapper-stream-safety.test.js',
'sanitize.test.js',
'security.test.js',
'storage-snapshots.test.js',
diff --git a/src/adapters/analysis/eval-analyst.ts b/src/adapters/analysis/eval-analyst.ts
index 019e70b..6d109bd 100644
--- a/src/adapters/analysis/eval-analyst.ts
+++ b/src/adapters/analysis/eval-analyst.ts
@@ -114,10 +114,11 @@ export class AgentEvalAnalystAdapter {
const available = this.#registry.list()
const availableIds = new Set(available.map((entry) => entry.id))
if (request.analystIds !== undefined) {
- const unknown = request.analystIds.filter((id) => !availableIds.has(id))
+ const selected = [...new Set(request.analystIds.map((id) => id.trim()).filter(Boolean))]
+ const unknown = selected.filter((id) => !availableIds.has(id))
if (unknown.length > 0) throw unavailable(unknown[0] ?? 'custom', available)
- if (request.analystIds.length === 0) throw unavailable('custom', available)
- return [...request.analystIds]
+ if (selected.length === 0) throw unavailable('custom', available)
+ return selected
}
const recipe = request.recipe ?? 'ask'
@@ -126,10 +127,26 @@ export class AgentEvalAnalystAdapter {
return [BRAID_QUESTION_ANALYST_ID]
}
- const candidates = RECIPE_ALIASES[recipe] ?? [recipe]
- const selected = candidates.find((candidate) => availableIds.has(candidate))
- if (selected === undefined) throw unavailable(recipe, available)
- return [selected]
+ const recipes = recipe
+ .split(',')
+ .map((value) => value.trim())
+ .filter(Boolean)
+ if (recipes.includes('all')) {
+ const selected = available
+ .map((entry) => entry.id)
+ .filter((id) => id !== BRAID_QUESTION_ANALYST_ID)
+ if (selected.length === 0) throw unavailable('all', available)
+ return selected
+ }
+ const selected: string[] = []
+ for (const item of recipes) {
+ const candidates = RECIPE_ALIASES[item] ?? [item]
+ const analystId = candidates.find((candidate) => availableIds.has(candidate))
+ if (analystId === undefined) throw unavailable(item, available)
+ if (!selected.includes(analystId)) selected.push(analystId)
+ }
+ if (selected.length === 0) throw unavailable(recipe, available)
+ return selected
}
async *stream(request: EvalAnalystRequest): AsyncGenerator {
diff --git a/src/adapters/analysis/managed-analysis-runtime.ts b/src/adapters/analysis/managed-analysis-runtime.ts
index 1777a7c..6df23fe 100644
--- a/src/adapters/analysis/managed-analysis-runtime.ts
+++ b/src/adapters/analysis/managed-analysis-runtime.ts
@@ -1,8 +1,9 @@
import { createRequire } from 'node:module'
+import { AGENT_EVAL_VERSION } from './agent-eval-version.js'
-const AGENT_EVAL_RPC_VERSION = '0.145.15'
+const AGENT_EVAL_RPC_VERSION = AGENT_EVAL_VERSION
const PYTHON_VERSION = '3.12'
-const RESOLUTION_CUTOFF = '2026-08-11T05:00:00Z'
+const RESOLUTION_CUTOFF = '2026-08-21T12:09:00Z'
const RUNTIME_PROBE = [
'import importlib.metadata',
'import sys',
@@ -91,3 +92,4 @@ export function managedAnalysisRunner(
export const MANAGED_AGENT_EVAL_RPC_VERSION = AGENT_EVAL_RPC_VERSION
export const MANAGED_ANALYSIS_PYTHON_VERSION = PYTHON_VERSION
export const MANAGED_ANALYSIS_RUNTIME_PROBE = RUNTIME_PROBE
+export const MANAGED_ANALYSIS_RESOLUTION_CUTOFF = RESOLUTION_CUTOFF
diff --git a/src/adapters/analysis/python-runner.ts b/src/adapters/analysis/python-runner.ts
index 2dbd63a..be71c50 100644
--- a/src/adapters/analysis/python-runner.ts
+++ b/src/adapters/analysis/python-runner.ts
@@ -271,8 +271,6 @@ export async function resolvePythonRunner(
return probeRunner(runner, probe, timeoutMs)
}
- let packageMissing: PythonRunnerResolution | undefined
- let probeFailed: PythonRunnerResolution | undefined
if (options.candidates === undefined && !process.env.BRAID_PYTHON?.trim()) {
const managed = managedAnalysisRunner()
if (managed !== undefined) {
@@ -300,7 +298,7 @@ export async function resolvePythonRunner(
},
}
}
- probeFailed = {
+ return {
status: 'python-probe-failed',
runner: {
command: managed.command,
@@ -315,6 +313,8 @@ export async function resolvePythonRunner(
}
}
+ let packageMissing: PythonRunnerResolution | undefined
+ let probeFailed: PythonRunnerResolution | undefined
for (const candidate of options.candidates ?? defaultCandidates()) {
const runner = normalizedRunner({ command: candidate }, 'detected')
if (runner === undefined) continue
diff --git a/src/adapters/analysis/runtime-model-owner.ts b/src/adapters/analysis/runtime-model-owner.ts
index 52f59cd..5d06172 100644
--- a/src/adapters/analysis/runtime-model-owner.ts
+++ b/src/adapters/analysis/runtime-model-owner.ts
@@ -608,6 +608,11 @@ function analystCallProfile(
'Trace analysis execution limits exceed AgentProfile.model.maxTotalOutputTokens',
)
}
+ const enforceableTotalOutputTokens =
+ maxTotalOutputTokens ??
+ (maxVisibleOutputTokens === undefined || maxReasoningTokens === undefined
+ ? undefined
+ : maxVisibleOutputTokens + maxReasoningTokens)
return snapshotAgentProfile({
name: `${source.name ?? 'Braid'} trace analyst`,
description: 'One bounded trace-analysis model call',
@@ -624,11 +629,10 @@ function analystCallProfile(
default: model,
...(provider === undefined ? {} : { provider }),
...(reasoningEffort === undefined ? {} : { reasoningEffort }),
- ...(maxVisibleOutputTokens === undefined ? {} : { maxVisibleOutputTokens }),
- ...(maxReasoningTokens === undefined || maxReasoningTokens <= 0
+ ...(bridge || maxVisibleOutputTokens === undefined ? {} : { maxVisibleOutputTokens }),
+ ...(enforceableTotalOutputTokens === undefined
? {}
- : { maxReasoningTokens }),
- ...(maxTotalOutputTokens === undefined ? {} : { maxTotalOutputTokens }),
+ : { maxTotalOutputTokens: enforceableTotalOutputTokens }),
metadata: {
...(bridge ? {} : { retry }),
...(request.temperature === undefined ? {} : { temperature: request.temperature }),
@@ -653,9 +657,8 @@ function analystModelPrompt(harness: NonNullable): Agen
export function createRuntimeTraceModelOwner(
options: RuntimeTraceModelOwnerOptions,
): RuntimeTraceModelOwner {
- // Analyst calls settle one receipt per invocation. Keep retries explicit so a
- // single recorded invocation cannot conceal multiple paid provider requests.
- const retry = Object.freeze({ maxAttempts: 1, ...options.retry })
+ // Runtime retries one transient transport failure with the same idempotent call identity.
+ const retry = Object.freeze({ maxAttempts: 2, ...options.retry })
const sourceProfileDigest = canonicalAgentProfileDigestHex(options.profile)
const callRef = `braid-agent-runtime:${String(
canonicalDigest({
diff --git a/src/adapters/connections/aws-nitro-root-g1.ts b/src/adapters/connections/aws-nitro-root-g1.ts
new file mode 100644
index 0000000..c4dec4e
--- /dev/null
+++ b/src/adapters/connections/aws-nitro-root-g1.ts
@@ -0,0 +1,25 @@
+/**
+ * Official AWS Nitro Enclaves Root-G1 certificate.
+ *
+ * AWS publishes this certificate at
+ * https://aws-nitro-enclaves.amazonaws.com/AWS_NitroEnclaves_Root-G1.zip.
+ * The adapter checks the documented SHA-256 fingerprint before trusting it.
+ */
+export const AWS_NITRO_ENCLAVES_ROOT_G1_PEM = `-----BEGIN CERTIFICATE-----
+MIICETCCAZagAwIBAgIRAPkxdWgbkK/hHUbMtOTn+FYwCgYIKoZIzj0EAwMwSTEL
+MAkGA1UEBhMCVVMxDzANBgNVBAoMBkFtYXpvbjEMMAoGA1UECwwDQVdTMRswGQYD
+VQQDDBJhd3Mubml0cm8tZW5jbGF2ZXMwHhcNMTkxMDI4MTMyODA1WhcNNDkxMDI4
+MTQyODA1WjBJMQswCQYDVQQGEwJVUzEPMA0GA1UECgwGQW1hem9uMQwwCgYDVQQL
+DANBV1MxGzAZBgNVBAMMEmF3cy5uaXRyby1lbmNsYXZlczB2MBAGByqGSM49AgEG
+BSuBBAAiA2IABPwCVOumCMHzaHDimtqQvkY4MpJzbolL//Zy2YlES1BR5TSksfbb
+48C8WBoyt7F2Bw7eEtaaP+ohG2bnUs990d0JX28TcPQXCEPZ3BABIeTPYwEoCWZE
+h8l5YoQwTcU/9KNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUkCW1DdkF
+R+eWw5b6cp3PmanfS5YwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2kAMGYC
+MQCjfy+Rocm9Xue4YnwWmNJVA44fA0P5W2OpYow9OYCVRaEevL8uO1XYru5xtMPW
+rfMCMQCi85sWBbJwKKXdS6BptQFuZbT73o/gBh1qUxl/nNr12UO8Yfwr6wPLb+6N
+IwLz3/Y=
+-----END CERTIFICATE-----`
+
+/** SHA-256 fingerprint documented by AWS for the Root-G1 certificate. */
+export const AWS_NITRO_ENCLAVES_ROOT_G1_SHA256 =
+ 'sha256:641a0321a3e244efe456463195d606317ed7cdcc3c1756e09893f3c68f79bb5b'
diff --git a/src/adapters/connections/nitro-confidential-attestation.ts b/src/adapters/connections/nitro-confidential-attestation.ts
new file mode 100644
index 0000000..8765694
--- /dev/null
+++ b/src/adapters/connections/nitro-confidential-attestation.ts
@@ -0,0 +1,375 @@
+import { createHash, X509Certificate } from 'node:crypto'
+import type {
+ ConfidentialAttestation,
+ ConfidentialAttestationVerifier,
+ ConfidentialExecutionEnvironment,
+ Sha256Digest,
+} from '@tangle-network/agent-interface'
+import { confidentialExecutionVerified, sha256Bytes } from '@tangle-network/agent-interface'
+import type {
+ SandboxTeeAttestationReportLike,
+ TangleConfidentialAttestationVerification,
+ TangleConfidentialAttestationVerifier,
+} from '@tangle-network/agent-provider-tangle'
+import {
+ decodeTangleConfidentialAttestationQuote,
+ encodeTangleConfidentialAttestationQuote,
+} from '@tangle-network/agent-provider-tangle'
+import {
+ createNitroHardwareVerifier,
+ normalizeTeeType,
+ parseNitroAttestationDocument,
+ toHex,
+ verifyAttestation,
+} from '@tangle-network/tcloud-attestation'
+import type { ConfidentialAttestationTrustPolicy, ConnectionRecord } from '../../domain/entities.js'
+import {
+ MAX_CONFIDENTIAL_ATTESTATION_MAX_AGE_SECONDS,
+ MIN_CONFIDENTIAL_ATTESTATION_MAX_AGE_SECONDS,
+} from '../../domain/entities-core.js'
+import {
+ AWS_NITRO_ENCLAVES_ROOT_G1_PEM,
+ AWS_NITRO_ENCLAVES_ROOT_G1_SHA256,
+} from './aws-nitro-root-g1.js'
+
+const MAX_MEASUREMENT_BYTES = 48
+const MIN_NONCE_HEX_CHARS = 64
+const MAX_NONCE_HEX_CHARS = 128
+const MAX_NITRO_TIMESTAMP_SKEW_SECONDS = 60
+const POLICY_ID_PATTERN = /^[A-Za-z][A-Za-z0-9._:-]{0,255}$/u
+const SHA256_DIGEST_PATTERN = /^sha256:[0-9a-f]{64}$/u
+/** The trust policy is public and contains no credential or executable state. */
+export type NitroConfidentialAttestationTrustPolicy = ConfidentialAttestationTrustPolicy
+
+export interface NitroConfidentialAttestationVerifierOptions {
+ /** Unix seconds clock used by freshness and certificate checks. */
+ readonly now?: () => number
+}
+
+export interface NitroConfidentialAttestationVerifiers {
+ readonly policy: NitroConfidentialAttestationTrustPolicy
+ readonly tangle: TangleConfidentialAttestationVerifier
+ readonly canonical: ConfidentialAttestationVerifier
+}
+
+interface ConfiguredConfidentialAttestationVerifiers {
+ readonly policy?: NitroConfidentialAttestationTrustPolicy
+ readonly tangle?: TangleConfidentialAttestationVerifier
+ readonly canonical?: ConfidentialAttestationVerifier
+}
+
+interface RawNitroReport {
+ readonly tee_type: string
+ readonly evidence: readonly number[]
+ readonly measurement: readonly number[]
+ readonly timestamp: number
+}
+
+interface VerifiedNitroEvidence {
+ readonly measurement: Sha256Digest
+ readonly providerKeyId: string
+ readonly providerSignature: string
+}
+
+/**
+ * Build the one Nitro trust path used for provider admission and replay.
+ *
+ * The root is pinned before any verifier callback is returned. The callback
+ * never accepts a missing policy, an unverified quote, or a copied signature.
+ */
+export function createNitroConfidentialAttestationVerifiers(
+ policy: NitroConfidentialAttestationTrustPolicy,
+ options: NitroConfidentialAttestationVerifierOptions = {},
+): NitroConfidentialAttestationVerifiers {
+ const normalizedPolicy = normalizeNitroConfidentialAttestationTrustPolicy(policy)
+ const root = assertOfficialNitroRoot()
+ const nowSeconds = options.now ?? (() => Math.floor(Date.now() / 1000))
+
+ const verifyEvidence = (
+ report: RawNitroReport,
+ attestation: ConfidentialAttestation,
+ expected: ConfidentialExecutionEnvironment,
+ ): VerifiedNitroEvidence | null => {
+ if (!canonicalBindingsMatch(attestation, expected)) return null
+ if (!normalizedPolicy.acceptedPolicyIds.includes(attestation.policy)) return null
+ if (!isCanonicalNonce(attestation.nonce)) return null
+
+ const measurement = sha256Bytes(Uint8Array.from(report.measurement))
+ if (
+ measurement !== attestation.measurement ||
+ !normalizedPolicy.acceptedMeasurements.includes(measurement)
+ ) {
+ return null
+ }
+ if (attestation.verifiedAt !== verifiedAtFor(report.timestamp)) return null
+
+ let document: ReturnType
+ try {
+ document = parseNitroAttestationDocument(Uint8Array.from(report.evidence))
+ } catch {
+ return null
+ }
+ if (
+ document.nonce === undefined ||
+ toHex(document.nonce) !== attestation.nonce ||
+ document.certificate.length === 0 ||
+ document.signature.length === 0
+ ) {
+ return null
+ }
+
+ const now = nowSeconds()
+ if (!Number.isSafeInteger(now) || now < 0) return null
+ const signedTimestamp = Math.floor(document.timestamp / 1000)
+ const signedMaxAge = normalizedPolicy.maxAgeSeconds
+ const signedMaxFutureSkew = MAX_NITRO_TIMESTAMP_SKEW_SECONDS
+ if (
+ !Number.isSafeInteger(signedTimestamp) ||
+ signedTimestamp > now + signedMaxFutureSkew ||
+ now - signedTimestamp > signedMaxAge
+ ) {
+ return null
+ }
+ const result = verifyAttestation(
+ {
+ tee_type: report.tee_type,
+ evidence: [...report.evidence],
+ measurement: [...report.measurement],
+ timestamp: report.timestamp,
+ },
+ {
+ acceptedTeeTypes: ['nitro'],
+ acceptedMeasurements: [toHex(Uint8Array.from(report.measurement))],
+ maxAgeSeconds: normalizedPolicy.maxAgeSeconds,
+ now,
+ // Do not pass expectedNonce. tcloud-attestation pads string nonces to
+ // 64 bytes, while AWS Nitro preserves the caller's 32-byte nonce.
+ hardwareVerifier: createNitroHardwareVerifier({
+ trustedRootCertificates: [root.raw],
+ nowMs: now * 1000,
+ maxTimestampSkewSeconds: signedMaxFutureSkew,
+ }),
+ },
+ )
+ if (!result.valid || result.attestation?.teeType !== 'nitro') return null
+
+ const leaf = leafCertificate(document.certificate)
+ if (leaf === null || equalBytes(leaf.raw, root.raw)) return null
+ return {
+ measurement,
+ providerKeyId: digestBytes(leaf.raw),
+ providerSignature: digestBytes(document.signature),
+ }
+ }
+
+ const tangle: TangleConfidentialAttestationVerifier = async ({
+ report,
+ expected,
+ attestation,
+ }): Promise => {
+ try {
+ const parsed = parseRawNitroReport(report)
+ if (!quoteMatchesReport(attestation.quote, parsed)) return null
+ const verified = verifyEvidence(parsed, attestation, expected)
+ if (verified === null) return null
+ return verified
+ } catch {
+ return null
+ }
+ }
+
+ const canonical: ConfidentialAttestationVerifier = (attestation, expected): boolean => {
+ try {
+ const report = decodeNitroQuote(attestation.quote)
+ const verified = verifyEvidence(report, attestation, expected)
+ return (
+ verified !== null &&
+ attestation.providerKeyId === verified.providerKeyId &&
+ attestation.providerSignature === verified.providerSignature
+ )
+ } catch {
+ return false
+ }
+ }
+
+ return Object.freeze({
+ policy: normalizedPolicy,
+ tangle,
+ canonical,
+ })
+}
+
+/** Resolve a policy on the selected connection, then fall back to test hooks. */
+export function nitroVerifiersForConnection(
+ record: ConnectionRecord,
+ options: {
+ readonly tangleConfidentialAttestationPolicy?: NitroConfidentialAttestationTrustPolicy
+ readonly tangleConfidentialAttestationVerifier?: TangleConfidentialAttestationVerifier
+ readonly confidentialAttestationVerifier?: ConfidentialAttestationVerifier
+ },
+): ConfiguredConfidentialAttestationVerifiers | undefined {
+ if (
+ options.tangleConfidentialAttestationVerifier !== undefined ||
+ options.confidentialAttestationVerifier !== undefined
+ ) {
+ return Object.freeze({
+ ...(options.tangleConfidentialAttestationVerifier === undefined
+ ? {}
+ : { tangle: options.tangleConfidentialAttestationVerifier }),
+ ...(options.confidentialAttestationVerifier === undefined
+ ? {}
+ : { canonical: options.confidentialAttestationVerifier }),
+ })
+ }
+ const policy = options.tangleConfidentialAttestationPolicy ?? record.confidentialAttestationPolicy
+ return policy === undefined ? undefined : createNitroConfidentialAttestationVerifiers(policy)
+}
+
+/** Validate and freeze a startup trust policy before it reaches provider code. */
+export function normalizeNitroConfidentialAttestationTrustPolicy(
+ policy: NitroConfidentialAttestationTrustPolicy,
+): NitroConfidentialAttestationTrustPolicy {
+ if (policy === null || typeof policy !== 'object' || Array.isArray(policy)) {
+ throw new TypeError('Nitro confidential attestation policy must be an object')
+ }
+ const keys = Object.keys(policy)
+ if (
+ keys.some(
+ (key) =>
+ key !== 'acceptedMeasurements' && key !== 'acceptedPolicyIds' && key !== 'maxAgeSeconds',
+ )
+ ) {
+ throw new TypeError('Nitro confidential attestation policy contains an unsupported field')
+ }
+ const acceptedMeasurements = policy.acceptedMeasurements
+ const acceptedPolicyIds = policy.acceptedPolicyIds
+ if (
+ !Array.isArray(acceptedMeasurements) ||
+ acceptedMeasurements.length === 0 ||
+ acceptedMeasurements.length > 256 ||
+ acceptedMeasurements.some((measurement) => !SHA256_DIGEST_PATTERN.test(measurement))
+ ) {
+ throw new TypeError(
+ 'Nitro confidential attestation policy requires one to 256 canonical SHA-256 measurements',
+ )
+ }
+ if (new Set(acceptedMeasurements).size !== acceptedMeasurements.length) {
+ throw new TypeError('Nitro confidential attestation policy measurements must be unique')
+ }
+ if (
+ !Array.isArray(acceptedPolicyIds) ||
+ acceptedPolicyIds.length === 0 ||
+ acceptedPolicyIds.length > 256 ||
+ acceptedPolicyIds.some((value) => !POLICY_ID_PATTERN.test(value))
+ ) {
+ throw new TypeError(
+ 'Nitro confidential attestation policy requires one to 256 canonical policy ids',
+ )
+ }
+ if (new Set(acceptedPolicyIds).size !== acceptedPolicyIds.length) {
+ throw new TypeError('Nitro confidential attestation policy ids must be unique')
+ }
+ if (
+ !Number.isSafeInteger(policy.maxAgeSeconds) ||
+ policy.maxAgeSeconds < MIN_CONFIDENTIAL_ATTESTATION_MAX_AGE_SECONDS ||
+ policy.maxAgeSeconds > MAX_CONFIDENTIAL_ATTESTATION_MAX_AGE_SECONDS
+ ) {
+ throw new TypeError(
+ `Nitro confidential attestation maxAgeSeconds must be an integer from ${MIN_CONFIDENTIAL_ATTESTATION_MAX_AGE_SECONDS} to ${MAX_CONFIDENTIAL_ATTESTATION_MAX_AGE_SECONDS}`,
+ )
+ }
+ const normalized = {
+ acceptedMeasurements: Object.freeze([...acceptedMeasurements]),
+ acceptedPolicyIds: Object.freeze([...acceptedPolicyIds]),
+ maxAgeSeconds: policy.maxAgeSeconds,
+ }
+ return Object.freeze(normalized)
+}
+
+function canonicalBindingsMatch(
+ attestation: ConfidentialAttestation,
+ expected: ConfidentialExecutionEnvironment,
+): boolean {
+ return confidentialExecutionVerified({
+ request: {
+ requested: true,
+ nonce: attestation.nonce,
+ policy: attestation.policy,
+ profileDigest: attestation.profileDigest,
+ },
+ environment: expected,
+ attestation,
+ verifyProviderAttestation: () => true,
+ })
+}
+
+function parseRawNitroReport(value: SandboxTeeAttestationReportLike): RawNitroReport {
+ const quote = encodeTangleConfidentialAttestationQuote(value)
+ if (quote === undefined)
+ throw new TypeError('Nitro attestation report is outside the provider bounds')
+ const report = decodeTangleConfidentialAttestationQuote(quote)
+ if (report === undefined || normalizeTeeType(report.tee_type) !== 'nitro') {
+ throw new TypeError('Nitro attestation report must declare tee_type=nitro')
+ }
+ if (report.measurement.length !== MAX_MEASUREMENT_BYTES) {
+ throw new TypeError('Nitro attestation measurement must be 48 bytes')
+ }
+ return report
+}
+
+function quoteMatchesReport(quote: string, report: RawNitroReport): boolean {
+ try {
+ const decoded = decodeTangleConfidentialAttestationQuote(quote)
+ return decoded !== undefined && JSON.stringify(report) === JSON.stringify(decoded)
+ } catch {
+ return false
+ }
+}
+
+function decodeNitroQuote(quote: string): RawNitroReport {
+ const report = decodeTangleConfidentialAttestationQuote(quote)
+ if (report === undefined) throw new TypeError('Nitro quote is not a canonical Tangle TEE quote')
+ return parseRawNitroReport(report)
+}
+
+function isCanonicalNonce(value: string): boolean {
+ return (
+ (value.length === MIN_NONCE_HEX_CHARS || value.length === MAX_NONCE_HEX_CHARS) &&
+ /^[0-9a-f]+$/u.test(value)
+ )
+}
+
+function verifiedAtFor(timestamp: number): string {
+ const date = new Date(timestamp * 1000)
+ if (!Number.isFinite(date.getTime()))
+ throw new TypeError('Nitro timestamp is outside date bounds')
+ return date.toISOString()
+}
+
+function leafCertificate(bytes: Uint8Array): X509Certificate | null {
+ try {
+ return new X509Certificate(bytes)
+ } catch {
+ return null
+ }
+}
+
+function assertOfficialNitroRoot(): X509Certificate {
+ const root = new X509Certificate(AWS_NITRO_ENCLAVES_ROOT_G1_PEM)
+ const fingerprint = digestBytes(root.raw)
+ if (fingerprint !== AWS_NITRO_ENCLAVES_ROOT_G1_SHA256) {
+ throw new Error('The bundled AWS Nitro Root-G1 certificate fingerprint does not match AWS')
+ }
+ if (!root.verify(root.publicKey)) {
+ throw new Error('The bundled AWS Nitro Root-G1 certificate is not self-signed')
+ }
+ return root
+}
+
+function digestBytes(value: Uint8Array): Sha256Digest {
+ return `sha256:${createHash('sha256').update(value).digest('hex')}`
+}
+
+function equalBytes(left: Uint8Array, right: Uint8Array): boolean {
+ return left.length === right.length && left.every((byte, index) => byte === right[index])
+}
diff --git a/src/adapters/connections/production-connection-providers.ts b/src/adapters/connections/production-connection-providers.ts
index a20a1b8..28d043a 100644
--- a/src/adapters/connections/production-connection-providers.ts
+++ b/src/adapters/connections/production-connection-providers.ts
@@ -1,4 +1,12 @@
-import type { AgentEnvironmentCapabilities } from '@tangle-network/agent-interface/environment-provider'
+import type {
+ AgentWorkspaceBranching,
+ AgentWorkspaceBranchingProvider,
+} from '@tangle-network/agent-interface'
+import type {
+ AgentEnvironment,
+ AgentEnvironmentCapabilities,
+ AgentEnvironmentProvider,
+} from '@tangle-network/agent-interface/environment-provider'
import { createCliBridgeProvider } from '@tangle-network/agent-provider-cli-bridge'
import {
createTangleProvider,
@@ -9,6 +17,7 @@ import { Sandbox } from '@tangle-network/sandbox'
import { ConnectionError } from '../../app/connection-errors.js'
import type { ConnectionRecord } from '../../domain/entities.js'
import { environmentSupportsInteractionResponse } from '../../ports/execution.js'
+import { nitroVerifiersForConnection } from './nitro-confidential-attestation.js'
import { readConnectionCredential } from './production-connection-credentials.js'
import { connectionEndpoint } from './production-connection-endpoints.js'
import type {
@@ -44,6 +53,58 @@ export async function createTangleSandboxClient(
return new Sandbox({ baseUrl: endpoint, apiKey }) as unknown as SandboxClientLike
}
+/** Construct the selected Tangle provider without creating or retaining an environment. */
+export async function createTangleEnvironmentProvider(
+ record: ConnectionRecord,
+ options: ProductionConnectionOptions,
+ signal?: AbortSignal,
+): Promise {
+ const client = await createTangleSandboxClient(record, options, signal)
+ const confidential = nitroVerifiersForConnection(record, options)
+ return createTangleProvider({
+ client,
+ name: 'tangle-sandbox',
+ ...(confidential?.tangle === undefined
+ ? {}
+ : { confidentialAttestationVerifier: confidential.tangle }),
+ })
+}
+
+/**
+ * Create a restart-safe source lookup without retaining a live environment.
+ *
+ * The provider constructs the source-scoped handle and owns every Sandbox call.
+ * Braid retains only this lazy factory, so restart recovery cannot use stale state.
+ */
+export function createTangleWorkspaceBranchingProvider(
+ record: ConnectionRecord,
+ options: ProductionConnectionOptions,
+): AgentWorkspaceBranchingProvider {
+ return Object.freeze({
+ async forEnvironment(
+ sourceEnvironmentId: string,
+ operation?: { readonly signal?: AbortSignal },
+ ): Promise {
+ const provider = await createTangleEnvironmentProvider(record, options, operation?.signal)
+ const branching = provider.workspaceBranching
+ if (branching === undefined) return null
+ return branching.forEnvironment(sourceEnvironmentId, operation)
+ },
+ })
+}
+
+/** Reconstruct one provider environment for an independent workspace check. */
+export async function getTangleSandboxEnvironment(
+ record: ConnectionRecord,
+ options: ProductionConnectionOptions,
+ environmentId: string,
+ signal?: AbortSignal,
+): Promise {
+ const provider = await createTangleEnvironmentProvider(record, options, signal)
+ if (provider.get === undefined) return null
+ return provider.get(environmentId, signal === undefined ? undefined : { signal })
+}
+
export async function capabilitiesForConnection(
record: ConnectionRecord,
options: ProductionConnectionOptions,
@@ -67,9 +128,28 @@ export async function capabilitiesForConnection(
list: false,
})
case 'tangle-sandbox': {
- const reported = options.sandboxClient
- ? await createTangleProvider({ client: options.sandboxClient }).capabilities()
- : defaultTangleSandboxCapabilities()
+ const confidential = nitroVerifiersForConnection(record, options)
+ const reported =
+ options.sandboxClient === undefined
+ ? {
+ ...defaultTangleSandboxCapabilities(),
+ branching: {
+ checkpoint: false,
+ fork: false,
+ retrySafe: false,
+ lookup: false,
+ cleanup: false,
+ },
+ confidential: false,
+ }
+ : await createTangleProvider({
+ client: options.sandboxClient,
+ ...(confidential?.tangle === undefined
+ ? {}
+ : {
+ confidentialAttestationVerifier: confidential.tangle,
+ }),
+ }).capabilities()
const environment = tangleConnectionCapabilities(
record,
reported,
diff --git a/src/adapters/connections/production-connection-types.ts b/src/adapters/connections/production-connection-types.ts
index 561de77..879bc2b 100644
--- a/src/adapters/connections/production-connection-types.ts
+++ b/src/adapters/connections/production-connection-types.ts
@@ -1,11 +1,22 @@
-import type { AgentExactRunControlRef, AgentProfile } from '@tangle-network/agent-interface'
+import type {
+ AgentExactRunControlRef,
+ AgentProfile,
+ ConfidentialAttestationVerifier,
+} from '@tangle-network/agent-interface'
import type { AgentEnvironmentCapabilities } from '@tangle-network/agent-interface/environment-provider'
-import type { SandboxClientLike } from '@tangle-network/agent-provider-tangle'
+import type {
+ SandboxClientLike,
+ TangleConfidentialAttestationVerifier,
+} from '@tangle-network/agent-provider-tangle'
+
+export type { TangleConfidentialAttestationVerifier } from '@tangle-network/agent-provider-tangle'
+
import type {
BridgeModelCredential,
RouterTransportConfig,
} from '@tangle-network/agent-runtime/kernel'
import type {
+ ConfidentialAttestationTrustPolicy,
ConnectionHealth,
ConnectionKind,
ConnectionModelVerification,
@@ -108,6 +119,12 @@ export interface ProductionConnectionOptions {
readonly sandboxClient?: SandboxClientLike
readonly sandboxClientFactory?: SandboxClientFactory
readonly tangleRetainedControlLookup?: TangleRetainedControlLookup
+ /** Persisted, non-secret Nitro trust policy for the selected Tangle connection. */
+ readonly tangleConfidentialAttestationPolicy?: ConfidentialAttestationTrustPolicy
+ /** Trusted provider-key and measurement verification for confidential forks. */
+ readonly tangleConfidentialAttestationVerifier?: TangleConfidentialAttestationVerifier
+ /** Canonical Braid-side attestation verifier for returned fork evidence. */
+ readonly confidentialAttestationVerifier?: ConfidentialAttestationVerifier
readonly now?: () => IsoDateTime
}
diff --git a/src/adapters/connections/production-connections.ts b/src/adapters/connections/production-connections.ts
index d50eee9..e9d00d3 100644
--- a/src/adapters/connections/production-connections.ts
+++ b/src/adapters/connections/production-connections.ts
@@ -8,13 +8,27 @@ import type {
ProductionConnectionOptions,
} from './production-connection-types.js'
+export type {
+ NitroConfidentialAttestationTrustPolicy,
+ NitroConfidentialAttestationVerifierOptions,
+ NitroConfidentialAttestationVerifiers,
+} from './nitro-confidential-attestation.js'
+export {
+ createNitroConfidentialAttestationVerifiers,
+ normalizeNitroConfidentialAttestationTrustPolicy,
+} from './nitro-confidential-attestation.js'
export { readConnectionCredential } from './production-connection-credentials.js'
export {
connectionEndpoint,
DEFAULT_TANGLE_INFERENCE_ENDPOINT,
normalizeCliBridgeRuntimeBaseUrl,
} from './production-connection-endpoints.js'
-export { createTangleSandboxClient } from './production-connection-providers.js'
+export {
+ createTangleEnvironmentProvider,
+ createTangleSandboxClient,
+ createTangleWorkspaceBranchingProvider,
+ getTangleSandboxEnvironment,
+} from './production-connection-providers.js'
export {
type ConnectionCapabilityAction,
type ConnectionCapabilityReport,
@@ -27,6 +41,7 @@ export {
type ProductionConnectionOptions,
type SandboxClientFactory,
type SandboxClientFactoryInput,
+ type TangleConfidentialAttestationVerifier,
type TangleRetainedControlLookup,
type TangleRetainedControlLookupInput,
} from './production-connection-types.js'
diff --git a/src/adapters/runtime/agent-runtime-execution.ts b/src/adapters/runtime/agent-runtime-execution.ts
index 0dbea01..157c807 100644
--- a/src/adapters/runtime/agent-runtime-execution.ts
+++ b/src/adapters/runtime/agent-runtime-execution.ts
@@ -1,3 +1,7 @@
+import type {
+ AgentWorkspaceBranchingProvider,
+ ConfidentialAttestationVerifier,
+} from '@tangle-network/agent-interface'
import type { RuntimeStreamEvent } from '@tangle-network/agent-runtime'
import type { AgentTurnBackend, Executor } from '@tangle-network/agent-runtime/kernel'
import { canonicalDigest } from '../../domain/canonical.js'
@@ -43,6 +47,8 @@ export type AgentTurnCancelResolver = (
export interface AgentRuntimeExecutionOptions {
readonly admissionMode?: 'sync' | 'async'
+ readonly workspaceBranchingProvider?: AgentWorkspaceBranchingProvider
+ readonly confidentialAttestationVerifier?: ConfidentialAttestationVerifier
}
export class AgentRuntimeExecutionPort implements ExecutionPort {
@@ -56,6 +62,8 @@ export class AgentRuntimeExecutionPort implements ExecutionPort {
>()
readonly #preparedOrder: string[] = []
readonly #capabilitySnapshot: RunCapabilities
+ readonly workspaceBranchingProvider?: AgentWorkspaceBranchingProvider
+ readonly confidentialAttestationVerifier?: ConfidentialAttestationVerifier
static readonly #MAX_PREPARED = 128
@@ -78,6 +86,10 @@ export class AgentRuntimeExecutionPort implements ExecutionPort {
streaming: { ...UNKNOWN_RUN_CAPABILITIES.streaming, live: true },
}
}
+ if (options.workspaceBranchingProvider !== undefined)
+ this.workspaceBranchingProvider = options.workspaceBranchingProvider
+ if (options.confidentialAttestationVerifier !== undefined)
+ this.confidentialAttestationVerifier = options.confidentialAttestationVerifier
}
capabilities(): RunCapabilities {
@@ -211,7 +223,12 @@ export class AgentRuntimeExecutionPort implements ExecutionPort {
let terminal: Extract | undefined
for await (const event of streamAgentTurn(
runtimeBackend,
- { prompt: input.text },
+ {
+ prompt: input.text,
+ ...(input.contextTransfer === undefined
+ ? {}
+ : { contextTransfer: input.contextTransfer }),
+ },
{
signal: localAbort.signal,
preserveToolParts: true,
@@ -406,5 +423,6 @@ function admissionKey(input: ExecuteTurnInput, profileDigest: string): string {
mode: input.mode ?? null,
sessionId: input.sessionId ?? null,
contextBoundary: input.contextBoundary ?? null,
+ contextTransfer: input.contextTransfer ?? null,
})
}
diff --git a/src/adapters/runtime/cli-bridge-context-transfer.ts b/src/adapters/runtime/cli-bridge-context-transfer.ts
new file mode 100644
index 0000000..5e9a50e
--- /dev/null
+++ b/src/adapters/runtime/cli-bridge-context-transfer.ts
@@ -0,0 +1,65 @@
+import {
+ ContextTransferResultSchema,
+ type AgentEnvironmentCapabilities,
+ type ContextTransferRequest,
+ type ContextTransferResult,
+} from '@tangle-network/agent-interface'
+import type { CliBridgeProvider } from '@tangle-network/agent-provider-cli-bridge'
+import type { ContextTransferExecutionPort } from '../../ports/execution.js'
+
+export interface CliBridgeContextTransferResolution {
+ readonly provider: CliBridgeProvider
+ readonly capabilities: AgentEnvironmentCapabilities
+}
+
+export interface CliBridgeContextTransferOptions {
+ readonly resolve: (request: ContextTransferRequest) => Promise
+}
+
+/** Route portable context through the destination provider that owns admission. */
+export function createCliBridgeContextTransferPort(
+ options: CliBridgeContextTransferOptions,
+): ContextTransferExecutionPort {
+ return Object.freeze({
+ lookup: async (request: ContextTransferRequest) => {
+ const resolved = await options.resolve(request)
+ if (!supportsContextTransfer(resolved, request)) return undefined
+ return resolved.provider.contextTransfer?.lookup(request)
+ },
+ transfer: async (request: ContextTransferRequest) => {
+ const resolved = await options.resolve(request)
+ if (!supportsContextTransfer(resolved, request)) {
+ return unavailableContextTransfer(request)
+ }
+ return (
+ (await resolved.provider.contextTransfer?.transfer(request)) ??
+ unavailableContextTransfer(request)
+ )
+ },
+ })
+}
+
+function supportsContextTransfer(
+ resolved: CliBridgeContextTransferResolution,
+ request: ContextTransferRequest,
+): boolean {
+ const capability = resolved.capabilities.contextTransfer
+ return (
+ request.plan.destination.provider === resolved.provider.name &&
+ capability?.freshSession === true &&
+ capability.requestIdempotency === true &&
+ capability.lookup === true &&
+ resolved.provider.contextTransfer?.transfer !== undefined &&
+ resolved.provider.contextTransfer.lookup !== undefined
+ )
+}
+
+function unavailableContextTransfer(request: ContextTransferRequest): ContextTransferResult {
+ return ContextTransferResultSchema.parse({
+ status: 'unknown',
+ operationId: request.operationId,
+ requestDigest: request.requestDigest,
+ message: 'The selected CLI Bridge route does not support portable context transfer',
+ retryable: false,
+ })
+}
diff --git a/src/adapters/runtime/cli-bridge-retained-execution.ts b/src/adapters/runtime/cli-bridge-retained-execution.ts
index 0530862..7574824 100644
--- a/src/adapters/runtime/cli-bridge-retained-execution.ts
+++ b/src/adapters/runtime/cli-bridge-retained-execution.ts
@@ -1,10 +1,15 @@
import type { AgentExactRunControlRef } from '@tangle-network/agent-interface'
-import type { ExecuteTurnInput, RetainedExecutionRecoveryContext } from '../../ports/execution.js'
+import type {
+ ContextTransferExecutionPort,
+ ExecuteTurnInput,
+ RetainedExecutionRecoveryContext,
+} from '../../ports/execution.js'
import { createCliBridgeRetainedPlan } from './cli-bridge-retained-run.js'
import type { PreparedCliBridgeConnection } from './production-cli-bridge-backend.js'
import { RetainedExecutionPort } from './retained-execution.js'
export interface CliBridgeRetainedExecutionOptions {
+ readonly context?: ContextTransferExecutionPort
readonly resolve: (input: ExecuteTurnInput) => Promise
readonly recover: (
input: {
@@ -18,10 +23,14 @@ export interface CliBridgeRetainedExecutionOptions {
/** Braid's durable CLI-Bridge path. CLI-Bridge owns the job; the shared port owns readers. */
export class CliBridgeRetainedExecutionPort extends RetainedExecutionPort {
+ readonly context?: ContextTransferExecutionPort
+
constructor(options: CliBridgeRetainedExecutionOptions) {
super({
resolve: async (input) =>
createCliBridgeRetainedPlan(await options.resolve(input), input.runId),
+ continue: async (input, controlRef) =>
+ createCliBridgeRetainedPlan(await options.resolve(input), input.runId, controlRef),
recover: async ({ runId, providerSessionId, controlRef, signal, ...recovery }) =>
createCliBridgeRetainedPlan(
await options.recover({
@@ -36,5 +45,6 @@ export class CliBridgeRetainedExecutionPort extends RetainedExecutionPort {
recovery,
),
})
+ if (options.context !== undefined) this.context = options.context
}
}
diff --git a/src/adapters/runtime/cli-bridge-retained-run.ts b/src/adapters/runtime/cli-bridge-retained-run.ts
index 3e40ffe..71c5134 100644
--- a/src/adapters/runtime/cli-bridge-retained-run.ts
+++ b/src/adapters/runtime/cli-bridge-retained-run.ts
@@ -63,14 +63,18 @@ export async function createCliBridgeRetainedPlan(
throw new Error('retained CLI Bridge control reference conflicts with the persisted run')
}
const exactControlRef = controlRef ?? persistedControlRef
+ const contextDestination = prepared.contextTransfer?.plan.destination
const environmentId =
exactControlRef?.environmentId ??
- (admission?.phase === 'environment' ? admission.environmentId : undefined)
+ (admission?.phase === 'environment' ? admission.environmentId : undefined) ??
+ contextDestination?.environmentId
const executionId =
exactControlRef?.executionId ??
(admission?.phase === 'intent' || admission?.phase === 'environment'
? admission.executionId
- : safeExecutionId(runId))
+ : undefined) ??
+ contextDestination?.executionId ??
+ safeExecutionId(runId)
const providerSessionId =
exactControlRef?.sessionId ??
(admission?.phase === 'intent' || admission?.phase === 'environment'
@@ -136,12 +140,16 @@ export async function startCliBridgeRetainedRun(
backend: plan.prepared.runner,
workspace: { cwd: plan.prepared.workspace },
idempotencyKey: plan.environmentIdempotencyKey,
+ ...(input.contextTransfer === undefined
+ ? {}
+ : { requestedId: input.contextTransfer.plan.destination.environmentId }),
},
turn: {
prompt: input.text,
turnId: safeExecutionId(input.operationId),
interactions: input.interactions ?? {},
signal: input.signal,
+ ...(input.contextTransfer === undefined ? {} : { contextTransfer: input.contextTransfer }),
},
identity: {
sessionId: plan.prepared.providerSessionId,
@@ -179,12 +187,20 @@ async function recoverCliBridgeRetainedRun(
backend: plan.prepared.runner,
workspace: { cwd: plan.prepared.workspace },
idempotencyKey: admission.idempotencyKey,
+ ...(plan.prepared.contextTransfer === undefined
+ ? {}
+ : {
+ requestedId: plan.prepared.contextTransfer.plan.destination.environmentId,
+ }),
},
turn: {
prompt: input.receipt.requested.text,
turnId: admission.turnId,
interactions: input.receipt.requested.interactions ?? {},
...(input.signal === undefined ? {} : { signal: input.signal }),
+ ...(plan.prepared.contextTransfer === undefined
+ ? {}
+ : { contextTransfer: plan.prepared.contextTransfer }),
},
identity: {
sessionId: admission.sessionId,
diff --git a/src/adapters/runtime/lazy-execution.ts b/src/adapters/runtime/lazy-execution.ts
new file mode 100644
index 0000000..dfe90a1
--- /dev/null
+++ b/src/adapters/runtime/lazy-execution.ts
@@ -0,0 +1,165 @@
+import type {
+ AgentEnvironmentCapabilities,
+ NativeContextBoundaryProof,
+} from '@tangle-network/agent-interface'
+import type { BraidRuntimeEvent, RuntimeEventEnvelope } from '../../domain/runtime-events.js'
+import {
+ type CancelRunInput,
+ type ControlAcknowledgement,
+ type ExecuteTurnInput,
+ type ExecutionAdmission,
+ type ExecutionPort,
+ type ProviderRunSnapshot,
+ type RetainedExecutionRecoveryContext,
+ type RunCapabilities,
+ UNKNOWN_RUN_CAPABILITIES,
+} from '../../ports/execution.js'
+
+type StatusInput = Parameters>[0]
+type ReconnectInput = Parameters>[0]
+type ReconnectEvent =
+ Awaited>> extends AsyncIterable
+ ? Event
+ : never
+type DetachInput = Parameters>[0]
+type SteerInput = Parameters>[0]
+type NativeBoundaryInput = Parameters>[0]
+
+export interface LazyExecutionOptions {
+ readonly load: () => Promise
+}
+
+/**
+ * Defers provider construction until a run needs it.
+ *
+ * Terminal startup can restore local state without loading provider packages.
+ * The first provider operation still uses the exact production port.
+ */
+export class LazyExecutionPort implements ExecutionPort {
+ readonly admissionMode = 'async' as const
+ readonly #loadPort: () => Promise
+ #portPromise: Promise | undefined
+ #loadedPort: ExecutionPort | undefined
+
+ constructor(options: LazyExecutionOptions) {
+ this.#loadPort = options.load
+ }
+
+ readonly capabilities = (input: ExecuteTurnInput): RunCapabilities | Promise =>
+ this.#load().then((port) => {
+ const capabilities = port.capabilities
+ if (capabilities === undefined) return UNKNOWN_RUN_CAPABILITIES
+ if (typeof capabilities === 'function') return capabilities(input)
+ return {
+ ...UNKNOWN_RUN_CAPABILITIES,
+ controls: { ...UNKNOWN_RUN_CAPABILITIES.controls, cancel: capabilities.cancel },
+ }
+ })
+
+ async admit(input: ExecuteTurnInput): Promise {
+ const port = await this.#load()
+ if (port.admit === undefined)
+ throw new Error('The selected execution port does not support admission')
+ return port.admit(input)
+ }
+
+ async *streamTurn(
+ input: ExecuteTurnInput,
+ ): AsyncGenerator {
+ const port = await this.#load()
+ yield* port.streamTurn(input)
+ }
+
+ async cancelRun(
+ input: CancelRunInput & { readonly reason?: string; readonly signal?: AbortSignal },
+ ): Promise {
+ const port = await this.#load()
+ if (port.cancelRun === undefined)
+ throw new Error('The selected execution port does not support cancellation')
+ return port.cancelRun(input)
+ }
+
+ async detachRun(input: DetachInput): Promise {
+ const port = await this.#load()
+ if (port.detachRun === undefined)
+ throw new Error('The selected execution port does not support detachment')
+ return port.detachRun(input)
+ }
+
+ async steerRun(input: SteerInput): Promise {
+ const port = await this.#load()
+ if (port.steerRun === undefined)
+ throw new Error('The selected execution port does not support steering')
+ return port.steerRun(input)
+ }
+
+ async status(input: StatusInput): Promise {
+ const port = await this.#load()
+ if (port.status === undefined)
+ throw new Error('The selected execution port does not support status')
+ return port.status(input)
+ }
+
+ async respondInteraction(input: {
+ readonly command: import('@tangle-network/agent-interface').InteractionResponseCommand
+ readonly signal?: AbortSignal
+ readonly recovery?: RetainedExecutionRecoveryContext
+ }): Promise {
+ const port = await this.#load()
+ if (port.respondInteraction === undefined)
+ throw new Error('The selected execution port does not support interaction responses')
+ return port.respondInteraction(input)
+ }
+
+ async *reconnect(input: ReconnectInput): AsyncGenerator {
+ const port = await this.#load()
+ if (port.reconnect === undefined)
+ throw new Error('The selected execution port does not support reconnection')
+ yield* port.reconnect(input)
+ }
+
+ async nativeBoundary(input: NativeBoundaryInput): Promise {
+ const port = await this.#load()
+ if (port.nativeBoundary === undefined) return null
+ return port.nativeBoundary(input)
+ }
+
+ async environmentCapabilities(): Promise {
+ const port = await this.#load()
+ if (port.environmentCapabilities === undefined)
+ throw new Error('The selected execution port does not publish environment capabilities')
+ return port.environmentCapabilities()
+ }
+
+ get context(): ExecutionPort['context'] {
+ return this.#loadedPort?.context
+ }
+
+ get contextTransfer(): ExecutionPort['contextTransfer'] {
+ return this.#loadedPort?.contextTransfer
+ }
+
+ get workspaceBranching(): ExecutionPort['workspaceBranching'] {
+ return this.#loadedPort?.workspaceBranching
+ }
+
+ get workspaceBranchingProvider(): ExecutionPort['workspaceBranchingProvider'] {
+ return this.#loadedPort?.workspaceBranchingProvider
+ }
+
+ get confidentialAttestationVerifier(): ExecutionPort['confidentialAttestationVerifier'] {
+ return this.#loadedPort?.confidentialAttestationVerifier
+ }
+
+ get provider(): ExecutionPort['provider'] {
+ return this.#loadedPort?.provider
+ }
+
+ #load(): Promise {
+ this.#portPromise ??= this.#loadPort().then((port) => {
+ this.#loadedPort = port
+ return port
+ })
+ return this.#portPromise
+ }
+}
diff --git a/src/adapters/runtime/mode-routing-execution.ts b/src/adapters/runtime/mode-routing-execution.ts
index 0ea4840..dea4d95 100644
--- a/src/adapters/runtime/mode-routing-execution.ts
+++ b/src/adapters/runtime/mode-routing-execution.ts
@@ -35,6 +35,14 @@ export class ModeRoutingExecutionPort implements ExecutionPort {
readonly admissionMode: 'sync' | 'async'
readonly capabilities: NonNullable
readonly environmentCapabilities?: NonNullable
+ readonly context?: NonNullable
+ readonly contextTransfer?: NonNullable
+ readonly workspaceBranching?: NonNullable
+ readonly workspaceBranchingProvider?: NonNullable
+ readonly confidentialAttestationVerifier?: NonNullable<
+ ExecutionPort['confidentialAttestationVerifier']
+ >
+ readonly provider?: string
constructor(options: ModeRoutingExecutionOptions) {
this.#headless = options.headless
@@ -48,6 +56,24 @@ export class ModeRoutingExecutionPort implements ExecutionPort {
if (options.headless.environmentCapabilities !== undefined) {
this.environmentCapabilities = options.headless.environmentCapabilities.bind(options.headless)
}
+ const context = options.headless.context ?? options.interactive.context
+ if (context !== undefined) this.context = context
+ const contextTransfer = options.headless.contextTransfer ?? options.interactive.contextTransfer
+ if (contextTransfer !== undefined) this.contextTransfer = contextTransfer
+ const workspaceBranching =
+ options.headless.workspaceBranching ?? options.interactive.workspaceBranching
+ if (workspaceBranching !== undefined) this.workspaceBranching = workspaceBranching
+ const workspaceBranchingProvider =
+ options.headless.workspaceBranchingProvider ?? options.interactive.workspaceBranchingProvider
+ if (workspaceBranchingProvider !== undefined)
+ this.workspaceBranchingProvider = workspaceBranchingProvider
+ const confidentialAttestationVerifier =
+ options.headless.confidentialAttestationVerifier ??
+ options.interactive.confidentialAttestationVerifier
+ if (confidentialAttestationVerifier !== undefined)
+ this.confidentialAttestationVerifier = confidentialAttestationVerifier
+ const provider = options.headless.provider ?? options.interactive.provider
+ if (provider !== undefined) this.provider = provider
}
async admit(input: ExecuteTurnInput) {
diff --git a/src/adapters/runtime/production-cli-bridge-backend.ts b/src/adapters/runtime/production-cli-bridge-backend.ts
index 24849e4..9d11c8f 100644
--- a/src/adapters/runtime/production-cli-bridge-backend.ts
+++ b/src/adapters/runtime/production-cli-bridge-backend.ts
@@ -3,6 +3,7 @@ import type {
AgentProfile,
HarnessType,
} from '@tangle-network/agent-interface'
+import { canonicalAgentProfileDigest } from '@tangle-network/agent-interface'
import type { CliBridgeProvider } from '@tangle-network/agent-provider-cli-bridge'
import type { BridgeModelCredential } from '@tangle-network/agent-runtime/kernel'
import { ConnectionError } from '../../app/connection-errors.js'
@@ -47,10 +48,18 @@ export interface PreparedCliBridgeConnection {
readonly providerSessionId: string
readonly provider: CliBridgeProvider
readonly capabilities: AgentEnvironmentCapabilities
+ readonly contextTransfer?: ExecuteTurnInput['contextTransfer']
readonly observation: NonNullable
readonly materializationReceipt: Readonly>
}
+export interface PreparedCliBridgeProviderRoute {
+ readonly bridgeUrl: string
+ readonly bearerToken: string
+ readonly provider: CliBridgeProvider
+ readonly capabilities: AgentEnvironmentCapabilities
+}
+
export async function prepareCliBridgeConnection(
options: ProductionBackendResolverOptions,
input: ExecuteTurnInput,
@@ -76,53 +85,35 @@ export async function prepareCliBridgeConnection(
)
}
- const record = connectionRecord(connectionId, options)
- const credential = await readConnectionCredential(record, options, endpoint)
const providerSessionId = input.sessionId ?? stableProviderId('session-braid-', input.runId)
const route = materializeBridgeModelRoute(runner, model, profile.model?.provider)
const workspace = requiredWorkspaceCwd(input.workspaceRoot, options.workspaceCwd)
- const bridgeUrl = normalizeCliBridgeProviderBaseUrl(endpoint, connectionId)
- const bridgeLocation = endpointLocation(bridgeUrl)
+ const preparedProvider = await prepareCliBridgeProviderRoute(
+ options,
+ connectionId,
+ endpoint,
+ runner,
+ route,
+ )
+ const bridgeLocation = endpointLocation(preparedProvider.bridgeUrl)
const createdAt = new Date().toISOString()
- const { createCliBridgeProvider } = await import('@tangle-network/agent-provider-cli-bridge')
- const providerFetch =
- options.bridgeModelCredential === undefined
- ? options.fetch
- : bridgeCredentialFetch(
- bridgeUrl,
- options.bridgeModelCredential,
- options.fetch ?? globalThis.fetch,
- )
- const providerOptions = {
- baseUrl: bridgeUrl,
- bearerToken: credential ?? LOCAL_BRIDGE_BEARER,
- defaultModel: route,
- ...(runner === 'pi'
- ? {
- defaultExecution: {
- kind: 'host' as const,
- jail: { mode: 'fs-jail' as const },
- },
- }
- : {}),
- ...(providerFetch === undefined ? {} : { fetch: providerFetch }),
- }
- const provider = createCliBridgeProvider(providerOptions)
- const capabilities = await provider.capabilities()
+ const { provider, capabilities } = preparedProvider
+ assertContextTransferDestination(input, provider.name, profile, runner, model)
return freezeExecution({
profile,
model,
runner,
route,
workspace,
- bridgeUrl,
- bearerToken: credential ?? LOCAL_BRIDGE_BEARER,
+ bridgeUrl: preparedProvider.bridgeUrl,
+ bearerToken: preparedProvider.bearerToken,
...(options.bridgeModelCredential === undefined
? {}
: { bridgeModelCredential: options.bridgeModelCredential }),
...(options.fetch === undefined ? {} : { fetch: options.fetch }),
provider,
capabilities,
+ ...(input.contextTransfer === undefined ? {} : { contextTransfer: input.contextTransfer }),
providerSessionId,
observation: staticExecutionObservation({
kind: bridgeLocation.location === 'local' ? 'local-process' : 'remote-service',
@@ -147,7 +138,12 @@ export async function prepareCliBridgeConnection(
sessionId: providerSessionId,
lifecycle: 'retained-session',
cleanup: 'explicit',
- portableContext: 'unavailable',
+ portableContext:
+ capabilities.contextTransfer?.freshSession === true &&
+ capabilities.contextTransfer.requestIdempotency === true &&
+ capabilities.contextTransfer.lookup === true
+ ? 'provider-owned'
+ : 'unavailable',
workspace,
model,
route,
@@ -156,6 +152,76 @@ export async function prepareCliBridgeConnection(
})
}
+/** Resolve one exact Bridge route without requiring an AgentProfile. */
+export async function prepareCliBridgeProviderRoute(
+ options: ProductionBackendResolverOptions,
+ connectionId: ConnectionId,
+ endpoint: string,
+ runner: HarnessType,
+ route: string,
+): Promise {
+ const record = connectionRecord(connectionId, options)
+ if (record.kind !== 'cli-bridge') {
+ throw new Error('The CLI Bridge provider route received another connection kind')
+ }
+ const credential = await readConnectionCredential(record, options, endpoint)
+ const bridgeUrl = normalizeCliBridgeProviderBaseUrl(endpoint, connectionId)
+ const { createCliBridgeProvider } = await import('@tangle-network/agent-provider-cli-bridge')
+ const providerFetch =
+ options.bridgeModelCredential === undefined
+ ? options.fetch
+ : bridgeCredentialFetch(
+ bridgeUrl,
+ options.bridgeModelCredential,
+ options.fetch ?? globalThis.fetch,
+ )
+ const providerOptions = {
+ baseUrl: bridgeUrl,
+ bearerToken: credential ?? LOCAL_BRIDGE_BEARER,
+ defaultModel: route,
+ ...(runner === 'pi'
+ ? {
+ defaultExecution: {
+ kind: 'host' as const,
+ jail: { mode: 'fs-jail' as const },
+ },
+ }
+ : {}),
+ ...(providerFetch === undefined ? {} : { fetch: providerFetch }),
+ }
+ const provider = createCliBridgeProvider(providerOptions)
+ const capabilities = await provider.capabilities()
+ return freezeExecution({
+ bridgeUrl,
+ bearerToken: credential ?? LOCAL_BRIDGE_BEARER,
+ provider,
+ capabilities,
+ })
+}
+
+function assertContextTransferDestination(
+ input: ExecuteTurnInput,
+ providerName: string,
+ profile: AgentProfile,
+ runner: HarnessType,
+ model: string,
+): void {
+ const transfer = input.contextTransfer
+ if (transfer === undefined) return
+ const destination = transfer.plan.destination
+ if (
+ destination.provider !== providerName ||
+ destination.runner !== runner ||
+ destination.model !== model ||
+ destination.profileDigest !== canonicalAgentProfileDigest(profile) ||
+ destination.sessionId !== input.sessionId
+ ) {
+ throw new Error(
+ 'The portable context destination does not match the selected provider, runner, model, profile, or session',
+ )
+ }
+}
+
function bridgeCredentialFetch(
bridgeUrl: string,
credential: BridgeModelCredential,
diff --git a/src/adapters/runtime/production-tangle-sandbox-backend.ts b/src/adapters/runtime/production-tangle-sandbox-backend.ts
index dcbe877..c2e1aae 100644
--- a/src/adapters/runtime/production-tangle-sandbox-backend.ts
+++ b/src/adapters/runtime/production-tangle-sandbox-backend.ts
@@ -11,6 +11,7 @@ import { canonicalDigest } from '../../domain/canonical.js'
import type { ConnectionId } from '../../domain/ids.js'
import type { ExecuteTurnInput } from '../../ports/execution.js'
import { harnessSupportsModel, snapHarnessToModel } from '../agent-interface/harness-runtime.js'
+import { nitroVerifiersForConnection } from '../connections/nitro-confidential-attestation.js'
import {
createTangleRetainedControlLookup,
supportsTangleRetainedControlLookup,
@@ -75,10 +76,14 @@ export async function resolveTangleSandboxBackend(
})
const rawClient = await createTangleSandboxClient(record, options, input.signal)
const observedClient = observeSandboxClient(rawClient, lifecycle)
+ const confidential = nitroVerifiersForConnection(record, options)
const sdkProvider = createTangleProvider({
client: observedClient.client,
defaultBackend: runner,
name: 'tangle-sandbox',
+ ...(confidential?.tangle === undefined
+ ? {}
+ : { confidentialAttestationVerifier: confidential.tangle }),
})
const capabilities = capabilitiesForLifecycle(await sdkProvider.capabilities(), lifecycle)
const providerSessionId = providerSessionFor(input, capabilities)
@@ -135,6 +140,7 @@ export interface PreparedTangleRetainedConnection {
readonly discoverControlRef: (
braidRunId: string,
signal?: AbortSignal,
+ executionId?: string,
) => Promise
readonly materializationReceipt: Readonly>
}
@@ -192,10 +198,14 @@ export async function resolveTangleSandboxRetainedConnection(
const observedClient = observeSandboxClient(boundedClient, lifecycle)
const retainedControlLookup =
options.tangleRetainedControlLookup ?? createTangleRetainedControlLookup(observedClient.client)
+ const confidential = nitroVerifiersForConnection(record, options)
const provider = createTangleProvider({
client: observedClient.client,
defaultBackend: runner,
name: 'tangle-sandbox',
+ ...(confidential?.tangle === undefined
+ ? {}
+ : { confidentialAttestationVerifier: confidential.tangle }),
})
const reportedCapabilities = await provider.capabilities()
const retained = reportedCapabilities.retainedControl
@@ -234,12 +244,12 @@ export async function resolveTangleSandboxRetainedConnection(
environmentName: identity.name,
environmentMetadata: identity.metadata,
idleTtlSeconds,
- discoverControlRef: (braidRunId, signal) =>
+ discoverControlRef: (braidRunId, signal, executionId = safeExecutionId(braidRunId)) =>
retainedControlLookup({
connectionId,
braidRunId,
providerSessionId,
- executionId: safeExecutionId(braidRunId),
+ executionId,
environmentIdempotencyKey: identity.environmentIdempotencyKey,
...(signal === undefined ? {} : { signal }),
}),
diff --git a/src/adapters/runtime/retained-execution-contract.ts b/src/adapters/runtime/retained-execution-contract.ts
index 32cc3d5..62d93dc 100644
--- a/src/adapters/runtime/retained-execution-contract.ts
+++ b/src/adapters/runtime/retained-execution-contract.ts
@@ -1,6 +1,8 @@
import type { AgentExactRunControlRef } from '@tangle-network/agent-interface'
-import type { AgentTurnResult } from '@tangle-network/agent-interface/environment-provider'
-import type { RetainedRunHandle } from '@tangle-network/agent-runtime/kernel'
+import type {
+ NativeContextContinuationExecution,
+ RetainedRunHandle,
+} from '@tangle-network/agent-runtime/kernel'
import type { TurnUsage } from '../../domain/entities.js'
import type { ExecutionEnvironmentObservation } from '../../domain/execution-observation.js'
import type { RuntimeEventEnvelope } from '../../domain/runtime-events.js'
@@ -19,6 +21,11 @@ export interface RetainedResultProjection {
readonly error?: string
}
+export type RetainedTurnResult = Extract<
+ NativeContextContinuationExecution,
+ { readonly result: unknown }
+>['result']
+
/** Provider-specific facts and operations needed by the retained lifecycle. */
export interface RetainedExecutionPlan {
readonly providerName: string
@@ -53,16 +60,21 @@ export interface RetainedExecutionPlan {
readonly detached: boolean
}) => ProviderRunSnapshot['status']
readonly isTerminalStatus: (status: ProviderRunSnapshot['status']) => boolean
- readonly projectResult: (result: AgentTurnResult) => RetainedResultProjection
+ readonly projectResult: (result: RetainedTurnResult) => RetainedResultProjection
readonly projectFinal: (input: {
readonly runId: string
readonly sequence: number
- readonly result: AgentTurnResult
+ readonly result: RetainedTurnResult
}) => RuntimeEventEnvelope
}
export interface RetainedExecutionDriver {
readonly resolve: (input: ExecuteTurnInput) => Promise
+ /** Resolve the provider connection for a verified same-session continuation. */
+ readonly continue?: (
+ input: ExecuteTurnInput,
+ controlRef: AgentExactRunControlRef,
+ ) => Promise
readonly recover: (
input: {
readonly runId: string
diff --git a/src/adapters/runtime/retained-execution-projection.ts b/src/adapters/runtime/retained-execution-projection.ts
index f4f5bdc..7d63a54 100644
--- a/src/adapters/runtime/retained-execution-projection.ts
+++ b/src/adapters/runtime/retained-execution-projection.ts
@@ -1,13 +1,10 @@
-import type { TokenUsage } from '@tangle-network/agent-interface'
-import type {
- AgentEnvironmentCapabilities,
- AgentTurnResult,
-} from '@tangle-network/agent-interface/environment-provider'
+import type { AgentEnvironmentCapabilities } from '@tangle-network/agent-interface/environment-provider'
import type { TurnUsage } from '../../domain/entities.js'
import { redactSensitiveText } from '../../domain/redaction.js'
import type { BraidFinalRuntimeEvent, RuntimeEventEnvelope } from '../../domain/runtime-events.js'
import type { RunStatus } from '../../domain/state.js'
import type { RunCapabilities } from '../../ports/execution.js'
+import type { RetainedTurnResult } from './retained-execution-contract.js'
export function retainedCapabilities(
environment: AgentEnvironmentCapabilities,
@@ -16,6 +13,12 @@ export function retainedCapabilities(
readonly exactStatus?: boolean
} = {},
): RunCapabilities {
+ const retainedControl =
+ environment.retainedControl?.exactRunIdentity === true &&
+ environment.retainedControl.resultIdentity === true &&
+ environment.retainedControl.eventIdentity === true &&
+ environment.retainedControl.cancellationIdempotency === true
+ const exactStatus = retainedControl && (options.exactStatus ?? true)
return Object.freeze({
streaming: {
live: environment.streaming.live,
@@ -28,11 +31,11 @@ export function retainedCapabilities(
messages: false,
},
controls: {
- cancel: true,
+ cancel: retainedControl,
steer: false,
queue: true,
- status: options.exactStatus ?? true,
- recreate: true,
+ status: exactStatus,
+ recreate: retainedControl,
},
events: { stableIdentity: true, sequence: true, cursor: true },
usage: environment.usage,
@@ -68,7 +71,7 @@ export function isTerminalRetainedStatus(status: RunStatus): boolean {
}
export function retainedTurnUsage(
- usage: TokenUsage | undefined,
+ usage: RetainedTurnResult['usage'],
model: string | undefined,
calls?: number,
): TurnUsage {
@@ -88,7 +91,7 @@ export function finalRetainedEnvelope(
runId: string,
sequence: number,
model: string,
- result: AgentTurnResult,
+ result: RetainedTurnResult,
intent: string,
): RuntimeEventEnvelope {
const timestamp = new Date().toISOString()
@@ -137,7 +140,7 @@ export function finalRetainedEnvelope(
}
}
-export function modelRequestsFromResult(result: AgentTurnResult): number | undefined {
+export function modelRequestsFromResult(result: RetainedTurnResult): number | undefined {
const value = result.metadata?.modelRequests
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : undefined
}
diff --git a/src/adapters/runtime/retained-execution-state.ts b/src/adapters/runtime/retained-execution-state.ts
index 3f0da19..a5b5470 100644
--- a/src/adapters/runtime/retained-execution-state.ts
+++ b/src/adapters/runtime/retained-execution-state.ts
@@ -29,6 +29,7 @@ export function retainedExecutionKey(
workspaceRoot: input.workspaceRoot ?? null,
sessionId: input.sessionId ?? null,
contextBoundary: input.contextBoundary ?? null,
+ nativeContextBoundaryProof: input.nativeContextBoundaryProof ?? null,
})
}
diff --git a/src/adapters/runtime/retained-execution-stream.ts b/src/adapters/runtime/retained-execution-stream.ts
index 87b236a..ec3a004 100644
--- a/src/adapters/runtime/retained-execution-stream.ts
+++ b/src/adapters/runtime/retained-execution-stream.ts
@@ -1,6 +1,6 @@
import type { RetainedRunHandle } from '@tangle-network/agent-runtime/kernel'
import type { RuntimeEventEnvelope } from '../../domain/runtime-events.js'
-import type { RetainedExecutionPlan } from './retained-execution-contract.js'
+import type { RetainedExecutionPlan, RetainedTurnResult } from './retained-execution-contract.js'
import type { RetainedExecutionState } from './retained-execution-state.js'
export async function* streamRetainedExecution(input: {
@@ -12,6 +12,7 @@ export async function* streamRetainedExecution(input: {
readonly includeObservation: boolean
readonly afterSequence: number
readonly after?: string
+ readonly terminalResult?: Promise
}): AsyncGenerator {
const reader = new AbortController()
const previous = input.state.replaceReader(input.runId, reader)
@@ -26,6 +27,12 @@ export async function* streamRetainedExecution(input: {
if (observation === undefined) {
throw new Error('Retained execution observation is unavailable')
}
+ if (
+ observation.providerEnvironmentId !== undefined &&
+ observation.providerEnvironmentId !== input.handle.controlRef.environmentId
+ ) {
+ throw new Error('Retained execution observation conflicts with its exact control reference')
+ }
yield {
runId: input.runId,
eventId: `${input.runId}:execution-bound`,
@@ -33,7 +40,13 @@ export async function* streamRetainedExecution(input: {
receivedAt: observedAt,
event: {
type: 'braid.execution.observed',
- observation,
+ observation:
+ observation.providerEnvironmentId === undefined
+ ? {
+ ...observation,
+ providerEnvironmentId: input.handle.controlRef.environmentId,
+ }
+ : observation,
controlRef: input.handle.controlRef,
timestamp: observedAt,
},
@@ -50,7 +63,8 @@ export async function* streamRetainedExecution(input: {
sequence = envelope.sequence + 1
yield { ...envelope, runId: input.runId, sequence }
}
- const result = await input.handle.result()
+ const result =
+ input.terminalResult === undefined ? await input.handle.result() : await input.terminalResult
sequence += 1
yield input.plan.projectFinal({ runId: input.runId, sequence, result })
} finally {
diff --git a/src/adapters/runtime/retained-execution.ts b/src/adapters/runtime/retained-execution.ts
index 9ac1e9c..415cdfc 100644
--- a/src/adapters/runtime/retained-execution.ts
+++ b/src/adapters/runtime/retained-execution.ts
@@ -17,13 +17,23 @@ import type {
RetainedRunAdmissionRecord,
RetainedRunAdmissionRecorder,
} from '../../ports/execution.js'
+import { runSupportsNativeContinuation } from '../../ports/execution.js'
import { canonicalAgentProfileDigestHex } from '../agent-interface/profile-runtime.js'
import type {
RetainedExecutionDriver,
RetainedExecutionPlan,
+ RetainedTurnResult,
} from './retained-execution-contract.js'
import { RetainedExecutionState, retainedExecutionKey } from './retained-execution-state.js'
import { streamRetainedExecution } from './retained-execution-stream.js'
+import type { RetainedNativeContinuation } from './retained-native-continuation.js'
+import {
+ continueRetainedNative,
+ controlRefFromBoundaryProof,
+ nativeContinuationInputFromRecovery,
+} from './retained-native-continuation.js'
+
+const CANCEL_STATUS_WAIT_MS = 30_000
export type {
RetainedExecutionDriver,
@@ -37,6 +47,11 @@ interface ResolvedRetainedHandle {
readonly wasStarting: boolean
}
+interface RetainedRunStart {
+ readonly handle: RetainedRunHandle
+ readonly terminalResult?: Promise
+}
+
/** Provider-neutral durable execution lifecycle used by Braid adapters. */
export class RetainedExecutionPort implements ExecutionPort {
readonly admissionMode = 'async' as const
@@ -48,7 +63,25 @@ export class RetainedExecutionPort implements ExecutionPort {
}
async admit(input: ExecuteTurnInput): Promise {
- const plan = await this.#driver.resolve(input)
+ const continueNative = this.#driver.continue
+ let plan: RetainedExecutionPlan
+ if (input.nativeContextBoundaryProof === undefined) {
+ plan = await this.#driver.resolve(input)
+ } else {
+ if (continueNative === undefined) {
+ throw new Error('Provider does not implement verified same-session continuation')
+ }
+ plan = await continueNative(
+ input,
+ controlRefFromBoundaryProof(input.nativeContextBoundaryProof),
+ )
+ }
+ if (
+ input.nativeContextBoundaryProof !== undefined &&
+ !runSupportsNativeContinuation(plan.capabilities)
+ ) {
+ throw new Error('Provider does not support verified same-session continuation')
+ }
this.#state.rememberPrepared(input.runId, retainedExecutionKey(input, plan.capabilities), plan)
return {
capabilities: plan.capabilities,
@@ -74,14 +107,21 @@ export class RetainedExecutionPort implements ExecutionPort {
if (plan === undefined) {
throw new Error('Retained run was not admitted with this exact request')
}
- const starting = Promise.resolve().then(() => plan.start(input))
- this.#state.rememberStartingHandle(input.runId, starting)
+ const starting = Promise.resolve().then(async (): Promise => {
+ if (input.nativeContextBoundaryProof === undefined) return { handle: await plan.start(input) }
+ return continueRetainedNative(plan, input)
+ })
+ const startingHandle = starting.then(({ handle }) => handle)
+ this.#state.rememberStartingHandle(input.runId, startingHandle)
let handle: RetainedRunHandle
+ let terminalResult: Promise | undefined
try {
- handle = await starting
+ const started = await starting
+ handle = started.handle
+ terminalResult = started.terminalResult
this.#state.rememberHandle(input.runId, plan, handle)
} finally {
- this.#state.clearStartingHandle(input.runId, starting)
+ this.#state.clearStartingHandle(input.runId, startingHandle)
}
if (this.#state.isDetached(input.runId)) return
this.#state.markDetached(input.runId, false)
@@ -93,6 +133,7 @@ export class RetainedExecutionPort implements ExecutionPort {
signal: input.signal,
includeObservation: true,
afterSequence: 0,
+ ...(terminalResult === undefined ? {} : { terminalResult }),
})
}
@@ -114,14 +155,49 @@ export class RetainedExecutionPort implements ExecutionPort {
assertRecoveryIdentity(input.retainedAdmission, input.providerSessionId, input.controlRef)
const persistedControlRef = controlRefFromAdmission(input.retainedAdmission)
const suppliedControlRef = input.controlRef ?? persistedControlRef
- const providerSessionId = this.#recoverySessionId(input.providerSessionId, suppliedControlRef)
+ const continuationInput =
+ suppliedControlRef === undefined
+ ? nativeContinuationInputFromRecovery(input.runId, input, input.signal)
+ : undefined
+ const recoveryControlRef =
+ continuationInput === undefined
+ ? suppliedControlRef
+ : controlRefFromBoundaryProof(continuationInput.nativeContextBoundaryProof)
+ const providerSessionId = this.#recoverySessionId(input.providerSessionId, recoveryControlRef)
const plan = await this.#planFor(
input.runId,
providerSessionId,
- suppliedControlRef,
+ recoveryControlRef,
input,
input.signal,
)
+ if (continuationInput !== undefined) {
+ if (!runSupportsNativeContinuation(plan.capabilities)) {
+ throw new Error('Provider does not support verified same-session continuation')
+ }
+ const starting = continueRetainedNative(plan, continuationInput)
+ const startingHandle = starting.then(({ handle }) => handle)
+ this.#state.rememberStartingHandle(input.runId, startingHandle)
+ let continued: RetainedNativeContinuation
+ try {
+ continued = await starting
+ } finally {
+ this.#state.clearStartingHandle(input.runId, startingHandle)
+ }
+ this.#state.rememberHandle(input.runId, plan, continued.handle)
+ this.#state.markDetached(input.runId, false)
+ yield* streamRetainedExecution({
+ runId: input.runId,
+ handle: continued.handle,
+ plan,
+ state: this.#state,
+ signal: input.signal,
+ includeObservation: true,
+ afterSequence: 0,
+ terminalResult: continued.terminalResult,
+ })
+ return
+ }
const recovered = await this.#recoverHandle(plan, input, input.onRetainedAdmission)
if (recovered !== undefined) {
if (recovered === null) return
@@ -269,19 +345,16 @@ export class RetainedExecutionPort implements ExecutionPort {
if (result.status === 'unknown') {
return { operationId: input.operationId, outcome: 'unknown', detail: result.effect }
}
- if (result.effect === 'cancel_requested') {
- return {
- operationId: input.operationId,
- outcome: 'unknown',
- detail: 'cancel_requested',
- }
- }
let effect = result.effect
- if (effect === 'unknown' || effect === 'not_live') {
+ if (effect === 'cancel_requested' || effect === 'unknown' || effect === 'not_live') {
if (resolved.plan.exactStatus === false) {
return { operationId: input.operationId, outcome: 'unknown', detail: result.effect }
}
- const reconciled = await this.#reconcileCancelled(resolved, input)
+ const reconciled = await this.#reconcileCancelled(
+ resolved,
+ input,
+ effect === 'cancel_requested' ? CANCEL_STATUS_WAIT_MS : 0,
+ )
if (!reconciled) {
return { operationId: input.operationId, outcome: 'unknown', detail: result.effect }
}
@@ -307,6 +380,23 @@ export class RetainedExecutionPort implements ExecutionPort {
readonly signal?: AbortSignal
} & RetainedExecutionRecoveryContext,
): Promise {
+ if (
+ input.controlRef === undefined &&
+ controlRefFromAdmission(input.retainedAdmission) === undefined
+ ) {
+ const continuation = nativeContinuationInputFromRecovery(
+ input.runId,
+ input,
+ input.signal ?? new AbortController().signal,
+ )
+ if (continuation !== undefined) {
+ return {
+ runId: input.runId,
+ status: 'reconnecting',
+ sessionId: continuation.nativeContextBoundaryProof.sessionId,
+ }
+ }
+ }
const resolved = await this.#handleFor(
input.runId,
input.providerSessionId,
@@ -398,6 +488,20 @@ export class RetainedExecutionPort implements ExecutionPort {
return interactionAcknowledgement(input.command.operationId, acknowledgement.status)
}
+ async nativeBoundary(input: Parameters>[0]) {
+ const resolved = await this.#handleFor(
+ input.runId,
+ input.sessionId,
+ input.controlRef,
+ input.signal,
+ input,
+ )
+ if (!resolved) return null
+ return resolved.handle.contextBoundary({
+ ...(input.signal === undefined ? {} : { signal: input.signal }),
+ })
+ }
+
async #handleFor(
runId: string,
providerSessionId: string | undefined,
@@ -421,6 +525,9 @@ export class RetainedExecutionPort implements ExecutionPort {
if (starting === undefined) throw new Error('Retained run state is incomplete')
handle = await starting
}
+ if (providerSessionId !== undefined && handle.controlRef.sessionId !== providerSessionId) {
+ throw new Error('retained provider session conflicts with the active run')
+ }
if (suppliedControlRef !== undefined) {
const exact = this.#state.validateControlRef(activePlan, suppliedControlRef)
this.#state.assertSameControlRef(handle.controlRef, exact)
@@ -449,10 +556,12 @@ export class RetainedExecutionPort implements ExecutionPort {
async #reconcileCancelled(
resolved: ResolvedRetainedHandle,
input: CancelRunInput & { readonly signal?: AbortSignal },
+ waitMs: number,
): Promise {
try {
const signal = resolved.wasStarting || input.signal?.aborted ? undefined : input.signal
const snapshot = await resolved.handle.status({
+ ...(waitMs === 0 ? {} : { waitMs }),
...(signal === undefined ? {} : { signal }),
})
const exact = this.#state.validateControlRef(resolved.plan, snapshot.controlRef)
@@ -549,9 +658,16 @@ export class RetainedExecutionPort implements ExecutionPort {
const plan = this.#state.plan(runId)
if (plan === undefined) return
this.#state.assertProviderSession(plan, providerSessionId)
+ const active = this.#state.handle(runId)
+ if (
+ providerSessionId !== undefined &&
+ active !== undefined &&
+ active.controlRef.sessionId !== providerSessionId
+ ) {
+ throw new Error('retained provider session conflicts with the active run')
+ }
if (controlRef === undefined) return
const exact = this.#state.validateControlRef(plan, controlRef)
- const active = this.#state.handle(runId)
if (active !== undefined) this.#state.assertSameControlRef(active.controlRef, exact)
}
}
diff --git a/src/adapters/runtime/retained-native-continuation.ts b/src/adapters/runtime/retained-native-continuation.ts
new file mode 100644
index 0000000..474b16d
--- /dev/null
+++ b/src/adapters/runtime/retained-native-continuation.ts
@@ -0,0 +1,136 @@
+import {
+ type AgentExactRunControlRef,
+ AgentExactRunControlRefSchema,
+ type NativeContextBoundaryProof,
+ NativeContextBoundaryProofSchema,
+ nativeContextContinuationRequestDigest,
+ nativeContextContinuationTurnDigest,
+} from '@tangle-network/agent-interface'
+import type { RetainedRunHandle } from '@tangle-network/agent-runtime/kernel'
+import { canonicalDigest } from '../../domain/canonical.js'
+import type { ExecuteTurnInput, RetainedExecutionRecoveryContext } from '../../ports/execution.js'
+import type { RetainedExecutionPlan, RetainedTurnResult } from './retained-execution-contract.js'
+
+export interface RetainedNativeContinuation {
+ readonly handle: RetainedRunHandle
+ readonly terminalResult: Promise
+}
+
+export function controlRefFromBoundaryProof(
+ value: NativeContextBoundaryProof,
+): AgentExactRunControlRef {
+ const proof = NativeContextBoundaryProofSchema.parse(value)
+ return AgentExactRunControlRefSchema.parse({
+ runId: proof.runId,
+ provider: proof.provider,
+ environmentId: proof.environmentId,
+ sessionId: proof.sessionId,
+ executionId: proof.executionId,
+ requestDigest: proof.requestDigest,
+ })
+}
+
+export async function continueRetainedNative(
+ plan: RetainedExecutionPlan,
+ input: ExecuteTurnInput,
+): Promise {
+ const proof = input.nativeContextBoundaryProof
+ if (proof === undefined) throw new Error('Native continuation requires an exact boundary proof')
+ const sourceControlRef = controlRefFromBoundaryProof(proof)
+ if (input.sessionId !== sourceControlRef.sessionId) {
+ throw new Error('Native continuation targets another provider session')
+ }
+ const handle = await plan.reconnect(sourceControlRef, input.signal)
+ if (handle === null) throw new Error('Native continuation source is no longer available')
+ if (canonicalDigest(handle.controlRef) !== canonicalDigest(sourceControlRef)) {
+ throw new Error('Native continuation recovered another provider run')
+ }
+
+ const turn = { prompt: input.text, model: plan.model }
+ const turnDigest = nativeContextContinuationTurnDigest(turn)
+ const material = {
+ operationId: input.operationId,
+ turnDigest,
+ run: sourceControlRef,
+ expectedBoundary: NativeContextBoundaryProofSchema.parse(proof),
+ }
+ const request = {
+ ...material,
+ requestDigest: nativeContextContinuationRequestDigest(material),
+ }
+ const continuation = handle.beginNativeContinuation(request, { ...turn, signal: input.signal })
+ void continuation.result.catch(() => undefined)
+ const admitted = AgentExactRunControlRefSchema.parse(await continuation.admission)
+ assertAdvancedControlRef(sourceControlRef, admitted)
+ if (canonicalDigest(handle.controlRef) !== canonicalDigest(admitted)) {
+ throw new Error('Native continuation handle did not advance to the admitted run')
+ }
+ const terminalResult = continuation.result.then((outcome) => {
+ if (
+ outcome.acknowledgement.status !== 'accepted' &&
+ outcome.acknowledgement.status !== 'replayed'
+ ) {
+ throw new Error(`Native continuation was ${outcome.acknowledgement.status}`)
+ }
+ if (!('controlRef' in outcome) || !('result' in outcome)) {
+ throw new Error('Native continuation omitted its exact result')
+ }
+ const next = AgentExactRunControlRefSchema.parse(outcome.controlRef)
+ assertAdvancedControlRef(sourceControlRef, next)
+ if (canonicalDigest(admitted) !== canonicalDigest(next)) {
+ throw new Error('Native continuation result changed its admitted run reference')
+ }
+ if (canonicalDigest(handle.controlRef) !== canonicalDigest(next)) {
+ throw new Error('Native continuation handle did not advance to the result run')
+ }
+ return outcome.result
+ })
+ void terminalResult.catch(() => undefined)
+ return { handle, terminalResult }
+}
+
+function assertAdvancedControlRef(
+ initial: AgentExactRunControlRef,
+ next: AgentExactRunControlRef,
+): void {
+ if (
+ next.provider !== initial.provider ||
+ next.environmentId !== initial.environmentId ||
+ next.sessionId !== initial.sessionId
+ ) {
+ throw new Error('Native continuation moved to another provider session')
+ }
+ if (next.runId === initial.runId && next.executionId === initial.executionId) {
+ throw new Error('Native continuation did not return a new exact run execution')
+ }
+}
+
+export function nativeContinuationInputFromRecovery(
+ runId: string,
+ recovery: RetainedExecutionRecoveryContext,
+ signal: AbortSignal,
+):
+ | (ExecuteTurnInput & { readonly nativeContextBoundaryProof: NativeContextBoundaryProof })
+ | undefined {
+ const receipt = recovery.receipt
+ const parsed = NativeContextBoundaryProofSchema.safeParse(receipt?.nativeContextBoundaryProof)
+ if (receipt === undefined || !parsed.success) return undefined
+ const proof = parsed.data
+ return {
+ operationId: receipt.operationId,
+ runId,
+ text: receipt.requested.text,
+ profile: receipt.requested.profile,
+ ...(receipt.requested.mode === undefined ? {} : { mode: receipt.requested.mode }),
+ ...(receipt.requested.interactions === undefined
+ ? {}
+ : { interactions: receipt.requested.interactions }),
+ ...(receipt.requested.connectionId === undefined
+ ? {}
+ : { connectionId: receipt.requested.connectionId }),
+ ...(recovery.workspaceRoot === undefined ? {} : { workspaceRoot: recovery.workspaceRoot }),
+ sessionId: proof.sessionId,
+ signal,
+ nativeContextBoundaryProof: proof,
+ }
+}
diff --git a/src/adapters/runtime/supervisor-control.ts b/src/adapters/runtime/supervisor-control.ts
index fddbf6e..816783d 100644
--- a/src/adapters/runtime/supervisor-control.ts
+++ b/src/adapters/runtime/supervisor-control.ts
@@ -1,5 +1,17 @@
-import { type RootHandle, writeWorkerSteer } from '@tangle-network/agent-runtime/kernel'
-import type { WorkerView } from '@tangle-network/agent-runtime/tui'
+import {
+ attachWorker,
+ cancelRun,
+ cancelWorker,
+ type RunCancellation,
+ type WorkerCancellation,
+ type WorkerInteractiveProviderSource,
+ type WorkerInteractiveSession,
+ type WorkerInteractiveUnavailableReason,
+ type WorkerSteerAcknowledgement,
+ type WorkerSteerRequest,
+ writeWorkerSteer,
+} from '@tangle-network/agent-runtime/kernel'
+import type { SupervisorView, WorkerView } from '@tangle-network/agent-runtime/tui'
import { AGENT_RUNTIME_VERSION } from './agent-runtime-version.js'
import { type RuntimeSupervisorSnapshotPort, RuntimeSupervisorWatcher } from './supervisor-watch.js'
@@ -14,33 +26,55 @@ export interface SupervisorCapabilityIssue {
}
export interface SupervisorWorkerSteerResult {
- readonly status: 'queued' | 'unavailable'
+ readonly status: 'queued' | 'acknowledged' | 'unavailable'
readonly worker: string
- readonly requestId?: string
+ readonly operationId?: string
+ readonly requestDigest?: WorkerSteerRequest['requestDigest']
readonly file?: string
+ readonly replayed?: boolean
+ readonly effect?: WorkerSteerAcknowledgement['effect']
+ readonly detail?: string
readonly issue?: SupervisorCapabilityIssue
}
export interface SupervisorWorkerCancelResult {
- readonly status: 'unavailable'
+ readonly status: 'requested' | 'acknowledged' | 'unavailable'
readonly worker: string
- readonly issue: SupervisorCapabilityIssue
+ readonly operationId?: string
+ readonly effect?: WorkerCancellation['effect']
+ readonly detail?: string
+ readonly terminated?: readonly string[]
+ readonly issue?: SupervisorCapabilityIssue
}
export interface SupervisorCancelResult {
- readonly status: 'accepted' | 'unavailable'
+ readonly status: 'requested' | 'acknowledged' | 'unavailable'
+ readonly operationId?: string
+ readonly effect?: RunCancellation['effect']
+ readonly detail?: string
readonly issue?: SupervisorCapabilityIssue
}
-export const WORKER_CANCEL_UNAVAILABLE: SupervisorCapabilityIssue = {
- capability: 'supervisor.worker.cancel',
- packageName: '@tangle-network/agent-runtime',
- packageVersion: AGENT_RUNTIME_VERSION,
- reason:
- 'The published runtime exposes RootHandle.abort for the whole supervisor and writeWorkerSteer for a worker inbox, but no worker-scoped cancellation method.',
- reproduction:
- "import { writeWorkerSteer } from '@tangle-network/agent-runtime/kernel'; import { loadTopSnapshot } from '@tangle-network/agent-runtime/tui'; console.log(Object.keys({ writeWorkerSteer, loadTopSnapshot }));",
-}
+export type SupervisorWorkerAttachUnavailableReason =
+ | WorkerInteractiveUnavailableReason
+ | 'interactive-provider-not-configured'
+
+export type SupervisorWorkerAttachResult =
+ | {
+ readonly status: 'available'
+ readonly worker: string
+ readonly handle: Extract['handle']
+ }
+ | {
+ readonly status: 'unavailable'
+ readonly worker: string
+ readonly reason: SupervisorWorkerAttachUnavailableReason
+ readonly issue?: SupervisorCapabilityIssue
+ }
+
+export type SupervisorWorkerProviderResolver = (
+ signal?: AbortSignal,
+) => Promise
function missingWorkerIssue(worker: string): SupervisorCapabilityIssue {
return {
@@ -53,15 +87,14 @@ function missingWorkerIssue(worker: string): SupervisorCapabilityIssue {
}
}
-function externalCancelIssue(): SupervisorCapabilityIssue {
+function missingSupervisorIssue(supervisorId: string): SupervisorCapabilityIssue {
return {
- capability: 'supervisor.cancel.external',
+ capability: 'supervisor.resolve',
packageName: '@tangle-network/agent-runtime',
packageVersion: AGENT_RUNTIME_VERSION,
- reason:
- 'The published runtime monitor can reload persisted state and enqueue worker steering, but it does not expose an external root cancellation operation.',
+ reason: `Runtime snapshot contains no supervisor with id '${supervisorId}'`,
reproduction:
- "import * as runtime from '@tangle-network/agent-runtime/kernel'; console.log('RootHandle.abort exists only on an in-process handle', runtime);",
+ "import { loadTopSnapshot } from '@tangle-network/agent-runtime/tui'; console.log(loadTopSnapshot(rootDir).supervisors);",
}
}
@@ -71,27 +104,38 @@ function findWorker(workers: readonly WorkerView[], target: string): WorkerView
export class RuntimeSupervisorController {
readonly #watcher: RuntimeSupervisorSnapshotPort
- readonly #rootHandle: RootHandle | undefined
readonly #write: typeof writeWorkerSteer
+ readonly #cancelWorker: typeof cancelWorker
+ readonly #cancelRun: typeof cancelRun
+ readonly #attachWorker: typeof attachWorker
+ readonly #providers: SupervisorWorkerProviderResolver | undefined
constructor(
options: {
readonly watcher?: RuntimeSupervisorSnapshotPort
- readonly rootHandle?: RootHandle
readonly write?: typeof writeWorkerSteer
+ readonly cancelWorker?: typeof cancelWorker
+ readonly cancelRun?: typeof cancelRun
+ readonly attachWorker?: typeof attachWorker
+ readonly providers?: SupervisorWorkerProviderResolver
} = {},
) {
this.#watcher = options.watcher ?? new RuntimeSupervisorWatcher()
- this.#rootHandle = options.rootHandle
this.#write = options.write ?? writeWorkerSteer
+ this.#cancelWorker = options.cancelWorker ?? cancelWorker
+ this.#cancelRun = options.cancelRun ?? cancelRun
+ this.#attachWorker = options.attachWorker ?? attachWorker
+ this.#providers = options.providers
}
steerWorker(
rootDir: string,
supervisorId: string,
workerIdOrLabel: string,
+ operationId: string,
message: string,
source = 'braid',
+ interrupt = false,
): SupervisorWorkerSteerResult {
const snapshot = this.#watcher.snapshot(rootDir)
const supervisor = snapshot.supervisors.find((candidate) => candidate.id === supervisorId)
@@ -104,23 +148,135 @@ export class RuntimeSupervisorController {
issue: missingWorkerIssue(workerIdOrLabel),
}
}
- const result = this.#write(rootDir, supervisorId, worker.label, message, source)
+ const result = this.#write(rootDir, supervisorId, worker.id, {
+ operationId,
+ message,
+ source,
+ interrupt,
+ })
return {
- status: 'queued',
+ status:
+ result.acknowledgement !== undefined && result.acknowledgement.effect !== 'unknown'
+ ? 'acknowledged'
+ : 'queued',
worker: result.worker,
- requestId: result.request.id,
+ operationId: result.request.operationId,
+ requestDigest: result.request.requestDigest,
file: result.file,
+ replayed: result.replayed,
+ ...(result.acknowledgement === undefined
+ ? {}
+ : {
+ effect: result.acknowledgement.effect,
+ detail: result.acknowledgement.detail,
+ }),
}
}
- cancelWorker(worker: string): SupervisorWorkerCancelResult {
- return { status: 'unavailable', worker, issue: WORKER_CANCEL_UNAVAILABLE }
+ cancelWorker(
+ rootDir: string,
+ supervisorId: string,
+ workerIdOrLabel: string,
+ operationId: string,
+ reason = 'cancelled by user',
+ source = 'braid',
+ ): SupervisorWorkerCancelResult {
+ const supervisor = this.#findSupervisor(rootDir, supervisorId)
+ if (supervisor === undefined) {
+ return {
+ status: 'unavailable',
+ worker: workerIdOrLabel,
+ issue: missingSupervisorIssue(supervisorId),
+ }
+ }
+ const worker = findWorker(supervisor.workers, workerIdOrLabel)
+ if (worker === undefined) {
+ return {
+ status: 'unavailable',
+ worker: workerIdOrLabel,
+ issue: missingWorkerIssue(workerIdOrLabel),
+ }
+ }
+ const cancellation = this.#cancelWorker(supervisor.stateDir, worker.id, operationId, {
+ reason,
+ source,
+ })
+ return {
+ status: cancellation.effect === 'unknown' ? 'requested' : 'acknowledged',
+ worker: worker.id,
+ operationId: cancellation.operationId,
+ effect: cancellation.effect,
+ ...(cancellation.detail === undefined ? {} : { detail: cancellation.detail }),
+ terminated: cancellation.terminated,
+ }
+ }
+
+ cancelSupervisor(
+ rootDir: string,
+ supervisorId: string,
+ operationId: string,
+ reason = 'cancelled by user',
+ source = 'braid',
+ ): SupervisorCancelResult {
+ const supervisor = this.#findSupervisor(rootDir, supervisorId)
+ if (supervisor === undefined) {
+ return { status: 'unavailable', issue: missingSupervisorIssue(supervisorId) }
+ }
+ const cancellation = this.#cancelRun(supervisor.stateDir, operationId, { reason, source })
+ return {
+ status: cancellation.effect === 'unknown' ? 'requested' : 'acknowledged',
+ operationId: cancellation.operationId,
+ effect: cancellation.effect,
+ ...(cancellation.detail === undefined ? {} : { detail: cancellation.detail }),
+ }
+ }
+
+ async attachWorker(
+ rootDir: string,
+ supervisorId: string,
+ workerIdOrLabel: string,
+ signal?: AbortSignal,
+ ): Promise {
+ signal?.throwIfAborted()
+ const supervisor = this.#findSupervisor(rootDir, supervisorId)
+ if (supervisor === undefined) {
+ return {
+ status: 'unavailable',
+ worker: workerIdOrLabel,
+ reason: 'unknown-node',
+ issue: missingSupervisorIssue(supervisorId),
+ }
+ }
+ const worker = findWorker(supervisor.workers, workerIdOrLabel)
+ if (worker === undefined) {
+ return {
+ status: 'unavailable',
+ worker: workerIdOrLabel,
+ reason: 'unknown-node',
+ issue: missingWorkerIssue(workerIdOrLabel),
+ }
+ }
+ if (this.#providers === undefined) {
+ return {
+ status: 'unavailable',
+ worker: worker.id,
+ reason: 'interactive-provider-not-configured',
+ }
+ }
+ const providers = await this.#providers(signal)
+ signal?.throwIfAborted()
+ const attached = await this.#attachWorker(supervisor.stateDir, worker.id, {
+ providers,
+ ...(signal === undefined ? {} : { signal }),
+ })
+ return attached.status === 'available'
+ ? { status: 'available', worker: worker.id, handle: attached.handle }
+ : { status: 'unavailable', worker: worker.id, reason: attached.reason }
}
- cancelSupervisor(reason = 'cancelled by user'): SupervisorCancelResult {
- if (this.#rootHandle === undefined)
- return { status: 'unavailable', issue: externalCancelIssue() }
- this.#rootHandle.abort(reason)
- return { status: 'accepted' }
+ #findSupervisor(rootDir: string, supervisorId: string): SupervisorView | undefined {
+ return this.#watcher
+ .snapshot(rootDir)
+ .supervisors.find((candidate) => candidate.id === supervisorId)
}
}
diff --git a/src/adapters/runtime/tangle-retained-execution.ts b/src/adapters/runtime/tangle-retained-execution.ts
index 43ceb38..58a721c 100644
--- a/src/adapters/runtime/tangle-retained-execution.ts
+++ b/src/adapters/runtime/tangle-retained-execution.ts
@@ -1,4 +1,8 @@
-import type { AgentExactRunControlRef } from '@tangle-network/agent-interface'
+import type {
+ AgentExactRunControlRef,
+ AgentWorkspaceBranchingProvider,
+ ConfidentialAttestationVerifier,
+} from '@tangle-network/agent-interface'
import type { ExecuteTurnInput, RetainedExecutionRecoveryContext } from '../../ports/execution.js'
import type { PreparedTangleRetainedConnection } from './production-tangle-sandbox-backend.js'
import { RetainedExecutionPort } from './retained-execution.js'
@@ -14,13 +18,20 @@ export interface TangleRetainedExecutionOptions {
readonly signal?: AbortSignal
} & RetainedExecutionRecoveryContext,
) => Promise
+ readonly workspaceBranchingProvider?: AgentWorkspaceBranchingProvider
+ readonly confidentialAttestationVerifier?: ConfidentialAttestationVerifier
}
/** The cloud owns the retained sandbox; Braid owns readers and exact recovery state. */
export class TangleRetainedExecutionPort extends RetainedExecutionPort {
+ readonly workspaceBranchingProvider?: AgentWorkspaceBranchingProvider
+ readonly confidentialAttestationVerifier?: ConfidentialAttestationVerifier
+
constructor(options: TangleRetainedExecutionOptions) {
super({
resolve: async (input) => createTangleRetainedPlan(await options.resolve(input), input.runId),
+ continue: async (input, controlRef) =>
+ createTangleRetainedPlan(await options.resolve(input), input.runId, controlRef),
recover: async ({ runId, providerSessionId, controlRef, signal, ...recovery }) =>
createTangleRetainedPlan(
await options.recover({
@@ -32,7 +43,12 @@ export class TangleRetainedExecutionPort extends RetainedExecutionPort {
}),
runId,
controlRef,
+ recovery,
),
})
+ if (options.workspaceBranchingProvider !== undefined)
+ this.workspaceBranchingProvider = options.workspaceBranchingProvider
+ if (options.confidentialAttestationVerifier !== undefined)
+ this.confidentialAttestationVerifier = options.confidentialAttestationVerifier
}
}
diff --git a/src/adapters/runtime/tangle-retained-interactive-execution.ts b/src/adapters/runtime/tangle-retained-interactive-execution.ts
index 30c4cb5..239f8d1 100644
--- a/src/adapters/runtime/tangle-retained-interactive-execution.ts
+++ b/src/adapters/runtime/tangle-retained-interactive-execution.ts
@@ -1,4 +1,9 @@
-import type { AgentExactRunControlRef, AgentProfile } from '@tangle-network/agent-interface'
+import type {
+ AgentExactRunControlRef,
+ AgentProfile,
+ AgentWorkspaceBranchingProvider,
+ ConfidentialAttestationVerifier,
+} from '@tangle-network/agent-interface'
import {
agentInteractiveSessionStopRequestDigest,
canonicalCandidateDigest,
@@ -59,6 +64,8 @@ export interface TangleRetainedInteractiveExecutionOptions {
readonly recover?: (input: ExecuteTurnInput) => Promise
readonly broker: Pick
readonly holderId?: string
+ readonly workspaceBranchingProvider?: AgentWorkspaceBranchingProvider
+ readonly confidentialAttestationVerifier?: ConfidentialAttestationVerifier
}
interface PreparedInteractiveConnection {
@@ -79,12 +86,18 @@ export class TangleRetainedInteractiveExecutionPort implements ExecutionPort {
readonly #activeRuns = new Set()
readonly #detachRequested = new Set()
readonly #cancelledRuns = new Set()
+ readonly workspaceBranchingProvider?: AgentWorkspaceBranchingProvider
+ readonly confidentialAttestationVerifier?: ConfidentialAttestationVerifier
constructor(options: TangleRetainedInteractiveExecutionOptions) {
this.#resolve = options.resolve
this.#recover = options.recover
this.#broker = options.broker
this.#holderId = options.holderId ?? 'braid'
+ if (options.workspaceBranchingProvider !== undefined)
+ this.workspaceBranchingProvider = options.workspaceBranchingProvider
+ if (options.confidentialAttestationVerifier !== undefined)
+ this.confidentialAttestationVerifier = options.confidentialAttestationVerifier
}
capabilities = (input: ExecuteTurnInput): RunCapabilities | Promise =>
@@ -406,7 +419,7 @@ export class TangleRetainedInteractiveExecutionPort implements ExecutionPort {
environment: interactiveEnvironment(prepared, input.runId),
interactiveIdempotencyKey: interactiveIdempotencyKey(input.runId),
...(input.text.trim() === '' ? {} : { initialPrompt: input.text }),
- ...(input.workspaceRoot === undefined ? {} : { cwd: input.workspaceRoot }),
+ // workspaceRoot identifies Braid's local checkout. The provider owns its remote cwd.
onAdmission,
signal: input.signal,
})
@@ -482,7 +495,6 @@ export class TangleRetainedInteractiveExecutionPort implements ExecutionPort {
),
interactiveIdempotencyKey: admission.interactiveIdempotencyKey,
...(receipt.requested.text.trim() === '' ? {} : { initialPrompt: receipt.requested.text }),
- ...(input.workspaceRoot === undefined ? {} : { cwd: input.workspaceRoot }),
},
onAdmission,
...(input.signal === undefined ? {} : { signal: input.signal }),
diff --git a/src/adapters/runtime/tangle-retained-run.ts b/src/adapters/runtime/tangle-retained-run.ts
index 5fce744..2056c32 100644
--- a/src/adapters/runtime/tangle-retained-run.ts
+++ b/src/adapters/runtime/tangle-retained-run.ts
@@ -3,11 +3,18 @@ import type { AgentEnvironmentProvider } from '@tangle-network/agent-interface/e
import {
type RetainedRunHandle,
reconnectRetainedRun,
+ recoverRetainedRun,
startRetainedRun,
} from '@tangle-network/agent-runtime/kernel'
+import { canonicalDigest } from '../../domain/canonical.js'
import { publicMaterializationReceipt } from '../../domain/materialization-receipt.js'
import type { RuntimeEventEnvelope } from '../../domain/runtime-events.js'
-import type { ExecuteTurnInput } from '../../ports/execution.js'
+import type {
+ ExecuteTurnInput,
+ RetainedExecutionRecoveryContext,
+ RetainedRunAdmissionRecord,
+ RetainedRunAdmissionRecorder,
+} from '../../ports/execution.js'
import { safeExecutionId } from './production-backend-common.js'
import type { PreparedTangleRetainedConnection } from './production-tangle-sandbox-backend.js'
import type {
@@ -24,25 +31,61 @@ import {
} from './retained-execution-projection.js'
export interface TangleRetainedPlan extends RetainedExecutionPlan {
+ readonly runId: string
readonly prepared: PreparedTangleRetainedConnection
readonly provider: AgentEnvironmentProvider
+ readonly environmentIdempotencyKey: string
readonly executionId: string
}
+type HeadlessRetainedAdmission = Extract<
+ RetainedRunAdmissionRecord,
+ { readonly phase: 'intent' | 'environment' | 'dispatched' }
+>
+
export function createTangleRetainedPlan(
prepared: PreparedTangleRetainedConnection,
runId: string,
controlRef?: AgentExactRunControlRef,
+ recovery?: RetainedExecutionRecoveryContext,
): TangleRetainedPlan {
- const executionId = controlRef?.executionId ?? safeExecutionId(runId)
+ const provider = prepared.provider
+ const admission = headlessRetainedAdmission(recovery?.retainedAdmission)
+ if (admission !== undefined && admissionProvider(admission) !== provider.name) {
+ throw new Error('Retained Tangle admission belongs to another provider')
+ }
+ const persistedControlRef = admission?.phase === 'dispatched' ? admission.controlRef : undefined
+ if (
+ controlRef !== undefined &&
+ persistedControlRef !== undefined &&
+ canonicalDigest(controlRef) !== canonicalDigest(persistedControlRef)
+ ) {
+ throw new Error('Retained Tangle control reference conflicts with the persisted run')
+ }
+ const exactControlRef = controlRef ?? persistedControlRef
+ const environmentId =
+ exactControlRef?.environmentId ??
+ (admission?.phase === 'environment' ? admission.environmentId : undefined)
+ const executionId =
+ exactControlRef?.executionId ??
+ (admission?.phase === 'intent' || admission?.phase === 'environment'
+ ? admission.executionId
+ : safeExecutionId(runId))
+ const environmentIdempotencyKey = admission?.idempotencyKey ?? prepared.environmentIdempotencyKey
const plan: TangleRetainedPlan = {
+ runId,
prepared,
- provider: prepared.provider,
+ provider,
+ environmentIdempotencyKey,
executionId,
- providerName: prepared.provider.name,
+ providerName: provider.name,
exactStatus: false,
- ...(controlRef === undefined ? {} : { environmentId: controlRef.environmentId }),
- providerSessionId: controlRef?.sessionId ?? prepared.providerSessionId,
+ ...(environmentId === undefined ? {} : { environmentId }),
+ providerSessionId:
+ exactControlRef?.sessionId ??
+ (admission?.phase === 'intent' || admission?.phase === 'environment'
+ ? admission.sessionId
+ : prepared.providerSessionId),
model: prepared.model,
capabilities: retainedCapabilities(prepared.capabilities, {
sessionContinuation: prepared.capabilities.sessions.continue,
@@ -50,13 +93,14 @@ export function createTangleRetainedPlan(
}),
materializationReceipt: publicMaterializationReceipt({
...prepared.materializationReceipt,
- providerRunId: controlRef?.runId ?? executionId,
+ providerRunId: exactControlRef?.runId ?? executionId,
retainedControl: 'exact-after-dispatch',
}),
start: (input) => startTangleRetainedRun(plan, input),
reconnect: (exact) => reconnectRetainedRun({ provider: plan.provider, controlRef: exact }),
+ recover: (input) => recoverTangleRetainedRun(plan, input),
discover: async (braidRunId, signal) => {
- const exact = await prepared.discoverControlRef(braidRunId, signal)
+ const exact = await prepared.discoverControlRef(braidRunId, signal, executionId)
if (exact === null) return null
if (exact.executionId !== executionId) {
throw new Error('Tangle retained lookup returned another execution')
@@ -105,13 +149,89 @@ export async function startTangleRetainedRun(
backend: plan.prepared.runner,
name: plan.prepared.environmentName,
metadata: plan.prepared.environmentMetadata,
- idempotencyKey: plan.prepared.environmentIdempotencyKey,
+ idempotencyKey: plan.environmentIdempotencyKey,
},
turn,
identity: {
- sessionId: plan.prepared.providerSessionId,
+ sessionId: plan.providerSessionId ?? plan.prepared.providerSessionId,
executionId: plan.executionId,
},
onAdmission: input.onRetainedAdmission,
})
}
+
+async function recoverTangleRetainedRun(
+ plan: TangleRetainedPlan,
+ input: RetainedExecutionRecoveryContext & {
+ readonly admission: RetainedRunAdmissionRecord
+ readonly onRetainedAdmission?: RetainedRunAdmissionRecorder
+ readonly signal?: AbortSignal
+ },
+): Promise {
+ const admission = headlessRetainedAdmission(input.admission)
+ if (admission === undefined) return null
+ if (admissionProvider(admission) !== plan.provider.name) {
+ throw new Error('Retained Tangle admission belongs to another provider')
+ }
+ if (admission.phase === 'intent') {
+ if (input.receipt === undefined || input.onRetainedAdmission === undefined) return null
+ const result = await recoverRetainedRun({
+ provider: plan.provider,
+ admission,
+ replay: {
+ environment: {
+ profile: plan.prepared.profile,
+ backend: plan.prepared.runner,
+ name: plan.prepared.environmentName,
+ metadata: plan.prepared.environmentMetadata,
+ idempotencyKey: admission.idempotencyKey,
+ },
+ turn: {
+ prompt: input.receipt.requested.text,
+ turnId: admission.turnId,
+ interactions: input.receipt.requested.interactions ?? {},
+ ...(input.signal === undefined ? {} : { signal: input.signal }),
+ },
+ identity: {
+ sessionId: admission.sessionId,
+ executionId: admission.executionId,
+ },
+ },
+ onAdmission: input.onRetainedAdmission,
+ })
+ return result.outcome === 'recovered' ? result.handle : null
+ }
+ if (admission.phase !== 'environment') return null
+ const controlRef = await plan.prepared.discoverControlRef(
+ plan.runId,
+ input.signal,
+ admission.executionId,
+ )
+ if (controlRef === null) return null
+ if (
+ controlRef.provider !== plan.provider.name ||
+ controlRef.environmentId !== admission.environmentId ||
+ controlRef.sessionId !== admission.sessionId ||
+ controlRef.executionId !== admission.executionId
+ ) {
+ throw new Error('Tangle retained lookup returned another admitted run')
+ }
+ return reconnectRetainedRun({ provider: plan.provider, controlRef })
+}
+
+function headlessRetainedAdmission(
+ admission: RetainedRunAdmissionRecord | undefined,
+): HeadlessRetainedAdmission | undefined {
+ if (
+ admission?.phase !== 'intent' &&
+ admission?.phase !== 'environment' &&
+ admission?.phase !== 'dispatched'
+ ) {
+ return undefined
+ }
+ return admission
+}
+
+function admissionProvider(admission: HeadlessRetainedAdmission): string {
+ return admission.phase === 'dispatched' ? admission.controlRef.provider : admission.provider
+}
diff --git a/src/adapters/storage/sqlite-crypto.ts b/src/adapters/storage/sqlite-crypto.ts
index ad8f5dd..137797f 100644
--- a/src/adapters/storage/sqlite-crypto.ts
+++ b/src/adapters/storage/sqlite-crypto.ts
@@ -79,6 +79,15 @@ function isSafeInteractionCapabilityFlag(path: string, key: string, value: JsonV
)
}
+function isSafeEnvironmentSecretNames(path: string, key: string, value: JsonValue): boolean {
+ return (
+ path.endsWith('.environment') &&
+ key === 'secretNames' &&
+ Array.isArray(value) &&
+ value.every((name) => typeof name === 'string' && /^[A-Za-z][A-Za-z0-9._-]{0,127}$/u.test(name))
+ )
+}
+
function secretFieldNames(value: JsonValue): readonly string[] {
if (value === null || typeof value !== 'object' || Array.isArray(value)) return []
const fields = (value as Readonly>).fields
@@ -195,12 +204,14 @@ export function assertPersistablePayload(value: JsonValue): void {
isSafeBooleanTelemetryField(key, child) ||
isSafeTokenUsageRecord(key, child))
const isSafeCapability = !containsSecret && isSafeInteractionCapabilityFlag(path, key, child)
+ const isSafeSecretMetadata = !containsSecret && isSafeEnvironmentSecretNames(path, key, child)
if (
SECRET_KEY.test(key) &&
!SAFE_REFERENCE_SUFFIX.test(key) &&
!isSecretMarker &&
!isSafeTelemetry &&
- !isSafeCapability
+ !isSafeCapability &&
+ !isSafeSecretMetadata
) {
throw new StorageError(
'SECRET_PAYLOAD_REJECTED',
diff --git a/src/adapters/tui/application-ui-controller.ts b/src/adapters/tui/application-ui-controller.ts
index 369a1f7..2f44e31 100644
--- a/src/adapters/tui/application-ui-controller.ts
+++ b/src/adapters/tui/application-ui-controller.ts
@@ -43,6 +43,20 @@ interface CachedViewState {
readonly state: BraidState
}
+interface CachedViewProjection {
+ readonly app: BraidApplication
+ readonly state: BraidState
+ readonly storageFailure: string | undefined
+ readonly cleanupUncertain: string | undefined
+ readonly selectedSurface: BraidViewModel['selectedSurface']
+ readonly graphQuery: string
+ readonly interactionResolved: boolean
+ readonly notice: string | undefined
+ readonly forkPreview: BraidViewModel['forkPreview'] | undefined
+ readonly selectedIntelligenceData: unknown
+ readonly value: BraidViewModel
+}
+
export class ApplicationUiController implements BraidUiController {
#app: BraidApplication
readonly #subscribers = new Set()
@@ -64,6 +78,7 @@ export class ApplicationUiController implements BraidUiController {
#forkPreview: BraidViewModel['forkPreview'] | undefined
#selectedIntelligenceData: unknown
#viewStateCache: CachedViewState | undefined
+ #viewProjectionCache: CachedViewProjection | undefined
constructor(
app: BraidApplication,
@@ -87,19 +102,59 @@ export class ApplicationUiController implements BraidUiController {
) {
this.#viewStateCache = { app, revision, state: app.state() }
}
- return this.#project(this.#viewStateCache.state, app)
+ const state = this.#viewStateCache.state
+ const storageFailure = app.storageFailure()
+ const cleanupUncertain = app.cleanupUncertain()
+ const cached = this.#viewProjectionCache
+ if (
+ cached !== undefined &&
+ cached.app === app &&
+ cached.state === state &&
+ cached.storageFailure === storageFailure &&
+ cached.cleanupUncertain === cleanupUncertain &&
+ cached.selectedSurface === this.#selectedSurface &&
+ cached.graphQuery === this.#graphQuery &&
+ cached.interactionResolved === this.#interactionResolved &&
+ cached.notice === this.#notice &&
+ cached.forkPreview === this.#forkPreview &&
+ cached.selectedIntelligenceData === this.#selectedIntelligenceData
+ ) {
+ return cached.value
+ }
+ const value = this.#project(state, app, storageFailure, cleanupUncertain)
+ this.#viewProjectionCache = {
+ app,
+ state,
+ storageFailure,
+ cleanupUncertain,
+ selectedSurface: this.#selectedSurface,
+ graphQuery: this.#graphQuery,
+ interactionResolved: this.#interactionResolved,
+ notice: this.#notice,
+ forkPreview: this.#forkPreview,
+ selectedIntelligenceData: this.#selectedIntelligenceData,
+ value,
+ }
+ return value
}
- #project(state: BraidState, app: BraidApplication): BraidViewModel {
- const canRespond = app.canRespondToInteractions(interactionViews(state)[0]?.runId)
+ #project(
+ state: BraidState,
+ app: BraidApplication,
+ storageFailure: string | undefined,
+ cleanupUncertain: string | undefined,
+ ): BraidViewModel {
+ const canRespond = interactionViews(state).some((interaction) =>
+ app.canRespondToInteractions(interaction.runId),
+ )
const view = withRunUsage(
buildBraidViewModel(
state,
this.#selectedSurface,
this.#appearance,
app.canCancel(),
- app.storageFailure(),
- app.cleanupUncertain(),
+ storageFailure,
+ cleanupUncertain,
canRespond,
this.#graphQuery,
),
@@ -191,6 +246,7 @@ export class ApplicationUiController implements BraidUiController {
this.#app = next
this.#profileConnections = undefined
this.#viewStateCache = undefined
+ this.#viewProjectionCache = undefined
this.#selectedIntelligenceData = undefined
this.#graphQuery = ''
this.#interactionResolved = false
@@ -314,7 +370,7 @@ export class ApplicationUiController implements BraidUiController {
subscriber,
options,
currentView: () => this.view(),
- project: (state) => this.#project(state, app),
+ project: (state) => this.#project(state, app, app.storageFailure(), app.cleanupUncertain()),
})
const unsubscribeApp = app.subscribe((state, envelope) => {
delivery.push(state, toEvent(envelope))
diff --git a/src/adapters/tui/ui-capabilities.ts b/src/adapters/tui/ui-capabilities.ts
index 20f3372..a155db4 100644
--- a/src/adapters/tui/ui-capabilities.ts
+++ b/src/adapters/tui/ui-capabilities.ts
@@ -1,4 +1,9 @@
-import type { BraidState } from '../../domain/state.js'
+import {
+ activeRunForBranch,
+ type BraidState,
+ isLiveRunStatus,
+ isRecoverableRun,
+} from '../../domain/state.js'
import type { CapabilityMap } from '../../views/shared/models.js'
import type { UiFixture } from './ui-fixtures.js'
@@ -18,6 +23,8 @@ export const UNSUPPORTED = Object.freeze({
'interaction.automation': 'Interaction automation requires the shared response contract',
'run.interactive': 'Native terminal mode requires an interactive TUI and a supported provider',
'run.attach': 'Native terminal attachment requires an interactive TUI and a retained session',
+ 'supervisor.worker.attach':
+ 'Worker terminal attachment requires the interactive TUI; Runtime retains the exact worker binding',
'export.create': 'Redacted export is not exposed by the current storage adapter',
} satisfies Readonly>)
@@ -27,7 +34,14 @@ export function capabilityMap(
fixture?: UiFixture,
canRespond = false,
): CapabilityMap {
- const active = state.activeRunId !== null
+ const selectedActive = activeRunForBranch(state, state.conversationId, state.branchId)
+ const active = selectedActive !== undefined
+ const focusedRun = state.focusedRunId
+ ? state.runs.find((run) => run.id === state.focusedRunId)
+ : undefined
+ const focusedActive = focusedRun !== undefined && isLiveRunStatus(focusedRun.status)
+ const focusedDetachedCancellation =
+ focusedRun?.status === 'detached' && focusedRun.capabilities.controls.cancel
const deterministicFixture = state.profile.model?.default === 'fixture/deterministic'
const configuredConnection = state.selectedConnectionId !== null
const capabilities: Record<
@@ -64,6 +78,15 @@ export function capabilityMap(
reason: 'Two completed or failed runs are required for comparison',
}
: { available: true, source: 'application' }
+ capabilities['analysis.cancel'] = state.analyses.some(
+ (analysis) => analysis.status === 'preparing' || analysis.status === 'running',
+ )
+ ? { available: true, source: 'application' }
+ : {
+ available: false,
+ source: 'application',
+ reason: 'There is no running analysis to cancel',
+ }
capabilities['application.quit'] = { available: true, source: 'local' }
capabilities['help.read'] = { available: true, source: 'local' }
capabilities['profile.select'] = { available: true, source: 'application' }
@@ -72,6 +95,44 @@ export function capabilityMap(
capabilities['activity.read'] = { available: true, source: 'local' }
capabilities['graph.read'] = { available: true, source: 'local' }
capabilities['details.read'] = { available: true, source: 'local' }
+ const hasWorkspace = state.workspace !== null
+ const hasRunningWorker = state.workers.some((worker) => worker.status === 'running')
+ const hasRunningSupervisor = state.supervisors.some(
+ (supervisor) => supervisor.status === 'running',
+ )
+ capabilities['supervisor.refresh'] = hasWorkspace
+ ? { available: true, source: 'runtime' }
+ : {
+ available: false,
+ source: 'runtime',
+ reason: 'Initialize a workspace before refreshing runtime supervision',
+ }
+ capabilities['supervisor.worker.steer'] = hasRunningWorker
+ ? { available: true, source: 'runtime' }
+ : {
+ available: false,
+ source: 'runtime',
+ reason: 'There is no running supervised worker to steer',
+ }
+ capabilities['supervisor.worker.cancel'] = hasRunningWorker
+ ? { available: true, source: 'runtime' }
+ : {
+ available: false,
+ source: 'runtime',
+ reason: 'There is no running supervised worker to cancel',
+ }
+ capabilities['supervisor.cancel'] = hasRunningSupervisor
+ ? { available: true, source: 'runtime' }
+ : {
+ available: false,
+ source: 'runtime',
+ reason: 'There is no running supervisor to cancel',
+ }
+ capabilities['supervisor.worker.attach'] = {
+ available: false,
+ source: 'runtime',
+ reason: UNSUPPORTED['supervisor.worker.attach'],
+ }
capabilities['interaction.respond'] = canRespond
? { available: true, source: 'runtime' }
: {
@@ -94,7 +155,7 @@ export function capabilityMap(
reason: 'Initialize a workspace before editing a draft',
}
: { available: true, source: 'application' }
- const conversationsAvailable = state.workspace !== null && !active
+ const conversationsAvailable = state.workspace !== null
for (const capability of [
'conversation.create',
'conversation.open',
@@ -111,7 +172,7 @@ export function capabilityMap(
reason:
state.workspace === null
? 'Initialize a workspace first'
- : 'Finish or cancel the active run first',
+ : 'The workspace is not ready for conversation changes',
}
}
capabilities['run.send'] =
@@ -127,41 +188,35 @@ export function capabilityMap(
: 'Configure a connection before sending',
}
const runConfigurationAvailable =
- state.workspace !== null && !active && (deterministicFixture || configuredConnection)
+ state.workspace !== null && (deterministicFixture || configuredConnection)
for (const capability of ['run.runner', 'run.model', 'run.effort']) {
capabilities[capability] = runConfigurationAvailable
? { available: true, source: 'application' }
: {
available: false,
source: 'application',
- reason: active
- ? 'Finish or cancel the active run first'
- : state.workspace === null
+ reason:
+ state.workspace === null
? 'Initialize a workspace first'
: 'Configure a connection before changing run settings',
}
}
capabilities['run.cancel'] =
- active && canCancel
+ (focusedActive && canCancel) || focusedDetachedCancellation
? { available: true, source: 'runtime' }
: {
available: false,
source: 'runtime',
- reason: active
+ reason: focusedActive
? 'The current runtime does not acknowledge provider cancellation'
- : 'There is no active run to cancel',
+ : focusedRun?.status === 'detached'
+ ? 'The detached run does not advertise remote cancellation'
+ : 'There is no active run to cancel',
}
- const activeRun = state.activeRunId
- ? state.runs.find((run) => run.id === state.activeRunId)
- : undefined
- const recoverableRun = activeRun
- ? undefined
- : [...state.runs]
- .reverse()
- .find(
- (run) =>
- (run.status === 'detached' || run.status === 'unknown') && run.controlRef !== undefined,
- )
+ const focusedRecoverable =
+ focusedRun !== undefined && isRecoverableRun(focusedRun) ? focusedRun : undefined
+ const activeRun = focusedActive && focusedRecoverable === undefined ? focusedRun : undefined
+ const recoverableRun = focusedRecoverable ?? [...state.runs].reverse().find(isRecoverableRun)
capabilities['run.queue'] = activeRun?.capabilities.controls.queue
? { available: true, source: 'provider' }
: {
@@ -190,27 +245,29 @@ export function capabilityMap(
: 'There is no active run',
}
capabilities['run.reconnect'] =
- recoverableRun?.capabilities.streaming.replay && recoverableRun.capabilities.controls.recreate
+ recoverableRun?.capabilities.streaming.replay &&
+ recoverableRun.capabilities.events.cursor &&
+ recoverableRun.capabilities.controls.recreate
? { available: true, source: 'provider' }
: {
available: false,
source: 'provider',
- reason: active
- ? 'Detach the active run before reconnecting it'
- : recoverableRun
- ? 'The detached run cannot be recreated by this provider'
- : 'There is no detached run to reconnect',
+ reason: recoverableRun
+ ? 'The detached run cannot be recreated by this provider'
+ : active
+ ? 'There is no recoverable run to reconnect while another run is active'
+ : 'There is no recoverable run to reconnect',
}
capabilities['run.reconcile'] = recoverableRun?.capabilities.controls.status
? { available: true, source: 'provider' }
: {
available: false,
source: 'provider',
- reason: active
- ? 'Detach the active run before reconciling it'
- : recoverableRun
- ? 'The detached run does not expose provider status'
- : 'There is no detached run to reconcile',
+ reason: recoverableRun
+ ? 'The detached run does not expose provider status'
+ : active
+ ? 'There is no recoverable run to reconcile while another run is active'
+ : 'There is no recoverable run to reconcile',
}
if (fixture === 'interaction') {
capabilities['interaction.respond'] = { available: true, source: 'provider' }
diff --git a/src/adapters/tui/ui-command-dispatch.ts b/src/adapters/tui/ui-command-dispatch.ts
index a94ddf6..7266606 100644
--- a/src/adapters/tui/ui-command-dispatch.ts
+++ b/src/adapters/tui/ui-command-dispatch.ts
@@ -1,6 +1,8 @@
+import { isRecoverableRun } from '../../domain/state.js'
import { commandAvailability, isMutatingCommand } from '../../views/shared/command-registry.js'
import type { BraidIntent, UiDispatchResult } from '../../views/shared/intents.js'
import type { InteractionOutcome, InteractionView } from '../../views/shared/models.js'
+import { runIdForControl } from '../../views/shared/run-selection.js'
import { dispatchAutomationCommand } from './ui-automation-command.js'
import { dispatchConversationRunCommand } from './ui-conversation-dispatch.js'
import { dispatchCoreIntent } from './ui-core-dispatch.js'
@@ -30,8 +32,14 @@ export async function dispatchCommandIntent(
return dispatchCoreIntent({ type: 'shutdown', operationId: intent.operationId ?? '' }, context)
}
if (intent.command === 'cancel') {
+ const view = context.view()
+ const runId = runIdForControl(view, { allowDetached: true })
return dispatchCoreIntent(
- { type: 'cancel-run', operationId: intent.operationId ?? '' },
+ {
+ type: 'cancel-run',
+ operationId: intent.operationId ?? '',
+ ...(runId === undefined ? {} : { runId }),
+ },
context,
)
}
@@ -41,17 +49,17 @@ export async function dispatchCommandIntent(
intent.command === 'reconcile'
) {
const state = context.app.state()
+ const focusedRun =
+ state.focusedRunId === null
+ ? undefined
+ : state.runs.find((run) => run.id === state.focusedRunId)
const runId =
intent.args[0] ??
(intent.command === 'detach'
? (state.activeRunId ?? undefined)
- : [...state.runs]
- .reverse()
- .find(
- (run) =>
- (run.status === 'detached' || run.status === 'unknown') &&
- run.controlRef !== undefined,
- )?.id)
+ : focusedRun !== undefined && isRecoverableRun(focusedRun)
+ ? focusedRun.id
+ : [...state.runs].reverse().find(isRecoverableRun)?.id)
if (runId === undefined) {
return {
kind: 'error',
diff --git a/src/adapters/tui/ui-conversation-dispatch.ts b/src/adapters/tui/ui-conversation-dispatch.ts
index 3e12599..b7c8e25 100644
--- a/src/adapters/tui/ui-conversation-dispatch.ts
+++ b/src/adapters/tui/ui-conversation-dispatch.ts
@@ -67,11 +67,17 @@ export async function dispatchConversationRunCommand(
}
case 'fork': {
const workspace = intent.args.includes('--workspace')
- const throughMessageId = intent.args.find((argument) => argument !== '--workspace')
+ const runner = flagValue(intent.args, '--runner')
+ const destinationProvider = flagValue(intent.args, '--provider')
+ const throughMessageId = intent.args.find((argument) => argument.startsWith('message-'))
+ const text = forkText(intent.args, throughMessageId)
const plan = context.app.conversations.branches.plan({
operationId,
- kind: workspace ? 'workspace' : 'conversation',
+ kind: workspace ? 'workspace' : runner === undefined ? 'conversation' : 'cross-runner',
...(throughMessageId === undefined ? {} : { throughMessageId }),
+ ...(runner === undefined ? {} : { runner }),
+ ...(destinationProvider === undefined ? {} : { destinationProvider }),
+ ...(text === undefined ? {} : { text }),
})
context.setForkPreview(forkPreview(plan))
return accepted(
@@ -282,27 +288,62 @@ export async function dispatchConversationHeadlessCommand(
function forkInput(params: Readonly>, operationId: string) {
const workspace = params.workspace === true || params.workspace === 'true'
+ const runner = optionalStringValue(params.runner)
return {
operationId,
- kind: workspace ? ('workspace' as const) : ('conversation' as const),
+ kind: workspace
+ ? ('workspace' as const)
+ : runner === undefined
+ ? ('conversation' as const)
+ : ('cross-runner' as const),
...optionalString(params, 'conversationId'),
...optionalString(params, 'branchId'),
...renamedOptionalString(params, 'messageId', 'throughMessageId'),
...optionalString(params, 'runner'),
...optionalString(params, 'model'),
...optionalString(params, 'effort'),
+ ...optionalString(params, 'text'),
+ ...optionalString(params, 'acceptedDigest'),
+ ...optionalString(params, 'destinationProvider'),
}
}
+function flagValue(args: readonly string[], flag: string): string | undefined {
+ const inline = args.find((argument) => argument.startsWith(`${flag}=`))
+ if (inline !== undefined) return inline.slice(flag.length + 1) || undefined
+ const index = args.indexOf(flag)
+ const value = index < 0 ? undefined : args[index + 1]
+ return value === undefined || value.startsWith('--') ? undefined : value
+}
+
+function forkText(args: readonly string[], boundary: string | undefined): string | undefined {
+ const values: string[] = []
+ for (let index = 0; index < args.length; index += 1) {
+ const value = args[index]
+ if (value === undefined) continue
+ if (value === '--workspace' || value === boundary) continue
+ if (value === '--runner' || value === '--provider') {
+ index += 1
+ continue
+ }
+ if (value.startsWith('--runner=') || value.startsWith('--provider=')) continue
+ values.push(value)
+ }
+ const text = values.join(' ').trim()
+ return text === '' ? undefined : text
+}
+
function forkPreview(plan: ForkPlan): ForkPreviewView {
return {
plan: Object.freeze(plan),
source: `${plan.sourceConversationId} / ${plan.sourceBranchId}`,
destination: `${plan.sourceConversationId} / ${plan.destinationBranchId}`,
kind: plan.kind,
+ execution: {
+ operationId: plan.operationId,
+ planDigest: plan.digest,
+ },
fields: [
- { label: 'operation id', source: plan.operationId, destination: plan.operationId },
- { label: 'plan digest', source: plan.digest, destination: plan.digest },
{
label: 'conversation context',
source: plan.context.sourceBoundary,
diff --git a/src/adapters/tui/ui-core-dispatch.ts b/src/adapters/tui/ui-core-dispatch.ts
index bb6b733..5699687 100644
--- a/src/adapters/tui/ui-core-dispatch.ts
+++ b/src/adapters/tui/ui-core-dispatch.ts
@@ -21,12 +21,23 @@ export async function dispatchCoreIntent(
): Promise {
switch (intent.type) {
case 'send': {
- const receipt = context.app.send({
- operationId: intent.operationId,
- text: intent.text,
+ const continuationRunId = context.app.nativeContinuationRunId({
...(intent.conversationId ? { conversationId: intent.conversationId } : {}),
...(intent.branchId ? { branchId: intent.branchId } : {}),
})
+ const receipt =
+ continuationRunId === undefined
+ ? context.app.send({
+ operationId: intent.operationId,
+ text: intent.text,
+ ...(intent.conversationId ? { conversationId: intent.conversationId } : {}),
+ ...(intent.branchId ? { branchId: intent.branchId } : {}),
+ })
+ : await context.app.continueNative({
+ operationId: intent.operationId,
+ text: intent.text,
+ runId: continuationRunId,
+ })
if (receipt.admissionReady !== undefined) await receipt.admissionReady
return {
kind: 'accepted',
@@ -56,6 +67,18 @@ export async function dispatchCoreIntent(
completion: receipt.completion.then(() => undefined),
}
}
+ case 'focus-run': {
+ const state = context.app.focusRun({
+ operationId: intent.operationId,
+ runId: intent.runId,
+ })
+ return {
+ kind: 'accepted',
+ operationId: intent.operationId,
+ runId: intent.runId,
+ revision: state.revision,
+ }
+ }
case 'open-surface':
context.setSelectedSurface(
intent.surface === 'settings' ? 'details' : intent.surface,
@@ -109,6 +132,7 @@ export async function dispatchCoreIntent(
const receipt = context.app.queueInput({
operationId: intent.operationId,
text: intent.text,
+ ...(intent.runId === undefined ? {} : { runId: intent.runId }),
})
if (receipt.completion !== undefined) await receipt.completion
return {
@@ -127,6 +151,7 @@ export async function dispatchCoreIntent(
const receipt = await context.app.steer({
operationId: intent.operationId,
text: intent.text,
+ ...(intent.runId === undefined ? {} : { runId: intent.runId }),
})
return {
kind: 'accepted',
diff --git a/src/adapters/tui/ui-entity-details.ts b/src/adapters/tui/ui-entity-details.ts
index dfa6e7c..df3c6aa 100644
--- a/src/adapters/tui/ui-entity-details.ts
+++ b/src/adapters/tui/ui-entity-details.ts
@@ -22,14 +22,17 @@ export function entityDetailsFor(
state: BraidState,
activity: readonly ActivityItemView[],
): EntityDetailView[] {
- const analyses = new Map(state.analyses.map((record) => [String(record.id), record] as const))
- const supervisors = new Map(
- state.supervisors.map((record) => [String(record.id), record] as const),
- )
- const workers = new Map(state.workers.map((record) => [String(record.id), record] as const))
- const environments = new Map(
- state.environments.map((record) => [String(record.id), record] as const),
- )
+ const wanted = new Map>()
+ for (const item of activity) {
+ if (item.entityType === undefined || item.entityId === undefined) continue
+ const ids = wanted.get(item.entityType) ?? new Set()
+ ids.add(item.entityId)
+ wanted.set(item.entityType, ids)
+ }
+ const analyses = selectedRecords(state.analyses, wanted.get('analysis'))
+ const supervisors = selectedRecords(state.supervisors, wanted.get('supervisor'))
+ const workers = selectedRecords(state.workers, wanted.get('worker'))
+ const environments = selectedRecords(state.environments, wanted.get('environment'))
const seen = new Set()
const details: EntityDetailView[] = []
@@ -53,6 +56,21 @@ export function entityDetailsFor(
return details
}
+function selectedRecords(
+ records: readonly T[],
+ ids: ReadonlySet | undefined,
+): ReadonlyMap {
+ if (ids === undefined || ids.size === 0) return new Map()
+ const selected = new Map()
+ for (const record of records) {
+ const id = String(record.id)
+ if (!ids.has(id)) continue
+ selected.set(id, record)
+ if (selected.size === ids.size) break
+ }
+ return selected
+}
+
function environmentDetail(
record: BraidState['environments'][number] | undefined,
): EntityDetailView | undefined {
diff --git a/src/adapters/tui/ui-fixtures.ts b/src/adapters/tui/ui-fixtures.ts
index 8052674..911ab2d 100644
--- a/src/adapters/tui/ui-fixtures.ts
+++ b/src/adapters/tui/ui-fixtures.ts
@@ -12,7 +12,13 @@ import {
} from '../../domain/ids.js'
import type { ForkPreviewView, InteractionView } from '../../views/shared/models.js'
-export type UiFixture = 'interaction' | 'fork' | 'analysis' | 'comparison' | 'product-demo'
+export type UiFixture =
+ | 'interaction'
+ | 'fork'
+ | 'analysis'
+ | 'comparison'
+ | 'product-demo'
+ | 'supervision'
export const FIXTURE_INTERACTION: InteractionView = Object.freeze({
runId: 'fixture-run-1',
@@ -41,6 +47,10 @@ export const FIXTURE_FORK: ForkPreviewView = Object.freeze({
kind: 'workspace',
source: 'workspace:/workspace',
destination: 'workspace:/workspace-fork',
+ execution: Object.freeze({
+ operationId: 'operation-fixture-fork',
+ planDigest: 'digest:fixture-fork-plan',
+ }),
fields: Object.freeze([
{
label: 'conversation context',
@@ -57,16 +67,6 @@ export const FIXTURE_FORK: ForkPreviewView = Object.freeze({
source: 'checkpoint:fixture-1',
destination: 'checkpoint:fixture-1',
},
- {
- label: 'operation id',
- source: 'operation-fixture-fork',
- destination: 'operation-fixture-fork',
- },
- {
- label: 'plan digest',
- source: 'digest:fixture-fork-plan',
- destination: 'digest:fixture-fork-plan',
- },
]),
allowed: true,
})
diff --git a/src/adapters/tui/ui-intelligence-dispatch.ts b/src/adapters/tui/ui-intelligence-dispatch.ts
index 968276e..9d0d624 100644
--- a/src/adapters/tui/ui-intelligence-dispatch.ts
+++ b/src/adapters/tui/ui-intelligence-dispatch.ts
@@ -5,8 +5,11 @@ import type { AnalysisRequest, AnalysisSourceRequest } from '../../app/analysis-
import { AnalysisCapabilityError } from '../../app/analysis-types.js'
import type { BraidApplication } from '../../app/application.js'
import { AppError } from '../../app/errors.js'
+import { runtimeWorkerReference } from '../../app/supervisor-projection.js'
import type { BraidState } from '../../domain/state.js'
+import { capabilityForHeadlessCommand } from '../../views/shared/headless-commands.js'
import type { BraidIntent, UiDispatchResult } from '../../views/shared/intents.js'
+import type { BraidViewModel } from '../../views/shared/models.js'
import { redactSensitiveText } from '../../views/shared/sanitize.js'
import type { UiFixture } from './ui-fixtures.js'
import { resolveIntelligenceFixture } from './ui-intelligence-fixtures.js'
@@ -14,6 +17,7 @@ import { resolveIntelligenceFixture } from './ui-intelligence-fixtures.js'
interface IntelligenceDispatchContext {
readonly app: BraidApplication
readonly fixture: UiFixture | undefined
+ readonly view: () => BraidViewModel
readonly notify: () => void
readonly setNotice: (notice: string) => void
}
@@ -49,12 +53,31 @@ function requiresOperationId(intent: BraidIntent): boolean {
intent.command === 'analyze' ||
intent.command === 'compare' ||
intent.command === 'promote_analysis' ||
+ intent.command === 'cancel_analysis' ||
intent.command === 'reconnect' ||
intent.command === 'steer_worker' ||
- intent.command === 'cancel_worker'
+ intent.command === 'cancel_worker' ||
+ intent.command === 'cancel_supervisor' ||
+ intent.command === 'attach_worker'
)
}
+function isIntelligenceHeadlessCommand(command: string): boolean {
+ return [
+ 'ask',
+ 'analyze',
+ 'compare',
+ 'promote_analysis',
+ 'cancel_analysis',
+ 'reconnect',
+ 'refresh_supervision',
+ 'steer_worker',
+ 'cancel_worker',
+ 'cancel_supervisor',
+ 'attach_worker',
+ ].includes(command)
+}
+
function accepted(app: BraidApplication, data: unknown, operationId?: string): UiDispatchResult {
return {
kind: 'accepted',
@@ -197,11 +220,12 @@ function analysisRequestForCommand(
return { request: { ...source, question, recipe: 'ask' } }
}
if (command === 'analyze') {
- if (args.length !== 1 || !['failure', 'cost', 'tools', 'improvement'].includes(args[0] ?? '')) {
- invalid('INVALID_PARAMS', '/analyze requires one of failure, cost, tools, or improvement')
- }
- const recipe = args[0]
- if (recipe === undefined) invalid('INVALID_PARAMS', '/analyze requires a named recipe')
+ const recipe = args
+ .flatMap((value) => value.split(','))
+ .map((value) => value.trim())
+ .filter(Boolean)
+ .join(',')
+ if (!recipe) invalid('INVALID_PARAMS', '/analyze requires a named recipe or all')
return { request: { ...sourceRequest(state, 'last'), recipe } }
}
invalid('INVALID_PARAMS', '/compare requires two source references')
@@ -249,28 +273,13 @@ async function dispatchSupervisorQuery(
}
}
-function runtimeWorkerReference(
+function runtimeSupervisorReference(
state: BraidState,
supervisorId: string,
- workerId: string,
-):
- | {
- readonly rootDir: string
- readonly runtimeSupervisorId: string
- readonly runtimeWorkerId: string
- }
- | undefined {
+): { readonly rootDir: string; readonly runtimeSupervisorId: string } | undefined {
const supervisor = state.supervisors.find((candidate) => String(candidate.id) === supervisorId)
if (supervisor === undefined || state.workspace !== supervisor.runtimeRoot) return undefined
- const worker = state.workers.find(
- (candidate) => String(candidate.id) === workerId && candidate.supervisorId === supervisor.id,
- )
- if (worker === undefined) return undefined
- return {
- rootDir: supervisor.runtimeRoot,
- runtimeSupervisorId: supervisor.runtimeId,
- runtimeWorkerId: worker.runtimeId,
- }
+ return { rootDir: supervisor.runtimeRoot, runtimeSupervisorId: supervisor.runtimeId }
}
async function dispatchSupervisorWorker(
@@ -285,23 +294,53 @@ async function dispatchSupervisorWorker(
if (typeof supervisorId !== 'string') {
invalid('INVALID_PARAMS', `${command} requires supervisorId and workerId`)
}
- if (command === 'cancel_worker') {
- const result = await context.app.intelligence.supervisor.cancelWorker(workerId)
- return unavailable(issueReason(result.issue))
- }
const reference = runtimeWorkerReference(context.app.state(), supervisorId, workerId)
if (reference === undefined) {
return unavailable('The selected worker is not present under the selected supervisor')
}
+ if (command === 'cancel_worker') {
+ if (operationId === undefined)
+ invalid('OPERATION_ID_REQUIRED', 'cancel_worker requires operationId')
+ const reason = typeof params.reason === 'string' ? params.reason : undefined
+ try {
+ const result = await context.app.intelligence.supervisor.cancelWorker(
+ reference.rootDir,
+ reference.runtimeSupervisorId,
+ reference.runtimeWorkerId,
+ operationId,
+ reason,
+ )
+ if (result.status === 'unavailable') {
+ return unavailable(
+ result.issue === undefined
+ ? 'Worker cancellation is unavailable'
+ : issueReason(result.issue),
+ )
+ }
+ context.setNotice(
+ result.effect === 'cancelled'
+ ? `Worker cancellation confirmed: ${workerId}`
+ : `Worker cancellation ${result.effect ?? 'requested'}: ${workerId}`,
+ )
+ return accepted(context.app, { ...result, worker: workerId }, operationId)
+ } catch (error) {
+ return unavailable(
+ `Worker cancellation is unavailable: ${error instanceof Error ? error.message : String(error)}`,
+ )
+ }
+ }
const text = params.text
if (typeof text !== 'string') {
invalid('INVALID_PARAMS', 'steer_worker requires supervisorId, workerId, and text')
}
+ if (operationId === undefined)
+ invalid('OPERATION_ID_REQUIRED', 'steer_worker requires operationId')
try {
const result = await context.app.intelligence.supervisor.steerWorker(
reference.rootDir,
reference.runtimeSupervisorId,
reference.runtimeWorkerId,
+ operationId,
text,
)
if (result.status === 'unavailable') {
@@ -317,6 +356,48 @@ async function dispatchSupervisorWorker(
}
}
+async function dispatchSupervisorCancel(
+ context: IntelligenceDispatchContext,
+ params: Readonly>,
+ operationId?: string,
+): Promise {
+ const supervisorId = params.supervisorId
+ if (typeof supervisorId !== 'string')
+ invalid('INVALID_PARAMS', 'cancel_supervisor requires supervisorId')
+ if (operationId === undefined)
+ invalid('OPERATION_ID_REQUIRED', 'cancel_supervisor requires operationId')
+ const reference = runtimeSupervisorReference(context.app.state(), supervisorId)
+ if (reference === undefined) {
+ return unavailable('The selected supervisor is not present in the current workspace')
+ }
+ const reason = typeof params.reason === 'string' ? params.reason : undefined
+ try {
+ const result = await context.app.intelligence.supervisor.cancelSupervisor(
+ reference.rootDir,
+ reference.runtimeSupervisorId,
+ operationId,
+ reason,
+ )
+ if (result.status === 'unavailable') {
+ return unavailable(
+ result.issue === undefined
+ ? 'Supervisor cancellation is unavailable'
+ : issueReason(result.issue),
+ )
+ }
+ context.setNotice(
+ result.effect === 'cancelled'
+ ? `Supervisor cancellation confirmed: ${supervisorId}`
+ : `Supervisor cancellation ${result.effect ?? 'requested'}: ${supervisorId}`,
+ )
+ return accepted(context.app, result, operationId)
+ } catch (error) {
+ return unavailable(
+ `Supervisor cancellation is unavailable: ${error instanceof Error ? error.message : String(error)}`,
+ )
+ }
+}
+
export async function dispatchIntelligenceIntent(
intent: BraidIntent,
context: IntelligenceDispatchContext,
@@ -336,6 +417,14 @@ export async function dispatchIntelligenceIntent(
if (operationId === undefined)
invalid('OPERATION_ID_REQUIRED', `${command} requires operationId`)
}
+ if (intent.type === 'headless-command' && isIntelligenceHeadlessCommand(intent.command)) {
+ const capability = capabilityForHeadlessCommand(intent.command)
+ const availability =
+ capability === undefined ? undefined : context.view().capabilities[capability]
+ if (availability !== undefined && !availability.available) {
+ return unavailable(availability.reason ?? 'Capability is unavailable')
+ }
+ }
const fixture = resolveIntelligenceFixture(intent, context.fixture)
if (fixture !== undefined) {
context.setNotice(fixture.notice)
@@ -388,15 +477,25 @@ export async function dispatchIntelligenceIntent(
case 'analyze': {
const source = intent.params.source
const recipe = intent.params.recipe
- if (typeof source !== 'string' || typeof recipe !== 'string') {
- invalid('INVALID_PARAMS', 'analyze requires source and recipe')
+ const analystIds = intent.params.analystIds
+ if (
+ typeof source !== 'string' ||
+ (recipe !== undefined && typeof recipe !== 'string') ||
+ (analystIds !== undefined &&
+ (!Array.isArray(analystIds) || !analystIds.every((id) => typeof id === 'string')))
+ ) {
+ invalid('INVALID_PARAMS', 'analyze requires source and a recipe or analystIds')
}
- if (!['failure', 'cost', 'tools', 'improvement'].includes(recipe)) {
- invalid('INVALID_PARAMS', `Unknown analysis recipe '${recipe}'`)
+ if (recipe === undefined && analystIds === undefined) {
+ invalid('INVALID_PARAMS', 'analyze requires a recipe or analystIds')
}
return runAnalysis(
context,
- { ...sourceRequest(context.app.state(), source), recipe },
+ {
+ ...sourceRequest(context.app.state(), source),
+ ...(recipe === undefined ? {} : { recipe }),
+ ...(analystIds === undefined ? {} : { analystIds }),
+ },
intent.operationId,
)
}
@@ -450,6 +549,25 @@ export async function dispatchIntelligenceIntent(
})
return accepted(context.app, attachment, intent.operationId)
}
+ case 'cancel_analysis': {
+ const analysisId = intent.params.analysisId
+ if (typeof analysisId !== 'string')
+ invalid('INVALID_PARAMS', 'cancel_analysis requires analysisId')
+ const analysis = context.app
+ .state()
+ .analyses.find((candidate) => String(candidate.id) === analysisId)
+ if (analysis === undefined)
+ invalid('UNKNOWN_ANALYSIS', `Analysis ${analysisId} is not present`)
+ const reason =
+ typeof intent.params.reason === 'string'
+ ? intent.params.reason
+ : 'cancelled from analysis activity'
+ if (!context.app.intelligence.analysis.cancel(analysis.id, reason)) {
+ return unavailable(`Analysis ${analysisId} is not active in this process`)
+ }
+ context.setNotice(`Analysis cancellation requested: ${analysisId}`)
+ return accepted(context.app, { analysisId, status: 'cancel_requested' }, intent.operationId)
+ }
case 'reconnect': {
const runId = intent.params.runId
if (
@@ -465,9 +583,17 @@ export async function dispatchIntelligenceIntent(
}
return undefined
}
+ case 'refresh_supervision':
+ return dispatchSupervisorQuery('snapshot', context)
case 'steer_worker':
case 'cancel_worker':
return dispatchSupervisorWorker(intent.command, context, intent.params, intent.operationId)
+ case 'cancel_supervisor':
+ return dispatchSupervisorCancel(context, intent.params, intent.operationId)
+ case 'attach_worker':
+ return unavailable(
+ 'Worker terminal attachment requires the interactive TUI; open runtime activity and press a on a running worker',
+ )
default:
return undefined
}
diff --git a/src/adapters/tui/ui-projection.ts b/src/adapters/tui/ui-projection.ts
index 64c89e8..50106b8 100644
--- a/src/adapters/tui/ui-projection.ts
+++ b/src/adapters/tui/ui-projection.ts
@@ -8,7 +8,7 @@ import { profileModelSettings } from '../../app/profile-model-settings.js'
import { isSensitiveFieldName } from '../../domain/bounded-structured.js'
import type { BraidEventEnvelope } from '../../domain/events.js'
import { interactionRemainingMs } from '../../domain/interaction-timeout.js'
-import type { BraidState } from '../../domain/state.js'
+import { activeRunForBranch, type BraidState, isActiveRunStatus } from '../../domain/state.js'
import { environmentView } from '../../views/shared/environment-presentation.js'
import type { UiEvent } from '../../views/shared/intents.js'
import type {
@@ -21,6 +21,7 @@ import type {
RunView,
TranscriptPartView,
ViewStatus,
+ WorkStripItemView,
} from '../../views/shared/models.js'
import { freezeView } from '../../views/shared/models.js'
import {
@@ -47,15 +48,11 @@ const ALL_PROTOCOL_INTERACTION_OUTCOMES = [
] as const satisfies readonly ProtocolInteractionOutcome[]
export function statusFor(state: BraidState): ViewStatus {
- if (state.activeRunId) {
- const active = state.runs.find((run) => run.id === state.activeRunId)
- if (active?.status === 'cancelling') return 'cancelling'
- if (active?.status === 'reconnecting') return 'reconnecting'
- if (active?.status === 'starting') return 'starting'
- if (active?.status === 'blocked') return 'waiting'
- return 'running'
- }
- const status = state.runs.at(-1)?.status
+ const active = activeRunForBranch(state, state.conversationId, state.branchId)
+ if (active) return viewStatusForRun(active.status)
+ const status = state.runs
+ .filter((run) => run.conversationId === state.conversationId && run.branchId === state.branchId)
+ .at(-1)?.status
if (!status) return state.messages.length === 0 ? 'empty' : 'ready'
switch (status) {
case 'completed':
@@ -87,15 +84,12 @@ export function statusFor(state: BraidState): ViewStatus {
}
}
-function statusForRun(state: BraidState, run: BraidState['runs'][number]): ViewStatus {
- if (state.activeRunId === run.id) {
- if (run.status === 'cancelling') return 'cancelling'
- if (run.status === 'reconnecting') return 'reconnecting'
- if (run.status === 'starting') return 'starting'
- if (run.status === 'blocked') return 'waiting'
- return 'running'
- }
- switch (run.status) {
+function statusForRun(_state: BraidState, run: BraidState['runs'][number]): ViewStatus {
+ return viewStatusForRun(run.status)
+}
+
+function viewStatusForRun(status: BraidState['runs'][number]['status']): ViewStatus {
+ switch (status) {
case 'completed':
return 'completed'
case 'failed':
@@ -244,6 +238,74 @@ export function runViews(state: BraidState): RunView[] {
})
}
+/** Projects the compact multi-run strip without widening the transcript layout. */
+export function workStripFor(state: BraidState): readonly WorkStripItemView[] | undefined {
+ const runs = state.runs.filter((run) => isActiveRunStatus(run.status))
+ const queued = state.queuedInputs.flatMap((entry) => {
+ const run = state.runs.find((candidate) => candidate.id === entry.runId)
+ return run === undefined ? [] : [{ entry, run }]
+ })
+ const focusedRunId = state.focusedRunId ?? state.activeRunId
+ const branchesByConversation = new Map>()
+ for (const run of [...runs, ...queued.map(({ run }) => run)]) {
+ const branches = branchesByConversation.get(run.conversationId) ?? new Set()
+ branches.add(run.branchId)
+ branchesByConversation.set(run.conversationId, branches)
+ }
+ const labelFor = (run: BraidState['runs'][number]): string => {
+ const title = state.conversations.find((item) => item.id === run.conversationId)?.title
+ if (title === undefined) return sanitizeTerminalText(run.branchId)
+ const safeTitle = sanitizeTerminalText(title)
+ return (branchesByConversation.get(run.conversationId)?.size ?? 0) > 1
+ ? `${safeTitle} / ${sanitizeTerminalText(run.branchId)}`
+ : safeTitle
+ }
+ const items: WorkStripItemView[] = runs.map((run) => ({
+ id: run.id,
+ runId: run.id,
+ conversationId: String(run.conversationId),
+ branchId: String(run.branchId),
+ label: labelFor(run),
+ state: viewStatusForRun(run.status),
+ ...(run.receipt.requested.runner === undefined
+ ? {}
+ : { runner: sanitizeTerminalText(run.receipt.requested.runner) }),
+ ...(run.model === undefined ? {} : { model: sanitizeTerminalText(run.model) }),
+ interactionCount: run.interactions.filter((item) => item.status === 'pending').length,
+ focused: run.id === focusedRunId,
+ actions: {
+ switch: true,
+ ask: run.complete && (run.status === 'completed' || run.status === 'failed'),
+ steer: run.capabilities.controls.steer,
+ cancel: run.capabilities.controls.cancel,
+ },
+ }))
+ for (const { entry, run } of queued) {
+ items.push({
+ id: entry.operationId,
+ runId: run.id,
+ conversationId: String(run.conversationId),
+ branchId: String(run.branchId),
+ label: labelFor(run),
+ state: 'queued',
+ ...(run.receipt.requested.runner === undefined
+ ? {}
+ : { runner: sanitizeTerminalText(run.receipt.requested.runner) }),
+ ...(run.model === undefined ? {} : { model: sanitizeTerminalText(run.model) }),
+ interactionCount: run.interactions.filter((item) => item.status === 'pending').length,
+ focused: false,
+ queueOperationId: entry.operationId,
+ actions: {
+ switch: true,
+ ask: run.complete && (run.status === 'completed' || run.status === 'failed'),
+ steer: false,
+ cancel: false,
+ },
+ })
+ }
+ return items.length < 2 ? undefined : Object.freeze(items)
+}
+
function completenessFor(
state: BraidState,
run: BraidState['runs'][number],
@@ -424,11 +486,15 @@ function queueViews(state: BraidState): readonly {
export function activityFor(state: BraidState): ActivityItemView[] {
const workers = new Map(state.workers.map((worker) => [String(worker.id), worker] as const))
+ const analyses = new Map(
+ state.analyses.map((analysis) => [String(analysis.id), analysis] as const),
+ )
const workerDepth = new Map()
const runs = new Map(state.runs.map((run) => [String(run.id), run] as const))
return queryActivity(state, { limit: MAX_VISIBLE_RUNS }).activity.map((item) => {
const run = item.runId === undefined ? undefined : runs.get(item.runId)
const worker = item.entityType === 'worker' ? workers.get(item.entityId ?? '') : undefined
+ const analysis = item.entityType === 'analysis' ? analyses.get(item.entityId ?? '') : undefined
const parentId =
worker?.parentRuntimeRef !== undefined && worker.parentWorkerId === undefined
? undefined
@@ -457,6 +523,16 @@ export function activityFor(state: BraidState): ActivityItemView[] {
...(item.entityId === undefined ? {} : { entityId: item.entityId }),
...(parentId === undefined ? {} : { parentId: String(parentId) }),
...(depth === undefined ? {} : { depth }),
+ ...(worker === undefined ? {} : { supervisorId: String(worker.supervisorId) }),
+ ...(analysis === undefined
+ ? {}
+ : {
+ analysisFindings: analysis.findings.map((finding) => ({
+ id: finding.id,
+ title: sanitizeTerminalText(finding.text),
+ supported: finding.supported && finding.citations.length > 0,
+ })),
+ }),
}
})
}
@@ -667,6 +743,8 @@ export function toHeadlessState(
interactions: interactionViews(state),
queue: queueViews(state),
activeRunId: state.activeRunId,
+ focusedRunId: state.focusedRunId,
+ activeRuns: state.activeRuns,
lastError: state.lastError ? sanitizeTerminalText(state.lastError) : null,
...(storageFailure === undefined
? {}
diff --git a/src/adapters/tui/ui-semantic-state.ts b/src/adapters/tui/ui-semantic-state.ts
index ff8faac..405c5fa 100644
--- a/src/adapters/tui/ui-semantic-state.ts
+++ b/src/adapters/tui/ui-semantic-state.ts
@@ -9,6 +9,13 @@ export interface UiSemanticState {
readonly hiddenNodeCount: number
}
+interface RecentValue {
+ readonly index: number
+ readonly id: string
+ readonly createdAtMs: number
+ readonly updatedAtMs: number
+}
+
/** Bounds terminal graph work while the complete semantic query remains available headlessly. */
export function uiSemanticState(state: BraidState): UiSemanticState {
if (
@@ -19,16 +26,15 @@ export function uiSemanticState(state: BraidState): UiSemanticState {
}
const workersById = new Map(state.workers.map((worker) => [String(worker.id), worker] as const))
- const workersByRecency = orderedByRecency(state.workers)
const workerIds = new Set()
selectRecent(
- workersByRecency,
+ state.workers,
workerIds,
(worker) =>
worker.status === 'pending' || worker.status === 'running' || worker.status === 'waiting',
MAX_RECENT_WORKERS,
)
- selectRecent(workersByRecency, workerIds, () => true, MAX_RECENT_WORKERS)
+ selectRecent(state.workers, workerIds, () => true, MAX_RECENT_WORKERS)
for (const selectedId of [...workerIds]) {
let cursor = workersById.get(selectedId)?.parentWorkerId
@@ -47,14 +53,13 @@ export function uiSemanticState(state: BraidState): UiSemanticState {
const supervisorId = workersById.get(workerId)?.supervisorId
if (supervisorId !== undefined) supervisorIds.add(String(supervisorId))
}
- const supervisorsByRecency = orderedByRecency(state.supervisors)
selectRecent(
- supervisorsByRecency,
+ state.supervisors,
supervisorIds,
(supervisor) => supervisor.status === 'starting' || supervisor.status === 'running',
MAX_RECENT_SUPERVISORS,
)
- selectRecent(supervisorsByRecency, supervisorIds, () => true, MAX_RECENT_SUPERVISORS)
+ selectRecent(state.supervisors, supervisorIds, () => true, MAX_RECENT_SUPERVISORS)
const workers = state.workers.filter((worker) => workerIds.has(String(worker.id)))
const supervisors = state.supervisors.filter((supervisor) =>
@@ -78,29 +83,94 @@ export function uiSemanticState(state: BraidState): UiSemanticState {
}
}
-function orderedByRecency<
- T extends { readonly id: string; readonly createdAt: string; readonly updatedAt: string },
->(values: readonly T[]): T[] {
- return [...values].sort((left, right) => {
- const updated = Date.parse(left.updatedAt) - Date.parse(right.updatedAt)
- if (updated !== 0) return updated
- const created = Date.parse(left.createdAt) - Date.parse(right.createdAt)
- if (created !== 0) return created
- const leftId = String(left.id)
- const rightId = String(right.id)
- return leftId < rightId ? -1 : leftId > rightId ? 1 : 0
- })
+function compareRecent(left: RecentValue, right: RecentValue): number {
+ const updated = left.updatedAtMs - right.updatedAtMs
+ if (Number.isFinite(updated) && updated !== 0) return updated
+ const created = left.createdAtMs - right.createdAtMs
+ if (Number.isFinite(created) && created !== 0) return created
+ if (left.id !== right.id) return left.id < right.id ? -1 : 1
+ return left.index - right.index
}
-function selectRecent(
+function swap(values: RecentValue[], left: number, right: number): void {
+ const value = values[left]
+ const replacement = values[right]
+ if (value === undefined || replacement === undefined) return
+ values[left] = replacement
+ values[right] = value
+}
+
+function restoreMinimumHeap(values: RecentValue[], start: number): void {
+ let parent = start
+ while (true) {
+ const left = parent * 2 + 1
+ const right = left + 1
+ let oldest = parent
+ if (
+ left < values.length &&
+ compareRecent(values[left] as RecentValue, values[oldest] as RecentValue) < 0
+ ) {
+ oldest = left
+ }
+ if (
+ right < values.length &&
+ compareRecent(values[right] as RecentValue, values[oldest] as RecentValue) < 0
+ ) {
+ oldest = right
+ }
+ if (oldest === parent) return
+ swap(values, parent, oldest)
+ parent = oldest
+ }
+}
+
+function addRecent(values: RecentValue[], candidate: RecentValue, limit: number): void {
+ if (values.length < limit) {
+ values.push(candidate)
+ let child = values.length - 1
+ while (child > 0) {
+ const parent = Math.floor((child - 1) / 2)
+ if (compareRecent(values[parent] as RecentValue, values[child] as RecentValue) <= 0) {
+ break
+ }
+ swap(values, parent, child)
+ child = parent
+ }
+ return
+ }
+ const oldest = values[0]
+ if (oldest === undefined || compareRecent(candidate, oldest) <= 0) return
+ values[0] = candidate
+ restoreMinimumHeap(values, 0)
+}
+
+function selectRecent<
+ T extends { readonly id: string; readonly createdAt: string; readonly updatedAt: string },
+>(
values: readonly T[],
selected: Set,
include: (value: T) => boolean,
limit: number,
): void {
- for (let index = values.length - 1; index >= 0 && selected.size < limit; index -= 1) {
+ const remaining = limit - selected.size
+ if (remaining <= 0) return
+ const recent: RecentValue[] = []
+ for (let index = 0; index < values.length; index += 1) {
const value = values[index]
- if (value === undefined || !include(value)) continue
- selected.add(String(value.id))
+ if (value === undefined || selected.has(String(value.id)) || !include(value)) continue
+ addRecent(
+ recent,
+ {
+ index,
+ id: String(value.id),
+ createdAtMs: Date.parse(value.createdAt),
+ updatedAtMs: Date.parse(value.updatedAt),
+ },
+ remaining,
+ )
+ }
+ recent.sort((left, right) => compareRecent(right, left))
+ for (const candidate of recent) {
+ selected.add(candidate.id)
}
}
diff --git a/src/adapters/tui/ui-view-model.ts b/src/adapters/tui/ui-view-model.ts
index 1782166..067af23 100644
--- a/src/adapters/tui/ui-view-model.ts
+++ b/src/adapters/tui/ui-view-model.ts
@@ -1,7 +1,7 @@
import { selectedRunConfiguration } from '../../app/effective-run-configuration.js'
import { profileModelSettings } from '../../app/profile-model-settings.js'
import { canonicalDigest } from '../../domain/canonical.js'
-import type { BraidState } from '../../domain/state.js'
+import { activeRunForBranch, type BraidState } from '../../domain/state.js'
import { type ColorMode, resolveColorMode } from '../../views/shared/appearance.js'
import { environmentView } from '../../views/shared/environment-presentation.js'
import { type BraidViewModel, freezeView } from '../../views/shared/models.js'
@@ -19,6 +19,7 @@ import {
queueViews,
runViews,
statusFor,
+ workStripFor,
} from './ui-projection.js'
import { uiSemanticState } from './ui-semantic-state.js'
@@ -35,10 +36,28 @@ interface SemanticViewProjection {
readonly hiddenGraphNodeCount: number
}
+interface ViewModelCacheEntry {
+ readonly selectedSurface: BraidViewModel['selectedSurface']
+ readonly color: ColorMode
+ readonly highContrast: boolean
+ readonly reducedMotion: boolean
+ readonly canCancel: boolean
+ readonly storageFailure: string | undefined
+ readonly cleanupUncertain: string | undefined
+ readonly canRespond: boolean
+ readonly graphQuery: string
+ readonly value: BraidViewModel
+}
+
const semanticViewCache = new WeakMap<
BraidState,
{ readonly graphQuery: string; readonly projection: SemanticViewProjection }
>()
+/*
+ * State identity changes on every durable revision, so one completed view is safe to retain.
+ * Pending interactions contain wall-clock countdowns, so those views must rebuild.
+ */
+const viewModelCache = new WeakMap()
function semanticViewFor(state: BraidState, graphQuery: string): SemanticViewProjection {
const cached = semanticViewCache.get(state)
@@ -66,6 +85,29 @@ export function buildBraidViewModel(
canRespond = false,
graphQuery = '',
): BraidViewModel {
+ const color =
+ appearance.color === undefined ? ('truecolor' as const) : resolveColorMode(appearance.color)
+ const highContrast = appearance.highContrast ?? false
+ const reducedMotion = appearance.reducedMotion ?? false
+ const hasPendingInteraction = state.runs.some((run) =>
+ run.interactions.some((interaction) => interaction.status === 'pending'),
+ )
+ const cached = viewModelCache.get(state)
+ if (
+ cached !== undefined &&
+ !hasPendingInteraction &&
+ cached.selectedSurface === selectedSurface &&
+ cached.color === color &&
+ cached.highContrast === highContrast &&
+ cached.reducedMotion === reducedMotion &&
+ cached.canCancel === canCancel &&
+ cached.storageFailure === storageFailure &&
+ cached.cleanupUncertain === cleanupUncertain &&
+ cached.canRespond === canRespond &&
+ cached.graphQuery === graphQuery
+ ) {
+ return cached.value
+ }
const status = storageFailure ? ('storage-failure' as const) : statusFor(state)
const latest = state.runs.at(-1)
const latestUsage = latest === undefined ? undefined : usageForRun(latest)
@@ -97,10 +139,10 @@ export function buildBraidViewModel(
? 'cancelled'
: status
const model = profile.model?.default ?? 'automatic'
- const color =
- appearance.color === undefined ? ('truecolor' as const) : resolveColorMode(appearance.color)
const semantic = semanticViewFor(state, graphQuery)
- return freezeView({
+ const selectedActiveRun = activeRunForBranch(state, state.conversationId, state.branchId)
+ const workStrip = workStripFor(state)
+ const view = freezeView({
revision: state.revision,
workspace: state.workspace ? sanitizeTerminalText(state.workspace) : null,
profileName: sanitizeTerminalText(profile.name ?? 'Unnamed profile'),
@@ -166,7 +208,9 @@ export function buildBraidViewModel(
runs: Object.freeze(runViews(state)),
sessionUsage: sessionUsageFor(state),
environments: Object.freeze(state.environments.map(environmentView)),
- ...(state.activeRunId ? { activeRunId: state.activeRunId } : {}),
+ ...(selectedActiveRun ? { activeRunId: selectedActiveRun.id } : {}),
+ ...(state.focusedRunId ? { focusedRunId: state.focusedRunId } : {}),
+ ...(workStrip === undefined ? {} : { workStrip }),
interactions: Object.freeze(interactionViews(state)),
activity: semantic.activity,
graph: semantic.graph,
@@ -201,8 +245,23 @@ export function buildBraidViewModel(
selectedSurface,
appearance: Object.freeze({
color,
- highContrast: appearance.highContrast ?? false,
- reducedMotion: appearance.reducedMotion ?? false,
+ highContrast,
+ reducedMotion,
}),
})
+ if (!hasPendingInteraction) {
+ viewModelCache.set(state, {
+ selectedSurface,
+ color,
+ highContrast,
+ reducedMotion,
+ canCancel,
+ storageFailure,
+ cleanupUncertain,
+ canRespond,
+ graphQuery,
+ value: view,
+ })
+ }
+ return view
}
diff --git a/src/app/analysis-lifecycle.ts b/src/app/analysis-lifecycle.ts
index b64f562..3c6818d 100644
--- a/src/app/analysis-lifecycle.ts
+++ b/src/app/analysis-lifecycle.ts
@@ -1,4 +1,5 @@
import type { AnalysisRecord } from '../domain/entities.js'
+import type { ExactAnalystRunEvent } from '@tangle-network/agent-eval'
import type { RetainedRunAdmissionRecord } from '../domain/run-contracts.js'
import {
type AnalysisIdentity,
@@ -53,12 +54,29 @@ export class AnalysisLifecycle {
await commitAnalysisEvent(this.#host, { kind: 'analysis.created', analysis: record })
}
- async running(record: AnalysisRecord): Promise {
- const running: AnalysisRecord = { ...record, status: 'running', updatedAt: this.#host.now() }
+ async running(record: AnalysisRecord, analystIds: readonly string[]): Promise {
+ const running: AnalysisRecord = {
+ ...record,
+ status: 'running',
+ analysts: analystIds.map((analystId) => ({ analystId, status: 'pending' })),
+ updatedAt: this.#host.now(),
+ }
await commitAnalysisEvent(this.#host, { kind: 'analysis.updated', analysis: running })
return running
}
+ async progress(record: AnalysisRecord, event: ExactAnalystRunEvent): Promise {
+ const analysts = analystProgress(record, event)
+ if (sameAnalystProgress(record.analysts ?? [], analysts)) return record
+ const next: AnalysisRecord = {
+ ...record,
+ analysts,
+ updatedAt: this.#host.now(),
+ }
+ await commitAnalysisEvent(this.#host, { kind: 'analysis.updated', analysis: next })
+ return next
+ }
+
async recordRetainedAdmission(
identity: AnalysisIdentity,
callId: string,
@@ -145,3 +163,71 @@ export class AnalysisLifecycle {
}
}
}
+
+function analystProgress(
+ record: AnalysisRecord,
+ event: ExactAnalystRunEvent,
+): NonNullable {
+ if (event.type === 'run-started') {
+ return event.analyst_ids.map((analystId) => ({ analystId, status: 'pending' }))
+ }
+ if (event.type === 'run-completed') {
+ return event.result.per_analyst.map((summary) =>
+ progressFromSummary(
+ summary,
+ record.analysts?.find((candidate) => candidate.analystId === summary.analyst_id),
+ ),
+ )
+ }
+ const analystId = event.type === 'analyst-started' ? event.analyst_id : event.summary.analyst_id
+ const current = record.analysts ?? []
+ const update =
+ event.type === 'analyst-started'
+ ? { analystId, status: 'running' as const, startedAt: event.started_at }
+ : progressFromSummary(
+ event.summary,
+ current.find((candidate) => candidate.analystId === analystId),
+ )
+ const found = current.some((candidate) => candidate.analystId === analystId)
+ return found
+ ? current.map((candidate) => (candidate.analystId === analystId ? update : candidate))
+ : [...current, update]
+}
+
+function progressFromSummary(
+ summary: Extract['summary'],
+ previous?: NonNullable[number],
+): NonNullable[number] {
+ return {
+ analystId: summary.analyst_id,
+ status:
+ summary.status === 'ok' ? 'completed' : summary.status === 'skipped' ? 'skipped' : 'failed',
+ findingsCount: summary.findings_count,
+ latencyMs: summary.latency_ms,
+ ...(previous?.startedAt === undefined ? {} : { startedAt: previous.startedAt }),
+ ...(summary.reason === undefined
+ ? summary.error === undefined
+ ? {}
+ : { detail: summary.error.message }
+ : { detail: summary.reason }),
+ }
+}
+
+function sameAnalystProgress(
+ left: readonly NonNullable[number][],
+ right: readonly NonNullable[number][],
+): boolean {
+ if (left.length !== right.length) return false
+ return left.every((analyst, index) => {
+ const candidate = right[index]
+ return (
+ candidate !== undefined &&
+ analyst.analystId === candidate.analystId &&
+ analyst.status === candidate.status &&
+ analyst.startedAt === candidate.startedAt &&
+ analyst.findingsCount === candidate.findingsCount &&
+ analyst.latencyMs === candidate.latencyMs &&
+ analyst.detail === candidate.detail
+ )
+ })
+}
diff --git a/src/app/analysis-service.ts b/src/app/analysis-service.ts
index 513262f..69f4f71 100644
--- a/src/app/analysis-service.ts
+++ b/src/app/analysis-service.ts
@@ -105,10 +105,10 @@ export class AnalysisService {
}
await this.#lifecycle.create(current)
yield { type: 'started', analysis: current }
- current = await this.#lifecycle.running(current)
+ const analystIds = this.#execution.resolveAnalystIds(request)
+ current = await this.#lifecycle.running(current, analystIds)
yield { type: 'running', analysis: current }
- const analystIds = this.#execution.resolveAnalystIds(request)
let exactResult: ExactAnalystRunResult | undefined
for await (const item of this.#execution.stream({
identity: prepared.identity,
@@ -120,6 +120,7 @@ export class AnalysisService {
this.#lifecycle.recordRetainedAdmission(prepared.identity, callId, admission),
})) {
if (item.result !== undefined) exactResult = item.result
+ current = await this.#lifecycle.progress(current, item.event)
yield {
type: 'analyst',
analysisId: prepared.identity.analysisId,
diff --git a/src/app/analysis-types.ts b/src/app/analysis-types.ts
index 11ad25b..3714bcb 100644
--- a/src/app/analysis-types.ts
+++ b/src/app/analysis-types.ts
@@ -1,3 +1,4 @@
+import type { ExactAnalystRunEvent } from '@tangle-network/agent-eval'
import type { AgentProfile, HarnessType } from '@tangle-network/agent-interface'
import type {
AnalysisRecord,
@@ -97,7 +98,7 @@ export interface AnalysisProgressAnalyst {
readonly type: 'analyst'
readonly analysisId: AnalysisId
readonly analysisRunId: AnalysisRunId
- readonly event: unknown
+ readonly event: ExactAnalystRunEvent
}
export interface AnalysisProgressCompleted {
diff --git a/src/app/application-interaction-actions.ts b/src/app/application-interaction-actions.ts
index df3fdb2..ac2c5d1 100644
--- a/src/app/application-interaction-actions.ts
+++ b/src/app/application-interaction-actions.ts
@@ -1,6 +1,7 @@
import type { InteractionResponse } from '@tangle-network/agent-interface'
import type { AutomationRuleRecord } from '../domain/entities-runtime.js'
import type { BraidEvent, BraidEventEnvelope } from '../domain/events.js'
+import { localInteractionId } from '../domain/interaction-identity.js'
import { DomainInvariantError } from '../domain/invariants-base.js'
import { assertAutomationRuleRecord } from '../domain/invariants-runtime.js'
import type { BraidState } from '../domain/state.js'
@@ -10,7 +11,11 @@ import { operationId } from './application-guards.js'
import type { PortViews } from './application-port-builder.js'
import type { RuntimeEventEnvelopeLike, RuntimeEventIngestionResult } from './application-ports.js'
import type { InteractionReceipt } from './application-types.js'
-import { type AutomationActions, createAutomationActions } from './automation-actions.js'
+import {
+ type AutomationActions,
+ type AutomationApplyOptions,
+ createAutomationActions,
+} from './automation-actions.js'
import type { SerializedEffectCoordinator } from './effect-coordinator.js'
import { AppError } from './errors.js'
import { InteractionAutomationCoordinator } from './interaction-automation-coordinator.js'
@@ -30,6 +35,7 @@ export interface ApplicationInteractionActionsOptions {
readonly owner: string
readonly ports: () => Pick
readonly whenDurable: () => Promise
+ readonly startupReconciliation?: Promise
readonly responseTimeoutMs?: number
}
@@ -41,28 +47,35 @@ export interface ApplicationInteractionResponseInput {
readonly automationRule?: AutomationRuleRecord
}
+interface InteractionReconciliationOptions {
+ readonly bypassStartupReconciliation?: boolean
+}
+
/** Owns interaction response ordering and automatic rule application. */
export class ApplicationInteractionActions {
readonly automation: AutomationActions
readonly #options: ApplicationInteractionActionsOptions
readonly #responses = new KeyedActionQueue()
readonly #coordinator: InteractionAutomationCoordinator
+ readonly #startupReconciliation: Promise
constructor(options: ApplicationInteractionActionsOptions) {
this.#options = options
+ this.#startupReconciliation = options.startupReconciliation ?? Promise.resolve()
this.automation = createAutomationActions({
state: options.state,
events: options.events,
commitAndWait: options.commitAndWait,
now: options.now,
- respond: (input) => this.respond(input),
+ respond: (input, applyOptions) => this.#respond(input, applyOptions),
+ startupReconciliation: this.#startupReconciliation,
reconcilePending: () => this.reconcile(),
canRespond: (runId) => this.canRespond(runId),
})
this.#coordinator = new InteractionAutomationCoordinator({
state: options.state,
events: options.events,
- apply: (input) => this.automation.apply(input),
+ apply: (input) => this.automation.apply(input, { bypassStartupReconciliation: true }),
})
}
@@ -83,46 +96,65 @@ export class ApplicationInteractionActions {
!this.canRespond(envelope.runId)
)
return
- const interactionId = envelope.event.request.id
+ const interactionId = localInteractionId(envelope.runId, envelope.event.request.id)
const target = this.#options
.state()
.runs.find((run) => run.id === envelope.runId)
?.interactions.find((interaction) => interaction.request.id === interactionId)
- if (target !== undefined) void this.#coordinator.schedule(target)
+ if (target !== undefined) this.#schedule(target)
}
respond(input: ApplicationInteractionResponseInput): Promise {
- return this.#responses.run(`${input.runId}\u0000${input.interactionId}`, () => {
- if (input.automationRule !== undefined) assertAutomationRule(input.automationRule)
- const ports = this.#options.ports()
- return respondInteractionController({
- operationId: operationId(input.operationId, 'respond-interaction'),
- runId: input.runId,
- interactionId: input.interactionId,
- response: input.response,
- ...(input.automationRule === undefined ? {} : { automationRule: input.automationRule }),
- state: ports.state,
- events: this.#options.events,
- commitAndWait: ports.journal.commitAndWait,
- ledger: this.#options.ledger,
- effects: this.#options.effects,
- execution: this.#options.execution,
- owner: this.#options.owner,
- responseTimeoutMs:
- this.#options.responseTimeoutMs ?? DEFAULT_INTERACTION_RESPONSE_TIMEOUT_MS,
- whenDurable: this.#options.whenDurable,
- })
- })
+ return this.#respond(input)
+ }
+
+ #respond(
+ input: ApplicationInteractionResponseInput,
+ options: AutomationApplyOptions = {},
+ ): Promise {
+ const ready =
+ options.bypassStartupReconciliation === true ? Promise.resolve() : this.#startupReconciliation
+ return ready.then(() =>
+ this.#responses.run(`${input.runId}\u0000${input.interactionId}`, () => {
+ if (input.automationRule !== undefined) assertAutomationRule(input.automationRule)
+ const ports = this.#options.ports()
+ return respondInteractionController({
+ operationId: operationId(input.operationId, 'respond-interaction'),
+ runId: input.runId,
+ interactionId: input.interactionId,
+ response: input.response,
+ ...(input.automationRule === undefined ? {} : { automationRule: input.automationRule }),
+ state: ports.state,
+ events: this.#options.events,
+ commitAndWait: ports.journal.commitAndWait,
+ ledger: this.#options.ledger,
+ effects: this.#options.effects,
+ execution: this.#options.execution,
+ owner: this.#options.owner,
+ responseTimeoutMs:
+ this.#options.responseTimeoutMs ?? DEFAULT_INTERACTION_RESPONSE_TIMEOUT_MS,
+ whenDurable: this.#options.whenDurable,
+ })
+ }),
+ )
}
- reconcile(): Promise {
- return this.#coordinator.reconcile()
+ reconcile(options: InteractionReconciliationOptions = {}): Promise {
+ const ready =
+ options.bypassStartupReconciliation === true ? Promise.resolve() : this.#startupReconciliation
+ return ready.then(() => this.#coordinator.reconcile())
}
async whenIdle(): Promise {
await this.#coordinator.whenIdle()
await this.#responses.whenIdle()
}
+
+ #schedule(target: Parameters[0]): void {
+ void this.#startupReconciliation
+ .then(() => this.#coordinator.schedule(target))
+ .catch(() => undefined)
+ }
}
function assertAutomationRule(rule: AutomationRuleRecord): void {
diff --git a/src/app/application-lifecycle.ts b/src/app/application-lifecycle.ts
index 154aa83..4dee37c 100644
--- a/src/app/application-lifecycle.ts
+++ b/src/app/application-lifecycle.ts
@@ -13,6 +13,7 @@ export const DEFAULT_APPLICATION_DRAIN_TIMEOUT_MS = 5_000
export interface LifecycleCloseOptions {
readonly runIds: readonly string[]
+ readonly shouldSettleRun?: (runId: string) => boolean
readonly timeoutMs: number
readonly cancel: (runId: string) => Promise
readonly markUnknown: (runId: string) => Promise
@@ -86,7 +87,10 @@ export class ApplicationLifecycle {
async settleActive(options: LifecycleCloseOptions): Promise {
this.#abortAdmissions()
const deadline = Date.now() + Math.max(0, options.timeoutMs)
- const runIds = [...new Set([...options.runIds, ...this.#active.keys()])]
+ const trackedRunIds = [...this.#active.keys()].filter(
+ (runId) => options.shouldSettleRun?.(runId) ?? true,
+ )
+ const runIds = [...new Set([...options.runIds, ...trackedRunIds])]
await untilDeadline(Promise.allSettled(runIds.map((runId) => options.cancel(runId))), deadline)
const operations = this.activeOperations()
diff --git a/src/app/application-port-builder.ts b/src/app/application-port-builder.ts
index dbc222d..e3650bb 100644
--- a/src/app/application-port-builder.ts
+++ b/src/app/application-port-builder.ts
@@ -25,6 +25,7 @@ import type { RunExecutionSnapshot } from './run-execution-snapshot.js'
import { ingestRuntimeEvent } from './run-ingestion.js'
import type { RunLedger } from './run-ledger.js'
import { reconnectRun } from './run-replay.js'
+import { ApplicationStreamSanitizer } from './run-stream-sanitizer.js'
export interface PortViews {
readonly state: StateReader
@@ -72,6 +73,7 @@ export interface PortBuilderInput {
}
export function buildPortViews(input: PortBuilderInput): PortViews {
+ const streamSanitizer = new ApplicationStreamSanitizer()
const restart: RestartPort = {
...input.state,
...input.journal,
@@ -83,6 +85,7 @@ export function buildPortViews(input: PortBuilderInput): PortViews {
...input.journal,
execution: input.execution,
ledger: input.ledger,
+ streamSanitizer,
executeControl: input.executeControl,
currentEffect: (operationId) => input.effects.current(operationId),
}
@@ -90,6 +93,7 @@ export function buildPortViews(input: PortBuilderInput): PortViews {
...input.state,
...input.journal,
ledger: input.ledger,
+ streamSanitizer,
}
const ingest = (
envelope: RuntimeEventEnvelopeLike,
@@ -123,6 +127,7 @@ export function buildPortViews(input: PortBuilderInput): PortViews {
clock: input.clock,
execution: input.execution,
ledger: input.ledger,
+ streamSanitizer,
ingestRuntimeEvent: ingestion.ingestRuntimeEvent,
reconnectRun: (request) => reconnectRun(replay, request),
send: input.send,
diff --git a/src/app/application-ports.ts b/src/app/application-ports.ts
index dd4a930..b357f60 100644
--- a/src/app/application-ports.ts
+++ b/src/app/application-ports.ts
@@ -13,6 +13,7 @@ import type { IdSource } from '../ports/ids.js'
import type { SendInput, SendReceipt } from './application-types.js'
import type { RunExecutionSnapshot } from './run-execution-snapshot.js'
import type { RunLedger } from './run-ledger.js'
+import type { RuntimeStreamSanitizer } from './run-stream-sanitizer.js'
export interface StateReader {
readonly currentState: () => BraidState
@@ -128,19 +129,28 @@ export type ExecutionRunPort = StateReader &
LedgerAccess &
RuntimeIngestionAccess &
ReconnectAccess &
- SendAccess
+ SendAccess &
+ RuntimeStreamSanitizerAccess
export type ControlPort = StateReader &
JournalWriter &
ExecutionAccess &
LedgerAccess &
+ RuntimeStreamSanitizerAccess &
ControlDispatchAccess & {
readonly currentEffect: (operationId: string) => EffectRecord | undefined
}
export type QueuePort = StateReader & JournalWriter
-export type IngestionPort = StateReader & JournalWriter & LedgerAccess
+export type IngestionPort = StateReader &
+ JournalWriter &
+ LedgerAccess &
+ RuntimeStreamSanitizerAccess
+
+export interface RuntimeStreamSanitizerAccess {
+ readonly streamSanitizer: RuntimeStreamSanitizer
+}
export type ReplayPort = StateReader &
JournalWriter &
diff --git a/src/app/application-support.ts b/src/app/application-support.ts
index 30b526d..0857470 100644
--- a/src/app/application-support.ts
+++ b/src/app/application-support.ts
@@ -6,7 +6,7 @@ import type { RunAdmissionReceipt } from '../domain/receipts.js'
import { redactBraidEvent } from '../domain/redaction.js'
import { reduceEvent } from '../domain/reducer.js'
import { usageSnapshotForRun } from '../domain/run-usage.js'
-import type { BraidState } from '../domain/state.js'
+import { isLiveRunStatus, type BraidState } from '../domain/state.js'
import type { Clock } from '../ports/clock.js'
import type { EffectStoragePort } from '../ports/effect-storage.js'
import type { ControlAcknowledgement } from '../ports/execution.js'
@@ -176,7 +176,7 @@ export function restoreApplicationOperations(
admission: event.receipt,
completion: Promise.resolve(),
})
- if (!isTerminalStatus(run.status)) target.ledger.setAbort(run.id, new AbortController())
+ if (isLiveRunStatus(run.status)) target.ledger.setAbort(run.id, new AbortController())
}
} else if (event.kind === 'run.cancel.requested') {
const restoredRun = target.state().runs.find((run) => run.id === event.runId)
@@ -250,10 +250,19 @@ export function restoreApplicationOperations(
}
export function reconcileRestartRun(context: RestartPort): Promise {
- const runId = context.currentState().activeRunId
- if (!runId) return Promise.resolve()
+ const runIds = context
+ .currentState()
+ .runs.filter((run) => isLiveRunStatus(run.status))
+ .map((run) => run.id)
+ if (runIds.length === 0) return Promise.resolve()
+ return Promise.all(runIds.map((runId) => reconcileRestartRunFor(context, runId))).then(
+ () => undefined,
+ )
+}
+
+async function reconcileRestartRunFor(context: RestartPort, runId: string): Promise {
const run = context.currentState().runs.find((candidate) => candidate.id === runId)
- if (!run || isProvenTerminalStatus(run.status)) return Promise.resolve()
+ if (!run || isProvenTerminalStatus(run.status)) return
if (!context.execution.status) {
if (canReplayAfterRestart(context, run)) return markRestartReconnecting(context, runId)
const unknown = context.commitAndWait({
@@ -264,9 +273,10 @@ export function reconcileRestartRun(context: RestartPort): Promise {
usage: usageSnapshotForRun(run),
error: 'The execution path cannot reconcile provider state after restart',
})
- return Promise.resolve(unknown)
+ if (unknown !== undefined) await unknown
+ return
}
- return reconcileRestartSnapshot(context, runId)
+ await reconcileRestartSnapshot(context, runId)
}
async function reconcileRestartSnapshot(context: RestartPort, runId: string): Promise {
diff --git a/src/app/application-types.ts b/src/app/application-types.ts
index 6871c98..756ca9b 100644
--- a/src/app/application-types.ts
+++ b/src/app/application-types.ts
@@ -1,3 +1,8 @@
+import type {
+ PortableContextPlan as CanonicalPortableContextPlan,
+ ContextTransferReceipt as PortableContextTransferReceipt,
+ ContextTransferRequest as PortableContextTransferRequest,
+} from '@tangle-network/agent-interface'
import type { BraidControlKind, BraidEventEnvelope } from '../domain/events.js'
import type {
ContextTransferReceipt,
@@ -20,6 +25,11 @@ export interface SendInput {
readonly sessionId?: string
readonly contextPlan?: PortableContextPlan
readonly contextTransfer?: ContextTransferReceipt
+ /** Canonical context plan used by a provider-owned fresh session. */
+ readonly portableContextPlan?: CanonicalPortableContextPlan
+ /** Canonical request and receipt are kept separate from Braid's compact receipt. */
+ readonly portableContextTransferRequest?: PortableContextTransferRequest
+ readonly portableContextTransferReceipt?: PortableContextTransferReceipt
readonly nativeContextBoundaryProof?: NativeContextBoundaryProof
}
diff --git a/src/app/application.ts b/src/app/application.ts
index d7f921c..c0119b8 100644
--- a/src/app/application.ts
+++ b/src/app/application.ts
@@ -12,7 +12,7 @@ import type {
import { redactSensitiveText } from '../domain/redaction.js'
import { replayEvents } from '../domain/reducer.js'
import type { RuntimeEventEnvelope } from '../domain/runtime-events.js'
-import { type BraidState, initialState } from '../domain/state.js'
+import { type BraidState, initialState, isLiveRunStatus } from '../domain/state.js'
import type { Clock } from '../ports/clock.js'
import type { ExecuteTurnInput, ExecutionPort } from '../ports/execution.js'
import type { IdSource } from '../ports/ids.js'
@@ -59,6 +59,7 @@ import {
sendRunAsync,
validateNativeProof,
} from './run-admission.js'
+import { resolveNativeContinuationRun } from './run-continuation.js'
import { cancelRun, detachRun, queueRunInput, steerRun } from './run-controls.js'
import type { RunExecutionSnapshot } from './run-execution-snapshot.js'
import { snapshotRunExecution } from './run-execution-snapshot.js'
@@ -96,6 +97,22 @@ export type { BraidApplicationOptions, CancelInput, CancelReceipt } from './appl
const MAX_MESSAGE_BYTES = 1024 * 1024
const DEFAULT_CANCEL_TIMEOUT_MS = 5_000
+interface Deferred {
+ readonly promise: Promise
+ readonly resolve: (value: T | PromiseLike) => void
+ readonly reject: (reason?: unknown) => void
+}
+
+function deferred(): Deferred {
+ let resolve!: Deferred['resolve']
+ let reject!: Deferred['reject']
+ const promise = new Promise((resolvePromise, rejectPromise) => {
+ resolve = resolvePromise
+ reject = rejectPromise
+ })
+ return { promise, resolve, reject }
+}
+
export class BraidApplication {
readonly conversations: ConversationActions
readonly intelligence: IntelligenceActions
@@ -170,6 +187,10 @@ export class BraidApplication {
this.#state = replayEvents(baseState, persisted)
assertBraidState(this.#state)
this.runtimeSelection.syncFromState(this.#state)
+ const interactionReconciliation = deferred()
+ // Keep startup failures observable to callers without creating an unhandled rejection when
+ // no interaction action consumes the barrier.
+ void interactionReconciliation.promise.catch(() => undefined)
this.#interactions = new ApplicationInteractionActions({
state: () => this.#state,
events: () => this.#journal.all(),
@@ -185,6 +206,7 @@ export class BraidApplication {
owner: this.#controlOwner,
ports: () => this.#portViews,
whenDurable: () => this.whenDurable(),
+ startupReconciliation: interactionReconciliation.promise,
...(options.interactionResponseTimeoutMs === undefined
? {}
: { responseTimeoutMs: options.interactionResponseTimeoutMs }),
@@ -289,6 +311,9 @@ export class BraidApplication {
},
coordinate: (input, action) =>
this.#conversationOperations.run(input.operationId, input.digest, action),
+ profile: () => this.runtimeSelection.profile(),
+ execution: this.#execution,
+ send: (input) => this.send(input),
...(options.conversationStorage === undefined
? {}
: { storage: options.conversationStorage }),
@@ -305,7 +330,11 @@ export class BraidApplication {
throw error
})
this.#automationReconciliation = this.#restartReconciliation.then(() =>
- this.#interactions.reconcile(),
+ this.#interactions.reconcile({ bypassStartupReconciliation: true }),
+ )
+ void this.#automationReconciliation.then(
+ () => interactionReconciliation.resolve(),
+ (error: unknown) => interactionReconciliation.reject(error),
)
this.#durableSender = createDurableSender({
currentState: () => this.#state,
@@ -351,8 +380,9 @@ export class BraidApplication {
markCleanupUncertain(reason: string): void {
this.#cleanupUncertain = redactSensitiveText(reason).slice(0, 512)
- const runId = this.#state.activeRunId
- if (runId) this.#ledger.getAbort(runId)?.abort(new Error('Cleanup deadline exceeded'))
+ for (const run of this.#state.activeRuns) {
+ this.#ledger.getAbort(run.runId)?.abort(new Error('Cleanup deadline exceeded'))
+ }
}
async whenDurable(): Promise {
@@ -414,6 +444,25 @@ export class BraidApplication {
}
}
+ nativeContinuationRunId(
+ input: Pick = {},
+ ): string | undefined {
+ const configuration = effectiveRunConfiguration(
+ this.#state,
+ this.runtimeSelection.profile(),
+ input,
+ )
+ return resolveNativeContinuationRun({
+ state: this.#state,
+ conversationId: input.conversationId ?? this.#state.conversationId,
+ branchId: input.branchId ?? this.#state.branchId,
+ profile: configuration.profile,
+ ...(configuration.connectionId === undefined
+ ? {}
+ : { connectionId: configuration.connectionId }),
+ })?.id
+ }
+
queueInput(input: {
readonly operationId: string
readonly text: string
@@ -473,6 +522,15 @@ export class BraidApplication {
}
}
+ focusRun(input: { readonly operationId: string; readonly runId: string }): BraidState {
+ operationId(input.operationId, 'focus-run')
+ const run = this.#state.runs.find((candidate) => candidate.id === input.runId)
+ if (!run) throw new AppError('UNKNOWN_RUN', `Run ${input.runId} is unknown`)
+ if (this.#state.focusedRunId === run.id) return this.state()
+ this.#commit({ kind: 'run.focused', runId: run.id })
+ return this.state()
+ }
+
canCancel(): boolean {
const runId = this.#state.activeRunId
const run = runId ? this.#state.runs.find((candidate) => candidate.id === runId) : undefined
@@ -542,9 +600,17 @@ export class BraidApplication {
readonly text: string
readonly runId?: string
}): Promise {
+ const configuration = effectiveRunConfiguration(
+ this.#state,
+ this.runtimeSelection.profile(),
+ {},
+ )
return continueNative(this.#portViews.nativeContinuation, {
...input,
operationId: operationId(input.operationId, 'continue'),
+ ...(configuration.connectionId === undefined
+ ? {}
+ : { connectionId: configuration.connectionId }),
})
}
@@ -578,6 +644,10 @@ export class BraidApplication {
try {
await this.#lifecycle.settleActive({
runIds: this.#activeRunIds(),
+ shouldSettleRun: (runId) => {
+ const run = this.#state.runs.find((candidate) => candidate.id === runId)
+ return run !== undefined && isLiveRunStatus(run.status)
+ },
timeoutMs: this.#cancelTimeoutMs,
cancel: (runId) => this.#cancelForClose(runId),
markUnknown: (runId) => this.#markRunUnknownAfterCloseDeadline(runId),
@@ -653,9 +723,20 @@ export class BraidApplication {
}
#activeRunIds(): readonly string[] {
- const active = this.#lifecycle.activeOperations().map((operation) => operation.runId)
- const current = this.#state.activeRunId
- return current === null ? active : [...active, current]
+ const active = this.#lifecycle
+ .activeOperations()
+ .filter((operation) => {
+ const run = this.#state.runs.find((candidate) => candidate.id === operation.runId)
+ return run !== undefined && isLiveRunStatus(run.status)
+ })
+ .map((operation) => operation.runId)
+ const current = this.#state.activeRuns
+ .filter((run) => {
+ const record = this.#state.runs.find((candidate) => candidate.id === run.runId)
+ return record !== undefined && isLiveRunStatus(record.status)
+ })
+ .map((run) => run.runId)
+ return [...new Set([...active, ...current])]
}
async #cancelForClose(runId: string): Promise {
diff --git a/src/app/automation-actions.ts b/src/app/automation-actions.ts
index 48eec37..f7d5f06 100644
--- a/src/app/automation-actions.ts
+++ b/src/app/automation-actions.ts
@@ -74,11 +74,19 @@ export interface AutomationApplyCommand {
readonly interactionId: string
}
+export interface AutomationApplyOptions {
+ /** Used by startup reconciliation, which already owns the readiness barrier. */
+ readonly bypassStartupReconciliation?: boolean
+}
+
export interface AutomationActions {
readonly create: (input: AutomationRuleCreateCommand) => Promise
readonly update: (input: AutomationRuleUpdateCommand) => Promise
readonly dryRun: (input: AutomationDryRunCommand) => Promise
- readonly apply: (input: AutomationApplyCommand) => Promise
+ readonly apply: (
+ input: AutomationApplyCommand,
+ options?: AutomationApplyOptions,
+ ) => Promise
readonly disable: (input: {
readonly operationId: string
readonly ruleId: string
@@ -95,13 +103,17 @@ export function createAutomationActions(options: {
readonly events: () => readonly BraidEventEnvelope[]
readonly commitAndWait: AutomationStoreInput['commitAndWait']
readonly now: () => string
- readonly respond: (input: {
- readonly operationId: string
- readonly runId: string
- readonly interactionId: string
- readonly response: import('@tangle-network/agent-interface').InteractionResponse
- readonly automationRule?: AutomationRuleRecord
- }) => Promise
+ readonly respond: (
+ input: {
+ readonly operationId: string
+ readonly runId: string
+ readonly interactionId: string
+ readonly response: import('@tangle-network/agent-interface').InteractionResponse
+ readonly automationRule?: AutomationRuleRecord
+ },
+ options?: AutomationApplyOptions,
+ ) => Promise
+ readonly startupReconciliation?: Promise
readonly reconcilePending?: () => Promise
readonly canRespond: (runId?: string) => boolean
}): AutomationActions {
@@ -158,28 +170,38 @@ export function createAutomationActions(options: {
context: contextFor(state, target, input.context),
})
}),
- apply: (input) =>
- queue.run(async () => {
- const state = options.state()
- const target = targetFor(state, input.runId, input.interactionId)
- if (target === undefined)
- throw new AppError('UNKNOWN_INTERACTION', 'The interaction is no longer available')
- assertCanRespond(options, target)
- return applyAutomation({
- ...store(),
- operationId: input.operationId,
- interaction: target,
- context: contextFor(state, target, undefined),
- respond: (response, { rule }) =>
- options.respond({
- operationId: input.operationId,
- runId: input.runId,
- interactionId: input.interactionId,
- response,
- automationRule: rule,
- }),
- })
- }),
+ apply: (input, applyOptions = {}) => {
+ const ready =
+ applyOptions.bypassStartupReconciliation === true
+ ? Promise.resolve()
+ : (options.startupReconciliation ?? Promise.resolve())
+ return ready.then(() =>
+ queue.run(async () => {
+ const state = options.state()
+ const target = targetFor(state, input.runId, input.interactionId)
+ if (target === undefined)
+ throw new AppError('UNKNOWN_INTERACTION', 'The interaction is no longer available')
+ assertCanRespond(options, target)
+ return applyAutomation({
+ ...store(),
+ operationId: input.operationId,
+ interaction: target,
+ context: contextFor(state, target, undefined),
+ respond: (response, { rule }) =>
+ options.respond(
+ {
+ operationId: input.operationId,
+ runId: input.runId,
+ interactionId: input.interactionId,
+ response,
+ automationRule: rule,
+ },
+ applyOptions,
+ ),
+ })
+ }),
+ )
+ },
disable: async (input) => {
const receipt = await queue.run(() => disableAutomationRule({ ...store(), ...input }))
await options.reconcilePending?.()
diff --git a/src/app/composition-options.ts b/src/app/composition-options.ts
new file mode 100644
index 0000000..df1157d
--- /dev/null
+++ b/src/app/composition-options.ts
@@ -0,0 +1,27 @@
+import type { AgentProfile } from '@tangle-network/agent-interface'
+import type { AgentTurnBackendResolver } from '../adapters/runtime/agent-runtime-execution.js'
+import type { Clock } from '../ports/clock.js'
+import type { EffectStoragePort, JournalPort } from '../ports/effect-storage.js'
+import type { ExecutionPort } from '../ports/execution.js'
+import type { IdSource } from '../ports/ids.js'
+import type { SerializedEffectCoordinator } from './effect-coordinator.js'
+import type { IntelligenceActionsOptions } from './intelligence-actions.js'
+import type { ProductionCompositionConfig } from './production-composition.js'
+
+/** Shared inputs for in-memory, production, and durable application composition. */
+export interface CompositionOptions {
+ readonly fixture?: 'deterministic'
+ readonly clock?: Clock
+ readonly ids?: IdSource
+ readonly profile?: Readonly
+ readonly chunkDelayMs?: number
+ readonly journal?: JournalPort
+ readonly effectStorage?: EffectStoragePort
+ readonly effectCoordinator?: SerializedEffectCoordinator
+ readonly cancelTimeoutMs?: number
+ readonly interactionResponseTimeoutMs?: number
+ readonly execution?: ExecutionPort
+ readonly backendResolver?: AgentTurnBackendResolver
+ readonly production?: ProductionCompositionConfig
+ readonly intelligence?: IntelligenceActionsOptions
+}
diff --git a/src/app/composition.ts b/src/app/composition.ts
index bbfbadc..aaa6406 100644
--- a/src/app/composition.ts
+++ b/src/app/composition.ts
@@ -1,28 +1,14 @@
-import { performance } from 'node:perf_hooks'
-import type { AgentProfile } from '@tangle-network/agent-interface'
-import { defineAgentProfile } from '../adapters/agent-interface/profile-runtime.js'
-import type { HeadlessKeySource } from '../adapters/credentials/headless-key.js'
import { createOperatingSystemCredentialStore } from '../adapters/credentials/os.js'
-import {
- AgentRuntimeExecutionPort,
- type AgentTurnBackendResolver,
-} from '../adapters/runtime/agent-runtime-execution.js'
+import { AgentRuntimeExecutionPort } from '../adapters/runtime/agent-runtime-execution.js'
import { UnavailableExecutionPort } from '../adapters/runtime/unavailable-execution.js'
-import {
- openSqliteStorage,
- type SqliteStartupStage,
- type SqliteStorage,
-} from '../adapters/storage/sqlite.js'
-import { type Clock, FixedClock, SystemClock } from '../ports/clock.js'
+import { FixedClock, SystemClock } from '../ports/clock.js'
import { type CredentialPort, credentialRef } from '../ports/credentials.js'
import type { EffectStoragePort, JournalPort } from '../ports/effect-storage.js'
-import type { ExecutionPort } from '../ports/execution.js'
-import { type IdSource, RandomIds, SequenceIds } from '../ports/ids.js'
-import type { NativeInteractiveExecutionControl } from '../ports/native-interactive-execution.js'
+import { RandomIds, SequenceIds } from '../ports/ids.js'
import { deterministicBackend } from '../testing/deterministic-backend.js'
import { BraidApplication } from './application.js'
-import type { ConnectionRegistry } from './connections.js'
-import type { SerializedEffectCoordinator } from './effect-coordinator.js'
+import type { CompositionOptions } from './composition-options.js'
+import { DETERMINISTIC_PROFILE, STARTER_PROFILE } from './default-profiles.js'
import { FailClosedJournal } from './fail-closed-journal.js'
import type { IntelligenceActionsOptions } from './intelligence-actions.js'
import { createMemoryJournal } from './journal.js'
@@ -31,75 +17,16 @@ import {
type ProductionCompositionConfig,
ProductionCompositionError,
} from './production-composition.js'
-import { StorageJournal } from './storage-journal.js'
import { UnavailableAnalyst } from './unavailable-analyst.js'
-export const STARTER_PROFILE: Readonly = defineAgentProfile({
- name: 'Braid starter',
- description: 'A portable starter profile for the Braid terminal',
-})
-
-export const DETERMINISTIC_PROFILE: Readonly = defineAgentProfile({
- name: 'Braid starter',
- description: 'A portable starter profile for the Braid terminal',
- harness: 'pi',
- model: {
- default: 'fixture/deterministic',
- provider: 'fixture',
- reasoningEffort: 'none',
- },
-})
-
-export interface CompositionOptions {
- readonly fixture?: 'deterministic'
- readonly clock?: Clock
- readonly ids?: IdSource
- readonly profile?: Readonly
- readonly chunkDelayMs?: number
- readonly journal?: JournalPort
- readonly effectStorage?: EffectStoragePort
- readonly effectCoordinator?: SerializedEffectCoordinator
- readonly cancelTimeoutMs?: number
- readonly interactionResponseTimeoutMs?: number
- readonly execution?: ExecutionPort
- readonly backendResolver?: AgentTurnBackendResolver
- readonly production?: ProductionCompositionConfig
- readonly intelligence?: IntelligenceActionsOptions
-}
-
-export interface DurableCompositionOptions
- extends Omit {
- readonly path: string
- /** Directory that may contain Braid's encrypted database and backups. */
- readonly storageRoot?: string
- /** Project directory materialized for agent execution. */
- readonly workspaceRoot?: string
- readonly credentialStore?: CredentialPort
- readonly databaseKeyRef?: import('../ports/credentials.js').CredentialRef
- readonly databaseKeySource?: HeadlessKeySource
- readonly backupDirectory?: string
- readonly execution?: ExecutionPort
- readonly backendResolver?: AgentTurnBackendResolver
- /** Mutable catalog shared with the product connection service. */
- readonly connectionRegistry?: ConnectionRegistry
- readonly startupObserver?: (stage: DurableStartupStage) => void
-}
-
-export interface DurableStartupStage {
- readonly name:
- | 'production-composition'
- | 'storage-open'
- | `storage.${SqliteStartupStage['name']}`
- | 'journal-restore'
- | 'application-create'
- readonly durationMs: number
-}
-
-export interface DurableBraidApplication {
- readonly app: BraidApplication
- readonly storage: SqliteStorage
- readonly nativeInteractive?: NativeInteractiveExecutionControl
-}
+export {
+ createDurableBraidApplication,
+ type DurableBraidApplication,
+ type DurableCompositionOptions,
+ type DurableStartupStage,
+} from '../startup/durable-runtime.js'
+export { DETERMINISTIC_PROFILE, STARTER_PROFILE } from './default-profiles.js'
+export type { CompositionOptions } from './composition-options.js'
export type ProductionBraidApplicationOptions = Omit
@@ -169,8 +96,16 @@ export function createBraidApplication(options: CompositionOptions = {}): BraidA
options.journal ?? (isFixture ? createMemoryJournal(clock) : new FailClosedJournal(clock))
const effectStorage =
options.effectStorage ?? (isEffectStorage(journal) ? journal : new FailClosedJournal(clock))
- const intelligence =
+ const configuredIntelligence: IntelligenceActionsOptions | undefined =
options.intelligence ?? (isFixture ? undefined : { analyst: new UnavailableAnalyst() })
+ const intelligence =
+ production?.supervisorController === undefined
+ ? configuredIntelligence
+ : {
+ ...(configuredIntelligence ?? {}),
+ supervisorController:
+ configuredIntelligence?.supervisorController ?? production.supervisorController,
+ }
return new BraidApplication({
profile:
options.profile ??
@@ -204,114 +139,3 @@ export function createProductionBraidApplication(
}
return createBraidApplication(options)
}
-
-export async function createDurableBraidApplication(
- options: DurableCompositionOptions,
-): Promise {
- const clock = options.clock ?? new SystemClock()
- const credentialStore = options.credentialStore ?? createOperatingSystemCredentialStore()
- let stageStarted = performance.now()
- const production =
- options.production === undefined
- ? undefined
- : createProductionComposition(
- withProductionCredentialOptions(
- {
- ...options.production,
- ...(options.workspaceRoot === undefined
- ? {}
- : { workspaceRoot: options.workspaceRoot }),
- },
- credentialStore,
- ),
- options.connectionRegistry,
- )
- reportStartupStage(options.startupObserver, 'production-composition', stageStarted)
- stageStarted = performance.now()
- const storage = await openSqliteStorage({
- path: options.path,
- credentialStore,
- ...(options.storageRoot === undefined && options.workspaceRoot === undefined
- ? {}
- : { workspaceRoot: options.storageRoot ?? options.workspaceRoot }),
- ...(options.databaseKeyRef === undefined ? {} : { databaseKeyRef: options.databaseKeyRef }),
- ...(options.databaseKeySource === undefined
- ? {}
- : { databaseKeySource: options.databaseKeySource }),
- ...(options.backupDirectory === undefined ? {} : { backupDirectory: options.backupDirectory }),
- startupObserver: (stage) =>
- reportObservedStartupStage(
- options.startupObserver,
- `storage.${stage.name}`,
- stage.durationMs,
- ),
- })
- reportStartupStage(options.startupObserver, 'storage-open', stageStarted)
- try {
- stageStarted = performance.now()
- const scopedJournal = await StorageJournal.fromStorage(storage, clock)
- reportStartupStage(options.startupObserver, 'journal-restore', stageStarted)
- stageStarted = performance.now()
- const app = new BraidApplication({
- profile: options.profile ?? production?.profile ?? STARTER_PROFILE,
- execution:
- options.execution ??
- production?.execution ??
- (options.backendResolver
- ? new AgentRuntimeExecutionPort(options.backendResolver)
- : new UnavailableExecutionPort()),
- clock,
- ids: options.ids ?? new RandomIds(),
- journal: scopedJournal,
- effectStorage: storage,
- conversationStorage: storage,
- ...(options.intelligence === undefined
- ? { intelligence: { analyst: new UnavailableAnalyst() } }
- : { intelligence: options.intelligence }),
- ...(options.effectCoordinator === undefined
- ? {}
- : { effectCoordinator: options.effectCoordinator }),
- ...(options.cancelTimeoutMs === undefined
- ? {}
- : { cancelTimeoutMs: options.cancelTimeoutMs }),
- ...(options.interactionResponseTimeoutMs === undefined
- ? {}
- : { interactionResponseTimeoutMs: options.interactionResponseTimeoutMs }),
- })
- reportStartupStage(options.startupObserver, 'application-create', stageStarted)
- return {
- app,
- storage,
- ...(production?.nativeInteractive === undefined
- ? {}
- : { nativeInteractive: production.nativeInteractive }),
- }
- } catch (error) {
- await storage.close().catch(() => undefined)
- throw error
- }
-}
-
-function reportObservedStartupStage(
- observer: DurableCompositionOptions['startupObserver'],
- name: DurableStartupStage['name'],
- durationMs: number,
-): void {
- try {
- observer?.({ name, durationMs })
- } catch {
- // Diagnostics cannot change application startup.
- }
-}
-
-function reportStartupStage(
- observer: DurableCompositionOptions['startupObserver'],
- name: DurableStartupStage['name'],
- startedAt: number,
-): void {
- try {
- observer?.({ name, durationMs: performance.now() - startedAt })
- } catch {
- // Diagnostics cannot change application startup.
- }
-}
diff --git a/src/app/connections.ts b/src/app/connections.ts
index c381502..aa681ad 100644
--- a/src/app/connections.ts
+++ b/src/app/connections.ts
@@ -112,6 +112,8 @@ export function mergeConnectionTelemetry(
saved.workspaceId !== observed.workspaceId ||
saved.endpoint !== observed.endpoint ||
saved.credentialRef !== observed.credentialRef ||
+ canonicalDigest(saved.confidentialAttestationPolicy ?? null) !==
+ canonicalDigest(observed.confidentialAttestationPolicy ?? null) ||
canonicalDigest(saved.providerOptions) !== canonicalDigest(observed.providerOptions)
) {
return saved
@@ -164,6 +166,7 @@ function assertSecretFree(record: ConnectionRecord): void {
'name',
'endpoint',
'credentialRef',
+ 'confidentialAttestationPolicy',
'providerOptions',
'createdAt',
'updatedAt',
@@ -217,6 +220,8 @@ function assertSecretFree(record: ConnectionRecord): void {
record.providerOptions.account,
record.providerOptions.lifecycle,
...(record.providerOptions.capabilityHints ?? []),
+ ...(record.confidentialAttestationPolicy?.acceptedMeasurements ?? []),
+ ...(record.confidentialAttestationPolicy?.acceptedPolicyIds ?? []),
...('message' in record.lastHealth ? [record.lastHealth.message] : []),
...(record.lastModelVerification === undefined
? []
@@ -256,8 +261,21 @@ function freezeConnectionRecord(record: ConnectionRecord): ConnectionRecord {
record.lastModelVerification === undefined
? undefined
: Object.freeze({ ...record.lastModelVerification })
+ const confidentialAttestationPolicy =
+ record.confidentialAttestationPolicy === undefined
+ ? undefined
+ : Object.freeze({
+ ...record.confidentialAttestationPolicy,
+ acceptedMeasurements: Object.freeze([
+ ...record.confidentialAttestationPolicy.acceptedMeasurements,
+ ]),
+ acceptedPolicyIds: Object.freeze([
+ ...record.confidentialAttestationPolicy.acceptedPolicyIds,
+ ]),
+ })
return Object.freeze({
...record,
+ ...(confidentialAttestationPolicy === undefined ? {} : { confidentialAttestationPolicy }),
providerOptions,
lastHealth,
...(lastModelVerification === undefined ? {} : { lastModelVerification }),
diff --git a/src/app/conversation-branch-effects.ts b/src/app/conversation-branch-effects.ts
new file mode 100644
index 0000000..9c55a52
--- /dev/null
+++ b/src/app/conversation-branch-effects.ts
@@ -0,0 +1,1126 @@
+import {
+ type ContextTransferRequest,
+ type ContextTransferResult,
+ contextTransferRequestDigest,
+ contextTransferResultMatchesRequest,
+ forkedEnvironmentConfidentialityVerified,
+ type PlacementInfo,
+ type PortableContextPlanRequest,
+ type PortableContextPlanResult,
+ portableContextPlanRequestDigest,
+ portableContextPlanResultMatchesRequest,
+ type WorkspaceCheckpointRequest,
+ type WorkspaceCheckpointResult,
+ type WorkspaceCleanupAcknowledgement,
+ type WorkspaceCleanupRequest,
+ type WorkspaceForkRequest,
+ type WorkspaceForkResult,
+ workspaceCheckpointRequestDigest,
+ workspaceCheckpointResultMatchesRequest,
+ workspaceCleanupAcknowledgementMatches,
+ workspaceCleanupRequestDigest,
+ workspaceForkRequestDigest,
+ workspaceForkResultMatchesRequest,
+} from '@tangle-network/agent-interface'
+import { canonicalDigest } from '../domain/canonical.js'
+import type {
+ BranchRecord,
+ CheckpointRecord,
+ EnvironmentRecord,
+ OperationRecord,
+} from '../domain/entities.js'
+import { graphEdge, graphNode } from '../domain/graph-records.js'
+import {
+ createCheckpointId,
+ createEnvironmentId,
+ type Digest,
+ parseBranchId,
+ parseCheckpointId,
+ parseEnvironmentId,
+ parseMessageId,
+ parseOperationId,
+ parseRunId,
+} from '../domain/ids.js'
+import { assertJsonValue, objectValue } from '../domain/invariants-base.js'
+import { type BraidState, isActiveRunStatus } from '../domain/state.js'
+import type { ExecutionPort } from '../ports/execution.js'
+import type {
+ ConversationHost,
+ ForkPlan,
+ ForkPlanInput,
+ WorkspaceForkCleanupInput,
+ WorkspaceForkCleanupResult,
+} from './conversation-types.js'
+import { AppError } from './errors.js'
+
+type ForkExecutionInput = ForkPlanInput & { readonly planDigest: string }
+type CreateBranch = (input: ForkPlanInput) => Promise
+
+/** Execute provider-owned context transfer or workspace branching. */
+export async function executeBranchEffect(
+ host: ConversationHost,
+ input: ForkExecutionInput,
+ plan: ForkPlan,
+ createBranch: CreateBranch,
+): Promise {
+ if (plan.kind === 'cross-runner') return executeCrossRunner(host, input, plan, createBranch)
+ if (plan.kind === 'workspace') return executeWorkspace(host, input, plan, createBranch)
+ throw new AppError('FORK_PLAN_CONFLICT', 'The provider effect does not match this fork plan')
+}
+
+/** Explicitly release provider checkpoint and fork resources. */
+export async function cleanupWorkspaceFork(
+ host: ConversationHost,
+ input: WorkspaceForkCleanupInput,
+): Promise {
+ const execution = host.execution
+ const state = host.state()
+ const operationId = parseOperationId(input.operationId)
+ const checkpoint =
+ input.checkpointId === undefined
+ ? undefined
+ : state.checkpoints.find(
+ (candidate) => candidate.id === parseCheckpointId(input.checkpointId),
+ )
+ const environment =
+ input.environmentId === undefined
+ ? undefined
+ : state.environments.find(
+ (candidate) => candidate.id === parseEnvironmentId(input.environmentId),
+ )
+ if (input.checkpointId !== undefined && checkpoint === undefined)
+ throw new AppError('UNKNOWN_CHECKPOINT', `Checkpoint ${input.checkpointId} is unavailable`)
+ if (input.environmentId !== undefined && environment === undefined)
+ throw new AppError('UNKNOWN_ENVIRONMENT', `Environment ${input.environmentId} is unavailable`)
+ if (checkpoint === undefined && environment === undefined)
+ throw new AppError('INVALID_CLEANUP', 'Specify a checkpoint or destination environment')
+ if (environment !== undefined && checkpoint !== undefined) {
+ if (environment.id === checkpoint.sourceEnvironmentId)
+ throw new AppError('INVALID_CLEANUP', 'The source environment cannot be cleaned up')
+ const forked = state.graphEdges.some((edge) => {
+ const source = graphReference(state, edge.source)
+ const destination = graphReference(state, edge.destination)
+ return (
+ edge.kind === 'forked_environment' &&
+ destination?.kind === 'environment' &&
+ destination.id === environment.id &&
+ source?.kind === 'checkpoint' &&
+ source.id === checkpoint.id
+ )
+ })
+ if (!forked)
+ throw new AppError(
+ 'INVALID_CLEANUP',
+ 'The destination environment is not the fork created from this checkpoint',
+ )
+ }
+ if (environment !== undefined && checkpoint === undefined) {
+ const forked = state.graphEdges.some((edge) => {
+ const destination = graphReference(state, edge.destination)
+ return (
+ edge.kind === 'forked_environment' &&
+ destination?.kind === 'environment' &&
+ destination.id === environment.id
+ )
+ })
+ if (!forked)
+ throw new AppError('INVALID_CLEANUP', 'Only a recorded forked environment can be cleaned up')
+ }
+ const providerCheckpointId =
+ checkpoint === undefined ? undefined : providerCheckpointIdFor(state, checkpoint)
+ if (checkpoint !== undefined && providerCheckpointId === undefined)
+ throw new AppError('UNKNOWN_CHECKPOINT', 'The checkpoint has no provider reference')
+ if (environment !== undefined && environment.providerEnvironmentId === undefined)
+ throw new AppError('UNKNOWN_ENVIRONMENT', 'The environment has no provider reference')
+ assertCleanupCapabilities(state, checkpoint, environment)
+ const sourceEnvironment = sourceEnvironmentForCleanup(state, checkpoint, environment)
+ const digest = canonicalDigest({
+ command: 'cleanup_workspace_fork',
+ operationId,
+ checkpointId: checkpoint?.id ?? null,
+ providerCheckpointId: providerCheckpointId ?? null,
+ environmentId: environment?.id ?? null,
+ providerEnvironmentId: environment?.providerEnvironmentId ?? null,
+ })
+ const reserved = await reserveOperation(host, operationId, digest)
+ const existing = reserved.operations.find((candidate) => candidate.id === operationId)
+ if (existing?.status === 'acknowledged') {
+ const result = cleanupResultFromOperation(existing)
+ if (result === undefined)
+ throw new AppError('OPERATION_INCOMPLETE', `Operation ${operationId} has no cleanup result`)
+ return result
+ }
+ const previous = cleanupResultFromOperation(existing)
+ const branching = await workspaceBranchingForEnvironment(
+ execution,
+ sourceEnvironment?.providerEnvironmentId,
+ )
+ if (!hasWorkspaceBranching(branching))
+ throw new AppError('CAPABILITY_UNAVAILABLE', 'Workspace cleanup is unavailable')
+
+ const checkpointOutcome =
+ checkpoint === undefined
+ ? 'not_requested'
+ : previous?.checkpoint === 'deleted' || previous?.checkpoint === 'already_absent'
+ ? previous.checkpoint
+ : await cleanupCheckpoint(
+ host,
+ branching,
+ derivedOperationId(String(operationId), 'checkpoint-cleanup'),
+ checkpoint,
+ )
+ await updateOperation(host, operationId, digest, {
+ status: 'pending',
+ result: { checkpoint: checkpointOutcome, environment: 'not_requested' },
+ })
+ const environmentOutcome =
+ environment === undefined
+ ? 'not_requested'
+ : previous?.environment === 'deleted' || previous?.environment === 'already_absent'
+ ? previous.environment
+ : await cleanupEnvironment(
+ host,
+ branching,
+ derivedOperationId(String(operationId), 'fork-cleanup'),
+ environment,
+ )
+ const result: WorkspaceForkCleanupResult = {
+ checkpoint: checkpointOutcome,
+ environment: environmentOutcome,
+ }
+ await acknowledgeCleanupOperation(host, operationId, digest, result)
+ return result
+}
+
+async function executeCrossRunner(
+ host: ConversationHost,
+ input: ForkExecutionInput,
+ plan: ForkPlan,
+ createBranch: CreateBranch,
+): Promise {
+ const portablePlan = plan.portableContextPlan
+ const contextPort = contextTransferPort(host.execution)
+ if (portablePlan === undefined || contextPort?.transfer === undefined)
+ throw new AppError(
+ 'CAPABILITY_UNAVAILABLE',
+ 'Canonical fresh-session context transfer is unavailable',
+ )
+ const state = host.state()
+ const sourceEnvironment =
+ plan.sourceEnvironmentId === undefined
+ ? undefined
+ : state.environments.find((environment) => environment.id === plan.sourceEnvironmentId)
+ if (sourceEnvironment === undefined || sourceEnvironment.providerEnvironmentId === undefined)
+ throw new AppError(
+ 'CAPABILITY_UNAVAILABLE',
+ 'Canonical context transfer requires a recorded source environment',
+ )
+ if (sourceEnvironment.placement.provider !== portablePlan.source.source.provider)
+ throw new AppError(
+ 'FORK_PLAN_CONFLICT',
+ 'The portable plan names a different source provider than the recorded environment',
+ )
+ if (sourceEnvironment.providerEnvironmentId !== portablePlan.source.source.environmentId)
+ throw new AppError(
+ 'FORK_PLAN_CONFLICT',
+ 'The portable plan names a different source environment',
+ )
+ if (portablePlan.requiresAcceptance && input.acceptedDigest !== portablePlan.digest)
+ throw new AppError(
+ 'CONTEXT_PLAN_ACCEPTANCE_REQUIRED',
+ 'The transformed portable context plan requires explicit acceptance',
+ )
+
+ const operationId = parseOperationId(input.operationId)
+ const digest = canonicalDigest({
+ command: 'execute_cross_runner_fork',
+ operationId,
+ planDigest: plan.digest,
+ acceptedDigest: input.acceptedDigest ?? null,
+ })
+ const reserved = await reserveOperation(host, operationId, digest)
+ const existing = reserved.operations.find((operation) => operation.id === operationId)
+ if (existing?.status === 'acknowledged') return branchForOperation(state, existing)
+ const acceptedAt = existing?.createdAt ?? host.now()
+
+ const planRequestMaterial = {
+ requestId: `${input.operationId}:plan`,
+ source: portablePlan.source,
+ destination: portablePlan.destination,
+ }
+ const planRequest: PortableContextPlanRequest = {
+ ...planRequestMaterial,
+ requestDigest: portableContextPlanRequestDigest(planRequestMaterial),
+ }
+ if (contextPort.plan !== undefined) {
+ const planned = await contextPort.plan(planRequest)
+ if (!portableContextPlanResultMatchesRequest(planRequest, planned))
+ throw new AppError(
+ 'CONTEXT_PLAN_CONFLICT',
+ 'The provider context plan does not match its request',
+ )
+ assertReadyPlan(planned)
+ if (planned.plan.digest !== portablePlan.digest)
+ throw new AppError('CONTEXT_PLAN_CONFLICT', 'The provider changed the accepted context plan')
+ }
+
+ const transferMaterial = {
+ operationId: `${input.operationId}:context`,
+ plan: portablePlan,
+ acceptance: {
+ planDigest: portablePlan.digest,
+ acceptedAt,
+ acceptedBy: input.acceptedDigest === undefined ? ('policy' as const) : ('user' as const),
+ },
+ }
+ const transferRequest: ContextTransferRequest = {
+ ...transferMaterial,
+ requestDigest: contextTransferRequestDigest(transferMaterial),
+ }
+ const transfer = await lookupOrTransfer(contextPort, transferRequest)
+ if (!contextTransferResultMatchesRequest(transferRequest, transfer))
+ throw new AppError(
+ 'CONTEXT_RECEIPT_CONFLICT',
+ 'The context transfer result does not match its request',
+ )
+ const receipt = assertAcceptedTransfer(transfer)
+ const destinationEnvironment = await recordDestinationEnvironment(host, plan, receipt)
+ const branch = await createBranch({
+ ...input,
+ operationId: derivedOperationId(input.operationId, 'branch'),
+ destinationBranchId: plan.destinationBranchId,
+ ...(destinationEnvironment === undefined ? {} : { environmentId: destinationEnvironment.id }),
+ })
+ await recordHandedOffEdge(host, plan, branch, receipt.contextDigest, operationId)
+
+ if (input.text !== undefined && input.text.trim() !== '' && host.send !== undefined) {
+ const sent = host.send({
+ operationId: derivedOperationId(input.operationId, 'send'),
+ conversationId: branch.conversationId,
+ branchId: branch.id,
+ text: input.text,
+ sessionId: receipt.sessionId,
+ portableContextPlan: portablePlan,
+ portableContextTransferRequest: transferRequest,
+ portableContextTransferReceipt: receipt,
+ })
+ await sent.admissionReady
+ }
+ await acknowledgeOperation(host, operationId, digest, branch, {
+ kind: 'handoff',
+ branchId: String(branch.id),
+ planDigest: plan.digest,
+ receipt,
+ })
+ return branch
+}
+
+async function executeWorkspace(
+ host: ConversationHost,
+ input: ForkExecutionInput,
+ plan: ForkPlan,
+ createBranch: CreateBranch,
+): Promise {
+ const state = host.state()
+ const operationId = parseOperationId(input.operationId)
+ const sourceRun = sourceRunForPlan(state, plan)
+ const source = sourceRun?.controlRef
+ if (sourceRun === undefined || source === undefined)
+ throw new AppError(
+ 'CAPABILITY_UNAVAILABLE',
+ 'Workspace fork requires an exact source run reference',
+ )
+ const sourceEnvironment = plan.sourceEnvironmentId
+ if (sourceEnvironment === undefined || sourceRun.environmentId === undefined)
+ throw new AppError(
+ 'CAPABILITY_UNAVAILABLE',
+ 'Workspace fork requires a recorded source environment',
+ )
+ if (sourceRun.environmentId !== parseEnvironmentId(sourceEnvironment))
+ throw new AppError('FORK_PLAN_CONFLICT', 'The source run and branch environment do not match')
+ const sourceEnvironmentRecord = state.environments.find(
+ (environment) => environment.id === parseEnvironmentId(sourceEnvironment),
+ )
+ if (
+ sourceEnvironmentRecord === undefined ||
+ sourceEnvironmentRecord.providerEnvironmentId !== source.environmentId
+ )
+ throw new AppError(
+ 'CAPABILITY_UNAVAILABLE',
+ 'Workspace fork requires an exact recorded source environment',
+ )
+ if (sourceEnvironmentRecord.placement.provider !== source.provider)
+ throw new AppError(
+ 'FORK_PLAN_CONFLICT',
+ 'The source run and environment belong to different providers',
+ )
+ if (!sourceRun.complete || isActiveRunStatus(sourceRun.status) || sourceRun.status === 'unknown')
+ throw new AppError(
+ 'CAPABILITY_UNAVAILABLE',
+ 'Workspace fork requires a completed source run boundary',
+ )
+ const capabilities = sourceRun.capabilities.environment?.branching
+ if (
+ capabilities?.checkpoint !== true ||
+ capabilities.fork !== true ||
+ capabilities.retrySafe !== true ||
+ capabilities.lookup !== true ||
+ capabilities.cleanup !== true
+ )
+ throw new AppError(
+ 'CAPABILITY_UNAVAILABLE',
+ 'The selected run does not report retry-safe checkpoint and environment fork support',
+ )
+
+ const digest = canonicalDigest({
+ command: 'execute_workspace_fork',
+ operationId,
+ planDigest: plan.digest,
+ sourceRunId: sourceRun.id,
+ sourceEnvironment,
+ })
+ const reserved = await reserveOperation(host, operationId, digest)
+ const existing = reserved.operations.find((operation) => operation.id === operationId)
+ if (existing?.status === 'acknowledged') return branchForOperation(reserved, existing)
+ const branching = await workspaceBranchingForEnvironment(
+ host.execution,
+ sourceEnvironmentRecord.providerEnvironmentId,
+ )
+ if (!hasWorkspaceBranching(branching))
+ throw new AppError('CAPABILITY_UNAVAILABLE', plan.reason ?? 'Workspace fork is unavailable')
+
+ const checkpointMaterial = {
+ source,
+ name: `braid checkpoint ${plan.sourceBranchId}`,
+ metadata: {
+ braidOperationId: input.operationId,
+ sourceBranchId: String(plan.sourceBranchId),
+ ...(plan.throughMessageId === undefined ? {} : { throughMessageId: plan.throughMessageId }),
+ },
+ }
+ const checkpointRequest: WorkspaceCheckpointRequest = {
+ ...checkpointMaterial,
+ idempotencyKey: `${input.operationId}:checkpoint`,
+ requestDigest: workspaceCheckpointRequestDigest(checkpointMaterial),
+ }
+ const checkpointResult = await lookupOrCheckpoint(branching, checkpointRequest)
+ if (!workspaceCheckpointResultMatchesRequest(checkpointRequest, checkpointResult))
+ throw new AppError('CHECKPOINT_CONFLICT', 'The checkpoint result does not match its request')
+ const checkpoint = assertCheckpointResult(checkpointResult)
+ const checkpointRecord = toCheckpointRecord(plan, operationId, checkpointRequest, checkpoint)
+ if (!state.checkpoints.some((candidate) => candidate.id === checkpointRecord.id)) {
+ await host.commit({ kind: 'checkpoint.upserted', checkpoint: checkpointRecord })
+ await host.commit({
+ kind: 'graph.node.upserted',
+ node: graphNode(
+ { kind: 'checkpoint', id: checkpointRecord.id },
+ checkpointRecord.createdAt,
+ 'Workspace checkpoint',
+ ),
+ })
+ await host.commit({
+ kind: 'graph.edge.upserted',
+ edge: graphEdge({
+ kind: 'checkpointed',
+ source: { kind: 'environment', id: parseEnvironmentId(sourceEnvironment) },
+ destination: { kind: 'checkpoint', id: checkpointRecord.id },
+ at: checkpointRecord.createdAt,
+ provenance: { operationId, sourceDigest: stripSha(checkpointRequest.requestDigest) },
+ }),
+ })
+ }
+ const placement: PlacementInfo = input.placement ?? { kind: 'provider' }
+ const forkMaterial = {
+ checkpoint: checkpoint.checkpoint,
+ name: `braid fork ${plan.destinationBranchId}`,
+ placement,
+ ...(plan.confidential === undefined ? {} : { confidential: plan.confidential }),
+ metadata: {
+ braidOperationId: input.operationId,
+ destinationBranchId: String(plan.destinationBranchId),
+ },
+ }
+ const forkRequest: WorkspaceForkRequest = {
+ ...forkMaterial,
+ idempotencyKey: `${input.operationId}:fork`,
+ requestDigest: workspaceForkRequestDigest(forkMaterial),
+ }
+ const previousProviderEnvironmentId = existing?.result?.providerEnvironmentId
+ const pendingForkResult = {
+ checkpointId: String(checkpointRecord.id),
+ providerCheckpointId: checkpoint.checkpoint.checkpointId,
+ forkRequestDigest: forkRequest.requestDigest,
+ ...(typeof previousProviderEnvironmentId === 'string'
+ ? { providerEnvironmentId: previousProviderEnvironmentId }
+ : {}),
+ }
+ await updateOperation(host, operationId, digest, {
+ status: 'pending',
+ result: pendingForkResult,
+ })
+ const forkResult = await lookupOrFork(branching, forkRequest)
+ if (!workspaceForkResultMatchesRequest(forkRequest, forkResult))
+ throw new AppError('FORK_CONFLICT', 'The environment fork result does not match its request')
+ const fork = assertForkResult(forkResult)
+ if (fork.environment.sourceEnvironmentId !== source.environmentId)
+ throw new AppError(
+ 'FORK_PLAN_CONFLICT',
+ 'The provider fork names a different source environment',
+ )
+ if (fork.environment.environmentId === source.environmentId)
+ throw new AppError('FORK_PLAN_CONFLICT', 'The provider fork reused the source environment')
+ await updateOperation(host, operationId, digest, {
+ status: 'pending',
+ result: {
+ ...pendingForkResult,
+ providerEnvironmentId: fork.environment.environmentId,
+ },
+ })
+ const destination = await recordForkedEnvironment(host, plan, fork.environment, forkRequest)
+ const branch = await createBranch({
+ ...input,
+ operationId: derivedOperationId(input.operationId, 'branch'),
+ destinationBranchId: plan.destinationBranchId,
+ environmentId: destination.id,
+ })
+ await host.commit({
+ kind: 'graph.edge.upserted',
+ edge: graphEdge({
+ kind: 'forked_environment',
+ source: { kind: 'checkpoint', id: checkpointRecord.id },
+ destination: { kind: 'environment', id: destination.id },
+ at: destination.createdAt,
+ provenance: { operationId, sourceDigest: stripSha(forkRequest.requestDigest) },
+ }),
+ })
+ await acknowledgeOperation(host, operationId, digest, branch, {
+ kind: 'workspace-fork',
+ branchId: String(branch.id),
+ planDigest: plan.digest,
+ checkpointId: String(checkpointRecord.id),
+ providerCheckpointId: checkpoint.checkpoint.checkpointId,
+ forkRequestDigest: forkRequest.requestDigest,
+ providerEnvironmentId: fork.environment.environmentId,
+ })
+ return branch
+}
+
+async function lookupOrTransfer(
+ port: NonNullable>,
+ request: ContextTransferRequest,
+): Promise {
+ const found = port.lookup === undefined ? undefined : await port.lookup(request)
+ if (found !== undefined) return found
+ return (
+ (await port.transfer?.(request)) ?? {
+ status: 'unknown',
+ operationId: request.operationId,
+ requestDigest: request.requestDigest,
+ message: 'The provider did not expose context transfer',
+ retryable: false,
+ }
+ )
+}
+
+async function lookupOrCheckpoint(
+ branching: NonNullable,
+ request: WorkspaceCheckpointRequest,
+): Promise {
+ const lookup = await branching.lookupCheckpoint({
+ idempotencyKey: request.idempotencyKey,
+ requestDigest: request.requestDigest,
+ })
+ if (lookup.status === 'found') return { ...lookup, status: 'replayed' }
+ if (lookup.status === 'conflict')
+ throw new AppError('CHECKPOINT_CONFLICT', 'Checkpoint idempotency key has a different request')
+ if (lookup.status === 'unknown') throw new AppError('CHECKPOINT_UNKNOWN', lookup.message)
+ const result = await branching.checkpoint(request)
+ if (result.status === 'unknown' || result.status === 'conflict') assertCheckpointResult(result)
+ return result
+}
+
+async function lookupOrFork(
+ branching: NonNullable,
+ request: WorkspaceForkRequest,
+): Promise {
+ const lookup = await branching.lookupFork({
+ idempotencyKey: request.idempotencyKey,
+ requestDigest: request.requestDigest,
+ })
+ if (lookup.status === 'found') return { ...lookup, status: 'replayed' }
+ if (lookup.status === 'conflict')
+ throw new AppError('FORK_CONFLICT', 'Fork idempotency key has a different request')
+ if (lookup.status === 'unknown') throw new AppError('FORK_UNKNOWN', lookup.message)
+ const result = await branching.fork(request)
+ if (result.status === 'unknown' || result.status === 'conflict') assertForkResult(result)
+ return result
+}
+
+async function cleanupCheckpoint(
+ host: ConversationHost,
+ branching: NonNullable,
+ operationId: ReturnType,
+ checkpoint: CheckpointRecord,
+): Promise<'deleted' | 'already_absent'> {
+ const providerCheckpointId = providerCheckpointIdFor(host.state(), checkpoint)
+ if (providerCheckpointId === undefined)
+ throw new AppError('UNKNOWN_CHECKPOINT', 'The checkpoint has no provider reference')
+ const provider = providerForCheckpoint(host.state(), checkpoint)
+ const material = { kind: 'checkpoint' as const, targetId: providerCheckpointId, provider }
+ const request: WorkspaceCleanupRequest = {
+ operationId,
+ ...material,
+ requestDigest: workspaceCleanupRequestDigest(material),
+ }
+ const ack = await branching.deleteCheckpoint({ ...request, kind: 'checkpoint' })
+ assertCleanupAcknowledgement(request, ack)
+ if (ack.status === 'deleted' || ack.status === 'already_absent') {
+ await host.commit({
+ kind: 'checkpoint.upserted',
+ checkpoint: { ...checkpoint, status: 'deleted' },
+ })
+ return ack.status
+ }
+ throw new AppError('CLEANUP_UNKNOWN', ack.message ?? 'Checkpoint cleanup is unresolved')
+}
+
+async function cleanupEnvironment(
+ host: ConversationHost,
+ branching: NonNullable,
+ operationId: ReturnType,
+ environment: EnvironmentRecord,
+): Promise<'deleted' | 'already_absent'> {
+ const targetId = environment.providerEnvironmentId
+ if (targetId === undefined)
+ throw new AppError('UNKNOWN_ENVIRONMENT', 'The environment has no provider reference')
+ const material = {
+ kind: 'fork' as const,
+ targetId,
+ provider: environment.placement.provider,
+ }
+ const request: WorkspaceCleanupRequest = {
+ operationId,
+ ...material,
+ requestDigest: workspaceCleanupRequestDigest(material),
+ }
+ const ack = await branching.destroyFork({ ...request, kind: 'fork' })
+ assertCleanupAcknowledgement(request, ack)
+ if (ack.status === 'deleted' || ack.status === 'already_absent') {
+ await host.commit({
+ kind: 'environment.upserted',
+ environment: { ...environment, lifecycle: 'destroyed', updatedAt: host.now() },
+ })
+ return ack.status
+ }
+ throw new AppError('CLEANUP_UNKNOWN', ack.message ?? 'Environment cleanup is unresolved')
+}
+
+function assertCleanupAcknowledgement(
+ request: WorkspaceCleanupRequest,
+ acknowledgement: WorkspaceCleanupAcknowledgement,
+): void {
+ if (!workspaceCleanupAcknowledgementMatches(request, acknowledgement))
+ throw new AppError('CLEANUP_CONFLICT', 'The cleanup acknowledgement does not match its request')
+}
+
+function assertCleanupCapabilities(
+ state: BraidState,
+ checkpoint: CheckpointRecord | undefined,
+ environment: EnvironmentRecord | undefined,
+): void {
+ const sourceCheckpoint =
+ checkpoint ??
+ (environment === undefined
+ ? undefined
+ : (() => {
+ const edge = state.graphEdges.find((candidate) => {
+ const source = graphReference(state, candidate.source)
+ const destination = graphReference(state, candidate.destination)
+ return (
+ candidate.kind === 'forked_environment' &&
+ destination?.kind === 'environment' &&
+ destination.id === environment.id &&
+ source?.kind === 'checkpoint'
+ )
+ })
+ const source = edge === undefined ? undefined : graphReference(state, edge.source)
+ return source?.kind === 'checkpoint'
+ ? state.checkpoints.find((candidate) => candidate.id === source.id)
+ : undefined
+ })())
+ const sourceRun =
+ sourceCheckpoint?.sourceRunId === undefined
+ ? undefined
+ : state.runs.find((candidate) => candidate.id === sourceCheckpoint.sourceRunId)
+ const branching = sourceRun?.capabilities.environment?.branching
+ if (
+ sourceRun === undefined ||
+ branching?.checkpoint !== true ||
+ branching.fork !== true ||
+ branching.retrySafe !== true ||
+ branching.lookup !== true ||
+ branching.cleanup !== true
+ )
+ throw new AppError(
+ 'CAPABILITY_UNAVAILABLE',
+ 'The selected run does not report retry-safe workspace cleanup support',
+ )
+}
+
+function sourceEnvironmentForCleanup(
+ state: BraidState,
+ checkpoint: CheckpointRecord | undefined,
+ environment: EnvironmentRecord | undefined,
+): EnvironmentRecord | undefined {
+ const sourceCheckpoint =
+ checkpoint ??
+ (environment === undefined
+ ? undefined
+ : (() => {
+ const edge = state.graphEdges.find((candidate) => {
+ const source = graphReference(state, candidate.source)
+ const destination = graphReference(state, candidate.destination)
+ return (
+ candidate.kind === 'forked_environment' &&
+ destination?.kind === 'environment' &&
+ destination.id === environment.id &&
+ source?.kind === 'checkpoint'
+ )
+ })
+ const source = edge === undefined ? undefined : graphReference(state, edge.source)
+ return source?.kind === 'checkpoint'
+ ? state.checkpoints.find((candidate) => candidate.id === source.id)
+ : undefined
+ })())
+ if (sourceCheckpoint === undefined) return undefined
+ return state.environments.find(
+ (candidate) => candidate.id === sourceCheckpoint.sourceEnvironmentId,
+ )
+}
+
+function cleanupResultFromOperation(
+ operation: OperationRecord | undefined,
+): WorkspaceForkCleanupResult | undefined {
+ if (operation?.result === undefined) return undefined
+ const checkpoint = operation.result.checkpoint
+ const environment = operation.result.environment
+ if (!isCleanupStatus(checkpoint) || !isCleanupStatus(environment))
+ throw new AppError(
+ 'OPERATION_INCOMPLETE',
+ `Operation ${operation.id} has an invalid cleanup result`,
+ )
+ return { checkpoint, environment }
+}
+
+function isCleanupStatus(value: unknown): value is WorkspaceForkCleanupResult['checkpoint'] {
+ return value === 'deleted' || value === 'already_absent' || value === 'not_requested'
+}
+
+function assertReadyPlan(
+ result: PortableContextPlanResult,
+): asserts result is Extract {
+ if (result.status !== 'ready') throw new AppError('CONTEXT_PLAN_UNAVAILABLE', result.message)
+}
+
+function assertAcceptedTransfer(
+ result: ContextTransferResult,
+): Extract {
+ if (result.status === 'accepted' || result.status === 'replayed') return result
+ if (result.status === 'conflict')
+ throw new AppError(
+ 'CONTEXT_RECEIPT_CONFLICT',
+ 'The provider rejected a changed context transfer request',
+ )
+ if (result.status === 'unknown' || result.status === 'transport_failure')
+ throw new AppError('CONTEXT_TRANSFER_UNKNOWN', result.message)
+ throw new AppError('CONTEXT_TRANSFER_UNKNOWN', 'The provider did not accept context transfer')
+}
+
+function assertCheckpointResult(
+ result: WorkspaceCheckpointResult,
+): Extract {
+ if (result.status === 'created' || result.status === 'replayed') return result
+ if (result.status === 'conflict')
+ throw new AppError('CHECKPOINT_CONFLICT', 'The provider rejected a changed checkpoint request')
+ if (result.status === 'unknown') throw new AppError('CHECKPOINT_UNKNOWN', result.message)
+ throw new AppError('CHECKPOINT_UNKNOWN', 'The provider did not create the checkpoint')
+}
+
+function assertForkResult(
+ result: WorkspaceForkResult,
+): Extract {
+ if (result.status === 'created' || result.status === 'replayed') return result
+ if (result.status === 'conflict')
+ throw new AppError('FORK_CONFLICT', 'The provider rejected a changed fork request')
+ if (result.status === 'unknown') throw new AppError('FORK_UNKNOWN', result.message)
+ throw new AppError('FORK_UNKNOWN', 'The provider did not create the environment fork')
+}
+
+function sourceRunForPlan(
+ state: BraidState,
+ plan: ForkPlan,
+): BraidState['runs'][number] | undefined {
+ if (plan.sourceRunId !== undefined) {
+ const run = state.runs.find((candidate) => candidate.id === plan.sourceRunId)
+ if (run !== undefined) return run
+ }
+ return state.runs
+ .filter((run) => run.branchId === plan.sourceBranchId && run.controlRef !== undefined)
+ .at(-1)
+}
+
+function toCheckpointRecord(
+ plan: ForkPlan,
+ operationId: ReturnType,
+ request: WorkspaceCheckpointRequest,
+ result: Extract,
+): CheckpointRecord {
+ return {
+ id: createCheckpointId(
+ `checkpoint-${canonicalDigest({ provider: result.checkpoint.provider, id: result.checkpoint.checkpointId }).slice(0, 32)}`,
+ ),
+ sourceEnvironmentId: parseEnvironmentId(
+ plan.sourceEnvironmentId ?? result.checkpoint.source.environmentId,
+ ),
+ sourceBranchId: parseBranchId(plan.sourceBranchId),
+ ...(plan.sourceRunId === undefined ? {} : { sourceRunId: parseRunId(plan.sourceRunId) }),
+ ...(plan.throughMessageId === undefined
+ ? {}
+ : { throughMessageId: parseMessageId(plan.throughMessageId) }),
+ requestDigest: stripSha(request.requestDigest),
+ operationId,
+ createdAt: result.checkpoint.createdAt,
+ status: 'ready',
+ }
+}
+
+async function recordDestinationEnvironment(
+ host: ConversationHost,
+ plan: ForkPlan,
+ receipt: Extract,
+): Promise {
+ const source = host
+ .state()
+ .environments.find((environment) => environment.id === plan.sourceEnvironmentId)
+ if (source === undefined) return undefined
+ const id = createEnvironmentId(
+ `environment-handoff-${canonicalDigest({ provider: receipt.provider, environmentId: receipt.environmentId, operationId: receipt.operationId }).slice(0, 32)}`,
+ )
+ if (id === source.id)
+ throw new AppError('FORK_PLAN_CONFLICT', 'The destination environment matches the source')
+ const at = receipt.admittedAt
+ const environment: EnvironmentRecord = {
+ id,
+ workspaceId: source.workspaceId,
+ connectionId: source.connectionId,
+ lifecycle: 'ready',
+ placement: {
+ provider: receipt.provider,
+ confidentialRequested: false,
+ confidentialVerified: false,
+ },
+ providerEnvironmentId: receipt.environmentId,
+ continuity: 'session',
+ location: 'remote',
+ secretNames: [],
+ createdAt: at,
+ startedAt: at,
+ lastActivityAt: at,
+ updatedAt: at,
+ }
+ const existing = host.state().environments.find((candidate) => candidate.id === id)
+ if (existing === undefined) {
+ await host.commit({ kind: 'environment.upserted', environment })
+ await host.commit({
+ kind: 'graph.node.upserted',
+ node: graphNode({ kind: 'environment', id }, at, 'Handoff environment'),
+ })
+ }
+ return existing ?? environment
+}
+
+async function recordForkedEnvironment(
+ host: ConversationHost,
+ plan: ForkPlan,
+ ref: Extract['environment'],
+ request: WorkspaceForkRequest,
+): Promise {
+ const source = host
+ .state()
+ .environments.find((environment) => environment.id === plan.sourceEnvironmentId)
+ if (source === undefined)
+ throw new AppError('UNKNOWN_ENVIRONMENT', 'The source environment record is unavailable')
+ const id = createEnvironmentId(
+ `environment-fork-${canonicalDigest({ provider: ref.provider, environmentId: ref.environmentId, operationId: ref.idempotencyKey }).slice(0, 32)}`,
+ )
+ const at = ref.createdAt
+ const environment: EnvironmentRecord = {
+ id,
+ workspaceId: source.workspaceId,
+ connectionId: source.connectionId,
+ lifecycle: 'ready',
+ placement: {
+ provider: ref.provider,
+ ...(ref.placement.region === undefined ? {} : { region: ref.placement.region }),
+ confidentialRequested: ref.confidentialRequested,
+ confidentialVerified:
+ ref.confidentialRequested && host.execution?.confidentialAttestationVerifier !== undefined
+ ? verifiedForkConfidentiality(
+ request,
+ ref,
+ host.execution.confidentialAttestationVerifier,
+ )
+ : false,
+ },
+ providerEnvironmentId: ref.environmentId,
+ continuity: 'session',
+ location: 'remote',
+ secretNames: [],
+ createdAt: at,
+ startedAt: at,
+ lastActivityAt: at,
+ updatedAt: at,
+ }
+ const existing = host.state().environments.find((candidate) => candidate.id === id)
+ if (existing === undefined) {
+ await host.commit({ kind: 'environment.upserted', environment })
+ await host.commit({
+ kind: 'graph.node.upserted',
+ node: graphNode({ kind: 'environment', id }, at, 'Workspace fork environment'),
+ })
+ }
+ return existing ?? environment
+}
+
+function verifiedForkConfidentiality(
+ request: WorkspaceForkRequest,
+ environment: Extract['environment'],
+ verifier: NonNullable,
+): boolean {
+ try {
+ return forkedEnvironmentConfidentialityVerified(
+ request,
+ environment,
+ (attestation, expected) => {
+ if (
+ attestation.providerKeyId === 'unverified' ||
+ attestation.providerSignature === 'unverified' ||
+ attestation.providerSignature === attestation.quote
+ )
+ return false
+ try {
+ return verifier(attestation, expected) === true
+ } catch {
+ return false
+ }
+ },
+ )
+ } catch {
+ return false
+ }
+}
+
+async function recordHandedOffEdge(
+ host: ConversationHost,
+ plan: ForkPlan,
+ branch: BranchRecord,
+ sourceDigest: string,
+ operationId: ReturnType,
+): Promise {
+ const edge = graphEdge({
+ kind: 'handed_off',
+ source: { kind: 'branch', id: parseBranchId(plan.sourceBranchId) },
+ destination: { kind: 'branch', id: branch.id },
+ at: host.now(),
+ provenance: { operationId, sourceDigest: stripSha(sourceDigest) },
+ })
+ if (!host.state().graphEdges.some((candidate) => candidate.id === edge.id))
+ await host.commit({ kind: 'graph.edge.upserted', edge })
+}
+
+async function reserveOperation(
+ host: ConversationHost,
+ operationId: ReturnType,
+ digest: string,
+): Promise {
+ const state = host.state()
+ const existing = state.operations.find((operation) => operation.id === operationId)
+ if (existing !== undefined && existing.kind !== 'conversation-fork')
+ throw new AppError(
+ 'OPERATION_ID_CONFLICT',
+ `Operation ${operationId} was already used by another command`,
+ )
+ if (existing !== undefined && existing.requestDigest !== digest)
+ throw new AppError(
+ 'OPERATION_ID_CONFLICT',
+ `Operation ${operationId} was already used with different input`,
+ )
+ if (existing !== undefined) return state
+ const at = host.now()
+ const operation: OperationRecord = {
+ id: operationId,
+ kind: 'conversation-fork',
+ requestDigest: digest as Digest,
+ status: 'pending',
+ createdAt: at,
+ updatedAt: at,
+ }
+ await host.commit({ kind: 'operation.requested', operation })
+ return host.state()
+}
+
+async function updateOperation(
+ host: ConversationHost,
+ operationId: ReturnType,
+ digest: string,
+ input: Pick,
+): Promise {
+ const current = host.state().operations.find((operation) => operation.id === operationId)
+ if (current === undefined)
+ throw new AppError('OPERATION_INCOMPLETE', `Operation ${operationId} is missing`)
+ const operation =
+ input.result === undefined
+ ? {
+ ...current,
+ requestDigest: digest as Digest,
+ status: input.status,
+ updatedAt: host.now(),
+ }
+ : {
+ ...current,
+ requestDigest: digest as Digest,
+ status: input.status,
+ result: input.result,
+ updatedAt: host.now(),
+ }
+ await host.commit({
+ kind: 'operation.updated',
+ operation,
+ })
+}
+
+async function acknowledgeOperation(
+ host: ConversationHost,
+ operationId: ReturnType,
+ digest: string,
+ branch: BranchRecord,
+ result: unknown,
+): Promise {
+ const current = host.state().operations.find((operation) => operation.id === operationId)
+ if (current === undefined)
+ throw new AppError('OPERATION_INCOMPLETE', `Operation ${operationId} is missing`)
+ await host.commit({
+ kind: 'operation.updated',
+ operation: {
+ ...current,
+ requestDigest: digest as Digest,
+ status: 'acknowledged',
+ target: { kind: 'branch', id: branch.id },
+ result: operationResult(result),
+ updatedAt: host.now(),
+ acknowledgedAt: host.now(),
+ },
+ })
+}
+
+async function acknowledgeCleanupOperation(
+ host: ConversationHost,
+ operationId: ReturnType,
+ digest: string,
+ result: WorkspaceForkCleanupResult,
+): Promise {
+ const current = host.state().operations.find((operation) => operation.id === operationId)
+ if (current === undefined)
+ throw new AppError('OPERATION_INCOMPLETE', `Operation ${operationId} is missing`)
+ await host.commit({
+ kind: 'operation.updated',
+ operation: {
+ ...current,
+ requestDigest: digest as Digest,
+ status: 'acknowledged',
+ result: operationResult(result),
+ updatedAt: host.now(),
+ acknowledgedAt: host.now(),
+ },
+ })
+}
+
+function operationResult(value: unknown): NonNullable {
+ objectValue(value, 'operation.result')
+ assertJsonValue(value, 'operation.result')
+ return value
+}
+
+function branchForOperation(state: BraidState, operation: OperationRecord): BranchRecord {
+ if (operation.target?.kind !== 'branch')
+ throw new AppError('OPERATION_INCOMPLETE', `Operation ${operation.id} has no branch result`)
+ const branch = state.branches.find((candidate) => candidate.id === operation.target?.id)
+ if (branch === undefined)
+ throw new AppError(
+ 'OPERATION_INCOMPLETE',
+ `Operation ${operation.id} has no durable branch result`,
+ )
+ return branch
+}
+
+function derivedOperationId(operationId: string, label: string): string {
+ return `operation-${canonicalDigest({ operationId, label }).slice(0, 48)}`
+}
+
+function contextTransferPort(
+ execution: ExecutionPort | undefined,
+): NonNullable | undefined {
+ return execution?.context ?? execution?.contextTransfer
+}
+
+function hasWorkspaceBranching(
+ branching: ExecutionPort['workspaceBranching'],
+): branching is NonNullable {
+ return (
+ branching !== undefined &&
+ typeof branching.checkpoint === 'function' &&
+ typeof branching.lookupCheckpoint === 'function' &&
+ typeof branching.deleteCheckpoint === 'function' &&
+ typeof branching.fork === 'function' &&
+ typeof branching.lookupFork === 'function' &&
+ typeof branching.destroyFork === 'function'
+ )
+}
+
+/** Resolve a fresh source handle when the provider exposes restart-safe lookup. */
+async function workspaceBranchingForEnvironment(
+ execution: ExecutionPort | undefined,
+ providerEnvironmentId: string | undefined,
+): Promise {
+ const provider = execution?.workspaceBranchingProvider
+ if (provider !== undefined) {
+ if (providerEnvironmentId === undefined) return undefined
+ return (await provider.forEnvironment(providerEnvironmentId)) ?? undefined
+ }
+ return execution?.workspaceBranching
+}
+
+function graphReference(state: BraidState, id: string) {
+ return state.graphNodes.find((node) => node.id === id)?.reference
+}
+
+function providerCheckpointIdFor(
+ state: BraidState,
+ checkpoint: CheckpointRecord,
+): string | undefined {
+ const operation = state.operations.find((candidate) => candidate.id === checkpoint.operationId)
+ const value = operation?.result?.providerCheckpointId
+ return typeof value === 'string' ? value : undefined
+}
+
+function providerForCheckpoint(state: BraidState, checkpoint: CheckpointRecord): string {
+ const environment = state.environments.find(
+ (candidate) => candidate.id === checkpoint.sourceEnvironmentId,
+ )
+ return environment?.placement.provider ?? 'unknown-provider'
+}
+
+function stripSha(value: string): Digest {
+ const digest = value.startsWith('sha256:') ? value.slice('sha256:'.length) : value
+ return digest as Digest
+}
diff --git a/src/app/conversation-branches.ts b/src/app/conversation-branches.ts
index 6179ac9..ce4ea98 100644
--- a/src/app/conversation-branches.ts
+++ b/src/app/conversation-branches.ts
@@ -1,3 +1,4 @@
+import { canonicalAgentProfileDigestHex } from '../adapters/agent-interface/profile-runtime.js'
import { canonicalDigest } from '../domain/canonical.js'
import type { BranchRecord, ConversationRecord, MessageRecord } from '../domain/entities.js'
import { graphEdge, graphNode } from '../domain/graph-records.js'
@@ -7,10 +8,18 @@ import {
type OperationId,
parseBranchId,
parseConversationId,
+ parseEnvironmentId,
parseMessageId,
+ parseOperationId,
} from '../domain/ids.js'
-import type { BraidState } from '../domain/state.js'
-import { messagesVisibleOnBranch, portablePlanForState } from './conversation-context.js'
+import { type BraidState, isActiveRunStatus } from '../domain/state.js'
+import type { ExecutionPort } from '../ports/execution.js'
+import { cleanupWorkspaceFork, executeBranchEffect } from './conversation-branch-effects.js'
+import {
+ canonicalPortableContextPlanForState,
+ messagesVisibleOnBranch,
+ portablePlanForState,
+} from './conversation-context.js'
import {
conversationBundle,
draftRecord,
@@ -24,13 +33,13 @@ import {
operationReplay,
parseOperation,
requestDigest,
- requireIdle,
requireWorkspace,
stableBranchIds,
stableConversationIds,
} from './conversation-support.js'
import type {
CloneConversationInput,
+ ConfidentialExecutionRequest,
ConversationHost,
CreateBranchInput,
ForkPlan,
@@ -38,6 +47,7 @@ import type {
SetRunOverridesInput,
} from './conversation-types.js'
import { AppError } from './errors.js'
+import { resolveEffectiveProfile } from './profile-selection.js'
interface ResolvedSource {
readonly conversation: ConversationRecord
@@ -60,7 +70,6 @@ export class ConversationBranches {
async #setRunOverrides(input: SetRunOverridesInput): Promise {
const state = this.#host.state()
- requireIdle(state, 'Changing run configuration')
const source = resolveBranch(state, input)
const operationId = parseOperation(input.operationId, 'set_run_override')
const hasOverride = [input.runner, input.model, input.effort, input.mode].some(
@@ -117,14 +126,20 @@ export class ConversationBranches {
async #create(input: CreateBranchInput): Promise {
const state = this.#host.state()
- requireIdle(state, 'Creating a branch')
const source = resolveSource(state, input)
const operationId = parseOperation(input.operationId, 'branch')
const normalized = branchRequest(source, input)
const digest = requestDigest('branch', normalized)
const replay = operationReplay(state, operationId, 'branch-create', digest)
if (replay) return branchForOperation(state, replay)
- const ids = stableBranchIds(operationId, digest)
+ const ids =
+ input.destinationBranchId === undefined
+ ? stableBranchIds(operationId, digest)
+ : {
+ branchId: parseBranchId(input.destinationBranchId),
+ draftId: stableBranchIds(operationId, digest).draftId,
+ queueId: stableBranchIds(operationId, digest).queueId,
+ }
const at = this.#host.now()
const draft = draftRecord(ids.draftId, ids.branchId, at, input.text)
const queue = queueRecord(ids.queueId, ids.branchId, at)
@@ -152,8 +167,12 @@ export class ConversationBranches {
...(input.mode === undefined ? {} : { mode: input.mode }),
}),
...(source.branch.environmentId === undefined
- ? {}
- : { environmentId: source.branch.environmentId }),
+ ? input.environmentId === undefined
+ ? {}
+ : { environmentId: parseEnvironmentId(input.environmentId) }
+ : input.environmentId === undefined
+ ? { environmentId: source.branch.environmentId }
+ : { environmentId: parseEnvironmentId(input.environmentId) }),
draftId: draft.id,
queueId: queue.id,
...(source.through === undefined ? {} : { tipMessageId: source.through.id }),
@@ -205,7 +224,6 @@ export class ConversationBranches {
async #clone(input: CloneConversationInput): Promise {
const state = this.#host.state()
const workspaceId = requireWorkspace(state)
- requireIdle(state, 'Cloning a conversation')
const source = resolveSource(state, input)
const operationId = parseOperation(input.operationId, 'clone')
const title = normalizedTitle(input.title, `${source.conversation.title} copy`)
@@ -263,14 +281,72 @@ export class ConversationBranches {
const normalized = branchRequest(source, input)
const branchDigest = requestDigest('branch', normalized)
const destinationBranchId = stableBranchIds(operationId, branchDigest).branchId
- const kind = input.kind ?? 'conversation'
+ const sourceRunner = source.branch.overrides.runner ?? state.profile.harness
+ const targetOverrides = runOverrides({
+ inherited: source.branch.overrides,
+ ...(input.runner === undefined ? {} : { runner: input.runner }),
+ ...(input.model === undefined ? {} : { model: input.model }),
+ ...(input.effort === undefined ? {} : { effort: input.effort }),
+ ...(input.mode === undefined ? {} : { mode: input.mode }),
+ })
+ const requestedRunner = targetOverrides.runner ?? sourceRunner
+ const targetProfile = resolveEffectiveProfile({
+ profile: { profile: this.#host.profile?.() ?? state.profile },
+ branchOverrides: {
+ ...(targetOverrides.runner === undefined ? {} : { harness: targetOverrides.runner }),
+ ...(targetOverrides.model === undefined ? {} : { model: targetOverrides.model }),
+ ...(targetOverrides.effort === undefined ? {} : { effort: targetOverrides.effort }),
+ },
+ }).effectiveProfile
+ const sourceRun = sourceRunForBranch(state, source.branch.id, source.through?.runId)
+ const sourceEnvironmentId = source.branch.environmentId ?? sourceRun?.environmentId
+ const kind =
+ input.kind ??
+ (input.runner !== undefined && input.runner !== sourceRunner
+ ? ('cross-runner' as const)
+ : ('conversation' as const))
const context = portablePlanForState(state, {
branchId: source.branch.id,
...(source.through === undefined ? {} : { throughMessageId: source.through.id }),
...(input.runner === undefined ? {} : { destinationRunner: input.runner }),
})
- const workspaceAvailable = workspaceForkReported(state, source.branch)
- const allowed = kind === 'conversation'
+ const workspaceAvailable = workspaceForkReported(
+ state,
+ sourceRun,
+ this.#host.execution,
+ sourceEnvironmentId,
+ input.confidential?.requested === true,
+ )
+ const portableContextPlan =
+ kind === 'cross-runner'
+ ? canonicalPortableContextPlanForState(state, {
+ operationId,
+ branchId: source.branch.id,
+ ...(source.through === undefined ? {} : { throughMessageId: source.through.id }),
+ destinationRunner: requestedRunner ?? 'unknown-runner',
+ ...(input.destinationProvider === undefined
+ ? {}
+ : { destinationProvider: input.destinationProvider }),
+ ...(targetProfile.model?.default === undefined
+ ? {}
+ : { destinationModel: targetProfile.model.default }),
+ profileDigest: canonicalAgentProfileDigestHex(targetProfile),
+ })
+ : undefined
+ const contextPort = contextTransferPort(this.#host.execution)
+ const crossRunnerAvailable =
+ kind === 'cross-runner' &&
+ portableContextPlan !== undefined &&
+ sourceEnvironmentId !== undefined &&
+ state.environments.some(
+ (environment) =>
+ environment.id === sourceEnvironmentId &&
+ environment.providerEnvironmentId === portableContextPlan.source.source.environmentId &&
+ environment.placement.provider === portableContextPlan.source.source.provider,
+ ) &&
+ contextPort?.transfer !== undefined
+ const allowed =
+ kind === 'conversation' || (kind === 'workspace' ? workspaceAvailable : crossRunnerAvailable)
const plan = {
kind,
operationId,
@@ -279,15 +355,31 @@ export class ConversationBranches {
...(source.through === undefined ? {} : { throughMessageId: source.through.id }),
destinationBranchId,
context,
+ ...(portableContextPlan === undefined ? {} : { portableContextPlan }),
+ ...(sourceRun === undefined ? {} : { sourceRunId: sourceRun.id }),
+ ...(sourceEnvironmentId === undefined ? {} : { sourceEnvironmentId }),
+ ...(portableContextPlan === undefined
+ ? {}
+ : { destinationEnvironmentId: portableContextPlan.destination.environmentId }),
+ ...(input.placement === undefined ? {} : { placement: input.placement }),
+ ...(input.text === undefined ? {} : { text: input.text }),
+ ...(input.destinationProvider === undefined
+ ? {}
+ : { destinationProvider: input.destinationProvider }),
+ ...(input.confidential === undefined ? {} : { confidential: input.confidential }),
environment:
kind === 'conversation'
? ('shared' as const)
- : workspaceAvailable
- ? ('new' as const)
- : ('unavailable' as const),
+ : kind === 'workspace'
+ ? workspaceAvailable
+ ? ('new' as const)
+ : ('unavailable' as const)
+ : crossRunnerAvailable
+ ? ('new' as const)
+ : ('unavailable' as const),
providerSession: 'new' as const,
checkpoint:
- kind === 'conversation'
+ kind !== 'workspace'
? ('none' as const)
: workspaceAvailable
? ('required' as const)
@@ -296,9 +388,14 @@ export class ConversationBranches {
...(allowed
? {}
: {
- reason: workspaceAvailable
- ? 'The current runtime does not expose retry-safe environment fork execution to Braid'
- : 'The selected run does not report retry-safe checkpoint and environment fork support',
+ reason:
+ kind === 'workspace'
+ ? workspaceAvailable
+ ? 'The current runtime does not expose retry-safe environment fork execution to Braid'
+ : input.confidential?.requested === true
+ ? 'The selected run does not expose confidential placement and attestation verification'
+ : 'The selected run does not report retry-safe checkpoint and environment fork support'
+ : 'The selected connection does not expose canonical fresh-session context transfer',
}),
}
return { ...plan, digest: canonicalDigest(plan) }
@@ -311,6 +408,17 @@ export class ConversationBranches {
}
async #execute(input: ForkPlanInput & { readonly planDigest: string }): Promise {
+ const existing = this.#host
+ .state()
+ .operations.find((operation) => operation.id === parseOperationId(input.operationId))
+ if (existing?.kind === 'conversation-fork' && existing.status === 'acknowledged') {
+ if (existing.result?.planDigest !== input.planDigest)
+ throw new AppError(
+ 'FORK_PLAN_CONFLICT',
+ 'The accepted fork plan no longer matches the operation',
+ )
+ return branchForOperation(this.#host.state(), existing)
+ }
const plan = this.plan(input)
if (plan.digest !== input.planDigest) {
throw new AppError(
@@ -321,12 +429,23 @@ export class ConversationBranches {
if (!plan.allowed) {
throw new AppError('CAPABILITY_UNAVAILABLE', plan.reason ?? 'Workspace fork is unavailable')
}
- const branch = await this.#create(input)
+ const branch =
+ plan.kind === 'conversation'
+ ? await this.#create(input)
+ : await executeBranchEffect(this.#host, input, plan, (branchInput) =>
+ this.#create(branchInput),
+ )
if (branch.id !== plan.destinationBranchId) {
throw new AppError('FORK_PLAN_CONFLICT', 'Fork execution produced an unexpected branch')
}
return branch
}
+
+ async cleanup(input: import('./conversation-types.js').WorkspaceForkCleanupInput) {
+ return coordinateConversationOperation(this.#host, 'cleanup_fork', input, () =>
+ cleanupWorkspaceFork(this.#host, input),
+ )
+ }
}
function resolveSource(
@@ -368,7 +487,11 @@ function resolveBranch(
return { conversation, branch }
}
-function branchRequest(source: ResolvedSource, input: CreateBranchInput) {
+function branchRequest(
+ source: ResolvedSource,
+ input: CreateBranchInput & { readonly confidential?: ConfidentialExecutionRequest },
+) {
+ const confidential = input.confidential
return {
conversationId: source.conversation.id,
branchId: source.branch.id,
@@ -378,6 +501,7 @@ function branchRequest(source: ResolvedSource, input: CreateBranchInput) {
model: input.model ?? source.branch.overrides.model ?? null,
effort: input.effort ?? source.branch.overrides.effort ?? null,
mode: input.mode ?? source.branch.overrides.mode ?? null,
+ ...(confidential === undefined ? {} : { confidential }),
}
}
@@ -418,17 +542,89 @@ function conversationForOperation(
return conversation
}
-function workspaceForkReported(state: BraidState, branch: BranchRecord): boolean {
- if (branch.environmentId === undefined) return false
- const run = state.runs.filter((candidate) => candidate.branchId === branch.id).at(-1)
+function workspaceForkReported(
+ state: BraidState,
+ run: BraidState['runs'][number] | undefined,
+ execution: ExecutionPort | undefined,
+ sourceEnvironmentId: string | undefined,
+ confidentialRequested: boolean,
+): boolean {
+ if (sourceEnvironmentId === undefined || run?.environmentId !== sourceEnvironmentId) return false
+ if (
+ run === undefined ||
+ !run.complete ||
+ isActiveRunStatus(run.status) ||
+ run.status === 'unknown'
+ )
+ return false
+ const environment = state.environments.find((candidate) => candidate.id === sourceEnvironmentId)
+ if (environment?.providerEnvironmentId === undefined) return false
+ if (run?.controlRef?.environmentId !== environment.providerEnvironmentId) return false
+ if (run.controlRef.provider !== environment.placement.provider) return false
const branching = run?.capabilities.environment?.branching
- return Boolean(
- branching?.checkpoint &&
+ const supported = Boolean(
+ hasWorkspaceBranchingMethods(execution) &&
+ branching?.checkpoint &&
branching.fork &&
branching.retrySafe &&
branching.lookup &&
branching.cleanup,
)
+ if (!supported) return false
+ return (
+ !confidentialRequested ||
+ (run?.capabilities.environment?.confidential === true &&
+ typeof execution?.confidentialAttestationVerifier === 'function')
+ )
+}
+
+function sourceRunForBranch(
+ state: BraidState,
+ branchId: BranchRecord['id'],
+ preferredRunId: MessageRecord['runId'],
+): BraidState['runs'][number] | undefined {
+ const branch = state.branches.find((candidate) => candidate.id === branchId)
+ if (branch === undefined) return undefined
+ const visibleRunIds = new Set(
+ messagesVisibleOnBranch(state, branchId)
+ .map((message) => message.runId)
+ .filter((runId): runId is string => runId !== undefined),
+ )
+ if (preferredRunId !== undefined) {
+ const preferred = state.runs.find(
+ (candidate) =>
+ candidate.id === preferredRunId &&
+ candidate.conversationId === branch.conversationId &&
+ visibleRunIds.has(candidate.id),
+ )
+ if (preferred !== undefined) return preferred
+ }
+ return state.runs
+ .filter(
+ (candidate) =>
+ candidate.conversationId === branch.conversationId && visibleRunIds.has(candidate.id),
+ )
+ .at(-1)
+}
+
+function contextTransferPort(
+ execution: ExecutionPort | undefined,
+): NonNullable | undefined {
+ return execution?.context ?? execution?.contextTransfer
+}
+
+function hasWorkspaceBranchingMethods(execution: ExecutionPort | undefined): boolean {
+ const branching = execution?.workspaceBranching
+ if (typeof execution?.workspaceBranchingProvider?.forEnvironment === 'function') return true
+ return Boolean(
+ branching !== undefined &&
+ typeof branching.checkpoint === 'function' &&
+ typeof branching.lookupCheckpoint === 'function' &&
+ typeof branching.deleteCheckpoint === 'function' &&
+ typeof branching.fork === 'function' &&
+ typeof branching.lookupFork === 'function' &&
+ typeof branching.destroyFork === 'function',
+ )
}
export type { BranchId, ConversationId }
diff --git a/src/app/conversation-composition.ts b/src/app/conversation-composition.ts
index 539c7e5..b7e1268 100644
--- a/src/app/conversation-composition.ts
+++ b/src/app/conversation-composition.ts
@@ -3,6 +3,7 @@ import type { BraidEvent } from '../domain/events.js'
import { parseConversationId, parseOperationId } from '../domain/ids.js'
import type { BraidState } from '../domain/state.js'
import type { StoragePort } from '../ports/storage.js'
+import type { SendInput } from './application-types.js'
import { ConversationActions } from './conversations.js'
export interface ConversationCompositionInput {
@@ -13,6 +14,9 @@ export interface ConversationCompositionInput {
input: { readonly operationId: string; readonly digest: string },
action: () => Promise,
) => Promise
+ readonly profile?: () => Readonly
+ readonly execution?: import('../ports/execution.js').ExecutionPort
+ readonly send?: (input: SendInput) => import('./application-types.js').SendReceipt
readonly storage?: Pick
}
@@ -24,6 +28,9 @@ export function createConversationActions(
now: input.now,
commit: input.commit,
coordinate: input.coordinate,
+ ...(input.profile === undefined ? {} : { profile: input.profile }),
+ ...(input.execution === undefined ? {} : { execution: input.execution }),
+ ...(input.send === undefined ? {} : { send: input.send }),
...(input.storage === undefined
? {}
: {
diff --git a/src/app/conversation-context.ts b/src/app/conversation-context.ts
index b477f5c..bad2843 100644
--- a/src/app/conversation-context.ts
+++ b/src/app/conversation-context.ts
@@ -1,3 +1,18 @@
+import type {
+ BackendMessage,
+ PortableContextPlan as CanonicalPortableContextPlan,
+ InputPart,
+ PortableContextDestination,
+ PortableContextMessagePlan,
+ PortableContextPartPlan,
+ PortableContextSourceBoundary,
+ PortableConversationContext,
+ Sha256Digest,
+} from '@tangle-network/agent-interface'
+import {
+ portableContextPlanDigest,
+ portableConversationContextDigest,
+} from '@tangle-network/agent-interface'
import { canonicalDigest } from '../domain/canonical.js'
import type { AnalysisAttachmentRecord, BranchRecord, MessageRecord } from '../domain/entities.js'
import type { BranchId } from '../domain/ids.js'
@@ -18,6 +33,12 @@ export { messagesVisibleOnBranch } from './conversation-visibility.js'
const MAX_CONTEXT_MESSAGES = 20_000
const MAX_CONTEXT_BYTES = 2 * 1024 * 1024
+const MAX_CANONICAL_CONTEXT_MESSAGES = 1_024
+const MAX_CANONICAL_CONTEXT_PARTS = 1_024
+const MAX_CANONICAL_PLAN_BYTES = 1_048_576
+
+const canonicalSha256 = (value: string): Sha256Digest =>
+ (value.startsWith('sha256:') ? value : `sha256:${value}`) as Sha256Digest
function portablePart(part: MessageRecord['parts'][number]): PortableContextPart | undefined {
const id = part.id
@@ -252,3 +273,352 @@ export class ConversationContext {
return portablePlanForState(this.#host.state(), input)
}
}
+
+/**
+ * Build the shared portable-context contract from the immutable Braid view.
+ *
+ * Provider-owned parts are either converted to an input part with an explicit
+ * transformation or omitted with a reason, so the destination can verify the
+ * exact content that it receives.
+ */
+export function canonicalPortableContextPlanForState(
+ state: BraidState,
+ input: {
+ readonly operationId: string
+ readonly branchId?: string
+ readonly throughMessageId?: string
+ readonly destinationRunner: string
+ readonly destinationProvider?: string
+ readonly destinationModel?: string
+ readonly profileDigest: string
+ },
+): CanonicalPortableContextPlan | undefined {
+ const branch = resolveBranch(state, input.branchId)
+ const visible = messagesVisibleOnBranch(state, branch.id)
+ if (visible.length > MAX_CANONICAL_CONTEXT_MESSAGES)
+ throw new AppError('CONTEXT_TOO_LARGE', 'Canonical context has too many messages')
+ const through =
+ input.throughMessageId === undefined
+ ? visible.at(-1)
+ : visible.find((message) => message.id === input.throughMessageId)
+ if (through === undefined) return undefined
+ const selected = messagesThroughBoundary(visible, through.id)
+ if (selected.some((message) => message.parts.length > MAX_CANONICAL_CONTEXT_PARTS))
+ throw new AppError('CONTEXT_TOO_LARGE', 'Canonical context has too many parts')
+ const sourceRun = sourceRunForBoundary(state, branch.id, through.id, through.runId)
+ const source = sourceBoundaryForRun(sourceRun, branch.id, through.id)
+ if (source === undefined) return undefined
+
+ const sourceMessages = selected.map((message) => canonicalSourceMessage(message))
+ const sourceContextMaterial = {
+ source,
+ completeness: sourceMessages.every((message) => message.complete)
+ ? ('complete' as const)
+ : ('partial' as const),
+ messages: sourceMessages.map((message) => message.source),
+ attachments: [],
+ }
+ assertCanonicalBytes(sourceContextMaterial)
+ const sourceContext: PortableConversationContext = {
+ ...sourceContextMaterial,
+ digest: portableConversationContextDigest(sourceContextMaterial),
+ }
+ const destination = canonicalDestination({
+ operationId: input.operationId,
+ source,
+ sourceDigest: sourceContext.digest,
+ runner: input.destinationRunner,
+ provider: input.destinationProvider ?? source.provider,
+ ...(input.destinationModel === undefined ? {} : { model: input.destinationModel }),
+ profileDigest: canonicalSha256(input.profileDigest),
+ })
+
+ const messages: PortableContextMessagePlan[] = []
+ const outputMessages: BackendMessage[] = []
+ let requiresAcceptance = sourceContext.completeness === 'partial'
+ for (const message of sourceMessages) {
+ const partPlans: PortableContextPartPlan[] = []
+ const outputParts: InputPart[] = []
+ for (const [partIndex, part] of message.source.parts.entries()) {
+ const decision = canonicalPartDecision(part)
+ partPlans.push(decision.plan(partIndex))
+ if (decision.output !== undefined) outputParts.push(decision.output)
+ if (decision.changed) requiresAcceptance = true
+ }
+ if (outputParts.length === 0) {
+ requiresAcceptance = true
+ messages.push({
+ messageId: message.source.id,
+ action: 'omit',
+ parts: partPlans.map((part) =>
+ part.action === 'omit'
+ ? part
+ : {
+ partIndex: part.partIndex,
+ action: 'omit' as const,
+ reason: 'No portable input part remains',
+ },
+ ),
+ reason: 'Provider-owned message content is not portable',
+ })
+ continue
+ }
+ const changed = partPlans.some((part) => part.action !== 'include')
+ if (changed) requiresAcceptance = true
+ messages.push({
+ messageId: message.source.id,
+ action: 'include',
+ parts: partPlans,
+ ...(changed ? { reason: 'Provider-owned parts were transformed or omitted' } : {}),
+ })
+ outputMessages.push({
+ id: message.source.id,
+ role: message.source.role,
+ parts: outputParts,
+ timestamp: message.source.timestamp,
+ })
+ }
+
+ const contextMaterial = {
+ source,
+ completeness: requiresAcceptance ? ('partial' as const) : sourceContext.completeness,
+ messages: outputMessages,
+ attachments: [],
+ }
+ assertCanonicalBytes(contextMaterial)
+ const context: PortableConversationContext = {
+ ...contextMaterial,
+ digest: portableConversationContextDigest(contextMaterial),
+ }
+ const material = {
+ planId: `context-plan-${canonicalDigest({ input, source: sourceContext.digest }).slice(0, 32)}`,
+ source: sourceContext,
+ destination,
+ messages,
+ context,
+ estimatedTokens: Math.ceil(Buffer.byteLength(JSON.stringify(context), 'utf8') / 4),
+ requiresAcceptance,
+ }
+ assertCanonicalBytes(material)
+ return { ...material, digest: portableContextPlanDigest(material) }
+}
+
+interface CanonicalSourceMessage {
+ readonly source: BackendMessage
+ readonly complete: boolean
+}
+
+function canonicalSourceMessage(message: MessageRecord): CanonicalSourceMessage {
+ const parts = message.parts.map((part) => canonicalSourcePart(part))
+ const fallback =
+ parts.length === 0 && message.text.length > 0
+ ? [{ type: 'text' as const, text: redactSensitiveText(message.text) }]
+ : parts
+ return {
+ source: {
+ id: String(message.id),
+ role: message.role,
+ parts: fallback,
+ timestamp: safeTimestamp(message.createdAt),
+ },
+ complete: message.complete && message.partsTruncated !== true,
+ }
+}
+
+function canonicalSourcePart(part: MessageRecord['parts'][number]): unknown {
+ const text = redactSensitiveText(part.text ?? part.title ?? part.kind, 16_384)
+ switch (part.kind) {
+ case 'text':
+ return { type: 'text', text }
+ case 'artifact':
+ if (part.uri === undefined)
+ return { type: 'unknown', text: 'Provider artifact omitted because it has no portable URI' }
+ return {
+ type: 'file',
+ url: redactSensitiveText(part.uri, 4_096),
+ ...(part.mimeType === undefined ? {} : { mediaType: part.mimeType }),
+ }
+ case 'reasoning':
+ return { type: 'reasoning', text }
+ default:
+ return { type: part.kind, text }
+ }
+}
+
+function canonicalPartDecision(part: unknown): {
+ readonly output?: InputPart
+ readonly changed: boolean
+ readonly plan: (partIndex: number) => PortableContextPartPlan
+} {
+ const inputPart = parseInputPart(part)
+ if (inputPart !== undefined) {
+ return {
+ output: inputPart,
+ changed: false,
+ plan: (partIndex) => ({ partIndex, action: 'include' }),
+ }
+ }
+ if (isReasoningSourcePart(part)) {
+ return {
+ changed: true,
+ plan: (partIndex) => ({
+ partIndex,
+ action: 'omit',
+ reason: 'Provider reasoning state is not portable',
+ }),
+ }
+ }
+ const output: InputPart = {
+ type: 'text',
+ text: redactSensitiveText(
+ typeof part === 'object' && part !== null && 'text' in part
+ ? String((part as { readonly text?: unknown }).text ?? '')
+ : 'Provider part converted to portable text',
+ 16_384,
+ ),
+ }
+ return {
+ output,
+ changed: true,
+ plan: (partIndex) => ({
+ partIndex,
+ action: 'transform',
+ output,
+ reason: 'Provider part converted to portable text',
+ }),
+ }
+}
+
+function parseInputPart(value: unknown): InputPart | undefined {
+ if (typeof value !== 'object' || value === null) return undefined
+ const candidate = value as Record
+ const type = candidate.type
+ if (type === 'text') {
+ return typeof candidate.text === 'string' && candidate.text.length <= 16_384
+ ? { type, text: candidate.text }
+ : undefined
+ }
+ if (type === 'file' || type === 'image') {
+ const allowedKeys = new Set(['type', 'filename', 'mediaType', 'url', 'path', 'content'])
+ if (Object.keys(candidate).some((key) => !allowedKeys.has(key))) return undefined
+ for (const key of ['filename', 'mediaType', 'url', 'path', 'content']) {
+ const entry = candidate[key]
+ if (entry !== undefined && (typeof entry !== 'string' || entry.length > 16_384))
+ return undefined
+ }
+ if (type === 'image' && candidate.content !== undefined) return undefined
+ return {
+ type,
+ ...(typeof candidate.filename === 'string' ? { filename: candidate.filename } : {}),
+ ...(typeof candidate.mediaType === 'string' ? { mediaType: candidate.mediaType } : {}),
+ ...(typeof candidate.url === 'string' ? { url: candidate.url } : {}),
+ ...(typeof candidate.path === 'string' ? { path: candidate.path } : {}),
+ ...(type === 'file' && typeof candidate.content === 'string'
+ ? { content: candidate.content }
+ : {}),
+ }
+ }
+ return undefined
+}
+
+function isReasoningSourcePart(value: unknown): boolean {
+ return (
+ typeof value === 'object' &&
+ value !== null &&
+ (value as { readonly type?: unknown }).type === 'reasoning'
+ )
+}
+
+function sourceRunForBoundary(
+ state: BraidState,
+ branchId: string,
+ messageId: string,
+ messageRunId: string | undefined,
+): BraidState['runs'][number] | undefined {
+ const branch = state.branches.find((candidate) => candidate.id === branchId)
+ if (branch === undefined) return undefined
+ const boundary = messagesVisibleOnBranch(state, branchId).find(
+ (message) => message.id === messageId,
+ )
+ if (boundary === undefined) return undefined
+ if (messageRunId !== undefined) {
+ const direct = state.runs.find(
+ (run) =>
+ run.id === messageRunId &&
+ run.conversationId === branch.conversationId &&
+ run.id === boundary.runId,
+ )
+ if (direct !== undefined) return direct
+ }
+ return state.runs
+ .filter(
+ (run) =>
+ run.conversationId === branch.conversationId &&
+ run.controlRef !== undefined &&
+ run.id === boundary.runId,
+ )
+ .at(-1)
+}
+
+function sourceBoundaryForRun(
+ run: BraidState['runs'][number] | undefined,
+ branchId: string,
+ messageId: string,
+): PortableContextSourceBoundary | undefined {
+ if (run === undefined) return undefined
+ const control = run.controlRef
+ const provider = control?.provider ?? run.receipt.provider
+ const environmentId = control?.environmentId ?? run.receipt.environmentId ?? run.environmentId
+ const sessionId = control?.sessionId ?? run.providerSessionId
+ const executionId = control?.executionId
+ const requestDigest = control?.requestDigest ?? run.receipt.requestDigest
+ if (!provider || !environmentId || !sessionId || !executionId || !requestDigest) return undefined
+ return {
+ runId: String(run.id),
+ messageId,
+ provider,
+ environmentId,
+ sessionId,
+ executionId,
+ requestDigest: canonicalSha256(requestDigest),
+ branchId,
+ }
+}
+
+function canonicalDestination(input: {
+ readonly operationId: string
+ readonly source: PortableContextSourceBoundary
+ readonly sourceDigest: Sha256Digest
+ readonly runner: string
+ readonly provider: string
+ readonly model?: string
+ readonly profileDigest: Sha256Digest
+}): PortableContextDestination {
+ const suffix = canonicalDigest({
+ operationId: input.operationId,
+ source: input.source,
+ sourceDigest: input.sourceDigest,
+ runner: input.runner,
+ provider: input.provider,
+ model: input.model ?? null,
+ }).slice(0, 32)
+ return {
+ runner: input.runner,
+ provider: input.provider,
+ environmentId: `environment-handoff-${suffix}`,
+ sessionId: `session-handoff-${suffix}`,
+ runId: `run-handoff-${suffix}`,
+ executionId: `execution-handoff-${suffix}`,
+ ...(input.model === undefined ? {} : { model: input.model }),
+ profileDigest: input.profileDigest,
+ }
+}
+
+function safeTimestamp(value: string): string {
+ return Number.isFinite(Date.parse(value)) ? value : new Date(0).toISOString()
+}
+
+function assertCanonicalBytes(value: unknown): void {
+ if (Buffer.byteLength(JSON.stringify(value), 'utf8') > MAX_CANONICAL_PLAN_BYTES)
+ throw new AppError('CONTEXT_TOO_LARGE', 'Canonical context exceeds the one-megabyte limit')
+}
diff --git a/src/app/conversation-import-builder.ts b/src/app/conversation-import-builder.ts
index a9a6183..10b83df 100644
--- a/src/app/conversation-import-builder.ts
+++ b/src/app/conversation-import-builder.ts
@@ -30,12 +30,7 @@ import {
optionalFiniteNumber,
requiredString,
} from './conversation-import-values.js'
-import {
- acknowledgedOperation,
- normalizedTitle,
- requireIdle,
- requireWorkspace,
-} from './conversation-support.js'
+import { acknowledgedOperation, normalizedTitle, requireWorkspace } from './conversation-support.js'
import { AppError } from './errors.js'
export type ConversationImportedEvent = Extract<
@@ -51,7 +46,6 @@ export function buildConversationImport(input: {
readonly at: string
readonly title?: string
}): ConversationImportedEvent {
- requireIdle(input.state, 'Conversation import')
const workspaceId = requireWorkspace(input.state)
const content = input.prepared.document.content
const sourceConversation = importRecord(content.conversation, 'content.conversation')
diff --git a/src/app/conversation-lifecycle.ts b/src/app/conversation-lifecycle.ts
index 93fa003..feccd7d 100644
--- a/src/app/conversation-lifecycle.ts
+++ b/src/app/conversation-lifecycle.ts
@@ -15,7 +15,6 @@ import {
operationReplay,
parseOperation,
requestDigest,
- requireIdle,
requireWorkspace,
selectedConnection,
selectedProfile,
@@ -70,7 +69,6 @@ export class ConversationLifecycle {
async #create(input: CreateConversationInput): Promise {
const state = this.#host.state()
const workspaceId = requireWorkspace(state)
- requireIdle(state, 'Creating a conversation')
const title = normalizedTitle(input.title)
const profileId = selectedProfile(state, input.profileId)
const connectionId = selectedConnection(state, input.connectionId)
@@ -113,7 +111,6 @@ export class ConversationLifecycle {
async #open(input: OpenConversationInput): Promise {
const state = this.#host.state()
- requireIdle(state, 'Opening a conversation')
const conversationId = parseConversationId(input.conversationId)
const conversation = availableConversation(state, conversationId)
const branchId =
diff --git a/src/app/conversation-support.ts b/src/app/conversation-support.ts
index 0cdbf5a..bc46168 100644
--- a/src/app/conversation-support.ts
+++ b/src/app/conversation-support.ts
@@ -118,12 +118,6 @@ export function requireWorkspace(state: BraidState): NonNullable
+ /** Exact profile selected for the next Runtime admission. */
+ profile?: () => Readonly
destroy?(input: { readonly conversationId: string; readonly operationId: string }): Promise
coordinate?