beo-validate
beo-validate
Purpose
Decide execution readiness and select the approved execution set.
Primary owned decision
Emit exactly one readiness verdict: PASS_EXECUTE, FAIL_EXPLORE, FAIL_PLAN, or BLOCK_USER, from existing artifacts without editing their content.
Ownership predicate
- Requirements, plan, approval, bead readiness, remediation class, or execution mode needs classification.
- Artifacts need readiness verification, not content edits.
- One or more approved ready beads, or an approved dependency chain whose first bead is ready, need execution-set classification.
- Multiple ready or dependency-chain candidate beads require file-scope, generated-output, and dependency-order classification before execution.
- No artifact content edit or implementation is required.
Readiness classification order
Classify in this order: requirements, plan/bead graph, user blockers, approval, then execution-set eligibility.
Do not emit PASS_EXECUTE without an explicit selected execution set inside
the current approval envelope. ordered_batch may include approved child beads
blocked only by earlier beads in the same selected dependency chain;
local_parallel may include only independently ready beads.
For the full procedure, read references/readiness-classification.md,
references/readiness-review-prompt.md, beo-reference → approval.md, and
beo-reference → complexity.md.
Execution Set Card
When emitting PASS_EXECUTE, present the following display card. It is operator-facing only and does not substitute for readiness-record.json.
Execution Set Card:
display_execution_set_id:
display_mode: single | ordered_batch | local_parallel # display alias for execution_mode (STATE) / execution_set_mode (readiness-record); do not copy this field name into artifacts or state
display_selected_beads: [<bead_ids in execution sequence>] # display alias for execution_set_beads; do not copy this field name into artifacts or state
display_bead_scope: [<declared changed files per bead>]
display_approval_ref: <path to approval-record.json>
display_blocked_or_queued: [<bead_ids not included in this set>]
display_partial_progress_allowed: true | false
Authority note: display-only; canonical authority remains in the referenced state/artifact surface.
Writable surfaces
- Readiness,
approval_ref,execution_mode,execution_set_id,execution_set_beads, andpartial_progress_allowedwhen applicable in shared state surfaces. - Current
approval-record.jsongrant, refresh, or invalidation fields as defined bybeo-reference → approval.md. - Bead readiness/status fields only as allowed by canonical bead/status mapping.
- Shared state/handoff fields allowed by
beo-reference → skill-contract-common.md. .beads/artifacts/<feature_slug>/readiness-record.json— durable rationale for readiness verdict, mode, execution set, evidence summary, and approval action; required for every verdict.
Canonical:
beo-reference → artifacts.mdLocally enforced as:
- Check
Forbidden paths, approved file scope, approved generated outputs, and dependency constraints in the canonical bead schema.- Do not redefine bead fields locally.
- Return content repair to the owning artifact writer.
Canonical:
beo-reference → pipeline.mdandbeo-reference → approval.mdLocally enforced as:
- Route content repair to artifact owners.
- Write or refresh approval records only as permitted by canonical approval doctrine.
- Emit
BLOCK_USERwhen required external authorization, access, secret, or clarification is missing.- Status, onboarding, and Go Mode displays cannot substitute for readiness or mode classification.
Hard stops
- Apply the canonical go-mode handoff gate from
beo-reference → go-mode.md; if persistence evidence is absent or false, clear go-mode before normal gates. - Do not edit
CONTEXT.md,PLAN.md, or implementation files. - Do not emit
PASS_EXECUTEwithout a selectedexecution_set. - Do not classify
local_parallelwhen write scopes, generated outputs, dependency edges, or approval refs conflict. - Do not bypass current approval checks.
- When a validation-time blocker requires root-cause diagnosis, route to
beo-routefirst; do not hand directly tobeo-debugfrom validate. - This is validate-specific routing policy: validate must resolve owner-state and gate context through
beo-routebefore any debug handoff, even where other owners may hand directly tobeo-debugunder their own contracts. - Do not emit
PASS_EXECUTEunlessapproval_refpoints to the exact current approval record used for the selected execution set, including whenapproval_action=unchanged. - If
bris unavailable and no cached bead graph artifact provides equivalent readiness evidence, emitBLOCK_USERwithuser_reason=external_access_requiredand record the missing tooling as the blocker. Do not attempt readiness classification fromPLAN.mdbead graph prose alone; prose is a mirror, not the canonical bead graph. - When emitting
PASS_EXECUTEforordered_batchorlocal_parallel, writepartial_progress_allowedexplicitly to bothSTATE.jsonandreadiness-record.json. Default isfalse. The conditions under whichpartial_progress_allowed=truemay be set are defined inbeo-reference → state.mdandbeo-reference → artifacts.md; do not settruewithout meeting those conditions. Missing, null, omitted, or stale values are treated by execute asfalse. - When validation is entered to repair readiness/state consistency, do not preserve a mismatched
partial_progress_allowed. - For
ordered_batchorlocal_parallel, write the same explicit boolean value to bothSTATE.jsonandreadiness-record.json. - For
single, omit partial-progress behavior unless canonical state schema requires an explicit default; execution still treats missing or stale values asfalse.
Atomic PASS_EXECUTE write checklist
Before handing to beo-execute, write and re-read all of the following. If any required field is absent, do not hand off to execute.
readiness-record.jsonverdict=PASS_EXECUTEapproval_refexecution_set_idexecution_set_modeexecution_set_beadsSTATE.jsonreadiness mirrorSTATE.jsonapproval_ref mirrorSTATE.jsonexecution_mode / execution_set_id / execution_set_beads mirrorspartial_progress_allowedin bothSTATE.jsonandreadiness-record.jsonwhen mode isordered_batchorlocal_parallel
When writing readiness-record.json, group evidence under classification_inputs, approval_action, execution_set_selection, and state_mirror_write_check as defined in beo-reference → artifacts.md. This grouping is a durable evidence layout only; it does not create a second readiness authority.
Allowed next owners
beo-executebeo-planbeo-exploreuserbeo-route— only for exceptional owner-state resolution under canonical route doctrine.
References
beo-reference → approval.md— read when checking approval freshness, invalidation, or execution envelope rules.beo-reference → artifacts.md— read when checking artifact/bead schemas, execution-set fields, bead scope, generated outputs, and dependency constraints.beo-reference → complexity.md— read when validating required planning-depth sections. Planning depth class is selected bybeo-plan;beo-validateconfirms that required sections for the declared depth are present but does not reclassify depth.beo-reference → status-mapping.md— read when mapping readiness to bead labels/statuses.references/readiness-classification.md— read when classifying readiness verdicts and execution-set modes.references/readiness-review-prompt.md— read when running a non-normative readiness review.references/bead-readiness-prompt.md— read when checking bead-level readiness prompts.