Always isolated
A normal thread never edits the current checkout and never inherits the active thread’s workspace mode.
Product proposal · ideal state
In T3 Code, the ordinary path should always create an isolated worktree from the latest remote default branch. Working in the current checkout—or branching from something else—should be a deliberate, one-thread exception.
The product promise
A user should be able to press “New thread,” start typing, and trust the environment without checking their terminal, current branch, or last pull.
A normal thread never edits the current checkout and never inherits the active thread’s workspace mode.
The base is fetched from the primary remote at send time—not whatever a local branch happened to contain.
Before sending, the composer says exactly where work will happen and what ref it will start from.
The ordinary flow
The draft records intent. The connected environment turns that intent into a pinned, reproducible workspace only when the first message is sent.
No branch or workspace prompt interrupts the common path.
“Fresh worktree · latest origin/main” is visible beside the composer.
The primary remote’s default branch is resolved at first send.
A new branch and worktree are created from the fetched commit.
Setup completes first; only then does the agent receive the task.
Workspace choices
The alternatives remain easy to reach, but choosing one changes only the current draft. It does not quietly retrain the next “New thread.”
Fetch the primary remote, resolve its default branch, pin the resulting commit, and create an isolated workspace.
Applies to every ordinary new thread
Use the environment’s existing directory exactly as it is, with a clear warning that changes are not isolated.
This draft only
Choose a branch, tag, or commit, then create a fresh worktree pinned from that selected ref.
This draft only
Composer experience
Workspace intent belongs beside the message—not buried in global settings and not inferred from whichever thread was previously open.
“Change…” opens the two exceptional paths. The primary label remains descriptive—not a toggle whose state must be remembered.
Hard invariants
These should be product-level rules shared by every entry point: sidebar button, keyboard shortcut, command palette, URL, desktop app, and mobile client.
An ordinary new thread does not copy the active thread’s branch, workspace mode, or draft exception.
Freshness comes from fetching the remote ref during workspace creation, not updating a user’s local main.
If a fresh worktree cannot be created, the task does not quietly run in CWD or on stale state.
Choosing current checkout or another ref affects the current draft unless the user separately edits their default.
The connected environment validates, fetches, resolves, pins, creates, and reports the actual workspace.
“New thread” has the same semantics on the hosted site, installed app, and CLI-connected environment.
Settings architecture
Centralization should mean one coherent control plane—not forcing every value into one database. Each setting lives where its authority naturally belongs and the UI explains that scope.
New-thread policy, provider preferences, confirmations, favorites. Synced across clients.
Theme, layout, notifications, and shortcuts that belong to this browser or app.
Provider binaries, project roots, shell behavior, credentials, and Git capabilities.
Setup commands, remote choice, default-branch overrides, and repository-specific behavior.
The user sees one resolved answer—with provenance—while secrets and machine-specific configuration remain on the connected environment.
Settings UI
Every control names its scope. Environment settings require an environment context. Writes show pending, success, or failure—there are no silent no-ops and no immediate snap-back to mystery defaults.
Used by every client unless this draft explicitly overrides it.
Used to resolve the repository’s latest default branch.
Stored and validated on Julius’s Mac mini.
System contract
The hosted site can be the front door without becoming the owner of machine state. It asks for a strategy; the connected environment safely executes and reports the result.
Client responsibilities
Environment responsibilities
Failure behavior
A reliability feature is only real if it survives failure. The product must preserve the user’s isolation and freshness intent instead of optimizing for “something started.”
The remote could not be reached. Nothing has started and your current checkout was not modified.
Definition of done
These are behavioral acceptance criteria, independent of a particular storage model or migration path.