Tags: tangle-network/braid
Tags
fix(release): let the publish gate read real collected live evidence (#… …92) Protected run 36041074555 collected all six live checks as passed, then the publish gate rejected the bundle in two ways the synthetic fixture hid: - The stored stdout log is a 64 KiB head and the release markers print last, so the stored LIVE-10 log had no BRAID_RELEASE_RESULT_JSON. A truncated log now keeps its redacted marker lines; the logged digest and length describe the stored bytes. - The collector snapshots live files to release/logs with content-addressed IDs, but the gate looked for artifacts at live/tangle paths. The gate now finds the retained LIVE-10 artifact by digest and re-hashes both copies. The fixture now uses the collector's snapshot layout, and the old gate fails it. Against the real 36041074555 bundle, the new gate passes once the marker check is bypassed, and that check is fixed for new collections.
feat(runtime): unify durable retained interactions (#31) * fix(release): scope partial evidence to selected checks * fix(runtime): recover retained interaction responses * fix(runtime): adopt corrected retained interaction bindings * fix(interactions): bind replies to admitted runs * feat(interactions): preserve per-turn interaction posture Carry the selected mode and capability-derived interaction map through admission, receipts, retries, and retained turns. Keep provider-boundary tests active until the upstream Runtime and CLI Bridge releases forward the map. * feat(tui): bridge native terminal sessions * feat(tui): restore transcript-first footer density * test(tui): align focused secondary surfaces * fix(tui): restore separated composer metadata * test(tui): follow separated composer hints * fix(tui): harden redaction and terminal cleanup * fix(tui): separate deterministic visual proof from live demo * feat(tui): suspend safely for native sessions * fix(tui): preserve responsive composer and runtime context * chore(deps): migrate agent package cohort * chore(braid): migrate agent runtime dependency cohort * feat(tui): open durable native interactive sessions * feat(runtime): add retained interactive execution adapters * feat(runtime): unify durable retained interactions * fix(runtime): use public CLI Bridge retained lookup * test(live): tighten Braid cloud proof assertions * fix(runtime): route CLI Bridge through retained execution * fix(runtime): keep CLI Bridge sidecar on stable driver * chore(deps): refresh license inventory * chore(deps): update runtime provider cohort * fix(runtime): keep one Bridge environment per provider session cli-bridge 0.9.4 binds a native retained session to its exact creation request digest. A run-scoped environment idempotency key changed the provider metadata on every turn and broke session continuation after a restart. The key now derives from the provider session id, which matches the Tangle retained path. * test(support): model the cli-bridge 0.9.4 wire contract in the fixture The fixture now serves GET /v1/capabilities with the Pi native and generic documents, returns complete exact run coordinates on dispatch, events, status, and cancel, and implements the native retained session protocol (POST /v1/sessions, GET /v1/sessions/:id, POST /v1/sessions/:id/turns). Tests that asserted the 0.7.x chat-only wire shape now assert the session binding, the ownership-key-only provider metadata from runtime 0.142, and the advertised Pi interaction kinds. * test(profiles): assert the interface version against the pinned cohort The literal 1.0.0 went stale on every interface upgrade. The test now compares the resolved package version with the dependency pin in package.json, which also catches a hoisted or stray installation. * test(runtime): prove the CLI Bridge contract on the retained port CLI Bridge execution moved to CliBridgeRetainedExecutionPort, so the frozen-profile, cancellation-acknowledgement, portable-model and runner-prefix contracts are now asserted through that port and through resolveProductionCliBridgeConnection. One test also proves the ephemeral resolver refuses a CLI Bridge connection. * fix(runtime): recover retained Tangle runs by environment ownership Runtime 0.142 writes only the environment ownership key into provider metadata, so a lookup keyed on turn and process identity found nothing after a restart. The lookup now matches the ownership marker and proves run identity from the session's own run control reference. The retained and observed Sandbox client wrappers also forward the backend catalog, which provider 0.13.0 reads to decide which interaction kinds the environment may claim. * fix(security): redact provider secrets in runtime failure text Runtime 0.142 fails a sandbox turn inside its executor and reports the provider's own message, which can carry a credential. Both execution ports now redact the terminal reason and error message with the repository's text redactor, so every consumer of the event sees safe text, not only the journal. * fix(live): emit LIVE-08 as a built-in row and stop redacting control values The Tangle live scope reported LIVE-08 through the matrix adapter, so no built-in check ran, and its proof script imported two helpers the stress module never exported. LIVE-08 now runs the interactive proof directly, and the stress module exports the exact retained-resource observation and cleanup it already implements. A literal secret must now be at least eight characters. A one-character control value such as CLAUDE_CODE_CHILD_SESSION=1 is not a credential, and matching it rewrote release evidence: row LIVE-10 became LIVE-[REDACTED]0. Credential shapes stay redacted at any length. * fix(connections): gate interaction response on the capability document The report asked whether the provider object carried respondToInteraction, which is false for every published provider because the operation lives on the environment and session. CLI Bridge 0.9.4 and the Tangle provider advertise interactions.responseIdempotency instead, which is the fact the runtime gates on, so both the run path and the connection report now read it through one predicate. The unused provider-method field and the test that reproduced the old duck check are deleted. * feat(runtime): adopt the Sandbox run outcome from runtime 0.143 Runtime 0.143 and sandbox 0.31 derive one terminal outcome from the published Sandbox contract, so Braid deletes its own event-level parser. A blocked turn now names the exact Braid refusal: this route deletes its environment after the turn, so an interaction cannot be answered. The terminal metadata carries the provider's raw payload, so it takes the same structured redaction as every other provider value Braid keeps. Docs record the shipped cohort and a dated verification observation, and one migration test proves a journal written before the intent phase still restores its retained run. * chore(licenses): keep the Linux license inventory pnpm licenses list reports the optional binaries installed for the current platform, so a macOS regeneration swaps three entries and the Linux check fails. The checked-in inventory stays the Linux one.