Data Model: ROI ledger
One markdown file per work package: roi-ledger/WP0N.md.
File section (one per reviewed test file)
## tests/charter/<path>.py
Kept: <n> · Deleted: <n> · Merged: <n> · Rewritten: <n>
| Test | Verdict | Rubric class | Covering test / merge target | Note |
|------|---------|--------------|------------------------------|------|
| test_foo | delete | private-helper | tests/charter_offering/test_x.py::test_bar | public path hits same branches |
Rules:
Verdict∈ {keep, delete, merge, rewrite}. Only non-keep rows are required. Kept tests are counted in the header line.Rubric class∈ {change-detector, tautology, mock-only, retired-path, private-helper, duplicate}.deleterequires a covering test node id, ornone — low ROIplus a reason (feeds FR-006).mergenames the surviving test, which must be in the same WP's file set.
Cluster section (WPs that own a duplicate cluster)
## Cluster N: <file A> ↔ <file B>
Verdict: merged | A deleted | B deleted | distinct
Reason: <one or two sentences>
Coverage note
A trailer listing any src/charter lines that lost coverage as a result of the WP's removals, with the reason.