Skip to content

audit-qc-paths does not follow a chain recipe's own dependencies when it also has a body #289

Description

@realmarcin

Found in the fifth review pass of #285, and explicitly deferred there rather than held for another round.

The not invoked guard catches a pure dependency-only recipe. A recipe with dependencies and a script body makes invoked non-empty, takes the normal path, and its dependencies are never followed — no silent entry, no BlindGate.

That shape already exists in this justfile: gen-qc-dashboard: (_require-claw "kg_microbe_qc") and knowledge-gap-scan *args: (_require-claw …) both carry a dependency and a body. Neither is in the qc chain today.

Narrower than the composite case that was fixed in #285: the recipe is examined and its own script's reads are collected, so this is partial coverage rather than blindness.

Fix: resolve qc_chain transitively — for each chain member, parse its own dependency list out of its recipe header and walk those too, guarding against cycles. The existing not invoked guard then still catches a leaf that reads nothing. No-op on the current tree, since none of the eleven chain recipes declares a dependency.

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