Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions docs/consumer-validation-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
29 changes: 14 additions & 15 deletions docs/first-party-cutover.md
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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
Expand All @@ -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
Expand All @@ -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.
18 changes: 12 additions & 6 deletions first-party-cutover.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Loading