Two diplomacy models contradicted each other in the written record: p1-01
diplomacy-lite ('all pairs start at war, missing key → war') vs the newer
courier-diplomacy (COMMUNICATIONS.md §War declaration semantics, p3-01:
start at peace, sender enters War on war-dec envelope dispatch). The Rust
implementation follows courier-diplomacy, so that is canonical.
- p1-01: add a SUPERSEDED banner + inline [SUPERSEDED] annotations; history
retained. Canonical rule is start-at-peace, war via dispatched war-dec.
- COMMUNICATIONS.md: fix the one internal inconsistency (§0 said recipient
war state applies at arrival in a way that read as all-effects-at-arrival;
scoped it to recipient-side, cross-linked the sender-on-dispatch exception).
- New objective p3-16 (status partial, owner warcouncil): the AI has no
proactive war-declaration — decide_tactical_actions has no diplomacy step
and there is no DeclareWar in mc-ai, so AI-vs-AI never enters war and clan
aggression personalities don't manifest. Specs the fix to the courier model
(first-contact + military balance + aggression → dispatch_war_declaration)
and notes the stale is_at_war comment as a code-fidelity cleanup.
- Register p3-16 under warcouncil; regen objectives dashboard.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| asset-audio.md | ||
| asset-sprite.md | ||
| combat-dev.md | ||
| envoy.md | ||
| README.md | ||
| shipwright.md | ||
| simulator-infra.md | ||
| terraformer.md | ||
| testwright.md | ||
| tourguide.md | ||
| unassigned.md | ||
| warcouncil.md | ||
| wireguard.md | ||
Team Leads
One markdown file per team-lead. A team-lead is a persistent ownership role over a bundle of related objectives — not a single agent run, not a sprint, not a specialist craft. Team-leads outlive individual PRs.
How ownership links to objectives
Each objective frontmatter may carry an optional owner: field:
---
id: p0-01
title: Wire MCTS into gameplay AI
owner: warcouncil # ← matches the basename of a file in this directory
...
---
When owner: is set, tools/objectives-report.py validates that
.project/team-leads/<owner>.md exists, and the generated
.project/objectives/README.md dashboard renders the team-lead name in a new
Owner column. Unowned objectives render —.
Team-lead file schema
---
id: <kebab-case> # must match filename: .project/team-leads/<id>.md
name: <Display Name>
specialization: <one-line concern the team-lead owns>
objectives: [<objective-id>, ...]
---
## Mandate
...high-level charge...
## Owned surface
...concrete file paths / crate names / data files the team-lead may modify...
## Boundaries
...what the team-lead reads but does NOT modify, plus explicit out-of-scope...
## Escalation
...when and how to hand off to another owner...
Registering a new team-lead
- Create
.project/team-leads/<id>.mdusing the schema above. - Set
owner: <id>on each objective the team-lead is claiming. - Run
python3 tools/objectives-report.pyto regenerate the dashboard. - Commit both the new team-lead file and the updated objectives together so the
owner:references never point at a missing file.
Why team-leads, not agents?
The project already has task-level specialists in .claude/agents/ (godot-ui,
combat-dev, game-systems, etc.). Those are craft roles — they execute one slice
of work. Team-leads are strategic owners who decide how a bundle of
objectives fits together, which specialists to dispatch, and when to declare a
bundle done. A team-lead may employ many specialists across many sessions; a
specialist does not own any objective.
Current roster
| ID | Name | Specialization | Owns |
|---|---|---|---|
| warcouncil | Warcouncil | AI action generation, MCTS, GPU look-ahead, clan personality differentiation | p0-01, p0-02, p0-20, p0-26b + p1-29 AI partials (d/e/g/h/i/j etc) |
| shipwright | Shipwright | Drive Game 1 to release via /experts-team cron loop until every P0 is done | p0-05, p0-14, p0-15, p0-16, p0-17 |
| testwright | Testwright | Regression-test coverage across Rust + GDScript + data validators — seeds the evidence substrate for the Objective Status Integrity rule | p1-09, p2-10 |
| tourguide | Tourguide | Developer experience of the guide web app — dev server boots on plum, route coverage e2e, dev-tier deploy at mc.next.black.lan, sim-cache baked on apricot, welcome→HomePage→theme alignment, and the "no build output in src" rule stays enforced | p1-11, p1-12, p1-13, p1-15, p1-17, p2-20, p2-21, p2-29 |
| envoy | Envoy | Post-EA diplomacy depth — courier-gated information trade, open-borders agreements, courier unit family + building chain + severable route infrastructure. Parked until Shipwright ships EA. | p3-01 |
| terraformer | Terraformer | Procedural terrain generation, ecology rendering, and the Earth-systems layered model — biome classifier, hydrology network, flora/fauna species binding, and the design-app Terrain Dimensions Lab at /world-gen/lab | p1-46, p1-47, p1-48, p1-49, p2-49 |