Diff engine
The engine is generic. Capabilities declare ComparisonRule and ChangeSeverity on property descriptors. Do not add if capability == .docker branches.
ValueComparatoris the only place two readings are judged "the same".- Identity matching is
EntityIdentity(normalized value + kind + optional scope). Path identities useEntityIdentity.path. diff(A, A)is empty. Reverse diffs swap added/removed counts. Property tests inPackages/DiffuseDiff/TestsandTests/Invariantsguard this.- Severity can escalate on a major version jump; do not special-case tools by name.
- Correlation (
ChangeCorrelator) groups by time window, not by inference.
Read Documentation/DiffEngine.md and Documentation/adr/0003-schema-driven-diff.md.
After changes: swift test --filter DiffuseDiffTests and swift test --filter DiffuseInvariantTests.