name: contracts-audit
description: Checklist for auditing architecture contracts in a develop-by-contract environment. Covers the failure modes most commonly found during contract review: status drift, AI-invented decisions, cross-contract fact drift, stale feature references, missing state specs, and business policy gaps.
Contracts Audit
Use this skill when reviewing, locking, or cross-checking architecture contracts. Work through each category below. Flag every finding before making any edits — do not silently fix and move on.
1. Status & index integrity
Red flag: A contract marked Live whose locked date predates the current owner's involvement, or whose content contains decisions the owner has no memory of making.
2. AI-invented decisions
Rule: If a value or policy hasn't been explicitly decided by the product owner, the contract must say so and mark it open — not invent a plausible answer.
3. Cross-contract fact drift
Pattern to catch: Contract A says "30 days"; Contract B says "6 months." One is stale. Fix both in the same commit.
4. Stale content from removed features
Common example: After removing a Free tier, contracts still say "downgrade to Free on cancellation," return 'free' from state functions, or include Free-tier seeds.
5. Contradictions within a single contract
6. Missing state specifications
States need two things: type coverage (it exists in the type system) AND behavior coverage (what happens when you're in it).
7. File path correctness
8. Business policy gaps (omission-as-decision)
Rule: A future implementer will not know what was decided by omission. Explicit "there is no X" and "X is not gated by Y" statements are as important as positive specs.
9. Missing UI surface specs
10. Module / entitlement naming
11. Numeric values — data-driven vs. hardcoded
12. Code sample correctness
13. SEO / link policy
General principles
- Contracts describe decisions, not aspirations. Undecided values must be marked open — not filled with plausible guesses.
- Every state in a state machine needs a routing spec. Type coverage ≠ behavior coverage.
- Cross-contract facts must be synced in the same pass. Don't update one file and defer the sibling.
- Negative decisions are decisions. "There is no X" is as important to document as "there is X."
- AI sessions that mark contracts Live require human sign-off. An AI reviewing its own output is not a reviewer.
- Illustrative tables need their disclaimer above the table, not below — readers scan top-down.