You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Copilot's review of workBenches#78 against the vendored openRepoTools at 8a36eb3: wip init stages pre-existing changes (git add -A); --install leaves wrong modes when bytes match (skills, commands, settings.json 0600); a read-only SKILL.md passes the target plan and breaks all-or-nothing #40
Copilot's review of opensoft/openBenches#78 (the re-vendor of this repository at 8a36eb3; review 2026-09-14T13:14Z, "Changes recommended") raised four inline findings, all against the VENDORED BYTES of openRepoTools — this repository's main — and none against workBenches' own files. They predate the pin move, so they are filed here rather than taken there (the rule since #26: a defect a round introduces is taken in that round; one that predates it is filed). Verbatim, with the line in openRepoTools at 8a36eb3:
:1334 (P1) — wip init stages pre-existing workspace changes."When wip init adopts an existing checkout at the derived path — or resumes after a partial run — any unrelated modified, deleted, or untracked files make status --porcelain nonempty, and this git add -A -- . stages all of them. The following commit and push origin HEAD:main then publish those pre-existing changes as part of the seed commit." Act: stage only the template paths wip init itself wrote (git add -- <each path>), and REFUSE (exit 2, naming them) when an adopted checkout carries unrelated changes — a seed commit is the template and nothing else.
:710 (P2) — modes not restored when bytes match."When an installed skill has the correct bytes but an incorrect mode, this branch reports it unchanged and skips the chmod 644 below … the analogous command-file branch and HOOK_PLAN=present path also leave incorrect modes untouched (including a widened settings.json)." Act: stamp the documented mode on every path whether or not the bytes changed — the eleven files already get chmod 755 every time; skills and command files get 644, settings.json 0600, the same way.
:761 — HOOK_PLAN=present never applies 0600."For an existing settings file whose expected hook is already present, HOOK_PLAN=present reaches this message and never applies the documented mode 0600. A direct --install can therefore leave ~/.claude/settings.json world-readable." Act: normalize the mode on that path too (or refuse a mismatch, naming it).
:570 — an unwritable existing SKILL.md passes the target plan."unplaceable_kind treats every existing regular file as writable, so plan_skill_targets lets a read-only SKILL.md or command file through. install_commands has already copied the eleven PATH files before place_skill_and_hook reaches cp/chmod, so a normal permission failure leaves a partial install even though this path pro[mises all or none]." Act: plan_skill_targets tests writability (-w, and the parent's for a missing file) before anything is placed, so the all-or-nothing rule holds for the eighteen artifacts, not eleven.
Tests: tests/test_openrepotools_command.py / tests/test_install_skill_and_hook.py — a skill with right bytes and mode 000 is re-moded; a present hook in a 0644 settings.json ends 0600; a read-only SKILL.md target refuses before any of the eleven is placed; wip init on an adopted checkout with an unrelated dirty file refuses and stages nothing.
Activity
`unusable_dir_kind`'s walk now stops at a dangling symlink instead of…
`wip init`'s owed-byte comparison now asks the INDEX as well as the w…
The re-mode case names the skill it actually chmods, because Amendmen…
Merge origin/main (`b5244e2`: #46's pin bump and #44's installer roun…
Amendment 17 tooling: a handoff is the swap under one name — `lane-ha…