Skip to content

V48 Gate 3 (specification-implementation): file-tree pickers for sour… #1026

V48 Gate 3 (specification-implementation): file-tree pickers for sour…

V48 Gate 3 (specification-implementation): file-tree pickers for sour… #1026

name: Bitcode Gate Quality
on:
push:
branches:
- "v*/gate-*"
- "version/**"
pull_request:
branches:
- "version/**"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
gate-quality:
name: Gate Quality
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v4
- 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 gate pull request title
if: github.event_name == 'pull_request'
env:
PR_BASE_REF: ${{ github.base_ref }}
PR_HEAD_REF: ${{ github.head_ref }}
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
if [[ "$PR_BASE_REF" == version/* && "$PR_HEAD_REF" =~ ^v([0-9]+)/gate-([0-9]+)- ]]; then
expected_version="V${BASH_REMATCH[1]}"
expected_gate="${BASH_REMATCH[2]}"
title_re="^${expected_version}[[:space:]]+Gate[[:space:]]+${expected_gate}([[:space:]]\((specification-only|implementation-only|specification-implementation)\))?:[[:space:]].+"
if [[ ! "$PR_TITLE" =~ $title_re ]]; then
echo "Gate pull request titles must begin with: ${expected_version} Gate ${expected_gate}: or ${expected_version} Gate ${expected_gate} (specification-only|implementation-only|specification-implementation):"
echo "Observed: ${PR_TITLE}"
exit 1
fi
fi
- name: Validate draft canon posture
run: |
POINTER="$(cat BITCODE_SPEC.txt)"
if [ "$POINTER" = "V28" ]; then
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
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V28 --draft-target V29
node scripts/check-bitcode-canonical-inputs.mjs --current-target V28
node scripts/check-v29-gate1-objectives-and-gating.mjs --skip-branch-check
node scripts/check-v29-gate2-terminal-transaction-read-models.mjs --skip-branch-check
node scripts/check-v29-gate3-wallet-signer-btc-operations.mjs --skip-branch-check
node scripts/check-v29-gate4-reading-pipeline-observability.mjs --skip-branch-check
node scripts/check-v29-gate5-assetpack-disclosure-rights.mjs --skip-branch-check
node scripts/check-v29-gate6-settlement-reconciliation-repair.mjs --skip-branch-check
node scripts/check-v29-gate7-organization-permission-authority.mjs --skip-branch-check
node scripts/check-v29-gate8-demonstration-origin-formalization.mjs --skip-branch-check
node scripts/check-v29-gate9-terminal-ux-browser-proof.mjs --skip-branch-check
node scripts/check-v29-gate10-local-staging-promotion-readiness.mjs --skip-branch-check
elif [ "$POINTER" = "V29" ]; then
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
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-v29-gate10-local-staging-promotion-readiness.mjs --promotion-mode --skip-branch-check
node scripts/check-v30-gate1-roadmap-and-gating.mjs --skip-branch-check
node scripts/check-v30-gate2-protocol-package-api-boundaries.mjs --skip-branch-check
node scripts/check-v30-gate3-bitcoin-taproot-psbt-fee-rigor.mjs --skip-branch-check
node scripts/check-v30-gate4-btd-assetpack-mint-read-receipts.mjs --skip-branch-check
node scripts/check-v30-gate5-testnet-ledger-projection-hardening.mjs --skip-branch-check
node scripts/check-v30-gate6-source-to-shares-proof-cleanup.mjs --skip-branch-check
node scripts/check-v30-gate7-bridge-readiness-research-boundaries.mjs --skip-branch-check
node scripts/check-v30-gate8-protocol-telemetry-proof-hooks.mjs --skip-branch-check
node scripts/check-v30-gate9-interface-integration-regression-proof.mjs --skip-branch-check
node scripts/check-v30-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
elif [ "$POINTER" = "V30" ]; then
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
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-v30-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
node scripts/check-v31-gate1-spec-roadmap-opening.mjs --skip-branch-check
node scripts/check-v31-gate2-auxillaries-package-route-contracts.mjs --skip-branch-check
node scripts/check-v31-gate3-profile-account-state.mjs --skip-branch-check
node scripts/check-v31-gate4-connects-provider-readiness.mjs --skip-branch-check
node scripts/check-v31-gate5-wallet-btd-pane-readiness.mjs --skip-branch-check
node scripts/check-v31-gate6-organization-team-role-policy-authority.mjs --skip-branch-check
node scripts/check-v31-gate7-interfaces-pane-admission-cross-surface-contracts.mjs --skip-branch-check
node scripts/check-v31-gate8-auxillaries-ux-accessibility-responsive-proof.mjs --skip-branch-check
node scripts/check-v31-gate9-auxillaries-telemetry-proof-recovery-runs.mjs --skip-branch-check
node scripts/check-v31-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
elif [ "$POINTER" = "V31" ]; then
node scripts/check-bitcode-spec-family.mjs --version V31 --mode promoted --current-target V31
node scripts/check-bitcode-spec-family.mjs --version V32 --mode draft --current-target V31
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-v31-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
node scripts/check-v32-gate1-provation-roadmap-opening.mjs --skip-branch-check
node scripts/check-v32-gate2-proof-matrix-inventory.mjs --skip-branch-check
node scripts/check-v32-gate3-deterministic-replay-artifact-stability.mjs --skip-branch-check
node scripts/check-v32-gate4-reading-pipeline-proof-coverage.mjs --skip-branch-check
node scripts/check-v32-gate5-ledger-btd-settlement-failure-states.mjs --skip-branch-check
node scripts/check-v32-gate6-interface-contract-regression-suites.mjs --skip-branch-check
node scripts/check-v32-gate7-browser-accessibility-responsive-visual-proof.mjs --skip-branch-check
node scripts/check-v32-gate8-testnet-mainnet-readiness-rehearsal.mjs --skip-branch-check
node scripts/check-v32-gate9-promotion-proof-generation-hardening.mjs --skip-branch-check
node scripts/check-v32-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
elif [ "$POINTER" = "V32" ]; then
node scripts/check-bitcode-spec-family.mjs --version V32 --mode promoted --current-target V32
node scripts/check-bitcode-canonical-inputs.mjs --current-target V32
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V32 --draft-target V33
if [ -f BITCODE_SPEC_V33.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V33 --mode draft --current-target V32
fi
node scripts/check-v32-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
node scripts/check-v33-gate1-interface-roadmap-opening.mjs --skip-branch-check
node scripts/check-v33-gate2-interface-contract-catalog.mjs --skip-branch-check
node scripts/check-v33-gate3-mcp-api-tool-contracts.mjs --skip-branch-check
node scripts/check-v33-gate4-chatgpt-app-action-contracts.mjs --skip-branch-check
node scripts/check-v33-gate5-interface-authorization-policy.mjs --skip-branch-check
node scripts/check-v33-gate6-read-license-assetpack-rights-contracts.mjs --skip-branch-check
node scripts/check-v33-gate7-api-schema-compatibility-matrix.mjs --skip-branch-check
node scripts/check-v33-gate8-interface-telemetry-proof-hooks.mjs --skip-branch-check
node scripts/check-v33-gate9-interface-consumer-ux-regression-proof.mjs --skip-branch-check
node scripts/check-v33-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
elif [ "$POINTER" = "V33" ]; then
node scripts/check-bitcode-spec-family.mjs --version V33 --mode promoted --current-target V33
node scripts/check-bitcode-canonical-inputs.mjs --current-target V33
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V33 --draft-target V34
if [ -f BITCODE_SPEC_V34.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V34 --mode draft --current-target V33
fi
node scripts/check-v33-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
node scripts/check-v34-gate1-deployment-roadmap-opening.mjs --skip-branch-check
node scripts/check-v34-gate2-host-capability-environment-lanes.mjs --skip-branch-check
node scripts/check-v34-gate3-distributed-execution-runtime-contracts.mjs --skip-branch-check
node scripts/check-v34-gate4-deployment-storage-posture.mjs --skip-branch-check
node scripts/check-v34-gate5-secret-rotation-boundary-operations.mjs --skip-branch-check
node scripts/check-v34-gate6-migration-cicd-approval-gates.mjs --skip-branch-check
node scripts/check-v34-gate7-runtime-observers-broadcasters-repair-jobs.mjs --skip-branch-check
node scripts/check-v34-gate8-rollback-upgrade-data-repair-playbooks.mjs --skip-branch-check
node scripts/check-v34-gate9-local-staging-testnet-deployment-rehearsal.mjs --skip-branch-check
node scripts/check-v34-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
elif [ "$POINTER" = "V34" ]; then
node scripts/check-bitcode-spec-family.mjs --version V34 --mode promoted --current-target V34
node scripts/check-bitcode-canonical-inputs.mjs --current-target V34
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V34 --draft-target V35
if [ -f BITCODE_SPEC_V35.md ]; then
node scripts/check-bitcode-spec-family.mjs --version V35 --mode draft --current-target V34
node scripts/check-v35-gate1-telemetry-docs-roadmap-opening.mjs --skip-branch-check
if [ -f scripts/check-v35-gate2-documentation-surface-catalog.mjs ]; then
node scripts/check-v35-gate2-documentation-surface-catalog.mjs --skip-branch-check
fi
if [ -f scripts/check-v35-gate3-telemetry-taxonomy-event-schema-redaction.mjs ]; then
node scripts/check-v35-gate3-telemetry-taxonomy-event-schema-redaction.mjs --skip-branch-check
fi
if [ -f scripts/check-v35-gate4-public-docs-usage-guides.mjs ]; then
node scripts/check-v35-gate4-public-docs-usage-guides.mjs --skip-branch-check
fi
if [ -f scripts/check-v35-gate5-dashboards-alerts-runbooks-incident-escalation.mjs ]; then
node scripts/check-v35-gate5-dashboards-alerts-runbooks-incident-escalation.mjs --skip-branch-check
fi
if [ -f scripts/check-v35-gate6-documentation-qa-alignment-proofs.mjs ]; then
node scripts/check-v35-gate6-documentation-qa-alignment-proofs.mjs --skip-branch-check
fi
if [ -f scripts/check-v35-gate7-developer-operator-testnet-rollout-guides.mjs ]; then
node scripts/check-v35-gate7-developer-operator-testnet-rollout-guides.mjs --skip-branch-check
fi
if [ -f scripts/check-v35-gate8-telemetry-documentation-interface-integration.mjs ]; then
node scripts/check-v35-gate8-telemetry-documentation-interface-integration.mjs --skip-branch-check
fi
if [ -f scripts/check-v35-gate9-local-staging-telemetry-documentation-rehearsal.mjs ]; then
node scripts/check-v35-gate9-local-staging-telemetry-documentation-rehearsal.mjs --skip-branch-check
fi
if [ -f scripts/check-v35-gate10-promotion-readiness.mjs ]; then
node scripts/check-v35-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
fi
fi
node scripts/check-v34-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
elif [ "$POINTER" = "V35" ]; then
node scripts/check-bitcode-spec-family.mjs --version V35 --mode promoted --current-target V35
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-v35-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
if [ -f 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-spec-family.mjs --version V36 --mode promoted --current-target V36
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-v36-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
if [ -f 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-terminal-handoff.mjs ]; then
node scripts/check-v37-gate6-conversation-terminal-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-spec-family.mjs --version V37 --mode promoted --current-target V37
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-v37-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
if [ -f 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-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
if [ -f 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 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-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
if [ -f 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 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 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 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 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 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 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 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 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
- name: Validate source casing and imports
run: |
bash scripts/find-uppercase-raw-promptparts.sh
bash scripts/check-import-casing.sh
- name: Type-check gate packages
run: |
pnpm --filter @bitcode/btd typecheck
pnpm --filter @bitcode/api build
pnpm --dir packages/executions-mcp/src/mcp-server run type-check
pnpm --dir packages/chatgptapp exec tsc --noEmit --pretty false
pnpm --filter @bitcode/pipeline-asset-pack typecheck
pnpm --filter @bitcode/pipeline-hosts typecheck
pnpm --filter @bitcode/protocol typecheck
- name: Test gate packages
run: |
POINTER="$(cat BITCODE_SPEC.txt)"
if [ "$POINTER" = "V41" ] || [ "$POINTER" = "V42" ] || [ "$POINTER" = "V43" ] || [ "$POINTER" = "V44" ] || [ "$POINTER" = "V45" ]; then
if [ "$POINTER" = "V41" ]; then
node scripts/check-v42-gate9-promotion-readiness.mjs --skip-branch-check
elif [ "$POINTER" = "V42" ]; then
node scripts/check-v42-gate9-promotion-readiness.mjs --promotion-mode --skip-branch-check
elif [ "$POINTER" = "V43" ]; then
node scripts/check-v43-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
elif [ "$POINTER" = "V44" ]; then
node scripts/check-v44-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
else
node scripts/check-v45-gate18-promotion-readiness.mjs --promotion-mode --skip-branch-check --skip-package-tests
if [ ! -f 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 BITCODE_SPEC_V46.md ] && [ -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 BITCODE_SPEC_V46.md ] && [ -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 BITCODE_SPEC_V46.md ] && [ -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 BITCODE_SPEC_V46.md ] && [ -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 BITCODE_SPEC_V46.md ] && [ -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 BITCODE_SPEC_V46.md ] && [ -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 BITCODE_SPEC_V46.md ] && [ -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 BITCODE_SPEC_V46.md ] && [ -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
if [ "$POINTER" = "V43" ] && [ -f scripts/check-v44-gate1-scaled-economy-roadmap-opening.mjs ]; then
node scripts/check-v44-gate1-scaled-economy-roadmap-opening.mjs --skip-branch-check
fi
if [ "$POINTER" = "V43" ] && [ -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 [ "$POINTER" = "V43" ] && [ -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 [ "$POINTER" = "V43" ] && [ -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 [ "$POINTER" = "V43" ] && [ -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 [ "$POINTER" = "V43" ] && [ -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 [ "$POINTER" = "V43" ] && [ -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 [ "$POINTER" = "V43" ] && [ -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 [ "$POINTER" = "V43" ] && [ -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 [ "$POINTER" = "V43" ] && [ -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
if [ "$POINTER" = "V44" ] && [ -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 [ "$POINTER" = "V44" ] && [ -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 [ "$POINTER" = "V44" ] && [ -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
if [ "$POINTER" = "V42" ]; then
if [ -f scripts/check-v43-gate1-packs-read-deposit-roadmap.mjs ]; then
node scripts/check-v43-gate1-packs-read-deposit-roadmap.mjs --skip-branch-check
fi
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
pnpm --filter @bitcode/protocol test
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runInBand --forceExit
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
exit 0
fi
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/btc-fee-operation.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/btd.test.ts --runInBand --forceExit
if [ -f packages/btd/__tests__/asset-pack-economic-traceability.test.ts ]; then
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/asset-pack-economic-traceability.test.ts --runInBand --forceExit
fi
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/v32-ledger-btd-settlement-failure-states.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/source-to-shares.test.ts __tests__/reconciliation.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/v32-interface-contract-regression.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/interface-contract-catalog.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/mcp-tool-contract.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/chatgpt-app-action-contract.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/interface-authorization-policy.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/read-license-assetpack-rights-contract.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/api-schema-compatibility-matrix.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/interface-telemetry-proof-hook.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/interface-consumer-ux-regression-proof.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/deployment-host-capability-catalog.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/deployment-storage-posture.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/secret-rotation-plan.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/migration-approval-gate.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/runtime-observer-repair-job.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/rollback-upgrade-repair-playbook.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/deployment-readiness-rehearsal.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/deployment-promotion-readiness-report.test.ts --runInBand --forceExit
pnpm --filter @bitcode/btd exec jest --config jest.config.cjs --runTestsByPath __tests__/v32-testnet-mainnet-readiness-rehearsal.test.ts --runInBand --forceExit
pnpm --dir packages/protocol exec node --test --test-force-exit test/v32-promotion-proof-generation.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-documentation-surface-catalog.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-telemetry-taxonomy-catalog.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-public-docs-usage-guide-catalog.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-operator-runbook-catalog.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-docs-qa-alignment-report.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-testnet-rollout-readiness-guide.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-telemetry-documentation-interface-integration.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-local-staging-telemetry-documentation-rehearsal.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-promotion-readiness.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v36-exchange-activity-book.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v36-exchange-intent-order-contracts.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v36-exchange-rights-transfer-review.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v36-exchange-pricing-quote.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v36-exchange-settlement-reconciliation.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v36-exchange-dispute-repair-revenue-route.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v36-exchange-ux-proof.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v36-exchange-rehearsal.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v36-promotion-readiness.test.js
pnpm --filter @bitcode/api exec jest --config jest.config.cjs --runTestsByPath src/routes/__tests__/btd-crypto.test.ts --runInBand --forceExit
pnpm --filter @bitcode/api exec jest --config jest.config.cjs --runTestsByPath src/routes/__tests__/auxillaries-contract.test.ts --runInBand --forceExit
pnpm --dir packages/executions-mcp/src/mcp-server run test:mcp -- --runTestsByPath src/__tests__/unit/auth.test.ts --runInBand --forceExit
pnpm --dir packages/executions-mcp/src/mcp-server run test:mcp -- --runTestsByPath src/__tests__/unit/mcp-tool-contract.test.ts src/__tests__/unit/pipeline-ingress-contract.test.ts --runInBand --forceExit
pnpm --dir packages/chatgptapp exec jest --runTestsByPath src/__tests__/chatgpt-action-contract.test.ts src/__tests__/tools.test.ts --runInBand --forceExit
pnpm --filter @bitcode/pipeline-hosts exec jest --config jest.config.cjs --runTestsByPath src/__tests__/asset-pack-harness.test.ts --runInBand --forceExit
pnpm --filter @bitcode/pipeline-hosts exec jest --config jest.config.cjs --runTestsByPath src/__tests__/distributed-execution-runtime-receipt.test.ts --runInBand --forceExit
pnpm --filter @bitcode/pipeline-asset-pack exec jest --config jest.config.cjs --runTestsByPath src/__tests__/reading-pipeline-integration-coverage.test.ts src/__tests__/reading-pipeline-observability.test.ts src/__tests__/reading-pipeline-contract.test.ts src/__tests__/v32-reading-pipeline-proof-coverage.test.ts --runInBand --forceExit
pnpm --filter @bitcode/pipeline-asset-pack exec jest --config jest.config.cjs --runTestsByPath src/__tests__/asset-pack-disclosure.test.ts src/__tests__/postprocess.test.ts src/__tests__/read-need.test.ts src/__tests__/read-need-review-resynthesis.test.ts --runInBand --forceExit
pnpm --filter @bitcode/pipeline-asset-pack exec jest --config jest.config.cjs --runTestsByPath src/__tests__/asset-pack-preview-boundary.test.ts --runInBand --forceExit
pnpm --filter @bitcode/pipeline-asset-pack exec jest --config jest.config.cjs --runTestsByPath src/__tests__/asset-pack-settlement-rights-delivery.test.ts --runInBand --forceExit
pnpm --filter @bitcode/pipeline-asset-pack exec jest --config jest.config.cjs --runTestsByPath src/__tests__/reading-operational-telemetry-repair-readback.test.ts --runInBand --forceExit
pnpm --filter @bitcode/pipeline-asset-pack exec jest --config jest.config.cjs --runTestsByPath src/__tests__/reading-interface-product-parity.test.ts --runInBand --forceExit
pnpm --filter @bitcode/api exec jest --config jest.config.cjs --runTestsByPath src/conversations/__tests__/stream-events.test.ts src/conversations/__tests__/privacy.test.ts src/conversations/__tests__/telemetry.test.ts --runInBand --forceExit
pnpm --dir packages/protocol exec node --test --test-force-exit test/conversation-telemetry-proof-hooks.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/conversation-rehearsal.test.js
pnpm --dir packages/protocol exec node --test --test-force-exit test/v37-promotion-readiness.test.js
if [ -f packages/protocol/test/v38-inference-surface-inventory.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-inference-surface-inventory.test.js
fi
if [ -f packages/protocol/test/v38-ptrr-failsafe-thricified-stack.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-ptrr-failsafe-thricified-stack.test.js
fi
if [ -f packages/protocol/test/v38-prompt-benchmark-report.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-prompt-benchmark-report.test.js
fi
if [ -f packages/protocol/test/v38-inference-telemetry-disclosure-report.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-inference-telemetry-disclosure-report.test.js
fi
if [ -f packages/protocol/test/v38-read-need-comprehension-inference-hardening.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-read-need-comprehension-inference-hardening.test.js
fi
if [ -f packages/protocol/test/v38-read-fits-finding-search-embeddings.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-read-fits-finding-search-embeddings.test.js
fi
if [ -f packages/protocol/test/v38-assetpack-synthesis-economic-traceability.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-assetpack-synthesis-economic-traceability.test.js
fi
if [ -f packages/protocol/test/v38-conversation-tool-prompt-inference-parity.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-conversation-tool-prompt-inference-parity.test.js
fi
if [ -f packages/protocol/test/v38-local-staging-inference-depository-search-rehearsal.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-local-staging-inference-depository-search-rehearsal.test.js
fi
if [ -f packages/protocol/test/v38-promotion-readiness.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v38-promotion-readiness.test.js
fi
if [ -f packages/protocol/test/v39-interface-conversation-product-parity.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v39-interface-conversation-product-parity.test.js
fi
if [ -f packages/protocol/test/v39-local-staging-reading-rehearsal.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v39-local-staging-reading-rehearsal.test.js
fi
if [ -f packages/protocol/test/v39-promotion-readiness.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v39-promotion-readiness.test.js
fi
if [ -f packages/protocol/test/v40-conversation-terminal-integration.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v40-conversation-terminal-integration.test.js
fi
if [ -f packages/protocol/test/v40-ledger-storage-sync.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v40-ledger-storage-sync.test.js
fi
if [ -f packages/protocol/test/v40-local-staging-rehearsal-automation.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v40-local-staging-rehearsal-automation.test.js
fi
if [ -f packages/protocol/test/v40-prompt-benchmark-smoke-v41-readiness.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v40-prompt-benchmark-smoke-v41-readiness.test.js
fi
if [ -f packages/protocol/test/v40-promotion-readiness.test.js ]; then
pnpm --dir packages/protocol exec node --test --test-force-exit test/v40-promotion-readiness.test.js
fi
pnpm --filter @bitcode/protocol test
- name: Test staged Reading route and Terminal harness contracts
run: |
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/api/conversationSessionRouteHistory.test.ts \
tests/api/conversationSessionRouteHistoryContract.test.ts \
tests/api/conversationStreamEventContract.test.ts \
tests/conversationStreamPipelineLog.test.tsx \
tests/conversationTerminalIntegrationCoverage.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/api/conversationReadingInterfaceParity.test.ts \
tests/conversationRehearsalPanel.test.tsx \
tests/conversationSourceSelector.test.tsx \
tests/conversationWritingWorkspace.test.tsx \
tests/auxillariesExternalsPane.test.tsx \
tests/profileStep.test.tsx \
tests/api/readReviewRoute.test.ts \
tests/api/readReviewProtocolParity.test.ts \
tests/api/pipelineHarnessRoute.test.ts \
tests/terminalPipelineHarnessClient.test.ts \
tests/terminalEnterpriseReadingUxState.test.ts \
tests/terminalDepositReadWorkbench.test.ts \
tests/terminalTransactionQuery.test.ts \
tests/terminalTransactionReadModel.test.ts \
tests/exchangePageClient.test.tsx \
tests/exchangeTerminalHandoff.test.ts \
tests/terminalProtocolProjection.test.ts \
tests/terminalInterfaceIntegrationRegression.test.ts \
tests/terminalWalletBtcOperation.test.ts \
tests/terminalJournalReconciliation.test.ts \
tests/bitcodeLedgerStorageSync.test.ts \
tests/terminalOrganizationAuthority.test.ts \
tests/protocolCommercialBoundary.test.ts \
tests/terminalTransactionDetailCards.test.tsx \
tests/terminalTransactionDetailSnapshot.test.ts \
tests/terminalUxBrowserProof.test.tsx \
tests/bitcodeBrowserProof.test.ts \
tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts \
tests/readingOperationalTelemetryPipelineLog.test.tsx \
tests/pipelineExecutionLogHeader.test.tsx \
--runInBand
- name: Install Terminal browser proof browser
if: vars.BITCODE_ENABLE_GATE_BROWSER_PROOF == '1'
run: pnpm --dir uapi exec playwright install chromium --with-deps
- name: Browser proof Terminal cockpit
if: vars.BITCODE_ENABLE_GATE_BROWSER_PROOF == '1'
run: pnpm --dir uapi run test:e2e:terminal-ux
- name: Browser proof Terminal and Auxillaries responsive accessibility
if: vars.BITCODE_ENABLE_GATE_BROWSER_PROOF == '1'
run: pnpm --dir uapi run test:e2e:v32-browser-proof
- name: Browser proof product surfaces
if: vars.BITCODE_ENABLE_GATE_BROWSER_PROOF == '1'
run: pnpm --dir uapi run test:e2e:browser-proof
- name: Test pipeline readback verifier
run: pnpm test:qa:v28:pipeline-readback
- name: Test protocol demonstration
run: npm --prefix protocol-demonstration run test:v28-mvp-qa
- name: Check diff hygiene
run: git diff --check