Skip to content

feat(dispatcher): /dispatcher skill — wire aif-control execution loop (Stage 1) - #403

Merged
artyhoo merged 1 commit into
stagingfrom
feat/dispatcher-skill
Jun 3, 2026
Merged

feat(dispatcher): /dispatcher skill — wire aif-control execution loop (Stage 1)#403
artyhoo merged 1 commit into
stagingfrom
feat/dispatcher-skill

Conversation

@artyhoo

@artyhoo artyhoo commented Jun 3, 2026

Copy link
Copy Markdown
Owner

Stage 1 — /dispatcher skill (dispatcher-skill umbrella)

Writes .claude/skills/dispatcher/SKILL.md (197 LOC) — a CC-skill that wires the 4 existing runtime-bridge CLI primitives into the aif-control execution loop: dispatch → monitor → Q&A → harvest → Phase-1 cold-review → stage-gate → advance. Zero new primitives, zero npm deps (kickoff §5 anti-scope). Capability commit adds SSOT #111 (BUILD) in the same commit with a Prior-art: trailer.

Binding constraints applied (Phase -1 cold-review):

  • DN-B = Option A behavior: technical/clear fork → superpowers:brainstorming autonomously → answer.ts → report (zero keystroke); strategic/genuine fork → questions.ts surface to operator. Discrimination discipline baked into skill prose (ask-question-reminder.sh is operator-internal, not shipped).
  • DN-A = hybrid/dual (NOT cc-only): CC-native primary + portable fallback detecting the missing companion via capability-check, not brand-name (dual-implementation-discipline.md §4); CC-absent → technical forks degrade to surface-to-operator. @dual-pair: dispatcher-skill.
  • MINOR-1: dispatch.ts exit-0 contract described as a property across call-sites. MINOR-2: harvest wrong-branch throw modeled as operator-ATTN (no silent retry).

Verification: principle tests 08/09/15 green (31/31); markdownlint clean; diff = 2 files only.

Mode: SDD pair (implementer + spec-reviewer + code-quality-reviewer) → REVISE → amend → orchestrator cold-QA → GO. Stage 2 (behavioral eval) follows separately.

§1.7 Forward-check applied

This Stage-1 change was checked forward against the disciplines it must comply with before shipping. BFR verdict = BUILD, confirmed via all 5 layers (SSOT consult + DeepWiki ≥3 + WebSearch ≥3) — no upstream covers the cross-boundary loop (docs/meta-factory/dispatcher-skill-rphase.md:223). Dual-channel design per .claude/rules/dual-implementation-discipline.md:3 (capability-check, not brand-name; CC-absent degrades). Zero paid-LLM-in-CI per .claude/rules/no-paid-llm-in-ci.md:1 (session-bound dispatch; harvest ZERO-LLM; questions read-only; answer REST-only). T16 problem-class X-vs-Y written for all 3 upstream candidates (.claude/skills/dispatcher/SKILL.md:189).

§1.7 Backward-check applied

Checked backward for supersession of existing artefacts. /dispatcher is complementary to /pipeline, not a replacement — /pipeline owns plan + priority + launch-table; /dispatcher executes a chosen umbrella's stages (.claude/skills/pipeline/SKILL.md:313). It consumes (does not rebuild) the 4 CLI primitives at packages/runtime-bridge/src/cli/{dispatch,harvest,questions,answer}.ts plus park.ts (SSOT #109). No existing rule, skill, or principle is overridden; SSOT #111 is appended (docs/meta-factory/prior-art-evaluations.md:181), not a rewrite of any prior row.

Follow-ups surfaced (not in this PR — scope discipline)

  • install.sh copy-block for /dispatcher (consumer-payload wiring) — precedent at install.sh:240; deferred to Stage 2.
  • allowed-tools omits Write; §2.4's optional --body-file prep would need it (minimal-pointer-body fallback works without it).

… (Stage 1)

Adds .claude/skills/dispatcher/SKILL.md (~195 LOC) wiring 4 existing CLI
primitives (dispatch.ts / harvest.ts / questions.ts / answer.ts) into a
dispatch→monitor→Q&A→harvest→Phase-1→stage-gate→advance loop. DN-A = dual
(CC-native primary + portable fallback via capability-check, not brand-name;
@dual-pair: dispatcher-skill). DN-B = Option A behavior: technical forks
resolved autonomously via superpowers:brainstorming on CC; strategic forks
surfaced to operator via questions.ts. Discrimination discipline baked into
prose (ask-question-reminder.sh is operator-internal, not shipped).

Prior-art: prior-art-evaluations.md#111 (BUILD — no upstream covers cross-boundary dispatch→monitor→Q&A→harvest→stage-gate loop; SSOT consult + DeepWiki ≥3 + WebSearch ≥3 in rphase §c; T16 verified vs #64/#67/#88).

§1.7: forward-check applied — BFR=BUILD via all 5 layers (SSOT consult + DeepWiki≥3 + WebSearch≥3, dispatcher-skill-rphase.md:223), dual not cc-only per dual-implementation-discipline.md:3, zero-paid-LLM per no-paid-llm-in-ci.md:1, T16 problem-class X-vs-Y at SKILL.md:189; backward-check sweep — complementary to pipeline/SKILL.md:313 (no supersession), consumes runtime-bridge primitives + park.ts #109, SSOT #111 appended at prior-art-evaluations.md:181.
@artyhoo
artyhoo merged commit 48eda88 into staging Jun 3, 2026
25 checks passed
@artyhoo
artyhoo deleted the feat/dispatcher-skill branch June 3, 2026 17:27
artyhoo added a commit that referenced this pull request Jun 16, 2026
… umbrella closures (28 false-opens cleared) (#561)

* fix(pipeline): C3 counts done.md existence as DONE even with 'Final PR: n/a'

priority-score.sh completion-detector C3 only tagged DONE when it parsed a numeric
'- Final PR: #<num>'. Stale/superseded closures from the 2026-06-05 sweep carry
'- Final PR: n/a', so ~10 already-closed umbrellas stayed false-open. done.md existence
alone proves closure (ADAPT Cline #77); tag done_pr=n/a so the filter drops them.
Regression test: done-md-completion-filter Case 3b (n/a done.md -> status=DONE).

* chore(orchestrator): close 18 verified historical umbrellas — done.md backfill (closure-sweep 2026-06-16)

Each done.md cites its verified closing PR (branch/title-confirmed, false matches dropped):
guard-liveness cluster (#458/#460/#463/#475/#476/#489), dispatcher-skill #403, dispatcher-ux #407,
goal-drift-audit #433, narrow-b-benchmark #210, defer-reflex-detection #232, memory-coverage-audit #126,
meta-orchestrator-bundle-autonomous #247, mutation-discipline-stage-c-meta-launch #378,
aif-handoff-as-runtime-bridge #283, aif-skills-delivery-rphase #396, channel-earliness-audit #181,
ai-doc-audit-version-reconcile #423. Clears 18 false-opens; +10 via the C3 fix = 28 total. 51 residue left open (no evidence).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant