Three source-audit findings: High — ModifyCrossCutting could still introduce dangling spanner anchors. create_cross_cutting was fixed (P13-D3) to validate anchor_object_refs(), but modify_cross_cutting still validated only endpoints() — empty for a spanner's region/measure anchors — so a live event-anchored spanner could be MODIFIED onto a missing RegionId/MeasureId and written into the graph past the core invariant that checks spanner anchors at all three kinds. Fixed by mirroring create's anchor_object_refs() liveness precondition in modify (endpoints() still feeds the event-only referent index). Regression extends create_cross_cutting_spanner_preconditions_region_measure_anchors with a modify case (verified to fail without the fix: the dangling modify reached the graph). Medium — slur_shape_penalty measured the constrained (pre-remap) curves, not the drawn shape. The Engraver remaps curves before casting, so an ideal-in-source slur could read ideal even after horizontal re-spacing visibly flattened or steepened it; the catalog units are "drawn slurs." Now measured over the SPACED whole curves (post-remap, pre-split) — threaded into quality::measure — so re-spacing distortion is honestly captured while a break-spanning slur is still measured whole (not as flatter fragments). Low — stale comments: CastLayout.curves and curve_fate said break-spanning curves draw whole with de Casteljau deferred (they now split); SlurContent.line said non-solid slurs surface a diagnostic (they now render dashed/dotted); the system_derived_rewrite doc called the never-minted system-pitch introduction an unfixed Pass-13 residue (P13-K1 now rejects it). 940 tests, clippy 0, docs -D warnings, conformance 8/8, zero golden churn. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| anomaly.rs | ||
| causal.rs | ||
| conflict.rs | ||
| decode.rs | ||
| effect.rs | ||
| encode.rs | ||
| envelope.rs | ||
| fuzz.rs | ||
| lib.rs | ||
| migrate.rs | ||
| opset.rs | ||
| payload.rs | ||
| reduce.rs | ||
| slot.rs | ||
| stamp.rs | ||
| support.rs | ||
| undo.rs | ||
| v0.rs | ||
| validate.rs | ||
| valuegen.rs | ||