3.2 KiB
3.2 KiB
examples/golden/
Two distinct families of golden fixtures live here. Do not conflate them.
| Family | Location | Maps | Consumed by | Purpose |
|---|---|---|---|---|
| Schema-shape fixtures | valid_report.json, invalid_report.json |
(a hand-authored report) → accept / reject | scripts/validate_report.py |
Pin the frozen machine-report schema contract. |
| Classifier goldens | classifier/<n>-<name>/ |
input doc-tree (input/) → expected classification (expected.json) |
hermetic tests/test_classifier_golden.py + a live model-regression harness |
Layer-2 reversion protection for the classifier — pin which subtype + op-kind + tier a given doc-tree should yield. |
Both families are reversion-protection artifacts; changing either is human-gated
per the META-RULE in invariants.md.
Schema-shape fixtures
Hand-authored machine-report JSON files used to verify the schema-validator
script (scripts/validate_report.py).
Contents
| File | Purpose | Expected validator result |
|---|---|---|
valid_report.json |
Well-formed machine report exercising a realistic spread of entry types: deterministic delete-range (confirm), deterministic move-to-archive (auto), deterministic insert-frontmatter (auto, no anchor — exercises the no-anchor path), and a generative distillation entry (confirm). |
Exit 0 (accepted) |
invalid_report.json |
Malformed report with a safety-critical invariant #10 violation: a delete-range entry (destructive, irreversible) that records safety_tier: "auto" when the derivation yields "confirm". All other fields are otherwise valid so the validator reports only this specific violation. |
Exit 1 (rejected), one violation on entries[0].safety_tier |
Invariants exercised
- Invariant #10 (
safety_tierderivation):invalid_report.jsonis the canonical fixture for this invariant — it is structurally sound except for the safety-tier mismatch. - Invariant #11 (
op_type↔exact_editbiconditional): both fixtures include deterministic entries withexact_editand a generative entry without one, exercising both directions of the biconditional.
Classifier goldens (classifier/)
Input doc-tree → expected classification. See classifier/README.md for the full
case table, the two harnesses (hermetic unit + live model-regression), and the
regeneration recipe. Five cases, each pinning one taxonomy edge to a distinct
exact_edit.kind (plus one generative case) so the suite covers the kind table +
tier derivation:
| Dir | class / subtype | kind | tier | scanner signal |
|---|---|---|---|---|
1-orphaned |
stale / orphaned | delete-range |
confirm | broken_reference |
2-superseded |
stale / superseded | move-to-archive |
auto | stale_name_location |
3-completed-in-place |
stale / completed-in-place | insert-frontmatter |
auto | archive_to_live_ratio |
4-duplicated |
stale / duplicated | dedupe |
auto | stale_name_location (no dedicated dup signal — see case notes) |
5-distill |
bloat / distill | (none, generative) | confirm | archive_to_live_ratio |
Enforced hermetically by tests/test_classifier_golden.py (no model, no network).