The key previously covered the #source bytes + the block's DECLARED headers, so a unit whose impl is a thin wrapper over an undeclared header (vendors/kb_text_shape: two-line impl.c, all code in kb/kb_text_shape.h) would serve STALE cached objects after an upstream upgrade. collectIncludeDepBytes now walks the transitive closure of quoted #include lines (includer-dir first, then -I dirs; angle/system includes never participate; unresolvable names skip) and the dep contents fold into the key — no sidecar, no compare logic, a changed header is just a different key. Verified live: appending to kb_text_shape.h mints a new cache entry; reverting hits the old one.
38 KiB
38 KiB