Catalog/P family/P17
Proposed specificationSource-located exemplarH2

Verify-on-stop guards

Check artifacts before accepting completion.

JOIN POINTterminal_acceptance_interceptionRECORD STATUSCandidate · v0.1.0
UML class view for Verify-on-stop guards, showing participant roles, received calls, and analytical dependencies
FIG. P17 / UML CLASS VIEW
Object interaction diagram for Verify-on-stop guards, showing role collaboration and a numbered message sequence
FIG. P17 / OBJECT INTERACTIONS
Context
The agent proposes completion after producing an artifact.
Trigger
A stop or finish action is requested.
Structure
Exit interception, verifier execution, and accept-or-continue result.
Effect
The stop is accepted only after the verifier reports sufficient evidence.
Requires
Stop can be intercepted and at least one verification is available.
Ensures
Failed verification returns actionable feedback or blocks completion.
Invariant
The same acceptance gate cannot be bypassed by another stop path.
Violation
Unavailable or flaky verifier yields explicit unknown or failure, not silent success.

Negative control

Tests run by the user after the run are not verify-on-stop.

Permitted variation

Project test commands, acceptance hooks, verifier agents, and blocking policies.

Test obligation

Test pass, fail-and-continue, verifier error, repeated stop, and bypass route.

Evolution question

Did completion verification become mandatory rather than advisory?

PROMPT SKETCH
Do not accept completion until the artifact has passed the configured verification. A failed check must return actionable feedback or block the stop; an unavailable verifier is unknown, never success.
CODE DESIGN / PYTHON
def guarded_stop(agent, proposal, verifier):
    if not proposal.requests_stop:
        return agent.continue_run()
    verdict = verifier.check(proposal.artifact)
    if verdict.passed:
        return agent.accept(proposal, evidence=verdict.evidence)
    if verdict.unknown:
        return agent.block(proposal, reason="verification unavailable")
    return agent.continue_run(feedback=verdict.feedback)

Illustrative design sketch. The gate, not the completed status, is the acceptance authority. This example is a teaching aid, not implementation evidence or a conformance claim.

Join point
terminal_acceptance_interception
Source locator
Barbaste et al., §6.2, p. 15 (Hermes stop-guards); Table 12 “Outer Verification Loop”, p. 53; source label
Lexical cue
(?i)\b(?:verify[_-]?on[_-]?stop|before[_-]?stop|stop[_-]?verif|completion[_-]?check|acceptance[_-]?check)\bFrozen expression, v0.1.0. A match is a retrieval cue, not a confirmed implementation.
Aliases
verifyonstop, beforestop, stopverify, completioncheck, acceptancecheck
Canonical exemplar
Darwin-Agent/HarnessXharnessx/processors/control/self_verify.py:95Support: tests/unit/test_processor_triggers.py:336
Negative control
Tests run by the user after the run are not verify-on-stop.

Scope-anchored review. pohe-agent analyze <repo> --pattern P17 anchors the cue to its enclosing declaration and checks a separate operational signature for all four pointcut dimensions. Missing roles and negative-control risks remain visible; a structural match is not E2/E3. Calibration report ↗

Source-located exemplar

A concrete source anchor is available for this proposed record. It is one exemplar, not evidence that all repositories—or every contract field—conform.

Review boundary: this candidate and its specification come from an AI-assisted study. Independent human validation remains open.

ANY-EVIDENCE FAMILY COVERAGE8/36

22.2% of repository families in the frozen panel have at least one current cue, historical cue, or canonical source layer. This is not confirmed prevalence.

Current lexical-cue repositories: 7 / 41
Canonical source anchorDarwin-Agent/HarnessX ccb411691343harnessx/processors/control/self_verify.py:95

Task-end self-verification processor.

Exploratory retrieval cue Regex / v0.1.0
(?i)\b(?:verify[_-]?on[_-]?stop|before[_-]?stop|stop[_-]?verif|completion[_-]?check|acceptance[_-]?check)\b

This expression is a discovery instrument only. A match is a retrieval cue—not a confirmed implementation, pointcut match, or contract proof.