Dispatch Spec Skill
SkillMonitoring & opsValidate a dispatch document that describes a sequence, fan-out, tournament, dialectic, validation loop, or synthesis graph over Arcanum sigils and spells.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Dispatch Spec Skill skill
About this capability
Use when: validating or designing an Arcanum dispatch route that chains sigils, spells, owner capabilities, handoffs, gates, observability, techniques, and optional boundary/evidence contracts.
What this skill tells your AI
The instructions your AI receives, as published by cyberalchemyai/arcanum in formulae/dispatch-spec/SKILL.md and read by ahel’s review.
Identity
- Canonical ID:
dispatch-spec - Tier: Formulae
- Status: draft
- Scope: repository-local validation package
Purpose
Validate a dispatch document that describes a sequence, fan-out, tournament, dialectic, validation loop, or synthesis graph over Arcanum sigils and spells.
This skill does not decide which sigils should be used. It checks whether a proposed composition is explicit enough for Spellcraft, Necronomicon, Invoke, Task Session, Experiment Harness, and observability tooling to consume safely.
Use When
- A user wants to chain sigils by name into a repeatable route.
- Necronomicon proposes an execution route and needs a schema-valid handoff.
- Spellcraft is designing a spell and needs a phase/step contract before lifecycle work.
- Robot-Talks, Distill tournament, or another multi-agent pattern needs sibling steps tied by one
dispatch_id. - A run should record how outputs from one sigil become inputs to another.
- A route needs to cite reusable techniques from TECHNIQUE-CATALOG.md, including Arcanum composition techniques or POLE-inspired standards-catalog techniques.
- Refine needs a route artifact for its canonical ten-stage loop without making the Refine process itself the orchestrator.
- Refine or another orchestrating capability needs a visible subagent strategy before asking permission to run delegated or parallel stage work.
- An orchestrator needs to bind each delegated role to one lifecycle or execution capability, order roles into waves, and prevent downstream mutation before upstream receipts pass.
- A route needs optional
boundary_evidencefor cross-capability handoffs, authority owners, receipts, state namespaces, or promotion splits.
Do Not Use When
- The task needs interpretation but no reusable dispatch artifact.
- The user asks for immediate execution of a single, obvious sigil.
- A blocker decision exists about the route itself; use
decision-gatefirst. - The workflow would copy sigil internals instead of referencing sigils by id.
Required Input
A JSON document conforming to dispatch.schema.yml.
Deterministic Validator
Use the repository-local validator when available:
formulae/dispatch-spec/scripts/validate-dispatch.py <dispatch.json>
For package fixtures:
formulae/dispatch-spec/development/run-validation-fixtures.sh
Validation Rules
- The document must include
dispatch_id,intent,mode,steps, andgates. - Each step must reference a known or candidate
capability_ref. - Each step must declare a
pattern:route,sequential,fanout,dialectic,tournament,distill,xray,decision,validation,toy_game,synthesis, orhandoff. - Non-first steps must name at least one input source: prior
frame,handle,decision,ledger,receipt,artifact,human_answer, orexternal_context. - Any step with
parallel: truemust declarejoin_policy. - Tournament and dialectic steps must declare proposal roles and convergence criteria.
- Validation and toy-game steps must declare an expected evidence artifact.
- The dispatch must name stop conditions and at least one observability event.
- The dispatch must not claim promotion authority for inventory, ontology, glossary, sigil, or spell artifacts.
- Any cited technique must either appear in
TECHNIQUE-CATALOG.mdor include a local-extension source and validation note. - A dispatch that cites techniques without connecting them to steps, gates, evidence, or validation should return
flag. - Technique overlays must name a trigger, technique ids, affected steps, and validation expectation.
- Dialectic and tournament techniques require roles and convergence criteria even when they are used as step techniques rather than step patterns.
- X-ray techniques require a handle or artifact output; toy-game techniques require an evidence artifact.
- Boundary/evidence techniques should be backed by
boundary_evidence; otherwise the route should returnflag. boundary_evidence.boundaries[].applies_to_stepsmust reference existing step ids.state_namespace_boundaryshould includeboundary_evidence.state_namespaces.memory_promotion_splitshould includeboundary_evidence.promotion_splits.execution_receipt_handoffshould includeboundary_evidence.receipts.- Execution evidence must not directly promote Inventory, Ontology, glossary, sigil, or spell knowledge.
subagent_strategy.status=recommended|requiredmust name roles, join policy, authorization, and the reason subagents fit the problem shape.- Recommended or required subagent execution should default to
authorization=requires_user_permissionuntil the operator approves the run. - Recommended or required subagent execution must include lifecycle receipt fields:
agent_id,role_id,spawn_status,join_status,close_status,residue, andreroute. - A
subagent_lifecycle.status=passledger must prove every spawned agent reached a terminal join state and terminal close state. - Blocked spawn, timed-out join, blocked join, or thread-cap failure only passes as named residue with a reroute or handoff.
binding_mode=capability-boundrequires anexecution_owner, capability-bound roles, and orderedexecution_waves.- Every capability-bound role must name its
capability_ref,capability_target,capability_mode,agent_count, mutation policy, applied steps, and output receipts. - A role's capability must match the capability of every step it owns; its input and output refs must be present on those steps.
lifecycle-ownedandartifact-onlyroles require explicit write scopes; read-only roles cannot declare a write scope.- Write scopes must be normalized repository-relative paths. Concurrent roles cannot have overlapping write scopes, and a role's write scope cannot overlap its forbidden scopes.
- Role dependencies must be in earlier execution waves, be mirrored by
depends_on_waves, and consume at least one receipt from each dependency. - Legacy capability-bound dispatches keep their historical non-final-wave
gate behavior. Every new or successor dispatch must declare
execution_contract_version: arcanum.capability-bound-execution.v0.2. Under v0.2 every wave, including the final wave, requires a namedgate_after; the gate must bind that exact wave and cover exactly the wave's required role receipts. Runtime admission independently requires every normalized receipt artifact set to equal its actionoutput_refsand the admitted union to equal the gate'srequires_role_receipts. - A capability-bound lifecycle closeout requires prior authorization and must identify each agent's capability, target, mode, wave, and effective write scope.
- A passing capability-bound closeout must contain exactly the declared number of agent records for every role.
- Every agent in a passing capability-bound closeout must have spawned, completed its join, closed, and returned its declared receipt; every applied step must also have a passing native-stage receipt containing the role output.
- A legacy approved dispatch entering native Orchestrate execution may include unchanged
subagent_strategy.registrationv0.2 bound to the canonical public ledger, exact v0.6.1 sheet digest, executable projection digest, and governed temporary paths. - A new preconfirmation dispatch uses
subagent_strategy.registration_intent, remains atauthorization: requires_user_permission, and carries no post-confirmation evidence. After confirmation and registration, Orchestrate accepts a separate run-local execution entry with registration v0.3; it must bind the exact immutable dispatch, runtime profile, confirmation, source lifecycle, admission receipt, consumed envelope, raw ledger row, executable projection, topology, and temporary close path before emitting actions. - Every confirmation-ready or executable capability-bound role must bind one versioned typed briefing to an immutable dispatch-relative JSON artifact and selector. The validator recomputes the artifact, selected-payload, and canonical briefing digests and requires exact payload equality.
- The briefing must preserve identity, angle, instructions, distinct task and domain-gate status semantics, explicit read policy, exact write policy, receipt shape, and authority ceiling. Forbidden-write scopes never imply forbidden reads.
- Every v0.2 gate declares exactly one typed evaluation.
receipt_statusrequires every normalized receipt to pass.domain_statusreads one named field from one singleton source role, with disjointpass_valuesandresolved_values; resolved values are legal only on the final wave. - A v0.2 terminal domain resolution is not a generic pass. The runtime emits
gate_resolved, unlocks no work, and preserves the typed domain outcome in terminal state and evidence. Unknown, absent, overlapping, or mismatched values block.
Subagent Strategy
Use subagent_strategy when the route shape implies role-bound sibling agents,
parallel critique, tournament comparison, x-ray exploration, memory recovery, or
delegated verification.
Dispatch Spec may recommend or require the strategy, but it does not execute subagents. The orchestrating capability, usually Refine, must show the strategy with context and ask permission before runtime execution.
Minimum fields:
status:none,recommended,required, orblocked.trigger: the problem-shape signal that caused the strategy.explanation: why these roles are useful for this target.context: target-specific evidence or uncertainty that informed the choice.roles: role id, purpose, ownership, and affected steps.parallelism:none,fanout,dialectic,tournament, ormixed.join_policy: how returned receipts are joined.authorization:not_needed,requires_user_permission,approved, orblocked.permission_prompt: the prompt the orchestrator should show before execution.receipt_requirements: evidence each subagent must return.
Capability-Bound Delegation
Use binding_mode: capability-bound when the dispatch must be executable by a
parent orchestrator rather than merely describe useful roles. Each role names
one governing capability and target. execution_waves then define which roles
may run together, where the parent must join them, and which gate unlocks the
next wave.
For new and successor routes, set
subagent_strategy.execution_contract_version to
arcanum.capability-bound-execution.v0.2. Omitting it selects validate-only
legacy behavior for historical artifacts; omission is not allowed for a newly
authored route.
The parent orchestrator owns spawning, joining, gating, and synthesis. Dispatch Spec validates that contract but does not spawn agents itself. A typical route is:
wave 1 (parallel)
sigil-development -> x-ray receipt
spellcraft -> whisper receipt
join all -> lifecycle gate
wave 2
task-session -> artifact-only repair consuming both receipts
See capability-bound-artifact-repair.json for a complete executable-shape instance.
Subagent Lifecycle
Use subagent_lifecycle only after a runtime or parent route has attempted
delegated execution. It is the closeout ledger for AFK-safe dispatches: the
parent cannot report success while a spawned sibling agent remains open,
unjoined, hidden, or only implicitly abandoned.
Minimum fields:
status:none,pass,flag, orblock.agents: one entry per attempted delegated agent.agent_id: stable runtime or parent-assigned identifier.role_id: matching role fromsubagent_strategy.roles.spawn_status:spawnedorblocked.join_status:completed,timed_out,blocked,handed_off,closed_without_result,pending, ornot_needed.close_status:closed,already_closed,handed_off,blocked,pending, ornot_needed.receipt_artifact: required whenjoin_status=completed.residue: required for blocked spawn, timed-out join, blocked join, or other non-happy-path closeout.reroute: required when work is handed off, blocked, timed out, or capped by runtime/thread limits.
status=pass is only valid when every spawned agent has a terminal join and
terminal close state. Hidden open subagents, pending joins, and pending close
states return block.
Output Contract
## Dispatch Spec Result
- Dispatch ID: <dispatch_id>
- Status: pass | flag | block
- Mode: <mode>
- Step count: <n>
- Patterns: <patterns found>
- Gates: <pass | flag | block with reasons>
- Handoffs: <frame/handle/decision/ledger summary>
- Subagent strategy: <none | recommended | required | blocked, roles, join policy, authorization>
- Capability bindings: <descriptive | capability-bound, execution owner, waves, dependencies, write scopes>
- Subagent lifecycle: <n/a | pass | flag | block, open agents, residue, reroute>
- Observability: <dispatch_id coverage and trace events>
- Promotion guardrail: pass | flag | block
- Required repairs: <none or list>
- Next route: necronomicon | spellcraft | invoke | task-session | experiment-harness | decision-gate | deferred
Failure Policy
- Return
blockwhen required fields are missing, step dependencies are impossible, promotion authority is falsely claimed, or delegated subagents remain unjoined/unclosed. - Return
flagwhen the document is usable but has weak evidence names, candidate capabilities, or incomplete observability metadata. - Return
passonly when the route is explicit, gated, observable, and handoff-ready.
Signals
- GitHub stars
- 25
- Forks
- 3
- Last commit
- Sep 2026
Others that do the same job
Advanced
- Catalog kind
- skill
- Gateway key
dispatch-spec- Source
- github.com/cyberalchemyai/arcanum