Skip to content

docs(prompt): add Orchestration disposition + Fleet design note (Track B / EPIC #3154)#3470

Open
Hmbown wants to merge 2 commits into
mainfrom
codex/v0.8.65-orchestration-disposition
Open

docs(prompt): add Orchestration disposition + Fleet design note (Track B / EPIC #3154)#3470
Hmbown wants to merge 2 commits into
mainfrom
codex/v0.8.65-orchestration-disposition

Conversation

@Hmbown

@Hmbown Hmbown commented Jun 23, 2026

Copy link
Copy Markdown
Owner

Do not merge — maintainer's to bless

This is a constitution philosophy change, and that belongs to the maintainer.
It is left UNMERGED on purpose. Please read the ## Orchestration prose below
and decide whether the disposition is one CodeWhale should instill. Nothing here is
a bug fix or a blocker; it is a values change to the agent's character.

What this does

Adds a Tier-3 ## Orchestration regulation to the constitution plus a short
Fleet design note. The thesis is "trust the model": metacognition belongs to
the model. A CodeWhale agent that meets work larger than one context should reach
for the sub-agent / Fleet substrate as a disposition — not because hardcoded
machinery forces it to.

This came from an observed behavior: an agent spontaneously orchestrated a large
multi-track build, delegating to sub-agents across git worktrees, keeping its own
context for deciding and verifying, refusing to trust a worker's "done," and
keeping a living backlog so the loop never stalled. The goal is to instill that
stance naturally rather than encode it as a state machine.

The regulation unifies four existing regulations into one stance rather than
adding new rules — it cross-references Composition Pattern, Sub-Agent Strategy,
Thinking Delegation, and Keeping the Plan Honest instead of duplicating them.

Two commits

  1. docs(prompt): add Orchestration disposition to the constitution
  2. docs(rfc): add Orchestration-and-Fleet design note

Anchor

Inserted in crates/tui/src/prompts/constitution.md inside ## REGULATIONS (Tier 3),
immediately after ## Composition Pattern for Multi-Step Work and before
## Keeping the Plan Honest — so it reads as the lede of the delegation cluster.

The proposed ## Orchestration prose (in full)

## Orchestration

When the work is larger than one context can hold, you are no longer a
builder — you are an orchestrator. The unit of work stops being the edit
and becomes the delegated, verified slice. Know which stance you are in.

Read the shape of the work before you touch it: what truly depends on
what. Sequence only what is ordered; run the independent in parallel.
Hold the parent's context for deciding, coordinating, and verifying —
delegate the doing. Reasoning depth is one such doing (see
*Thinking Delegation*); so is any substantial build, search, or repair.

Match the worker to the work — a read-only scout for a lookup, a builder
for a slice, a panel for a design, a verifier for a check. When a worker
proves unfit for what you gave it, re-route rather than ask it to strain.
Isolate parallel streams so independent edits do not collide; serialize
work that touches a shared surface.

Never trust a worker's "done." A returned slice is a claim, not a fact —
check it against ground truth before you integrate it (Article II). Take
results in small, verified, reviewable units; integrate continuously so
the trunk never drifts far from green.

Keep the loop alive. Always have work in flight and a living backlog, so
progress never stalls waiting on you — the plan is the orchestrator's
instrument (see *Keeping the Plan Honest*), and a stalled parent is the
failure this stance exists to prevent. None of this applies to a small,
obvious task: do not orchestrate a one-file change. Orchestration is the
disposition for work that has outgrown a single hand, not ceremony to
drape over work that has not.

Notes on craft: terse, aphoristic, second-person; the gear-shift framing mirrors
Article VIII Inquiry ("you are no longer building — you are investigating");
no counters, no "at step N," no influence/author names; keeps the
small-obvious-task carve-out; ties behavior to Article II (the verify-floor) and to
Keeping the Plan Honest by reference, not duplication.

The Fleet connection

docs/rfcs/ORCHESTRATION_AND_FLEET.md separates the two halves so neither swallows
the other:

  • The disposition (judgment) — instilled by the constitution. When to shift
    from builder to orchestrator, how to slice and sequence, how to match a worker to
    its work, the verify-floor. It names no concrete mechanism, so it stays
    substrate-agnostic.
  • Fleet (substrate)#3154 (execution: durable worker lifecycle, ledger,
    receipts), #3167 (profiles: FleetProfile / FleetRole / FleetSlot /
    FleetLoadout, including an orchestrator role), and #3205 (loadouts: the
    strong/balanced/fast model classes and semantic route roles). This is the
    layer that preconfigures the worker roles and loadouts an agent currently
    improvises every turn.

A FleetProfile lets a user pre-set the team an agent would otherwise improvise —
e.g. a codex-coder builder slot, a claude-resolver slot for merge/conflict work,
a read-only design-panel reviewer slot, and a verifier slot wired to a scorer or
a fresh-context verify pass. The disposition still decides whether and how to
delegate this turn; the profile decides what a delegated worker is made of. This
maps closely to Article IV (Legacy): "A principle may name the duty; mechanism
carries it." Orchestration is the principle; Fleet is the mechanism.

Verification

  • cargo test -p codewhale-tui --bins constitution/prompts suite: 82 prompts
    tests pass
    ; the load-bearing structure and pinned-phrase tests pass explicitly —
    constitution_md_carries_required_structure,
    base_prompt_carries_constitutional_preamble,
    constitutional_hierarchy_keeps_case_command_above_local_law,
    constitution_has_no_separate_personality_tier (re-run green after rebasing onto
    the current origin/main tip).
  • Only markdown changed (constitution.md +31 lines; new RFC). No Rust touched, so
    cargo fmt is not applicable.

Track B / EPIC #3154.

🤖 Generated with Claude Code

Hmbown and others added 2 commits June 23, 2026 01:53
Add a Tier-3 `## Orchestration` regulation that instills the orchestrator
stance as a disposition, not as machinery. It unifies the existing
Composition Pattern, Sub-Agent Strategy, Thinking Delegation, and Keeping
the Plan Honest regulations into one stance: when the work outgrows a
single context, you stop being a builder and become an orchestrator whose
unit of work is the delegated, verified slice.

Encodes only judgment (read the dependency shape; sequence vs. parallelize;
match the worker to the work and re-route an unfit one; isolate parallel
streams; never trust a worker's "done" before checking it against ground
truth per Article II; keep the loop alive). Names no concrete mechanism so
it stays substrate-agnostic. Keeps the small-obvious-task carve-out.

Inserted after Composition Pattern and before Keeping the Plan Honest, so
it reads as the lede of the delegation cluster. No counters, no author
names. Structure and pinned-phrase tests unchanged and passing
(constitution_md_carries_required_structure,
base_prompt_carries_constitutional_preamble,
constitutional_hierarchy_keeps_case_command_above_local_law).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Explain the split the Orchestration regulation depends on: the
disposition (the model's judgment about when and how to delegate,
sequence, and verify) versus Fleet (#3154/#3167/#3205 — the substrate
that preconfigures worker roles, loadouts, and slots the orchestrator
reaches for). Maps each orchestration behavior to its Fleet mechanism and
shows how a FleetProfile lets a user pre-set the Codex-coder / Claude-
resolver / design-panel / verifier loadouts an agent would otherwise
improvise every turn.

Forward-looking and honest about scope: the disposition stands on the
current `agent` substrate today and lands durably on Fleet later; the
note proposes no new constitution machinery and does not duplicate the
Fleet schema owned by #3167/#3205.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@claude

claude Bot commented Jun 23, 2026

Copy link
Copy Markdown

Claude finished @Hmbown's task in 1m 55s —— View job


PR #3470 Review — Orchestration Disposition + Fleet Design Note

  • Load tools
  • Read changed files
  • Review constitution diff
  • Review RFC doc
  • Check structural/test integrity
  • Post findings

Summary

Markdown-only change (+31 lines to constitution.md, +137 lines RFC). No Rust touched, no correctness bugs possible. The structural tests checked by constitution_md_carries_required_structure don't enumerate individual Tier-3 regulation headings — only the tier-band markers (## REGULATIONS (Tier 3)) — so adding ## Orchestration requires no test changes and will pass clean. The ## Orchestration text is stylistically consistent with the rest of the constitution. The RFC is a tight design note, not a spec.

The maintainer's gate question is the right one: is this disposition what you want instilled? The analysis below is intended to help that decision, not replace it.


What works well

