Skip to content

(impl-only): Regenerate lockfile #1411

(impl-only): Regenerate lockfile

(impl-only): Regenerate lockfile #1411

name: Bitcode Canon Quality
on:
push:
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
bitcode-spec-basics:
name: Bitcode Spec Basics
runs-on: ubuntu-latest
container:
image: node:22-bookworm
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Validate active canon and draft posture
run: |
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V28" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V28
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V28 --draft-target V29
node scripts/check-bitcode-spec-family.mjs --version V28 --mode promoted --current-target V28
node scripts/check-bitcode-spec-family.mjs --version V29 --mode draft --current-target V28
elif [ "$POINTER" = "V29" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V29
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V29 --draft-target V30
node scripts/check-bitcode-spec-family.mjs --version V29 --mode promoted --current-target V29
node scripts/check-bitcode-spec-family.mjs --version V30 --mode draft --current-target V29
elif [ "$POINTER" = "V30" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V30
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V30 --draft-target V31
node scripts/check-bitcode-spec-family.mjs --version V30 --mode promoted --current-target V30
node scripts/check-bitcode-spec-family.mjs --version V31 --mode draft --current-target V30
elif [ "$POINTER" = "V31" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V31
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V31 --draft-target V32
node scripts/check-bitcode-spec-family.mjs --version V31 --mode promoted --current-target V31
if [ -f .specifications/BITCODE_SPEC_V32.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V32 --mode draft --current-target V31
fi
elif [ "$POINTER" = "V32" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V32
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V32 --draft-target V33
node scripts/check-bitcode-spec-family.mjs --version V32 --mode promoted --current-target V32
if [ -f .specifications/BITCODE_SPEC_V33.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V33 --mode draft --current-target V32
fi
elif [ "$POINTER" = "V33" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V33
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V33 --draft-target V34
node scripts/check-bitcode-spec-family.mjs --version V33 --mode promoted --current-target V33
if [ -f .specifications/BITCODE_SPEC_V34.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V34 --mode draft --current-target V33
fi
elif [ "$POINTER" = "V34" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V34
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V34 --draft-target V35
node scripts/check-bitcode-spec-family.mjs --version V34 --mode promoted --current-target V34
if [ -f .specifications/BITCODE_SPEC_V35.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V35 --mode draft --current-target V34
fi
elif [ "$POINTER" = "V35" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V35
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V35 --draft-target V36
node scripts/check-bitcode-spec-family.mjs --version V35 --mode promoted --current-target V35
if [ -f .specifications/BITCODE_SPEC_V36.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V36 --mode draft --current-target V35
node scripts/check-v36-gate1-exchange-roadmap-opening.mjs --skip-branch-check
if [ -f scripts/check-v36-gate2-exchange-activity-book-market-master-detail.mjs ]; then
node scripts/check-v36-gate2-exchange-activity-book-market-master-detail.mjs --skip-branch-check
fi
if [ -f scripts/check-v36-gate3-exchange-intent-order-contracts.mjs ]; then
node scripts/check-v36-gate3-exchange-intent-order-contracts.mjs --skip-branch-check
fi
if [ -f scripts/check-v36-gate4-exchange-rights-transfer-review.mjs ]; then
node scripts/check-v36-gate4-exchange-rights-transfer-review.mjs --skip-branch-check
fi
if [ -f scripts/check-v36-gate5-exchange-pricing-quote.mjs ]; then
node scripts/check-v36-gate5-exchange-pricing-quote.mjs --skip-branch-check
fi
if [ -f scripts/check-v36-gate6-exchange-settlement-reconciliation.mjs ]; then
node scripts/check-v36-gate6-exchange-settlement-reconciliation.mjs --skip-branch-check
fi
if [ -f scripts/check-v36-gate7-exchange-dispute-repair-revenue-route.mjs ]; then
node scripts/check-v36-gate7-exchange-dispute-repair-revenue-route.mjs --skip-branch-check
fi
if [ -f scripts/check-v36-gate8-exchange-ux-proof.mjs ]; then
node scripts/check-v36-gate8-exchange-ux-proof.mjs --skip-branch-check
fi
if [ -f scripts/check-v36-gate9-exchange-rehearsal.mjs ]; then
node scripts/check-v36-gate9-exchange-rehearsal.mjs --skip-branch-check
fi
if [ -f scripts/check-v36-gate10-promotion-readiness.mjs ]; then
node scripts/check-v36-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
fi
fi
elif [ "$POINTER" = "V36" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V36
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V36 --draft-target V37
node scripts/check-bitcode-spec-family.mjs --version V36 --mode promoted --current-target V36
node scripts/check-v36-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
if [ -f .specifications/BITCODE_SPEC_V37.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V37 --mode draft --current-target V36
node scripts/check-v37-gate1-conversations-roadmap-opening.mjs --skip-branch-check
if [ -f scripts/check-v37-gate2-conversation-session-route-history-contracts.mjs ]; then
node scripts/check-v37-gate2-conversation-session-route-history-contracts.mjs --skip-branch-check
fi
if [ -f scripts/check-v37-gate3-conversation-stream-event-contracts.mjs ]; then
node scripts/check-v37-gate3-conversation-stream-event-contracts.mjs --skip-branch-check
fi
if [ -f scripts/check-v37-gate4-conversation-writing-workspace.mjs ]; then
node scripts/check-v37-gate4-conversation-writing-workspace.mjs --skip-branch-check
fi
if [ -f scripts/check-v37-gate5-conversation-source-selector.mjs ]; then
node scripts/check-v37-gate5-conversation-source-selector.mjs --skip-branch-check
fi
if [ -f scripts/check-v37-gate6-conversation-product-handoff.mjs ]; then
node scripts/check-v37-gate6-conversation-product-handoff.mjs --skip-branch-check
fi
if [ -f scripts/check-v37-gate7-conversation-persistence-privacy-redaction.mjs ]; then
node scripts/check-v37-gate7-conversation-persistence-privacy-redaction.mjs --skip-branch-check
fi
if [ -f scripts/check-v37-gate8-conversation-telemetry-proof-hooks.mjs ]; then
node scripts/check-v37-gate8-conversation-telemetry-proof-hooks.mjs --skip-branch-check
fi
if [ -f scripts/check-v37-gate9-conversation-rehearsal.mjs ]; then
node scripts/check-v37-gate9-conversation-rehearsal.mjs --skip-branch-check
fi
if [ -f scripts/check-v37-gate10-promotion-readiness.mjs ]; then
node scripts/check-v37-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
fi
fi
elif [ "$POINTER" = "V37" ]; then
node scripts/check-bitcode-canonical-inputs.mjs --current-target V37
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V37 --draft-target V38
node scripts/check-bitcode-spec-family.mjs --version V37 --mode promoted --current-target V37
node scripts/check-v37-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
if [ -f .specifications/BITCODE_SPEC_V38.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V38 --mode draft --current-target V37
node scripts/check-v38-gate1-inference-stack-roadmap-opening.mjs --skip-branch-check
if [ -f scripts/check-v38-gate2-inference-surface-inventory.mjs ]; then
node scripts/check-v38-gate2-inference-surface-inventory.mjs --skip-branch-check
fi
if [ -f scripts/check-v38-gate3-ptrr-failsafe-thricified-stack.mjs ]; then
node scripts/check-v38-gate3-ptrr-failsafe-thricified-stack.mjs --skip-branch-check
fi
if [ -f scripts/check-v38-gate4-prompt-benchmark-report.mjs ]; then
node scripts/check-v38-gate4-prompt-benchmark-report.mjs --skip-branch-check
fi
if [ -f scripts/check-v38-gate5-inference-telemetry-disclosure-report.mjs ]; then
node scripts/check-v38-gate5-inference-telemetry-disclosure-report.mjs --skip-branch-check
fi
if [ -f scripts/check-v38-gate6-read-need-comprehension-inference-hardening.mjs ]; then
node scripts/check-v38-gate6-read-need-comprehension-inference-hardening.mjs --skip-branch-check --skip-package-tests # check:v38-gate6
fi
if [ -f scripts/check-v38-gate7-read-fits-finding-search-embeddings.mjs ]; then
node scripts/check-v38-gate7-read-fits-finding-search-embeddings.mjs --skip-branch-check --skip-package-tests # check:v38-gate7
fi
if [ -f scripts/check-v38-gate8-assetpack-synthesis-economic-traceability.mjs ]; then
node scripts/check-v38-gate8-assetpack-synthesis-economic-traceability.mjs --skip-branch-check --skip-package-tests # check:v38-gate8
fi
if [ -f scripts/check-v38-gate9-conversation-tool-prompt-inference-parity.mjs ]; then
node scripts/check-v38-gate9-conversation-tool-prompt-inference-parity.mjs --skip-branch-check --skip-package-tests # check:v38-gate9
fi
if [ -f scripts/check-v38-gate10-local-staging-inference-depository-search-rehearsal.mjs ]; then
node scripts/check-v38-gate10-local-staging-inference-depository-search-rehearsal.mjs --skip-branch-check --skip-package-tests # check:v38-gate10
fi
if [ -f scripts/check-v38-gate11-promotion-readiness.mjs ]; then
node scripts/check-v38-gate11-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests # check:v38-gate11
fi
fi
elif [ "$POINTER" = "V38" ]; then
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-bitcode-spec-family.mjs --version V38 --mode promoted --current-target V38
node scripts/check-v38-gate11-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ -f .specifications/BITCODE_SPEC_V39.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V39 --mode draft --current-target V38
node scripts/check-v39-gate1-commercial-reading-roadmap-opening.mjs --skip-branch-check
if [ -f scripts/check-v39-gate2-depository-supply-indexing.mjs ]; then
node scripts/check-v39-gate2-depository-supply-indexing.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v39-gate3-enterprise-reading-ux-state.mjs ]; then
node scripts/check-v39-gate3-enterprise-reading-ux-state.mjs --skip-branch-check --skip-uapi-tests
fi
if [ -f scripts/check-v39-gate4-read-need-review-resynthesis.mjs ]; then
node scripts/check-v39-gate4-read-need-review-resynthesis.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v39-gate5-read-fits-finding-runtime.mjs ]; then
node scripts/check-v39-gate5-read-fits-finding-runtime.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v39-gate6-assetpack-preview-quote-boundary.mjs ]; then
node scripts/check-v39-gate6-assetpack-preview-quote-boundary.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v39-gate7-settlement-rights-delivery.mjs ]; then
node scripts/check-v39-gate7-settlement-rights-delivery.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v39-gate8-operational-telemetry-repair-readback.mjs ]; then
node scripts/check-v39-gate8-operational-telemetry-repair-readback.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v39-gate9-interface-conversation-product-parity.mjs ]; then
node scripts/check-v39-gate9-interface-conversation-product-parity.mjs --skip-branch-check --skip-package-tests --skip-interface-tests
fi
if [ -f scripts/check-v39-gate10-local-staging-reading-rehearsal.mjs ]; then
node scripts/check-v39-gate10-local-staging-reading-rehearsal.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v39-gate11-promotion-readiness.mjs ]; then
node scripts/check-v39-gate11-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
fi
fi
elif [ "$POINTER" = "V39" ]; then
node scripts/check-bitcode-spec-family.mjs --version V39 --mode promoted --current-target V39
node scripts/check-bitcode-canonical-inputs.mjs --current-target V39
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V39 --draft-target V40
node scripts/check-v39-gate11-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ -f .specifications/BITCODE_SPEC_V40.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V40 --mode draft --current-target V39
node scripts/check-v40-gate1-testing-roadmap-opening.mjs --skip-branch-check
if [ -f scripts/check-v40-gate2-test-inventory-coverage-matrix.mjs ]; then
node scripts/check-v40-gate2-test-inventory-coverage-matrix.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v40-gate3-unit-coverage.mjs ]; then
node scripts/check-v40-gate3-unit-coverage.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v40-gate4-api-integration-contracts.mjs ]; then
node scripts/check-v40-gate4-api-integration-contracts.mjs --skip-branch-check --skip-integration-tests
fi
if [ -f scripts/check-v40-gate5-reading-pipeline-integration.mjs ]; then
node scripts/check-v40-gate5-reading-pipeline-integration.mjs --skip-branch-check --skip-integration-tests
fi
if [ -f scripts/check-v40-gate6-conversation-terminal-integration.mjs ]; then
node scripts/check-v40-gate6-conversation-terminal-integration.mjs --skip-branch-check --skip-integration-tests
fi
if [ -f scripts/check-v40-gate7-browser-e2e-visual-proof.mjs ]; then
node scripts/check-v40-gate7-browser-e2e-visual-proof.mjs --skip-branch-check --skip-browser-tests
fi
if [ -f scripts/check-v40-gate8-ledger-storage-sync.mjs ]; then
node scripts/check-v40-gate8-ledger-storage-sync.mjs --skip-branch-check --skip-integration-tests
fi
if [ -f scripts/check-v40-gate9-local-staging-rehearsal-automation.mjs ]; then
node scripts/check-v40-gate9-local-staging-rehearsal-automation.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v40-gate10-prompt-benchmark-smoke-v41-readiness.mjs ]; then
node scripts/check-v40-gate10-prompt-benchmark-smoke-v41-readiness.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v40-gate11-promotion-readiness.mjs ]; then
node scripts/check-v40-gate11-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
fi
fi
elif [ "$POINTER" = "V40" ]; then
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-bitcode-spec-family.mjs --version V40 --mode promoted --current-target V40
node scripts/check-v40-gate11-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ -f .specifications/BITCODE_SPEC_V41.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V41 --mode draft --current-target V40
node scripts/check-v41-gate1-prompt-program-roadmap-opening.mjs --skip-branch-check
if [ -f scripts/check-v41-gate2-promptpart-prompt-inventory.mjs ]; then
node scripts/check-v41-gate2-promptpart-prompt-inventory.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v41-gate3-registry-interpolation-contracts.mjs ]; then
node scripts/check-v41-gate3-registry-interpolation-contracts.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v41-gate4-reading-prompt-benchmark-baselines.mjs ]; then
node scripts/check-v41-gate4-reading-prompt-benchmark-baselines.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v41-gate5-readneed-prompt-hardening.mjs ]; then
node scripts/check-v41-gate5-readneed-prompt-hardening.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v41-gate6-readfitsfinding-prompt-hardening.mjs ]; then
node scripts/check-v41-gate6-readfitsfinding-prompt-hardening.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v41-gate7-conversation-tool-interface-prompt-rewrite.mjs ]; then
node scripts/check-v41-gate7-conversation-tool-interface-prompt-rewrite.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v41-gate8-prompt-program-benchmark-report.mjs ]; then
node scripts/check-v41-gate8-prompt-program-benchmark-report.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v41-gate9-promotion-readiness.mjs ]; then
node scripts/check-v41-gate9-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
fi
fi
elif [ "$POINTER" = "V41" ]; then
node scripts/check-bitcode-spec-family.mjs --version V41 --mode promoted --current-target V41
node scripts/check-bitcode-canonical-inputs.mjs --current-target V41
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V41 --draft-target V42
node scripts/check-v41-gate9-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ -f .specifications/BITCODE_SPEC_V42.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V42 --mode draft --current-target V41
node scripts/check-v42-gate1-mvp-experience-roadmap-opening.mjs --skip-branch-check
if [ -f scripts/check-v42-gate2-depositing-shortest-path.mjs ]; then
node scripts/check-v42-gate2-depositing-shortest-path.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v42-gate3-reading-shortest-path-state-machine.mjs ]; then
node scripts/check-v42-gate3-reading-shortest-path-state-machine.mjs --skip-branch-check --skip-uapi-tests
fi
if [ -f scripts/check-v42-gate4-readneed-review-resynthesis-product-closure.mjs ]; then
node scripts/check-v42-gate4-readneed-review-resynthesis-product-closure.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v42-gate5-readfitsfinding-preview-quote.mjs ]; then
node scripts/check-v42-gate5-readfitsfinding-preview-quote.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v42-gate6-settlement-rights-delivery.mjs ]; then
node scripts/check-v42-gate6-settlement-rights-delivery.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v42-gate7-ai-reading-demonstration.mjs ]; then
node scripts/check-v42-gate7-ai-reading-demonstration.mjs --skip-branch-check --skip-package-tests --skip-demonstration-tests
fi
if [ -f scripts/check-v42-gate8-local-staging-mvp-rehearsal.mjs ]; then
node scripts/check-v42-gate8-local-staging-mvp-rehearsal.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v42-gate9-promotion-readiness.mjs ]; then
node scripts/check-v42-gate9-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
fi
fi
elif [ "$POINTER" = "V42" ]; then
node scripts/check-bitcode-spec-family.mjs --version V42 --mode promoted --current-target V42
node scripts/check-bitcode-canonical-inputs.mjs --current-target V42
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V42 --draft-target V43
node scripts/check-v42-gate9-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ -f .specifications/BITCODE_SPEC_V43.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V43 --mode draft --current-target V42
node scripts/check-v43-gate1-packs-read-deposit-roadmap.mjs --skip-branch-check
if [ -f scripts/check-v43-gate2-route-vocabulary-inventory.mjs ]; then
node scripts/check-v43-gate2-route-vocabulary-inventory.mjs --skip-branch-check
fi
if [ -f scripts/check-v43-gate3-packs-activity-master-detail.mjs ]; then
node scripts/check-v43-gate3-packs-activity-master-detail.mjs --skip-branch-check --skip-uapi-tests
fi
if [ -f scripts/check-v43-gate4-read-route-five-step-ux.mjs ]; then
node scripts/check-v43-gate4-read-route-five-step-ux.mjs --skip-branch-check --skip-uapi-tests
fi
if [ -f scripts/check-v43-gate5-deposit-route-options.mjs ]; then
node scripts/check-v43-gate5-deposit-route-options.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v43-gate6-deposit-policy-compensation.mjs ]; then
node scripts/check-v43-gate6-deposit-policy-compensation.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v43-gate7-deposit-option-admission.mjs ]; then
node scripts/check-v43-gate7-deposit-option-admission.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v43-gate8-route-ux-product-excellence.mjs ]; then
node scripts/check-v43-gate8-route-ux-product-excellence.mjs --skip-branch-check --skip-uapi-tests
fi
if [ -f scripts/check-v43-gate9-cross-route-rehearsal-telemetry-repair.mjs ]; then
node scripts/check-v43-gate9-cross-route-rehearsal-telemetry-repair.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v43-gate10-promotion-readiness.mjs ]; then
node scripts/check-v43-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
fi
fi
elif [ "$POINTER" = "V43" ]; then
node scripts/check-bitcode-spec-family.mjs --version V43 --mode promoted --current-target V43
node scripts/check-bitcode-canonical-inputs.mjs --current-target V43
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V43 --draft-target V44
node scripts/check-v43-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ -f .specifications/BITCODE_SPEC_V44.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V44 --mode draft --current-target V43
node scripts/check-v44-gate1-scaled-economy-roadmap-opening.mjs --skip-branch-check
if [ -f scripts/check-v44-gate2-economic-domain-model.mjs ]; then
node scripts/check-v44-gate2-economic-domain-model.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v44-gate3-packs-portfolio-market-intelligence.mjs ]; then
node scripts/check-v44-gate3-packs-portfolio-market-intelligence.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v44-gate4-reading-budget-quote-policy.mjs ]; then
node scripts/check-v44-gate4-reading-budget-quote-policy.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v44-gate5-depositor-earnings-supply-opportunities.mjs ]; then
node scripts/check-v44-gate5-depositor-earnings-supply-opportunities.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v44-gate6-btd-btc-compensation-statements.mjs ]; then
node scripts/check-v44-gate6-btd-btc-compensation-statements.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v44-gate7-organization-policy-wallet-authority.mjs ]; then
node scripts/check-v44-gate7-organization-policy-wallet-authority.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v44-gate8-enterprise-product-ux.mjs ]; then
node scripts/check-v44-gate8-enterprise-product-ux.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v44-gate9-scaled-network-rehearsal.mjs ]; then
node scripts/check-v44-gate9-scaled-network-rehearsal.mjs --skip-branch-check --skip-uapi-tests --skip-package-tests
fi
if [ -f scripts/check-v44-gate10-promotion-readiness.mjs ]; then
node scripts/check-v44-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
fi
fi
elif [ "$POINTER" = "V44" ]; then
node scripts/check-bitcode-spec-family.mjs --version V44 --mode promoted --current-target V44
node scripts/check-bitcode-canonical-inputs.mjs --current-target V44
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V44 --draft-target V45
node scripts/check-v44-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ -f .specifications/BITCODE_SPEC_V45.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V45 --mode draft --current-target V44
if [ -f scripts/check-v45-gate16-proof-families-generated-artifacts.mjs ]; then
node scripts/check-v45-gate16-proof-families-generated-artifacts.mjs --skip-branch-check --skip-package-tests # check:v45-gate16
fi
if [ -f scripts/check-v45-gate17-source-safe-e2e-rehearsal.mjs ]; then
node scripts/check-v45-gate17-source-safe-e2e-rehearsal.mjs --skip-branch-check --skip-package-tests --skip-operator-dry-run # check:v45-gate17
fi
if [ -f scripts/check-v45-gate18-promotion-readiness.mjs ]; then
node scripts/check-v45-gate18-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests # check:v45-gate18
fi
fi
elif [ "$POINTER" = "V45" ]; then
node scripts/check-bitcode-spec-family.mjs --version V45 --mode promoted --current-target V45
node scripts/check-bitcode-canonical-inputs.mjs --current-target V45
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V45 --draft-target V46
node scripts/check-v45-gate18-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ ! -f .specifications/BITCODE_SPEC_V46.md ] && [ -f scripts/check-v45-gate19-promotion-addendum.mjs ]; then
node scripts/check-v45-gate19-promotion-addendum.mjs --skip-branch-check --skip-package-tests
fi
if [ -f .specifications/BITCODE_SPEC_V46.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V46 --mode draft --current-target V45
if [ -f scripts/check-v46-gate1-commercial-protocol-comprehension-roadmap.mjs ]; then
node scripts/check-v46-gate1-commercial-protocol-comprehension-roadmap.mjs --skip-branch-check
fi
if [ -f scripts/check-v46-gate2-protocol-comprehension-object-model.mjs ]; then
node scripts/check-v46-gate2-protocol-comprehension-object-model.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v46-gate3-public-operator-claim-boundaries.mjs ]; then
node scripts/check-v46-gate3-public-operator-claim-boundaries.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v46-gate4-product-route-comprehension-readback.mjs ]; then
node scripts/check-v46-gate4-product-route-comprehension-readback.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v46-gate5-interface-claim-contracts.mjs ]; then
node scripts/check-v46-gate5-interface-claim-contracts.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v46-gate6-proof-readback-operator-explanation.mjs ]; then
node scripts/check-v46-gate6-proof-readback-operator-explanation.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v46-gate7-local-interface-comprehension-rehearsal.mjs ]; then
node scripts/check-v46-gate7-local-interface-comprehension-rehearsal.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v46-gate8-promotion-readiness.mjs ]; then
node scripts/check-v46-gate8-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
fi
fi
elif [ "$POINTER" = "V46" ]; then
node scripts/check-bitcode-spec-family.mjs --version V46 --mode promoted --current-target V46
node scripts/check-bitcode-canonical-inputs.mjs --current-target V46
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V46 --draft-target V47
node scripts/check-v46-gate8-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ -f .specifications/BITCODE_SPEC_V47.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V47 --mode draft --current-target V46
if [ -f scripts/check-v47-gate1-scope-measurement-launch-freeze.mjs ]; then
node scripts/check-v47-gate1-scope-measurement-launch-freeze.mjs --skip-branch-check
fi
if [ -f scripts/check-v47-gate2-feature-excess-alignment-audit.mjs ]; then
node scripts/check-v47-gate2-feature-excess-alignment-audit.mjs --skip-branch-check --skip-uapi-tests
fi
if [ -f scripts/check-v47-gate3-seller-buyer-state-machine-law.mjs ]; then
node scripts/check-v47-gate3-seller-buyer-state-machine-law.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v47-gate4-depositor-website-completion.mjs ]; then
node scripts/check-v47-gate4-depositor-website-completion.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v47-gate5-reader-website-completion.mjs ]; then
node scripts/check-v47-gate5-reader-website-completion.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v47-gate6-packs-auxillaries-commercial-dashboard.mjs ]; then
node scripts/check-v47-gate6-packs-auxillaries-commercial-dashboard.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v47-gate7-e2e-ip-selling-buying-tests.mjs ]; then
node scripts/check-v47-gate7-e2e-ip-selling-buying-tests.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v47-gate8-landing-public-launch-messaging.mjs ]; then
node scripts/check-v47-gate8-landing-public-launch-messaging.mjs --skip-branch-check --skip-package-tests --skip-uapi-tests
fi
if [ -f scripts/check-v47-gate9-staging-testnet-deployment-rehearsal.mjs ]; then
node scripts/check-v47-gate9-staging-testnet-deployment-rehearsal.mjs --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v47-gate10-promotion-readiness.mjs ]; then
node scripts/check-v47-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
fi
if [ -f scripts/check-v47-gate10-promotion-readiness.mjs ]; then
node scripts/check-v47-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
fi
fi
elif [ "$POINTER" = "V47" ]; then
node scripts/check-bitcode-spec-family.mjs --version V47 --mode promoted --current-target V47
node scripts/check-bitcode-canonical-inputs.mjs --current-target V47
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V47 --draft-target V48
node scripts/check-v47-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ -f .specifications/BITCODE_SPEC_V48.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V48 --mode draft --current-target V47
fi
else
echo "Unexpected BITCODE_SPEC.txt pointer: $POINTER" >&2
exit 1
fi
bitcode-spec-commit-conformance:
name: Bitcode Spec Commit Conformance
runs-on: ubuntu-latest
needs: bitcode-spec-basics
container:
image: node:22-bookworm
env:
SPEC_TITLE: ${{ github.event_name == 'pull_request' && github.event.pull_request.title || github.event.head_commit.message }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run strict conformance for spec-title changes
run: |
case "$SPEC_TITLE" in
spec:\ V29*|spec:\ v29*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V29" ]; then
node scripts/check-bitcode-spec-family.mjs --version V29 --mode promoted --current-target V29
else
node scripts/check-bitcode-spec-family.mjs --version V29 --mode draft --current-target V28
fi
;;
spec:\ V30*|spec:\ v30*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V30" ]; then
node scripts/check-bitcode-spec-family.mjs --version V30 --mode promoted --current-target V30
else
node scripts/check-bitcode-spec-family.mjs --version V30 --mode draft --current-target V29
fi
;;
spec:\ V31*|spec:\ v31*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V31" ]; then
node scripts/check-bitcode-spec-family.mjs --version V31 --mode promoted --current-target V31
else
node scripts/check-bitcode-spec-family.mjs --version V31 --mode draft --current-target V30
fi
;;
spec:\ V32*|spec:\ v32*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V32" ]; then
node scripts/check-bitcode-spec-family.mjs --version V32 --mode promoted --current-target V32
else
node scripts/check-bitcode-spec-family.mjs --version V32 --mode draft --current-target V31
fi
;;
spec:\ V33*|spec:\ v33*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V33" ]; then
node scripts/check-bitcode-spec-family.mjs --version V33 --mode promoted --current-target V33
else
node scripts/check-bitcode-spec-family.mjs --version V33 --mode draft --current-target V32
fi
;;
spec:\ V34*|spec:\ v34*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V34" ]; then
node scripts/check-bitcode-spec-family.mjs --version V34 --mode promoted --current-target V34
else
node scripts/check-bitcode-spec-family.mjs --version V34 --mode draft --current-target V33
fi
;;
spec:\ V35*|spec:\ v35*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V35" ]; then
node scripts/check-bitcode-spec-family.mjs --version V35 --mode promoted --current-target V35
else
node scripts/check-bitcode-spec-family.mjs --version V35 --mode draft --current-target V34
fi
;;
spec:\ V36*|spec:\ v36*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V36" ]; then
node scripts/check-bitcode-spec-family.mjs --version V36 --mode promoted --current-target V36
else
node scripts/check-bitcode-spec-family.mjs --version V36 --mode draft --current-target V35
fi
;;
spec:\ V37*|spec:\ v37*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V37" ]; then
node scripts/check-bitcode-spec-family.mjs --version V37 --mode promoted --current-target V37
else
node scripts/check-bitcode-spec-family.mjs --version V37 --mode draft --current-target V36
fi
;;
spec:\ V38*|spec:\ v38*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V38" ]; then
node scripts/check-bitcode-spec-family.mjs --version V38 --mode promoted --current-target V38
else
node scripts/check-bitcode-spec-family.mjs --version V38 --mode draft --current-target V37
fi
;;
spec:\ V39*|spec:\ v39*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V39" ]; then
node scripts/check-bitcode-spec-family.mjs --version V39 --mode promoted --current-target V39
else
node scripts/check-bitcode-spec-family.mjs --version V39 --mode draft --current-target V38
fi
;;
spec:\ V40*|spec:\ v40*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V40" ]; then
node scripts/check-bitcode-spec-family.mjs --version V40 --mode promoted --current-target V40
else
node scripts/check-bitcode-spec-family.mjs --version V40 --mode draft --current-target V39
fi
;;
spec:\ V41*|spec:\ v41*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V41" ]; then
node scripts/check-bitcode-spec-family.mjs --version V41 --mode promoted --current-target V41
else
node scripts/check-bitcode-spec-family.mjs --version V41 --mode draft --current-target V40
fi
;;
spec:\ V42*|spec:\ v42*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V42" ]; then
node scripts/check-bitcode-spec-family.mjs --version V42 --mode promoted --current-target V42
else
node scripts/check-bitcode-spec-family.mjs --version V42 --mode draft --current-target V41
fi
;;
spec:\ V43*|spec:\ v43*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V43" ]; then
node scripts/check-bitcode-spec-family.mjs --version V43 --mode promoted --current-target V43
else
node scripts/check-bitcode-spec-family.mjs --version V43 --mode draft --current-target V42
fi
;;
spec:\ V44*|spec:\ v44*)
node scripts/check-bitcode-spec-family.mjs --version V44 --mode draft --current-target V43
;;
spec:\ V45*|spec:\ v45*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V45" ]; then
node scripts/check-bitcode-spec-family.mjs --version V45 --mode promoted --current-target V45
else
node scripts/check-bitcode-spec-family.mjs --version V45 --mode draft --current-target V44
fi
;;
spec:\ V46*|spec:\ v46*)
POINTER="$(cat .specifications/BITCODE_SPEC.txt)"
if [ "$POINTER" = "V46" ]; then
node scripts/check-bitcode-spec-family.mjs --version V46 --mode promoted --current-target V46
else
node scripts/check-bitcode-spec-family.mjs --version V46 --mode draft --current-target V45
fi
;;
*)
echo "Skipping strict spec-title conformance; title is not a V29/V30/V31/V32/V33/V34/V35/V36/V37/V38/V39/V40/V41/V42/V43/V44/V45/V46 spec change."
;;
esac