[tracking] Unified managed-shell director: autonomous drain -> interactive surface, the g-brain experience #350

Closed
opened 2026-06-25 22:39:57 +00:00 by coilysiren · 2 comments
Owner

Design anchor (Kai LGTM 2026-06-25) for the g-brain experience: warded director as a unified, managed, interactive LLM shell. Tracking issue - the first build slice is filed separately and dispatched.

The vision

warded director is one agent session, two phases that loop:

  1. Autonomous drain (the director behavior) - dispatch engineers on the actionable/headless lane, poll their WARD-OUTCOME, reconcile, keep the --max-parallel cap full, until no headless-actionable work remains.
  2. Interactive surface (the architect behavior) - when the queue empties it does not stop, it turns to you: "backlog drained, what's next?" You scope, file, refocus, discuss; that generates new work; it drops back into autonomous drain. Loop.

Architect and director were never two roles - they are the idle phase and the busy phase of the same agent. The #346 director's bug ("when it runs out of headless work, it just stops") is the missing transition between them.

The mechanism: heartbeat re-entry, not a hot loop

Engineers run minutes to hours, so the director must not sit thinking (burning tokens) while it waits:

  • Each tick: poll/reconcile in-flight engineers (deterministic) -> invoke the LLM one-shot with the current ranked backlog + ledger + outcomes to choose dispatches and interpret blockers -> dispatch -> sleep cheaply until the next heartbeat (the LLM is NOT alive while sleeping) -> repeat.
  • Only when nothing is queued and nothing is in-flight does it surface to an interactive LLM session.

So the deterministic wrapper drives the cadence and state; the LLM supplies the judgment per tick; the session ends interactive instead of exiting.

Retire vs repurpose

  • Retire the programmatic director as the user-facing product - the fully-deterministic #346 loop is no longer what you run.
  • Repurpose its guts as the director agent's tools - #346's ledger (durable state, resumability), ranking (tier/mode lanes), and WARD-OUTCOME parsing are exactly the state + poll machinery the heartbeat needs. Not deleted - driven by the LLM.
  • Collapse architect into director's surface phase (roster -> engineer / director / advisor). Done as a follow-up after the unified director works, since architect is the standing freeform session until the surface phase replaces it.

Never detached

warded director is always attached / interactive. A headless director is an unwatched LLM autonomously spinning up engineer containers in a loop - runaway dispatch, runaway cost, no human to catch a bad call. "Managed" means you are in the loop. No --detach.

Open components

  • "Drained" definition - momentary (no queued + no in-flight); follow-up work an engineer files reopens the drain.
  • The sleep/wake primitive - the one genuinely new mechanism: an in-container, token-cheap heartbeat re-entry (the LLM invoked per tick, asleep between). Prototyped first in the slice below.
  • Steering mid-drain - interrupt the attached session to pause / refocus / skip.
  • Naming - likely stays director.

Build slices

  1. Heartbeat + interactive surface core (filed + dispatched first) - transform #346's loop into the LLM-in-the-loop heartbeat that surfaces interactively on drain. The spine.
  2. Collapse architect into the surface phase - retire the standalone architect command once director's surface covers it; roster -> 3 roles.
  3. Polish - manager-skill richness, mid-drain steering UX, the cap/scope ergonomics.

References

ward#346 (the programmatic director whose ledger/poll this repurposes), ward#347 (the roster + architect this unifies with), ward#348 (the generated roster that will shrink to 3 roles), docs/agent-director.md / agent-architect.md.

