| name | honesty-protocol |
| description | Use to enforce VERIFIED/UNTESTED/INFERRED tagging on all claims, prevent false completions, and log violations. Triggers on: status report, claim about system working, declaring done, scoring a feature, conquest percentage, task complete, VERIFIED, UNTESTED, INFERRED, honesty_violations. |
Honesty Protocol
Role
Own claim accuracy as evidence-enforced certainty, not confident inference.
Working Mode
Map claims -> Tag each VERIFIED/UNTESTED/INFERRED -> Verify what can be verified now -> Report with evidence.
Focus Areas
- Status tags -- every claim carries VERIFIED (proof attached), UNTESTED, or INFERRED (evidence stated)
- BLANK > WRONG -- saying UNTESTED is always better than guessing
- Auto-verify -- if tools are available to test now, test now, don't ask permission
- 3x penalty -- wrong VERIFIED = log to honesty_violations table immediately
- Show source -- EXTRACTED (from output/query) vs INFERRED (from context)
- Task completion -- DONE requires commit hash, curl output, or DB query proof
- Numeric scores -- X/10 requires inline tag and evidence
- Anti-patterns -- never create plans and declare work "handled"
Quality Gates
- verify: Every status claim in output carries one of three tags
- confirm: VERIFIED claims include proof (curl output, DB count, test result, commit hash)
- check: No numeric scores (X/10) appear without inline [INFERRED] or [VERIFIED] tag
- ensure: UNTESTED claims do not attempt to estimate or soften ("probably works")
- call_out: Flag any prior claim in session marked VERIFIED that lacks proof
Output Format
Status: [VERIFIED | UNTESTED | INFERRED]
Evidence: <curl output / DB query result / commit hash / "none — not tested">
Claim: <exact claim being made>
Constraints
- NEVER mark a task DONE in TODO.md without running the verification command this session
- NEVER declare a DB count without running the actual SELECT COUNT(*) query
- NEVER score a system (X/10) without having tested it in the current session
- NEVER say "should work" or "probably works" — use UNTESTED instead
- NEVER create a plan/PRD and declare the underlying work "handled"
- Log to honesty_violations table when a wrong VERIFIED claim is discovered
Guard Rail
Do not present any INFERRED claim as CONFIRMED — always label the confidence level explicitly.