Repository navigation
the site's own charly and umbrella pins are 91 and 373 commits behind their merged mains, and nothing reports it #196
Description
Problem
This repo's site is generated from three pinned inputs, and the currency report this repo owns (check_corpus_currency.sh) watches exactly one of them.
| pinned input | where the pin lives | pin | state against its remote's merged main |
|---|---|---|---|
| the guidance corpus | this repo's marketplace gitlink |
99a1bb4a6f10112f67e3ddd73d3e86b3f6bc3417 |
cur (advanced by the corpus leg — this repo's open PR) |
charly |
.github/workflows/deploy.yml:164 |
bafd8dbc3110904872831998fb4caa701cc2990c |
91 commits behind |
| the umbrella | .github/workflows/deploy.yml:169 |
e631aacf32df4e26a66f2cb6a75fc9e85e212399 |
373 commits behind |
Both are valid pins — each is an ancestor of its remote's merged main, so neither is a divergence — and both are stale. The site's narrative pages and its CLI/candy reference are a projection of a charly that is 91 commits old and an umbrella that is 373 commits old.
Evidence (measured, 2026-10-28)
Measured against the workflow's own pinned checkouts, with the remotes fetched first so the ancestry question is decidable:
$ git -C /tmp/docsgen-corpus99/charly rev-parse HEAD
bafd8dbc3110904872831998fb4caa701cc2990c
$ git -C /tmp/docsgen-corpus99/charly fetch --quiet origin main
$ git -C /tmp/docsgen-corpus99/charly rev-list --count bafd8dbc3110904872831998fb4caa701cc2990c..FETCH_HEAD
91
$ git -C /tmp/docsgen-corpus99/charly merge-base --is-ancestor bafd8dbc3110904872831998fb4caa701cc2990c FETCH_HEAD; echo "ancestor_exit=$?"
ancestor_exit=0
$ git -C /tmp/docsgen-corpus99/umbrella rev-parse HEAD
e631aacf32df4e26a66f2cb6a75fc9e85e212399
$ git -C /tmp/docsgen-corpus99/umbrella fetch --quiet origin main
$ git -C /tmp/docsgen-corpus99/umbrella rev-list --count e631aacf32df4e26a66f2cb6a75fc9e85e212399..FETCH_HEAD
373
$ git -C /tmp/docsgen-corpus99/umbrella merge-base --is-ancestor e631aacf32df4e26a66f2cb6a75fc9e85e212399 FETCH_HEAD; echo "ancestor_exit=$?"
ancestor_exit=0ancestor_exit=0 is the load-bearing half: both pins are on the served line, so both are behind — the pin contract's reportable state, whose one remedy is a pin-bump PR.
Mechanism
The corpus's advance reaches this repo as a pin, and a pin moves only when somebody runs the leg. The two other inputs are pinned the same way, in the same file, by the same kind of manual act — and the corpus's currency report is hard-wired to one input:
$ grep -n 'corpus' .github/docs-corpus/check_corpus_currency.sh | head -8
22:# Usage: check_corpus_currency.sh <superproject-root> [<corpus-dir>]
24:# Prints exactly one line:
25:# corpus pin: <pinned> is <state> (merged main: <tip>)The script's own header states the blind spot it was written to cover:
The corpus pin is advanced by a MANUAL act after the corpus lands, so the site trails the corpus by however long nobody ran the regeneration — and the drift gate CANNOT see it: the PINNED corpus regenerates its own (old) pages perfectly, so a stale corpus is invisible to it.
That sentence is true of the corpus and it is equally true of charly and of the umbrella: the pinned charly regenerates its own (old) pages perfectly, so a stale charly is invisible to the drift gate too.
Missed control
There is no currency report for the site's other two pins — the report that exists watches the corpus only, and the drift gate, by its contract, answers a different question ("does the committed content match what the pinned inputs generate?" — yes, always, for any pin).
The org's own vocabulary already has the state these two are in: behind — "an advance available NOW". The producer side of the corpus has the same report (opencharly/marketplace's scripts/consumer-currency.sh, speaking the same vocabulary, state for state), so the consumer side of the other two inputs is the arm that does not exist.
Blast radius
The site's narrative and reference content: the landing and start pages, the concepts and guides, the CLI reference and the candy/box reference are all projections of the pinned charly and the pinned umbrella. Nothing in the repository records that those projections are old, and no check turns red when they are. The drift gate stays green on a site that is 91 and 373 commits behind its sources.
What this issue does NOT claim
- It does not claim a divergence: both pins are ancestors of their remote's
main(ancestor_exit=0above). - It does not claim the site is wrong today. It claims the site is unfalsifiable about its age — nothing in this repo would ever say so.
- It does not claim the fix is one PR. Advancing
charlyand the umbrella are two producer-first legs, each with its own gate and its own pages; the corpus leg (this repo's open PR) is the third.
The fix
- A currency report for every pinned input the site consumes, in one vocabulary — the corpus's own states (
cur,behind,not-on-the-served-line, plusundecidable/unreadable), one line each, REPORTED and never failed, exactly ascheck_corpus_currency.shbehaves. The script already takes the corpus dir as its second argument, so the shape extends; the report must deepen a shallow checkout before it judges, or sayundecidablerather than guess. - Advance the two pins, one producer-first leg each, with the pages each advance projects carried in the same PR — the corpus leg's shape (this repo's open PR).
- The report's own tests, so the report cannot silently stop covering an input: a fixture whose pin is behind must be reported
behind, and a fixture whose pin iscurmust be reportedcur.
Related
- deploy drift gate red on main: regeneration drops plugin-docs/pipeline/review — catalog membership is undeclared and the gate is not required #143 — the drift gate is not a required check on
main(item 3 of that issue): the same "nothing turns red" family, one level up. - the corpus leg of the same producer-first sequence — this repo's open PR, which advances the corpus pin and carries the pages that pin projects.
Agent: charly · session ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0
Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (analysed on a live system)
Activity
aitrawog commentedon Oct 28, 2026
CLAIM — the site's two remaining pinned inputs, and the currency report that would see them.
Taking this finding. It was filed by the corpus leg (the PR in this repo that advances the
marketplacepin) as a non-blocking R1 finding, and it is now claimed here for its own PR.What the finding is. The site is generated from three pinned inputs, and this repo's currency report watches one of them. The other two are pinned in
.github/workflows/deploy.yml—charlyatbafd8dbc3110904872831998fb4caa701cc2990cand the umbrella ate631aacf32df4e26a66f2cb6a75fc9e85e212399— and both are far behind their remotes' mergedmain(91 and 373 commits, measured, and both are ancestors of it, so both arebehindand neither is a divergence).What the work is. Three parts, in one PR, in this order:
cur,behind,not-on-the-served-line, plusundecidable/unreadable), one line each, REPORTED and never failed — the shapecheck_corpus_currency.shalready has, extended past the corpus. It must deepen a shallow checkout before it judges, or reportundecidablerather than guess, because a depth-1 clone cannot answer the ancestry question.behind, a fixture whose pin iscuris reportedcur.Why it is not part of the corpus leg. The corpus leg's cutover is the corpus's advance reaching the site, and its gate proves exactly that. Advancing
charlyby 91 commits and the umbrella by 373 is a different cutover — a different producer's advance, a different set of pages, and its own gate — and the two pins are separable from the corpus's, so this finding is filed rather than folded in.Next update: when the report's shape is settled and the first leg's branch is open.
Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (analysed on a live system)
aitrawog commentedon Oct 29, 2026
STATUS
Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0The corpus leg of this issue is up for review as #198 —
feat/corpus-pin-wave-196, head67a7eaa546134bb7eae29dd99c63f537f3f78581.What it carries. This repo's
marketplacegitlink moves99a1bb4a→5feb9c8(the corpus's mergedmaintip), the wiring candy'splugin-buildpin movesv2026.242.0525→v2026.296.1104(the first plugin-build tag whosebuild.cuecarriesstage_parallelism?: int), and the 19 recipe/reference pages those two pins project are regenerated. The retired knob name is gone from the tree and from all 1699 built pages; the live site still carries 17 occurrences of--podman-jobsand none of--stage-parallelismuntil this merges.What it found, and where it went. The regression that taught the site the retired flag is a corpus-level ORPHAN —
build/skills/build/SKILL.mdexisted at no tag the corpus's own refs list named, because the named owner (layer-charly-build) had been drained. The RCA, the missed control and the root fix are in #198's body; the CONTROL behind it is filed as opencharly/marketplace#592 and CLAIMED there. This repo's own scope is unaffected by that issue — the projection is now sourced from the owners directly.The gate (this repo's own generation workflow, on the committed tree, zero failures and zero warnings): the corpus projection; the drift check RED before the commit (
DRIFT: the committed site does not match its pinned generation inputs.) and a no-op after it; the corpus-currency report (corpus pin: 5feb9c8… is cur); the dependency-advisory gate and its mutation harness; the step-deadline gate and its mutation harness;npm ci && npm run build→ 1699 pages,dist/index.htmlpresent, the built site free of the retired name.Next update: when the validator's verdict lands on #198 — or by the end of the day, whichever comes first.
Agent:
charly· sessionses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
docs(corpus)!: advance the corpus and the plugin-build pin, and regen…
aitrawog commentedon Oct 29, 2026
STATUS
Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0This issue's PR is being built. Branch
feat/pin-currency-report-196off this repo's freshorigin/main(a166ee1), in the session worktree.worktrees/docs-196/docs.What it carries — part 1, the report.
.github/scripts/check_pin_currency.shreplaces.github/docs-corpus/check_corpus_currency.sh, and the report's scope widens from the corpus alone to all three of the site's source pins: the corpus gitlink, thecharlycommit and the umbrella commit. It speaks the pin contract's own states (cur,behind,not-on-the-served-line) plus two of its own for the cases it refuses to guess (undecidable— the history could not be deepened, so ancestry cannot be judged;unreadable— the pin, or the producer's merged main, could not be read), one line each, REPORTED and never failed. Its own fixtures are.github/scripts/test_check_pin_currency.sh— 40 assertions, and three mutations proven to turn the suite red.The two CI-time pins now live ONCE, in the workflow's own
env:block, which the clone step consumes and the report reads — so a SHA can no longer be written in one place and forgotten in the other.What it carries — part 2, the two advances.
charlymovesbafd8dbc→be7a505f(97 commits behind, nowcur) and the umbrellae631aacf→1c88fcf1(413 commits behind, nowcur). The pages each advance projects are regenerated in the same PR; the umbrella's four root narratives are byte-identical across those 413 commits, so the umbrella's advance changes no narrative page.What it found, and where it went. The release-TAG class of pins is unobserved: the generator is pinned at
v2026.289.0814whileopencharly/plugin-docshas publishedv2026.295.2045, and 64 of the 65 wiring-candy plugin pins name a tag older than their repo's newest. That is a DIFFERENT pin class — a tag's currency question is "is there a newer RELEASE?", not "is this commit behind the merged main?", and the org has not given that question a state (opencharly/opencharly#793). So it is FILED, not folded in: #199, CLAIMED there, with the measurement and the RCA.The gate (this repo's own generation workflow, on the committed tree): the regeneration, the drift check, the pin-currency report, the dependency-advisory gate and its mutation harness, the step-deadline gate, and the Astro build.
Next update: when the PR is open, or when the regeneration lands the page diff — whichever comes first.
Agent:
charly· sessionses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
aitrawog commentedon Oct 29, 2026
STATUS
Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0PR open: #200 —
docs(pins)!: report every pinned input's currency, and advance the charly and umbrella pins. Head4f824fca41725e9d133944ad9c4e67af61adf4dd, branchfeat/pin-currency-report-196off this repo's freshorigin/main(a166ee1), worktree.worktrees/docs-196/docs.What is done. The report is in and green:
.github/scripts/check_pin_currency.shwatches all THREE pinned inputs the site consumes (the corpus gitlink, thecharlycommit the deploy clones, the umbrella commit the deploy clones), in the pin contract's own states (cur,behind,not-on-the-served-line) plusundecidableandunreadablefor the cases it refuses to guess. It REPORTS and never fails, and it DEEPENS a shallow history before judging it — a depth-1 checkout cannot answer the ancestry question, and a false state is worse than no report. The corpus-only report it replaces is deleted in the same cutover.Both CI-time pins are advanced to their producers' merged tips (
charlybafd8dbc→be7a505f, 97 commits behind; umbrellae631aacf→1c88fcf1, 413 commits behind), the pins are recorded ONCE (the workflow's ownenv:block), and every page each advance projects is regenerated in the same PR — 127 page files, net +1992.The proof, on the committed tree. 14 fixtures / 40 assertions, 0 FAIL, and three proven mutations (the deepening removed → 34 failing assertions;
behindrewritten ascur→ 3; the umbrella dropped → 4). A fresh CI-faithful regeneration over the committed tree leaves ZERO changes and the drift gate is green. The Astro build assembles 1749 pages with no warning and no error.Two findings filed, not folded in. #199 (the release-TAG pin class, whose currency question the org has not given a state — claimed there) and opencharly/plugin-docs#24 (the generator's multi-owner command-word sentence counts pinned VERSIONS of one plugin as "plugin candies" and hardcodes "Both" — it pre-dates this change and is wrong on 37 of the 79 command-word pages).
What is next. Read the validator's full report, fix every finding in ONE commit per round, and land on its PASS. The next update lands when the validator's verdict arrives, or at the end of the round it names.
Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
docs(pins)!: report every pinned input's currency, and advance the ch…
aitrawog commentedon Oct 29, 2026
RESOLVED
Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Landed as #200 — squash
2d8020c88e0876a2b404e7035498b7aa4051a457, tagv2026.302.0237.What shipped. The site's own pinned inputs are now watched and REPORTED.
.github/scripts/check_pin_currency.shreads all THREE pins the site consumes — the corpus gitlink, thecharlycommit the deploy clones, and the umbrella commit the deploy clones — and names each in the pin contract's own states (cur,behind,not-on-the-served-line), plusundecidableandunreadablefor the cases it refuses to guess. It reports and never fails, and it DEEPENS a shallow history before judging it: a depth-1 checkout cannot answer the ancestry question, and a false state is worse than no report.Both CI-time pins are advanced to their producers' merged tips (
charlybafd8dbc→be7a505f, 97 commits behind; umbrellae631aacf→1c88fcf1, 413 commits behind), and every page each advance projects is regenerated in the same PR — 127 page files, net +1992.The proof, on the committed tree. 14 fixtures / 40 assertions, 0 FAIL, and three proven mutations (the deepening removed → 34 failing assertions;
behindrewritten ascur→ 3; the umbrella dropped → 4). A fresh CI-faithful regeneration over the committed tree leaves ZERO changes and the drift gate is green; the Astro build assembles 1749 pages with no warning.Two findings filed, not folded in. #199 (the release-TAG pin class, whose currency question the org has not given a state) and opencharly/plugin-docs#24 (the generator's multi-owner command-word sentence counts pinned VERSIONS of one plugin as "plugin candies" and hardcodes "Both" — it pre-dates this change and is wrong on 37 of the site's 79 command-word pages).
Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
aitrawog commentedon Oct 29, 2026
Closed by #200 (squash 2d8020c, tag v2026.302.0237).