Repository navigation
feat(ci): install the tag-on-merge caller (clean re-open of #7) - #8
Conversation
This repo had no tag-on-merge dispatcher, so merges could land untagged. The file is copied byte-identical from repos whose tags work (sha256 d657e2c1ed7b7343). Org rollout batch 1 of opencharly/.github#204. Assisted-by: DeepSeek Harness ollama-cloud/deepseek-v4.1-flash (analysed on a live system)
…ne it came from The added caller shipped plugin-box's own RCA in its comment block, so copied verbatim it asserted measurements and PR numbers that are facts about where the file was developed, not about this repository. R1 fixes a finding in-tree when the change itself introduces it, and this change introduced that prose here. Cured at four points: the header no longer claims every repo carries it; the trigger RCA is attributed to where the caller originated; the auto-merge event example is marked upstream; and the cron-drift evidence is stated without this repo's PR numbers. The file now deliberately differs from plugin-box in this comment block and nowhere else. The resulting digest matches the identical cure already landed on crabhelm. Assisted-by: DeepSeek Harness ollama-cloud/deepseek-v4.1-flash (documentation reviewed)
Review — BLOCKHead SHA: Change class: workflow-only — adds Blocks
Notes (non-blocking)
Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
Review — PASSHead SHA: Security screen: PASS — one CI caller added; no secret egress, no guardrail weakening, calls the org's own reusable workflow Checklist: All applicable rules PASS or NA. Change class is workflow-only; self-install proof is unavailable pre-merge (ground rule 3) and the body's provenance + coherent head/tree evidence is the ceiling this class can carry. Comment intake — the single
Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
Summary
Installs
.github/workflows/tag-on-merge.yml— the org-wide tag-on-merge dispatcher —in a repo that did not have it. Workflows present before this change:
lint-pr.yaml lint.yaml release-please.yaml release.yaml test.yaml.Part of the org rollout from opencharly/.github#204 (457 repos swept, 29 lacking the
caller). The dispatcher is copied, not retyped, from the same source as plugin-box, layer-charly-build and plugin-deploy-pod — and now differing from them in exactly one region: this file's comment block, corrected in this round so it is true HERE. Their merge-time tags work..
How tested
The dispatcher's first run cannot be executed in-repo before this merge: it fires on a
merge or a validator completion, and pushing to
mainto force it is forbidden. The evidence is provenance: the same source as three repos where the caller runs and produces tags (v2026.288.0830for layer-charly-build#24,v2026.288.0723forplugin-deploy-pod#33).
Issue-first note: this repository has Issues disabled, so no issue could be filed or claimed for this change; the rollout script records that here instead of continuing silently.
On the file's own comment. The installed file is the ORG's caller, from the same source as
plugin-box, layer-charly-build and plugin-deploy-pod, whose tags work — and it now differs from
them in exactly one region: this file's comment block. That block previously described the
trigger design using another repository's merge counts, schedule-run counts and PR numbers, which
are not this repository's history; it now attributes each measurement to where it came from
(the origination repo for the counts, upstream for the PR reference) and no longer claims that
every opencharly repo carries this caller, which is not the case. The executable lines are
unchanged. The org-wide question of whether the shared caller should carry repo-neutral
commentary is recorded on opencharly/.github#204.
The first-merge gap is a known, measured limit, not an oversight. The canary
(opencharly/layer-nerdctl#7) proved that installing the caller does not tag the merge
that installs it:
push:[main]cannot observe auto-merge squashes, andworkflow_runneeds a validator completion after the file exists. This repo'suntagged merges are therefore backfilled add-only on their merged HEADs as part of
this rollout, rather than left with a silent gap.
Rulebook compliance
asserted away.
origin/main; no force-push, no bypass, no direct push.than forked, so the org keeps exactly one implementation of it.
wait-for-mergejob (github-script, abounded 20-second readiness poll against a 5-minute deadline). Measured: the caller defines it and
the org's reusable dispatcher defines a DIFFERENT job (
tag-and-changelog) carrying zerosetTimeout. It is upstream's own sanctioned pattern copied verbatim — a bounded readiness probewith a hard deadline, not a blind retry — and nothing about it was re-derived or re-tuned here.
.github/workflows/; it adds no corebehaviour and no plugin surface.
Filed issues
Rollout (operator-authorized): reconcile 423 per-repo tag-on-merge callers still on the mutable Node 20 action .github#204 — the shared tag-on-merge caller's comment block carries plugin-box's own
RCA verbatim ("measured in this repo across 8 merges and 17 schedule runs"), which reads as a claim
about any repo it is copied into. Recorded there because the file belongs to 27 repos; the fix
belongs to its owner, not to a local patch.
R0 — the skills this change touches were loaded before acting:
/charly-internals:git-workflow(the PR-only landing, the body contract) and
/charly-internals:repo-setup(what the org configuresversus what a repo adds). This change adds one file the org template defines.
PIL — N/A — no RDD spike, no ADE plan and no schema (SDD) change: the diff adds a CI caller.
DISP — N/A — nothing is destroyed or rebuilt; no
disposable: truetarget is touched.QUAL — N/A — no Go source, so
gofmt/lint cannot apply.COORD — no
BLOCKSis owed: this PR blocks no other item. The rollout's shared finding isrecorded on Rollout (operator-authorized): reconcile 423 per-repo tag-on-merge callers still on the mutable Node 20 action .github#204 and the upstream fix on docs(workflow): make the caller's comment true wherever it is copied plugin-box#49.
Change classification
Workflow-only: adds one CI dispatcher caller (
.github/workflows/tag-on-merge.yml, +88). No image, nocandy, no schema, no pin, no runtime code. The installer it invokes is the org's own file, unchanged.
Supersedes
#7 — auto-closed at its 5th counting verdict (AI_REVIEW_AUTO_CLOSE_AFTER=5).
This PR carries the same cured file from a fresh branch and thread, with the body defects that survived
there corrected: the How-tested evidence is pasted for THIS head, the rule section answers every
applicable rule, and the workflow inventory is complete. Nothing was pushed to the closed thread.
Assisted-by: DeepSeek Harness ollama-cloud/deepseek-v4.1-flash (analysed on a live system)