diff --git a/docs/consumer-validation-status.md b/docs/consumer-validation-status.md index a6fd92b..d25738d 100644 --- a/docs/consumer-validation-status.md +++ b/docs/consumer-validation-status.md @@ -21,11 +21,11 @@ verified. The canonical archive SHA256 is | Checkout | Relationship | Reference | Deployment exercised | Result | Classification | | --- | --- | --- | --- | --- | --- | -| Base | First-party direct consumer | merged [6038cba](https://github.com/basefoundry/base/commit/6038cbaf93eb21ccb26c17a612aded85deedb04b) | CI currently pinned to `c134fb8` (v2.0.0-rc.1); GA pin PR pending | PR [#1934](https://github.com/basefoundry/base/pull/1934): Python/pylint, integration, security, BATS, Ubuntu source-checkout, macOS smoke, and branch policy all passed | RC pass; GA promotion pending | -| Base Demo | First-party representative consumer | merged [b54bf00](https://github.com/basefoundry/base-demo/commit/b54bf008a9dfb542c5c51dc919c3e10698a2f5eb) | CI currently pinned to `c134fb8` (v2.0.0-rc.1); GA pin PR pending | PR [#214](https://github.com/basefoundry/base-demo/pull/214): validation, Ubuntu, source-checkout, and branch policy all passed; local full validation passed with isolated caches | RC pass; GA promotion pending | +| Base | First-party direct consumer | published [v1.8.0](https://github.com/basefoundry/base/releases/tag/v1.8.0), commit `26b9af5` | CI and source-checkout workflows pin GA commit `b424376` (v2.0.0) | PR [#1936](https://github.com/basefoundry/base/pull/1936) passed Python/pylint, integration, security, BATS, Ubuntu source-checkout, macOS smoke, and branch policy; v1.8.0 release preflight and publication passed | GA pin and release pass | +| Base Demo | First-party representative consumer | merged [#217](https://github.com/basefoundry/base-demo/pull/217) at `fb7a2b6` | CI and source-checkout workflows pin GA commit `b424376` (v2.0.0) | Local full validation and hosted validate, Ubuntu, and source-checkout checks passed | GA pin and validation pass | | BankBuddy | Adjacent repository; no direct `base-bash-libs` reference | `e32561c` | None | Repository validation: **312 passed** | Excluded from the consumer count | | BanyanLabs | Adjacent repository; no direct `base-bash-libs` reference | `15ef6cd` | None | Repository baseline present | Excluded from the consumer count | -| Homebrew | First-party package-manager consumer | stable tap remains `v1.4.0` | Disposable RC tap passed; GA formula PR pending | RC audit, source build, formula smoke test, and stable restore all passed | RC pass; GA promotion pending | +| Homebrew | First-party package-manager consumer | merged [#85](https://github.com/basefoundry/homebrew-base/pull/85), bottle release `base-v1.8.0` | `base-bash-libs` v2.0.0 bundle and Base v1.8.0 archive are hash-pinned; both macOS bottles published | Both bottle builds and v2 API smoke tests passed; installed GA upgrade, formula tests, and rollback to Base 1.7.0/base-bash-libs 1.4.0 passed | GA formula, bottles, upgrade, and rollback pass | The Base and Base Demo checkouts are controlled by the primary author. They are valuable first-party regression signals, but they do not satisfy the @@ -39,15 +39,15 @@ an installed Homebrew package and restoration to the prior stable package. No independent production consumer has yet supplied a reproducible run covering installed, vendored, and bundled deployments together. -The local vendor and reference-application rollback suites pass, and the -Homebrew RC-to-v1.4 restore was rehearsed. A true RC-to-GA upgrade is now -reproducible against the immutable v2.0.0 asset; downstream pin and formula -promotion remains tracked by -[#240](https://github.com/basefoundry/base-bash-libs/issues/240). +The local vendor and reference-application rollback suites pass. The +Homebrew GA rehearsal upgraded Base 1.7.0/base-bash-libs 1.4.0 to the paired +Base 1.8.0/base-bash-libs 2.0.0 bottles, ran both formula tests, and restored +the stable pair successfully after Homebrew's normal reinstall path reported +stale Cellar links. ## Findings and limitations -- The Base and Base Demo hosted RC pin suites found no new `base-bash-libs` +- The Base and Base Demo hosted GA pin suites found no new `base-bash-libs` API or behavior finding. - The v2 release archive is a deterministic bundle, not the v1 full-source archive. The GA Homebrew formula must therefore install the bundle layout diff --git a/docs/first-party-cutover.md b/docs/first-party-cutover.md index d508ed0..c97e3de 100644 --- a/docs/first-party-cutover.md +++ b/docs/first-party-cutover.md @@ -1,8 +1,8 @@ # First-party v2 cutover -Issue #240 is the first-party promotion handoff. The exact v2 GA asset, -checksum, and provenance now exist; downstream pins and the Homebrew formula -must still be promoted to that immutable release. +Issue #240 records the first-party promotion handoff. The exact v2 GA asset, +checksum, and provenance exist, and Base, Base Demo, and Homebrew now point at +the immutable release or its verified bottle release. ## Inventory and order @@ -11,8 +11,8 @@ inventory. The release order is: 1. publish `base-bash-libs` v2.0.0 with immutable tag, source/bundle checksum, SBOM, and provenance; -2. update Base to the `base_` API and raise its minimum to `2.0.0` (the current - issue-backed migration is [Base #1881](https://github.com/basefoundry/base/pull/1881)); +2. update Base to the `base_` API and raise its minimum to `2.0.0` (the + issue-backed migration landed in [Base #1936](https://github.com/basefoundry/base/pull/1936)); 3. update Base Demo's vendored/install pin and source-checkout CI to the exact tag plus full commit; 4. update the Homebrew formula URL, version, checksum, bottle release, and @@ -21,16 +21,16 @@ inventory. The release order is: The release asset gate is satisfied when `release_status` is `published`, the archive SHA256 matches the uploaded canonical bundle, and the provenance asset -names the exact merge commit. Consumer promotion remains fail-closed until -each pin and formula points at that same commit and passes its hosted checks. +names the exact merge commit. Consumer promotion is complete only after each +pin and formula points at that same immutable asset and passes its hosted +checks. That condition is now satisfied for the first-party consumers. ## Verification and rollback -Run `scripts/first-party-cutover check --allow-pending` during the train to -validate the manifest and inspect staged consumer trees. The final check omits -`--allow-pending` and requires `release_status: published`, a full SHA-256, and -the exact tag on the remote. Verify each consumer's smoke tests before the next -publish step. +Run `scripts/first-party-cutover check` to validate the manifest and the +completed consumer states. It requires `release_status: published`, a full +SHA-256, the exact tag on the remote, and no pending consumer promotion. +Verify each consumer's smoke tests before treating the cutover as complete. If a consumer fails, stop the order, restore its prior immutable pin, and keep the v2 asset/tag unchanged. Never retag a different commit or silently fall @@ -40,6 +40,5 @@ release notes, then resume from the failed consumer after a reviewed fix. ## Current state Base's `basectl help` integration defect is fixed in the merged issue-backed PR -above and validated locally against the v2 API. Base and Base Demo currently -retain their verified RC pins while the GA promotion PRs are prepared; the -Homebrew stable formula remains v1.4.0 until its GA formula PR lands. +above and validated locally against the v2 API. Base v1.8.0, Base Demo, and the +Homebrew `base-v1.8.0` bottle release consume the verified v2.0.0 GA asset. diff --git a/first-party-cutover.yaml b/first-party-cutover.yaml index 4eef57b..c8de679 100644 --- a/first-party-cutover.yaml +++ b/first-party-cutover.yaml @@ -13,14 +13,20 @@ publish_order: consumers: - name: base repository: basefoundry/base - tracker: https://github.com/basefoundry/base/issues/1880 - pull_request: https://github.com/basefoundry/base/pull/1881 - current_state: ga-published-pending-pin + tracker: https://github.com/basefoundry/base/issues/1935 + pull_request: https://github.com/basefoundry/base/pull/1936 + release: https://github.com/basefoundry/base/releases/tag/v1.8.0 + release_commit: 26b9af5dee16efcb47e652513ce734b3ae9bc920 + current_state: ga-pinned-and-released - name: base-demo repository: basefoundry/base-demo - tracker: base-bash-libs-240 - current_state: ga-published-pending-pin + tracker: https://github.com/basefoundry/base-demo/issues/215 + pull_request: https://github.com/basefoundry/base-demo/pull/217 + current_state: ga-pinned-and-validated - name: homebrew-base repository: basefoundry/homebrew-base formula: Formula/base-bash-libs.rb - current_state: ga-published-pending-formula + pull_request: https://github.com/basefoundry/homebrew-base/pull/85 + release: https://github.com/basefoundry/homebrew-base/releases/tag/base-v1.8.0 + release_commit: 6962d0586728e6893ac42ccc100395f60ec28624 + current_state: ga-published-and-bottled