Problem
Independent review of #557 reproduced three temporary-repository cases: an ignored imported helper is a symbolic link, an oversized file, or a directory. The bounded reader refuses it before capturing file bytes. Replacing that entry with a valid regular helper leaves ordinary Git status clean. A receipt that records only successfully read files and name membership cannot distinguish the refused entry from the replacement.
#557 contains this by recording attempted-but-uncaptured dependency reads as unconfirmable and using the existing workspace_unverifiable current-control refusal. That prevents stale authority but means even an unchanged refused entry cannot provide current authority until it is repaired. Missing candidates and fully captured, syntactically unsupported predicates are separate, confirmable cases.
Proposed direction
Extend the shared identity-bound reader with typed refusal-origin evidence sufficient to reconfirm the exact limited fact it observed: entry kind/alias boundary, size or read budget, and origin phase where appropriate. Do not infer the cause from exception prose, follow an unsafe symlink, open a special file, or hash beyond the advertised bound to make an error comparable. If a transient failure cannot be reconfirmed, keep it explicitly unconfirmable.
Acceptance
Sequencing
Deferred from #557's bounded guard comparison. Related #588 owns shared-reader typed failure provenance; this issue owns durable currency of that refused input. #590 is a distinct host-output privacy issue.
Problem
Independent review of #557 reproduced three temporary-repository cases: an ignored imported helper is a symbolic link, an oversized file, or a directory. The bounded reader refuses it before capturing file bytes. Replacing that entry with a valid regular helper leaves ordinary Git status clean. A receipt that records only successfully read files and name membership cannot distinguish the refused entry from the replacement.
#557 contains this by recording attempted-but-uncaptured dependency reads as unconfirmable and using the existing
workspace_unverifiablecurrent-control refusal. That prevents stale authority but means even an unchanged refused entry cannot provide current authority until it is repaired. Missing candidates and fully captured, syntactically unsupported predicates are separate, confirmable cases.Proposed direction
Extend the shared identity-bound reader with typed refusal-origin evidence sufficient to reconfirm the exact limited fact it observed: entry kind/alias boundary, size or read budget, and origin phase where appropriate. Do not infer the cause from exception prose, follow an unsafe symlink, open a special file, or hash beyond the advertised bound to make an error comparable. If a transient failure cannot be reconfirmed, keep it explicitly unconfirmable.
Acceptance
Sequencing
Deferred from #557's bounded guard comparison. Related #588 owns shared-reader typed failure provenance; this issue owns durable currency of that refused input. #590 is a distinct host-output privacy issue.