@@ -29,3 +29,40 @@ rewriting published history.
2929Repositories that are demonstrations or not yet stable must state that clearly in
3030their README. They still require reproducible setup, validation evidence, and explicit
3131safety boundaries.
32+
33+ ## Release Automation (v1.5)
34+
35+ 1 . ** Tool: release-please via a single reusable workflow.** All 13 portfolio repos
36+ call ` .github/workflows/release-please-reusable.yml ` in this repo
37+ (` Coding-Autopilot-System/.github ` ) instead of each hand-rolling a
38+ semver-bump/changelog script or duplicating a release-please config 13 times.
39+ release-please deterministically parses conventional commits — already enforced
40+ org-wide by pr-lint's PR-title check — rather than reinventing that parsing logic,
41+ and its default flow opens a review-gated "release PR" rather than tagging
42+ directly on every merge, which fits the existing two-party-review governance
43+ instead of fighting it.
44+ 2 . ** Uniform ` release-type: simple ` across all 13 repos** , regardless of language
45+ (C#, Python, Node, PowerShell, docs-only). ` simple ` only manages a
46+ ` CHANGELOG.md ` + version manifest and never mutates a language-specific manifest
47+ file, avoiding 13 different per-language configurations.
48+ 3 . ** Each repo keeps its own independent SemVer line** — not synced to the CAS
49+ portfolio milestone number (e.g. v1.5). gsd-orchestrator (already at v4.0.0) and
50+ cas-contracts (already at v1.1.1) already prove per-repo versioning is
51+ independent of portfolio milestone numbering; forcing a shared baseline across
52+ repos with unrelated existing tag histories would be meaningless and would
53+ collide with gsd-orchestrator's real v4.x line.
54+ 4 . ** Bootstrap baseline.** Repos with zero existing GitHub tags (including this
55+ repo, org-dotgithub) bootstrap their ` .release-please-manifest.json ` at
56+ ` "0.0.0" ` so release-please's first run computes the genuine first version from
57+ complete commit history. Repos with a real existing latest tag on GitHub (e.g.
58+ gsd-orchestrator at ` 4.0.0 ` , cas-contracts at ` 1.1.1 ` ) bootstrap their manifest
59+ from that real tag so their first automated release only covers what changed
60+ since that point. Baselines are verified against ` gh api .../tags ` output, not
61+ assumed from local-only tags.
62+ 5 . ** SHA-pinned cross-repo dependency.** Other repos pin their caller workflow's
63+ ` uses: ` line to a specific org-dotgithub commit SHA (never ` @main ` ), and the
64+ third-party ` googleapis/release-please-action ` inside this reusable workflow is
65+ itself SHA-pinned, per the existing Phase 31 org action-pinning policy. Bumping
66+ the pinned release-please-action version later requires a deliberate, reviewed
67+ SHA update in each caller — the same accepted maintenance tradeoff Phase 31
68+ already established for direct action pins.
0 commit comments