From 5ce10db5c256333d3df9bb26453d9a4f1799a72d Mon Sep 17 00:00:00 2001 From: kmajdoub Date: Sun, 28 Jun 2026 00:48:27 +0200 Subject: [PATCH] docs(maestro): orchestration policy as an explicit skill tree (#465 S1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit S1 of the maestro-as-skill-tree epic: write the maestro's current tick policy down as a declarative tree, every node tagged [HARD] (mechanism/safety gate, never interpretable) or [SOFT] (policy, future interpretable + evolvable). Zero behavior change — the tick still executes Python; this is the spec the S2 interpreter seam reads and S3 evolves, and it pins the invariant that no [HARD] gate is ever read from a skill. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/design/82-maestro-policy-skill.md | 90 ++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 docs/design/82-maestro-policy-skill.md diff --git a/docs/design/82-maestro-policy-skill.md b/docs/design/82-maestro-policy-skill.md new file mode 100644 index 0000000..0e51e1f --- /dev/null +++ b/docs/design/82-maestro-policy-skill.md @@ -0,0 +1,90 @@ +# The maestro as a skill tree — orchestration policy, explicit (#465 S1) + +This is the maestro's orchestration written down as a **skill tree**: each tick +is a walk over the nodes below. Today the *tick executes this in Python* +(`runner/tick.py` + `runner/repairs.py`); this document is the explicit, +declarative form — the literal "one skill that explains to the maestro what to +do." It is the spec the interpreter seam (S2) will read, and the artifact the +self-improvement loop (S3) will evolve. + +## The hard boundary (read first) + +Every node is tagged: + +- **[HARD]** — mechanism or a safety gate. Deterministic Python. **NEVER** + interpreted from a skill, NEVER overridable by an evolved policy. The loop is + money- and merge-safe *because* these are code. A test must prove a tampered + policy cannot bypass any [HARD] node. +- **[SOFT]** — judgment/policy. Currently hardcoded, but legitimately + expressible as an interpreted + evolvable skill (S2/S3). Degrading a [SOFT] + node falls back to its documented default; it can never escalate privilege or + skip a [HARD] gate. + +## The tick, as a tree + +``` +tick +├─ 1. sense +│ ├─ [HARD] load Settings + Config (settings.py); resolve events log +│ ├─ [HARD] fetch open issues, open PRs, repo state (githubkit) +│ └─ [SOFT] axis filter: an issue is eligible iff it carries a matching +│ axis: (derived from .forge/axes.yaml names) AND loop:ready +│ +├─ 2. triage / shape work [SOFT] +│ ├─ [SOFT] PO expansion: a thin/underspecified ready ticket is rewritten to +│ │ the 5 falsifiable sections before dispatch (skip if already shaped) +│ └─ [SOFT] selection: which ready issue(s) to dispatch this tick, honoring +│ parallel cap; promotion of triage→ready in dep order when ready