Priority
P1
Problem
Release-gate maintenance tests run only after a change reaches trunk. The current origin/trunk therefore passed every required PR check and then failed the Release workflow because ten production-ready-check fixture tests are broken.
This leaves the protected branch red and makes the post-merge release path the first place that publish-critical test drift is discovered.
Evidence
Desired outcome
Every test that protects release-gate maintenance is green on the PR head before merge, while the post-merge Release self-check remains as defense in depth.
Proposed implementation
- Define one root command, such as
test:release-gates, as the authoritative release-maintenance test suite.
- Invoke that command from PR CI when release workflow/gate inputs change. Prefer reusing the existing release-input classifier instead of copying another test list.
- Invoke the same command from the Release workflow.
- Repair the
production-ready-check fixtures so their package catalog contains the current required spine shape.
- Add workflow contract tests that fail if the PR and Release paths drift apart.
Acceptance criteria
- The current
production-ready-check.spec.ts suite passes from a clean checkout.
- A PR changing a release-gate script, its test, or a direct policy input runs the authoritative maintenance suite before merge.
- The Release workflow calls the same command rather than maintaining a second test inventory.
- A deliberately broken release-gate fixture fails the PR check.
- Ordinary package-source changes do not gain an unrelated full release-publish job.
Validation
pnpm exec vitest run scripts/tests/production-ready-check.spec.ts scripts/tests/release-workflow.spec.ts --config vitest.config.ts
- Run the new root release-gate test command locally.
- Exercise workflow fixtures for release-gate and ordinary source changes.
Scope boundaries
Keep the post-merge Release self-check. This issue is not a request to run the full publish pipeline on every pull request.
Priority
P1
Problem
Release-gate maintenance tests run only after a change reaches
trunk. The currentorigin/trunktherefore passed every required PR check and then failed the Release workflow because tenproduction-ready-checkfixture tests are broken.This leaves the protected branch red and makes the post-merge release path the first place that publish-critical test drift is discovered.
Evidence
validateand the review companion green: fix: retain generated smoke failure artifacts in CI #1305Release gate maintenance self-check: https://github.com/croco-dev/framework/actions/runs/291336617105ddccef914d401181eae237890ae9b7c44b3c141:pnpm exec vitest run scripts/tests/production-ready-check.spec.ts --config vitest.config.tsreports 10 failed / 1 passed, all rooted at
docs/package-catalog.json: spine must be an object..github/workflows/release.ymlowns a large maintenance-only Vitest list, while PR CI does not execute that same suite.Desired outcome
Every test that protects release-gate maintenance is green on the PR head before merge, while the post-merge Release self-check remains as defense in depth.
Proposed implementation
test:release-gates, as the authoritative release-maintenance test suite.production-ready-checkfixtures so their package catalog contains the current requiredspineshape.Acceptance criteria
production-ready-check.spec.tssuite passes from a clean checkout.Validation
pnpm exec vitest run scripts/tests/production-ready-check.spec.ts scripts/tests/release-workflow.spec.ts --config vitest.config.tsScope boundaries
Keep the post-merge Release self-check. This issue is not a request to run the full publish pipeline on every pull request.