Skip to content

adopt-project.py check: refuse a kept file at the shape's pin path, and an unwritable --work-dir, before any leg exists #524

Closed

Description

@brettheap

Both pass check, and execute fails only after both leg repositories exist.

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

Lines

  • L1-K1: a kept file or link at contracts/shape-pin.yaml passes check; execute fails verification after both legs. Where: adopt-project.py _kept_pin_findings. Effort S; all. On main 3121945: _kept_pin_findings (adopt-project.py:429) asks only about the declared pins' files, never SHAPE_PIN. (source)
  • L1-K10: an unwritable --work-dir passes check; execute fails "extracting the spec leg" after both legs exist. Where: adopt-project.py _work_root, cmd_execute. Effort S; all. On main 3121945: _work_root only runs mkdir(exist_ok=True), and nothing probes for writes before _create_leg_remotes. (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

L1-K1: a kept link AT the shape's own pin path passes check and fails execute after both legs. With --pin openGlass@<commit> --pin-source <clone> and contracts/ kept in the root with contracts/shape-pin.yaml -> openglass-pin.yaml: check exits 0 (plan ok); execute exits 1 with FINDING adopt-shape-pin-unreadable after both leg repositories were created and pushed; the first bootstrap exits 1 with shape-pin-manifest-disagree and shape-pin-no-files. place() writes contracts/openglass-pin.yaml first, so the link then leads to a file and the shape's pin goes beside it, under shape/. The same on main and on #504's branch (fin183g, at 1bdffca, a49a0f8 and 053e725); #504 lists it under "Known limits". A real file at contracts/shape-pin.yaml does the same on main, with a pin or without (check 0, execute 1, first bootstrap 1 yaml-unparsable): check finds no kept path AT the shape's pin path. Direction: find one before any leg exists, as _kept_pin_findings (adopt-project.py:420) does for a declared pin's file. Measured on main 8beb3d9.
— #457, comment

L1-K10 (#183): an unwritable --work-dir is met only after both leg repositories exist. With a work directory the user cannot write (chmod 500), check --work-dir <dir> exits 0 (plan ok) and execute --work-dir <dir> exits 2 with REFUSED extracting the spec leg. after both leg repositories were created and pushed, whether a link sits ABOVE a path the shape writes (.github -> ci) or not. #504's branch does the same since f8e7176 (rv183f). Direction: have execute make and remove a directory in its work directory before it creates a leg repository, and refuse naming that directory. Measured on main 8beb3d9.
— #457, comment

Activity

  1. added this to the v1.1.0 milestone on Oct 14, 2026
  2. added a commit that references this issue on Oct 14, 2026
  3. brettheap commented on Oct 14, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-1, session 300f8f46-004a-4e72-8587-4f192be2e108@Eagle, 2026-10-14T22:31:14Z, for #524

    Logged in lanes/log/openRepoShape-1.md at 0f1e1e1cca5887ac37704cad45e4f81fe4ff23e7.

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

    1. existing `CLAIMED —` comments on opensoft/openRepoShape#524:
       none
    2. `gh pr list --repo opensoft/openRepoShape --state all --search "#524"`, kept where the row or its body names `#524`:
       none
    3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `524` 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