You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f871db8
Browse filesBrowse the repository at this point in the historyBrowse files
fix(tooling): bump-objectui.sh asks whether the pin is ON objectui main, and says so three ways
`bump-objectui.sh` wrote `.objectui-sha` from `git rev-parse HEAD` of the
operator's objectui checkout and never asked whether that commit is on main.
Bump with a feature branch checked out and the pin names a revision that is not
on main -- and the script reported success. Measured on a fresh --no-tags clone
of objectui, 2026-08-21: 941 remote branches, 118 branch tips not reachable from
main, 291 commits present and not on main.
The bump now asks, and reports THREE answers, never two:
- on origin/main -> no banner; the pin line that prints anyway says
"(on origin/main)", so "checked, and fine" is stated rather than inferred
from silence.
- not on origin/main -> a loud warning naming the branch(es) the commit IS on,
and saying which situation it is: pushed onto a branch that never merged, or
never pushed at all. The pin is still written -- this is a warning.
- cannot be answered -> it says THAT, and borrows the wording of neither
verdict. Both causes are handled: no origin/main in the checkout, and an
absent commit object.
Warning, not gate, deliberately: `origin/main` is only as fresh as the last
fetch, so hard-failing would reject a legitimately-just-merged commit, and this
script is deliberately usable offline. The hard gate is at the chokepoint that
must fail closed -- cut-rc.yml re-asks the same predicate against a fresh full
clone and refuses to cut (#9450 / PR #10494). It never fetches for the operator;
it prints the fetch they may want.
Two git behaviours the three-way split rests on, measured on git 2.43.0 and
pinned in the self-test rather than asserted in prose:
- `merge-base --is-ancestor <absent-object> origin/main` exits 128, an error,
not the 1 that means "not an ancestor". Reading 128 as "no" invents a false
alarm; reading anything-not-1 as "fine" reinstates the silent pass.
- `git rev-parse HEAD` exits 0 and prints the sha even when that commit object
is missing from the object store -- it resolves the ref without reading the
object. So NEW_SHA arriving is no proof of presence, and the absent-object
case is reachable from the DEFAULT path, not only from an explicit argument.
14 cases added to `objectui-changeset-digest.mjs --self-test`, which already
drives the real shell script end to end (pnpm check:objectui-changeset).
Fixes#10495
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt
0 commit comments