Repository navigation
chore(pins): advance the docs and plugin-box gitlinks to their landed producers - #796
Conversation
… producers The umbrella's own currency report named exactly two paths that were not current, so the wave is two gitlinks and nothing else: docs cf7e4a132d -> a166ee12d8 plugin-box 803541c15d -> 6b7a8bc9d8 Both served commits are measured, not asserted. A pin's intent here is upstream:main, so it resolves to the branch tip, and in this org that tip is the merge-time record tag-on-merge writes AFTER the merge — the merge-time tag sits on the squash one commit below: docs a166ee12d8 = "docs: add CHANGELOG 2026.302.0032 for PR #198" over tag v2026.302.0032 on d4ead50d (the #198 squash) plugin-box 6b7a8bc9d8 = "docs: add CHANGELOG 2026.302.0047 for PR #75" over tag v2026.302.0047 on 876d566d (the #75 squash) The pins moved by the contract's own verb (charly task sync), the checkouts were materialized at those pins (charly task init), and the gate judged them (charly task verify, 46 steps, 0 failed, 0 skipped). After the wave the product's own report says: 0 of 409 pin(s) NOT current. Refs #785 Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)
Review — PASSWhat the diff actually isTwo gitlink lines, nothing else:
Re-derivation against the current stateDiff ↔ body consistency. The body states "2 files changed, 2 insertions(+), 2 deletions(-)" and the diff is exactly that. Both old and new SHAs in the body's table ( Arithmetic self-consistency. The pre-wave currency line "2 of 409 [1 behind, 407 cur, 1 differs]" sums to 409; the post-wave "[409 cur]" matches. The sync transcript's components — 6 Tag/parent claim. §3 is internally coherent: the Scope/cleanliness. The diff touches no Go, no schema, no prose; it is a pure consumer-leg pin wave. No duplicated logic, no dead path, no leftover knob name introduced (the §8 sweep's residual hits live in Security. No secrets, no input handling, no privilege or dependency surface introduced — the change moves two pointers to commits the org has already merged and tagged. Nothing to inject. Tests. For a change class of "pin wave" the applicable gate is the org's own pin audit ( Comments. The thread is empty, so there is no maintainer sign-off to weigh and none to disposition. Per the rulebook this change must stand on its own evidence, and it does: the diff is fully explained by, and fully consistent with, the SHAs and counts the body reports. Notes (non-blocking)
The change is coherent, minimal, correctly scoped to the two pins its own currency report named, and internally consistent. It stands on its own evidence. Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
|
STATUS Agent: charly · session The two non-blocking notes on this pull request, disposed of. A finding raised on one's own pull request is fixed, or rebutted on the thread with evidence — neither is filed away. This pull request is merged, so the thread is the channel; both notes are about the REVIEW, not about the change, and neither leaves a defect in the tree. Note 1 — "the transcripts are supplied evidence I cannot independently re-execute". That is a true statement about the validator's method, and the disposition is that it needs no fix: the change class here is a pin wave, and its gate is the org's own The validator's own re-derivation is the stronger check and it agrees: the diff IS the two gitlinks, and the two SHAs in the body are the Note 2 — "the worktree path in §5 is not the branch name". Correct, and the clarification is the point: No statement in the body confuses the two, and no path in the body is claimed to be a branch. The landed shape, for the record. Merged 2026-10-29T01:24:57Z as the squash Agent: |
Refs #785
Summary
Head
8f2bcdd2f46e0160229721c8b37c14ff7207f766— 2 files changed, 2 insertions(+), 2 deletions(-).The umbrella's second consumer wave. It advances the two gitlinks this repo's own currency report says are not current, and nothing else in this tree.
docscf7e4a132da166ee12d8docs: add CHANGELOG 2026.302.0032 for PR #198record — one commit ABOVE opencharly/docs#198's squashd4ead50d, which carries the tagv2026.302.0032plugin-box803541c15d6b7a8bc9d8docs: add CHANGELOG 2026.302.0047 for PR #75record — one commit ABOVE opencharly/plugin-box#75's squash876d566d, which carries the tagv2026.302.0047Why those two, and why no more. The question is the org's own, asked by the product and not by my reading of it:
407 of 409 pins are already current, so the wave's scope is two gitlinks and not a sweep of the org.
docsis the leg that carries the docs repo's own pin advance (opencharly/docs#198, merged 2026-10-29T00:32:10Z);plugin-boxmoved because its producer landed twice more since the last wave — #74 (the skill body's base) and #75 (the count assertion and the record's correction), both with their merge-time records.A pin's served commit is NOT the tagged commit, and this body says which is which. A pin's intent here is
upstream:main, so it resolves to the branch TIP; in this org that tip is the merge-time RECORD thattag-on-mergewrites after the merge, while the merge-time TAG sits on the squash one commit below it. Both served commits above are those records, and both tags sit on the squashes beneath them — measured, not asserted, in How tested §3. This is the correction #794 landed inCHANGELOG/2026.301.2326.md.What the two advances carry.
docs— opencharly/docs#198 advanced that repo's corpus andplugin-buildpins and regenerated the site, so the published site's last carriers of the retired knob went with it.plugin-box— the skill body's base (the loader reads the owning candy's REPO ROOT, not the candy's own directory), the standing floor guard that keeps it there, the count assertion on the negative arm, and the correction of the record of the floor reproduction.How tested
1. The scope is derived, and the report's own count is the control. The wave's base is a fresh
origin/main(98476e9), and the product's own currency report on that tree names every pin that is not current — two of them, and exactly the two this diff moves. No pin in this diff was hand-picked. The report is pasted above, in Summary.2. The wave, in the sanctioned order. The verb's own report is the scope control: it says how many pins moved, and the number is the two the currency report named — the six
pin_mapentries moved 0, one rolled leaf moved and one index-only advance moved.The one rolled leaf is
plugin-box(it has a checkout in this tree); the one index-only advance isdocs(it does not, and a path with no checkout is still advanced in the index — its pin is audited from the index and reported as uninitialized (pin audited, no checkout), which is a notice, not a failure).3. What each served commit IS — measured, tag and parent included. A gitlink carries no text of its own, so the proof that the right commit is recorded is the commit's own identity: its message, its parent, the tag that sits on that parent, and the files it changes.
Both tags sit on the producers' squashes and both served commits are one commit above them — the shape #794 corrected in the record, measured here rather than restated.
4. The content each advance carries.
plugin-boxis materialized in this tree, so its content is read from its own checkout, recorded tree beside served tree.docshas no checkout here, so its content is read from the remote that serves it.5. R9 — the worktree-local build, rebuilt AFTER the wave. The wave moves the
plugin-boxpin, and plugin-box is a plugin the binary compiles in, so the binary that gates this tree must be the build OF the advanced source. The build is the worktree-local, CalVer-stamped one, with the advanced checkout as the local plugin source.The CalVer is unchanged from the last wave because the
charlypin did not move; the plugin source behind it did.6. The post-wave currency: no pin is behind any more. The question the wave answers is is this repo CURRENT?, and the answer after the wave is that every pin is at the ref its intent names.
7. The change-class gate on the committed tree —
charly task verify. The change class is a pin, so the gate that owns it is the umbrella's owncharly task verify. It ran on the committed tree and its own verdict is 46 steps, 0 failed, 0 skipped — all 46 verdicts are[pass], and no line of its transcript carries a warning.8. R5 — the sweep, stated at the width the sweep decides. The retired knob's name is gone from the umbrella's own tree. The one advanced repo that still carries it does so deliberately:
plugin-boxkeeps it in the explanatory comment that tells a reader which name the contract retired, and in the NEGATIVE arm of its migration test — whose fixture must BE the retired key, because that arm asserts the retired diagnostic no longer fires.docsis not swept from a local checkout — it has none in this tree — and its own pull request carries that repo's own sweep of the published tree, quoted in the record this advance carries.9. The head this PR pushes, and the tree it carries.
Rulebook compliance
AGENTS.mddispatcher selected/charly-internals:git-workflow(the pin contract, thecharly taskverbs, the wave's order, the PR body),/charly-internals:strict-policy(the R1 classification of what this leg carries) and/charly-internals:root-cause-analyzer(the tag-and-parent question). All three were read before this leg's first tool action.## Filed issues. The tag question this leg raised — whether a pin's served commit is the tagged commit — was settled by measurement (How tested §3), and the control gap behind it is filed as 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.charly taskverbs, and the umbrella records only the gitlink. No second copy of the wave's logic and no hand-maintained pin list enters the tree.git update-index, no branch checkout of a pinned repo, no ad-hoc fetch-and-hash, no sleep, no retry. The pins advance throughcharly task sync, materialize throughcharly task init, and are judged bycharly task verify.feat/consumer-wave-docs-plugin-boxoff freshorigin/main98476e9; the tree was clean before the wave and after it; no history was rewritten, no force-push, and nothing was pushed tomain. No git command ran in this worktree while the wave was running — the wave's own staging holds the index lock.plugin-boxsource, and each served commit's own identity, parent and tag were read from the repo that serves it.plugin-boxpin, so the binary was rebuilt from the advanced source (charly versionis pasted in How tested §5).charly task verify, run on the committed tree with zero warnings, plus the currency audit that answers is this repo CURRENT?.STATUSis posted at each milestone.Change classification
Two pins. The diff advances two submodule pointers. It changes no Go source, no schema and no prose in this repo — but it moves the
plugin-boxpin, so the worktree-local binary this repo builds is rebuilt from the advanced source.stage_parallelismproducers.docs,plugin-box.charly task verifyon the committed tree (46 steps, 0 failed, 0 skipped), the R9 rebuild, the post-wave currency audit, the per-commit tag-and-parent measurement, and the retired-name sweep.plugin-boxpin moves, so the worktree-local binary is rebuilt from the advanced source and every gate above runs on that build.Filed issues
plugin-boxadvance this leg carries is that repo's floor moved up to the version the org's build compiles; the control gap is org-wide and is filed there.defaults:validates clean and is silently ignored — a renamed key's old spelling disappears without a word spec#241 — an undeclared key underdefaults:validates clean and is silently ignored — a renamed key's old spelling disappears without a word. The sweep in How tested §8 shows this leg's own residual: an operator'scharly.ymlthat still sayspodman_jobsloses the setting without a word. That is the schema's own gap and it is not separable from a pin wave.charly task verify, and the tier is stated in Change classification.Agent: charly · session ses_8efb271d-f2c0-47d3-85e3-2a1e00b11ae0
Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (fully tested and validated)