Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
706841e
chore(deps): use published agent packages
drewstone Aug 14, 2026
822fe30
feat(product): complete durable workflows and terminal UX
drewstone Aug 14, 2026
45315c1
refactor(runtime): remove unused usage conversion
drewstone Aug 14, 2026
1661fc2
fix(app): remove stale provider value imports
drewstone Aug 14, 2026
7252826
refactor(runtime): remove duplicate retained run caches
drewstone Aug 14, 2026
bd87441
fix(test): align durable production expectations
drewstone Aug 14, 2026
f44be01
fix(test): await retained setup durability
drewstone Aug 14, 2026
4741528
refactor(ui): remove duplicate legacy projection
drewstone Aug 14, 2026
4fbe64a
fix(test): use complete state in transcript bounds
drewstone Aug 14, 2026
fcd589c
refactor(interactions): remove duplicate interaction state
drewstone Aug 14, 2026
d5cd01d
fix(invariants): validate canonical interaction persistence
drewstone Aug 14, 2026
34f6b38
fix(live-proof): prove retained CLI Bridge reconnect
drewstone Aug 14, 2026
63f814e
fix(live-proof): keep restart target active
drewstone Aug 14, 2026
5397806
fix(live-proof): require causal restart evidence
drewstone Aug 14, 2026
3760ada
fix(runtime): preserve retained cancellation status
drewstone Aug 14, 2026
735d1c8
fix(interactions): harden durable interaction state
drewstone Aug 14, 2026
20c7032
fix(runtime): type retained cancellation projection
drewstone Aug 14, 2026
1c36ec0
refactor(storage): break snapshot migration cycle
drewstone Aug 14, 2026
41c866a
fix(runtime): adopt current execution contracts
drewstone Aug 14, 2026
aefe384
fix(cli-bridge): preserve exact model routes
drewstone Aug 14, 2026
7165677
fix(rpc): expose active runs before completion
drewstone Aug 14, 2026
0643ee7
test(cli-bridge): use stable Pi conformance route
drewstone Aug 14, 2026
92f913b
chore(deps): update runtime and terminal renderer
drewstone Aug 15, 2026
81d2a82
fix(cli-bridge): materialize one runner prefix
drewstone Aug 15, 2026
b0bd0bc
test(terminal): wait for visible state transitions
drewstone Aug 15, 2026
0c4c51e
fix(tui): calm packed terminal surfaces
drewstone Aug 15, 2026
9add024
fix(tangle): use the provider workspace root
drewstone Aug 15, 2026
45c641b
fix(tangle): preserve retained session control
drewstone Aug 15, 2026
4562961
fix(release): reject registry version collisions
drewstone Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .agent/skill-runs.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,11 @@
{"skill":"/harden","ts":"2026-08-12T17:28:15Z","project":"braid-retained-v2-wt","target":"Braid retained Tangle lifecycle, public proof redaction, replay races, and cleanup n=65 files","operatorPrompt":"","durationMin":null,"verdict":"APPROVE","dispatchedTo":"/critical-audit","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/critical-audit","ts":"2026-08-12T17:28:16Z","project":"braid-retained-v2-wt","target":"Braid retained Tangle lifecycle, stress proof, and public evidence n=65 files","operatorPrompt":"","durationMin":null,"verdict":"APPROVE","dispatchedTo":"/verify","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/verify","ts":"2026-08-12T17:28:16Z","project":"braid-retained-v2-wt","target":"Braid retained Tangle source, 683 tests, packed terminal, cloud proof contracts, and CLI Bridge matrix","operatorPrompt":"","durationMin":null,"verdict":"PASS","dispatchedTo":"/ship","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/reconcile","ts":"2026-08-13T19:15:27Z","project":"braid-goal-latest-wt","target":"DeepSeek Harness and Cordis","operatorPrompt":"","durationMin":null,"verdict":"ADAPT","dispatchedTo":"/build-with-agent-runtime","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/reconcile","ts":"2026-08-13T20:16:04Z","project":"braid-goal-latest-wt","target":"Cordis as a foundation for Braid","operatorPrompt":"","durationMin":null,"verdict":"REJECT","dispatchedTo":"/build-with-agent-runtime","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/autopsy","ts":"2026-08-13T20:39:54Z","project":"braid-goal-latest-wt","target":"Braid retained Tangle Sandbox follow-up after forced restart","operatorPrompt":"","durationMin":null,"verdict":"DESIGN_FLAW","dispatchedTo":"/build-with-agent-runtime","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/reconcile","ts":"2026-08-13T21:00:22Z","project":"braid-goal-latest-wt","target":"https://github.com/cordiverse/cordis at 8cc9e33fab69e2d0476d126baaf2acb24e6a6ab4","operatorPrompt":"","durationMin":null,"verdict":"REJECT","dispatchedTo":"/build-with-agent-runtime","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/critical-audit","ts":"2026-08-13T21:09:48Z","project":"braid-goal-latest-wt","target":"agent-runtime retained identity and existing-environment start n=11 files","operatorPrompt":"","durationMin":null,"verdict":"APPROVE","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/reconcile","ts":"2026-08-13T21:45:28Z","project":"braid-goal-latest-wt","target":"cordiverse/cordis as a Braid foundation","operatorPrompt":"","durationMin":null,"verdict":"REJECT","dispatchedTo":"/stop","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/autopsy","ts":"2026-08-13T21:58:28Z","project":"braid-goal-latest-wt","target":"Sandbox isolated package smoke skipped prepack","operatorPrompt":"","durationMin":null,"verdict":"FIXED_INFRA_BUG","dispatchedTo":"/verify","operatorOverride":null,"transcriptPath":null,"traceDir":null}
{"skill":"/deep-clean","ts":"2026-08-15T03:11:57Z","project":"braid-goal-latest-wt","target":"Braid release branch: removed stale generated artifacts and speculative release machinery","operatorPrompt":"","durationMin":null,"verdict":"GREEN","dispatchedTo":"/converge","operatorOverride":null,"transcriptPath":null,"traceDir":null}
28 changes: 20 additions & 8 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -231,18 +231,30 @@ jobs:
INDEX_SHA256="$(sha256sum "$ENDORSEMENT/files.sha256" | cut -d ' ' -f 1)"
grep -Fx "index_sha256=$INDEX_SHA256" "$ENDORSEMENT/statement.txt"

