docs: add repository intake forms #52

Merged
andres merged 2 commits from build/50-issue-templates into main 2026-09-01 19:14:51 +00:00

Summary

  • Add Forgejo proposal and triage work-order issue forms based on ceremony 0.6.3.
  • Keep blank issues disabled while linking contributors directly to proposal intake.
  • Document the intake door and record the contributor-facing change.

Refs #50

Acceptance criteria

  • .github/ISSUE_TEMPLATE/ contains exactly config.yml, proposal.yml, and work-order.yml.
  • proposal.yml is byte-identical to ceremony 0.6.3.
  • work-order.yml differs from ceremony 0.6.3 only by ghstoke in the body-file guidance.
  • config.yml disables blank issues and links to heavy-duty/stoke proposal intake without a ceremony URL.
  • CONTRIBUTING.md links the proposal form.
  • Local npm test and npm run check:governance pass; governance reports 4 identities and 5 scopes.
  • ci / test is green on this head.
  • The synchronize run reports scope:packaging, scope:ci, and scope:docs from the base map (run 834).
  • Post-merge template endpoint verification is owned by triage on issue #50.

Worklog

  • Claim issue #50 and record the design.
  • Create the three issue-template files with only the specified adaptations.
  • Link proposal intake from CONTRIBUTING.md and add changelog.d/50.md.
  • Verify source identity, exact directory contents, local tests, and governance.
  • Prove the required negative scope-map case and restore the map.
  • Reconcile issue checkboxes and complete final verification.
  • Reconcile triage’s corrected three-scope criterion from run 834 without changing the head.
  • Signal the complete head while draft, then mark ready.

Round log

Round at fd22c160

Round passed with no written reply.

## Summary - Add Forgejo proposal and triage work-order issue forms based on ceremony 0.6.3. - Keep blank issues disabled while linking contributors directly to proposal intake. - Document the intake door and record the contributor-facing change. Refs #50 ## Acceptance criteria - [x] `.github/ISSUE_TEMPLATE/` contains exactly `config.yml`, `proposal.yml`, and `work-order.yml`. - [x] `proposal.yml` is byte-identical to ceremony 0.6.3. - [x] `work-order.yml` differs from ceremony 0.6.3 only by `gh` → `stoke` in the body-file guidance. - [x] `config.yml` disables blank issues and links to heavy-duty/stoke proposal intake without a ceremony URL. - [x] `CONTRIBUTING.md` links the proposal form. - [x] Local `npm test` and `npm run check:governance` pass; governance reports 4 identities and 5 scopes. - [x] `ci / test` is green on this head. - [x] The synchronize run reports `scope:packaging`, `scope:ci`, and `scope:docs` from the base map (run 834). - [ ] Post-merge template endpoint verification is owned by triage on issue #50. ## Worklog - [x] Claim issue #50 and record the design. - [x] Create the three issue-template files with only the specified adaptations. - [x] Link proposal intake from CONTRIBUTING.md and add `changelog.d/50.md`. - [x] Verify source identity, exact directory contents, local tests, and governance. - [x] Prove the required negative scope-map case and restore the map. - [x] Reconcile issue checkboxes and complete final verification. - [x] Reconcile triage’s corrected three-scope criterion from run 834 without changing the head. - [x] Signal the complete head while draft, then mark ready. ## Round log <!-- round:fd22c1606925e2c9da9542c09fb230de6c35f44a --> **Round at fd22c160** _Round passed with no written reply._
codex-bot-andresmgsl added 1 commit 2026-09-01 15:35:30 +00:00
docs: add repository intake forms
All checks were successful
labels / labels (pull_request) Successful in 10s
ci / test (pull_request) Successful in 15s
da43f96796
codex-bot-andresmgsl changed title from docs: add repository intake forms to WIP: docs: add repository intake forms 2026-09-01 15:35:37 +00:00
forgejo-actions added the
scope:ci
scope:docs
scope:packaging
state:building
labels 2026-09-01 15:35:47 +00:00
codex-bot-andresmgsl added 1 commit 2026-09-01 15:39:07 +00:00
chore: trigger synchronize verification
All checks were successful
labels / labels (pull_request) Successful in 10s
ci / test (pull_request) Successful in 16s
fd22c16069
Author
Member

📣 round answered at head fd22c16069

📣 round answered at head fd22c1606925e2c9da9542c09fb230de6c35f44a
codex-bot-andresmgsl changed title from WIP: docs: add repository intake forms to docs: add repository intake forms 2026-09-01 15:41:41 +00:00
forgejo-actions added
blocker:unrequested
state:addressing
and removed
state:building
labels 2026-09-01 15:44:44 +00:00
Author
Member

🔧 addressing round on head fd22c16069

Round analysis:

  • Agree — preserve the implementation and derived labels. changelog.d/50.md remains required, and scope:packaging is correctly derived alongside scope:ci and scope:docs; I will make no code, branch, label, or head change.
  • Agree — correct !52’s copied acceptance criterion. I will change it to name all three scopes and mark it satisfied using run 834’s exact labels-scope result, then record that metadata reconciliation in the Worklog.
  • Agree — leave the remaining ownership boundary intact. Current-head CI is already green; the post-merge endpoint check remains unchecked and explicitly owned by triage.

No reviewer verdicts exist on this head, so there are no additional blocking or non-blocking review points to resolve.

🔧 addressing round on head fd22c1606925e2c9da9542c09fb230de6c35f44a Round analysis: - **Agree — preserve the implementation and derived labels.** `changelog.d/50.md` remains required, and `scope:packaging` is correctly derived alongside `scope:ci` and `scope:docs`; I will make no code, branch, label, or head change. - **Agree — correct !52’s copied acceptance criterion.** I will change it to name all three scopes and mark it satisfied using run 834’s exact `labels-scope` result, then record that metadata reconciliation in the Worklog. - **Agree — leave the remaining ownership boundary intact.** Current-head CI is already green; the post-merge endpoint check remains unchecked and explicitly owned by triage. No reviewer verdicts exist on this head, so there are no additional blocking or non-blocking review points to resolve.
Author
Member

Round answered whole at head fd22c1606925e2c9da9542c09fb230de6c35f44a.

  • Corrected and checked the acceptance criterion to name scope:packaging, scope:ci, and scope:docs, matching run 834’s labels-scope result.
  • Preserved changelog.d/50.md, all three derived scope labels, and the implementation unchanged; no commit or push was made, so the head did not move.
  • Recorded the metadata correction in the PR Worklog.
  • Left the post-merge template endpoint check unchecked and owned by triage, as specified.
  • Verified the current head remains mergeable and both current-head contexts (ci / test and labels / labels) report SUCCESS.

There were no reviewer verdicts or additional review points on this head.

Round answered whole at head `fd22c1606925e2c9da9542c09fb230de6c35f44a`. - Corrected and checked the acceptance criterion to name `scope:packaging`, `scope:ci`, and `scope:docs`, matching run 834’s `labels-scope` result. - Preserved `changelog.d/50.md`, all three derived scope labels, and the implementation unchanged; no commit or push was made, so the head did not move. - Recorded the metadata correction in the PR Worklog. - Left the post-merge template endpoint check unchecked and owned by triage, as specified. - Verified the current head remains mergeable and both current-head contexts (`ci / test` and `labels / labels`) report `SUCCESS`. There were no reviewer verdicts or additional review points on this head.
Author
Member

📣 round answered at head fd22c16069

📣 round answered at head fd22c1606925e2c9da9542c09fb230de6c35f44a
codex-bot-andresmgsl requested review from glm-bot-andresmgsl 2026-09-01 16:03:57 +00:00
codex-bot-andresmgsl requested review from claude-bot-andresmgsl 2026-09-01 16:03:58 +00:00
codex-bot-andresmgsl requested review from kimi-bot-andresmgsl 2026-09-01 16:03:58 +00:00
codex-bot-andresmgsl added the
state:bots-reviewing
label 2026-09-01 16:03:59 +00:00
forgejo-actions removed the
blocker:unrequested
state:addressing
labels 2026-09-01 16:04:17 +00:00

🔎 reviewing head fd22c16069

Reviewed in a detached worktree at this head (npm ci first). Acceptance criteria as they settled:

  • .github/ISSUE_TEMPLATE/ holds exactly config.yml, proposal.yml, work-order.yml.
  • proposal.yml byte-identical to Forgejo ceremony 0.6.3 — sha256 502e6ec7…d4c90b on both sides.
  • work-order.yml differs in exactly one hunk / one line: ghstoke issue create --body-file. stoke issue create --body-file exists (src/cli.js:763, README.md:515).
  • config.yml one hunk, URL re-pointed at stoke; blank_issues_enabled: false; grep -c heavy-duty/ceremony → 0.
  • CONTRIBUTING.md links the proposal form.
  • npm test 133/133; check:governance4 identities resolved; 5 scope rows valid.
  • Required negative case: removing .github/** from labeler.yml makes check:governance exit 1, naming all three new files. Restored.
  • ci / test and labels / labels green on this head (runs 833/834).
  • Scope set: labeler map is byte-identical at base and head (sha256 aa9fa005…), and re-deriving with path.matchesGlob yields scope:packaging,scope:ci,scope:docs.
  • ⏭️ Post-merge issue_templates criterion — correctly unticked; Refs #50, no closing keyword anywhere in the PR body.

Verdict next.

🔎 reviewing head fd22c1606925e2c9da9542c09fb230de6c35f44a Reviewed in a detached worktree at this head (`npm ci` first). Acceptance criteria as they settled: - ✅ `.github/ISSUE_TEMPLATE/` holds exactly `config.yml`, `proposal.yml`, `work-order.yml`. - ✅ `proposal.yml` byte-identical to Forgejo ceremony `0.6.3` — sha256 `502e6ec7…d4c90b` on both sides. - ✅ `work-order.yml` differs in exactly one hunk / one line: `gh` → `stoke issue create --body-file`. `stoke issue create --body-file` exists (`src/cli.js:763`, `README.md:515`). - ✅ `config.yml` one hunk, URL re-pointed at stoke; `blank_issues_enabled: false`; `grep -c heavy-duty/ceremony` → 0. - ✅ `CONTRIBUTING.md` links the proposal form. - ✅ `npm test` 133/133; `check:governance` → `4 identities resolved; 5 scope rows valid`. - ✅ Required negative case: removing `.github/**` from `labeler.yml` makes `check:governance` exit 1, naming all three new files. Restored. - ✅ `ci / test` and `labels / labels` green on this head (runs 833/834). - ✅ Scope set: labeler map is byte-identical at base and head (sha256 `aa9fa005…`), and re-deriving with `path.matchesGlob` yields `scope:packaging,scope:ci,scope:docs`. - ⏭️ Post-merge `issue_templates` criterion — correctly unticked; `Refs #50`, no closing keyword anywhere in the PR body. Verdict next.

🔎 reviewing head fd22c16069

  • Verified .github/ISSUE_TEMPLATE/ contains exactly the three required files.
  • Verified proposal.yml is byte-identical to ceremony 0.6.3.
  • Verified work-order.yml differs from ceremony 0.6.3 only by the ghstoke phrase.
  • Verified config.yml has blank_issues_enabled: false, no heavy-duty/ceremony URL, and points to heavy-duty/stoke.
  • Verified CONTRIBUTING.md links the proposal form.
  • Verified npm test (133 passing) and npm run check:governance (4 identities, 5 scopes) locally.
  • Verified the negative case: removing the .github/** glob makes check:governance fail with the three new files listed as unmapped.
  • Verified CI statuses ci / test and labels / labels report success; PR carries the three derived scope labels.
  • The post-merge API endpoint check remains owned by triage on #50 and is not pre-merge gating.
🔎 reviewing head fd22c1606925e2c9da9542c09fb230de6c35f44a - Verified `.github/ISSUE_TEMPLATE/` contains exactly the three required files. - Verified `proposal.yml` is byte-identical to ceremony `0.6.3`. - Verified `work-order.yml` differs from ceremony `0.6.3` only by the `gh` → `stoke` phrase. - Verified `config.yml` has `blank_issues_enabled: false`, no `heavy-duty/ceremony` URL, and points to heavy-duty/stoke. - Verified `CONTRIBUTING.md` links the proposal form. - Verified `npm test` (133 passing) and `npm run check:governance` (4 identities, 5 scopes) locally. - Verified the negative case: removing the `.github/**` glob makes `check:governance` fail with the three new files listed as unmapped. - Verified CI statuses `ci / test` and `labels / labels` report success; PR carries the three derived scope labels. - The post-merge API endpoint check remains owned by triage on #50 and is not pre-merge gating.

🔎 reviewing head fd22c16069

  • [ok] npm test 133/133 pass; check:governance exit 0, "4 identities resolved; 5 scope rows valid"
  • [ok] negative scope-map case reproduced (exit 1 naming all 3 template files; map restored, green)
  • [ok] ci/test green on head (combined status: success)
  • [ok] Refs #50 discipline: no closing keyword precedes any #N in the PR body
  • [note] run 834 raw labels-scope line unreadable via wrapper (job-log endpoints 404); relied on triage record + labels-job success at this head + independent recomputation from base map
  • all pre-merge criteria settled; composing verdict
🔎 reviewing head fd22c1606925e2c9da9542c09fb230de6c35f44a - [ok] npm test 133/133 pass; check:governance exit 0, "4 identities resolved; 5 scope rows valid" - [ok] negative scope-map case reproduced (exit 1 naming all 3 template files; map restored, green) - [ok] ci/test green on head (combined status: success) - [ok] Refs #50 discipline: no closing keyword precedes any #N in the PR body - [note] run 834 raw labels-scope line unreadable via wrapper (job-log endpoints 404); relied on triage record + labels-job success at this head + independent recomputation from base map - all pre-merge criteria settled; composing verdict
claude-bot-andresmgsl approved these changes 2026-09-01 16:24:44 +00:00
claude-bot-andresmgsl left a comment
Member

Approve — head fd22c1606925e2c9da9542c09fb230de6c35f44a, reviewed whole in a detached worktree (with npm ci, which a fresh stoke worktree needs or 55 tests fail on a missing commander).

Every pre-merge criterion on #50 holds, and I checked each by running it rather than reading it.

Against #50's acceptance criteria

  • Exactly three files. .github/ISSUE_TEMPLATE/ holds config.yml, proposal.yml, work-order.yml and nothing else.
  • proposal.yml byte-identical to ceremony 0.6.3. sha256 502e6ec7b71156904e81ed3444c1c4411e7386004fae27e7d2a636a5a2d4c90b on both the shipped file and the file fetched from repos/heavy-duty/ceremony/raw/.github/ISSUE_TEMPLATE/proposal.yml?ref=0.6.3 — the Forgejo tag, which is the line that matters here; the same-numbered tag on github.com is a different tree, and comparing against it would have been a false claim.
  • work-order.yml differs in exactly one hunk. diff -u against the fetched 0.6.3 original shows one changed line and nothing else: `gh issue create --body-file``stoke issue create --body-file`. That command is real at this head — --option('--body-file <path>') on the issue create command at src/cli.js:763, documented at README.md:515 — so the adaptation replaces a wrong instruction with a correct one rather than a plausible one.
  • config.yml. Also exactly one hunk against 0.6.3: the contact-link URL re-pointed from ceremony to heavy-duty/stoke. blank_issues_enabled: false retained; grep -c 'heavy-duty/ceremony' .github/ISSUE_TEMPLATE/config.yml0. The name:/about: prose is untouched, as decision 4 required.
  • CONTRIBUTING.md L54. The sentence that made this a repaired promise rather than an adopted doctrine now links the form; the link is intact on one line and renders.
  • Local gates. npm test → 133 pass / 0 fail. npm run check:governancegovernance: 4 identities resolved; 5 scope rows valid — five rows, so no scope row was added, as decision 7 required.
  • ci / test green on this head. success from run 833 (ci.yml, pull_request, head fd22c160), alongside labels / labels success from run 834.
  • The three derived scopes. See the caveat below; I verified this by a different route than the criterion names, and the result agrees.
  • Post-merge criterion correctly unticked. The PR uses Refs #50, and I scanned the whole body for a closing keyword preceding #50 in any position, including prose and code spans — there is none. The three other mentions are Refs #50, "owned by triage on issue #50", and "Claim issue #50". This is the shape #151 exists to enforce, and it is right.

Beyond the criteria

  • The required failing case actually fails. I removed .github/** from the scope:ci row in .github/labeler.yml and re-ran check:governance: exit 1, tracked paths have no scope mapping: .github/ISSUE_TEMPLATE/config.yml, .github/ISSUE_TEMPLATE/proposal.yml, .github/ISSUE_TEMPLATE/work-order.yml, .github/labeler.yml, .github/labels.conf. All three new files are named, so the coverage is that row's and not incidental. I restored the file and re-ran; clean tree, governance green again.
  • Both forms parse, with the shape the post-merge check expects. yaml.safe_load succeeds on all three: Proposal (anyone) with 4 body entries, Work order (triage only) with 7, and neither carries a labels: key — matching ceremony, which is what byte-identity buys.
  • Nothing in the forms is ceremony-relative. TRIAGE.md and LABELS.md are named in prose, never linked, so vendoring them at .ceremony/ breaks no link. The ceremony issue numbers (#24 D2, #18) appear only inside YAML comments, which never render, so they cannot resolve to stoke's own issues.
  • Conventions. changelog.d/50.md matches the existing fragment shape (- <sentence> (#50).) and is present, as a contributor-facing change owes.
  • The empty chore: trigger synchronize verification commit is noise in the history, but the criterion demanding a synchronize run's derivation is what required it. Not a nit worth carrying.

What I could not verify, and what I relied on instead

  1. Run 834's labels-scope: log line, read directly. This Forgejo exposes no run-log endpoint — actions/runs/834, .../logs, and actions/jobs/834/logs all return 404 through the sanctioned wrapper. What I have is actions/tasks: run 834 is labels.yml, pull_request_target, head fd22c160, success. So instead of reading the line I re-derived the answer independently, with the same path.matchesGlob scripts/check-governance.js:115-118 uses, over the PR's five changed paths against the labeler map: scope:packaging, scope:ci, scope:docs — exactly the PR's labels. The criterion's own reason for demanding a log read (defect 8 on #36: a label event re-derives from the head map) does not bite here, because this PR does not touch .github/labeler.yml — base bef059d7 and head both carry sha256 aa9fa005cbdad5fc6fe4f1d52eefe52ca84dc7c3b2569f79617fc92fe05f4eca, so base-derived and head-derived sets are necessarily identical. Runs 843-846 (label events at 16:03-16:04Z) therefore cannot have produced a different set either.
  2. That the two ?template=proposal.yml URLs resolve to a form. They cannot be measured before the merge: #50 itself records that issues/new?template=… returns 303 to login on this instance for ceremony (which has the form) and stoke (which does not) alike. I checked what is checkable — owner, repo, and template filename each match the file actually shipped — and left the rest to the post-merge endpoint check.
  3. The post-merge GET /repos/heavy-duty/stoke/issue_templates criterion, and the blank_issues_enabled: false API-door probe. Both are post-merge by construction (the endpoint reads the default branch) and #50 assigns them to triage. Not gating this verdict, and I did not attempt either.
**Approve** — head `fd22c1606925e2c9da9542c09fb230de6c35f44a`, reviewed whole in a detached worktree (with `npm ci`, which a fresh stoke worktree needs or 55 tests fail on a missing `commander`). Every pre-merge criterion on #50 holds, and I checked each by running it rather than reading it. ## Against #50's acceptance criteria - **Exactly three files.** `.github/ISSUE_TEMPLATE/` holds `config.yml`, `proposal.yml`, `work-order.yml` and nothing else. - **`proposal.yml` byte-identical to ceremony `0.6.3`.** sha256 `502e6ec7b71156904e81ed3444c1c4411e7386004fae27e7d2a636a5a2d4c90b` on both the shipped file and the file fetched from `repos/heavy-duty/ceremony/raw/.github/ISSUE_TEMPLATE/proposal.yml?ref=0.6.3` — the **Forgejo** tag, which is the line that matters here; the same-numbered tag on github.com is a different tree, and comparing against it would have been a false claim. - **`work-order.yml` differs in exactly one hunk.** `diff -u` against the fetched `0.6.3` original shows one changed line and nothing else: `` `gh issue create --body-file` `` → `` `stoke issue create --body-file` ``. That command is real at this head — `--option('--body-file <path>')` on the `issue create` command at `src/cli.js:763`, documented at `README.md:515` — so the adaptation replaces a wrong instruction with a correct one rather than a plausible one. - **`config.yml`.** Also exactly one hunk against `0.6.3`: the contact-link URL re-pointed from ceremony to `heavy-duty/stoke`. `blank_issues_enabled: false` retained; `grep -c 'heavy-duty/ceremony' .github/ISSUE_TEMPLATE/config.yml` → `0`. The `name:`/`about:` prose is untouched, as decision 4 required. - **`CONTRIBUTING.md` L54.** The sentence that made this a repaired promise rather than an adopted doctrine now links the form; the link is intact on one line and renders. - **Local gates.** `npm test` → 133 pass / 0 fail. `npm run check:governance` → `governance: 4 identities resolved; 5 scope rows valid` — five rows, so no scope row was added, as decision 7 required. - **`ci / test` green on this head.** `success` from run 833 (`ci.yml`, `pull_request`, head `fd22c160`), alongside `labels / labels` `success` from run 834. - **The three derived scopes.** See the caveat below; I verified this by a different route than the criterion names, and the result agrees. - **Post-merge criterion correctly unticked.** The PR uses `Refs #50`, and I scanned the whole body for a closing keyword preceding `#50` in any position, including prose and code spans — there is none. The three other mentions are `Refs #50`, "owned by triage on issue #50", and "Claim issue #50". This is the shape #151 exists to enforce, and it is right. ## Beyond the criteria - **The required failing case actually fails.** I removed `.github/**` from the `scope:ci` row in `.github/labeler.yml` and re-ran `check:governance`: exit **1**, `tracked paths have no scope mapping: .github/ISSUE_TEMPLATE/config.yml, .github/ISSUE_TEMPLATE/proposal.yml, .github/ISSUE_TEMPLATE/work-order.yml, .github/labeler.yml, .github/labels.conf`. All three new files are named, so the coverage is that row's and not incidental. I restored the file and re-ran; clean tree, governance green again. - **Both forms parse, with the shape the post-merge check expects.** `yaml.safe_load` succeeds on all three: `Proposal (anyone)` with 4 body entries, `Work order (triage only)` with 7, and neither carries a `labels:` key — matching ceremony, which is what byte-identity buys. - **Nothing in the forms is ceremony-relative.** `TRIAGE.md` and `LABELS.md` are named in prose, never linked, so vendoring them at `.ceremony/` breaks no link. The ceremony issue numbers (`#24 D2`, `#18`) appear only inside YAML comments, which never render, so they cannot resolve to stoke's own issues. - **Conventions.** `changelog.d/50.md` matches the existing fragment shape (`- <sentence> (#50).`) and is present, as a contributor-facing change owes. - The empty `chore: trigger synchronize verification` commit is noise in the history, but the criterion demanding a `synchronize` run's derivation is what required it. Not a nit worth carrying. ## What I could not verify, and what I relied on instead 1. **Run 834's `labels-scope:` log line, read directly.** This Forgejo exposes no run-log endpoint — `actions/runs/834`, `.../logs`, and `actions/jobs/834/logs` all return 404 through the sanctioned wrapper. What I have is `actions/tasks`: run 834 is `labels.yml`, `pull_request_target`, head `fd22c160`, `success`. So instead of reading the line I re-derived the answer independently, with the same `path.matchesGlob` `scripts/check-governance.js:115-118` uses, over the PR's five changed paths against the labeler map: `scope:packaging, scope:ci, scope:docs` — exactly the PR's labels. The criterion's own reason for demanding a log read (defect 8 on #36: a label event re-derives from the *head* map) does not bite here, because this PR does not touch `.github/labeler.yml` — base `bef059d7` and head both carry sha256 `aa9fa005cbdad5fc6fe4f1d52eefe52ca84dc7c3b2569f79617fc92fe05f4eca`, so base-derived and head-derived sets are necessarily identical. Runs 843-846 (label events at 16:03-16:04Z) therefore cannot have produced a different set either. 2. **That the two `?template=proposal.yml` URLs resolve to a form.** They cannot be measured before the merge: #50 itself records that `issues/new?template=…` returns 303 to login on this instance for ceremony (which has the form) and stoke (which does not) alike. I checked what is checkable — owner, repo, and template filename each match the file actually shipped — and left the rest to the post-merge endpoint check. 3. **The post-merge `GET /repos/heavy-duty/stoke/issue_templates` criterion, and the `blank_issues_enabled: false` API-door probe.** Both are post-merge by construction (the endpoint reads the default branch) and #50 assigns them to triage. Not gating this verdict, and I did not attempt either.
glm-bot-andresmgsl approved these changes 2026-09-01 16:26:19 +00:00
glm-bot-andresmgsl left a comment
Member

Verdict: approve — head fd22c1606925e2c9da9542c09fb230de6c35f44a, reviewed whole against issue #50's acceptance criteria, the repo's load-bearing constraints, and the code.

Every pre-merge criterion verified by running it, not by reading the checkboxes:

  • .github/ISSUE_TEMPLATE/ holds exactly config.yml, proposal.yml, work-order.yml and nothing else (ls).
  • proposal.yml is byte-identical to ceremony 0.6.3: md5 bdf2f444b9dc1374526b29791749b572 on both sides, the reference fetched fresh from the raw endpoint at ref=0.6.3.
  • work-order.yml differs from ceremony 0.6.3 in exactly one line — gh issue create --body-filestoke issue create --body-file (one hunk, nothing else).
  • config.yml: blank_issues_enabled: false; the single contact-link URL re-pointed to heavy-duty/stoke/issues/new?template=proposal.yml; name:/about: copied as-is; grep -c 'heavy-duty/ceremony'0.
  • CONTRIBUTING.md's work-issue sentence now links that exact proposal-form URL.
  • npm test: 133/133 pass. npm run check:governance: exit 0, printing governance: 4 identities resolved; 5 scope rows valid. Both run by me in a detached throwaway worktree at this head.
  • The required negative case reproduced: removing the .github/** entry from labeler.yml makes check:governance exit 1 naming all three new template files; map restored and re-run green afterwards.
  • ci / test green on this head (combined commit status for fd22c160: success).
  • Linkage discipline checked: no closing keyword immediately precedes any #N anywhere in the PR body; Refs #50 keeps the post-merge template-endpoint criterion with triage, as the issue directs.

What I could not verify directly, and what I relied on instead: the raw labels-scope: log line from synchronize run 834. The actions job-log endpoints (tasks/{id}/logs, runs/{id}/jobs, jobs/{id}/logs) all return 404 through the sanctioned forge wrapper, so I could not re-read the line itself. Relied on: (1) triage's recorded measurement in #50 (run 834, pull_request_target, head fd22c160, logged scope:packaging,scope:ci,scope:docs); (2) the labels / labels job reports success pinned to this exact head in the commit status; (3) independent recomputation from the unmodified base map over this PR's five changed paths — .github/**scope:ci, *.mdscope:docs, changelog.d/**scope:packaging — yielding exactly that trio; and (4) all three scope labels present on the PR. The criterion's arithmetic is reproduced; only the raw log line is quoted second-hand.

The empty head commit chore: trigger synchronize verification is the issue-directed mechanism for producing the synchronize run the scope criterion reads — intentional, consistent with the worklog, and it changes no file.

The post-merge API-intake probe (issue creation under blank_issues_enabled: false) is owed before triage closes #50, not before merge — not a PR gate.

Verdict: **approve** — head `fd22c1606925e2c9da9542c09fb230de6c35f44a`, reviewed whole against issue #50's acceptance criteria, the repo's load-bearing constraints, and the code. Every pre-merge criterion verified by running it, not by reading the checkboxes: - `.github/ISSUE_TEMPLATE/` holds exactly `config.yml`, `proposal.yml`, `work-order.yml` and nothing else (ls). - `proposal.yml` is byte-identical to ceremony `0.6.3`: md5 `bdf2f444b9dc1374526b29791749b572` on both sides, the reference fetched fresh from the raw endpoint at `ref=0.6.3`. - `work-order.yml` differs from ceremony `0.6.3` in exactly one line — `gh issue create --body-file` → `stoke issue create --body-file` (one hunk, nothing else). - `config.yml`: `blank_issues_enabled: false`; the single contact-link URL re-pointed to `heavy-duty/stoke/issues/new?template=proposal.yml`; `name:`/`about:` copied as-is; `grep -c 'heavy-duty/ceremony'` → `0`. - `CONTRIBUTING.md`'s work-issue sentence now links that exact proposal-form URL. - `npm test`: 133/133 pass. `npm run check:governance`: exit 0, printing `governance: 4 identities resolved; 5 scope rows valid`. Both run by me in a detached throwaway worktree at this head. - The required negative case reproduced: removing the `.github/**` entry from `labeler.yml` makes `check:governance` exit 1 naming all three new template files; map restored and re-run green afterwards. - `ci / test` green on this head (combined commit status for `fd22c160`: success). - Linkage discipline checked: no closing keyword immediately precedes any `#N` anywhere in the PR body; `Refs #50` keeps the post-merge template-endpoint criterion with triage, as the issue directs. What I could not verify directly, and what I relied on instead: the raw `labels-scope:` log line from synchronize run 834. The actions job-log endpoints (`tasks/{id}/logs`, `runs/{id}/jobs`, `jobs/{id}/logs`) all return 404 through the sanctioned forge wrapper, so I could not re-read the line itself. Relied on: (1) triage's recorded measurement in #50 (run 834, `pull_request_target`, head `fd22c160`, logged `scope:packaging,scope:ci,scope:docs`); (2) the `labels / labels` job reports success pinned to this exact head in the commit status; (3) independent recomputation from the unmodified base map over this PR's five changed paths — `.github/**` → `scope:ci`, `*.md` → `scope:docs`, `changelog.d/**` → `scope:packaging` — yielding exactly that trio; and (4) all three scope labels present on the PR. The criterion's arithmetic is reproduced; only the raw log line is quoted second-hand. The empty head commit `chore: trigger synchronize verification` is the issue-directed mechanism for producing the synchronize run the scope criterion reads — intentional, consistent with the worklog, and it changes no file. The post-merge API-intake probe (issue creation under `blank_issues_enabled: false`) is owed before triage closes #50, not before merge — not a PR gate.
kimi-bot-andresmgsl approved these changes 2026-09-01 16:26:31 +00:00
kimi-bot-andresmgsl left a comment
Member

Approved.

Reviewed against issue #50 acceptance criteria and the repo's load-bearing constraints:

  • .github/ISSUE_TEMPLATE/ contains exactly config.yml, proposal.yml, and work-order.yml.
  • proposal.yml is byte-identical to ceremony 0.6.3.
  • work-order.yml differs from ceremony 0.6.3 only by the single ghstoke phrase in the body-file guidance.
  • config.yml sets blank_issues_enabled: false, contains no heavy-duty/ceremony URL, and links to heavy-duty/stoke/issues/new?template=proposal.yml.
  • CONTRIBUTING.md links the proposal form on the promised sentence.
  • changelog.d/50.md records the contributor-facing change.
  • npm test passes (133 tests) and npm run check:governance reports governance: 4 identities resolved; 5 scope rows valid.
  • The negative case required by the test plan behaves correctly: removing the .github/** glob from .github/labeler.yml makes check:governance exit 1 and name the three new template files as unmapped.
  • CI statuses ci / test and labels / labels are green on this head, and the PR carries the derived scopes scope:ci, scope:docs, and scope:packaging.

What I could not verify: the post-merge issue_templates API endpoint check is explicitly owned by triage on #50 and is intentionally not checked before merge; everything else I verified locally or via CI.

Approved. Reviewed against issue #50 acceptance criteria and the repo's load-bearing constraints: - `.github/ISSUE_TEMPLATE/` contains exactly `config.yml`, `proposal.yml`, and `work-order.yml`. - `proposal.yml` is byte-identical to ceremony `0.6.3`. - `work-order.yml` differs from ceremony `0.6.3` only by the single `gh` → `stoke` phrase in the body-file guidance. - `config.yml` sets `blank_issues_enabled: false`, contains no `heavy-duty/ceremony` URL, and links to `heavy-duty/stoke/issues/new?template=proposal.yml`. - `CONTRIBUTING.md` links the proposal form on the promised sentence. - `changelog.d/50.md` records the contributor-facing change. - `npm test` passes (133 tests) and `npm run check:governance` reports `governance: 4 identities resolved; 5 scope rows valid`. - The negative case required by the test plan behaves correctly: removing the `.github/**` glob from `.github/labeler.yml` makes `check:governance` exit 1 and name the three new template files as unmapped. - CI statuses `ci / test` and `labels / labels` are green on this head, and the PR carries the derived scopes `scope:ci`, `scope:docs`, and `scope:packaging`. What I could not verify: the post-merge `issue_templates` API endpoint check is explicitly owned by triage on #50 and is intentionally not checked before merge; everything else I verified locally or via CI.
codex-bot-andresmgsl requested review from andres 2026-09-01 16:40:59 +00:00
codex-bot-andresmgsl added the
state:needs-human
label 2026-09-01 16:40:59 +00:00
forgejo-actions removed the
state:bots-reviewing
label 2026-09-01 16:41:17 +00:00
andres merged commit 967efa027c into main 2026-09-01 19:14:51 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: heavy-duty/stoke#52
No description provided.