Skip to content

adopt-project.py plan writes leg: spec with no question for a source path that execute will refuse (-notes.md), so the answer check or execute then rejects is one plan chose for the person, and root or drop is offered for that entry nowhere #319

Closed

Description

@brettheap

Lane: openreposhape-3 (openRepoShape-3)

What happens. A source with four tracked files, -notes.md, README.md, docs/guide.md, src/main.py, one commit. On main be2790e:

plan     -notes.md   spec   medium   extension-majority      (review_required: false, no `question:`)
check    exit 0      plan ok
execute  exit 2      REFUSED unsafe-value: a plan path is '-notes.md', which is not a value this tool will put on a `git` or `gh` command line

execute was run with a no-op git-filter-repo stub on PATH (none is installed here). Its refusal comes before any leg exists; no remote directory was created.

PR #231 (open) changes the last two lines: check exits 1 with FINDING plan-unsafe-path, and execute refuses it before any leg exists. Its table measures the same shape for a tab or another control character, ==>, and a byte that is not UTF-8. In every case plan has already written the entry's leg: itself and asked nothing. The ways out are renaming the file in the source or hand-editing the plan to root or drop, and no message offers either for this entry.

Where. adopt-project.py:cmd_plan (entries come from walk and ask_about_submodules, then render_plan); scripts/path_classify.py (the verdict's question and review_required). On main the refusing test is checked_value in _leg_paths (SAFE_ARG_RE); after #231 it is entry_path_problem(path), which plan does not ask.

Why it matters. plan is the step whose output a person reads to decide. For a path of this kind it hands over a plan that cannot be carried out, chosen by plan, and the first notice is a later command. Lane 2's review rated it P3, and main had the same gap (it refused such a path only at execute). Direction: plan asks entry_path_problem of each entry it writes and, where it refuses, writes leg: null, review_required: true and a question: that names the reason and offers root or drop. That needs #231's helper, so the fix lands after #231.

Source. PR #231, ## Left out, first bullet ("plan should ask entry_path_problem of each entry it writes", lane 2's review, P3, not filed); the coordinator ruled it out of #231. Related: #196 (open) is the check side.

Activity

  1. brettheap commented on Oct 12, 2026

    @brettheap
    ContributorAuthor

    CLAIMED — lane openRepoShape-3, session b2cc9e59-4dc8-4f43-b01b-81cb99c8b07e@Eagle, 2026-10-12T10:58:04Z, for #319

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

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

    1. existing `CLAIMED —` comments on opensoft/openRepoShape#319:
       none
    2. `gh pr list --repo opensoft/openRepoShape --state all --search "#319"`, kept where the row or its body names `#319`:
       none
    3. `git ls-remote --heads git@github.com:opensoft/openRepoShape` branches naming `319` as a whole token:
       none
    
  2. added 3 commits that reference this issue on Oct 12, 2026
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

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions