docs(docs-hygiene): fix inverted fork-mechanism attribution in audit-derivability rubric+evals#1058
Conversation
…derivability The audit-derivability spot-test told the auditor to avoid `context: fork` "because a fork inherits this context's contaminated history". That inverts the mechanism: a skill's own `context: fork` frontmatter starts blank with no access to the invoking conversation (code.claude.com/docs/en/skills, "Run skills in a subagent": "It won't have access to your conversation history"). The mechanism that actually inherits the conversation — and so carries the contamination — is the Agent tool's `fork` subagent type (code.claude.com/docs/en/sub-agents: "a fork, which inherits the parent conversation instead of starting fresh"). Re-point the contamination risk to the Agent-tool `fork` subagent type and add a tight clause distinguishing it from skill-level `context: fork`, across SKILL.md, context/rubric.md, and evals/evals.json. The fresh-context non-fork recommendation is unchanged. Patch version bump + CHANGELOG entry. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 54s —— View job PR Review — docs(docs-hygiene): fix inverted fork-mechanism attribution
SummaryThis is a targeted documentation bug fix. The old wording at three sites told auditors to avoid CorrectnessThe attribution is accurate and cross-verified against
All three corrected sites now read consistently:
CompletenessThe issue named only Version and CHANGELOG
One minor observation (not a blocker)
The phrase "never by a fork" is unambiguous in intent (it bans the Agent-tool fork type, consistent with the contamination framing in the same sentence), but a first-time reader who hasn't yet reached line 56 might wonder whether this also bans skill-level VerdictApprove. The fix is technically correct, minimal, consistent across all affected sites, and well-matched to a patch version bump. No new issues introduced. |
|
Claude finished @kyle-sexton's task in 59s —— View job Security Review — PR #1058
FindingsNo security issues found. All five changed files are purely documentation/text corrections with no executable surface:
None of the changes touch shell execution paths, workflow permissions, dependency pins, credential handling, MCP configurations, or GitHub Actions files. The The correction itself is accurate: it properly distinguishes the Agent-tool Nothing in this diff to flag. |
|
Post-green review pass (work-2 lane). CI fully green (25/25). Reviewed both bot passes — no review threads to resolve (no inline line-comments, just PR-level review/security-review reports).
Flipping this PR to ready-for-review and handing off to |
|
Claude finished @kyle-sexton's task in 1m 19s —— View job PR Review — docs(docs-hygiene): fix inverted fork-mechanism attribution
SummaryThis PR corrects a documentation error where three sites told auditors to avoid CorrectnessAll three affected sites are updated with the accurate distinction and are internally consistent: Before: After: The re-attribution is correct and the parenthetical cleanly disambiguates the two mechanisms at the exact point where a reader is being told why to avoid one. Before: After: Same correction, appropriately more detailed in the protocol step where a reader is choosing which subagent type to spawn. Both CompletenessThe fix sweeps all sites where the inverted claim appeared. The Hard Rules line at SKILL.md:111 ("never confirmed from this (contaminated) context, never by a fork") is unchanged — it is not incorrect in context, and the follow-up is already tracked as #1062. Version bump and CHANGELOG
VerdictApprove. The fix is technically accurate, minimal, and applied consistently across all three sites. No new issues introduced. |
|
Claude finished @kyle-sexton's task in 49s —— View job Security Review — PR #1058
FindingsNo security issues found. All five changed files are purely documentation/text corrections with no executable surface:
None of the changes touch shell execution paths, workflow permissions, dependency pins, credential handling, MCP configurations, or GitHub Actions files. The The correction itself is accurate: it properly distinguishes the Agent-tool Nothing in this diff to flag. |
…rk-mechanism reference (#1067) ## Summary The `audit-derivability` Hard 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's `fork` subagent 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 own `context: fork` frontmatter. 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: > …never by the Agent tool's `fork` subagent type (a skill's own `context: fork` frontmatter is unrelated — it starts blank). ## Verification Before: > - **Load-bearing or contested deletions are spot-tested by a fresh, non-fork subagent** — never confirmed from this (contaminated) context, never by a fork. After: > - **Load-bearing or contested deletions are spot-tested by a fresh, non-fork subagent** — never confirmed from this (contaminated) context, never by the Agent tool's `fork` subagent type (a skill's own `context: fork` frontmatter is unrelated — it starts blank). The Hard Rules bullet now carries the same Agent-tool-fork-vs-`context: fork` disambiguation 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 - #1062 — the deferred follow-up this addresses. - #1053 — the original inverted-fork-mechanism issue. - #1058 — the fix that added the spot-test bullet's disambiguation this now mirrors in the Hard Rules section. - #1082 — deferred follow-up (SUGGESTION, non-blocking): "opposite" vs "unrelated" wording drift between line 56 and line 111, plus the Gotchas bullet (~line 119) still lacking disambiguation. --- 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>
Summary
The
audit-derivabilityspot-test protocol told the auditor to avoidcontext: fork"because a fork inherits this context's contaminated history." That inverts the mechanism and conflates two distinct things:context: fork(a SKILL.md frontmatter setting) starts BLANK — it does not inherit the invoking conversation.forksubagent type (subagent_type: "fork") DOES inherit the parent conversation (and its model), so it is the mechanism that carries the contamination.The stated reason was inverted; the recommendation (delegate the spot-test to a fresh-context, non-fork subagent) was and remains correct.
Fix
Re-point the contamination risk to the Agent-tool
forksubagent type, and add a tight clause distinguishing it from skill-levelcontext: fork, in all three sites where the inverted claim appeared:plugins/docs-hygiene/skills/audit-derivability/SKILL.md(spot-test bullet)plugins/docs-hygiene/skills/audit-derivability/context/rubric.md(spot-test protocol, step 1)plugins/docs-hygiene/skills/audit-derivability/evals/evals.json(eval id 7:expected_output+ one expectation)The issue named only the rubric and evals; a sweep of the skill surfaced the same inverted claim in
SKILL.md, which is fixed here too so the correction is complete rather than half-applied. Includes a patch version bump (0.8.4→0.8.5) and a matching CHANGELOG entry.Verification
Confirmed the distinction against the official docs (fetched, not recited):
context: forkto your frontmatter when you want a skill to run in isolation. The skill content becomes the prompt that drives the subagent. It won't have access to your conversation history."forksubagent type explicitly."docs/PLUGIN-PHILOSOPHY.md's fresh-eyes section already carries the correct Agent-tool fork wording and was used as the phrasing model; it is intentionally not edited.evals.jsonre-validated as well-formed JSON after the edit.Closes #1053
Related
sweep-all-disciplinesPR whose independent review verified the fork-mechanism claims against the official docs and surfaced this contradiction.Authored by Claude Code (Claude Opus 4.8). Session: https://claude.ai/code/session_01Mu8bLN896ia5AeWmGPqAUv