fix(claude-config): audit-prompting-postures contract coherence - #2410
fix(claude-config): audit-prompting-postures contract coherence#2410kyle-sexton wants to merge 1 commit into
Conversation
Refs #2281 — takes CC-F3, CC-F4, CC-F5, CC-F6, CC-F7, CC-F8, CC-F10. Coherence pass: verdict vocabulary, Phase A fetch deferral + abort threshold, P7 inventory scope, output-styles boundary, P8 model condition, disallowed-tools, and audit-instructions routing. Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Claude finished @kyle-sexton's task in 1m 9s —— View job Security Review Complete
Scope reviewed: FindingsNo security issues found. This PR is a documentation/instruction-only change to a Claude Code skill ( Notable changes I looked at specifically for security implications, all benign:
No workflow files, unpinned dependencies, or permission grants were touched in this PR. |
|
Claude finished @kyle-sexton's task in 4m 52s —— View job Code ReviewReviewed the diff ( Most of the change lands cleanly: the verdict-vocabulary additions ( Two findings posted inline, both on newly-added content:
Permalinks for reference: Version bump and CHANGELOG entry are accurate and consistent with the actual changes.
|
| Sonnet 5, Claude Sonnet 4.6, Claude Sonnet 4.5, and Claude Haiku 4.5 per the guide's context- | ||
| awareness section on platform.claude.com). Proposals for other models must be NOT-APPLICABLE or | ||
| carry the same condition explicitly. | ||
| - **Present when:** the surfaced figure is accompanied by do-not-wrap-up-early framing (or the |
There was a problem hiding this comment.
🔴 Important: This "Model condition" bullet hardcodes a snapshot of the guide's context-aware model list (Claude Sonnet 5, Claude Sonnet 4.6, Claude Sonnet 4.5, and Claude Haiku 4.5) directly into the catalog.
Two things this file's own contract says should not happen:
- The file header (line 6) states: "Pointers only — wording is fetched live per SKILL.md Phase A; the recheck trigger for every row is a change to its cited section." This list isn't a pointer, it's an answer copied from the guide.
- SKILL.md's "What this skill does NOT do" section (line 165) is explicit: "Never copies guide text into its own catalog — wording comes from the run's live fetch."
Because the list is embedded rather than fetched, there's no mechanism that will catch it going stale — the "recheck trigger = change to the cited section" only works when the row holds a pointer, not a copied answer. If the guide adds another context-aware model, this row silently keeps producing incorrect NOT-APPLICABLE verdicts for that model until someone manually notices and edits this file — exactly the "prior-model-era scar tissue" class of problem audit-instructions (this same plugin) exists to catch.
Consider making the condition a pointer instead (e.g. "applies only on models the guide's context-awareness section names as context-aware — verify against a live fetch, do not assume this list is current") rather than embedding the current answer.
| argument-hint: "[scope] — scope: skills|agents|hooks|claude-md|rules|all (default: all; output-styles are out of scope — use audit-instructions)" | ||
| user-invocable: true | ||
| disable-model-invocation: false | ||
| disallowed-tools: Edit, NotebookEdit |
There was a problem hiding this comment.
🟡 Suggestion: The CHANGELOG frames this as enforcing the read-only contract "mechanically," but disallowed-tools only removes Edit and NotebookEdit from the pool. Write is still available (it has to be — Phase D's report persistence at ${CLAUDE_PLUGIN_DATA}/.../last-audit.md needs it), and so is Bash, which the skill also uses (lib/state-key.sh). Either tool can overwrite an audited component's file directly, so the mechanical guarantee is narrower than "never edits a component" (SKILL.md line 164) — it blocks the two most obvious edit paths, not all of them.
Not blocking (full mechanical enforcement of read-only against Write/Bash isn't achievable with path-scoped precision via disallowed-tools alone, and prose already carries most of the weight here), but worth either softening the CHANGELOG's "mechanically" claim or noting the residual gap explicitly in the skill's read-only contract section.
|
Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
Refs #2281 — takes CC-F3, CC-F4, CC-F5, CC-F6, CC-F7, CC-F8, CC-F10. CC-F11 (informational) remains open.
Summary
wording-unverifiedandinfooutput-stylesas out of scope (CC-F6)disallowed-tools: Edit, NotebookEditenforces read-only contract (CC-F4)audit-instructionsroutes additive posture lane here (CC-F8)Related