The formula
The complete scoring formula for Charter v1:Where
B = Blocker count, H = High count, M = Medium count, L = Low count. Caps apply after the base is computed.Severity weights
| Severity | Penalty | Typical meaning |
|---|---|---|
| Blocker | −20 | The repo is unsafe to operate on as-is |
| High | −10 | Significant risk or missing control |
| Medium | −4 | Important hygiene or readiness gap |
| Low | −1 | Useful improvement, but not a major risk |
| Informational | 0 | Signal only; listed in output, not scored |
Informational findings (
AE-CTX-006, AE-SUPPRESS-003) are listed in charter doctor output and the HTML report, but contribute zero to the score. They are signals, not penalties — they surface patterns worth knowing without changing the gate result.Score zones
| Range | Zone | Gate status |
|---|---|---|
| 🟢 80–100 | Ship-ready | Passes threshold 80 (standard) and 90 (strict) |
| 🟡 60–79 | Needs work | Passes threshold 60 (relaxed) only |
| 🔴 50–59 | Blocked | Active Blocker finding; fails all standard thresholds |
| 🔴 0–49 | Critical | Raw secret detected; fails all thresholds |
Hard caps
| Condition | Cap |
|---|---|
Raw secret detected (AE-SEC-001 or AE-SEC-002) | ≤ 49 |
| Any Blocker finding present | ≤ 59 |
- A secret finding always keeps the final score in the Critical zone until the secret is removed or validly suppressed
- Even one Blocker finding prevents a repo from appearing “ship-ready” — the cap holds the final score at 59 or below, regardless of how well everything else scores
Example calculation
Walk through a real example
Walk through a real example
Given findings: 1 Blocker, 2 High, 3 Medium, 1 LowStep 1 — base score:Step 2 — apply caps:No active Blocker → no cap applies. Final score: 67 — Needs work zone.
- Secret cap: no raw secret detected, does not apply
- Blocker cap: 1 Blocker present → cap is 59
- Base score (47) is already below 59, so the cap does not further constrain
Why the formula is public
Charter keeps the formula public for trust. Teams need to know:- what will fail CI and why
- whether a score changed because of a new secret, a new MCP risk, or a lower-severity hygiene issue
- that a major-version upgrade is the only place where the formula can change
Why the formula is stable
Charter is a governance tool. If the score moved unpredictably between releases, teams could not rely on it for gating or trend tracking. So v1 keeps two things stable:- the severity penalties (
B×20,H×10,M×4,L×1) - the hard-cap semantics for secrets and blockers