Skip to content

chore(knowledge): retire fable-5 guide doc-queue entry after slice completion - #1752

Merged
kyle-sexton merged 1 commit into
mainfrom
chore/docqueue-fable5-complete-thinking-enqueue
Jul 29, 2026
Merged

chore(knowledge): retire fable-5 guide doc-queue entry after slice completion#1752
kyle-sexton merged 1 commit into
mainfrom
chore/docqueue-fable5-complete-thinking-enqueue

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

Summary

  • Removes the prompting-claude-fable-5 entry from the docpage-digest Anthropic profile's doc queue — its slice completed end-to-end (fetch through interview handoff) per the queue's remove-on-completion rule.
  • Slice verification: Verifier A (same-vendor, fresh context) PASS with 3 advisories; Verifier B (cross-vendor Codex CLI 0.146.0 via the issue Restore cross-vendor Verifier B when openai/codex#32655 and #35871 are fixed (working invocation available now) #1740 elevated recipe, no degraded fallback) CORRECTION-NEEDED with 8+1 findings — all corrections applied and re-verified PASS with no new findings. Records live under the untracked slice at .work/platform-claude-com-docs-en-bui-ad459d21/verification/.
  • The two thinking docs decided by the effort-slice Q10 disposition were already enqueued as two runs in 0.10.1 and remain queued; both URLs verified live (HTTP 200, no redirect) at edit time, so this PR adds no queue entries.
  • Knowledge plugin 0.10.10.10.2 with matching CHANGELOG entry.

Verification

  • markdownlint-cli2 on both changed markdown files: 0 errors
  • check-skill.sh docpage-digest (CHECK_SKILL_SKILLS_ROOT=plugins/knowledge/skills, base origin/main): PASS (1 pre-existing soft warning: SKILL.md 223 lines vs soft target 200)
  • check-changelog-parity.sh --check-bump origin/main: PASS
  • Independent fresh-context reviewer on the diff: APPROVE, no findings (traced the changelog's claims to the slice's checklist and verification records, and re-checked both queued thinking URLs live)

🤖 Generated with Claude Code

…mpletion

The prompting-claude-fable-5 digest slice completed end-to-end (fetch through
interview handoff; Verifier A PASS, Verifier B cross-vendor corrections applied
and re-verified PASS), so its entry leaves the Anthropic profile's doc queue per
the queue's remove-on-completion rule. The two thinking docs decided by the
effort-slice disposition were already enqueued in 0.10.1 and remain queued;
both verified live at their queued URLs at edit time.

Knowledge plugin 0.10.1 -> 0.10.2 with CHANGELOG entry (changelog-parity green).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@claude

claude Bot commented Jul 29, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 1m 17s —— View job


PR Review

  • Gather context and read changed files
  • Review plugin.json version bump
  • Review CHANGELOG.md entry
  • Review anthropic-docs-profile.md queue removal
  • Check alignment with CLAUDE.md / project conventions
  • Post final findings

LGTM — no findings. This is a clean, minimal housekeeping change. All three files are internally consistent and correctly scoped.

plugin.json — version bump 0.10.10.10.2

Patch bump is the right tier: a queue entry was removed from a profile that ships inside the installed skill, but no new capability was added and no consumer interface broke. Correct.

CHANGELOG.md — new [0.10.2] entry

The entry is at the top (most-recent-first, matching the existing format), uses ### Changed (correct for a deletion from an existing resource), and accurately records:

  • The completion trigger and the remove-on-completion rule that justifies the deletion.
  • Both verifier outcomes (same-vendor PASS; cross-vendor corrections applied + re-verified PASS).
  • That the two thinking docs were already queued in 0.10.1 and remain queued — confirmed against the current profile.

anthropic-docs-profile.md — one line removed

Exactly the prompting-claude-fable-5 URL removed from "Per-model guides." The section structure is intact; the prompting-claude-sonnet-5 sibling and all other queue entries remain. Post-change queue state matches what the 0.10.1 CHANGELOG entry describes as the expected residual.

Convention checks

Check Result
Conventional Commits title (chore(knowledge): …)
Branch pattern (chore/<description>)
CHANGELOG entry paired with version bump (changelog-parity)
No hardcoded project paths / repo-agnostic
No secrets, no egress config changed
Thinking-doc URLs not re-added (already present from 0.10.1)

No issues found. Ready to merge.

@claude

claude Bot commented Jul 29, 2026

Copy link
Copy Markdown

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


Security Review — PR #1752

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

No security issues found.

The three changed files are entirely metadata and documentation:

File Change Security surface
plugin.json Version string 0.10.10.10.2 None — no code, no dependencies, no pins altered
CHANGELOG.md Added release note prose for 0.10.2 None — static text, not rendered as HTML in any execution path
anthropic-docs-profile.md Removed one platform.claude.com URL from the doc queue Net reduction of trust surface — one external URL removed, none added

Checked and ruled out: command/path/template injection, credential or token exposure, authorization changes, new external trust delegation, dependency or action pin changes, data egress risk, and dangerous GitHub Actions patterns. None are present. The diff is a queue-entry retirement with a matching version bump and changelog entry.

@kyle-sexton
kyle-sexton merged commit be78b17 into main Jul 29, 2026
29 of 30 checks passed
@kyle-sexton
kyle-sexton deleted the chore/docqueue-fable5-complete-thinking-enqueue branch July 29, 2026 18:21
kyle-sexton added a commit that referenced this pull request Jul 29, 2026
…er slice completion (#1756)

## Summary

- Removes the new-rules-of-context-engineering blog entry from the
`docpage-digest` Anthropic profile's doc queue — its slice completed
end-to-end (fetch through interview handoff) per the queue's
remove-on-completion rule.
- Channel: rendered (raw-md confirmed absent for this page — `.md` probe
404, `Accept: text/markdown` ignored — matching the profile's blog-post
channel note); `source.html` unaltered original + firecrawl 1.19.27
markdown extraction, artifacts recorded in the slice checklist.
- Slice verification: Verifier A (same-vendor, fresh context)
CORRECTION-NEEDED (1+3); Verifier B (cross-vendor Codex CLI 0.146.0 via
the issue #1740 elevated recipe, no degraded fallback) CORRECTION-NEEDED
(10+1). All findings applied; cross-vendor re-verify round 1 resolved
all 15 and surfaced 2 correction-introduced issues; round 2 REVERIFY2:
PASS. Records under
`.work/claude-com-blog-the-new-rules-o-8e418fc0/verification/`.
- Knowledge plugin `0.10.2` → `0.10.3` with matching CHANGELOG entry.

## Verification

- `markdownlint-cli2` on changed markdown: 0 errors
- `check-skill.sh docpage-digest`
(`CHECK_SKILL_SKILLS_ROOT=plugins/knowledge/skills`, base
`origin/main`): PASS (1 pre-existing soft warning, SKILL.md length)
- `check-changelog-parity.sh --check-bump origin/main`: PASS
- Independent fresh-context reviewer on the diff: APPROVE (traced the
changelog claims to the slice checklist and verification records; its
one non-blocking wording observation was applied before commit)
- Base freshness: fetched origin/main immediately before commit; zero
commits behind

## Related

- #1752 (previous doc-queue completion in this series — fable-5 guide
slice)
- #1740 (Verifier B elevated recipe used for cross-vendor verification)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Jul 29, 2026
…1544)

*This was generated by AI during work-loop execution.*

## Summary

Enables the two shell-portability-lint classes #1510 staged for this PR
— `date -d` and
`stat -c`. (The issue's third class, `mktemp -p`, went active separately
in #1543 while this
branch was open, so the token file's STAGED section is now empty.)

- **Precision fixes to the staged regexes.** The original patterns
matched `date`/`stat` as bare
substrings, so `[[ -d "$candidate" ]]` (via "can-**DATE**") and `git -c
alias.x=status -c ...`
(via "**STAT**us") false-positived. Both now require whitespace
immediately after the command
  name.
- **Extended `is_guarded()`** with a same-line `stat -c` / `stat -f`
guard requiring an actual
`||` fallback relationship, matching the rigor #1519/#1534 established
for the
  `readlink`/`realpath` guard.
- **Ran `scripts/check-shell-portability.sh --all`** per the issue's
step 4 and resolved every
  real hit from the two newly-active classes:
- `portability-ok:` annotations on already-correct dual-dialect
date/stat call sites in
`claude-ops`, `context-guard`, `kindle-dedrm`, `work-items` (most span a
line break or an
if/else block, so the same-line auto-guard cannot recognize them even
after extension);
- a genuine fix for one previously-unguarded gap: `skill-quality`'s
vendor-sync-age check had no
    BSD `date` fallback at all and silently no-op'd on macOS;
- Windows-only-script annotations for `kindle-dedrm`'s two `stat -c`
sites.
- **Pre-existing violations of already-active classes** surfaced by
touching
`skill-quality/scripts/check-skill.sh` (GNU-only `\S`/`\b` escapes in
its own `grep -qE`
  patterns) were fixed so the PR's own diff stays clean.
- Every touched plugin's version is bumped with a matching CHANGELOG
entry.

## Scanner correctness work (review rounds)

Codex review found defects in the scanner itself across several rounds.
Every one is addressed
here — all but one fixed, and that one recorded as designed behavior.
The first five:

| Reported shape | Direction | Resolution |
| --- | --- | --- |
| `stat ${x:-$((1 \| 2))} -c %s` read clean | fail-open | Fixed —
arithmetic expansion is its own mask state with per-frame paren-depth
tracking, so `$((` is no longer consumed as `$(` plus a stray `(` |
| `x=$(stat -c …) y=$(true) \|\| stat -f …` read as a guarded ladder |
fail-open | Fixed — `status_swallowed()` now establishes that the
matched frame is the *status-determining* frame of its command, rather
than excluding one neighbour shape at a time |
| `d"a"te -d …` / `st"a"t -c …` read clean | fail-open | Fixed — command
names are spelled letter-by-letter with optional quote runs between
them, since quote removal splices the word before the utility sees argv
|
| A quoted word spanning physical lines hid its option | fail-open |
Fixed — records join on an unterminated quote as they already did on a
dangling backslash, with every escape attributed to the physical line
the hit sits on |
| A utility named in a string (`echo "run date -d tomorrow"`) is
reported | false positive | **Not fixed — documented.** Recorded in the
script header as the gate's largest accepted over-flag |

On the last row: matching text the shell would treat as a string literal
is the whole mechanism
behind the regex-escape classes, where `grep -E "\bword"` lives inside
quotes and must still be
caught. Requiring command position for the option-based classes alone
needs a per-class axis in
the token data plus word-level tokenization, and every partial answer
trades this false positive
for a fail-**open** — the same trade already made and withdrawn for `--`
(see the block above
`collapse_subs()`). `portability-ok:` is the one-line escape. This is
the same decision already
taken once in this file, now written down rather than left implicit.

Two further defects were found and fixed while closing the quote-join
finding, both pre-existing:

- **Heredoc bodies leaked quote state.** A stray backquote in a
PowerShell settings body
(``"CustomRule`Path"``) opened a frame that, once joining was active,
swallowed the 57 lines
after it. Heredoc bodies are now excluded from joining — they are data,
so they can neither
continue a command nor leave a quote open — while still being scanned,
since this corpus writes
  real scripts through heredocs.
- **A `#` opening a joined physical line did not start a comment**, so a
commented-out
`|| stat -f` could excuse a hit above it. A newline now joins
`WORDSTART`.

The security-review lane then found a third, in the gate's own plumbing:
a relative
`SHELL_PORTABILITY_TOKENS` path shaped like `identifier=value` is parsed
by awk as a variable
assignment rather than opened, so no class loaded, every file reported
clean, and awk still
exited 0 — invisible to the scanner-fault check. It now gets the same
`./` disambiguation the
scanned file already had, and an empty pattern set fails closed however
it arose.

A further review round then found six more, five of them pre-existing
and one a regression from the
quote-join above. Rather than answer them one at a time — the pattern
that had been producing a
fresh variant every round — they were taken as three families and
generalized:

- **Quote spellings the token classes did not admit.** A backslash
quotes exactly as a quote pair
does, so the quote-run class is now `['"\]` in every place the command
word, the short-option
cluster and the long option are spelled — closing `da\te -d`, `date
-\d`, `date "--date"`,
`date --"date"=` and `stat --"format"=` together. `&>` / `&>>` join the
separator class after the
command name, since bash runs `date&>/dev/null -d tomorrow` with the
GNU-only option.
- **Boundaries that predate records containing a newline.** A structural
newline ends a command
inside a `$( )` frame, so it now bounds the guard's segment gap and the
lookback both guards
share. That lookback became a backward scan rather than a greedy
`.*[;|&)]` match, because
whether `.` matches a newline is an awk-implementation difference this
gate must not rest on.
**This closes the one regression the quote-join introduced**: `x=$(stat
-c …` newline
  `true) || stat -f …` had read as a guarded ladder.
- **Frames still not tracked.** A raw subshell inside a command
substitution was not pushed, so its
closing paren popped the substitution — the same unbalanced-frame
failure the arithmetic branch
fixed, one spelling over. A `)` with no frame open remains a `case`
pattern terminator.

Also in that round: a spaced redirection operand (`|| 2> /dev/null stat
-f …`) is no longer rejected
as a non-ladder, and the whole-file `portability-scope:` declaration
moved out of a grep pre-pass
into the awk program. A grep sees no shell structure, so it honored the
token inside a heredoc
**body**, where the line is generated data rather than a declaration the
file makes about itself —
one such line silently exempted a whole file.

A final round found the same quote family reached through Bash ANSI-C
(`$'…'`) and locale (`$"…"`)
quoting: `d$'a'te -d`, `date -$'d'`, `stat -$'c'`, `st$'a't -c` and
`date $"--date"=` all reach the
GNU utility while reading clean. A quote-run element is now
`(\$?['"]|\\)` — an optional `$`
before a quote, or a backslash — defined once and shared by the command
word, the short-option
cluster, the long option, and the fallback guard. A **bare** `$` is
deliberately excluded, since
`$config` is a variable expansion rather than quote removal: `validate
-d $config` stays clean and
`d$a$t$e` is not a spelling of `date`, both pinned as negatives.

Moving the scope decision into awk then turned out to have fixed only
the heredoc half of its own
problem: the check still read the raw record without asking what earlier
lines had left open, so a
physical line spelling `# portability-scope:` inside a multiline quoted
value or substitution granted
whole-file scope and suppressed every hit in the file. The marker now
counts only on a line that
also *opens* its own record — the one context where a leading `#` starts
a comment rather than being
data. A genuine declaration is unaffected, and the regression cases pin
both directions, since the
cheap fix here is one that quietly breaks the declaration it exists to
protect.

## Token-file premise correction (rode along)

The `mktemp -p` rationale comment asserted BSD/macOS mktemp "has no
`-p`". It does — FreeBSD 14.2
and Apple both document `-p tmpdir, --tmpdir[=tmpdir]`. The real hazard
is **precedence, and it
diverges silently**: GNU treats `-p` as authoritative and overrides
`TMPDIR`, while BSD/macOS
consults it only as a fallback when `TMPDIR` is unset, so the same
command writes to different
directories per platform with no error either way. The gate's *behavior*
was already correct; only
its stated reason was wrong. Carried here because this PR owns the token
file. The plugin CHANGELOG
entries that quoted the old sentence are historical and left alone.

## Test plan

- [x] `bash scripts/check-shell-portability.test.sh` — **215/215
passing**, including new
regression cases for every shape above (arithmetic-expansion frames,
sibling-substitution
status ownership, quote-spliced command words on both rungs of a ladder,
quoted words
spanning lines, per-physical-line attribution and annotation scoping,
heredoc-body
      isolation, and the joined-line comment opener).
- [x] `scripts/check-shell-portability.sh origin/main` (this PR's own
diff, 15 shell files in
      scope) — clean.
- [x] `scripts/check-shell-portability.sh --all` — **19 hits, the same
hits `origin/main`'s own
scanner reports over the same tree**, all from unrelated already-active
regex-escape classes
and none from the two newly-active ones. Every scanner change above was
held to that
comparison, so no fix introduced a false positive anywhere in the
corpus. One hit is
attributed to a different line than main reports it: this PR introduces
logical-line
joining, so a backslash-continued record is now reported at its first
physical line, as the
script header specifies. That joining is also what makes a `date` whose
`-d` sits on the
next continued line reportable at all — main reads that shape clean.
- [x] Full test suites for every touched script pass:
`morning-brief.test.sh`,
`claude-observability.test.sh`, `context-zone.test.sh`,
`statusline-tee.test.sh`,
      `lease.test.sh`, `check-skill.test.sh`.
- [x] `shellcheck --rcfile=.shellcheckrc` on every changed `.sh` file —
clean.
- [x] `scripts/validate-plugins.sh` — all manifests + catalog validate.
- [x] `scripts/check-changelog-parity.sh --check-bump origin/main` —
every version-bumped plugin
      has a matching CHANGELOG entry.

## Related

- Closes #1510.
- #1491 — original shell-portability-lint gate.
- #1543 — activated `mktemp -p`, the issue's third class, independently
of this PR.
- #1528 — the deferred `mktemp -p` migration; closed.
- #1562 — `--` end-of-options handling, which shares the word-level
tokenization the
  command-position over-flag documented above would also need.
- Rebased onto #1519 / #1534 / #1530, which merged mid-session and
changed the same
`check-shell-portability.sh` / `shell-portability-tokens.txt` files.
Merged with `origin/main`
again after #1603 / #1751 / #1752 landed; `context-zone.test.sh` takes
main's side whole, since
main replaced the unsuffixed `sed -i` this branch had annotated with a
genuinely portable form.

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Jul 31, 2026
…ry (#1868)

## Summary

The thinking-steering-and-cost platform doc slice completed, so its
entry leaves the
`docpage-digest` Anthropic profile's doc queue per the queue's
remove-on-completion rule. The
now-empty "Thinking" category heading goes with it — that category held
two overlapping docs
digested one page per run under its own contract, and the run-9 entry's
PR (#1842) removed the
first while anticipating this removal taking the heading.

Knowledge bumps 0.10.10 → 0.10.11 so consumers receive the queue change.

## Verification

Dual verification reached PASS on both arms against **identical frozen
bytes** — a SHA-256 pin of
all nine slice files, with the tree quiesced before either arm audited,
per the frozen-tree rule
this campaign adopted after a concurrent-correction race produced a
spurious MAJOR.

- **Arm B (cross-vendor, Codex)** — `VERDICT: PASS`, `FINDINGS: none`,
six checks PASS, three
  round-1 findings RESOLVED.
- **Arm A (same-vendor, fresh context, rationale withheld)** —
`REVERIFY2: PASS`, six checks PASS,
five prior findings RESOLVED, three MINORs, all record-keeping and none
touching fidelity.
Fidelity was swept mechanically: all 108 quoted spans across the six
digests are exact substrings
of the single source line each cites, 0 misses. Tag census 41
`cc-applicable` / 28 `mixed` /
  12 `api-only` = 81 rows, exactly one vocabulary tag per row.

The three MINORs were remediated after the verdicts without altering any
claim row: two stale
self-check footer records got dated "historical as of" annotations, and
the missing round-2/3
applied record was written. The slice's `interview-handoff.md` was
independently re-validated
against the corrected digest bytes by a separate agent and its five
stale items corrected.

No degraded fallback was used at any point.

Three findings from this run carry to the batched dispositions interview
rather than this PR: the
absence of any cross-digest citation-consistency check in the
verification contract, the absence of
a required applied-record artifact per correction round, and a genuine
unharmonized cross-source
tension about where a resolved effort value physically lives.

## Related

- Follows #1842 (run 9, the paired thinking doc), which removed the
first entry of this category.
- Same campaign as #1816, #1788, #1779, #1775, #1765, #1761, #1756,
#1752.

No linked issue.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Aug 1, 2026
…ge-digest queue (#1874)

The `platform.claude.com/docs/en/release-notes/system-prompts` slice
completed. It is the **last entry in the doc queue** — after this
merges, the queue section holds only the deferred task-budgets trigger
entry, which was never queued.

## What ran

The largest slice this pipeline has processed: **18 digests over a
2,548-line source, 659 claim rows, 561 `api-only`.**

- Seven correction rounds and five dual-verification rounds, each on
SHA-256-pinned bytes with the frozen-tree rule enforced — both arms
re-hash before *and* after auditing, and no correction runs while a
verifier holds the tree.
- Final state: both arms `VERDICT: PASS`, with a confirming round after
the last corrections.
- Final gates: **1,895 recorded command/count pairs replay with 0
mismatches**, 0 `<corpus>` placeholders, 659/659 rows parse with `N.
Quote (line` count equal to `- Tag:` count in all 18 digests, every
stated tally equal to its anchored `grep -c`, `check-quotes.py` clean.

## What the run found worth carrying forward

- **Narrow-slug false absences** remained the dominant defect — a basis
testing one literal while the corpus documents the same concept in other
words. Rows now disclose near-misses by name and line, each produced by
a command recorded in that row.
- **Prose is unparsed by every gate.** Summary paragraphs, Implications
bullets and Open questions carried stale counts and false statements
across several rounds; two sweeps (one whitespace-normalized with an
offset map back to physical lines) closed the class.
- **A contested tag-ordering question is escalated, not decided** —
whether selecting a positive tag requires first establishing harness
applicability. It is written up as a candidate profile amendment with
both readings, the evidence, and a recommendation, for the dispositions
interview.

Residual MINOR findings are disclosed in the slice's
`interview-handoff.md` as Open questions, per the run's stopping rule.

## What this PR changes

- Removes the system-prompts entry and the now-empty "Supplementary
references" heading from the profile's Doc queue.
- Bumps the `knowledge` plugin `0.10.13` → `0.10.14`.
- Adds the matching CHANGELOG entry.

No linked issue

## Related

- Third and final of the serialized run-11 queue PRs, after #1872
(resources overview) and #1873 (verification-loops blog). All three
touch the same profile file, so they merged one at a time.
- Completes the queue drain begun in #1752 and continued through #1756,
#1761, #1765, #1775, #1779, #1788, #1816, #1842 and #1868.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant