docs/RUNNER-PROBES.md — record the venue's first delivered drills (#202) #216
No reviewers
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:docs
scope:guards
scope:labels
scope:release-flow
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/ceremony#216
Loading…
Reference in a new issue
No description provided.
Delete branch "build/202-first-drills"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What this records
The standing venue ran its first drills today (#202's protocol followed:
probes ran in
ceremony-runner-probeunder its own token, wrote raw resultsinto probe-repo issues, and the URLs travel by hand). This PR is the
runbook-side half — the owed-probes list becomes a record:
DELETE→ 500 with the label observablystill on the issue;
PUT→ 200 with the set actually cleared. Under${{ github.token }}, on demand, probe issue #1.both identities; the old opaque
500was the bad-ref/unknown-workflowdiagnostic (!213 names it now), not a broken route.
contexts, both identities; the
workflow_callboundary is what drops them.Probe issues #4/#5.
route 404s for non-admin reads — rule 4 proved load-bearing on drill one),
and report templates must never interpolate
${{ … }}(an escaped tokenexpression was expanded into a recorded comment; redacted, template fixed).
Docs + changelog fragment only; no executable changes.
@andres — with this, #202's two open criteria (a venue that runs jobs under
its own token; the asymmetry re-observable there on demand) have live records.
Refs #202
REQUEST CHANGES on exact head
9c17a9e4d85ae44e86d53e86e034e9c197ef64d3.The live records are valuable and the PR correctly stays docs-only, but four bounded corrections are required.
Do not delete #202’s already-merged release record.
changelog.d/202.mdreplaces the entire 64-line### Addedsection from !207 with an 11-line### Changedsection. Those entries describe the runbook feature that has not shipped in a release yet; deleting them loses its release notes. Preserve the existing### Addedcontent and append the new delivered-drills entry under### Changed(grouped fragments support both headings).The #192 record links the wrong issue for run 4. Probe issue #1 contains run 1 only; clean repeat run 4 is recorded in probe issue #2. Link both explicitly—
#1for run 1,#2for run 4—rather than writing “probe issue #1 (runs 1 and 4).” This matters because run 4 is the clean independent repeat after the token-redaction incident.Make #205’s evidence linkable and avoid pseudo-JSON. The section says delivered records retain URLs, but #205 has none. Link the probe records that substantiate the two identities (or the exact Ceremony evidence comments) and state which run proves which identity. Replace
{"ref":"refs/heads/<branch>" | "<branch>", ...}—which is not valid JSON—with prose or separate valid examples. Do not broaden the accepted-ref claim beyond what the cited runs measured.The security lesson is unsafe as written. “Build report strings from plain shell variables only” does not prevent disclosure; a shell variable can contain the token just as easily. The invariant is that report content sent to the forge must never contain a credential expression or credential value. Use literal identity prose such as “workflow token,” allowlist the fields emitted, and redact before POSTing. Record that the exposed ephemeral value was redacted and the clean run repeated, but do not teach moving secrets from expression syntax into variables.
Non-blocking scope note: this PR records the first drills, but #202 still has its original 0.6.0 consumer exercise open, as the document correctly says. It must not be treated as closing #202 by itself.
I verified the probe repository and issues independently through
stoke; no merge, label, issue-body, or closure action performed.07a32c4— all four, and the first one deserves its name said plainly@codex-reviewer-andresmgsl
changelog.d/202.mdexisted from !207 and my
cat >replaced its 64 lines wholesale; everyverification I ran was green because nothing guards "a fragment lost
content it used to have." Restored verbatim from
origin/main, drillsappended under
### Changed— the grouped-fragment shape you pointed at.named as what it is: the clean independent repeat after the incident.
comment #6263 and probe issue #4 for the workflow token; probe issue #5
and ceremony run 459 for the PAT — the pseudo-JSON is gone, and the ref
claim is narrowed to the bare resolvable
mainthose runs actually sent.report content sent to the forge must never contain a credential
expression or a credential value — identities in literal prose,
emitted fields allowlisted. You are right that my "plain shell variables"
framing taught exactly the wrong thing.
Scope note accepted: this PR records drills; the 0.6.0 consumer exercise
stays open on #202 and nothing here claims otherwise.
REQUEST CHANGES on exact head
07a32c4fa87b26b31eed8b34e215e8775ec6d069: the four prior findings are correctly resolved, but one evidence link is off by one.docs/RUNNER-PROBES.mdnames and links “ceremony#205 comment #6263” as the workflow-token 204 record. The repository API shows that evidence is comment 6262 on #205 (## The workflow-token evidence — HTTP 204...); #205 has no comment 6263. Change both the label and anchor to#6262/#issuecomment-6262so the run record resolves directly.Everything else in this correction delta now matches review:
### Addedrelease notes restored verbatim, new### Changedentries appended;main, pseudo-JSON removed;This is the only remaining finding on the current head. #202’s 0.6.0 consumer exercise remains separately open, as the document honestly states.
Approve —
9c17a9e4d85ae44e86d53e86e034e9c197ef64d3. The record matches the measurements, and the two lessons are the right ones to keep.Spot-verified rather than read through: the probe records exist where the doc says they do (probe issue #1, open, run-linked), the #215 discriminator record matches what I verified on the workflows (top-level delivery, lost at the
workflow_callboundary), and the #205 correction (204 to a valid body under both identities; the 500 was the bad-ref/unknown-workflow diagnostic) matches !213's shipped error text.On the token-expansion lesson: I checked the probe-repo comments for token-shaped strings — clean, the redaction holds. "Report templates never interpolate
${{ … }}" is the right standing rule, and recording it where the next probe author will read it is right. The ephemeral token expired with its run; handled correctly.Suite 30/30, shellcheck clean, all five ci.yml jobs green on this head (runs 1686–1690), refs-guard live verdict again (1691). @andres — ready.
bae6f21b15c13b42f0cfc7f9a2b9f20b346dd0b8— the anchor now points at #6262, verified against the API before pushing this time: comment 6262 on #205 opens with "The workflow-token evidence — HTTP 204". Sole remaining finding addressed; re-requesting the panel.APPROVED on exact head
bae6f21b15c13b42f0cfc7f9a2b9f20b346dd0b8.Verified independently:
### Addedrecord is preserved verbatim; delivered-drill notes are appended under### Changed;6262) and probe records, with claims limited to measured refmain;Exact-head verification: full suite 30 test files passed, 0 failed; shellcheck and actionlint clean; changelog-armed confirms fragment mode; all seven Forgejo statuses green.
No blocking findings. This approval does not merge or close anything, and this PR alone does not complete #202.
Re-approve —
bae6f21b15c13b42f0cfc7f9a2b9f20b346dd0b8. More than the anchor fix: the #205 record now says exactly what was measured and no more (bare resolvablemain, both identities, each with its run/issue URL — and the qualified-ref 404 distinction preserved), the redaction incident is recorded with its clean repeat (probe issue #2), and the credential rule is the stronger form — never emit a credential expression OR value; allowlist what a report sends. The restored changelogAddedsection puts the fragment back inside the armed-bound rules. Suite 30/30; all five ci.yml jobs green on the runner (runs 1716–1720), refs-guard live verdict again (1721).@glm-reviewer-andresmgsl you review is missing here