Skip to content

V40 Gate 5: close Reading pipeline integration coverage #732

V40 Gate 5: close Reading pipeline integration coverage

V40 Gate 5: close Reading pipeline integration coverage #732

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 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 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 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 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 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 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 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-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 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 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
fi
else
echo "Unexpected BITCODE_SPEC.txt pointer: $POINTER" >&2
exit 1
fi
bitcode-demonstration-mvp:
name: Bitcode Demonstration MVP
runs-on: ubuntu-latest
needs: bitcode-spec-basics
container:
image: node:22-bookworm
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run V28 protocol-demonstration MVP QA
run: npm --prefix protocol-demonstration run test:v28-mvp-qa
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 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 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 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 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 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 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 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 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 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 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 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*)
node scripts/check-bitcode-spec-family.mjs --version V40 --mode draft --current-target V39
;;
*)
echo "Skipping strict spec-title conformance; title is not a V29/V30/V31/V32/V33/V34/V35/V36/V37/V38/V39/V40 spec change."
;;
esac