#!/bin/sh set -eu issues_file="${1:-.beads/issues.jsonl}" if [ ! -f "$issues_file" ]; then echo "Stage assignment audit: missing $issues_file" >&2 exit 2 fi jq -ers ' def stages: [(.labels[]? | select(test("^stage-(10|[0-9])$")))]; def primaries: [(.labels[]? | select(test("^primary-stage-(10|[0-9])$")))]; def primary_number: (primaries[0] // "" | sub("^primary-stage-"; "")); . as $all | [ .[] | select( (stages | length) == 0 or (primaries | length) != 1 or ((.metadata.primary_stage // "") | tostring) != primary_number ) | { id, stages: stages, primaries: primaries, metadataPrimary: (.metadata.primary_stage // null) } ] as $invalid | if ($invalid | length) == 0 then "Stage assignment audit: OK; issues=\($all | length); unassigned=0; invalidPrimary=0" else error("Stage assignment audit failed: \($invalid | tojson)") end ' "$issues_file"