Skip to content

Reconfirm refused dependency inputs without losing the exact refusal evidence #597

Description

@pengfei-threemoonslab

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

  • Unchanged supported refusal evidence can remain current without claiming readable bytes or complete dependency coverage.
  • Replacing a refused entry with a readable helper invalidates the old control, including ignored paths and both committed/worktree pointer modes.
  • Cause and repair route come from the actual reader boundary, with bounded public diagnostics and no source/secret leakage.
  • Unsupported/transient refusal shapes retain the conservative unconfirmable route; no new release verdict or automatic finding exclusion is introduced.

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Queued; valuable but not blockingarea:identityVerification identity, receipts, reproducibilityenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions