Skip to content

Tighten conductor prompt: authority boundaries and no-polling wait contract #92

Description

@danshapiro

Summary

Trycycle is different from Kilroy in many ways, but it does a better job of leading the top-level coordinating agent to:

  • follow the workflow strictly
  • avoid busy-polling or inventing status checks for subagents/workers
  • understand its own scope of authority

Kilroy should adopt the conductor-facing prompt lessons without broadening this into unrelated workflow changes.

Problem

/home/user/code/kilroy-from-matt/AGENTS.md currently describes the top-level role as a director and teaches active supervision:

Oversee. `kilroy runs list --label wave=N` to see your wave's status. `kilroy runs show <id> --json` for details. `kilroy status --latest --watch` to follow a single run live. `kilroy runs wait <id> --timeout 1h` to block on a single run.

That framing encourages the agent to inspect live state, poll, watch, and infer progress. It also leaves the top-level agent's authority too vague: it can feel authorized to inspect, intervene, retry, or do shadow implementation work while workers are still running.

Recommended Changes

1. Rename the top-level role from director to conductor

Use conductor consistently in /home/user/code/kilroy-from-matt/AGENTS.md.

Reserve orchestrator for Kilroy internals/runtime code. The agent-facing role should be human-readable and singular.

2. Define the conductor's scope of authority

Add an explicit authority boundary.

The conductor may:

  • write task specs
  • dispatch Kilroy runs
  • wait for terminal results
  • integrate completed outputs
  • ask the user when a run explicitly requires a decision

The conductor may not:

  • implement the same task locally after delegation
  • inspect live worktrees/artifacts to infer progress
  • poll status repeatedly
  • kill/retry before timeout
  • change scope, backend, model, or flags after dispatch unless explicitly authorized

3. Make waiting the default behavior

Replace the current active-supervision guidance with a dispatch-and-wait contract:

After dispatch, wait. Do not inspect live run artifacts or poll status.
Use `kilroy runs wait <id> --timeout <expected-duration>` as the normal path.
Use `runs show`, `runs list`, `status --watch`, or artifact reads only after terminal completion, timeout, failure, or explicit user request.

4. Add an intervention-requires-authority rule

Before intervening in a running worker, the conductor must be able to cite one of:

  • explicit user instruction
  • a timeout rule
  • a terminal failure result
  • a USER DECISION REQUIRED / escalation artifact
  • an approved task-spec step that requires intervention

Curiosity, impatience, unclear progress, or "just checking" are not authority.

5. Separate observability from control

STATUS.md can remain useful for humans, dashboards, or explicit status requests, but conductor prompts should say it is not a control loop.

The conductor should not watch STATUS.md unless:

  • the user asks for a progress update
  • a run times out
  • a run fails
  • the workflow explicitly returns a terminal result requiring inspection

First Patch Scope

The first patch should be limited to /home/user/code/kilroy-from-matt/AGENTS.md:

  • rename the role to conductor
  • define the conductor's authority boundary
  • replace the Oversee step with strict dispatch-and-wait guidance
  • clarify that runs list, runs show, status --watch, live artifact reads, and STATUS.md are diagnostic/observability tools, not the normal conductor control loop

Out of Scope

Do not use this issue to change planner/reviewer implementation quality, move prompts out of DOT files, redesign workflow topology, or add plan review/synthesis stages. Those may be useful, but they are not the specific problem here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions