Daily Edition Sources +5

Builder Work: Do Not Return a Tab Nobody Owns

Tangle’s move from a large React context to a shared store contains a sharper lesson than a library preference: an agent-facing creation method must not report an object that its owner never accepted.

Three cards connect an active session, storing a tab and returning a handle; a tab without a session is crossed out.
Diagram Punkreturn a tab only after a session owns it. This is in-memory state, not durable storage.
repo TangleML/tangle-ui evidence
5 source signals 1 repo commit 6d0e231
Evidence: commit 6d0e231 / September 26, 2026 / Daily Edition
Open Edition Evidence below

A tab can have an identifier and still exist nowhere useful. In Tangle’s Tangent workspace, the method that opened a view could manufacture a tab while no session was active. The storage step then had nowhere to put it. A caller received something that looked like success, while the user saw no new workarea.

The September 25 contribution describes the consequence for both humans and agents: a resource click could silently do nothing; an agent could report an artifact opened or wait for an environment attached to a tab that was never stored. The commit publicly attributes part of the work to Claude Opus 5. That establishes declared coding-agent participation, not how much of the implementation a model produced.

The refactor made the owner explicit

The wider change extracts shared interface state into TangentProjectStore. It owns the selected session and maps of each session’s workarea and chat tabs. React components observe that store, and the agent provider reads the same instance outside rendering. Server-fetched project and resource data remain in TanStack Query.

This division matters more than a choice between React and MobX. A tool operating outside a render needs current state too. The provider wiring supplies the store’s open-target method to the agent tools. The new owner is shared by the screen and the program acting on it.

Inside the store, openResolvedView now checks for an active session before creating a tab. With none, it throws. With one, it either focuses an existing target or stores the new tab and then returns it. Closing or selecting an absent tab can remain harmless; creating a tab and returning a handle makes a stronger promise.

A builder lesson: test the returned promise

When an agent tool returns a handle, treat it as a claim about shared state. Identify the owner, check its prerequisite before allocating, and test the state the next caller will actually read. A UUID or an object with the right fields is not enough.

The added store tests express that contract from several directions. Opening without a session must throw and leave the tab list empty. Opening the same target again must return the existing identity. Switching sessions must reveal each session’s own tabs and restore the earlier set on return. Those checks distinguish ownership, deduplication and session separation, rather than merely asserting that a creation function returned something.

We traced the store, its tests and agent-provider integration beyond the repository description. We did not run the frontend suite or reproduce the behavior in a deployed Tangle instance. The store is in-memory interface state; this is not a claim of durable recovery after a browser restart. Nor does a stored tab establish that its embedded environment is ready.

That remaining distinction is the next contract to preserve: first prove the tab belongs to a session, then prove the environment behind it is usable. An agent should not have to discover either failure after telling its user that the work is open.

Evidence Trail

Receipts below the story

The article above is the public narrative. This section keeps the source trail and limits on the same page.

Edition
DateSeptember 26, 2026
LaneDaily Edition
Confidence78%
Sources5
ReposTangleML/tangle-ui

Primary Evidence

Evidence Limits

  • The frontend suite and deployed application were not independently run.
  • The agent-use evidence is a public co-author declaration, not a session transcript or a measure of contribution.
  • The store owns in-memory UI state; the article does not claim browser-restart persistence or that storing a tab proves its environment is ready.
Letters & Corrections

Send a note to the desk

Corrections, missing context, or a follow-up lead.