Skip to content

bootstrap.py: a commit on a detached leg, the not moving an existing branch text, and what bump-leg.py and AGENTS-shape.md still promise (one re-pin) #533

Closed

Description

@brettheap

bootstrap.py is a pinned copy, so these change together and every project re-pins once. Brett Heap ruled on 2026-10-14 that the stranded commit stays P2: it needs a commit made on a detached leg, off the documented order.

From the v1.1.0 triage of the v1.0.0 known limits on #458. One pull request covers the lines below.

Lines

Rides along (backlog; tick it here if the same change covers it)

  • bootstrap prints checked out, and then git said: over a checkout git refused while already on the branch (source)

Each line above is marked → this issue on its tracking issue. Tick it there too when this closes.

The lines as written on the tracking issues

make bootstrap leaves a commit made on a detached leg on no branch, and says nothing, when the leg's branch is already at the pin.

— #458, comment

bootstrap's not moving an existing branch line says "The checkout stays at the pin", which is false when HEAD is on that branch.

  • The line is at templates/assembly-root/scripts/bootstrap.py:446-448.
  • tests/test_bootstrap_after_bump.py::test_a_branch_ahead_of_the_pin_is_not_moved (:239) asserts that HEAD stays on main at the ahead tip, not at the pin.
  • Right after a bump the leg is detached at the pin, so the clause is true in that case only.
  • Possible fix: name where the checkout is, as the "which is neither" line does.

— #458, comment

Since #490 (7348c57), make bootstrap puts a leg back on its tracking branch only when that branch is at or behind the pin, or ahead of it with no commit of its own; a branch with commits of its own past the pin is not moved, and the leg stays detached at the pin. Three texts still promise more: AGENTS.md:355 and README.md:995 ("make bootstrap re-places it on its tracking branch AT the new pin"), and bump-leg.py's unconditional print after every bump (scripts/bump-leg.py:1513). Every project's AGENTS-shape.md and docs/handbook.html carry the same promise. Lane openRepoShape-5's suggested words, from its read of #490: "make bootstrap in the root puts it back on its tracking branch when that branch is at or behind the new commit, or ahead of it with no commit of its own; a branch with commits of its own past the pin is not moved (bootstrap says not moving an existing branch), and the leg stays detached at the pin. Say which when you relay the result." Stale the other way: shape-doctor.py:2914 and :2989 and tests/test_doctor_legs_members_next.py:10 still say bootstrap never moves an existing branch whose tip is not the pin. From lane openRepoShape-5's read of #490 and the review of #490.
— #458, body

bootstrap prints checked out, and then git said: (templates/assembly-root/scripts/bootstrap.py:251) over a checkout git refused when HEAD was already on the branch at the pin, for example behind a stale index.lock. Nothing was checked out, so the line should say git refused a checkout that would have changed nothing; git's own lines after it stay useful, because the lock also blocks the person's next commit. Nit 1 of the verification of #490.
— #458, body

Activity

  1. added this to the v1.1.0 milestone on Oct 14, 2026
  2. brettheap commented on Oct 14, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-4, session 11c6c0ef-495a-4a05-94cf-811b7b0a1012@Eagle, 2026-10-14T16:45:41Z, for #533

    Logged in lanes/log/openRepoShape-4.md at c5c1d452848449d296d5caba3b66698caf65e106.

    The three reads (lane-collision-protocol Rule 1):

    1. existing `CLAIMED —` comments on opensoft/openRepoShape#533:
       none
    2. `gh pr list --repo opensoft/openRepoShape --state all --search "#533"`, kept where the row or its body names `#533`:
       none
    3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `533` as a whole token:
       none
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions