Skip to content

Commit f7efcd0

Browse files
V29 Gate 10: Accept promoted protocol posture
Make the Gate 10 promotion-readiness checker validate the protocol package posture according to the active pointer, accepting V28/V29 before promotion and V29/V30 after the generated canon commit. Document the promoted posture requirement in the V29 spec family.
1 parent c245da1 commit f7efcd0

4 files changed

Lines changed: 21 additions & 11 deletions

BITCODE_SPEC_V29.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,9 @@ The promotion-readiness contract has five parts:
277277
`packages/protocol/data/state.json` are commercial runtime posture carriers.
278278
They must align to V28 active / V29 draft during Gate 10 work and be rewritten
279279
to V29 active / V30 draft by promotion automation.
280+
The Gate 10 checker is promotion-mode aware: it must accept the V28/V29 package
281+
posture before the generated canon commit and the V29/V30 package posture after
282+
the generated canon commit.
280283

281284
Gate 10 does not itself promote `BITCODE_SPEC.txt`.
282285
It closes when `version/v29` can be pull-requested to `main` and the V29

BITCODE_SPEC_V29_DELTA.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,8 @@ Closure acceptance:
202202

203203
- `check:v29-gate10` validates the V29 promotion-readiness surface from a clean
204204
Gate 10 branch and can run in `--promotion-mode` after `BITCODE_SPEC.txt`
205-
advances to `V29`.
205+
advances to `V29`, including the promoted V29 active / V30 draft protocol
206+
package posture.
206207
- Gate-quality CI invokes all V29 gate scripts while V29 is still a draft and
207208
switches to promoted V29 validation after the promotion workflow writes the
208209
canonical pointer commit.

BITCODE_SPEC_V29_PARITY_MATRIX.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,8 @@ Accepted surfaces:
313313

314314
- `scripts/check-v29-gate10-local-staging-promotion-readiness.mjs` validates
315315
the Gate 10 specification, QA ledger, scripts, workflow wiring, runtime
316-
posture, and promotion-mode behavior.
316+
posture, and promotion-mode behavior before and after the generated V29/V30
317+
protocol package posture rewrite.
317318
- `.github/workflows/bitcode-gate-quality.yml` runs all V29 gate checks in
318319
draft posture and switches to promoted V29 checks after the promotion commit.
319320
- `.github/workflows/bitcode-canon-quality.yml` accepts both V28 active / V29

scripts/check-v29-gate10-local-staging-promotion-readiness.mjs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -193,20 +193,25 @@ function main() {
193193
'Runtime promotion preparation must update commercial package posture, package data, and package README.',
194194
);
195195

196+
const expectedActiveCanon = pointer === 'V29' ? 'V29' : 'V28';
197+
const expectedDraftTarget = pointer === 'V29' ? 'V30' : 'V29';
198+
const expectedProtocolReadmePosture =
199+
pointer === 'V29' ? 'V29` active, `V30` draft after V29 promotion' : 'V28` active, `V29` draft';
200+
196201
assertCheck(
197202
failures,
198-
packageCanonPosture.includes("ACTIVE_CANON_VERSION = 'V28'") &&
199-
packageCanonPosture.includes("DRAFT_TARGET_VERSION = 'V29'") &&
200-
packageState.includes('"activeCanonVersion": "V28"') &&
201-
packageState.includes('"draftTargetVersion": "V29"') &&
202-
packageState.includes('"activeProvenAppendixPath": "BITCODE_SPEC_V28_PROVEN.md"') &&
203-
packageState.includes('"draftSpecPath": "BITCODE_SPEC_V29.md"'),
204-
'Protocol package posture and seed state must be aligned to V28 active / V29 draft before promotion.',
203+
packageCanonPosture.includes(`ACTIVE_CANON_VERSION = '${expectedActiveCanon}'`) &&
204+
packageCanonPosture.includes(`DRAFT_TARGET_VERSION = '${expectedDraftTarget}'`) &&
205+
packageState.includes(`"activeCanonVersion": "${expectedActiveCanon}"`) &&
206+
packageState.includes(`"draftTargetVersion": "${expectedDraftTarget}"`) &&
207+
packageState.includes(`"activeProvenAppendixPath": "BITCODE_SPEC_${expectedActiveCanon}_PROVEN.md"`) &&
208+
packageState.includes(`"draftSpecPath": "BITCODE_SPEC_${expectedDraftTarget}.md"`),
209+
`Protocol package posture and seed state must be aligned to ${expectedActiveCanon} active / ${expectedDraftTarget} draft.`,
205210
);
206211
assertCheck(
207212
failures,
208-
protocolReadme.includes('V28` active, `V29` draft') && protocolReadme.includes('Gate 10'),
209-
'Protocol package README must name the draft posture and Gate 10 promotion boundary.',
213+
protocolReadme.includes(expectedProtocolReadmePosture) && protocolReadme.includes('Gate 10'),
214+
`Protocol package README must name the ${expectedActiveCanon}/${expectedDraftTarget} posture and Gate 10 promotion boundary.`,
210215
);
211216
assertCheck(
212217
failures,

0 commit comments

Comments
 (0)