Skip to content

docs(docs-hygiene): clarify audit-derivability Hard Rules line 111 fork-mechanism reference - #1067

Merged
kyle-sexton merged 1 commit into
mainfrom
docs/1062-hard-rules-fork-clarity
Jul 23, 2026
Merged

docs(docs-hygiene): clarify audit-derivability Hard Rules line 111 fork-mechanism reference#1067
kyle-sexton merged 1 commit into
mainfrom
docs/1062-hard-rules-fork-clarity

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

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.50.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

…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>
@kyle-sexton kyle-sexton added the automated Opened by automation. label Jul 22, 2026
@claude

claude Bot commented Jul 22, 2026

Copy link
Copy Markdown

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

  • Gather context and read changed files
  • Review SKILL.md clarification for correctness and consistency
  • Review CHANGELOG.md entry
  • Review plugin.json version bump

Summary

Tight, 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 111

Before:

…never confirmed from this (contaminated) context, never by a fork.

After:

…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 disambiguation is technically correct. One minor phrasing observation: the existing spot-test bullet at line 56 uses "the opposite" (a skill's own \context: fork` frontmatter is the opposite: it starts blank`), while the new Hard Rules bullet uses "unrelated". Both are accurate, but they aren't literally the same voice the PR description claims to mirror. This is a low-severity observation — "unrelated" is defensible and arguably more precise in the terse Hard Rules register.

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.md

Entry at [0.8.6] follows the established format (heading → ### Fixed → bullet), is clearly scoped, and accurately describes what changed and why. No issues.

plugin.json

Patch bump 0.8.5 → 0.8.6 is the correct semver classification for a documentation clarification with no behavioral change.


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

claude Bot commented Jul 22, 2026

Copy link
Copy Markdown

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


Security Review

  • Gather context and read changed files
  • Analyze changed files for security issues
  • Post findings

No security issues found.

All three changed files are purely documentation and metadata:

  • plugin.json — patch version bump (0.8.50.8.6), no executable content, no dependency changes, no permission changes.
  • CHANGELOG.md — prose changelog entry, no executable content.
  • SKILL.md — a single-line clarification to a Hard Rules bullet. The change adds explanatory prose; no code paths, no shell expansion surfaces, no secrets, no injection surfaces introduced.

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.

@kyle-sexton

Copy link
Copy Markdown
Contributor Author

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).

Finding Classification Action
Overall fork-mechanism clarification at line 111 VALID, addressed Approved by review bot
Security review No findings N/A
"opposite" (line 56) vs "unrelated" (line 111) wording drift VALID, non-blocking (SUGGESTION-tier) Deferred — filed #1082
Gotchas bullet (~line 119) still bare "non-fork subagent" VALID, non-blocking (SUGGESTION-tier) Deferred — filed #1082

Flipping this PR to ready-for-review and handing off to /source-control:babysit-prs for ongoing watch.

@kyle-sexton
kyle-sexton marked this pull request as ready for review July 22, 2026 21:32
@claude

claude Bot commented Jul 22, 2026

Copy link
Copy Markdown

Claude encountered an error after 0s —— View job


I'll analyze this and get back to you.

@claude

claude Bot commented Jul 22, 2026

Copy link
Copy Markdown

Claude encountered an error after 0s —— View job


I'll analyze this and get back to you.

@github-actions

Copy link
Copy Markdown

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.

@github-actions

Copy link
Copy Markdown

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.

@kyle-sexton

Copy link
Copy Markdown
Contributor Author

🔒 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).

@kyle-sexton
kyle-sexton merged commit b29c3ea into main Jul 23, 2026
30 of 31 checks passed
@kyle-sexton
kyle-sexton deleted the docs/1062-hard-rules-fork-clarity branch July 23, 2026 09:08
kyle-sexton added a commit that referenced this pull request Jul 25, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated Opened by automation.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs(docs-hygiene): audit-derivability SKILL.md Hard Rules line 111 'never by a fork' reads ambiguous without line 56's context

1 participant