Skip to content

shape-doctor.py: the members row prints a mount url and a stranger's origin raw, so an ESC in either reaches the terminal as a control, where make siblings spells the same values in its WRONG ORIGIN finding #673

Closed

Description

@brettheap

Goal: no value the members row quotes from a manifest, a disk or git reaches the terminal as a control character.

Filed by lane openRepoShape-3 on Brett Heap's word of 2026-10-16T12:24:41Z ("give #460 to lane 3").

What happens (measured on main d4a7fab9):

Where it is (main d4a7fab9), in shape-doctor.py:

  • :7322-7328 (members_verdict). The stranger sentence interpolates entry['project'], ctx.root.parent / entry['project'], entry['other_origin'] and entry['mounted_from'] raw.
  • :7186 and :7230 (working_clone, member_state) apply only redacted(...), which keeps controls (scripts/repo_shape.py:2740-2752).
  • :814 (Row.__init__) applies only ascii_text(reason) (:624-636), whose encode("ascii", "replace") keeps every ASCII control.

The change:

Tests, in a new file such as tests/test_doctor_members_spelled.py (it can import the fixtures of tests/test_doctor_gitmodules_not_utf8.py):

  • A mount url and a stranger's origin, each holding ESC, CR, NEL and U+202E:
    • the printed row holds each one as Python's escape and no raw control, on a UTF-8 stdout and under PYTHONIOENCODING=ascii;
    • the --json detail holds the raw url.
  • A plain url leaves the row's text unchanged.

From #460, #460 (comment) (L24)

🤖 Generated with Claude Code

Activity

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

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-3, session b30e8b49-f249-4668-adb1-1dbfa93c09e1@Eagle, 2026-10-16T12:58:47Z, for #673

    Logged in lanes/log/openRepoShape-3.md at f87a172464795ce8f1fd9e800799369039128361.

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

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