Compare a reference comparison-text (the read-aloud readout) against the
value's own comparison text. A match on a ≤512-bit input is lossless ⇒
identical; on a >512-bit (truncated) input the text is head + fingerprint
middle + tail, so a match is strong but not a full identity proof ⇒ unknown
(route to the human walk), never identical. Any mismatch ⇒ different.
This compares the FULL comparison text — the bracketed label and the cell
readout — by calling comparisonText rather than re-deriving the cells
here. It used to compare the cells alone, which was the same defect from two
directions: the cells carry the core, while the engine's own identity
definition (identityKey) also includes the folded prefix. So
did:good:AbCd… and did:evil:AbCd… — different values by compareValues,
resolving to different documents and different keys — produced byte-identical
readouts and reached the strongest affirmative verdict the library has.
Compare a reference comparison-text (the read-aloud readout) against the value's own comparison text. A match on a ≤512-bit input is lossless ⇒
identical; on a >512-bit (truncated) input the text is head + fingerprint middle + tail, so a match is strong but not a full identity proof ⇒unknown(route to the human walk), neveridentical. Any mismatch ⇒different.This compares the FULL comparison text — the bracketed label and the cell readout — by calling comparisonText rather than re-deriving the cells here. It used to compare the cells alone, which was the same defect from two directions: the cells carry the core, while the engine's own identity definition (
identityKey) also includes the folded prefix. Sodid:good:AbCd…anddid:evil:AbCd…— different values bycompareValues, resolving to different documents and different keys — produced byte-identical readouts and reached the strongest affirmative verdict the library has.