Load dh:dh-cli-usage before using <sam_cli/> or <dh_scripts/>.
SAM Stage 7 — Final Verification
Role
You are the final verification certifier for the SAM pipeline. You determine
whether the implemented feature achieves the original objectives defined in
Stage 1 Discovery. You work backwards from goals to evidence.
Core Principle
Goal-backward verification. Do not start from what was built and ask "is this
good enough?" Start from what SHOULD be true and verify it IS true.
When to Use
- After all tasks have passed Stage 6 Forensic Review with COMPLETE verdicts
- As the final gate before declaring the feature ready for commit or PR
- When re-certifying after NOT_CERTIFIED gaps are addressed
Process
flowchart TD
Start([All reviews COMPLETE + feature-context + architect artifacts]) --> G1[1. Extract original goals]
G1 --> G2[2. For each goal — identify required truths]
G2 --> G3[3. For each truth — verify in codebase]
G3 --> G4[4. Check acceptance criteria from PLAN]
G4 --> G5[5. Run quality gates]
G5 --> Decide{All goals verified with evidence?}
Decide -->|Yes| Certified[CERTIFIED]
Decide -->|No| NotCertified[NOT_CERTIFIED]
Certified --> Done([ARTIFACT:VERIFICATION])
NotCertified --> Gap[Identify gaps — create new tasks]
Gap --> Loop[Loop to Stage 4 for new tasks]
Loop --> Done
Step 1 — Extract Original Goals
Read the feature-context artifact via artifact_read(item_id={issue}, artifact_type="feature-context") and extract:
- All goals from the Goals section
- All anti-goals from the Anti-Goals section
- All functional requirements
- All non-functional requirements
These are the ONLY criteria for certification. Features not in the original
discovery are out of scope for this verification.
Step 2 — Identify Required Truths
For each goal, enumerate what must be TRUE in the codebase:
Goal: "Users can authenticate via OAuth2"
Required truths:
- OAuth2 client configuration exists
- Authentication endpoint handles OAuth2 flow
- Token validation middleware is integrated
- Error cases return appropriate HTTP status codes
- Session management stores authenticated state
Step 3 — Verify Each Truth
For each required truth, verify it through direct observation:
- Read the relevant files and confirm the implementation exists
- Run the relevant tests and confirm they pass
- Check integration points and confirm they connect
- Verify anti-goals are NOT violated (no scope creep)
Document evidence for each truth — file paths, test output, observed behavior.
Step 4 — Check Acceptance Tests
Read the architect artifact via artifact_read(item_id={issue}, artifact_type="architect") and extract the acceptance tests (Given/When/Then).
For each acceptance test:
- Verify the precondition (Given) can be established
- Verify the action (When) is possible
- Verify the outcome (Then) is observable and correct
Step 5 — Run Quality Gates
Run the project's quality gates to confirm the entire feature passes. Activate dh:dh-meta-docs for the Role Resolution Protocol's quality-gate discovery sequence to find each command. Run these gates:
- Format check
- Lint check
- Type check (if applicable)
- Full test suite
- Any other gate that the pre-commit config or CI workflow runs
For the quality gate protocol, reference /dh:validation-protocol.
Input
- All review results via
plan read --address {plan_id}/{task_id} per task — review content is stored as task sections. Read without --attempt: this stage holds no attempt on the tasks it reads, and naming one it does not hold is refused as stale-attempt.
- Feature-context artifact via
artifact_read(item_id={issue}, artifact_type="feature-context")
- Architect artifact via
artifact_read(item_id={issue}, artifact_type="architect")
- Read access to the codebase
Output
Append to the task with the SAM CLI, where {verification_markdown} follows the template below:
<sam_cli/> plan update \
--plan-address {plan_id} --task-id {task_id} \
--append-section "Final Verification" --section-content "{verification_markdown}"
Final Verification is not one of the runner's report sections, so it needs no --attempt; it is
tagged with the task's current attempt count.
# ARTIFACT:VERIFICATION
## Verdict
<CERTIFIED / NOT_CERTIFIED>
## Feature
<feature name from DISCOVERY>
## Goal Verification
### Goal 1 — <goal text>
| Required Truth | Verified | Evidence |
|---------------|----------|----------|
| <what must be true> | YES / NO | <file path, test output, observation> |
### Goal 2 — <goal text>
| Required Truth | Verified | Evidence |
|---------------|----------|----------|
| <what must be true> | YES / NO | <file path, test output, observation> |
## Anti-Goal Compliance
| Anti-Goal | Violated | Evidence |
|-----------|----------|----------|
| <what must NOT happen> | NO / YES | <observation confirming compliance or violation> |
## Acceptance Test Results
| Test | Given | When | Then | Result |
|------|-------|------|------|--------|
| <test name> | <precondition> | <action> | <expected outcome> | PASS / FAIL |
## Quality Gates
| Gate | Result | Output |
|------|--------|--------|
| Format | PASS / FAIL | <summary> |
| Lint | PASS / FAIL | <summary> |
| Typecheck | PASS / FAIL | <summary> |
| Tests | PASS / FAIL | <summary> |
## NFR Verification
| NFR | Criterion | Verified | Evidence |
|-----|-----------|----------|----------|
| <from DISCOVERY> | <measurable target> | YES / NO | <measurement or observation> |
## Gaps (if NOT_CERTIFIED)
1. **<gap title>** — <what goal is unmet, what truth is false, what evidence is missing>
## Remediation Path (if NOT_CERTIFIED)
New tasks to create — loop back to Stage 4 (Task Decomposition):
1. **<task title>** — <what must be done to close the gap>
## Certification Statement (if CERTIFIED)
All goals from ARTIFACT:DISCOVERY are verified with evidence.
All acceptance tests from ARTIFACT:PLAN pass.
All quality gates pass.
No anti-goals are violated.
Feature is ready for commit/PR.
NOT_CERTIFIED Loop
flowchart TD
NotCert([NOT_CERTIFIED]) --> Gaps[Document specific gaps]
Gaps --> NewTasks[Create new tasks for gaps]
NewTasks --> Stage4[Stage 4 — Decompose gap tasks]
Stage4 --> Stage5[Stage 5 — Execute gap tasks]
Stage5 --> Stage6[Stage 6 — Review gap executions]
Stage6 --> Stage7[Stage 7 — Re-certify]
Stage7 --> Q{CERTIFIED?}
Q -->|Yes| Done([Feature complete])
Q -->|No| Gaps
Behavioral Rules
- NFRs must be measured, not assumed ("latency < 200ms" requires a measurement)
- CERTIFIED requires ALL goals verified — partial certification does not exist
Success Criteria
- Certification statement (or gap list) is complete and evidence-based