- name: Publish the approved tarball
- name: Install the pinned npm client
run: |
npm install --global npm@11.18.0
test "$(npm --version)" = 11.18.0

- name: Check the registry version
id: registry
env:
ARCHIVE: ${{ needs.candidate.outputs.archive }}
VERSION: ${{ needs.candidate.outputs.version }}
run: |
npm install --global npm@11.18.0
test "$(npm --version)" = 11.18.0
if npm view "@tangle-network/braid@$VERSION" version >/dev/null 2>&1; then
echo "@tangle-network/braid@$VERSION already exists; checking it instead of republishing"
else
npm publish "$RUNNER_TEMP/braid-release/candidate/$ARCHIVE" --provenance --access public
fi
RESULT="$(node scripts/release/check-registry-collision.mjs \
--package "@tangle-network/braid@$VERSION" \
--tarball "$RUNNER_TEMP/braid-release/candidate/$ARCHIVE" \
--json)"
printf '%s\n' "$RESULT"
STATUS="$(RESULT="$RESULT" node -e "process.stdout.write(JSON.parse(process.env.RESULT).status)")"
printf 'status=%s\n' "$STATUS" >> "$GITHUB_OUTPUT"

- name: Publish the approved tarball
if: steps.registry.outputs.status == 'available'
env:
ARCHIVE: ${{ needs.candidate.outputs.archive }}
run: npm publish "$RUNNER_TEMP/braid-release/candidate/$ARCHIVE" --provenance --access public

- name: Verify and retain npm provenance
env:
Expand Down
24 changes: 14 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -233,29 +233,33 @@ Retained lifecycle is an explicit connection configuration option with a bounded

Before retained execution creates a sandbox, Braid requires exact control plus provider-backed lookup for an unacknowledged dispatch.

The current published provider does not report that complete contract or lookup, so Braid rejects retained mode without creating a resource.

When the provider reports both, a fresh Braid process can recover before or after the six-field reference commits.
The current provider reports both, so a fresh Braid process can recover before or after the six-field reference commits.

Native follow-up turns remain disabled until the provider also proves that its context boundary matches Braid's recorded boundary.