Constitution text

  • The gear-shift framing mirrors Article VIII (Inquiry) — "you are no longer building — you are investigating" → "you are no longer a builder — you are an orchestrator." That's a deliberate rhetorical anchor and it reads as native to the document.
  • Second-person, aphoristic, no counters, no tool names. Stylistically indistinguishable from the existing articles.
  • The small-task carve-out mirrors ## Keeping the Plan Honest ("None of this applies to a small, obvious task — there, a plan is ceremony; just do it."). Consistent self-reference.
  • Cross-references use *italics* inline links, the established convention. Both *Thinking Delegation* and *Keeping the Plan Honest* resolve correctly in the file; "Article II" resolves to ### II. Verification.
  • Placement is correct: immediately after ## Composition Pattern for Multi-Step Work (which ends on sub-problem discovery) and immediately before ## Keeping the Plan Honest (which it cross-references). The reading order is natural.

RFC

  • Cleanly separates judgment (constitution) from mechanism (Fleet) — the Article IV principle ("A principle may name the duty; mechanism carries it") applied to its own design.
  • Substrate-agnostic: Fleet is described as where the disposition lands durably, not as a dependency of it. The regulation stands on the current agent substrate.
  • The disposition-to-substrate mapping table is specific and checkable once Fleet exists.
  • The "What this note does not claim" section explicitly disclaims duplication of #3167/#3205 schemas — good scope hygiene.

Items worth the maintainer's attention before merging

1. constitution.md line 390 — "Always have work in flight"

Keep the loop alive. Always have work in flight and a living backlog...

Always is unqualified. There are legitimate orchestrator pauses: a checkpoint where the user's approval is needed (scope_discipline), a barrier where all sub-agents must report before the next phase begins, or a natural safe point before a destructive operation. The existing ## Scope Discipline regulation already covers the user-approval gate, but a model following this phrase literally could interpret any pause as a failure mode. Consider softening to "keep work in flight when work can progress" or aligning the phrasing with what the planner wakeup/barrier model actually supports.

2. RFC open question (line 130-132) — delegation depth not surfaced in the constitution

The RFC correctly flags:

How does an orchestrator-role worker (#3167) delegate further without unbounded recursive spawning? Delegation depth is a profile concern, but the disposition should know the ceiling exists.

The current constitution text has no signal that a ceiling exists. A model reasoning from this regulation alone could spawn an orchestrator sub-agent that itself becomes an orchestrator and spawns further, unboundedly. If the PR merges as-is, this gap stays open until Fleet has a concrete depth cap. That's acceptable given the "forward-looking" status, but worth noting the constitution may need a follow-on amendment once the Fleet ceiling is defined.

3. RFC, line 103-104 — slot names that read as model identifiers

a `codex-coder` builder slot on a `balanced`/`strong` loadout,
a `claude-resolver` slot for conflict and merge work

codex-coder and claude-resolver read as model names (the latter especially with the claude- prefix). In the Fleet profile context these are persona/slot names, not wire IDs, so this isn't a provider-inference issue (EPIC #2608) — but a one-line parenthetical ("these are example slot persona names, not wire model identifiers") would pre-empt reader confusion when the Fleet profile schema is implemented and names are validated.

4. Cross-reference style asymmetry (minor, no action needed)

## Thinking Delegation in the constitution names concrete tools (plan, review sub-agents, RLM). The ## Orchestration regulation that cross-references it is deliberately abstract. This asymmetry is intentional and consistent with the substrate-agnostic goal — flagging only so the maintainer is aware it's a choice, not an oversight.


Test coverage

The PR claims all 82 prompts tests pass. The critical structural tests (constitution_md_carries_required_structure, base_prompt_carries_constitutional_preamble, constitutional_hierarchy_keeps_case_command_above_local_law, constitution_has_no_separate_personality_tier) are not broken by this addition because they test tier-band markers and article ordering, not individual Tier-3 regulation headings. No new test is needed for the added prose.


Verdict

Clean addition that integrates naturally with the existing text. Items 1 (the Always qualifier) and 2 (delegation depth ceiling) are the only substantive concerns — both are manageable in a follow-on amendment or a small wording tweak before merge. Item 3 is cosmetic. The disposition-vs-substrate distinction in the RFC is well-reasoned and consistent with Article IV.

The philosophical question — whether CodeWhale's constitution should name this disposition explicitly — is the maintainer's call. The implementation of that call, if taken, is sound.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant