docs(prompts): teach all roles the structured verb shapes (pre-gateway parity)

Counterpart to bcc748c. The verb signatures now expose structured
fields (approach/options/rationale/what_done/etc), but the role
prompts still showed old flat-string examples — the LLM pattern-
matches prompts before schemas, so it would have kept writing one-
line decisions even after deploy.

Each role's Journaling Cadence table now shows the full call shape
for every scope, with decision and reflect explicitly named as
structured (context/options/chosen/rationale/consequences and
what_done/what_learned/what_struggled/next_steps respectively).

PM prompts also gained:
- `i_will_plan` widened to show approach / technical_considerations /
  risks / open_questions, with an explicit "empty values produce an
  empty Plan tab — a regression" line
- `delegate` shows `nature` (technical/non_technical) and notes the
  sibling-dedup guard
- Cell PM gets the dev-only task_type rule (code/documentation/research)
- Main PM gets the planning-only rule for Cell PM delegations
- `say`/`dm` lists every valid channel slug verbatim so the LLM stops
  inventing ("backend-dev", "backend")

Prompts are read at agent spawn, so this takes effect on the next
container restart — no Python rebuild required. Combined with bcc748c
this is the full pre-gateway-parity restoration.
This commit is contained in:
Renn F
2026-05-11 04:30:36 +02:00
parent bcc748c8a3
commit 92badfe6a0
6 changed files with 51 additions and 49 deletions
+7 -7
View File
@@ -52,15 +52,15 @@ If you find yourself reaching for `Bash git`, `Edit`, or any execution tool, sto
## Journaling cadence
The Board's journal IS the work product. Most of what you do never produces a verb call — it produces a recorded observation that the CEO and Main PM consume:
The Board's journal IS the work product. Most of what you do never produces a verb call — it produces a recorded observation that the CEO and Main PM consume. **Decision and reflect scopes take structured fields — fill them; a flat phrase is a regression.**
| Scope | When | Example |
| Scope | When | How to call |
|---|---|---|
| `note` | Quick observations during triage | "Backend cell shipped 3 features in the last week; frontend shipped 0 — worth understanding why" |
| `decision` | Before EVERY `escalate_to_ceo` (gateway-required). PO/HoM only — Auditor doesn't escalate. | (PO) "Recommending CEO descope feature X; QA flagged repeated regressions and the dev journal shows scope creep" |
| `struggle` | When you can't tell whether to escalate | (HoM) "Announcement timing for feature Y is contested between Product and Engineering. Going to dm Product before deciding." |
| `learning` | When a strategic pattern emerges | (Auditor) "Cells consistently miss the doc step when QA is rushed — propose a 2-day post-QA buffer in next quarter" |
| `reflect` | The Board's primary output. After every triage. After every observation. The Auditor's ONLY output. | (Auditor) "Reviewed 8 PRs this week. 6/8 had explicit acceptance-criteria walks in the dev reflect note. 2/8 didn't — flagging be-dev-2 for journaling guidance from cell PM." |
| `note` | Quick observations during triage | `note(scope='note', text='Backend cell shipped 3 features in the last week; frontend shipped 0 — worth understanding why')` |
| `decision` | Before EVERY `escalate_to_ceo` (gateway-required). PO/HoM only — Auditor doesn't escalate. | `note(scope='decision', text='<one-line recommendation>', context='<strategic situation + journal evidence>', options=['Descope feature X', 'Continue as planned', 'Split into smaller cuts'], chosen='<which one>', rationale='<why, citing journal entries>', consequences='<what the CEO is being asked to authorize>')` |
| `struggle` | When you can't tell whether to escalate | `note(scope='struggle', text="Announcement timing for feature Y is contested between Product and Engineering. Going to dm Product before deciding.")` |
| `learning` | When a strategic pattern emerges | `note(scope='learning', text='Cells consistently miss the doc step when QA is rushed — propose a 2-day post-QA buffer in next quarter')` |
| `reflect` | The Board's primary output. After every triage. The Auditor's ONLY output. | `note(scope='reflect', text='<short summary>', what_done='Reviewed 8 PRs this week. 6/8 had explicit acceptance-criteria walks in the dev reflect note. 2/8 didn"t', what_learned='<patterns spotted across cells>', what_struggled='<where audit signal was weak>', next_steps='Flagging be-dev-2 for journaling guidance from cell PM — Main PM should review')` |
## Mandatory checklist before `escalate_to_ceo` (PO / HoM only)