docs: document stoke contribution facts #47
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:ci
scope:cli
scope:docs
scope:manifests
scope:packaging
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/stoke#47
Loading…
Reference in a new issue
No description provided.
Delete branch "build/46-contributing"
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?
Closes #46
Adds the repository-specific contribution facts that the root and vendored ceremony routers require.
Acceptance criteria
CONTRIBUTING.mdresolves all five existing pointers..github/labels.confpanel=in both directions.scope:*name set equals.github/labels.confin both directions.package.jsonplusrequire()/module.exportsusage and absence of ESM declarations undersrc/.node --test, all seventest/*.test.jsfiles importingnode:test, and no framework dependency.engines.nodeis>=22.12.0.scripts/*.shfirst line is#!/usr/bin/env bash.git diff --name-only origin/main...HEAD -- .ceremony/ AGENTS.mdis empty.npm test && npm run check:governancepasses on the completed tree (130 tests; 4 identities and 5 scopes validated).Worklog
CONTRIBUTING.mdonly.Test gap
Roster parity with
CONTRIBUTING.mdhas no automated repository guard. The two-way comparison was performed manually for this head; reviewers should repeat the specified negative/manual check.Round log
Round at
3ea8eb90Round passed with no written reply.
docs: document stoke contribution factsto WIP: docs: document stoke contribution facts📣 round answered at head
3ea8eb9032WIP: docs: document stoke contribution factsto docs: document stoke contribution facts🔎 reviewing head
3ea8eb9032CONTRIBUTING.mdadded at root; the five router pointers (rootAGENTS.mdL7,.ceremony/{AGENTS,BUILDER,LABELS,REVIEWER}.md) now have a target..github/labels.confpanel=— empty (4 identities).scope:*two-way set diff vslabels.confrows — empty (5 names).src/,node:testin all 7test/*.test.jswith no framework dep,engines.node >=22.12.0,#!/usr/bin/env bashon all 3scripts/*.sh).drills/; tag-driven.forgejo/workflows/release.yml; label 252blocker:drill-pendingcarries zero items atstate=all). Takes no position on #27.git diff --name-only origin/main...HEAD -- .ceremony/ AGENTS.md— empty.npm ci && npm test && npm run check:governance— 130/130 pass; governance 4 identities / 5 scopes.Verdict submitted.
🔎 reviewing head
3ea8eb9032🔎 reviewing head
3ea8eb90323ea8eb9(13:17:37Z); worktree removedAPPROVE — head
3ea8eb903267dd10f6557bcc5e846772415b83c1, reviewed whole in a detached worktree at that SHA.The PR adds one file,
CONTRIBUTING.md(55 lines), and nothing else. That is exactly what #46 asked for.Acceptance criteria — all met, each measured
CONTRIBUTING.mdadded; rootAGENTS.mdL7 and the four.ceremony/pointers now have a targetlabels.confpanel=, two-wayscope:*set equal, two-waygit diff --name-only <base>..<head> -- .ceremony/ AGENTS.mdemptyWhat I ran
npm ci && npm test→# pass 130 # fail 0, rc=0.npm run check:governance→governance: 4 identities resolved; 5 scope rows valid, rc=0. (Thenpm cimatters: without it the suite reports phantom failures in a fresh worktree.)panel=split on whitespace vs. the backticked identities in the roster table, both sorted,diff→ empty. Same for thescope:*names → empty."type": "commonjs"inpackage.jsonandgrep -rn '^import |^export |export default' src/→ no hits across all four files, includingrepo-sync.js; all seventest/*.test.jsimportnode:test,"test": "node --test", and the only dependency iscommander;engines.nodeis>=22.12.0; all threescripts/*.shstart with#!/usr/bin/env bash.drills/directory in the tree;.forgejo/workflows/release.ymlis stoke's own, triggeredon: push: tags: v*; label id 252 isblocker:drill-pendingon the API and astate=allquery for it returns zero issues. The#27sentence is accurate and neutral — #27 is open,needs-ruling, and does carry the route-A/route-B release question (its finding at L224-239 names the reusable-workflow route); the file says only that route B would update this section..ceremony/andAGENTS.mduntouched: name-only diff over both paths is empty; the diff isA CONTRIBUTING.mdalone..ceremony/mirror for textual overlap — no hits. The one doctrinal line, the single-writer rule, is the spec's own §6.phantom-bot-andresmgsl) into the roster table without touchinglabels.confand re-ran the suite —npm testrc=0,check:governancestill reported "4 identities". The disclosed gap is real, andgrep -rn CONTRIBUTING scripts/ test/ .forgejo/ src/confirms nothing in the repo reads this file. I then restored the tree (git diff --quietclean). The roster and scope parity checks in this verdict were therefore performed by hand, as #46's test plan requires; nothing automated guards them. The PR body's "Test gap" section discloses this correctly, which #46 makes part of the deliverable.What I could not verify
.forgejo/workflows/ci.yml's exact command line (npm ci && npm test && npm run check:governance) locally instead, on node 22, and it is green. The workflow needs a runner advertisingdocker, which I cannot confirm from here..ceremony/,.github/labels.conf,.forgejo/workflows/release.yml) rather than fetching the rendered page.Non-blocking nits (approval is not gated on these)
labels.conf's own scope descriptions have drifted slightly from the tree, and CONTRIBUTING faithfully inherits the drift:scope:clisays "cli.js,api.js,config.js" butsrc/also holdsrepo-sync.js, andscope:docssays "README and docs/" while this new file is a root doc outside both. Restatinglabels.confverbatim is the right call for this PR —labels.confis authoritative and the criterion is set equality, which holds. Correcting the authoritative descriptions is a separate proposal, not this round's work.changelog.d/fragment. Correct for a docs-only change here — the immediately preceding docs PR (#44,6bffd8a) added none either, and no behavior changed. Noting it only so the omission reads as deliberate.The file describes and does not legislate, invents no rule, and stops where the mirror takes over. Approved.
Reviewed at head
3ea8eb9032.Acceptance criteria:
.github/labels.confpanel=both ways (4 identities).scope:*set matches.github/labels.confboth ways (cli, packaging, manifests, ci, docs).drills/directory, tag-driven.forgejo/workflows/release.yml, and zero openblocker:drill-pendingitems; it cites #27 without taking a position.git diff --name-only origin/main...HEAD -- .ceremony/ AGENTS.mdis empty.package.jsondeclares"type": "commonjs"andengines.node >=22.12.0;src/usesrequire()/module.exportswith no top-level ESM import/export; all seventest/*.test.jsimportnode:testand no test framework appears in dependencies; allscripts/*.shstart with#!/usr/bin/env bash.Verification gap:
node/npmare not installed in this box, so I could not runnpm test && npm run check:governancelocally. I relied on the Forgejo Actions status for this head, which reportsci / testandlabels / labelsboth successful.Approving.
Approve — reviewed the whole PR at head
3ea8eb9032in a detached throwaway worktree, against issue #46's acceptance criteria first, then the repo's load-bearing constraints, then the content itself. Every criterion verified by running, not opining:CONTRIBUTING.md(55 lines, six sections in the spec's order).git diff --name-only origin/main...HEAD -- .ceremony/ AGENTS.mdis empty, so the never-overwritten scaffold and the vendored mirror are untouched, and nothing from the issue's out-of-scope list (intake door, docs-sync CI wiring, AGENTS.md edits) was swept in.labels.confpanel=is empty in both directions. This is a manual diff — no automated guard exists (issue #46's test plan item 6 names the gap;scripts/check-governance.jsvalidateslabels.confalone and never reads CONTRIBUTING). I performed the hand diff as the issue directs.scope:*table rows againstlabels.confrows is empty in both directions.package.jsondeclares"type": "commonjs"; all foursrc/*.jsuserequire/module.exportswith zero ESM declarations; all seventest/*.test.jsimportnode:test,npm testrunsnode --test, and the only dependency iscommander(no test framework);engines.nodeis>=22.12.0; all threescripts/*.shopen with#!/usr/bin/env bash.drills/directory exists;.forgejo/workflows/release.ymlis tag-driven (on: push: tags: 'v*') and stoke's own;blocker:drill-pendingis label id 252 (confirmed via the labels API) and zero open items carry it (confirmed via the issues API). Takes no position on #27's alternatives..ceremony/first; no vendored doctrine restated.npm ci && npm test→ 130/130 pass;npm run check:governance→ "4 identities resolved; 5 scope rows valid" — matching the PR body's claims. Forge CI rollup on the head reports success.Could not verify / relied on instead: nothing material. I did not read the two CI jobs' logs individually (the rollup plus my own full-suite local run at the exact head is the stronger evidence). No changelog entry was added; that is correct here —
changelog.d/records behavior changes (#23/#36/#43) and this PR is docs-only.Closing keyword:
Closes #46is the intended shape — every acceptance criterion is checkable pre-merge — and no stray closing keyword precedes any other issue number in the PR body.Non-blocking nits: none.