Skip to content

V44 Canonical Promotion: Scaled Engineering Economy #19

V44 Canonical Promotion: Scaled Engineering Economy

V44 Canonical Promotion: Scaled Engineering Economy #19

name: V38 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-v38:
name: V38 Promotion Validation
if: >-
${{
github.event_name == 'workflow_dispatch' ||
(
github.event.pull_request.base.ref == 'main' &&
github.event.pull_request.head.ref == 'version/v38' &&
github.event.pull_request.head.repo.full_name == github.repository
)
}}
runs-on: ubuntu-latest
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 V38 promotion readiness
run: |
POINTER="$(cat BITCODE_SPEC.txt)"
if [ "$POINTER" = "V37" ]; then
node scripts/check-bitcode-spec-family.mjs --version V38 --mode draft --current-target V37
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V37 --draft-target V38
node scripts/check-bitcode-canonical-inputs.mjs --current-target V37
node scripts/check-v38-gate1-inference-stack-roadmap-opening.mjs --skip-branch-check
node scripts/check-v38-gate2-inference-surface-inventory.mjs --skip-branch-check
node scripts/check-v38-gate3-ptrr-failsafe-thricified-stack.mjs --skip-branch-check
node scripts/check-v38-gate4-prompt-benchmark-report.mjs --skip-branch-check
node scripts/check-v38-gate5-inference-telemetry-disclosure-report.mjs --skip-branch-check
node scripts/check-v38-gate6-read-need-comprehension-inference-hardening.mjs --skip-branch-check --skip-package-tests
node scripts/check-v38-gate7-read-fits-finding-search-embeddings.mjs --skip-branch-check --skip-package-tests
node scripts/check-v38-gate8-assetpack-synthesis-economic-traceability.mjs --skip-branch-check --skip-package-tests
node scripts/check-v38-gate9-conversation-tool-prompt-inference-parity.mjs --skip-branch-check --skip-package-tests
node scripts/check-v38-gate10-local-staging-inference-depository-search-rehearsal.mjs --skip-branch-check --skip-package-tests
node scripts/check-v38-gate11-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
node scripts/promote-bitcode-canon.mjs --version V38 --commit HEAD --dry-run
elif [ "$POINTER" = "V38" ]; then
node scripts/check-bitcode-spec-family.mjs --version V38 --mode promoted --current-target V38
node scripts/check-bitcode-canonical-inputs.mjs --current-target V38
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V38 --draft-target V39
node scripts/check-v38-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 test:qa:v28:pipeline-readback
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
pnpm --dir uapi exec jest --runTestsByPath \
tests/userDataRoute.test.ts \
tests/auxillariesWalletPane.test.tsx \
tests/auxillariesContent.access.test.tsx \
tests/auxillariesWorkspacePanels.access.test.tsx \
tests/auxillariesWorkspacePanels.test.tsx \
tests/api/auxillariesGithubConnectionRoute.test.ts \
tests/api/vcsRoutes.test.ts \
tests/auxillariesExternalsPane.test.tsx \
tests/profileStep.test.tsx \
tests/api/readReviewRoute.test.ts \
tests/api/pipelineHarnessRoute.test.ts \
tests/terminalPipelineHarnessClient.test.ts \
tests/terminalDepositReadWorkbench.test.ts \
tests/terminalTransactionQuery.test.ts \
tests/terminalTransactionReadModel.test.ts \
tests/terminalProtocolProjection.test.ts \
tests/terminalInterfaceIntegrationRegression.test.ts \
tests/terminalWalletBtcOperation.test.ts \
tests/terminalJournalReconciliation.test.ts \
tests/terminalOrganizationAuthority.test.ts \
tests/protocolCommercialBoundary.test.ts \
tests/terminalTransactionDetailCards.test.tsx \
tests/terminalTransactionDetailSnapshot.test.ts \
tests/terminalUxBrowserProof.test.tsx \
tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts \
tests/pipelineExecutionLogHeader.test.tsx \
tests/api/conversationSessionRouteHistory.test.ts \
tests/api/conversationSessionRouteHistoryContract.test.ts \
tests/api/conversationStreamEventContract.test.ts \
tests/conversationStreamPipelineLog.test.tsx \
tests/conversationWritingWorkspace.test.tsx \
tests/conversationSourceSelector.test.tsx \
tests/conversationTerminalHandoff.test.tsx \
tests/api/conversationPersistencePrivacyRedaction.test.ts \
tests/conversationPersistencePrivacyPanel.test.tsx \
tests/api/conversationTelemetryProofHooks.test.ts \
tests/conversationTelemetryProofPanel.test.tsx \
tests/api/conversationRehearsal.test.ts \
tests/conversationRehearsalPanel.test.tsx \
--runInBand
git diff --check
- name: Promote V38 canon files
if: >-
${{
github.event_name == 'pull_request' &&
github.event.pull_request.head.ref == 'version/v38'
}}
env:
HEAD_BRANCH: ${{ github.event.pull_request.head.ref }}
run: |
if [ "$(cat BITCODE_SPEC.txt)" = "V38" ]; then
echo "BITCODE_SPEC.txt already points to V38."
exit 0
fi
PROOF_SOURCE_COMMIT="$(git rev-parse HEAD)"
npm run promote:canon -- --version V38 --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_V38.md \
BITCODE_SPEC_V38_DELTA.md \
BITCODE_SPEC_V38_NOTES.md \
BITCODE_SPEC_V38_PARITY_MATRIX.md \
BITCODE_SPEC_V38_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 V38"
git push origin "HEAD:$HEAD_BRANCH"