A mission is durable, delegated authority.
A mission carries an instruction (the mandate), allocated capital, an
authority envelope of ceilings and risk policy, a bound agent runtime,
called the harness in this subsystem (one provider instance and one chat thread), and
the markets it may trade. A model turn is temporary. The mission rows written
by TradingMissionService.ts persist after it ends. Its
header names the two things it owns: mission creation with the one-active-mission
invariant, and the §11.1 status transitions (TradingMissionService.ts:2-8).
One installation, one active mission. The invariant is scoped to a user, and upstream
T3 is a single-user local server, so the reactor pins one owner,
LOCAL_TRADING_USER_ID = "local", rather than inventing an
identity contract the spec has not published (TradingMissionReactor.ts:136-143). A create that would overlap fails with
TradingMissionAlreadyActiveError unless the existing mission
is in a permanent terminal state (TradingMissionService.ts:119-126).
The explicit form is not the only door. A chat that has never held a mission can
publish a plan or place an entry, and the first such call takes authority on
the market it names. TradingAuthorityBinding.ts runs the
same createMission, so the D4 per-market exclusivity check
and the manual-exposure check are the ones already written; The service does not
dispatch another command or start another run. The caller is already waiting inside
the tool call, and the current turn already needs the authority. "An auto-created
mission is a mission" (TradingAuthorityBinding.ts:1-18). It
walks initializing → analysing → waiting inline, both edges
now, and calls adoptTurn so the chat turn holds the decision
lease every execution check asks about (TradingAuthorityBinding.ts:393-407).
A held market refuses, and the refusal names the holder. The refusing text quotes the
holding chat's title, because the trade home lists positions and a waiting mission is
invisible there; the gap is said out loud rather than papered over, and no new
navigation is built to close it (TradingAuthorityBinding.ts:86-112).
D4 · one market, one hand
A market can be held by a mission or by the owner's manual trading, never both. The
mission side refuses when the market is taken or manually exposed; the manual ticket
refuses with market_owned_by_mission, "named so the
refusal reads as the rule it is" (TradingManualEntryService.ts:13-16).