Skip to content

fix(claude-config): state the lane report write rule and the unattended dispatch gate in audit-instructions - #4121

Merged
kyle-sexton merged 10 commits into
mainfrom
claude/config-audit-instructions-mi6d1n
Sep 12, 2026
Merged

fix(claude-config): state the lane report write rule and the unattended dispatch gate in audit-instructions#4121
kyle-sexton merged 10 commits into
mainfrom
claude/config-audit-instructions-mi6d1n

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Closes #4117

Summary

Two sentence-level fixes to plugins/claude-config/skills/audit-instructions/SKILL.md Phase B, with the claude-config manifest bumped to 0.43.2 and a release entry. A full run of the skill over this marketplace hit both gaps: a lane's shell redirect to a variable-carried scratchpad path was blocked by the guardrails block-hook-bypass guard, and the ~20-dispatch confirmation was crossed silently because the session was unattended and the skill body says nothing about that case.

The interview Brief for the parent work (#4113) rode this branch as a contract slice and was pruned per the topic-docs contract-slice lifecycle. Its graduation target is the tracker: #4113 carries the Brief in full. Pre-prune commit: 92e58ee26f6156d62c84bd94ffddb2c42bae805b (docs/topics/audit-instructions-improvements/PLAN.md).

Fix

  • Phase B states that a lane persisting its report writes it with the Write tool, which the guard exempts by design, never through a variable-carried shell redirect or inline Python; a shell redirect to a literal absolute temp-tree path is exempt only when CLAUDE_PROJECT_DIR names a project root outside a temp tree, so a temp-rooted checkout uses the Write tool. The paragraph carries the four-part verification record (basis, as-of date, recheck trigger) the skill-body rule requires for a restated cross-plugin behavior.
  • Phase B states that when the caller has declared the run unattended (in the invocation text), the ~20-dispatch gate becomes a cost-line disclosure of planned and actual dispatch counts, and that an invocation with no declaration is attended. The explicit --unattended flag lands with audit-instructions: token-budgeted lanes, --unattended, and --resume over per-lane run files #4114.
  • Phase D's cost-line definition now lists the dispatch count and whether the confirmation was asked or disclosed, so the Phase B reference has a report field that satisfies it (review finding).
  • plugins/claude-config/.claude-plugin/plugin.json moves to 0.43.2 and CHANGELOG.md gains the ## [0.43.2] entry, as the changelog-parity bump gate requires for any shipped-file change. (main took 0.42.4, 0.42.5, 0.43.0 and 0.43.1 for unrelated changes while this PR was open; each merge of main moved this entry above them.)
  • Merged main four times: once when the stale-base gate flagged an overlap on the same skill file, and three times to resolve changelog version collisions. The new paragraphs are unaffected by any of them; every collision was confined to the manifest version line and the changelog heading.

Verification

  • scripts/affected-tests.sh --run: 26 selected suites passed on the first head; on later heads every changed file is a recorded no-suite class.
  • scripts/check-changelog-parity.sh --check-bump origin/main, --check, and --check-preserved origin/main: all pass (132 headings preserved).
  • scripts/check-stale-base-overlap.sh --check origin/main: up to date.
  • scripts/check-contract-slice-prune.sh --check-diff origin/main: passed, no path lands under docs/topics/.
  • markdownlint-cli2 on the skill body and the changelog: 0 issues; no em dashes in the skill body.
  • Register gate on the interview ledger with the Brief: registered=21 open=0 deferred=0 blocked=0 brief=ok status=clean.
  • Security review lane: no security-relevant surface. Code review lane and Codex: five threads, all addressed in 37169d5 and resolved.

Related

🤖 Generated with Claude Code

https://claude.ai/code/session_018BbBumpSdSdv4xNv6ibrf2

…ed dispatch gate in audit-instructions

Phase B now tells lanes to persist reports with the Write tool or to a
literal absolute path under the host temp tree, never through a
variable-carried shell redirect or inline Python, because the guardrails
block-hook-bypass guard blocks the forms it cannot resolve. It also states
what an unattended run does at the ~20-dispatch confirmation: proceed and
disclose planned and actual dispatch counts in the Phase D cost line, with
the unattended declaration coming from the caller, never inferred.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BbBumpSdSdv4xNv6ibrf2
The interview contract for the audit-instructions execution model, scanner
calibration, report contract, and environment-fit work: goal, constraints,
acceptance criteria, captured assumptions, and out-of-scope, with the Plan
section left empty for /planning:plan.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BbBumpSdSdv4xNv6ibrf2
The Brief graduated to the work-item tracker: the parent issue #4113
carries it in full, and the pull request body names the pre-prune commit
per the topic-docs contract-slice lifecycle. The register ledger and a
memory-slice copy stay under .work/, which is not tracked.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BbBumpSdSdv4xNv6ibrf2
… B wording

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BbBumpSdSdv4xNv6ibrf2
@kyle-sexton
kyle-sexton marked this pull request as ready for review September 12, 2026 02:17
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 12, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-12T02:21:59.156634Z e3b0c48 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@claude

claude Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 4m 20s —— View job


Code review complete

  • Gather context (PR diff, CLAUDE.md, /review:code-review skill instructions)
  • Apply skip gate checks (PR open, not draft, meaningful review surface, no prior review on this head)
  • Review changed files against code-review criteria
  • Post findings (3 inline comments)

Summary

Reviewed the 3 changed files: plugin.json (version bump, matches CHANGELOG), CHANGELOG.md (new [0.42.4] entry, format consistent with prior entries), and skills/audit-instructions/SKILL.md (the two new Phase B paragraphs). The version bump and changelog entry are consistent with each other and with the diff.

The two new instructional paragraphs in Phase B (SKILL.md lines 220-230) restate mechanics of another plugin (guardrails' block-hook-bypass guard) and reference a not-yet-existing Phase D disclosure and an undefined caller-declaration mechanism. I traced each restated claim against its actual source (the guardrails hook implementation and its README, and this file's own Phase D and Arguments sections) and posted 3 inline findings where the restatement is incomplete or the referenced mechanism doesn't exist yet in this file:

  1. Line 223 — the unattended fallback says to let "the Phase D cost line disclose the planned and actual dispatch counts," but Phase D's cost-line contract (lines 302-306, untouched by this PR) doesn't mention dispatch counts at all. The disclosure this sentence promises has nowhere to land yet.
  2. Line 228 — "a literal absolute path under the host temp tree" omits block-hook-bypass's actual precondition (a known, non-temp-rooted CLAUDE_PROJECT_DIR), verified against the guard's implementation and plugins/guardrails/README.md. Without that precondition, the same guard still blocks the path this instruction recommends.
  3. Line 222 — "the caller has declared the run unattended" has no defined declaration channel in this skill (no --unattended in argument-hint or Arguments), unlike sibling skills that spell this out explicitly. Per the PR description the flag lands with audit-instructions: token-budgeted lanes, --unattended, and --resume over per-lane run files #4114, so this is likely deliberate sequencing, but it's worth flagging since the branch is currently unreachable by any documented signal.

No security-relevant findings (out of scope for this lane per REVIEW.md/gotchas). Findings are docs/instruction-accuracy issues, not implementation bugs — nothing here blocks on functionality since this is a text-only skill-body change.

Branch |

@claude

claude Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Claude finished @kyle-sexton's task in 38s —— View job


Security review — /review:security-review

  • Gather context (diff via gh pr diff, read changed files)
  • Apply skip gate
  • Report result

Skip gate: no security-relevant surface. All three changed files are documentation/metadata only:

  • plugins/claude-config/skills/audit-instructions/SKILL.md — two prose paragraphs added to Phase B (report-write rule pointing at the Write tool / literal absolute temp path, and the unattended-run dispatch-confirmation gate).
  • plugins/claude-config/.claude-plugin/plugin.json — version bump 0.42.30.42.4.
  • plugins/claude-config/CHANGELOG.md — corresponding changelog entry.

No code paths, authorization logic, injection surfaces, secret handling, or GitHub Actions configuration are touched. Per this lane's skip gate, no further review is warranted — no findings to report.

@github-actions

Copy link
Copy Markdown
Contributor

Last security-reviewed head: e3b0c482dbe380861ec52c662ff52d1958669973. On the next push, the relevance gate compares only the commits since this SHA; delete this comment to force a full re-review.

Comment thread plugins/claude-config/skills/audit-instructions/SKILL.md
Comment thread plugins/claude-config/skills/audit-instructions/SKILL.md Outdated
Comment thread plugins/claude-config/skills/audit-instructions/SKILL.md

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e3b0c482db

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread plugins/claude-config/skills/audit-instructions/SKILL.md Outdated
Comment thread plugins/claude-config/skills/audit-instructions/SKILL.md Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count.

… D cost line and state the temp-tree exemption's precondition

The Phase D cost-line definition now lists the planned and actual dispatch
count and whether the ~20-dispatch confirmation was asked or disclosed, so
the Phase B unattended path has a place in the report that satisfies it.
The unattended declaration is named as invocation text. The lane report
write rule states that the guard's temp-tree exemption applies only when
CLAUDE_PROJECT_DIR names a project root outside a temp tree, so a
temp-rooted checkout uses the Write tool, and carries the four-part
verification record the skill-body rule requires for a restated
cross-plugin behavior.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BbBumpSdSdv4xNv6ibrf2
…nstructions-mi6d1n

main took claude-config 0.42.4 for the audit-pass exclusion-set wording,
so the audit-instructions Phase B entry moves to 0.42.5.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BbBumpSdSdv4xNv6ibrf2
…nstructions-mi6d1n

main took claude-config 0.42.5 for the docs path rename, so the
audit-instructions Phase B entry moves to 0.42.6.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018BbBumpSdSdv4xNv6ibrf2
…nstructions-mi6d1n

# Conflicts:
#	plugins/claude-config/.claude-plugin/plugin.json
#	plugins/claude-config/CHANGELOG.md
@kyle-sexton
kyle-sexton merged commit 216fef2 into main Sep 12, 2026
18 checks passed
@kyle-sexton
kyle-sexton deleted the claude/config-audit-instructions-mi6d1n branch September 12, 2026 14:54
kyle-sexton pushed a commit that referenced this pull request Sep 12, 2026
Main landed a third claude-config change (#4121), which published 0.43.2, the
version this branch had renumbered to after the previous collision. Same race
as before: the bump is chosen at authoring time from whatever main showed then.

Renumbered this branch's entry to 0.44.0, a minor because P4's detector
behavior changes, and placed it above main's 0.43.2, which is preserved
unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013G9e6TtA2P5wVWRaaGT2ER
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.

audit-instructions: lane reports are written with the Write tool or a literal scratch path; unattended runs disclose the dispatch gate

2 participants