Checkpoint, environment fork, and interaction response remain unavailable until the shared provider reports and proves those operations.

The user can inspect the requested and verified execution location, but provider-private machine details remain unavailable when they are not reported.

The latest passing production stress proof completed 20 of 20 ephemeral Braid turns through OpenCode, GLM 5.2, and Tangle Sandbox at four-way concurrency.
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.

All 20 remote environments were unique and confirmed deleted, while the account's active Sandbox count returned from four to four.
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.

All three exact sandboxes were confirmed deleted, and the account's active Sandbox count returned to its starting value.

See the [secret-free proof artifact](artifacts/verification/live/tangle-sandbox-braid-execution-stress-production-20260812.json) for every run, token receipt, latency, environment observation, and cleanup result.
Individual proof duration was 82.3 seconds minimum, 89.0 seconds median, and 96.2 seconds maximum.

A later canary found a current platform regression before environment allocation.
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.

Fresh credentials authenticated Sandbox and Router, but the internal model-key step rejected the Sandbox service with HTTP 403.
The provider exposed cgroup v2 memory samples with a 2,048 MB limit and 630–633 MB peak use.

Braid left zero owned environments, while [ADC issue 5277](https://github.com/tangle-network/agent-dev-container/issues/5277) tracks the platform failure.
Machine identity, IP address, effective CPU and storage, placement, region, and per-sandbox cost remained unavailable because the provider did not report them.

The earlier ephemeral stress proof completed 20 of 20 Braid turns at four-way concurrency.

All 20 remote environments were unique and confirmed deleted, while the account's active Sandbox count returned from four to four.

[Runtime issue 808](https://github.com/tangle-network/agent-runtime/issues/808) tracks the separate ten-minute retry of that permanent rejection.
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.

The [verification record](docs/08-verification.md#current-core-path-observations) keeps the full results, limits, and tracked platform work.

Expand Down
17 changes: 17 additions & 0 deletions artifacts/verification/tui-audit/after/w6/120x40-plain.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Braid ready — /home/drew/code/braid-goal-latest-wt
status: ready for a message
conversation: New conversation; branch: branch-1
profile: Braid starter; runner: pi; connection: deterministic fixture
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-a87a8819-9685-42df-8e1f-11690d0a4e83","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:f75eb08b6c6a3120e5297421baed1e5e2553899395ec5981e0fda4c9ce725300"}}},"session":{"id":"1c480acb-01f2-4964-86f6-fe0900712ee0","backend":"executor","status":"active","createdAt":"2026-08-15T00:50:34.906Z","updatedAt":"2026-08-15T00:50:34.906Z","metadata":"[unavailable]"},"
event 6: application.shutdown.requested; status: streaming
event 7: run.control.requested; status: cancelling: requested
event 8: run.cancel.requested; status: cancelling: requested
event 9: effect.upserted; status: cancelling
event 10: effect.upserted; status: cancelling
event 11: run.control.acknowledged; status: cancelling: CONTROL_ACKNOWLEDGED
event 12: run.finished; status: aborted
event 13: effect.upserted; status: cancelled
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions artifacts/verification/tui-audit/after/w6/120x40.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
› W6 visual proof

· run result · Ctrl+E details
Fixture response through pi: W6 visual proof


































profile Braid starter · pi / fixture/deterministic · deterministic fixture in 8 · out 12 · calls 1 · model 50ms
17 changes: 17 additions & 0 deletions artifacts/verification/tui-audit/after/w6/200x60-plain.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Braid ready — /home/drew/code/braid-goal-latest-wt
status: ready for a message
conversation: New conversation; branch: branch-1
profile: Braid starter; runner: pi; connection: deterministic fixture
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-a87a8819-9685-42df-8e1f-11690d0a4e83","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:f75eb08b6c6a3120e5297421baed1e5e2553899395ec5981e0fda4c9ce725300"}}},"session":{"id":"1c480acb-01f2-4964-86f6-fe0900712ee0","backend":"executor","status":"active","createdAt":"2026-08-15T00:50:34.906Z","updatedAt":"2026-08-15T00:50:34.906Z","metadata":"[unavailable]"},"
event 6: application.shutdown.requested; status: streaming
event 7: run.control.requested; status: cancelling: requested
event 8: run.cancel.requested; status: cancelling: requested
event 9: effect.upserted; status: cancelling
event 10: effect.upserted; status: cancelling
event 11: run.control.acknowledged; status: cancelling: CONTROL_ACKNOWLEDGED
event 12: run.finished; status: aborted
event 13: effect.upserted; status: cancelled
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
60 changes: 60 additions & 0 deletions artifacts/verification/tui-audit/after/w6/200x60.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
› W6 visual proof

· run result · Ctrl+E details
Fixture response through pi: W6 visual proof






















































profile Braid starter · pi / fixture/deterministic · deterministic fixture in 8 · out 12 · calls 1 · model 50ms
17 changes: 17 additions & 0 deletions artifacts/verification/tui-audit/after/w6/40x12-plain.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Braid ready — /home/drew/code/braid-goal-latest-wt
status: ready for a message
conversation: New conversation; branch: branch-1
profile: Braid starter; runner: pi; connection: deterministic fixture
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-a87a8819-9685-42df-8e1f-11690d0a4e83","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:f75eb08b6c6a3120e5297421baed1e5e2553899395ec5981e0fda4c9ce725300"}}},"session":{"id":"1c480acb-01f2-4964-86f6-fe0900712ee0","backend":"executor","status":"active","createdAt":"2026-08-15T00:50:34.906Z","updatedAt":"2026-08-15T00:50:34.906Z","metadata":"[unavailable]"},"
event 6: application.shutdown.requested; status: streaming
event 7: run.control.requested; status: cancelling: requested
event 8: run.cancel.requested; status: cancelling: requested
event 9: effect.upserted; status: cancelling
event 10: effect.upserted; status: cancelling
event 11: run.control.acknowledged; status: cancelling: CONTROL_ACKNOWLEDGED
event 12: run.finished; status: aborted
event 13: effect.upserted; status: cancelled
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions artifacts/verification/tui-audit/after/w6/40x12.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
› W6 visual proof

· run result · Ctrl+E details
Fixture response through pi: W6 visual
proof





Braid starter Ctrl+E detail
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions artifacts/verification/tui-audit/after/w6/80x24-plain.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Braid ready — /home/drew/code/braid-goal-latest-wt
status: ready for a message
conversation: New conversation; branch: branch-1
profile: Braid starter; runner: pi; connection: deterministic fixture
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-a87a8819-9685-42df-8e1f-11690d0a4e83","intent":"W6 plain proof","metadata":{"identity":{"profileDigest":"sha256:8344a03c82d5cb9207910fe0cb05ef0757b58b8cea9a7cc82f36055694d58983","taskDigest":"sha256:f75eb08b6c6a3120e5297421baed1e5e2553899395ec5981e0fda4c9ce725300"}}},"session":{"id":"1c480acb-01f2-4964-86f6-fe0900712ee0","backend":"executor","status":"active","createdAt":"2026-08-15T00:50:34.906Z","updatedAt":"2026-08-15T00:50:34.906Z","metadata":"[unavailable]"},"
event 6: application.shutdown.requested; status: streaming
event 7: run.control.requested; status: cancelling: requested
event 8: run.cancel.requested; status: cancelling: requested
event 9: effect.upserted; status: cancelling
event 10: effect.upserted; status: cancelling
event 11: run.control.acknowledged; status: cancelling: CONTROL_ACKNOWLEDGED
event 12: run.finished; status: aborted
event 13: effect.upserted; status: cancelled
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions artifacts/verification/tui-audit/after/w6/80x24.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
› W6 visual proof

· run result · Ctrl+E details
Fixture response through pi: W6 visual proof


















profile Braid starter · pi / deterministic · fixture Ctrl+E detail
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 18 additions & 0 deletions artifacts/verification/tui-audit/after/w6/braid.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
› Which coding agent will handle my next task, and where will it run?

· run result · Ctrl+E details
Pi will run the task through Local CLI Bridge with gpt-5.6-luna. The Release engineer AgentProfile supplies its
instructions and permissions. Braid keeps the transcript, approvals, branches, and trace analysis.











profile Release engineer · pi / openai-codex/gpt-5.6-luna · Local CLI Bridge · high in 1.3k · out 96 · ~$0.0026
Loading