Design anchor (Kai LGTM 2026-06-25) for the **g-brain experience**: `warded director` as a unified, managed, interactive LLM shell. Tracking issue - the first build slice is filed separately and dispatched. ## The vision `warded director` is **one agent session, two phases that loop**: 1. **Autonomous drain** (the director behavior) - dispatch engineers on the actionable/headless lane, poll their `WARD-OUTCOME`, reconcile, keep the `--max-parallel` cap full, until no headless-actionable work remains. 2. **Interactive surface** (the architect behavior) - when the queue empties it **does not stop, it turns to you**: "backlog drained, what's next?" You scope, file, refocus, discuss; that generates new work; it drops back into autonomous drain. Loop. Architect and director were never two roles - they are the **idle phase and the busy phase of the same agent**. The #346 director's bug ("when it runs out of headless work, it just stops") is the missing transition between them. ## The mechanism: heartbeat re-entry, not a hot loop Engineers run minutes to hours, so the director must not sit *thinking* (burning tokens) while it waits: - Each tick: **poll/reconcile** in-flight engineers (deterministic) -> invoke the **LLM one-shot** with the current ranked backlog + ledger + outcomes to choose dispatches and interpret blockers -> **dispatch** -> **sleep cheaply** until the next heartbeat (the LLM is NOT alive while sleeping) -> repeat. - Only when **nothing is queued and nothing is in-flight** does it surface to an interactive LLM session. So the deterministic wrapper drives the cadence and state; the LLM supplies the judgment per tick; the session ends interactive instead of exiting. ## Retire vs repurpose - **Retire the programmatic director as the user-facing product** - the fully-deterministic #346 loop is no longer what you run. - **Repurpose its guts as the director agent's tools** - #346's ledger (durable state, resumability), ranking (tier/mode lanes), and `WARD-OUTCOME` parsing are exactly the state + poll machinery the heartbeat needs. Not deleted - driven by the LLM. - **Collapse architect into director's surface phase** (roster -> engineer / director / advisor). Done as a follow-up *after* the unified director works, since architect is the standing freeform session until the surface phase replaces it. ## Never detached `warded director` is **always attached / interactive**. A headless director is an unwatched LLM autonomously spinning up engineer containers in a loop - runaway dispatch, runaway cost, no human to catch a bad call. "Managed" means you are in the loop. No `--detach`. ## Open components - **"Drained" definition** - momentary (no queued + no in-flight); follow-up work an engineer files reopens the drain. - **The sleep/wake primitive** - the one genuinely new mechanism: an in-container, token-cheap heartbeat re-entry (the LLM invoked per tick, asleep between). **Prototyped first** in the slice below. - **Steering mid-drain** - interrupt the attached session to pause / refocus / skip. - **Naming** - likely stays `director`. ## Build slices 1. **Heartbeat + interactive surface core** (filed + dispatched first) - transform #346's loop into the LLM-in-the-loop heartbeat that surfaces interactively on drain. The spine. 2. **Collapse architect into the surface phase** - retire the standalone architect command once director's surface covers it; roster -> 3 roles. 3. **Polish** - manager-skill richness, mid-drain steering UX, the cap/scope ergonomics. ## References ward#346 (the programmatic director whose ledger/poll this repurposes), ward#347 (the roster + architect this unifies with), ward#348 (the generated roster that will shrink to 3 roles), docs/agent-director.md / agent-architect.md.
Author
Owner

Slice 2 filed as its own dispatchable unit: ward#353 - collapse architect into the surface phase, roster -> engineer/director/advisor. Gated on a live director surface exercise (the spine from slice 1 / ward#351 is validated by construction, not yet run live), so prove warded director drain->surface->resume before removing the working architect session.

Slice 2 filed as its own dispatchable unit: ward#353 - collapse architect into the surface phase, roster -> engineer/director/advisor. Gated on a live director surface exercise (the spine from slice 1 / ward#351 is validated by construction, not yet run live), so prove warded director drain->surface->resume before removing the working architect session.
Member

Stays consult: vision/design anchor. Note: the consult-to-headless interview flow (#493) implements a concrete slice of the interactive-surface phase described here. Recorded by Claude Code (Fable) during the 2026-07-01 ward launch triage session with Kai.

Stays consult: vision/design anchor. Note: the consult-to-headless interview flow (#493) implements a concrete slice of the interactive-surface phase described here. Recorded by Claude Code (Fable) during the 2026-07-01 ward launch triage session with Kai.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-flight-deck/ward#350
No description provided.