Repository navigation
docs(corpus): advance the corpus submodule to the corpus's served head, and regenerate the site - #203
Merged
Conversation
…d, and regenerate the site The `marketplace` submodule advances from 5feb9c8b8350849fd2d46d252b486844c18bd0a4 to 197f42a57ab88fcaed6a044bf312d753a72062b2 — the head opencharly/marketplace's `main` serves, one commit above its tag v2026.302.0622 because tag-on-merge writes CHANGELOG/ after the tag. The four regenerated pages are the projection of exactly the corpus bodies that the refresh changed (opencharly/marketplace#599), so the bump and the pages are one change. RCA. Mechanism: the corpus repo's daily refresh advances `main`, and this repo's submodule gitlink did not move with it — the pinned corpus was 8 commits behind. Missed control: the pin-currency comparison against the corpus's `main`. This repo REPORTS each pinned input's currency and never fails on it, because the remedy for a stale pin is a regeneration PR that bumps the pin — and the drift gate cannot see a stale pin at all, by construction: the PINNED sources regenerate their own (old) pages perfectly, so the gate stays green over a corpus that is no longer the published one. Blast radius: the site's recipe pages project a corpus that is behind the published corpus, and nothing in the tree says so. Root fix: bump the submodule and carry the REGENERATED pages in the same change — the regeneration is what proves the bump is coherent, since a stale submodule plus pages generated from the new corpus would drift. One symptom was visible in the tree: the published page still taught the corpus's drift gate's OLD instrument — "including UNTRACKED regenerated files (`git status --porcelain`, not just `git diff --exit-code`)" — which the corpus's own projection had already corrected (opencharly/plugin-marketplace#56 tracks that sentence). The regenerated page now carries the corpus's corrected text. The baseline was measured first: a regeneration at the OLD pin is a byte-exact no-op against the committed tree (diff -rq = 0 over the whole content tree, 1726 generated pages cleared and rewritten), so this diff is attributable to the corpus bump alone. Closes #201 Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
Review — PASSI re-derived every claim in the body against the complete diff, the commit list, and the (empty) comment thread. Correctness
Honesty
Tests
Security
Scope & cleanliness
Comments
No blocking findings. The change is internally consistent, matches its diff line-for-line, and the self-disclosed out-of-scope item is filed rather than folded in. Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
This was referenced Oct 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #201
Summary
Head
27ab818daa661629f7ae103958fb69858152b031— the commit this PR pushes. 5 files changed, 112 insertions(+), 17 deletions(-): themarketplacesubmodule gitlink (1 file, +1 −1) and the four generated recipe pages the corpus projects (4 files, +111 −16).The site stops projecting a corpus that is eight commits behind the published one. This repo's
marketplacesubmodule advanced5feb9c8b8350849fd2d46d252b486844c18bd0a4→197f42a57ab88fcaed6a044bf312d753a72062b2— the head opencharly/marketplace's mergedmainserves. It is one commit above that repo's tagv2026.302.0622because tag-on-merge writesCHANGELOG/after the tag, so the pin names whatmainserves, not the tag and not the merge commit.The four pages are the projection of exactly the four corpus bodies that changed. The corpus's own diff between the two pins touches four
SKILL.mdbodies and nothing else that this site projects:and the site's four changed pages are those four bodies, one for one:
internals/skills/marketplace/SKILL.mdrecipes/internals/marketplace.mdinternals/skills/plugin/references/authoring-recipes.mdrecipes/internals/plugin/authoring-recipes.mdkubevirt/skills/kubevirt/SKILL.mdrecipes/kubevirt/kubevirt.mdtools/skills/docs-site/SKILL.mdrecipes/tools/docs-site.mdOne symptom was visible in the published tree, and it is now gone. The page still taught the corpus drift gate's OLD instrument — "including UNTRACKED regenerated files (
git status --porcelain, not justgit diff --exit-code)". That command aborts on the refresh job's own tree, because the refresh stages its regenerated corpus on purpose. The corpus's own copy of the same body had already been corrected (opencharly/marketplace#599), and the site now carries the corrected text — the third and last surface of opencharly/plugin-marketplace#56.How tested
1 — the baseline: a regeneration at the OLD pin is a byte-exact no-op. This is what makes the diff attributable to the corpus bump alone, and it was measured BEFORE the bump.
The toolchain is CI's:
plugin-docsv2026.289.0814built fromcmd/serve, charly at this repo'sCHARLY_PINbe7a505f476c1a5b0302d878e0b5686a2cde3e07, the umbrella at itsUMBRELLA_PIN1c88fcf15f8fb9dd8b2814210472a63d3a79d0e2, the corpus at this repo's own submodule pin5feb9c8b.2 — the regeneration at the NEW pin, on the committed tree.
3 — the drift gate, and its own fixtures. The gate is the repo's:
.github/docs-corpus/check_drift.sh, which compares the committed pages with what the PINNED inputs regenerate, untracked files included.4 — the pin-currency report. This repo reports each pinned input's currency and never fails on it, because the remedy for a stale pin is a regeneration PR that bumps the pin, not a gate that fails.
The corpus pin is
curafter this change — it was 8 commits behind before it. The charly pin isbehindby 2 commits and is a DIFFERENT pin class with its own producer; it is filed as #202, below.5 — the rest of this repo's own workflow gates, on the committed tree.
Every gate exits 0, with zero warnings.
6 — the site itself builds, under the node version this repo pins (
.node-version22.23.4):7 — the R5 sweep, keyed on the retired text itself. The claim is that the published site no longer teaches the gate's old instrument.
The only surviving hit is the corrected NEGATION — the page now explains why the gate does not use that command.
Rulebook compliance
/charly-build:docs(thecharly docs generateverb, this repo's generation workflow and the drift-gate recipe),/charly-tools:docs-site(the Astro/Starlight candy and the site's build),/charly-internals:git-workflow(the pin contract, the PR body's form and the landing rules),/charly-internals:strict-policy(the discipline rules this change is judged by) and/charly-internals:root-cause-analyzer(the RCA the filed finding carries). This repo's ownAGENTS.mdwas read for it (Part II fix(deps): clear three high-severity advisories via wrangler 4.118.0 #4).main; this repo's submodule gitlink is advanced only by a manual regeneration PR), the missed control (the pin-currency comparison against the corpus's mergedmain— which exists and REPORTS, and which this change brings back tocur), the blast radius (the site's recipe pages projected a corpus that is no longer the published one, and one of them taught an instrument that aborts on the refresh's own tree) and the root fix (this PR: the gitlink advanced and the REGENERATED pages carried in the same change, since a stale submodule plus pages generated from the new corpus would drift). One further finding is separable by construction and is FILED: the charly CI-time pin is 2 commits behind charly's mergedmain— a different pin class with its own producer and its own remedy — in the pinned charly CI-time commit is behind charly's merged main — the drift gate cannot see it #202, with its own RCA.mainhead and the pages came out of the generator.git status --porcelain) — the gate is now scripts/drift-gate.sh and does NOT compare the index with HEAD plugin-marketplace#56). This PR points the projection at them and regenerates; it does not restate their rules in prose of its own..worktrees/docs-refresh/docs— a clone of this repo alone — onfeat/marketplace-submodule-bump, branched from this repo's freshorigin/main(674bf53). The tree's status was empty before the change and is empty after it. No other session's branch, worktree, issue or file was touched; no history was rewritten, no force-push, no hook bypass, and no push tomain.plugin-docsCLI built from the tag this repo's own workflow pins (v2026.289.0814), from its own source, in this session — not a shared install.disposable: truetarget.marketplace/was touched.mainserves — through this repo's own committed gitlink, never by a hand-pin or a branch checkout; the currency question was asked with this repo's own report, and the corpus's answer iscur.AGENTS.mdwas read before any change here.STATUSis posted on it at each milestone. The separable finding was filed as the pinned charly CI-time commit is behind charly's merged main — the drift gate cannot see it #202, with aSTATUSrecording that it is not claimed by this session.Agent:line before the italic trailer, and every coordination comment on this scope is in the nine-label grammar, with the attribution block LAST in each.STATUScomment lands on the marketplace submodule is pinned behind the corpus's served head — the recipe pages are generated from an old corpus #201 at each milestone.Change classification
marketplacesubmodule gitlink this repo records) plus the generated recipe pages that pin projects. The pin carries CONTENT — the corpus bodies the site'srecipes/**pages are generated from — so this is not the documentation-only class, and the tier is a runtime tier.marketplacegitlink (1 file, +1 −1) and the four generated recipe pages (+111 −16).content: committed tree matches the pinned inputs), the pin-currency report, the dependency-advisory gate with its self-test and its mutation harness, the step-deadline gate with its self-test and its mutation harness, the pin-currency fixtures and the Astro build — every step, zero failures, zero warnings.fully tested and validated— the change-class gate passed on the final tree, and the changed path (the generator, run against the real pinned inputs) was executed live, with the "before" retained as a byte-exact no-op.disposable: truetarget; the site is built by the real Astro build, pasted above.Filed issues
main:be7a505f476c1a5b0302d878e0b5686a2cde3e07is 2 commits behind1637a5e43380550b68d53b2e1167e0628768cd52, and the two commits it misses are not changelog noise (ab38dff1 chore(deps): adopt spec v0.2026302.327and its changelog commit). The mechanism (this repo'sCHARLY_PINis advanced only by a manual regeneration PR, so it drifts apart at every charly release), the missed control (none is missing — the pin-currency report exists and names this state asbehind, "an advance available NOW"; what was missing is a reader who acts on it, because the report is a step summary line), the blast radius (the site'sreference/**half is generated from a charly source tree that charly has moved past, so the published catalog, the provider words and the candy pages describe an older charly than the one in use) and the root fix (a regeneration PR that advancesCHARLY_PINand carries the regenerated pages in the same change — the regeneration is what proves the bump is coherent) are on that issue, with the measured evidence. Not blocking here: it is a different pin class with its own producer and its own remedy, and this change's claim is about the corpus pin, which iscurafter it. Separable by construction; it pre-dates this change; it is filed, not folded in.Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)