You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Every Tangle AI app (gtm, tax, legal, creative, and future apps) runs its chat + vault functionality on the agent-app chat vertical instead of per-app forks. Produced by a five-repo audit (2026-07-23): the vertical (#191–#220) is shipped and published, gtm/tax/legal have adopted it to varying depth, creative has not, and a handful of generic pieces still live only in gtm.
Definition of done: every non-➖ cell in the tracking matrix below is ✅ — all chat features, in all four apps.
Work is split into two tracks: Track A is fully under our control; Track B is finished or well-understood work blocked on agent-dev-container releases — each item has an explicit trigger event and must never stall Track A.
Feature × app tracking matrix
Verified against each repo's live remote default branch on 2026-07-25 (agent-app 4457f41, gtm 14ea919, tax f4b9875, legal 60f1915, creative 0b8b536). Legend: ✅ complete · 🟡 partial/local fork/upgrade needed · ❌ missing · ➖ N/A by design. Missing cells name the covering issue; untracked means no implementation issue currently exists.
Important distinctions found by the 2026-07-25 audit:
The shared producer is now hardened and published; gtm, tax, and legal consume it. tangle-network/creative-agent#436 is the remaining producer adoption.
Green question/plan UI does not mean the durable server workflow is shared: no app currently imports createDurableInteractionRoutes or createDurablePlanRoutes.
Only gtm supplies the shared vertical a durable turnLock; the session gateway is not a distributed single-flight replacement.
Agent-app 0.43.62 added incremental in-flight assistant-row persistence. No app has adopted that release yet; tax and creative also need their store wrappers to preserve updateMessage/deleteMessage.
Legal's detached/replay behavior exists, but replay authorization currently authenticates the user without resolving the turn back to its owning workspace.
The prior matrix tracked only VaultPane UI. The new Vault rows make the unresolved backend, write, storage, and safety consolidation visible instead of treating UI adoption as whole-Vault completion.
Currently tracked remaining Creative chain: tangle-network/creative-agent#436 → tangle-network/creative-agent#435 → tangle-network/creative-agent#429. The bold untracked cells are additional gaps found by the latest code audit; no new issues have been created.
Track A — dependency waves (everything within a phase runs in parallel)
Phases are dependency waves, not project groupings. Every item in a phase is mutually independent. Phases are not barriers: an item may start as soon as its own listed prerequisite lands, even if the rest of the previous phase is still in flight.
Phase 1 — independent today, start all in parallel:
tangle-network/creative-agent#435 — adopt chat plan mode after #428 and #436; sequence separately because it overlaps the chat page, producer, and interaction paths.
Phase 7 — Creative feature bundle:
tangle-network/creative-agent#429 — mentions + attachments + shared skills after #428 and #435; keep last in Creative because it overlaps the chat page/composer and producer seams.
Phase 8 — graduate shared seams after adoption evidence exists:
tangle-network/gtm-agent#616 — chat-path vault self-heal — MERGED (PR #623); same-incarnation in-place wipe repaired by a cheap emptiness probe (incarnation identity only catches filesystem replacement)
gtm skills-payload split via splitInlineProfileSkills — superseded: traced 2026-07-24, that utility cannot fix the per-turn case (create-only); the real fix is Gate 4 below (gtm#625 + adc#4031)
Gate 4 — adc#4031 (public primeProfile/attachProfileReference) merges + ships in a stable @tangle-network/sandbox release (PR adc#4033 open):
tangle-network/gtm-agent#625 — defer inline skills from the per-turn payload: persist {skillsCorpusHash, profileSha256} per sandbox, attach/prime on each turn (gtm wiring half; blocked on the SDK publish)
Gate 3 — ✅ CLOSED 2026-07-24, collapsed to a one-line fix. The execution-roots architecture proved unnecessary: the serialization was a GTM-side workspace-scoped turn lock, and vault safety already lives in gtm's persistence layer (per-path revision CAS, conflict retention, the #612 blast-radius guard). adc#3801 and #208 closed as not-planned; gtm#604 rescoped and shipped as gtm PR #622 (thread-scoped lock). Residual watch item: box-lifecycle races under concurrent turns are untraced.
tangle-network/gtm-agent#604 — shipped via gtm#622 (one-line lock-scope flip)
Dependency notes
tax#383 is a live production defect — it can merge before anything else.
The three UI-cascade issues (tax#386, legal#272, creative#425) are one recipe applied three times; sequence one, copy to the rest. They gate the sandbox-ui 0.84+/0.87 client components — composer-attach UX and the mention UI (gtm needed sandbox-ui 0.87 for mentions in gtm#614). They do not gate any server-side vertical work.
gtm#612 fail-closes on missing incarnation fields — merging before the stable SDK publish would break sandbox provisioning; the develop-prerelease pin must not ship to master.
App feature issues state their own agent-app bump requirements; they consume whatever version includes the Phase-1 uplifts they need.
Tax and legal dependency baselines are complete at agent-app ^0.43.54; their remaining ordering is now driven by code overlap, not package versions. Tax's three feature tasks are parallel-safe. Legal must sequence #277 → #278 → #271, while #279 runs independently.
Skills adoption required an agent-interface bump. Tax and legal baselines now include agent-interface ≥0.31; creative (^0.32) was already clear. Keep those floors while implementing tax#390, legal#279, and creative#429.
Track B is fully parallel to Track A — nothing in Track A waits on it.
Non-goals / open decisions
Shell consolidation (sandbox provisioning, AgentProfile assembly, system-prompt assembly, per-turn model resolution — docs/agent-shell-consolidation.md, still a proposal) is out of scope: it is a second epic-sized effort. This epic covers the chat vertical only; each app keeps its provisioning layer for now.
creative Missions engine: remains its own autonomous-run concept, out of this epic. Chat plan mode for creative IS now in scope (creative#435), which embeds the small Missions-relationship decision as its first task.
tax attachments + vault-write stay out by design: tax's encrypted R2 document vault (AES-256-GCM, integrity trail) serves its need; the shared upload/object-store path is not a gap there (documented in tax#379).
No app ships a -develop.* prerelease pin of @tangle-network/sandbox to its default branch.
Migration waves follow the proven gtm pattern: net-negative LOC, no-mocks e2e per wave, product-specific rendering preserved via seams/slots — never re-forked.
Ideal end state
agent-app documents and owns the entire generic chat vertical (turns, replay, interactions, plans, mentions, attachments, skills); each app's chat is a thin set of product seams; a new app can build chat from the README quickstart alone; nightly live-e2e guards the contract fleet-wide.
Goal
Every Tangle AI app (gtm, tax, legal, creative, and future apps) runs its chat + vault functionality on the agent-app chat vertical instead of per-app forks. Produced by a five-repo audit (2026-07-23): the vertical (#191–#220) is shipped and published, gtm/tax/legal have adopted it to varying depth, creative has not, and a handful of generic pieces still live only in gtm.
Definition of done: every non-➖ cell in the tracking matrix below is ✅ — all chat features, in all four apps.
Work is split into two tracks: Track A is fully under our control; Track B is finished or well-understood work blocked on agent-dev-container releases — each item has an explicit trigger event and must never stall Track A.
Feature × app tracking matrix
Verified against each repo's live remote default branch on 2026-07-25 (agent-app
4457f41, gtm14ea919, taxf4b9875, legal60f1915, creative0b8b536). Legend: ✅ complete · 🟡 partial/local fork/upgrade needed · ❌ missing · ➖ N/A by design. Missing cells name the covering issue; untracked means no implementation issue currently exists.createChatTurnRoutes)createDurableInteractionRoutes)createDurablePlanRoutes)skill-mounts.ts^0.43.60^0.43.56^0.43.56^0.43.56Important distinctions found by the 2026-07-25 audit:
createDurableInteractionRoutesorcreateDurablePlanRoutes.turnLock; the session gateway is not a distributed single-flight replacement.updateMessage/deleteMessage.Currently tracked remaining Creative chain: tangle-network/creative-agent#436 → tangle-network/creative-agent#435 → tangle-network/creative-agent#429. The bold untracked cells are additional gaps found by the latest code audit; no new issues have been created.
Track A — dependency waves (everything within a phase runs in parallel)
Phases are dependency waves, not project groupings. Every item in a phase is mutually independent. Phases are not barriers: an item may start as soon as its own listed prerequisite lands, even if the rest of the previous phase is still in flight.
Phase 1 — independent today, start all in parallel:
Phase 2 — each unblocked by the named Phase-1 item(s):
b82bdfa:detach: true, running-turn discovery, client reattach, and e2e coverage are presentCompleted prerequisites for the remaining waves (record only — do not schedule):
^0.43.54, sandbox^0.12.0, tangle-network/gtm-agent#621.^0.43.54+ agent-interface≥0.31.^0.43.54+ agent-interface≥0.31.Phase 3 — ready now; all eight tasks run in parallel:
createSandboxChatProducerup to GTM's proven terminal behavior and settle the wire vocabulary.gtm-chat-vertical.tschanges.app.workspace.chat.tsx.Phase 4 — unblocked by Phase 3; all five tasks run in parallel:
gtm-chat-vertical.tschange.Phase 5 — second-order adoptions; all three tasks run in parallel:
gtm-chat-vertical.tschange.Phase 6 — Creative plan mode:
Phase 7 — Creative feature bundle:
Phase 8 — graduate shared seams after adoption evidence exists:
@experimentalseams only after the app adoptions above provide the required second consumers.Track B — upstream-gated (blocked on agent-dev-container; act on the trigger, never schedule)
Gate 1 — adc#3853 publishes agent-profile-materialize ≥0.6.0 to npm:
Gate 2 — ✅ DONE 2026-07-24 (was: open):
@tangle-network/sandbox0.12.0 published stable (via adc#3982 merge → release train), tarball-verified to carryfilesystemIncarnationIdANDsplitInlineProfileSkills. Both vault fixes shipped:gtm skills-payload split via— superseded: traced 2026-07-24, that utility cannot fix the per-turn case (create-only); the real fix is Gate 4 below (gtm#625 + adc#4031)splitInlineProfileSkillsGate 4 — adc#4031 (public primeProfile/attachProfileReference) merges + ships in a stable @tangle-network/sandbox release (PR adc#4033 open):
Gate 3 — ✅ CLOSED 2026-07-24, collapsed to a one-line fix. The execution-roots architecture proved unnecessary: the serialization was a GTM-side workspace-scoped turn lock, and vault safety already lives in gtm's persistence layer (per-path revision CAS, conflict retention, the #612 blast-radius guard). adc#3801 and #208 closed as not-planned; gtm#604 rescoped and shipped as gtm PR #622 (thread-scoped lock). Residual watch item: box-lifecycle races under concurrent turns are untraced.
Dependency notes
^0.43.54; their remaining ordering is now driven by code overlap, not package versions. Tax's three feature tasks are parallel-safe. Legal must sequence #277 → #278 → #271, while #279 runs independently.≥0.31; creative (^0.32) was already clear. Keep those floors while implementing tax#390, legal#279, and creative#429.Non-goals / open decisions
docs/agent-shell-consolidation.md, still a proposal) is out of scope: it is a second epic-sized effort. This epic covers the chat vertical only; each app keeps its provisioning layer for now.Safety rules
-develop.*prerelease pin of @tangle-network/sandbox to its default branch.Ideal end state
agent-app documents and owns the entire generic chat vertical (turns, replay, interactions, plans, mentions, attachments, skills); each app's chat is a thin set of product seams; a new app can build chat from the README quickstart alone; nightly live-e2e guards the contract fleet-wide.