- "Positive amounts still process correctly"
- "Negative amounts still throw
InvalidAmountError"
- "Receipt format remains unchanged for all amount types"
Contract Document Template
# Behavior Contract: [Bug Title]
## Bug Condition
[Precise description of triggering conditions]
## Postcondition
[Expected correct behavior after fix]
## Invariants
- [ ] Invariant 1: [existing behavior to preserve]
- [ ] Invariant 2: [existing behavior to preserve]
## Testable Assertions
1. `expect(processPayment(0)).toEqual({ amount: 0, status: 'completed' })`
2. `expect(processPayment(100)).toEqual({ amount: 100, status: 'completed' })`
3. `expect(() => processPayment(-1)).toThrow(InvalidAmountError)`
Usage in Bugfix Workflow
- Bug analysis identifies root cause at file:line
- This skill formalizes the contract from the analysis
- tdd-enforcer writes failing test from Bug Condition
- tdd-enforcer writes preservation tests from Invariants
- Minimal fix applied, contract audited