V45 Canonical Promotion: Knowledge Commoditization Protocol Precision #18
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: V40 Canon Promotion | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| types: | |
| - opened | |
| - synchronize | |
| - reopened | |
| - ready_for_review | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: write | |
| pull-requests: read | |
| jobs: | |
| promote-v40: | |
| name: V40 Promotion Validation | |
| if: >- | |
| ${{ | |
| github.event_name == 'workflow_dispatch' || | |
| ( | |
| github.event.pull_request.base.ref == 'main' && | |
| github.event.pull_request.head.ref == 'version/v40' && | |
| github.event.pull_request.head.repo.full_name == github.repository | |
| ) | |
| }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - name: Checkout version branch | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: ${{ github.event.pull_request.head.ref || github.ref_name }} | |
| token: ${{ github.token }} | |
| fetch-depth: 0 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "24" | |
| cache: pnpm | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: Validate V40 promotion readiness | |
| run: | | |
| POINTER="$(cat BITCODE_SPEC.txt)" | |
| if [ "$POINTER" = "V39" ]; then | |
| node scripts/check-bitcode-spec-family.mjs --version V40 --mode draft --current-target V39 | |
| node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V39 --draft-target V40 | |
| node scripts/check-bitcode-canonical-inputs.mjs --current-target V39 | |
| node scripts/check-v40-gate1-testing-roadmap-opening.mjs --skip-branch-check | |
| node scripts/check-v40-gate2-test-inventory-coverage-matrix.mjs --skip-branch-check --skip-package-tests | |
| node scripts/check-v40-gate3-unit-coverage.mjs --skip-branch-check --skip-package-tests | |
| node scripts/check-v40-gate4-api-integration-contracts.mjs --skip-branch-check --skip-integration-tests | |
| node scripts/check-v40-gate5-reading-pipeline-integration.mjs --skip-branch-check --skip-integration-tests | |
| node scripts/check-v40-gate6-conversation-terminal-integration.mjs --skip-branch-check --skip-integration-tests | |
| node scripts/check-v40-gate7-browser-e2e-visual-proof.mjs --skip-branch-check --skip-browser-tests | |
| node scripts/check-v40-gate8-ledger-storage-sync.mjs --skip-branch-check --skip-integration-tests | |
| node scripts/check-v40-gate9-local-staging-rehearsal-automation.mjs --skip-branch-check --skip-package-tests | |
| node scripts/check-v40-gate10-prompt-benchmark-smoke-v41-readiness.mjs --skip-branch-check --skip-package-tests | |
| node scripts/check-v40-gate11-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests | |
| node scripts/promote-bitcode-canon.mjs --version V40 --commit HEAD --dry-run | |
| elif [ "$POINTER" = "V40" ]; then | |
| node scripts/check-bitcode-spec-family.mjs --version V40 --mode promoted --current-target V40 | |
| node scripts/check-bitcode-canonical-inputs.mjs --current-target V40 | |
| node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V40 --draft-target V41 | |
| node scripts/check-v40-gate11-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests | |
| else | |
| echo "Unexpected BITCODE_SPEC.txt pointer: $POINTER" >&2 | |
| exit 1 | |
| fi | |
| pnpm --filter @bitcode/protocol typecheck | |
| pnpm --filter @bitcode/protocol test | |
| pnpm --filter @bitcode/btd typecheck | |
| pnpm --filter @bitcode/btd test | |
| npm --prefix protocol-demonstration test | |
| npm --prefix protocol-demonstration run test:v28-mvp-qa | |
| pnpm --filter @bitcode/pipeline-asset-pack typecheck | |
| pnpm --filter @bitcode/pipeline-hosts typecheck | |
| pnpm --filter @bitcode/pipeline-asset-pack exec jest --config jest.config.cjs --passWithNoTests --forceExit | |
| pnpm --filter @bitcode/pipeline-hosts exec jest --config jest.config.cjs --passWithNoTests --forceExit | |
| git diff --check | |
| - name: Promote V40 canon files | |
| if: >- | |
| ${{ | |
| github.event_name == 'pull_request' && | |
| github.event.pull_request.head.ref == 'version/v40' | |
| }} | |
| env: | |
| HEAD_BRANCH: ${{ github.event.pull_request.head.ref }} | |
| run: | | |
| if [ "$(cat BITCODE_SPEC.txt)" = "V40" ]; then | |
| echo "BITCODE_SPEC.txt already points to V40." | |
| exit 0 | |
| fi | |
| PROOF_SOURCE_COMMIT="$(git rev-parse HEAD)" | |
| npm run promote:canon -- --version V40 --commit "$PROOF_SOURCE_COMMIT" | |
| git config user.name "github-actions[bot]" | |
| git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
| git add \ | |
| BITCODE_SPEC.txt \ | |
| BITCODE_SPEC_V40.md \ | |
| BITCODE_SPEC_V40_DELTA.md \ | |
| BITCODE_SPEC_V40_NOTES.md \ | |
| BITCODE_SPEC_V40_PARITY_MATRIX.md \ | |
| BITCODE_SPEC_V40_PROVEN.md \ | |
| protocol-demonstration/src/canon-posture.js \ | |
| protocol-demonstration/README.md \ | |
| packages/protocol/src/canon-posture.js \ | |
| packages/protocol/data/state.json \ | |
| packages/protocol/README.md \ | |
| .bitcode | |
| git commit -m "Promote Bitcode canon to V40" | |
| git push origin "HEAD:$HEAD_BRANCH" |