mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-23 20:25:56 +00:00
f373beae27
## Why Releases have run on a fixed train since 4 October 2026, but most release documentation still described the model it replaced. Readers and agents got different answers depending on which page they read. ## What changes - **Shipped docs** (`docs/` and the `frontend-modern/public/docs/` mirror): - `RELEASE_PROCESS.md` describes the train: a cut from `main` 14 days after the last stable (only when `main` has changed), or earlier on request; a 24-hour Preview soak; promotion of the unchanged candidate. - Consecutive minor versions, with no scheduled patch releases. - A `release-blocker` issue is closed once its fix is on `main`, and closing the last one cuts a fresh candidate. - `AI_TRANSPARENCY.md` states the same rules and says no model chooses release scope or timing. - **Promotion policy:** a new **Release Train** section is the single statement of the rules (cut, versions, soak, promote, stop, failures, workflow checks), checked against the train's implementation. It covers: - when an early-cut request takes effect; - `rc.N` numbering; - the 72-hour held alert; - the Pro source-pair failure; - the 12-hour retry. The earlier release models move under History. The stable patch path stays because the workflow still supports it, but nothing schedules it. - **Checklist, source of truth, development protocol, control plane, workflows README, RC-to-GA template and the deployment-installability contract:** now consistent with that section. - No 72-hour soak, no steward admission, no severity-scheduled patches. - v6 resolves to `main`, and only 6.3.2 and 6.4.3 to 6.4.6 stay bound to release lines. - Helm charts are packaged from the validated release tag. - The stable patch dry run is optional, as the policy already said. - **Workflow comments:** `release-signing-preflight.yml` no longer claims a nightly dispatch that was switched off, and `helm-pages.yml` no longer names the retired steward. - **`status.json`:** the release-train coverage gap becomes a resolved decision. - **Scripts:** removed `scripts/release_control/internal/resolve_release_promotion.py` and its test. It was an unused duplicate of the live resolver and still enforced a 72-hour soak. The live resolver's comment and error text now name the train. ## Checks - Docs mirror check passes. - `release_promotion_policy_test` and `resolve_release_promotion_test` pass (108 tests). - Registry, contract and status audits pass, as does `subsystem_contracts_test`. - The canonical completion guard passes in its CI form.