* fix(#3191): anchor remaining diff-base greps, portably The #2989 fix anchored only the Tier-3 grep, and did so with \b — not a POSIX ERE token, so on macOS regex(3) it silently matches nothing and Tier 3 always fails closed. spawn_reviewer's agent-context DIFF_BASE and the fallow structural pre-pass's --changed-since base each still ran the original unanchored --grep="${PADDED_PHASE}", whose oldest substring match is routinely a version-string/date commit from months before the phase existed — feeding the reviewer agent a bogus diff_base exactly when files: is empty, and widening fallow's changed-files scope. All three derivations now use the same anchored, POSIX-portable '[Pp]hase N([^[:alnum:]_]|$)' with --extended-regexp; spawn_reviewer also gains Tier-3's parent-exists guard so the two computations are the same algorithm. Behavioral regression tests execute the shipped bash extracted from the workflow files against a git fixture on every platform, so the macOS \b hole is covered, not just the Linux CI view. * chore(#3191): backfill changeset PR number 3437 * fix(#3191): scope fallow test snippet past the gsd-tools resolver The CI runners have no installed gsd-tools, so executing the resolver line that precedes FALLOW_SCOPE_ARGS in the extracted fence exits 1 before the derivation under test ever runs. Slice the snippet to start at FALLOW_SCOPE_ARGS=() — the resolver is orthogonal to the base derivation the regression test binds. --------- Co-authored-by: sim <sim@local>
This commit is contained in:
@@ -26,10 +26,14 @@ FALLOW_STDERR_TMP=$(mktemp)
|
||||
|
||||
# Phase scope uses fallow's native changed-files scoping (--changed-since <base>).
|
||||
# Derive the phase base commit; if none is found, fall back to repo scope (fallow
|
||||
# auto-detects the base branch).
|
||||
# auto-detects the base branch). #3191: the grep is the SAME anchored,
|
||||
# POSIX-portable phase-mention derivation the workflow's Tier-3 scope step uses
|
||||
# ("Phase N" followed by a non-alphanumeric or end-of-line) — a bare digit
|
||||
# substring matches version strings, dates, and other phases, and the oldest
|
||||
# such false match would silently widen --changed-since far past the phase.
|
||||
FALLOW_SCOPE_ARGS=()
|
||||
if [ \"$FALLOW_SCOPE\" = \"phase\" ]; then
|
||||
FALLOW_PHASE_COMMITS=$(git log --oneline --all --grep=\"${PADDED_PHASE}\" --format=\"%H\" 2>/dev/null)
|
||||
FALLOW_PHASE_COMMITS=$(git log --oneline --all --grep=\"[Pp]hase ${PADDED_PHASE}([^[:alnum:]_]|$)\" --extended-regexp --format=\"%H\" 2>/dev/null)
|
||||
if [ -n \"$FALLOW_PHASE_COMMITS\" ]; then
|
||||
FALLOW_BASE=$(echo \"$FALLOW_PHASE_COMMITS\" | tail -1)^
|
||||
FALLOW_SCOPE_ARGS=(--changed-since \"$FALLOW_BASE\")
|
||||
|
||||
Reference in New Issue
Block a user