Skip to main content

What We Learned

Bootstrapping a complete council content set (6 roles, 3 domain rules, 2 shared safety rules, 6 tasks, 1 chain, 2 fragments) requires only two inputs: the Zod schema source of truth and the council agent registry from the TAD. Everything else — YAML structure, field ordering, validation constraints, URI format — is derivable from the existing @stratt/schema package. The key acceleration factor: test fixtures in packages/graph/tests/fixtures.ts serve as canonical examples of every unit type. They’re more reliable than documentation because they’re CI-enforced. Using makeRole(), makeTask(), makeChain() as templates eliminated guesswork about required vs optional fields, string patterns, and nesting structure.

Why This Matters

Content authoring is the adoption bottleneck for STRATT. If creating a council’s initial content set requires reading a 60-page spec, no one will do it. This session proved that with the right schema tooling + skill files, the full content set can be generated correctly on the first attempt — 20/20 units passed validation, the chain passed all 9 CI checks including FM-04 (protected agent), FM-05 (gate integrity), and blast radius analysis.

Pattern for Future Councils

  1. Define agents in a council YAML with protectedAgents and gateAuthorityAgents keys
  2. Generate role units from agent definitions (designation → meta.martian_name)
  3. Define domain rules that roles import (code review → reviewer, ADR template → documenter)
  4. Define shared safety rules at global scope with protected: true
  5. Build task units for each chain step with explicit contracts (inputs/outputs/failure_modes)
  6. Wire the chain — every step needs a task URI, protected agents must appear, gates at review points
  7. Run stratt validate + stratt ci to confirm zero-defect authoring