# Warning budget ledger template

Use this before merging an agent-reviewed or agent-generated change that passed with warnings. Copy the table into a sheet, one row per surviving warning.

| Warning | Current severity | Why allowed today | Activation trigger | Promotion rule | Owner | Expiry date | Evidence link | Next test |
|---|---|---|---|---|---|---|---|---|
| Dormant hook runs `curl HEAD`; could leak real IP if activated (Security Audit). | Watch | Hook is unregistered and unreachable in the current config. | Any PR registers the hook into a lifecycle event. | Trigger fires -> FAIL; block merge until security re-review. | Security lead | 2026-07-20 | PR #61 Security Audit comment | CI check fails if any registered hook performs outbound `curl`. |
| One skill ships without `allowed-tools` frontmatter (Documentation). | Tolerate | Skill currently invokes no privileged tool. | Skill starts calling a tool it never declared. | Undeclared tool call -> block until frontmatter is added. | Skill author | 2026-07-20 | PR #61 Documentation comment | Lint every skill for explicit `allowed-tools`. |
| Errors removing a lock file are silently suppressed (Silent Failures). | Watch | Lock contention has not appeared in single-process use. | A second concurrent process touches the same lock. | Concurrency introduced -> block until the error is logged and handled. | Infra owner | 2026-08-20 | PR #61 Silent Failures comment | Test that lock-removal failure logs instead of disappearing. |
|  |  |  |  |  |  |  |  |  |

## How to fill it

1. Copy every warning the gate left standing before you merge.
2. Write the "why allowed today" sentence. If the sentence is weak, fix or block the warning instead of carrying it.
3. Name one owner and one expiry date per row.
4. Turn the highest-risk row into a next automated test.
5. Revisit expired rows before they become permanent debt.

Please do not paste credentials, customer records, private traces, or sensitive operational data into a shared copy of this template.
