Get from zero to a verified code change in 3 minutes.
Signum is a Claude Code plugin. Install it:
claude plugin add heurema/signumVerify:
claude /signum explainGive Signum a task:
claude "/signum Add a health check endpoint that returns {status: ok}"Signum runs 4 phases automatically:
- CONTRACT — Generates a verifiable spec from your request
- EXECUTE — Implements code against the spec (with repair loop)
- AUDIT — Reviews with up to 3 independent AI models
- PACK — Bundles proof artifacts into
proofpack.jsonand writes advisoryanti_entropy_report.json
You approve the contract once. Everything else is autonomous.
After a run, check the result:
jq '.decision, .confidence.overall' .signum/proofpack.jsonDecisions:
- AUTO_OK — All checks passed. Review the diff and commit.
- AUTO_BLOCK — Issues found. Check
.signum/audit_summary.json. - HUMAN_REVIEW — Inconclusive. Review flagged findings manually.
Optional follow-up:
jq '.status, .summary' .signum/anti_entropy_report.json— advisory cleanup / anti-drift findings
| Phase | What happens | Duration |
|---|---|---|
| CONTRACT | AI generates spec + acceptance criteria + holdout tests | ~30s |
| EXECUTE | AI implements + runs repair loop (max 3 attempts) | 1-5 min |
| AUDIT | Mechanic checks + up to 3 model reviews + holdout validation | 1-3 min |
| PACK | Bundles all artifacts into signed proofpack | ~5s |
Key artifacts in .signum/:
contract.json— The verified speccombined.patch— The code diffmechanic_report.json— Lint/typecheck/test results vs baselineaudit_summary.json— Consensus decision with reasoningproofpack.json— Self-contained evidence bundleanti_entropy_report.json— Advisory follow-up findings (non-blocking)
Signum uses Claude for the primary review. For multi-model audit, install:
# Codex CLI (security-focused review)
npm install -g @openai/codex
# Gemini CLI (performance-focused review)
npm install -g @google/gemini-cliOverride models via ~/.claude/emporium-providers.local.md:
---
defaults:
codex:
model: o4-mini
gemini:
model: gemini-2.5-pro
---Risk-proportional audit:
- Low risk — Claude only (~$0.20, <2 min)
- Medium risk — Claude + available externals (3-5 min)
- High risk — Full 3-model panel (5-10 min)
Signum works without any setup — just run /signum "task". But for best results in existing projects, add these optional files:
Tells the contractor what your project is about. Without it, medium/high-risk tasks trigger a blocking question.
cat > project.intent.md << 'EOF'
# <Project Name> — Project Intent
## Goal
<1-2 sentences: what this project does>
## Core Capabilities
- <capability 1>
- <capability 2>
## Non-Goals
- <what this project does NOT do>
## Success Criteria
- <measurable outcome 1>
- <measurable outcome 2>
EOFThe contractor reads this before generating contracts — non-goals flow into outOfScope, terms into acceptance criteria language.
Enforces consistent terminology. The glossary check warns when contracts use forbidden synonyms.
cat > project.glossary.json << 'EOF'
{
"version": "1.0.0",
"canonicalTerms": ["your", "canonical", "terms"],
"aliases": {
"forbidden-synonym": "canonical-term"
}
}
EOFDeclares module lifecycle status. Enables cleanup contracts with structured removals.
cat > modules.yaml << 'EOF'
version: 1
modules:
- path: src/api/
name: api
status: active
owner: "@you"
- path: src/old-api/
name: old-api
status: deprecated
deprecated_since: "2026-03-01"
remove_after: "2026-04-01"
replaced_by: src/api/
reason: "Replaced by v2 API"
EOFWhen you run /signum "remove the old-api module", the contractor reads modules.yaml, generates removals and cleanupObligations entries, and the engineer deletes files + cleans up references in a single verified pass.
Invariants that must always hold. Any regression is AUTO_BLOCK regardless of task.
cat > repo-contract.json << 'EOF'
{
"schemaVersion": "1.0",
"invariants": [
{ "id": "I-1", "description": "All tests pass", "verify": "npm test", "severity": "critical" },
{ "id": "I-2", "description": "No lint errors", "verify": "npm run lint", "severity": "high" }
],
"owner": "human"
}
EOFcd your-project- Create
project.intent.md(or skip — Signum will ask) - Run:
/signum "describe your first task" - Review the contract when prompted (5-item checklist)
- Check
.signum/proofpack.jsonfor the result - Optionally check
.signum/anti_entropy_report.jsonfor follow-up hygiene work
.signum/ is auto-added to .gitignore. No cleanup needed.
- Run
/signumon a real task in your project - Check
.signum/audit_summary.jsonafter a run to understand findings - Add
repo-contract.jsonfor project-wide invariant enforcement