Repository navigation
docs(corpus): advance the corpus submodule to the corpus that carries the armed ! marker rule (#209) - #210
Conversation
… the armed `!` marker rule (#209) The corpus's served head moves to the commit that carries the marker rule's ARMED linter — the corpus's own PR opencharly/marketplace#607 -> #608, tagged v2026.302.1755. The corpus's diff between this repo's recorded pin and the served head carries two AUTHORED bodies: the umbrella's own general-guidance skills (cutover-policy and git-workflow), republished from the umbrella's tag v2026.302.1338 (opencharly/opencharly#805). Those bodies project into this site's recipes/internals/** pages, and those pages are regenerated here. The pin follows the SERVED HEAD, not the tag: the corpus's tag-on-merge workflow writes its CHANGELOG after the tag, so the tag names the squash one commit below the head its main serves. Closes #209 Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
|
STATUS — the corpus-pin consumer leg is open. Agent: charly · session Head. Done. The scope was derived from the producer's own report ( Next. Read every comment and the validator's full report on this PR; fix every finding in ONE appended commit per round; land through the protected merge; then close the issue by hand and post Next update. When the validator's verdict lands, or at the next milestone. Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated) |
Review — PASSI re-derived every claim in the body and the STATUS comment against the current diff, commit list, and comment thread. No shell was needed; the state provided is complete for this change class (a submodule-pin bump plus the generated pages it projects). What I checkedCorrectness / internal consistency
Body honesty
Tests
Security
Scope & cleanliness
Comments
BlocksNone. The change is internally consistent, correctly scoped, evidence-backed for its class, free of security or link defects, and stands on its own without a maintainer sign-off. Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
Summary
Closes #209
Head
6f1871c54777069f4802dc69350008b57067b312— the commit this PR pushes: 3 files changed, 15 insertions(+), 1 deletion(-)This repo's
marketplacesubmodule — the guidance corpus the site'srecipes/**pages project — advances75e1d4a→f46285f9: the head opencharly/marketplace's mergedmainserves. The advance carries TWO AUTHORED BODIES, so the site's generated half does move, and this PR ships the regenerated pages with the pin. The two pages that move arerecipes/internals/cutover-policy.md(+2) andrecipes/internals/git-workflow.md(+12).The scope was derived from the producer's own report, not written by hand. The corpus's own
scripts/consumer-currency.shnames this repo as the consumer that is behind — an advance available NOW, in this repo:(The report reads each consumer's RECORDED pin over the public API, so it keeps naming this repo as behind until this PR lands. It names the umbrella's consumer leg as behind too — that leg is opencharly/opencharly#810, and this repo's advance does not wait for it: the two legs consume the same corpus head and neither depends on the other.)
What the advance carries, measured. The corpus's diff between the two pins is EIGHT paths, and TWO of them are authored bodies:
The two authored bodies are
internals/skills/cutover-policy/SKILL.md(+2) andinternals/skills/git-workflow/SKILL.md(+12) — the umbrella's own general-guidance skills, republished from the umbrella's tagv2026.302.1338(opencharly/opencharly#805), which stated the!subject marker's relation to a PR body's breaking-change answer. Those bodies project into this site'srecipes/internals/**pages, and those pages are what moves.The published bodies are byte-identical to their owner's files — proved, not asserted. The corpus is a GENERATED projection, so the pages are only as good as the projection's fidelity. Both published bodies are the umbrella's own file at the umbrella's tag, with the generator's provenance header removed:
The corpus's own candy says which projections move, and the measurement agrees. The corpus's
candy/charly-marketplace/charly.ymladvances its umbrella pin to the same tag and states it in the file itself: "those TWO files are the only projections that change." The diff's--name-onlyfilter over*/SKILL.mdand*/references/*names exactly those two, and this PR's own page diff names exactly those two. The candy's own +16 lines are COMMENTS on that pin, so the candy's page does not move — and the measurement says so: the PR moves two pages, not three.The pin sits one commit above the tag that names the merge. The corpus's tag
v2026.302.1755names the SQUASH0347894ded1bc355f9a846440bf5158bde9ba854, one commit BELOW the head itsmainserves (f46285f9), because thetag-on-mergeworkflow writesCHANGELOG/<CalVer>.mdAFTER the tag. This repo's pin follows the SERVED HEAD, not the tag: the corpus's ownscripts/consumer-currency.shjudges a consumer's recorded pin against the corpus's mergedmain, and this repo's ownscripts/check_pin_currency.shjudges it the same way.What this PR does NOT carry. This repo's two CI-time pins —
CHARLY_PINbe7a505f476c1a5b0302d878e0b5686a2cde3e07andUMBRELLA_PIN1c88fcf15f8fb9dd8b2814210472a63d3a79d0e2— are a DIFFERENT pin class with their own producers, and they are not moved here. The generation ran against exactly those pinned commits, so the regenerated pages are a projection of the corpus bump alone. Their currency is reported below and filed, not folded in.How tested
1 — the regeneration at the NEW pin, and the pages that moved. The generator is the product's own, built fresh from the pinned
plugin-docstag; the corpus it projects is the submodule at this PR's recorded pin.The regeneration runs IN PLACE, and that is the measured detail. The generator's link gate is a SITE gate, not a corpus gate: it collects the route set from the out root and checks every page's internal links against it, and it deliberately covers the HAND-AUTHORED pages. The out root must therefore be a site root — this repo's own
src/content/docs, whereastro.config.mjssits one level up — which is why the comparison is measured the way CI measures it, in place, withgit statusas the comparison. A corpus-only scratch directory is not a site root, and the gate can never be satisfied there.The toolchain is CI's:
plugin-docsv2026.289.0814built fromcmd/serve, charly at this repo'sCHARLY_PINbe7a505f476c1a5b0302d878e0b5686a2cde3e07, the umbrella at itsUMBRELLA_PIN1c88fcf15f8fb9dd8b2814210472a63d3a79d0e2, and the corpus at this PR's pin.2 — the drift gate: the committed tree must match its pinned inputs. This is the gate that says the shipped pages ARE the projection of the shipped pin, and it regenerates and compares.
3 — the Astro build from a clean install, on the pinned node.
4 — the pin-currency report, on the committed tree. 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.
5 — this repo's own script gates, on the committed tree.
6 — the head this PR pushes, and the tree it carries.
6f1871c54777069f4802dc69350008b57067b312Rulebook compliance
/charly-build:docs(the generation verb and the drift-proof recipe),/charly-tools:docs-site(the site candy and the pin report),/charly-internals:skills(the corpus is a projection, never hand-edited),/charly-internals:git-workflow(the pin contract, the PR body, the coordination grammar) and/charly-internals:root-cause-analyzer(the anomalies this change met). This repo's ownAGENTS.mdwas read first, and it adds the rules this body follows.plugin-docsCLI — the same engine CI runs — and no page was hand-edited.75e1d4a1379daf164a1ed2bc9c0678ad1ed20312survives nowhere in this repo's tracked tree outsideCHANGELOG/, which is history and not a current claim.git statuswas clean before the pin moved and is clean now; the branch is off freshorigin/main; no force-push, no hook bypass, no push tomain, and the submodule's contents were never edited — only the recorded gitlink moved.plugin-docsv2026.289.0814), and the site was built from a cleannpm cion the node version this repo pins (.node-version).disposable: truebed maps to this change class.bangrule accepts an EMPTY breaking-change answer, its inapplicable skip is silent, and its key anchor is loose marketplace#607 merged as fix(lint)!: the marker rule refuses an EMPTY answer, skips visibly, and reads the org's own key (#607) marketplace#608 and was taggedv2026.302.1755before this PR; the corpus's own report names this repo as the consumer to advance.Agent:and the italic trailer last.STATUScomment lands at each milestone.Change classification
Documentation site regeneration — the corpus-pin consumer leg of opencharly/marketplace#607 → #608. The change class is a pin, so the gate is this repo's own generation workflow — regeneration, the drift gate, the Astro build and the repo's script gates — run on the committed tree (items 1, 2, 3 and 5). The tier is
fully tested and validated.Eval beds run:
N/A — a corpus-pin bump; this repo declares no deployable entity for this class.Breaking change + rollback: none — the diff moves ONE recorded gitlink to the corpus's served head and carries the two pages that gitlink projects; no page is hand-edited, no authored page changes, and the retired corpus content stays in the corpus's own
CHANGELOG/. Rollback is a plain revert of this PR, which returns the recorded gitlink to75e1d4a1379daf164a1ed2bc9c0678ad1ed20312and the pages to their committed state.Filed issues
CHARLY_PIN(be7a505f476c1a5b0302d878e0b5686a2cde3e07) is behind charly's merged main. It is a DIFFERENT pin class with its own producer, and this PR does not move it: the generation ran against exactly the pinned commits, so the pages this PR ships are a projection of the corpus bump ALONE, and folding a CI-time pin into a corpus-pin PR would make the shipped pages a projection of two producers at once — which is a different change with a different gate.UMBRELLA_PIN(1c88fcf15f8fb9dd8b2814210472a63d3a79d0e2) is behind the umbrella's merged main. Same class, same treatment: the repo's own report says how FAR behind the pin is, never WHAT the missed commits touch, so advancing it inside this PR would silently change what the site projects without the change saying so.Both are filed, not folded in, and both are already open in this repo — this PR adds no new issue for them.
Agent:
charly· sessionses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)