Validation gates
Validation in Pulse is not advisory. The four governance gates are enforced server-side, and 10 of Pulse’s 216 MCP tools exist specifically to record the evidence those gates require. Skip the evidence and the transition fails —move_spec and move_card reject the request with a CONFLICT error.
This page documents the four gates and the tools that drive them:
- Gate 1 — Spec evaluation (
validated → in_progress). Qualitative score with narrative; default threshold 80. 4 tools (server.py:10089–10974). - Gate 2 — Spec validation (
approved → validated). Three-axis threshold check (completeness / assertiveness / ambiguity) that locks spec content. 2 tools (server.py:12323–12426). - Gate 3 — Task validation (
validation → done). Independent reviewer evidence; auto-fail on threshold violations. 3 tools (server.py:12165–12322). - Gate 4 — Test theater prevention (
update_test_scenario_status). Test status updates require structured evidence; sprint close re-validates every passed scenario. 1 tool (server.py:6267).
okto-pulse-feature-inventory.md:353–370 (spec evaluation), :371–377 (spec validation), :485–492 (task validation), :333–352 (test scenario status), :982–1021 (governance gates), :877–887 (Validator preset).
For lifecycle context — how each gate slots into the pipeline — see The ADLC pipeline. For permission-flag definitions, see Permissions on the MCP overview.
Why four gates and not one
Pulse splits validation into four because they answer different questions:
Each gate has its own permission flag, its own data shape, and its own retry path. An agent cannot satisfy one gate by impersonating another.
Gate 1 — Spec evaluation
The spec evaluation captures a qualitative judgement of spec quality, with a written narrative the gate threshold is measured against. Default threshold: score ≥ 80. Configurable per board.Submitting an evaluation does not advance the spec — it records the evidence. The transition itself happens via
move_spec and re-checks the latest evaluation against the threshold. An evaluation can be delete-d and re-submitted while the spec is still validated.Gate 2 — Spec validation
Spec validation is the content-lock gate. It runs three threshold checks — completeness, assertiveness, ambiguity — each with written evidence. Once it passes, the spec is locked: edits require an explicitvalidated_to_draft move and a justification.
Gate 3 — Task validation
Task validation is the independent-reviewer gate. The closing agent provides a conclusion, completeness, and drift viaupdate_card. A separate reviewer agent then submits a validation record — auto-fail rules apply even if the reviewer’s recommendation is approve.
Auto-fail rules
The Task Validation Gate runs auto-fail checks independent of the reviewer’s recommendation:
Auto-fails are reported via the
auto_fail and auto_fail_reason fields on the validation record. They cannot be overridden by the closing agent; the failing condition has to be fixed and the validation re-submitted.
Gate 4 — Test theater prevention
A spec’s→ done gate requires every linked test scenario to be passed. Without an evidence requirement on update_test_scenario_status, agents can simply set status = passed and walk away. Pulse rejects this.
The evidence schema for status
passed:
Setting
status = passed without these fields returns VALIDATION_ERROR. Sprint close re-validates every scenario marked passed — a scenario whose evidence has been deleted between status update and sprint close regresses to pending and the sprint cannot close.
The Validator preset
Pulse ships 5 built-in agent presets (okto-pulse-feature-inventory.md:877–887). One of them — Validator — is the only preset that carries Permissions.TASK_VALIDATION_SUBMIT by default. The closing agent and the validating agent are intentionally not the same role.
Boards configure agents to a preset on creation. To submit a task validation as a non-Validator preset agent, ask a board admin to assign you the Validator preset or to create a custom preset with
Permissions.TASK_VALIDATION_SUBMIT.
Permissions
A blocked submit returns
FORBIDDEN. Adjust the agent’s preset in Board → Agents → Edit.
Errors
Next steps
Specs
Author the spec content the evaluation and validation gates score.
Sprints & cards
Card lifecycle, conclusion fields, and the bug-card test-first gate.
Comments & questions
Resolve gate-blocking ambiguity via Q&A on the parent entity.
ADLC pipeline
Where each gate sits in the end-to-end flow.