Correct stale CI scope, command surface, and repo owner in the docs - #107
Conversation
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Self-review rubric — scored adversarially against the diff and command output, not judgment. Universal items
Repo-specific items
Findings raised One nit was found and fixed during this pass rather than left: the first edit to Two judgment calls are recorded for a human rather than silently resolved. First, Anchor disclosure Manual validation ( This review was posted as a plain PR comment rather than a formal Review object, and was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener). |
Summary
A Stage A documentation-accuracy sweep was run across every documentation source of
truth listed in
CLAUDE.md. Four stale claims were found and corrected; two defectsthat live in
create-dev-loop.md's behavior or in agent-loaded configuration werefiled rather than changed here.
CI scope was understated in two places.
.github/workflows/ci.ymlruns two steps —scripts/check_docs.pyandpython3 -m unittest discover -s tests. BothCONTRIBUTING.mdand.github/PULL_REQUEST_TEMPLATE.mddescribed only the first,so a contributor changing
scripts/check_docs.pywas never told thattests/test_check_docs.pyexists and needs new cases.CLAUDE.mdalready documentsthe unit tests, and its documentation-sources table requires the PR template's
test-plan guidance to "match the current CI scope" and
CONTRIBUTING.md's validationchecklist to match
CLAUDE.md— both rows were out of date. The phrase "catches docdrift, not behavior" was also sharpened to "not the template's behavior", since the
suite does test
check_docs.py's own behavior.SECURITY.mdnamed only two of the four places a target-repo-derived command isexecuted. The trust model stated that
COMPILE_CMD/TEST_CMD/LINT_CMD/EXTERNAL_SIGNAL_CMDrun "in its Phase 3 build-verification step and its Phase 4external-signal anchor".
{{TEST_CMD}}is also substituted into the Phase 8post-rebase fence of the generated template, and
{{REVALIDATE_INSTRUCTION}}— derivedfrom the same target-repo sources — points Phase 6 at that same check after every
review fix. Under-counting the execution surface understates the blast radius the
document exists to describe.
Both repositories referenced by
README.mdhave moved to theStephenson-Softwareorganization.
gh repo viewresolves this repository asStephenson-Software/create-dev-loopanddmccoystephenson/gardenerasStephenson-Software/gardener. The CI badge and thegardenerlink were updated tothe canonical owner. They resolved before only via GitHub's owner redirect, which would
silently point at the wrong project if a repository were ever created at the old path.
The two remaining
dmccoystephensonlinks, inSECURITY.mdandCODE_OF_CONDUCT.md,point at the maintainer's personal profile and are correct as written; they were left
alone.
RESEARCH.md's "Last reviewed" date was bumped to 2026-08-04, matching theprecedent set by the sweep in PR #82. All eight findings, their confidence levels, and
their Implementations entries were re-checked and are accurate. Every one of the
17 arXiv citations plus the METR, Chroma, and Anthropic links was fetched and returned
200. Theopenai.comcitation returns403— a WAF block against a non-browserclient, not a dead link, consistent with what PR #102 independently found. The PRs
merged since the last review (#89, #93, #95, #102, #103) each state in their own
descriptions that no finding applies, so no Implementations entry is missing.
Filed rather than fixed
Per the Stage A rule that a defect in behavior is filed and left for an implementation
cycle rather than changed silently under a docs-only PR:
create-dev-loop.mdnames only.github/pull_request_template.md.The uppercase spelling used by this very repository would be skipped silently on a
case-sensitive filesystem, despite
SECURITY.mddocumenting the PR template assomething Step 2 reads.
CLAUDE.mdline 26 still linksgardenerunder the old owner. It was leftuntouched because agent-loaded configuration requires separate, explicit
authorization to edit.
Deferred backlog
Issue #87 was the only open issue at triage time and was not selected. A prior cycle
deliberately left it open, and its comment records why: the fix is an edit to a
generated skill file, which this loop is not authorized to make autonomously. The
underlying gap is tracked at its proper home as
cdl-dev-loop#14.Research grounding
No
RESEARCH.mdfinding applies. This PR changes no phase definition, no placeholder,no Step, and no template logic — it corrects factual claims in the supporting docs
about CI scope, command-execution surface, and repository ownership. Per
CLAUDE.md'sresearch-grounding rule, that is stated explicitly rather than a citation being
stretched to fit.
Doc sync check
README.md's "What it does" Step list still matchescreate-dev-loop.md's Steps 1:1 — no Step was added, removed, or renumbered; verified mechanically byscripts/check_docs.py{{placeholder}}added or changed has a corresponding Step 4 substitution-table row — no placeholder was touched; verified mechanicallyRESEARCH.mdupdated — review date only, per aboveTest plan
python3 scripts/check_docs.py→Doc consistency check passed.python3 -m unittest discover -s tests→Ran 13 tests/OK*.mdfetched; all200except the two known WAF403s (claude.ai/code,openai.com) and one$OWNERplaceholder inside a Step 7 code example.github/workflows/ci.ymlfor the CI scope, the Phase 3 / 4 / 6 / 8 substitution sites increate-dev-loop.mdfor the command surface,gh repo viewfor both repository owners/create-dev-loopagainst a real repo) — UNVERIFIED-not-applicable. The generated-skill anchor is required only when the PR changes the embedded template, the Step 4 substitution table, or Step 1/5–7 logic. This PR touches none of them: no file undercreate-dev-loop.mdis modified at all. CI is the operative anchor here and covers every changed file.This PR description was drafted during a Gardener session (https://github.com/Stephenson-Software/gardener).