Repository navigation
fix(init): keep release and nightly permissions independent - #530
Conversation
A nightly init removed the release's project allow rule and the release removed the nightly's, since every Taskless rule other than the running build's counted as stale. Removal is now scoped to the installing package. The global autoMode entry gets one label per package (Taskless CLI: and Taskless CLI nightly:), so neither build reads the other's entry as stale.
|
@claude /review |
|
Claude finished @theCodeDrift's task in 5m 40s —— View job Review completeReview mode: incremental — read 0 prior review thread(s) before reviewing. This PR has no prior reviews, review threads, or top-level comments, so this is the first full review; there is nothing previously-raised to carry forward. Todo list
AssessmentI traced I also checked the OpenSpec archiving: the No concrete bugs found. One minor, non-blocking observation:
Everything else — the changeset bump ( |
Addressed the test-coverage note in bf2b8ab: the side-by-side case now runs for Cursor (editor and CLI), OpenCode in both object and array form, and Codex, each asserting the release rule and the newest nightly rule survive and repeat runs are no-ops. Verified the four new cases fail with the package scoping removed. — AI Coding Agent |
Testing a nightly next to the release was awkward because each build undid the other's permissions.
Project allow rules.
syncPermissions()treated every Taskless rule that was not the running build's as stale, regardless of package. A nightlyinitremoved the release'sBash(npx @taskless/cli@… *)rule; the release removed the nightly's. Removal is now scoped to the installing package (@taskless/clior@taskless/cli-nightly). The manifest record keeps the other package's rules, so a file Taskless created is still deleted once the last package's rules leave it. Aselfbuild, whose invocation names neither package, removes no package rules.Global
autoMode.allowentry. Both builds found their entry by the oneTaskless CLI:label and treated any other labelled text as stale. The text is identical in 0.13.1 andmaintoday, but the next rewording would have had each build offering to replace the other's entry on every run. Each package now has its own entry: the release keepsTaskless CLI:and names only@taskless/cli; a nightly usesTaskless CLI nightly:and names only@taskless/cli-nightly. A build only reads, offers, replaces, and warns about its own. The installed skill renders the installing build's entry and label from placeholders.One-time effect: on the first release carrying this, an existing
Taskless CLI:entry that names both packages reads as stale, and the wizard offers a singleREPLACE (global):.OpenSpec change
independent-nightly-permissionsmodifiescli-init,agent-global-trust, andskill-taskless, and is archived here. The pre-archive scenario check lost nothing and added five scenarios.Tests: side-by-side release and nightly installs, a nightly upgrade swapping only its own rule, record carry-over and created-file deletion, a
selfinvocation, both global entries leaving each other alone, and anightly-project test for the nightly's entry and installed skill.