Skip to content

parity_receipt_denominator.sh reads git's refusal as 0 receipts on container runners — a git failure must be ENV exit 2, never a count #3682

Closed

Description

@noahgift

Found in the 0.69 batch #3669: workspace-test shard 3/3 on gx10-pool1 (job 106269529629) failed aprender-contracts-cli --test ont4c3_parity_receipts::the_committed_tree_agrees_with_its_own_denominator with "EXPECTED_RECEIPTS says 7; the tree holds 0".

Cause

scripts/parity_receipt_denominator.sh:17 listed the receipt universe with (cd "$root" && git ls-files … 2>/dev/null | sort -u) inside a process substitution. On the docker runners (gx10, yoga), git refuses the bind-mounted checkout ("detected dubious ownership", exit 128). The 2>/dev/null discarded that message, and nothing reads a process substitution's exit status, so the loop saw an empty universe and reported 0 receipts. The failure is per-host: host runners pass and containers fail. Same class as aprender#3581.

done_when

  • The listing is git -c safe.directory="$root" -C "$root" ls-files …, and git's stderr is no longer discarded.
  • A git failure makes the script exit 2 (ENV) with a message naming git. It is never a count of 0. verify propagates that status instead of collapsing it to 1.
  • A self-test row puts a git stub on PATH that exits 128 with the dubious-ownership message. It requires exit 2 and a message naming git, and it requires that the output NOT contain "holds 0".
  • Mutation: with the pre-fix count_and_check restored, that row goes RED.

Refs #3669 #3577 #3581

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions