Summary
TTA.dev now ships a working L0 developer control plane (ttadev/control_plane/) that handles task ownership, run tracking, and leases across agents. TTA's IPA→WBA→NGA orchestration pipeline (#256 closed) and session lifecycle (#317) are exactly the use cases it was designed for.
What the control plane provides
from ttadev.control_plane import ControlPlaneService
svc = ControlPlaneService()
# Claim a task — prevents two agents racing on the same work
run = svc.claim_task("ipa-generate", agent_id="ipa-agent")
# Run is tracked with start time, status, owner
# Automatically binds to Langfuse session (#360) if installed
svc.complete_run(run.id, output={"narrative": "..."})
Key capabilities:
- Leases: claim/release so IPA, WBA, NGA don't collide on shared state
- Run ledger: every pipeline execution logged with inputs/outputs and agent owner
- Gate model: block progression between stages until conditions met
- MCP tools: AI coding agents can inspect live task/run state during development
- Langfuse binding:
claim_task() auto-sets langfuse.session_id = run.id — full trace per pipeline run
Why this matters for TTA
The IPA→WBA→NGA pipeline has no coordination layer right now. When two player sessions trigger concurrent world updates, they can race on Dolt branch operations (#295-#298). The control plane gives each stage a lease it must hold before writing, and a run record the session lifecycle (#317) can reference.
The Gate model (#258, closed) was the first proof — this extends it to the full orchestration surface.
Adoption steps
- Add
ttadev to TTA's dependencies (already declared, may need version pin)
- Initialize
ControlPlaneService once at app startup
- Wrap IPA, WBA, NGA entry points with
claim_task() / complete_run()
- Optionally expose via
tta control task list CLI for debugging
Related
Summary
TTA.dev now ships a working L0 developer control plane (
ttadev/control_plane/) that handles task ownership, run tracking, and leases across agents. TTA's IPA→WBA→NGA orchestration pipeline (#256 closed) and session lifecycle (#317) are exactly the use cases it was designed for.What the control plane provides
Key capabilities:
claim_task()auto-setslangfuse.session_id = run.id— full trace per pipeline runWhy this matters for TTA
The IPA→WBA→NGA pipeline has no coordination layer right now. When two player sessions trigger concurrent world updates, they can race on Dolt branch operations (#295-#298). The control plane gives each stage a lease it must hold before writing, and a run record the session lifecycle (#317) can reference.
The Gate model (#258, closed) was the first proof — this extends it to the full orchestration surface.
Adoption steps
ttadevto TTA's dependencies (already declared, may need version pin)ControlPlaneServiceonce at app startupclaim_task()/complete_run()tta control task listCLI for debuggingRelated
ttadev/control_plane/service.py