Skip to content

input_set_id omits adapter-read inputs (prompt files, framework sources) #299

Description

@pengfei-threemoonslab

build_verification_plan composes input_set_id from the config blob, tool_sources blobs, policy packs, baseline, diff reference, changed-file blobs, and normalized options (core/verification_identity.py). Adapters read more than that.

Concrete case. inputs/openai_api.py reads openai_api.prompt_files. Those paths never become blobs in plan.inputs, so changing a prompt file changes what the scan sees while leaving input_set_id byte-identical. The same question applies to every framework block that names paths — anthropic.prompt_files, and the google_adk / langchain / crewai / n8n / codex_plugin / codex_config inputs.

Why it matters beyond one feature. input_set_id is the identity that verification-plan.json, verification-unit-result.json, the terminal receipt, and attestations all rest on. If it does not cover an input, then two runs that read different bytes can claim the same input set — which is exactly the claim those artifacts exist to make. It is a reproducibility gap, not only a caching one.

Found while building Stop-hook verify reuse in #297; the reuse feature was withdrawn partly because of this (see #295). Filing separately because the receipt/attestation surface is the more important consumer.

Suggested shape. Enumerate declared input paths per framework block when building VerificationInputSet, so every path an adapter is configured to read becomes a blob. A stronger variant is to capture the paths at the actual read boundary rather than deriving them from the manifest, which would also cover globbed and adapter-discovered inputs — worth considering if the manifest-derived list turns out to be hard to keep complete.

Verification. A test that changes only a prompt_files target and asserts input_set_id moves.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions