40 lines
1008 B
Bash
Executable File
40 lines
1008 B
Bash
Executable File
#!/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"
|