pub fn compute_file_semantic_digest(
scaffold_hash: ContentHash,
symbols: &[SymbolEntry],
scopes: &[ScopeEntry],
imports: &[ImportEntry],
occurrences: &[OccurrenceEntry],
) -> ContentHashExpand description
Compute a file node’s semantic_digest over its scaffold and canonical
source-local facts. Spans are deliberately excluded from this identity.
Canonical layout hd-sem-file-v3: scaffold_hash, then per symbol
u32-LE(container element count) ‖ (u32-LE-len ‖ bytes)* ‖ u32-LE(name len) ‖ name ‖ kind_tag ‖ semantic_hash. Every variable-length field is
length-framed (no record-boundary ambiguity; ["a::b"] no longer aliases
["a","b"]). Scope, import, and occurrence records use count-framed
fields and stable one-byte enum tags. All spans are EXCLUDED.