Repository navigation
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 (header, trigger RCA attribution, the upstream PR reference, the cron-drift evidence). The file now deliberately differs from plugin-box in this comment block and nowhere else; the comment-only diff is 6 insertions and 6 deletions and the non-comment lines are unchanged. Assisted-by: DeepSeek Harness ollama-cloud/deepseek-v4.1-flash (documentation reviewed)
Review — BLOCKHead SHA: Change class: workflow-only (CI config, Security screen: PASS (no injection, no scope mismatch, no weakened guardrail, no secret/egress). Blocks
Note (non-blocking)The Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
Review — BLOCKHead SHA: Change class: workflow-only (CI config, Security screen: PASS (no secrets/egress, no scope mismatch beyond what the body names, no weakened guardrail, Comment intake (prior bot BLOCK on this same head)
Blocks
Note (non-blocking)The rule-compliance section is duplicated/split — the Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
…the source plugin-box#51 named and config-sourced the two bounds this caller polls on, and is merged on main. This copy inherits that file, so it takes the same fix: the readiness window and poll interval are env-sourced named values, and the timeout message interpolates the window it actually used. Follows the producer: source fix merged first, copies second. Comment-only semantics aside, the executable behaviour is unchanged — same 5-minute deadline, same 20-second interval. Assisted-by: DeepSeek Harness ollama-cloud/deepseek-v4.1-flash (analysed on a live system)
Review — BLOCKHead SHA: Change class: workflow-only (CI config, Security screen: PASS (no secrets/egress, no scope mismatch, org caller pattern Comment intakeComment 6193293583 (@github-actions[bot]):
Comment 6193419223 (@github-actions[bot]):
Blocks
Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
|
RCA — two systematic defects, one of which was my own template working against its users. FINDING 1, the workflow enumeration: the Summary listed this repo's workflow files and omitted FINDING 2, the stale evidence: the How-tested digest set quoted a head that a later push had moved. Every AND THE PART I OWE MOST: my Supersedes template carried the sentence "the How-tested evidence is pasted MISSED CONTROL: in both cases I verified the artefact I had just written rather than the claims the Verified per body: pasted head equals live head, tree distinct, digest current, enumeration absent, and Agent: lead |
Review — BLOCKHead SHA: Change class: workflow-only (CI config; Security screen: PASS — org caller pattern ( Comment intake (all four comments, re-derived against the CURRENT state)
Blocks
Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
|
RCA — the finding's premise is wrong; its demand is right, and both are handled. THE FINDING: the trigger MEASURED, and this is the correction: THE PART THE FINDING GOT RIGHT: my body offered cross-repo provenance and an assertion instead of evidence MISSED CONTROL: I verified that the caller is copied across repos and that its file is byte-identical, but Body-only; the diffs under review are unchanged. Agent: lead |
Review — BLOCKHead SHA: Change class: workflow-only (CI config; Security screen: PASS — org caller pattern ( Comment intake (all six, re-derived against the CURRENT body/diff)
Blocks
Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
Auto-closed: 5 counting verdict(s) on this thread — open a clean PR from scratchClosed after 5 counting verdict(s) reached AI_REVIEW_AUTO_CLOSE_AFTER=5. Verdicts: 5 BLOCK, 0 engine/eval INCONCLUSIVE. 0 INCONCLUSIVE verdict(s) excluded as clear provider/GitHub infrastructure failures. The rule: fix every BLOCK finding and resolve any engine condition, then open a clean pull request from a fresh branch and thread. Never push, re-run, or reopen this closed thread. This is a policy action, not a code finding; the validator verdict on this run stands. |
|
RESOLVED — superseded by #10 This thread reached its 5th counting verdict and was auto-closed; it stays closed. #10 carries the same Agent: lead |
…ource (#10) #9 was auto-closed at the review threshold and main is unchanged, so this repository has no caller yet. This installs the file verbatim from its source in opencharly/plugin-box, which now carries both fixes: the comment is attributed rather than asserting another repository's history, and the readiness probe's bounds are named env values rather than unnamed inline literals (R3). Digest 5cbde9af9fb349b205eeb5ac61d28ea9ca978f0c837245a1c8bb974b965622de, matching the source and every corrected copy. Assisted-by: DeepSeek Harness ollama-cloud/deepseek-v4.1-flash (analysed on a live system) Co-authored-by: charly <charly@opencharly.ai>
Summary
Installs
.github/workflows/tag-on-merge.yml— the org-wide tag-on-merge dispatcher —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.dispatcher it calls (the dispatcher's only job is
tag-and-changelog), so this is one copy of oneprobe, not a duplicated abstraction.
wait-for-mergejob (github-script, abounded 20-second readiness poll against a 5-minute deadline). Measured: the caller defines it;
the org's reusable dispatcher defines a DIFFERENT job (
tag-and-changelog) and carries 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.
Rollout (operator-authorized): reconcile 423 per-repo tag-on-merge callers still on the mutable Node 20 action .github#204 — blocked: its pre-push hook refuses every push with "The
installed Prettier executable is unavailable". Its Issues are disabled, so the finding is recorded
on #204 as well.
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,
no candy, no schema, no pin, no runtime code. The installer it invokes is the org's own file and is
unchanged.
On the trigger's liveness, evidenced on THIS repo. The caller fires on
workflow_run: workflows: ["charly/pr-validator"], which matches a workflow's NAME, not a checkcontext. Measured here:
gh api repos/opencharly/dsh-github/actions/runs?per_page=50filtered toname == charly/pr-validatorreturns 14 runs (14:03Z completed/failure, 13:29Z completed/failure, 13:09Z completed/failure), and the check context they report on thishead is
validate / validate— the org-required validator, which the org ruleset runs in every repositorywithout registering it in the repo's own
.github/workflows(this repo's registered workflows areci.ymlandclawsweeper-dispatch.ymlonly). The workflow file itself is namedcharly/pr-validator(org-wide-pr-validator-required.yml, line 20), so theworkflows:entrymatches and the trigger fires.
Supersedes
#8 — 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 re-derived at this head and verified to match it, the rule section answers every applicable rule, and no literal escape remains. Nothing was pushed to the closed thread.
Assisted-by: DeepSeek Harness ollama-cloud/deepseek-v4.1-flash (analysed on a live system)