docs(docs-hygiene): clarify audit-derivability Hard Rules line 111 fork-mechanism reference - #1067
Conversation
…rk-mechanism reference The Hard Rules bullet's bare "never by a fork" was technically correct (it means the Agent tool's `fork` subagent type) but read as ambiguous to a reader landing there before reaching the spot-test bullet's disambiguation. Name the mechanism inline and distinguish it from a skill's own `context: fork` frontmatter (which starts blank), matching the established phrasing so the Hard Rules section is self-contained. Patch version bump (0.8.5 -> 0.8.6) and a matching CHANGELOG entry. --- Authored by Claude Code (Claude Opus 4.8). Session: https://claude.ai/code/session_01Mu8bLN896ia5AeWmGPqAUv Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 3s —— View job PR Review — docs(docs-hygiene): clarify audit-derivability Hard Rules line 111 fork-mechanism reference
SummaryTight, well-scoped doc clarification. All three files are consistent with each other and with the rest of SKILL.md. No functional changes — purely a documentation precision fix. Approved to merge. SKILL.md — line 111Before:
After:
The disambiguation is technically correct. One minor phrasing observation: the existing spot-test bullet at line 56 uses "the opposite" ( One follow-up to consider (outside this PR's scope): the Gotchas bullet at line 119 still uses bare "non-fork subagent" without disambiguation. It's a prose summary rather than the definitive statement, so it's lower stakes, but it's the third site that could complete the trilogy. CHANGELOG.mdEntry at plugin.jsonPatch bump Overall: No blockers. The Hard Rules section is now self-contained, which is the stated goal. The minor "opposite" vs "unrelated" wording gap is worth tracking but not a reason to hold the PR. |
|
Claude finished @kyle-sexton's task in 34s —— View job Security Review
No security issues found. All three changed files are purely documentation and metadata:
There are no GitHub Actions workflow changes, no dependency pin changes, no permission widening, and no new remote resource references in this diff. Nothing here presents a security risk. |
|
Post-green review pass (work-2 lane). CI fully green. No review threads to resolve (PR-level review/security-review reports only, both approve/no-findings).
Flipping this PR to ready-for-review and handing off to |
|
Claude encountered an error after 0s —— View job I'll analyze this and get back to you. |
|
Claude encountered an error after 0s —— View job I'll analyze this and get back to you. |
|
Warning Automated security review did not complete — this is an infrastructure failure, not a review verdict. Treat any Claude comment on this PR (including a placeholder like "I'll analyze this and get back to you") as incomplete, not "no findings."
Re-running the job, or pushing a new commit, will retry the review. |
|
Warning Automated review did not complete — this is an infrastructure failure, not a review verdict. Treat any Claude comment on this PR (including a placeholder like "I'll analyze this and get back to you") as incomplete, not "no findings."
Re-running the job, or pushing a new commit, will retry the review. |
|
🔒 babysit-prs lane claiming this PR for on-branch fix work this cycle (amendment-round: 16, safe tier). Will fix clear branch-owned findings and push; will not resolve threads or merge (safe tier). |
…1311) Closes #1082 ## Summary The `audit-derivability` skill warns against confirming a deletion with a contaminated context, and names the fork mechanism at three sites in `SKILL.md`. Those three sites had drifted apart: two gave the same fact in two different voices, and the third named none of it. - **Hard Rules bullet (was line 111):** `is unrelated` → `is the opposite`. The spot-test bullet (line 56), `context/rubric.md:134`, and `evals/evals.json:84` already used "the opposite," so this bullet was the sole outlier of four sites — aligning it required no change to the other three. - **Gotchas self-grade bullet (was line ~119):** previously the one bare `non-fork subagent` mention. It now names the Agent tool's `fork` subagent type as the forbidden mechanism, which `evals/evals.json:88` already grades on. It does **not** repeat the `context: fork` explanation — a Gotchas summary restating the full disambiguation a third time would be duplication on an agent-facing surface, exactly what this plugin exists to remove. "Opposite" is also the more accurate word, verified against current official docs this session: - Agent-tool fork — "A fork inherits the full parent conversation instead of starting fresh" ([tools reference](https://code.claude.com/docs/en/tools-reference)) - Skill `context: fork` — "It won't have access to your conversation history" ([skills](https://code.claude.com/docs/en/skills)) Same word, inverse context behavior. "Unrelated" understated precisely the trap the disambiguation exists to prevent. `docs-hygiene` bumped 0.8.6 → 0.8.7 with the matching CHANGELOG entry. ## Test plan Run from the PR worktree against `origin/main`: - `scripts/check-changed-skills.sh origin/main` — PASS, 0 errors, 0 warnings; confirms all 8 base-ref trigger phrases preserved (the frontmatter `description` is untouched) and SKILL.md at 142/500 lines. - `scripts/check-skill-portability.sh origin/main` — no unexcused coupling tokens. - `scripts/check-changelog-parity.sh --check-bump origin/main` — the version bump has its `## [0.8.7]` entry. - `scripts/validate-plugins.sh` — all plugin manifests and the catalog validate. - `markdownlint-cli2 --config .markdownlint-cli2.jsonc "plugins/docs-hygiene/**/*.md"` — 36 files, 0 errors. - `scripts/check-silent-skips.sh`, `scripts/check-skill-leaf-names.sh` — clean. No behavioral surface changes: prose only, plus the version/CHANGELOG pair. ## Related - #1082 — the item this closes; a review-deferral from PR #1067, itself a follow-up to #1062 / #1058 / #1053, which is the lineage that produced the two-voice drift. - #1268 — touches a related "fork inherits degraded history" claim in a **different** plugin. Deliberately out of scope here; this PR stays inside `plugins/docs-hygiene/skills/audit-derivability/`. - #1317 — deferred review finding from this PR (Codex, P2), classified VALID (defer). #1258 reports the Agent tool's `fork` subagent type NOT inheriting the conversation at runtime, against its documentation, which would make "the opposite" an overclaim at all four sites. Deferred because a partial hedge reintroduces exactly the drift #1082 removes, one of the four sites is a graded `evals.json` criterion rather than prose, and #1258 is itself unreduced and `needs-human`. The Hard Rule is unaffected — "never fork for the spot-test" holds under either branch. - `context/rubric.md` and `evals/evals.json` were read as the tie-breaker for which phrasing is canonical, and are intentionally **not** modified — they already carry the winning wording. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01NE8W4XPPVfZVCGBW2GYgyH Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Summary
The
audit-derivabilityHard Rules bullet read "…never confirmed from this (contaminated) context, never by a fork." That bare "a fork" was technically correct — it means the Agent tool'sforksubagent type — but a reader landing in the Hard Rules section first (via search or a partial read) had no local disambiguation and could wonder whether it also bans a skill's owncontext: forkfrontmatter. This makes the bullet self-contained.Fix
Name the mechanism inline and distinguish it from skill-level
context: fork, matching the phrasing already established in the spot-test bullet (added in #1058), so the two clarifications read as one consistent voice:Verification
Before:
After:
The Hard Rules bullet now carries the same Agent-tool-fork-vs-
context: forkdisambiguation as the spot-test bullet, so it no longer depends on the reader having reached that earlier line. Patch version bump (0.8.5→0.8.6) with a matching CHANGELOG entry.Closes #1062
Related
Authored by Claude Code (Claude Opus 4.8). Session: https://claude.ai/code/session_01Mu8bLN896ia5AeWmGPqAUv