PROMISSORY — Non-Green Promise Assault
The canonical, always-current procedure is
docs/fable/2026-07-01-promissory-nongreen-assault-runbook.md (repo root).
Read it first, in full, every invocation — this skill is the launcher,
not the law. If the skill and the runbook disagree, the runbook wins.
Argument parsing
- No args → supervisor mode: rank the pool, then either dispatch a
fleet wave (if fleet capacity is ready) or personally assault the top
target.
- A promiseId (e.g.
khala_code.forum_hotbar.v1) → single-target
mode on that promise. This is explicit owner direction: it overrides
the runbook's "already mapped by other work" exclusion (note the
override in the claim issue).
- A number N (e.g.
10) → supervisor mode, dispatch a wave of N
fleet workers at the top N unclaimed targets.
- Anything else (e.g. a campaign hint like
throughline: mobile) →
treat as a temporary throughline override for scoring this run only.
Scoreboard (mandatory, start AND end)
Print the registry scoreboard before any work starts and again after
the run finishes, so the user sees states flip. Compute it from the
canonical source (one-off script from the openagents repo root):
bun -e "
const { publicProductPromisesDocument } = await import('./apps/openagents.com/workers/api/src/product-promises.ts');
const d = publicProductPromisesDocument();
const c = {};
for (const p of d.promises) c[p.state] = (c[p.state] ?? 0) + 1;
console.log('registry', d.version, '| total', d.promises.length, '|', JSON.stringify(c));
"
- Opening scoreboard: registry version, total records, and the count
per state (green / yellow / red / planned / degraded / withdrawn), plus
the target(s) selected and their current states.
- Closing scoreboard: the same counts recomputed from the merged
main, presented as a before → after diff — explicitly name every
record whose state or blocker set changed during the run (e.g.
"foo.v1 planned → yellow. bar.v1 cleared 2 of 3 blockers, still
red") and the new owner-decisions-ready count in NEEDS_OWNER.md.
- In fleet/wave mode the supervisor prints the opening scoreboard once at
wave start and the closing one after the last closeout merges. Long
waves should also emit interim scoreboards as each PR lands.
Operating summary (details and exact rules live in the runbook)
- Snapshot + rank. Load the registry via
publicProductPromisesDocument() from
apps/openagents.com/workers/api/src/product-promises.ts (the
scoreboard script above already does this — reuse its output). Apply the
eligibility filter (runbook §2 — including steer clear of promises
already mapped by open issues/epics/roadmap lanes: PROMISSORY hunts
the hidden and overlooked, unless the user directed a specific target)
and the scoring formula (§3, throughline-weighted. Current campaign:
Khala Code launch).
- Claim atomically. One promiseId per claim. GitHub issue titled
PROMISSORY: <promiseId> — search open AND recently-closed first.
lower issue number wins races (§4).
- Assault ladder (§5): audit the record → decompose every blockerRef
into BUILD / EVIDENCE / OWNER / EXTERNAL → implement fully in a fresh
worktree from clean
origin/main with tests and dereferenceable
evidence → update the registry record + one note + version bump in the
same PR per the concurrent-safe edit protocol (§7) → verify
(record's own verification, relevant suites, check:deploy,
promise-test pins) → merge to main, close the issue, write
owner-gated residue to the workspace NEEDS_OWNER.md, release the
claim, take the next target.
- Fleet dispatch (supervisor/wave modes): use the runbook §8 pinned
$PYLON khala request --workflow codex_agent_task template (or the
khala_fleet MCP equivalent), one worker per target, refill freed
slots with the next-ranked unclaimed target on every closeout, keep
the dispatch ledger and exact token-row verification per
docs/fable/EXECUTION.md.
Hard guardrails (never violate, even under time pressure)
- Never flip a promise to green — green is owner-signed,
receipt-first. The success metric is owner-decisions-ready: promises
one owner action from green, batched in
NEEDS_OWNER.md.
- planned→yellow / red→yellow only when the record's own
verification
criteria are met with cited evidence. Honest downgrades encouraged.
- Never weaken a gate/test/policy to clear a blocker. Never edit the
green-count test pin to silence a failure. Never broaden public copy.
- One promise per claim/PR. Registry edits touch only your record + one
note + the version constant.
- Isolated worker homes always. Never touch
~/.codex or the live
~/.claude. Public-safe prompts and evidence only.
1---2name: promissory3description: Assault non-green product promises per the PROMISSORY runbook. Use when the user says /promissory, asks to flip/advance/assault product promises, wants the next non-green promise target selected and worked, or wants a fleet wave dispatched at the promise backlog. Modes - no args = supervisor (rank pool, dispatch or work top targets); a promiseId arg = assault that specific promise (owner-directed override); a number N = dispatch a wave of N fleet workers.4---56# PROMISSORY — Non-Green Promise Assault78The canonical, always-current procedure is9`docs/fable/2026-07-01-promissory-nongreen-assault-runbook.md` (repo root).10**Read it first, in full, every invocation** — this skill is the launcher,11not the law. If the skill and the runbook disagree, the runbook wins.1213## Argument parsing1415- **No args** → supervisor mode: rank the pool, then either dispatch a16 fleet wave (if fleet capacity is ready) or personally assault the top17 target.18- **A promiseId** (e.g. `khala_code.forum_hotbar.v1`) → single-target19 mode on that promise. This is explicit owner direction: it overrides20 the runbook's "already mapped by other work" exclusion (note the21 override in the claim issue).22- **A number N** (e.g. `10`) → supervisor mode, dispatch a wave of N23 fleet workers at the top N unclaimed targets.24- Anything else (e.g. a campaign hint like `throughline: mobile`) →25 treat as a temporary throughline override for scoring this run only.2627## Scoreboard (mandatory, start AND end)2829Print the registry scoreboard **before any work starts** and **again after30the run finishes**, so the user sees states flip. Compute it from the31canonical source (one-off script from the openagents repo root):3233```sh34bun -e "35const { publicProductPromisesDocument } = await import('./apps/openagents.com/workers/api/src/product-promises.ts');36const d = publicProductPromisesDocument();37const c = {};38for (const p of d.promises) c[p.state] = (c[p.state] ?? 0) + 1;39console.log('registry', d.version, '| total', d.promises.length, '|', JSON.stringify(c));40"41```4243- **Opening scoreboard:** registry version, total records, and the count44 per state (green / yellow / red / planned / degraded / withdrawn), plus45 the target(s) selected and their current states.46- **Closing scoreboard:** the same counts recomputed from the merged47 `main`, presented as a before → after diff — explicitly name every48 record whose state or blocker set changed during the run (e.g.49 "`foo.v1` planned → yellow. `bar.v1` cleared 2 of 3 blockers, still50 red") and the new owner-decisions-ready count in `NEEDS_OWNER.md`.51- In fleet/wave mode the supervisor prints the opening scoreboard once at52 wave start and the closing one after the last closeout merges. Long53 waves should also emit interim scoreboards as each PR lands.5455## Operating summary (details and exact rules live in the runbook)56571. **Snapshot + rank.** Load the registry via58 `publicProductPromisesDocument()` from59 `apps/openagents.com/workers/api/src/product-promises.ts` (the60 scoreboard script above already does this — reuse its output). Apply the61 eligibility filter (runbook §2 — including *steer clear of promises62 already mapped by open issues/epics/roadmap lanes*: PROMISSORY hunts63 the hidden and overlooked, unless the user directed a specific target)64 and the scoring formula (§3, throughline-weighted. Current campaign:65 Khala Code launch).662. **Claim atomically.** One promiseId per claim. GitHub issue titled67 `PROMISSORY: <promiseId>` — search open AND recently-closed first.68 lower issue number wins races (§4).693. **Assault ladder** (§5): audit the record → decompose every blockerRef70 into BUILD / EVIDENCE / OWNER / EXTERNAL → implement fully in a fresh71 worktree from clean `origin/main` with tests and dereferenceable72 evidence → update the registry record + one note + version bump in the73 same PR per the concurrent-safe edit protocol (§7) → verify74 (record's own verification, relevant suites, `check:deploy`,75 promise-test pins) → merge to `main`, close the issue, write76 owner-gated residue to the workspace `NEEDS_OWNER.md`, release the77 claim, take the next target.784. **Fleet dispatch** (supervisor/wave modes): use the runbook §8 pinned79 `$PYLON khala request --workflow codex_agent_task` template (or the80 `khala_fleet` MCP equivalent), one worker per target, refill freed81 slots with the next-ranked unclaimed target on every closeout, keep82 the dispatch ledger and exact token-row verification per83 `docs/fable/EXECUTION.md`.8485## Hard guardrails (never violate, even under time pressure)8687- **Never flip a promise to green** — green is owner-signed,88 receipt-first. The success metric is *owner-decisions-ready*: promises89 one owner action from green, batched in `NEEDS_OWNER.md`.90- planned→yellow / red→yellow only when the record's own `verification`91 criteria are met with cited evidence. Honest downgrades encouraged.92- Never weaken a gate/test/policy to clear a blocker. Never edit the93 green-count test pin to silence a failure. Never broaden public copy.94- One promise per claim/PR. Registry edits touch only your record + one95 note + the version constant.96- Isolated worker homes always. Never touch `~/.codex` or the live97 `~/.claude`. Public-safe prompts and evidence only.