Record of the P2 detail-loss recovery R&D. Decision: not shipping — preserved as a Draft PR for the record only.
What it is
A class-select detector on the coverage path: after the default (A) trace, a fine-mark-drop signal DROP = fine_mark_density(original) − fine_mark_density(A_render) routes detail-rich inputs (stipple / hatching / thin interior lines the default flattens) to a recovery retrace (pre-trace flatten OFF + a fine region merge). Clean-flat art is untouched. Adds an opt-in retrace_time_budget_s guard so the recovery retrace (which ~doubles convert time on detail-rich inputs) can be skipped to bound worst-case latency.
Validation done
- Detector reproduced the validated routing on the anchored set (all flagged detail-loss → recovery; all clean-flats → default).
- In-engine routing on the canonical corpus: flagged fire, clean-flats add zero paths, full test suite passes, ruff clean, time-budget guard works.
Why it is NOT shipping
Operator eye-gate: on the target flat/solid-art class the recovery output reads busier / net-negative vs the clean, economical default — the default (current shipped v0.8.0) is at-or-better than the reference by eye. The detector also over-fires on a borderline speckle clean-flat under a different input encoding. The refine/recovery thesis (add detail to match the reference) did not pay off on this class; the shipped economical output is the better product.
Status
- Live/PyPI stays v0.8.0 (this work is NOT in any release).
- Preserved as a Draft PR for the record. Reopen/reference if a non-regressing recovery mechanism is found later (esp. the harder translucency/glass case, tracked separately).
Record of the P2 detail-loss recovery R&D. Decision: not shipping — preserved as a Draft PR for the record only.
What it is
A class-select detector on the coverage path: after the default (A) trace, a fine-mark-drop signal
DROP = fine_mark_density(original) − fine_mark_density(A_render)routes detail-rich inputs (stipple / hatching / thin interior lines the default flattens) to a recovery retrace (pre-trace flatten OFF + a fine region merge). Clean-flat art is untouched. Adds an opt-inretrace_time_budget_sguard so the recovery retrace (which ~doubles convert time on detail-rich inputs) can be skipped to bound worst-case latency.Validation done
Why it is NOT shipping
Operator eye-gate: on the target flat/solid-art class the recovery output reads busier / net-negative vs the clean, economical default — the default (current shipped v0.8.0) is at-or-better than the reference by eye. The detector also over-fires on a borderline speckle clean-flat under a different input encoding. The refine/recovery thesis (add detail to match the reference) did not pay off on this class; the shipped economical output is the better product.
Status