Skip to content

fix(pm): restore executable bit on check-doc-mapping and adopt-existing dispatcher scripts#403

Merged
aleskalfas merged 1 commit into
mainfrom
fix/402-pm-scripts-exec-bit
Jun 30, 2026
Merged

fix(pm): restore executable bit on check-doc-mapping and adopt-existing dispatcher scripts#403
aleskalfas merged 1 commit into
mainfrom
fix/402-pm-scripts-exec-bit

Conversation

@aleskalfas

@aleskalfas aleskalfas commented Jun 30, 2026

Copy link
Copy Markdown
Owner

What

Restores the executable bit on two project-management dispatcher entrypoints that were git-tracked as 100644:

  • check-doc-mapping.py
  • adopt-existing.py

Both carry the #!/usr/bin/env -S uv run --script shebang and are wired as pkit project-management verbs, but the dispatcher invokes them via subprocess.run([script_path, ...]), which needs the exec bit. Without it the verbs raised PermissionError: [Errno 13] Permission denied and could not run at all. chmod +x100755, matching every sibling entrypoint.

Why now

Surfaced live during the #399 merge: merge-pr's DEC-007 close-gate flagged an unticked doc-impact checkbox, and check-doc-mapping — the verb that owns that mapping — could not be invoked through the dispatcher (had to be run via uv run --script as a workaround).

Verification

  • pkit project-management check-doc-mapping --help and adopt-existing --help now run through the dispatcher.
  • git diff shows mode-only change (100644 → 100755), zero content lines.
  • Audit of scripts/*.py: these were the only two entrypoints tracked non-executable; all other verbs already 100755.

Version / migration

None. Mode-only fix restoring intended behavior of existing verbs — not a surface change (no new command/flag/principle); no rename/removal/schema bump, so no migration.

Doc impact

  • None — no behavior or interface change; restores an existing verb to runnable state.

Test plan

  • Both verbs invoke through the dispatcher post-fix.
  • Mode-only diff confirmed (no content change).
  • No other entrypoint left non-executable.

🤖 Generated with Claude Code

Closes #402

…ng scripts

Both are dispatcher entrypoints (uv-script shebang, wired as `pkit
project-management` verbs) but were git-tracked as 100644, so the dispatcher's
`subprocess.run([script_path, ...])` raised PermissionError and the verbs could
not run. chmod +x -> 100755, matching their sibling entrypoints.

Surfaced when `merge-pr`'s close-gate needed the doc-impact checkbox and
check-doc-mapping could not be invoked through the dispatcher.

No surface change (restores intended behavior of existing verbs); no version
bump, no migration.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@aleskalfas

Copy link
Copy Markdown
Owner Author

Reviewer agent (local, reviewer): CHANGES_REQUESTED

  • PR body has no closing-issue reference (hard-reject). The body uses ## What / ## Why now sections but contains no Closes #402 / Fixes #402 / Resolves #402 line, and closingIssuesReferences is empty. The only #-reference in the body is #399, cited as context, which does not link this PR to issue [Bug] Restore executable bit on check-doc-mapping and adopt-existing dispatcher scripts #402. This trips the pr-body rule "PR body contains at least one Closes #N / Fixes #N / Resolves #N reference" at severity hard-reject ([project-management:DEC-013-branch-and-pr-conventions], git-conventions.yaml conventions.pr-body). Fix: add Closes #402 to the body (recommended as the first line).

  • Branch conv-type and PR-title type do not match the issue's type:* label (hard-reject). Issue [Bug] Restore executable bit on check-doc-mapping and adopt-existing dispatcher scripts #402 carries type:maintenance. classification.yaml's pr_type_mapping maps maintenance → chore (alternate ci, only for CI-specific changes — not applicable here). The branch is fix/402-… and the title is fix(pm): …; fix maps from type:bug, not type:maintenance. This violates the branch-name rule "<conv-type> matches the Task's type:* label per the pr_type_mapping in classification.yaml" at severity hard-reject, and carries through to the PR-title type ([project-management:DEC-013-branch-and-pr-conventions] + [COR-008]). Expected conv-type: chore. (The decision conv-type override does not apply — no decision record is shipped.) Fix: re-cut the branch as chore/402-pm-scripts-exec-bit and retitle the PR chore(pm): restore executable bit on check-doc-mapping and adopt-existing dispatcher scripts — or, if the change is genuinely a bug fix rather than maintenance, re-label issue [Bug] Restore executable bit on check-doc-mapping and adopt-existing dispatcher scripts #402 type:bug so the axes agree.

Passing criteria (not gate-blocking): issue classification is complete (type:maintenance, priority:Low, workstream:capabilities); the ## Doc impact section is present; branch and title both parse to the correct shape; surface-change discipline holds (mode-only 100644 → 100755, zero content lines, no rename/removal/schema bump — no migration or version bump required, matching [COR-010]); and the no-shared-files invariant is intact (the two files live in the capability-owned project-management/scripts/ tree, not a core-owned path) ([COR-001]).

@aleskalfas aleskalfas merged commit 120d623 into main Jun 30, 2026
1 check passed
@aleskalfas aleskalfas deleted the fix/402-pm-scripts-exec-bit branch June 30, 2026 20:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Restore executable bit on check-doc-mapping and adopt-existing dispatcher scripts

1 participant