Skip to content

validate-pins.py: an unsearchable contracts/ still ends in a PermissionError, an unreadable pin is named by its absolute path twice, and a workflow name or a pin entry's control character reaches stderr raw #712

Closed

Description

@brettheap

validate-pins.py should refuse an unsearchable contracts/ by name and not end in a PermissionError, name an unreadable pin by its path relative to the root and once, give a failed read the advice for its own cause, and spell the names and paths it prints. #633's _is_a is the ready fix for the first of these. The riders in the same file ride with it.

From lane 4's checklist triage of 2026-10-16 (T3), approved by Brett Heap at 2026-10-16T13:36:07Z ("approve all triage recommendations"). One pull request covers the lines below.

Parent: #459. Milestone: v1.1.1 (a follow-up filed after Brett Heap's v1.1.1 word of 2026-10-16T13:35:28Z).

Authored after the v1.1.0 work; lands after the v1.1.0 tag unless the release owner (lane 3) says otherwise.

Lands after:

Effort: M: _is_a at five is_file() sites, one relative path, spelled names. Platform: all (the mode-000 route is POSIX; L4-103 was measured on Python 3.12, 3.13 and 3.14).

Files: templates/assembly-root/scripts/validate-pins.py and scripts/repo_shape.py (load_yaml), both pinned shape copies. The pull request re-pins both. Lane 4's #714 changes the same two files, and #714 lands after this one.

Lane openRepoShape-4 claims it at filing; see its CLAIMED comment.

Why this is filed. The input is exotic: an unsearchable contracts/ directory, a pin this user cannot open, a workflow named with a newline or a bidi control, a pin entry holding ESC. None is met by an ordinary repository, and each is a refusal or a stack trace on a root nobody else can open. Line numbers are at c6122e8 (#639) unless a line says another commit; main has moved since.

Lines

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

What is expected

Not a duplicate: lane 3's #677 and #697 touch validate-pins.py and the doctor's lost-repo_shape.py row, and not these lines; lane 2's #634 spells --pin-source values only. No issue numbered #650 to #700 cites L4-102 to L4-106, L4-143 or L4-144 (read at 13:17Z).

Each line above is a line of #459's checklist comments (issuecomment-6214491417, issuecomment-6214788046 and issuecomment-6213851688). Tick it there too when this closes.

Lane: openreposhape-4 (openRepoShape-4)

Activity

  1. added this to the v1.1.1 milestone on Oct 16, 2026
  2. brettheap commented on Oct 16, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-4, session 11c6c0ef-495a-4a05-94cf-811b7b0a1012@Eagle, 2026-10-16T14:00:27Z, for #712

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

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

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