Repository navigation
fix(repo-hygiene): scope clean's destructive guard to an open run and match parsed words - #8168
Conversation
… match parsed words Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
claude-security-review reviewed Security review (incremental, head b97ad7b)No security findings. Scope: the four files changed since 163aac2, read against What changedThe run-marker refresh trigger moves from a raw-text regex match to a parsed check. Why this is not an exploitable weakening
Instruction-surface checkThe doc and changelog edits narrow nothing that forbids an action. They describe the refresh trigger more precisely. I did not consult the instruction exception register. No guardrail text was removed, and the guard code still enforces the blocking behavior. Operational note, not a findingThe old raw-text regex matched script names in PowerShell commands as well. The new parser reads Bash syntax. A PowerShell call that runs a clean script through a wrapper no longer refreshes the marker. On a run that sits idle for over an hour, the guard stops gating, which is the same fail-open window as before. I treat it as a documented limitation. |
|
claude-review reviewed No findings on the incremental change (since 163aac2). What changed. The guard no longer refreshes the run marker when a command merely names a clean script. It now refreshes only when a parsed segment runs one. A segment runs a script when the script is the command word, or the first operand of a What I checked by reading (I ran no tests, so the PR's "274 checks passed" is author-claimed and unverified by me):
Minor limits, not worth blocking (judgment):
|
…upstream hook lifetime Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
pr-unblock / address-feedback finished round 1 of 3 on aa9329b. |
…marker
Pre-declare the nameref out-variables (SC2154), add a no-op default
arm (SC2249), annotate the literal '${' match (SC2016), and mark
clean-run-marker.sh executable. No behavior change.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQ9amjLiLKnwj4WGMRcofR
…sue-7333-39106103357-1
…ed upstream claim Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
pr-unblock / address-feedback finished round 2 of 3 on 724b6f3. |
|
pr-unblock / address-feedback finished round 3 of 3 on 724b6f3. |
|
The pr-unblock lane stopped on this pull request and needs a person: a review finding is uncertain or deferred, so a person decides it.
To resume, deal with the reason above, remove the gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=8168 -f activity=address-feedback |
… guard Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… main Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
pr-unblock / address-feedback finished round 4 of 3 on 6a3eef2. |
|
The pr-unblock lane stopped on this pull request and needs a person: a review finding is uncertain or deferred, so a person decides it.
To resume, deal with the reason above, remove the gh workflow run pr-unblock.yml -R melodic-software/claude-code-plugins -f pr-number=8168 -f activity=address-feedback |
The guard restarted the marker's idle clock on every Bash or PowerShell call, so ordinary calls kept a marker alive after a run that skipped its close step. Refresh it only on an acknowledged or a destructive command. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WyWcv2NwzrPQ4dChfwFjM7
…own steps A call naming one of the clean skill's mutating scripts, dry-run included, now refreshes the run marker, even a stale one, so a long dry-run or confirmation phase reaches its apply gated; ordinary calls still leave the stamp alone. State that any wrapper in front of a bash -c hides its operand, and record the verified hooks-in-skills-and-agents anchor without the process note. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WyWcv2NwzrPQ4dChfwFjM7
…ipt runs The refresh matched script basenames in the raw command, so staging, grepping or commenting on a script revived a stale marker. Match only a segment whose command word, or a shell's first operand, is the script, over hook::bash_parse_segments segments with bash -c operands re-parsed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WyWcv2NwzrPQ4dChfwFjM7
Closes #7333
Hold: a human merges this
Summary
Opened by the work-resolve-issue lane. The run's own summary:
Not verified
Fix
Verification
The run reports:
Left out: the items under Not verified.
Related
#7333