framework tools/git: lookup-pipeline pipefail + provider-normalization test arm (codex round on PR #1464)
ci/woodpecker/pr/ci Pipeline was canceled

- issue-assign + milestone-create: set -o pipefail; the remove-assignee
  lookup pipeline now fails loud on provider failure instead of reading
  an empty result as a silent no-assignees skip (codex blocker). A
  successful lookup with zero assignees still skips the edit.
- test-issue-assign-usage-contract: 6b arm proves provider-exit
  normalization end to end (gh stub exiting 2 on issue edit -> wrapper
  exit 1 with the normalized stderr message; codex should-fix).
- Battery: 23/23 suites green.
This commit is contained in:
2026-08-28 18:31:18 -05:00
parent 90f982afaa
commit 7db25b8820
3 changed files with 32 additions and 1 deletions
@@ -129,4 +129,26 @@ done
# the arm above proves only parse acceptance and non-usage classification.
# Parser-failure arms (1-4) remain zero-contact (asserted at 4b).
# 6b. Provider-exit normalization (codex PR #1464): a provider stub exiting
# 2 (its own usage-error status) must surface as wrapper exit 1, never 2.
GH_REPO="$WORK_DIR/repo-gh"
mkdir -p "$GH_REPO"
git -C "$GH_REPO" init -q
git -C "$GH_REPO" remote add origin https://github.com/acme/widgets.git
cat > "$BIN_DIR/gh" <<GHSTUB
#!/usr/bin/env bash
echo "gh \$*" >> "$PROBE_LOG"
if [[ "\$1 \$2" == "issue edit" ]]; then exit 2; fi
exit 0
GHSTUB
chmod +x "$BIN_DIR/gh"
rc=0
(
cd "$GH_REPO"
PATH="$BIN_DIR:$PATH" MOSAIC_GIT_IDENTITY="" MOSAIC_BRAIN_HOME="" \
"$SCRIPT_DIR/issue-assign.sh" -i 5 -a someone >"$OUT_FILE" 2>"$ERR_FILE"
) || rc=$?
[[ "$rc" -eq 1 ]] || fail "GitHub path: gh exit 2 must normalize to wrapper exit 1 (got $rc)"
grep -q "provider" "$ERR_FILE" || fail "GitHub path: normalized provider error missing from stderr"
echo "issue-assign.sh usage-contract regression passed (R1/R4)"