Promoted from kingdom-community/kfe-docs-dev-loop#46, which is being retired. That loop served three repos from one file; it has been split into one loop per repo (kfe-staff-dev-loop, kfe-server-ops-dev-loop, kfe-player-guide-dev-loop), so a rule that belongs in the template no longer has a single loop to live in.
Labelled template-rule there: the finding is general, and the fix belongs in create-dev-loop.md rather than in any one loop.
What happened
Cycle of 2026-08-29 ran Stage A (documentation accuracy sweep) against the drift introduced by 703f0c1 ("Split the regions more"), which raised lore/the-continent.md from four regions to six. Four documents downstream still asserted the old four-regions-equals-four-origins shape.
The first commit fixed two of them — lore/README.md and lore/the-four-clearings.md — and the cycle proceeded to Phase 4 believing the sweep complete. The other two, lore/origin-account-west.md:9 ("the other three regions together") and infrastructure/map-upload.md:49 ("one per region"), were caught only by the Phase 4 rubric's Sibling renames item, and were fixed in a second commit before the PR was reviewed.
The rubric did its job. The problem is that it was the last line of defence rather than a redundant one, and it caught the miss semi-accidentally.
Gap 1 — Stage A does not require a class-wide sweep once an instance is found
Neither the Stage A description in Phase 2 nor the localization steps in Phase 3 contain an instruction of the form: once a defective claim is identified, grep the whole repository for other instances of the same class of claim before committing. Phase 3's localization verification is scoped to "the files this PR intends to modify" — that is, it verifies the instances already known, and structurally cannot find the ones that are not.
For a documentation sweep this inverts the useful order. The valuable unit of work is the drift class ("documents that count regions"), not the drift instance, and a sweep that fixes two of four instances leaves the repository in a state that reads as intentional rather than as half-finished.
Suggested instruction text, for the Stage A block in Phase 2:
Sweep by class, not by instance. When drift is found in one document, treat it as a class and grep the whole repository for other documents making the same kind of claim before committing. Fixing a subset is worse than fixing none: a partially-swept repository looks deliberate and the remaining instances stop reading as drift.
Gap 2 — a single regex is a weak anchor for prose drift, and the skill treats it as a strong one
On a repository with no CI, Phase 4 designates the grounding greps as the external anchor. This cycle showed how thin that anchor is on prose.
The grep used, (three|four|five|six|each|per|every|all) (the )?regions?|regions? (people|held), matched three of the four defective lines. It did not match lore/the-four-clearings.md:9, "Four clearings, one to a region" — the single most load-bearing instance of the drift, and the one that named the mapping the whole sweep was about. It was found by reading the file.
The skill's language around the grep anchor ("record their pass/fail explicitly", "the external anchor for the rubric") implies a verdict of the kind CI gives. For a config value or a port number that is fair — the string is exact. For prose it is not: natural language has too many ways to phrase the same claim for one pattern to enumerate them, so a green grep on prose means "this phrasing is absent", never "this claim is absent".
Suggested instruction text, for the anchor discussion in Phase 4:
A grep anchor over prose is corroborating, not conclusive. A grounding grep is a strong anchor for exact strings — port numbers, env var names, service names — and a weak one for claims written in prose, which can be rephrased past any single pattern. Where the anchor is a grep over prose, say in the self-review which instances it corroborated and that it is not a complete detector, and do not let a clean grep stand in for reading the files.
Rest of the self-audit rubric
| Item |
Score |
| Identity drift |
PASS — the OMCSI anchor was unreachable and was reported UNVERIFIED rather than worked around; no lore was invented; the two placeholder regions in the-continent.md were left untouched and the decision they need was filed as kfe-docs#101 |
| Instruction clarity |
Covered by the two gaps above |
| Edge case coverage |
The unreachable-OMCSI case is already tracked in #25; the attribution-hook rejection on gh issue create is the same hook already tracked in #45 for gh pr create |
| Phase friction |
PASS — no phase needed materially more or fewer steps than described |
| External-signal quality |
Mixed, and this is Gap 2. The Phase 4 rubric caught a real partial-series miss, which is the system working. The grep standing in for CI did not, and would not have. |
This issue was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).
drafted by Claude on behalf of Daniel Stephenson
What happened
Cycle of 2026-08-29 ran Stage A (documentation accuracy sweep) against the drift introduced by
703f0c1("Split the regions more"), which raisedlore/the-continent.mdfrom four regions to six. Four documents downstream still asserted the old four-regions-equals-four-origins shape.The first commit fixed two of them —
lore/README.mdandlore/the-four-clearings.md— and the cycle proceeded to Phase 4 believing the sweep complete. The other two,lore/origin-account-west.md:9("the other three regions together") andinfrastructure/map-upload.md:49("one per region"), were caught only by the Phase 4 rubric's Sibling renames item, and were fixed in a second commit before the PR was reviewed.The rubric did its job. The problem is that it was the last line of defence rather than a redundant one, and it caught the miss semi-accidentally.
Gap 1 — Stage A does not require a class-wide sweep once an instance is found
Neither the Stage A description in Phase 2 nor the localization steps in Phase 3 contain an instruction of the form: once a defective claim is identified, grep the whole repository for other instances of the same class of claim before committing. Phase 3's localization verification is scoped to "the files this PR intends to modify" — that is, it verifies the instances already known, and structurally cannot find the ones that are not.
For a documentation sweep this inverts the useful order. The valuable unit of work is the drift class ("documents that count regions"), not the drift instance, and a sweep that fixes two of four instances leaves the repository in a state that reads as intentional rather than as half-finished.
Suggested instruction text, for the Stage A block in Phase 2:
Gap 2 — a single regex is a weak anchor for prose drift, and the skill treats it as a strong one
On a repository with no CI, Phase 4 designates the grounding greps as the external anchor. This cycle showed how thin that anchor is on prose.
The grep used,
(three|four|five|six|each|per|every|all) (the )?regions?|regions? (people|held), matched three of the four defective lines. It did not matchlore/the-four-clearings.md:9, "Four clearings, one to a region" — the single most load-bearing instance of the drift, and the one that named the mapping the whole sweep was about. It was found by reading the file.The skill's language around the grep anchor ("record their pass/fail explicitly", "the external anchor for the rubric") implies a verdict of the kind CI gives. For a config value or a port number that is fair — the string is exact. For prose it is not: natural language has too many ways to phrase the same claim for one pattern to enumerate them, so a green grep on prose means "this phrasing is absent", never "this claim is absent".
Suggested instruction text, for the anchor discussion in Phase 4:
Rest of the self-audit rubric
the-continent.mdwere left untouched and the decision they need was filed as kfe-docs#101gh issue createis the same hook already tracked in #45 forgh pr createThis issue was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).
drafted by Claude on behalf of Daniel Stephenson