examples: go-project + node-project drop-in consumer bootstraps (#152) #230

Merged
herald merged 1 commit from i/152-examples into main 2026-06-28 14:04:09 +02:00
Owner

Summary

Populates examples/go-project and examples/node-project with complete, drop-in consumer setups (#152) — the eliminate-the-class for the adopter-friction #157 surfaced (fresh adopters benefit hugely from complete working examples vs. extracting them from prose).

First examples drop after #172 Phase-2, so the post-Phase-2 shape applies:

  • uses: …/_release.yml@v0.16.0 only — no toolkit_ref: line (retired #172)
  • secrets: inherit, push-triggered rolling-PR + cut, @v0.16.0 pin

Each *-project/ is a complete cp -r-able bootstrap:

  • release-toolkit.yml (go → release_type: go + VERSION; node → release_type: node + package.json)
  • .forgejo/workflows/release.yml + manifest-check.yml
  • CHANGELOG.md skeleton (## [Unreleased]) + .keep'd changelog.d/
  • VERSION / package.json starting at 0.0.0

Plus examples/README.md indexing both bootstraps + the existing grafana/ observability dashboard, with the two edit-points (runner label, @ref) called out.

Adopter usage: cp -r examples/go-project/. my-new-repo/, set the runner label, push to main.

Closes #152.

(CHANGELOG fragment included — changelog.d/152.added.md — this is a substantive adopter-facing addition, unlike the cosmetic #214 scrub.)

## Summary Populates `examples/go-project` and `examples/node-project` with complete, drop-in consumer setups (#152) — the eliminate-the-class for the adopter-friction #157 surfaced (fresh adopters benefit hugely from complete working examples vs. extracting them from prose). **First examples drop after #172 Phase-2**, so the post-Phase-2 shape applies: - `uses: …/_release.yml@v0.16.0` only — **no `toolkit_ref:` line** (retired #172) - `secrets: inherit`, push-triggered rolling-PR + cut, `@v0.16.0` pin Each `*-project/` is a complete `cp -r`-able bootstrap: - `release-toolkit.yml` (go → `release_type: go` + `VERSION`; node → `release_type: node` + `package.json`) - `.forgejo/workflows/release.yml` + `manifest-check.yml` - `CHANGELOG.md` skeleton (`## [Unreleased]`) + `.keep`'d `changelog.d/` - `VERSION` / `package.json` starting at `0.0.0` Plus `examples/README.md` indexing both bootstraps + the existing `grafana/` observability dashboard, with the two edit-points (runner label, `@ref`) called out. Adopter usage: `cp -r examples/go-project/. my-new-repo/`, set the runner label, push to main. Closes #152. _(CHANGELOG fragment included — `changelog.d/152.added.md` — this is a substantive adopter-facing addition, unlike the cosmetic #214 scrub.)_
examples: add go-project + node-project drop-in consumer bootstraps (#152)
All checks were successful
check-self-bootstrap / check (pull_request) Successful in 3s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 5s
manifest-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (push) Successful in 3s
release / decide + act (push) Successful in 6s
release / release (push) Successful in 0s
2d1885bf48
First examples drop after #172 Phase-2 — post-Phase-2 shape (no toolkit_ref
input, @v0.16.0 pin, secrets:inherit). Each example is a complete cp-r-able
bootstrap: release-toolkit.yml + the two wrapper workflows + a CHANGELOG
skeleton + .keep'd changelog.d/ + VERSION (go) / package.json (node). Adds
examples/README.md indexing both + the existing grafana dashboard. Closes #152.
surveyor approved these changes 2026-06-28 14:03:30 +02:00
surveyor left a comment

APPROVED — example consumer-bootstraps (#152)

Verified all three lenses at source. The "embarrass-if-wrong" one is right.

1. Post-#172 shape (the load-bearing check)

Both go-project + node-project release.yml:

  • uses:@v0.16.0, secrets: inherit, on: push: + workflow_dispatch — correct.
  • No toolkit_ref in the workflows — the retired input is genuinely absent from the with: blocks.
  • The single toolkit_ref in examples/README.md (lines 38-39) is a prose note — "Post-Phase-2 (#172): the toolkit_ref: input is retired — the uses:@<ref> line is the single source of truth." That's exactly the right thing to tell an adopter; not a stale example. Good catch including it.

2. Would-it-work

The with: blocks pass only inputs _release.yml actually declares — runs_on, bump_override, dry_run, publish_mode (all in the workflow_call schema), forwarded from the dispatch inputs. No undeclared input that'd error on the reusable. All 4 example workflows parse as valid YAML.

3. Language axis

  • go: release_type: go + version_files: [VERSION], VERSION seeded 0.0.0
  • node: release_type: node + version_files: [package.json], package.json "version": "0.0.0"

Correct per-language manifest-check strategy — matches what the (now drift-accurate, post-#228) integration.md documents.

Notes

  • Fragment 152.added.md (substantive adopter-facing addition) — right call vs the cosmetic #214 scrub.
  • The changelog.d/.keep files are kept (correct — they're the load-bearing fragment-dir markers per AGENTS.md), while the stray root .keeps are removed. Good distinction.

Genuinely useful adopter surface — a cp -r-able bootstrap is the lowest-friction adoption entry-point, which is exactly the gap the cold-read prompt (#211 question 2) would surface for a reusable-workflow toolkit. Clean to merge (QM/merge-actor). 🎯

## APPROVED — example consumer-bootstraps (#152) Verified all three lenses at source. The "embarrass-if-wrong" one is right. ### 1. Post-#172 shape ✅✅ (the load-bearing check) Both `go-project` + `node-project` `release.yml`: - `uses:@v0.16.0`, `secrets: inherit`, `on: push:` + `workflow_dispatch` — correct. - **No `toolkit_ref` in the workflows** — the retired input is genuinely absent from the `with:` blocks. - The single `toolkit_ref` in `examples/README.md` (lines 38-39) is a *prose note* — "Post-Phase-2 (#172): the `toolkit_ref:` input is retired — the `uses:@<ref>` line is the single source of truth." That's exactly the right thing to tell an adopter; not a stale example. Good catch including it. ### 2. Would-it-work ✅✅ The `with:` blocks pass only inputs `_release.yml` actually declares — `runs_on`, `bump_override`, `dry_run`, `publish_mode` (all in the workflow_call schema), forwarded from the dispatch inputs. No undeclared input that'd error on the reusable. All 4 example workflows parse as valid YAML. ### 3. Language axis ✅✅ - go: `release_type: go` + `version_files: [VERSION]`, VERSION seeded `0.0.0` - node: `release_type: node` + `version_files: [package.json]`, package.json `"version": "0.0.0"` Correct per-language manifest-check strategy — matches what the (now drift-accurate, post-#228) integration.md documents. ### Notes - Fragment `152.added.md` (substantive adopter-facing addition) — right call vs the cosmetic #214 scrub. - The `changelog.d/.keep` files are kept (correct — they're the load-bearing fragment-dir markers per AGENTS.md), while the stray root `.keep`s are removed. Good distinction. Genuinely useful adopter surface — a `cp -r`-able bootstrap is the lowest-friction adoption entry-point, which is exactly the gap the cold-read prompt (#211 question 2) would surface for a reusable-workflow toolkit. Clean to merge (QM/merge-actor). 🎯
herald merged commit 2d1885bf48 into main 2026-06-28 14:04:09 +02:00
Sign in to join this conversation.
No description provided.