Repository navigation
the pinned corpus is 8 commits behind, and the live site publishes the landing order backwards #185
Description
The docs site publishes a corpus pin that is 8 commits behind the corpus's merged main, and the pages it publishes from it state the org's landing order backwards — on the live public site, not only in the tree.
The pin, and the advance available NOW
Measured against the REMOTE (the pin's intent is a leaf — upstream:main, implicit from .gitmodules' branch= — so the remote is the judge, not a hand-built comparison table):
$ git ls-tree HEAD marketplace
160000 commit d0d55ccc77326baaf18b8d2254548ce06cb4dfbf marketplace
$ git ls-remote https://github.com/opencharly/marketplace.git refs/heads/main
835d099845cd51ac90f6677179d750fbb384fc83 refs/heads/main
$ gh api "repos/opencharly/marketplace/compare/d0d55ccc...835d0998" --jq '"status=\(.status) ahead=\(.ahead_by) behind=\(.behind_by)"'
status=ahead ahead=8 behind=0ahead=8, behind=0 — the served tip DESCENDS from the recorded pin, so this is a fast-forward advance available NOW, not a divergence. A leaf's behind is a REPORT-and-PASS state (the umbrella's AGENTS.md Part II #3): it does not gate, and it is not a failure. It is the next leg of a cross-repo sequence, and this leg takes it.
What the stale corpus publishes — and it is LIVE
The corpus's internals family's git-workflow projection is generated from the umbrella's own ref, and the refs list this repo pins names a tag from before the umbrella corrected two claims about the org's tag-on-merge mechanism. The two pages this repo publishes from that projection carry the uncorrected text, and the site serves them:
$ grep -rn "durable: the entry lands" src/content/docs/recipes/internals/git-workflow/
src/content/docs/recipes/internals/git-workflow/branch-and-pr-loop.md:118:durable: the entry lands in the tagged
$ curl -s --max-time 25 "https://opencharly.ai/recipes/internals/git-workflow/branch-and-pr-loop/" | grep -o "durable: the entry lands[^<]*"
durable: the entry lands in the tagged
$ curl -s --max-time 25 "https://opencharly.ai/recipes/internals/git-workflow/validator-and-calver/" | grep -o "then tag the merged HEAD[^<]*"
then tag the merged HEAD —The claim is false, and the mechanism that falsifies it is the org's own
opencharly/.github's tag-on-merge.yml creates the tag AT pr.merge_commit_sha — its own comment says "Tag: create if missing (idempotent — independent of CHANGELOG)" — and only THEN writes CHANGELOG/<CalVer>.md from the PR body on main, which lands as the dispatcher's own follow-up commit. So the tag names the merge, and the entry arrives in the commit after it. The published text says the opposite twice:
- "durable: the entry lands in the tagged tree" — it does not; the entry is never in the tagged tree.
- "after the squash merge, write the CHANGELOG … ; then tag the merged HEAD" — the order is backwards; the tag is created first, and the "merged HEAD" after the changelog write is the dispatcher's own commit, a tag of which does not exist.
The claim is load-bearing on the public site. It is the guidance a reader follows to decide what is durable after a landing, and it tells them to look for the CHANGELOG entry inside the tag, where it is not.
The producer is landed; this repo is the consumer leg
The producer's fix is merged and tagged: opencharly/marketplace#578, merged as 283684558e1aecce88c73fe2362687e26396e225 (tag v2026.299.0112), with the CHANGELOG follow-up at 835d099845cd51ac90f6677179d750fbb384fc83. The refs list there now pins the umbrella's v2026.299.0024, the tag that carries the correction (opencharly/opencharly#690, hardened by #691 and #693).
The producer-first order is producer PR → merge → tag → consumer pin bump. This repo is one of the consumers. Its own AGENTS.md says it: "Generated pages are never edited here … Edit the source, then land a regeneration PR here that bumps the pinned charly commit — and, for a corpus change, the pinned marketplace commit — and carries the regenerated pages."
The fix, and its scope
- advance this repo's
marketplacesubmodule to the corpus's merged main; - carry the regenerated pages — the
recipes/**half of the site projects the corpus, so the regeneratedrecipes/internals/git-workflow/**pages change with it, and the repo's generation workflow's drift gate is what proves they were carried; - the drift gate runs the regeneration on the committed tree and fails on any difference, including untracked files.
The generated pages are never hand-edited: they are the corpus's own text, projected.
The measured wall-clock of the drift gate, before
The repo's generation workflow clones the pinned charly, builds the binary, regenerates the generated half and fails on any drift, then builds Astro. That is the change-class gate for this class, and it is the repo's own workflow — not a substitute.
What this issue does NOT claim
It is not a claim that the pages are hand-editable, and it is not a claim about the charly pin: the pinned charly commit is this repo's own input, and it is not touched by this change. The corpus pin and the regenerated corpus-derived pages are the whole scope.
Agent: umbrella-prose-truth
Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
Activity
aitrawog commentedon Oct 26, 2026
CLAIM — taking the docs-side consumer leg in this issue: advance the
marketplacepin, and carry the regenerated pages.Owner: slug
umbrella-prose-truth(assignee set).Why this issue and not a new one. The finding is a real, CURRENT defect on the public site:
opencharly.aiserves the two uncorrected claims about the org's landing order, because the pages project a corpus pin that is 8 commits behind the corpus's merged main. The producer has landed and tagged the fix (opencharly/marketplace#578 →283684558e, tagv2026.299.0112), so the consumer legs are unblocked.Order. This is the THIRD leg of the chain: producer (marketplace, merged) → the umbrella's
marketplacegitlink (opencharly/opencharly#694) → this repo'smarketplacepin. The umbrella's leg is in flight in its own repo and on its own branch; neither depends on the other's branch, only on the producer having landed, which it has.Branch:
feat/corpus-pin-185, in a session worktree, branched off freshorigin/main.Scope: the
marketplacegitlink advance and the regenerated corpus-derived pages the repo's own generation workflow produces. The generated pages are never hand-edited — the drift gate is the proof they were carried.Next update: at the regeneration, and again at the land.
Agent: umbrella-prose-truth
Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
aitrawog commentedon Oct 26, 2026
STATUS — the docs-side leg is open as PR #186, and gated on the committed tree.
PR: #186 —
docs(corpus): advance the vendored corpus pin to the corpus that carries the corrected landing order, and regenerate, headcae8aced47c3a6722889ccc4b947c7517f297173, branchfeat/corpus-pin-185(5 files changed, 55 insertions(+), 16 deletions(-)).What it carries. This repo's own
marketplacegitlink advancesd0d55ccc→835d0998— the corpus's merged projection of the umbrella's corrected.agents/tree — and the four recipe pages that the pin projects. The corpus is a PROJECTION, and this repo's pin is what decides which projection the site serves: the site at opencharly.ai was still publishing the retired landing order (the CHANGELOG entry "lands in the tagged tree", written "then tag the merged HEAD") because the PINNED corpus was the pre-correction one. The drift gate could not see that on its own — the pinned corpus regenerates its own (old) pages perfectly.No page is hand-edited. The pages are the generator's output for the advanced pin, produced with the deploy workflow's exact inputs — the pinned
charlysource at its CI-time commitbafd8dbc, the pinned umbrella narrativee631aacf, the pinnedplugin-docsgenerator, and the corpus wiring candy built from this repo's.github/docs-corpus/pins.tsv.Gated, on the committed tree, with this repo's own change-class gate — the generation workflow (
.github/workflows/deploy.yml) reproduced locally:The regeneration on the committed tree is a NO-OP (the
git statusline is empty), which is the fail-closed drift gate's own condition.The claim, before and after. At this repo's pre-pin commit
e5f90075the two claims are in live recipe pages; in the regenerated tree neither survives:Next: the fresh
charly/pr-validatoron this head. Every finding it raises is fixed or rebutted on the thread — in ONE commit per round, never an amend. Next update: at the validator's verdict, and again at the land.Agent: umbrella-prose-truth
Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
docs(corpus): advance the vendored corpus pin to the corpus that carr…
aitrawog commentedon Oct 28, 2026
RESOLVED — the defect this issue named is gone from the live site, and the issue was never closed.
Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
docs(corpus): advance the vendored corpus pin to the corpus that carries the corrected landing order, and regenerate, merged 2026-10-26T02:37:35Z.durable: the entry lands in the taggedon/recipes/internals/git-workflow/branch-and-pr-loop/, andthen tag the merged HEADon/recipes/internals/git-workflow/validator-and-calver/. Re-measured 2026-10-28:The corrected clause is what the site serves now, and the landing-order claim the issue quoted no longer appears on the page that carried it.
Why it stayed open. The issue was closed by the work, not by the merge: GitHub does not close an issue when the PR that resolves it is merged by the App, and nothing closed it by hand. The fix was merged on 2026-10-26; the issue sat open until now.
What is NOT closed by this record. The corpus pin this repo vendors has advanced again since: the repo's
marketplacegitlink is835d0998and the corpus's merged main is99a1bb4a6f— 6 commits behind, a fast-forward advance available now. That is a NEW leg with its own issue, not this one; this issue's scope was the landing-order defect, and it is done.