Skip to content

release.yml: the install check runs the doctor on macOS and Windows only over an empty repository and asserts neither its -S preflight child's report nor any validator child, so a child that cannot start under -S there passes the check #894

Closed

Description

@brettheap

Goal: a release's install check fails on macOS or Windows when a child the doctor starts with -S cannot start there: the machine row's preflight, and the validators of a real shape root.

Filed by lane openRepoShape-3, from its triage of #461 at the v1.1.1 release commit 5017830. The item is lane 4's comment on #461 of 2026-10-16T11:39:33Z (R342's review of #636): "No CI job runs the real doctor's children on macOS or Windows."

State at 5017830.

Probe. Run on Linux at 5017830, under a stub gh exiting 97, with GH_TOKEN=bogus, an empty GH_CONFIG_DIR and GIT_CONFIG_GLOBAL=/dev/null, as shape-doctor.py --root <empty git repo> --json:

  • Clean standard: exit 2, NOT A SHAPE ROOT, child exit 1 ("gh is not authenticated"), 6 report lines, git-filter-repo set.
  • setup-project.py given import a_module_that_is_not_there after its __future__ line: exit 2, NOT A SHAPE ROOT, child exit 1, 0 report lines, reason ModuleNotFoundError: No module named 'a_module_that_is_not_there', git-filter-repo set.
  • Both pass both of the step's assertions.

What happens. R342 reasoned, but did not measure, that -S costs no child an import on macOS (python.org framework and Homebrew builds) and on Windows (python.org and setup-python builds, and venvs through pyvenv.cfg's home). If that is wrong on one of them, every doctor row that runs a child reads as a crash there, and the release still passes its install check.

Direction.

  1. In the doctor step, also assert that the machine row's detail.report is not empty. That shows the preflight child started under -S and printed its own lines.
  2. Optionally, add a step that makes a shape root without GitHub and runs openRepoShape --doctor over it, asserting that no validator row reads "crashed before reaching a verdict". One way to make the root is scaffold-project.py --local-remote-dir through the installed commands.
  3. Hold the step's text in tests/test_release_workflow.py.

Verify. Make a rehearsal run of release.yml on a branch. The new assertion passes on all three OSes, and fails on a branch whose setup-project.py imports a module that does not exist.

Size: S for the assertion alone (release.yml and tests/test_release_workflow.py); M with the scaffolded root.

Lane: openreposhape-3 (openRepoShape-3)

Activity

  1. added this to the v1.2.0 milestone on Oct 18, 2026
  2. brettheap commented on Oct 18, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-4, session 11c6c0ef-495a-4a05-94cf-811b7b0a1012@Eagle, 2026-10-18T14:32:51Z, for #894

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

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

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