code-foundry 1.9.6 → 1.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,7 +19,7 @@ Agents must follow these rules before changing code:
19
19
  1. Read this file, `AGENTS.md`, and the relevant project documentation.
20
20
  2. Inspect the current branch, worktree, remotes, and existing changes before editing.
21
21
  3. Preserve user-owned changes. Never discard or overwrite unrelated work.
22
- 4. Branch from `staging` and target pull requests at `staging`; do not work directly on `main`.
22
+ 4. Branch from `main` and target pull requests at `main`; do not push directly to `main`.
23
23
  5. Keep the change focused. Do not expand scope without documenting why.
24
24
  6. Run the applicable format, lint, type-check, build, unit, performance, integration, E2E, smoke, and security checks.
25
25
  7. Report exact validation results, skipped checks, known limitations, and remaining risks.
@@ -35,22 +35,20 @@ Agents must not:
35
35
  ## Branching model
36
36
 
37
37
  ```text
38
- release PR
39
- ┌──────────────┐
40
- │ ▼
41
- feat/* fix/* chore/* ──PR──▶ staging ──PR──▶ main
42
- docs/* test/* refactor/* │ │
43
- │ └── protected release branch
44
- └── integration branch
38
+ release PR
39
+ ┌──────────────┐
40
+ │ ▼
41
+ feat/* fix/* chore/* ──PR──▶ main
42
+ docs/* test/* refactor/* │
43
+ └── protected release branch
45
44
  ```
46
45
 
47
- | Branch | Purpose | Contribution rule |
48
- | -------------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------- |
49
- | `main` | Protected release branch | Merge through the `staging` → `main` release PR. No direct pushes. |
50
- | `staging` | Integration branch | Target normal pull requests here. Required checks must pass before merge. |
51
- | `feat/*`, `fix/*`, `chore/*`, `refactor/*`, `docs/*`, `test/*` | Focused work | Branch from `staging`; keep changes small and reviewable. |
46
+ | Branch | Purpose | Contribution rule |
47
+ | -------------------------------------------------------------- | ------------------------ | ------------------------------------------------------ |
48
+ | `main` | Protected release branch | Merge through pull requests only. No direct pushes. |
49
+ | `feat/*`, `fix/*`, `chore/*`, `refactor/*`, `docs/*`, `test/*` | Focused work | Branch from `main`; keep changes small and reviewable. |
52
50
 
53
- The Git workflow is `staging-release`: topic branches **squash** into `staging`, a promotion PR **rebases** validated changes into `main` (`merge_strategy: rebase`), and the Release Please version PR **rebases** into `main` (`release_merge_strategy: rebase`). Release automation never defaults to a merge method and never merges with `--admin`; `code-foundry doctor` and `code-foundry sync` fail closed on any other merge strategy. Re-align `staging` with `main` after a release when needed.
51
+ The Git workflow is `direct`: topic branches **squash** directly into `main`, and the Release Please version PR **squashes** into `main` (`release_merge_strategy: squash`). Release automation never defaults to a merge method and never merges with `--admin`; `code-foundry doctor` and `code-foundry sync` fail closed on any other release merge strategy. This repository has one protected integration and release branch: `main`.
54
52
 
55
53
  ## Before you start
56
54
 
@@ -67,8 +65,8 @@ The Git workflow is `staging-release`: topic branches **squash** into `staging`,
67
65
  ```sh
68
66
  git status --short --branch
69
67
  git fetch origin
70
- git switch staging
71
- git pull --ff-only origin staging
68
+ git switch main
69
+ git pull --ff-only origin main
72
70
  git switch -c feat/short-description
73
71
  ```
74
72
 
@@ -93,7 +91,7 @@ Run the checks relevant to the change. For a release or security-sensitive chang
93
91
 
94
92
  For maintainers, trusted contributors, and automation agents:
95
93
 
96
- 1. Start from an up-to-date `staging` branch.
94
+ 1. Start from an up-to-date `main` branch.
97
95
  2. Create a focused branch with a descriptive prefix.
98
96
  3. Inspect the relevant code and tests before making changes.
99
97
  4. Implement the smallest complete change.
@@ -107,9 +105,9 @@ For maintainers, trusted contributors, and automation agents:
107
105
  chore(ci): cache Rust dependencies
108
106
  ```
109
107
 
110
- 8. Push the branch and open a pull request into `staging`.
108
+ 8. Push the branch and open a pull request into `main`.
111
109
  9. Address review feedback and failed checks on the same branch.
112
- 10. Merge with a squash after required checks pass and the change is ready; feature PRs land on `staging` with squash merges.
110
+ 10. Merge with a squash after required checks pass and the change is ready; feature PRs land on `main` with squash merges.
113
111
 
114
112
  ### Internal agent handoff
115
113
 
@@ -130,11 +128,11 @@ For contributors who do not have direct write access:
130
128
 
131
129
  1. Fork the repository on GitHub.
132
130
  2. Add the upstream repository as `upstream`.
133
- 3. Branch from the upstream `staging` branch.
131
+ 3. Branch from the upstream `main` branch.
134
132
  4. Make a focused change and follow the local setup instructions.
135
133
  5. Add tests and documentation for behavior changes.
136
134
  6. Run all applicable checks locally.
137
- 7. Push to the fork and open a pull request targeting `staging`.
135
+ 7. Push to the fork and open a pull request targeting `main`.
138
136
  8. Explain the problem, proposed solution, validation, compatibility, and rollout impact.
139
137
  9. Address maintainer feedback without rewriting unrelated history or scope.
140
138
 
@@ -157,17 +155,14 @@ Keep pull requests focused and reviewable. Include screenshots or recordings for
157
155
 
158
156
  | Event | Expected automation |
159
157
  | -------------------------------------------------- | ------------------------------------------------------------------------------------- |
160
- | Draft pull request targeting `staging` | No runner-heavy validation; run local checks before requesting review |
161
- | Ready pull request targeting `staging` | Fast validation: CI plus unit tests, ending in `Validation / Gate` |
162
- | Draft ordinary pull request targeting `main` | No runner-heavy validation; run local checks before requesting review |
163
- | Ready ordinary pull request targeting `main` | Audit validation: CI, full tests, Security, and CodeQL, ending in `Validation / Gate` |
158
+ | Draft pull request targeting `main` | No runner-heavy validation; run local checks before requesting review |
159
+ | Ready pull request targeting `main` | Audit validation: CI, full tests, Security, and CodeQL, ending in `Validation / Gate` |
164
160
  | Exact Release Please pull request targeting `main` | Release-policy validation only, ending in `Validation / Gate` |
165
161
  | Scheduled or manual validation | Full audit tier |
166
162
  | Push to a working branch | Draft PR workflow |
167
- | Push to `staging` | Promotion PR workflow; canonical validation waits for the PR event |
168
163
  | Push to `main` | Release workflow; canonical validation already ran on the merged PR |
169
164
 
170
- Draft pull requests do not start runner-heavy validation. Marking a pull request ready for review starts the applicable validation tier; converting it back to draft cancels in-flight validation, and no replacement starts until it is ready again.
165
+ Draft pull requests do not start validation. Marking a pull request ready for review starts the applicable validation tier. Convert it back to draft after an update, then mark it ready again after every update so the required checks attach to the current head. Converting it to draft runs only the lightweight cancellation control.
171
166
 
172
167
  Pull-request validation keys concurrency by event and pull-request head, so a newer update cancels its superseded run. Scheduled and manual audits use a separate caller pinned to the protected default branch; this prevents caller-selected runtime code from executing with default-branch cache access. Both callers use the mode-aware orchestrator, which fans out only the required jobs and concludes with the stable aggregate gate.
173
168
 
@@ -181,11 +176,10 @@ Security checks can be skipped when repository visibility or the GitHub plan doe
181
176
 
182
177
  ## Review and merge protocol
183
178
 
184
- | Change | Target | Merge method | Merge gate |
185
- | ---------------------------- | --------- | ----------------------------------------------- | --------------------------------------------------------- |
186
- | Working branch | `staging` | Squash | All applicable required checks pass |
187
- | `staging` → `main` promotion | `main` | Rebase (`merge_strategy`) | Current staging checks, release review, and rollout notes |
188
- | Release Please version PR | `main` | Rebase (`release_merge_strategy`, fails closed) | Validation gate and release policy pass |
179
+ | Change | Target | Merge method | Merge gate |
180
+ | ------------------------- | ------ | --------------------------------- | --------------------------------------- |
181
+ | Working branch | `main` | Squash | All applicable required checks pass |
182
+ | Release Please version PR | `main` | Squash (`release_merge_strategy`) | Validation gate and release policy pass |
189
183
 
190
184
  Reviewers focus on correctness, security, maintainability, test coverage, operational impact, and compatibility. Authors remain responsible for responding to feedback and verifying the final commit.
191
185
 
@@ -195,7 +189,7 @@ Report vulnerabilities privately using [SECURITY.md](./SECURITY.md), never in a
195
189
 
196
190
  For an urgent production or security issue:
197
191
 
198
- 1. Create a focused branch from `staging`.
192
+ 1. Create a focused branch from `main`.
199
193
  2. Document the urgency and affected systems without exposing secrets.
200
194
  3. Open a pull request and run the narrowest complete validation available.
201
195
  4. Request the appropriate maintainer review.
@@ -4,11 +4,10 @@
4
4
 
5
5
  ## Supported Versions
6
6
 
7
- The latest commit on `staging` receives security patches. Patches are promoted to `main` through the next release cycle.
7
+ The latest commit on `main` receives security patches.
8
8
 
9
9
  | Branch | Supported |
10
10
  | ---------------- | --------- |
11
- | `staging` | ✅ |
12
11
  | `main` | ✅ |
13
12
  | Feature branches | ❌ |
14
13
 
@@ -11,7 +11,7 @@ dependency_review: auto
11
11
  package_manager: bun
12
12
  toolchain: auto
13
13
  runtime_repository: 0xPlayerOne/code-foundry
14
- runtime_ref: v1.3.1
14
+ runtime_ref: v1.9.6
15
15
  release_type: node
16
16
  npm_publish: true
17
17
  license: agpl-3.0-or-later
@@ -30,13 +30,13 @@ jobs:
30
30
  id: detect
31
31
  env:
32
32
  OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
33
- OPENCODE_SECURITY_OVERRIDE: ${{ vars.OPENCODE_SECURITY }}
33
+ OPENCODE_SECURITY: ${{ vars.OPENCODE_SECURITY }}
34
34
  run: |
35
35
  enabled=false
36
36
  token=false
37
37
  # OpenCode Security is controlled only by the repository or
38
38
  # organization variable. An unset value is disabled.
39
- if [ "$OPENCODE_SECURITY_OVERRIDE" = "true" ]; then
39
+ if [ "$OPENCODE_SECURITY" = "true" ]; then
40
40
  enabled=true
41
41
  fi
42
42
  if [ -n "$OPENCODE_API_KEY" ]; then token=true; fi
@@ -30,5 +30,4 @@ jobs:
30
30
  runtime-ref: ${{ github.sha }}
31
31
  secrets:
32
32
  CODE_FOUNDRY_TOKEN: ${{ secrets.CODE_FOUNDRY_TOKEN }}
33
- STAGING_DEPLOY_KEY: ${{ secrets.STAGING_DEPLOY_KEY }}
34
33
  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -80,7 +80,7 @@ permissions:
80
80
  jobs:
81
81
  ci:
82
82
  name: CI
83
- if: vars.CI_BILLING_PAUSED != 'true' && (inputs.mode == 'fast' || inputs.mode == 'audit')
83
+ if: vars.CI_BILLING_PAUSED != 'true' && (inputs.mode == 'fast' || inputs.mode == 'audit' || inputs.mode == 'release')
84
84
  uses: ./.github/workflows/ci.yml
85
85
  with:
86
86
  runtime-repository: ${{ inputs.runtime-repository }}
@@ -92,7 +92,7 @@ jobs:
92
92
 
93
93
  test:
94
94
  name: Test
95
- if: vars.CI_BILLING_PAUSED != 'true' && (inputs.mode == 'fast' || inputs.mode == 'audit')
95
+ if: vars.CI_BILLING_PAUSED != 'true' && (inputs.mode == 'fast' || inputs.mode == 'audit' || inputs.mode == 'release')
96
96
  uses: ./.github/workflows/test.yml
97
97
  with:
98
98
  runtime-repository: ${{ inputs.runtime-repository }}
@@ -106,7 +106,7 @@ jobs:
106
106
 
107
107
  security:
108
108
  name: Security
109
- if: vars.CI_BILLING_PAUSED != 'true' && inputs.mode == 'audit'
109
+ if: vars.CI_BILLING_PAUSED != 'true' && (inputs.mode == 'audit' || inputs.mode == 'release')
110
110
  uses: ./.github/workflows/security.yml
111
111
  with:
112
112
  runtime-repository: ${{ inputs.runtime-repository }}
@@ -129,9 +129,10 @@ jobs:
129
129
 
130
130
  # Aggregate check: "Validation / Gate" (caller job name + this job name).
131
131
  # Always evaluates; only jobs required for the mode must have succeeded.
132
- # The release tier runs no suite jobs: its policy (generated release diff
133
- # validation) executes as a conditional step below, so no separate
134
- # release-policy job renders skipped checks on ordinary pull requests.
132
+ # The release tier runs the full audit suite so Release Please pull requests
133
+ # expose no neutral suite checks. Its generated release diff policy executes
134
+ # as a conditional step below, so ordinary pull requests still render no
135
+ # skipped release-policy row.
135
136
  gate:
136
137
  name: Gate
137
138
  needs: [ci, test, security, codeql]
package/AGENTS.md CHANGED
@@ -71,11 +71,11 @@ Ask for clarification when a missing decision would materially change the implem
71
71
  8. Run the broadest applicable validation available.
72
72
  9. Report what changed, exact checks and results, skipped checks with reasons, risks, and remaining work.
73
73
 
74
- For normal feature work, branch from `staging` and target pull requests at `staging`. Treat `main` as the protected release branch. Follow `.github/CONTRIBUTING.md` for the complete internal and external contribution flow.
74
+ For normal feature work, branch from `main` and target pull requests at `main`. Treat `main` as the protected release branch. Follow `.github/CONTRIBUTING.md` for the complete internal and external contribution flow.
75
75
 
76
76
  ## Git workflow and merging
77
77
 
78
- This repository uses the `staging-release` workflow: topic branches **squash** into `staging`, a promotion PR **rebases** validated changes into `main` (`merge_strategy: rebase`), and the Release Please version PR **rebases** into `main` (`release_merge_strategy: rebase`). Feature PRs land on `staging` with squash merges; promotion and release PRs land on `main` with rebase merges. Re-align `staging` with `main` after a release when needed.
78
+ This repository uses the `direct` workflow: topic branches **squash** directly into `main`, and the Release Please version PR **squashes** into `main` (`release_merge_strategy: squash`). Feature and release PRs land on `main` with squash merges. No integration branch exists; all pull requests target `main`.
79
79
 
80
80
  Merge only with the repository's canonical method. Never merge with `--admin`, never default or auto-select a merge method, and never use a method the branch ruleset does not allow. When in doubt, prefer the merge button's configured method and verify the ruleset after merging. Check `.github/CONTRIBUTING.md` for the complete flow and merge table.
81
81
 
@@ -149,7 +149,7 @@ If a check cannot run, state the exact reason. A skipped check is not a passing
149
149
  ## GitHub workflows and configuration
150
150
 
151
151
  - Keep workflows concise, independently runnable, and safe to re-run.
152
- - Use `push` for `main, staging` and `pull_request` for `staging` unless a workflow has a documented event-specific reason.
152
+ - Use `push` for `main` and `pull_request` for `main` unless a workflow has a documented event-specific reason.
153
153
  - Give workflows clear names and jobs concise names; avoid repeating the workflow name in the job name.
154
154
  - Use per-workflow concurrency groups that cancel superseded runs while allowing independent workflows to run in parallel.
155
155
  - Keep setup language-aware and cache dependency downloads by lockfile; do not cache secrets, `node_modules`, virtual environments, or broad build output without a measured reason.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.9.7](https://github.com/0xPlayerOne/code-foundry/compare/v1.9.6...v1.9.7) (2026-09-08)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **ci:** run full validation on release PRs ([#517](https://github.com/0xPlayerOne/code-foundry/issues/517)) ([01a3555](https://github.com/0xPlayerOne/code-foundry/commit/01a355505d6372dc26e2d917e0e6d566ab25546c))
9
+ * **sync:** remove direct topology staging residue ([#515](https://github.com/0xPlayerOne/code-foundry/issues/515)) ([2765e6a](https://github.com/0xPlayerOne/code-foundry/commit/2765e6a6f66137d37f3d65f8eb8311ba28eeafd7))
10
+
3
11
  ## [1.9.6](https://github.com/0xPlayerOne/code-foundry/compare/v1.9.5...v1.9.6) (2026-09-08)
4
12
 
5
13
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "1.9.6",
3
+ "version": "1.9.7",
4
4
  "description": "A fast, language-aware repository factory for agent-ready workflows, testing, security, and release automation.",
5
5
  "homepage": "https://github.com/0xPlayerOne/code-foundry#readme",
6
6
  "bugs": {
@@ -551,6 +551,21 @@ function renderWorkflow(content, config, repository, ref, rustCodeql) {
551
551
  // target main, so their callers trigger on main alone.
552
552
  if (!isStagingRelease(config.git_workflow)) {
553
553
  rendered = rendered.replace(/^(\s+branches:)\s*\[main,\s*staging\]\s*$/gm, `$1 [main]`)
554
+ // Direct repositories have no staging branch or release reconciliation,
555
+ // so their generated release caller must not expose the legacy deploy-key
556
+ // secret. Keep it in the staging-release template for repositories that
557
+ // still explicitly select that topology.
558
+ if (workflow === 'release') {
559
+ rendered = rendered.replace(
560
+ /^\s+STAGING_DEPLOY_KEY:\s+\$\{\{\s*secrets\.STAGING_DEPLOY_KEY\s*\}\}\s*\n/m,
561
+ ''
562
+ )
563
+ }
564
+ } else if (workflow === 'release' && !rendered.includes('STAGING_DEPLOY_KEY')) {
565
+ rendered = rendered.replace(
566
+ /^(\s+)CODE_FOUNDRY_TOKEN:\s+\$\{\{\s*secrets\.CODE_FOUNDRY_TOKEN\s*\}\}\s*$/m,
567
+ '$&\n$1STAGING_DEPLOY_KEY: ${{ secrets.STAGING_DEPLOY_KEY }}'
568
+ )
554
569
  }
555
570
  if (workflow === 'draft-pr') {
556
571
  // The draft PR caller states the PR base explicitly so the shared
@@ -657,21 +672,26 @@ function stripDependabotEcosystem(content, ecosystem) {
657
672
  * @returns {string}
658
673
  */
659
674
  export function renderContributionDocs(content, file, config) {
660
- if (isStagingRelease(config.git_workflow)) {
661
- if (configured(config.staging_validation_mode, 'fast') !== 'audit') return content
662
- return content.replace(
663
- 'Fast validation: CI plus unit tests, ending in `Validation / Gate`',
664
- 'Audit validation: CI, full tests, Security, and CodeQL, ending in `Validation / Gate`'
665
- )
666
- }
667
675
  const replacements = DIRECT_DOC_REPLACEMENTS[file]
668
676
  if (!replacements) return content
669
677
  let rendered = content
670
- for (const [from, to] of replacements) {
671
- if (!rendered.includes(from)) {
672
- throw new Error(`Missing direct-workflow template marker in ${file}: ${JSON.stringify(from)}`)
678
+ const stagingRelease = isStagingRelease(config.git_workflow)
679
+ for (const [staging, direct] of replacements) {
680
+ const from = stagingRelease ? direct : staging
681
+ const to = stagingRelease ? staging : direct
682
+ if (rendered.includes(from)) {
683
+ rendered = rendered.replace(from, to)
684
+ } else if (!rendered.includes(to)) {
685
+ throw new Error(
686
+ `Missing ${stagingRelease ? 'staging-release' : 'direct'} workflow template marker in ${file}: ${JSON.stringify(from)}`
687
+ )
673
688
  }
674
- rendered = rendered.replace(from, to)
689
+ }
690
+ if (stagingRelease && configured(config.staging_validation_mode, 'fast') === 'audit') {
691
+ rendered = rendered.replace(
692
+ 'Fast validation: CI plus unit tests, ending in `Validation / Gate`',
693
+ 'Audit validation: CI, full tests, Security, and CodeQL, ending in `Validation / Gate`'
694
+ )
675
695
  }
676
696
  return rendered
677
697
  }
@@ -729,11 +749,11 @@ const DIRECT_DOC_REPLACEMENTS = {
729
749
  ],
730
750
  [
731
751
  '| Event | Expected automation |\n| -------------------------------------------------- | ------------------------------------------------------------------------------------- |\n| Draft pull request targeting `staging` | No runner-heavy validation; run local checks before requesting review |\n| Ready pull request targeting `staging` | Fast validation: CI plus unit tests, ending in `Validation / Gate` |\n| Draft ordinary pull request targeting `main` | No runner-heavy validation; run local checks before requesting review |\n| Ready ordinary pull request targeting `main` | Audit validation: CI, full tests, Security, and CodeQL, ending in `Validation / Gate` |\n| Exact Release Please pull request targeting `main` | Release-policy validation only, ending in `Validation / Gate` |\n| Scheduled or manual validation | Full audit tier |\n| Push to a working branch | Draft PR workflow |\n| Push to `staging` | Promotion PR workflow; canonical validation waits for the PR event |\n| Push to `main` | Release workflow; canonical validation already ran on the merged PR |\n',
732
- '| Event | Expected automation |\n|------------------------------------------------------------------------------------------------------------------------------------------------|\n| Draft pull request targeting `main` | No runner-heavy validation; run local checks before requesting review |\n| Ready pull request targeting `main` | Audit validation: CI, full tests, Security, and CodeQL, ending in `Validation / Gate` |\n| Exact Release Please pull request targeting `main` | Release-policy validation only, ending in `Validation / Gate` |\n| Scheduled or manual validation | Full audit tier |\n| Push to a working branch | Draft PR workflow |\n| Push to `main` | Release workflow; canonical validation already ran on the merged PR |',
752
+ '| Event | Expected automation |\n| -------------------------------------------------- | ------------------------------------------------------------------------------------- |\n| Draft pull request targeting `main` | No runner-heavy validation; run local checks before requesting review |\n| Ready pull request targeting `main` | Audit validation: CI, full tests, Security, and CodeQL, ending in `Validation / Gate` |\n| Exact Release Please pull request targeting `main` | Release-policy validation only, ending in `Validation / Gate` |\n| Scheduled or manual validation | Full audit tier |\n| Push to a working branch | Draft PR workflow |\n| Push to `main` | Release workflow; canonical validation already ran on the merged PR |\n',
733
753
  ],
734
754
  [
735
755
  '| Change | Target | Merge method | Merge gate |\n| ---------------------------- | --------- | ----------------------------------------------- | --------------------------------------------------------- |\n| Working branch | `staging` | Squash | All applicable required checks pass |\n| `staging` → `main` promotion | `main` | Rebase (`merge_strategy`) | Current staging checks, release review, and rollout notes |\n| Release Please version PR | `main` | Rebase (`release_merge_strategy`, fails closed) | Validation gate and release policy pass |\n',
736
- '| Change | Target | Merge method | Merge gate |\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Working branch | `main` | Squash | All applicable required checks pass |\n| Release Please version PR | `main` | Squash (`release_merge_strategy`) | Validation gate and release policy pass |',
756
+ '| Change | Target | Merge method | Merge gate |\n| ------------------------- | ------ | --------------------------------- | --------------------------------------- |\n| Working branch | `main` | Squash | All applicable required checks pass |\n| Release Please version PR | `main` | Squash (`release_merge_strategy`) | Validation gate and release policy pass |\n',
737
757
  ],
738
758
  [
739
759
  'Draft pull requests do not start runner-heavy validation. Marking a pull request ready for review starts the applicable validation tier; converting it back to draft cancels in-flight validation, and no replacement starts until it is ready again.',
@@ -19,9 +19,9 @@ export const RELEASE_PLEASE_PREFIX = 'release-please--branches--main'
19
19
 
20
20
  /** Stable aggregate check name emitted by the validation orchestrator's gate job. */
21
21
  export const AGGREGATE_CHECK_NAME = 'Validation / Gate'
22
- /** Job ids owned by the validation orchestrator. The release tier runs no
23
- * suite jobs: its policy executes as a conditional step inside the gate, so
24
- * no release-policy job id exists. */
22
+ /** Job ids owned by the validation orchestrator. Release runs the full audit
23
+ * suite and validates its generated diff inside the gate, so no separate
24
+ * release-policy job id exists. */
25
25
  export const VALIDATION_JOBS = ['ci', 'test', 'security', 'codeql']
26
26
 
27
27
  /** Events that may trigger canonical validation. */
@@ -82,12 +82,10 @@ export function classifyValidationMode(input) {
82
82
  const REQUIRED_JOBS_BY_MODE = {
83
83
  fast: ['ci', 'test'],
84
84
  audit: ['ci', 'test', 'security', 'codeql'],
85
- // The release tier skips the CI/test/security suites (the generated release
86
- // diff check runs as a conditional step inside the gate itself) but still
87
- // runs CodeQL: repository rulesets that require code scanning results need
88
- // a CodeQL analysis of the release pull request's commit, and Release
89
- // Please pull requests must not deadlock against that requirement.
90
- release: ['codeql'],
85
+ // Release Please pull requests run the full audit suite so every registered
86
+ // validation check succeeds rather than appearing as an expected skip. The
87
+ // gate additionally validates the generated release diff.
88
+ release: ['ci', 'test', 'security', 'codeql'],
91
89
  }
92
90
 
93
91
  /**