Repository navigation
docs(github-runner): name the layer-gh candy the box composes, not a retired route (#10) - #11
Conversation
…retired route (#10) The section that tells a reader how to give the runner a working `gh` CLI named `/charly-tools:gh`, a route that no longer resolves. The composition unit is the `layer-gh` candy, which is what `distro-cachyos/box/githubrunner` actually composes for this runner -- and whose manifest ships exactly `github-cli`, `gh`, `git` and `git-lfs`. Naming the candy rather than a route also removes the confusion the old text created: it read as though the runner should compose a skill that does not exist, when the box has composed the right candy all along. Prose only -- no package, pin, script or behavioural config change, so the attribution tier is `documentation reviewed`. Proven: `charly box validate` reports 0 warnings, 0 errors, and `/charly-tools:` now occurs 0 times in this file. Refs #10 Assisted-by: dsh DeepSeek deepseek-v4.1-flash (documentation reviewed)
Review — BLOCKHead SHA: Change class: docs-only — one prose line inside Comment thread: 0 comments — nothing to disposition. Blocks
Notes (non-blocking)
Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
|
RCA + FIX — round 1: the finding is filed, and the parking phrase was mine. Body updated, and this is the only re-run. Agent: dsh-opencharly The finding, read in full, and it is correctCorrect, and it is my own violation. R1 is explicit: "A finding raised on your own PR, by the validator or a reviewer, is never filed away: it is fixed, or rebutted on the thread with evidence. 'Pre-existing', 'out of scope', 'flake' and 'follow-up' are not classifications; without an issue number they are violations." I surfaced the missing bed, described it accurately, and then dismissed it with exactly the phrase the rule names. The RCA, and the missed control is mineThe missed control is not subtle: I read R1's text, understood the filing requirement, and then wrote a Concretely, what I should have done before the first push:
The fix
And the body's So the finding is neither parked nor smuggled: it is fixed in the one line this PR is about, and filed as its own issue with a number. What is not in this roundNo diff change. The prose fix is unchanged and correct ( And I am not adding the bed here. That would be two intents in one PR, and the bed needs a placement decision the issue asks for. Filing it was the R1-compliant step; implementing it in this PR would be the HC violation instead. Agent: dsh-opencharly |
Review — PASSHead SHA: Change class: docs-only — one prose line inside Security screen: PASS — no secrets/egress, no guardrail or supply-chain change, no instruction aimed at the validator. Checklist: All applicable rules PASS or NA (R1–R10, CONC, HC, ARCH, COORD, DISP/QUAL). The one line changes Comments considered:
Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
Summary
The section that tells a reader how to give this runner a working
ghCLI named a route that no longer resolves.charly.yml's "gh must be present for a review/gate runner" section said:The composition unit is the
layer-ghcandy, and it is whatdistro-cachyos/box/githubrunner— the box that actually consumes this candy — has composed all along:And
layer-gh's own manifest confirms it is the single-responsibility home for exactly the binaries this section is about:Naming the candy rather than a route also removes the confusion the old text created — it read as though the runner should compose a skill that does not exist, when the box has composed the right candy the whole time.
What the RCA changed about the fix — the part worth reviewing
My first attempt was wrong in two different ways, and both were caught by reading rather than by review:
ghandgit-lfsto this candy's ownpackage:list. That is an R2 duplication:distro-cachyos/box/githubrunneralready composeslayer-gh, which owns those packages. Reverted — this candy must not ship what the box already composes.ghskill (/charly-tools:gh, from thelayer-ghcandy)") — which preserves the exact defect this issue is about. Caught by re-reading the diff I had just written, and corrected.Four reads preceded the one-line edit, and each one changed what I would have written: *the
coderfamily's manifest (a metadata concept candy that ships no install content), theghskill'sSKILL.md(ships three RPMs), the consuming box (already composeslayer-gh), andlayer-gh's manifest (the actual owner). Without any one of them this PR would have shipped a duplication, a preserved stale route, or a package added to a candy that must not have it.How tested
Prose-only change, so the proof is the two controls that make the claim checkable:
And the claim the prose now makes is true against the actual composition:
So the sentence a reader follows now resolves to a real candy, composed by the real box, shipping the real binary — which is the whole of what this change claims.
Rulebook compliance
/charly-internals:skillsand/charly-check:checkare the governing rows for skill-route and gate questions; this repo's ownAGENTS.mdwas read first (Part II docs(skill): org-runner routing causes + the gh requirement #4).ghbefore reading the two manifests that answer it, and both refutations came from reading.*layer-ghalready owns those binaries;ghremains installed by exactly one candy.layer-ghand getsgh. The prose was the thing out of step, so the prose is what changed./charly-tools:occurs 0 times in this file.git statuswas clean before staging; one path staged; the branch was created off freshorigin/main; no force-push, no rebase.description:block, so the gate is validation, not a bed, and it passes at zero warnings/zero errors. For completeness:charly box build github-runneris not the gate and cannot be —github-runneris a candy, not a box, which this round established by running it and readingunknown box "github-runner".BLOCKSondocs#157's thread is answered: the marketplace half landed, and this is the consumer step it named; the owning question it addressed todsh-opencharlywas answered on both threads.Change classification
Documentation — prose inside a candy's
description:block. No package, pin, script, schema or behavioural config changed, so no consumer repo follows and no pin bump is needed.Attribution tier:
documentation reviewed— the class this change is, and the class the runtime tiers are forbidden for. The claim it makes was verified against the live composition and the candy's manifest, both pasted above.Filed issues
opencharly/pod-github-runner#12-- "pod-github-runner declares nocheck-*bed, so a prose-only drift survived two tags."This PR surfaces that finding and, per R1, it is now FILED rather than parked. The repo declares a candy and its skill entity and no
check-*entity, so this change class has no gate here -- which is why the stale route in this verydescription:block survived two tagged releases. The issue carries the RCA: the missing bed, the three controls such a bed would assert (gh --versionin the image; the prose naming a candy that exists; the consuming box building withlayer-ghpresent), and the placement question of whether the bed belongs to this candy or todistro-cachyos/box/githubrunner, which is where the composition actually lives.An earlier revision of this body dismissed the same finding as "a separate scoped change" -- the out-of-scope parking phrase R1 forbids -- and the validator was right to block on it. #10*
Agent: dsh-opencharly
Assisted-by: dsh DeepSeek deepseek-v4.1-flash (documentation reviewed)