Skip to content

Commit 44a4d22

Browse files
V35 Gate 10: Close promotion readiness
Adds the source-safe DocumentationTelemetryPromotionReadinessReport artifact, generator, checker, package exports, and focused protocol coverage for V35 Gate 10. Wires V35 canon promotion through promotion command planning, spec/runtime posture preparation, generated PROVEN support, gate/canon quality workflows, and the version promotion workflow. Validation: check:v35-gate1..10; V35 spec-family/canonical-input/canon-posture checks; V35 promotion dry-run; protocol typecheck/test; BTD typecheck/test; pipeline typechecks; UAPI TypeScript; git diff --check.
1 parent bc40a2f commit 44a4d22

20 files changed

Lines changed: 1890 additions & 13 deletions

.bitcode/v35-documentation-telemetry-promotion-readiness-report.json

Lines changed: 517 additions & 0 deletions
Large diffs are not rendered by default.

.github/workflows/bitcode-canon-quality.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ jobs:
6666
if [ -f BITCODE_SPEC_V35.md ]; then
6767
node scripts/check-bitcode-spec-family.mjs --version V35 --mode draft --current-target V34
6868
fi
69+
elif [ "$POINTER" = "V35" ]; then
70+
node scripts/check-bitcode-canonical-inputs.mjs --current-target V35
71+
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V35 --draft-target V36
72+
node scripts/check-bitcode-spec-family.mjs --version V35 --mode promoted --current-target V35
73+
if [ -f BITCODE_SPEC_V36.md ]; then
74+
node scripts/check-bitcode-spec-family.mjs --version V36 --mode draft --current-target V35
75+
fi
6976
else
7077
echo "Unexpected BITCODE_SPEC.txt pointer: $POINTER" >&2
7178
exit 1

.github/workflows/bitcode-gate-quality.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,19 @@ jobs:
188188
if [ -f scripts/check-v35-gate9-local-staging-telemetry-documentation-rehearsal.mjs ]; then
189189
node scripts/check-v35-gate9-local-staging-telemetry-documentation-rehearsal.mjs --skip-branch-check
190190
fi
191+
if [ -f scripts/check-v35-gate10-promotion-readiness.mjs ]; then
192+
node scripts/check-v35-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
193+
fi
191194
fi
192195
node scripts/check-v34-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
196+
elif [ "$POINTER" = "V35" ]; then
197+
node scripts/check-bitcode-spec-family.mjs --version V35 --mode promoted --current-target V35
198+
node scripts/check-bitcode-canonical-inputs.mjs --current-target V35
199+
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V35 --draft-target V36
200+
node scripts/check-v35-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
201+
if [ -f BITCODE_SPEC_V36.md ]; then
202+
node scripts/check-bitcode-spec-family.mjs --version V36 --mode draft --current-target V35
203+
fi
193204
else
194205
echo "Unexpected BITCODE_SPEC.txt pointer: $POINTER" >&2
195206
exit 1
@@ -243,6 +254,7 @@ jobs:
243254
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-testnet-rollout-readiness-guide.test.js
244255
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-telemetry-documentation-interface-integration.test.js
245256
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-local-staging-telemetry-documentation-rehearsal.test.js
257+
pnpm --dir packages/protocol exec node --test --test-force-exit test/v35-promotion-readiness.test.js
246258
pnpm --filter @bitcode/api exec jest --config jest.config.cjs --runTestsByPath src/routes/__tests__/btd-crypto.test.ts --runInBand
247259
pnpm --filter @bitcode/api exec jest --config jest.config.cjs --runTestsByPath src/routes/__tests__/auxillaries-contract.test.ts --runInBand
248260
pnpm --dir packages/executions-mcp/src/mcp-server run test:mcp -- --runTestsByPath src/__tests__/unit/auth.test.ts --runInBand
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
name: V35 Canon Promotion
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- main
7+
types:
8+
- opened
9+
- synchronize
10+
- reopened
11+
- ready_for_review
12+
workflow_dispatch:
13+
14+
concurrency:
15+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
16+
cancel-in-progress: true
17+
18+
permissions:
19+
contents: write
20+
pull-requests: read
21+
22+
jobs:
23+
promote-v35:
24+
name: V35 Promotion Validation
25+
if: >-
26+
${{
27+
github.event_name == 'workflow_dispatch' ||
28+
(
29+
github.event.pull_request.base.ref == 'main' &&
30+
github.event.pull_request.head.ref == 'version/v35' &&
31+
github.event.pull_request.head.repo.full_name == github.repository
32+
)
33+
}}
34+
runs-on: ubuntu-latest
35+
36+
steps:
37+
- name: Checkout version branch
38+
uses: actions/checkout@v4
39+
with:
40+
ref: ${{ github.event.pull_request.head.ref || github.ref_name }}
41+
token: ${{ github.token }}
42+
fetch-depth: 0
43+
44+
- name: Setup pnpm
45+
uses: pnpm/action-setup@v4
46+
47+
- name: Setup Node
48+
uses: actions/setup-node@v4
49+
with:
50+
node-version: "24"
51+
cache: pnpm
52+
53+
- name: Install dependencies
54+
run: pnpm install --frozen-lockfile
55+
56+
- name: Validate V35 promotion readiness
57+
run: |
58+
POINTER="$(cat BITCODE_SPEC.txt)"
59+
if [ "$POINTER" = "V34" ]; then
60+
node scripts/check-bitcode-spec-family.mjs --version V35 --mode draft --current-target V34
61+
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V34 --draft-target V35
62+
node scripts/check-bitcode-canonical-inputs.mjs --current-target V34
63+
node scripts/check-v35-gate1-telemetry-docs-roadmap-opening.mjs --skip-branch-check
64+
node scripts/check-v35-gate2-documentation-surface-catalog.mjs --skip-branch-check
65+
node scripts/check-v35-gate3-telemetry-taxonomy-event-schema-redaction.mjs --skip-branch-check
66+
node scripts/check-v35-gate4-public-docs-usage-guides.mjs --skip-branch-check
67+
node scripts/check-v35-gate5-dashboards-alerts-runbooks-incident-escalation.mjs --skip-branch-check
68+
node scripts/check-v35-gate6-documentation-qa-alignment-proofs.mjs --skip-branch-check
69+
node scripts/check-v35-gate7-developer-operator-testnet-rollout-guides.mjs --skip-branch-check
70+
node scripts/check-v35-gate8-telemetry-documentation-interface-integration.mjs --skip-branch-check
71+
node scripts/check-v35-gate9-local-staging-telemetry-documentation-rehearsal.mjs --skip-branch-check
72+
node scripts/check-v35-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
73+
node scripts/promote-bitcode-canon.mjs --version V35 --commit HEAD --dry-run
74+
elif [ "$POINTER" = "V35" ]; then
75+
node scripts/check-bitcode-spec-family.mjs --version V35 --mode promoted --current-target V35
76+
node scripts/check-bitcode-canonical-inputs.mjs --current-target V35
77+
node scripts/check-bitcode-canon-posture-drift.mjs --active-canon V35 --draft-target V36
78+
node scripts/check-v35-gate10-promotion-readiness.mjs --promotion-mode --skip-branch-check
79+
else
80+
echo "Unexpected BITCODE_SPEC.txt pointer: $POINTER" >&2
81+
exit 1
82+
fi
83+
pnpm test:qa:v28:pipeline-readback
84+
pnpm --filter @bitcode/protocol typecheck
85+
pnpm --filter @bitcode/protocol test
86+
pnpm --filter @bitcode/btd typecheck
87+
pnpm --filter @bitcode/btd test
88+
npm --prefix protocol-demonstration test
89+
npm --prefix protocol-demonstration run test:v28-mvp-qa
90+
pnpm --filter @bitcode/pipeline-asset-pack typecheck
91+
pnpm --filter @bitcode/pipeline-hosts typecheck
92+
pnpm --filter @bitcode/pipeline-asset-pack exec jest --config jest.config.cjs --passWithNoTests --forceExit
93+
pnpm --filter @bitcode/pipeline-hosts exec jest --config jest.config.cjs --passWithNoTests --forceExit
94+
pnpm --dir uapi exec jest --runTestsByPath \
95+
tests/userDataRoute.test.ts \
96+
tests/auxillariesWalletPane.test.tsx \
97+
tests/auxillariesContent.access.test.tsx \
98+
tests/auxillariesWorkspacePanels.access.test.tsx \
99+
tests/auxillariesWorkspacePanels.test.tsx \
100+
tests/api/auxillariesGithubConnectionRoute.test.ts \
101+
tests/api/vcsRoutes.test.ts \
102+
tests/auxillariesExternalsPane.test.tsx \
103+
tests/profileStep.test.tsx \
104+
tests/api/readReviewRoute.test.ts \
105+
tests/api/pipelineHarnessRoute.test.ts \
106+
tests/terminalPipelineHarnessClient.test.ts \
107+
tests/terminalDepositReadWorkbench.test.ts \
108+
tests/terminalTransactionQuery.test.ts \
109+
tests/terminalTransactionReadModel.test.ts \
110+
tests/terminalProtocolProjection.test.ts \
111+
tests/terminalInterfaceIntegrationRegression.test.ts \
112+
tests/terminalWalletBtcOperation.test.ts \
113+
tests/terminalJournalReconciliation.test.ts \
114+
tests/terminalOrganizationAuthority.test.ts \
115+
tests/protocolCommercialBoundary.test.ts \
116+
tests/terminalTransactionDetailCards.test.tsx \
117+
tests/terminalTransactionDetailSnapshot.test.ts \
118+
tests/terminalUxBrowserProof.test.tsx \
119+
tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts \
120+
tests/pipelineExecutionLogHeader.test.tsx \
121+
--runInBand
122+
pnpm --dir uapi exec playwright install chromium --with-deps
123+
pnpm --dir uapi run test:e2e:terminal-ux
124+
pnpm --dir uapi run test:e2e:v32-browser-proof
125+
git diff --check
126+
127+
- name: Promote V35 canon files
128+
if: >-
129+
${{
130+
github.event_name == 'pull_request' &&
131+
github.event.pull_request.head.ref == 'version/v35'
132+
}}
133+
env:
134+
HEAD_BRANCH: ${{ github.event.pull_request.head.ref }}
135+
run: |
136+
if [ "$(cat BITCODE_SPEC.txt)" = "V35" ]; then
137+
echo "BITCODE_SPEC.txt already points to V35."
138+
exit 0
139+
fi
140+
PROOF_SOURCE_COMMIT="$(git rev-parse HEAD)"
141+
npm run promote:canon -- --version V35 --commit "$PROOF_SOURCE_COMMIT"
142+
git config user.name "github-actions[bot]"
143+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
144+
git add \
145+
BITCODE_SPEC.txt \
146+
BITCODE_SPEC_V35.md \
147+
BITCODE_SPEC_V35_DELTA.md \
148+
BITCODE_SPEC_V35_NOTES.md \
149+
BITCODE_SPEC_V35_PARITY_MATRIX.md \
150+
BITCODE_SPEC_V35_PROVEN.md \
151+
protocol-demonstration/src/canon-posture.js \
152+
protocol-demonstration/README.md \
153+
packages/protocol/src/canon-posture.js \
154+
packages/protocol/data/state.json \
155+
packages/protocol/README.md \
156+
.bitcode
157+
git commit -m "Promote Bitcode canon to V35"
158+
git push origin "HEAD:$HEAD_BRANCH"

BITCODE_SPEC_V35.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,7 @@ V35 Gate 10 closes when `version/v35` can promote to active V35 without direct `
663663
The readiness report `.bitcode/v35-documentation-telemetry-promotion-readiness-report.json` proves that all V35 telemetry/documentation artifacts are present, source-safe, parseable, wired into gate checks, wired into promotion checks, generated proof appendix support, and workflow validation.
664664
Promotion rewrites runtime posture from `V34` active / `V35` draft to `V35` active / `V36` draft and generates `BITCODE_SPEC_V35_PROVEN.md`.
665665
The exact post-promotion readiness posture token is active V35 / draft V36.
666+
The promotion script validation token is V35 active / draft V36.
666667

667668
## V35 validation canon
668669

BITCODE_SPEC_V35_NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ Read the system as:
5858
- `TestnetRolloutReadinessGuide` carries contributor, local development, operator, enterprise reader, depositor, interface consumer, lane posture, wallet/settlement caveat, known blocker, and rehearsal evidence paths for local, staging-testnet, public testnet, mainnet-ready dry run, and blocked value-bearing mainnet use.
5959
- `TelemetryDocumentationInterfaceIntegration` binds Terminal, Auxillaries, API, MCP API, ChatGPT App, package READMEs, internal docs, and public docs to event ids, proof roots, docs links, runbook links, redaction posture, correlation ids, and source-safe interface payload boundaries.
6060
- `LocalStagingTelemetryDocumentationRehearsal` binds local and staging-testnet documentation discovery, telemetry event emission, dashboard/runbook lookup, docs QA, incident drill, source-safe proof-root review, redacted screenshot/log roots, and blocked value-bearing mainnet posture.
61+
- Gate 10: V35 Promotion Readiness closes `DocumentationTelemetryPromotionReadinessReport` with `.bitcode/v35-documentation-telemetry-promotion-readiness-report.json`, active V35 / draft V36 runtime posture preparation, generated proof appendix support, promotion workflow wiring, package test coverage, source-safe artifact coverage, and `check:v35-gate10`.
6162
- V35 public docs can expose measurements, proof posture, fee/right boundaries, setup steps, and known blockers; they cannot expose secrets, wallet private material, protected source, raw prompts containing protected data, or unpaid AssetPack source.
6263
- Gate 2 closes `DocumentationSurfaceCatalog` with `.bitcode/v35-documentation-surface-catalog.json`, `source-safe-documentation-surface-metadata`, package export `buildDocumentationSurfaceCatalog`, package test coverage, and `check:v35-gate2`.
6364
- Gate 3 closes `TelemetryTaxonomyCatalog` with `.bitcode/v35-telemetry-taxonomy-catalog.json`, `source-safe-telemetry-taxonomy-metadata`, package export `buildTelemetryTaxonomyCatalog`, package test coverage, redaction posture for every event family, ThricifiedGeneration inference telemetry boundaries, and `check:v35-gate3`.

BITCODE_SPEC_V35_PARITY_MATRIX.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,9 @@ No `_legacy/` source is active source truth.
187187

188188
| Requirement | Source evidence | Current V35 judgment |
189189
| --- | --- | --- |
190-
| Promotion readiness report planned | `DocumentationTelemetryPromotionReadinessReport` in V35 SPEC | drafted |
191-
| All telemetry/documentation artifacts covered | V35 Gate 10 acceptance criteria | drafted |
192-
| Runtime posture advances to V35 active / draft V36 | V35 SPEC, DELTA, and README promotion posture | drafted |
190+
| Promotion readiness report generated | `DocumentationTelemetryPromotionReadinessReport` source, `.bitcode/v35-documentation-telemetry-promotion-readiness-report.json`, package export, and package test coverage | closed |
191+
| All telemetry/documentation artifacts covered | Gate 10 readiness report covers V35 gate artifacts, generated proof outputs, workflows, source safety, and `pnpm run check:v35-gate10` | closed |
192+
| Runtime posture advances to V35 active / draft V36 | `scripts/promote-bitcode-canon.mjs`, `scripts/prepare-bitcode-spec-family-promotion.mjs`, `scripts/prepare-bitcode-runtime-canon-promotion.mjs`, and `.github/workflows/v35-canon-promotion.yml` | closed |
193193

194194
## V35 accepted boundaries
195195

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,10 @@ run the version promotion workflow. For V35, promotion work must validate the
109109
telemetry/documentation posture, generate `BITCODE_SPEC_V35_PROVEN.md`, and
110110
commit promotion artifacts plus the `BITCODE_SPEC.txt` pointer change from
111111
`V34` to `V35` on the version branch.
112-
Gate 10 is the promotion-readiness gate. V35 Gate 10 will be wired through
112+
Gate 10 is the promotion-readiness gate. V35 Gate 10 is wired through
113113
`pnpm run check:v35-gate10`, backed by source-safe telemetry/documentation
114-
artifacts, a promotion readiness report, and a V35 canon-promotion workflow.
114+
artifacts, a promotion readiness report, and
115+
[v35-canon-promotion.yml](.github/workflows/v35-canon-promotion.yml).
115116
The promoted V34 closure remains reproducible through `pnpm run check:v34-gate10`
116117
and [v34-canon-promotion.yml](.github/workflows/v34-canon-promotion.yml).
117118
The application CI workflow uses the root pnpm workspace install, runs uapi

SPECIFICATIONS_ROADMAP.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
- V35 Gate 7 closure anchor: telemetry/documentation depth now owns package-backed `TestnetRolloutReadinessGuide` source, deterministic `.bitcode/v35-testnet-rollout-readiness-guide.json`, `source-safe-rollout-guide-metadata`, contributor onboarding, local development, operator use, enterprise reader flow, depositor flow, interface consumer flow, environment lane posture, wallet/settlement caveats, known blockers, rehearsal evidence, local/staging-testnet/public-testnet/mainnet-ready dry-run/value-bearing-mainnet lane distinctions, visible blocked value-bearing mainnet posture, package tests, workflow wiring, and `check:v35-gate7`.
2727
- V35 Gate 8 closure anchor: telemetry/documentation depth now owns package-backed `TelemetryDocumentationInterfaceIntegration` source, deterministic `.bitcode/v35-telemetry-documentation-interface-integration.json`, `source-safe-interface-integration-metadata`, Terminal, Auxillaries, API, MCP API, ChatGPT App, package README, internal docs, and public docs integration rows, event ids, proof roots, docs links, runbook links, redaction posture, source-safe allowed payload fields, forbidden-data boundaries, package tests, workflow wiring, and `check:v35-gate8`.
2828
- V35 Gate 9 closure anchor: telemetry/documentation depth now owns package-backed `LocalStagingTelemetryDocumentationRehearsal` source, deterministic `.bitcode/v35-local-staging-telemetry-documentation-rehearsal.json`, `source-safe-rehearsal-metadata`, local and staging-testnet rehearsal rows, documentation discovery, telemetry event emission, dashboard/runbook lookup, docs QA, incident drills, source-safe proof-root review, redacted screenshot/log roots, visible blocked value-bearing mainnet posture, package tests, workflow wiring, and `check:v35-gate9`.
29+
- V35 Gate 10 closure anchor: telemetry/documentation depth now owns package-backed `DocumentationTelemetryPromotionReadinessReport` source, deterministic `.bitcode/v35-documentation-telemetry-promotion-readiness-report.json`, source-safe coverage for all V35 telemetry/documentation artifacts, `BITCODE_SPEC_V35_PROVEN.md` generation support, promotion command dry-run support, `v35-canon-promotion.yml`, active V35 / draft V36 posture preparation, package tests, workflow wiring, and `check:v35-gate10`.
2930
- Purpose: concise running index of Bitcode/ENGI specification history, current work, and planned work.
3031

3132
This roadmap is not an active system specification.

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@
181181
"generate:v35-local-staging-telemetry-documentation-rehearsal": "node scripts/generate-v35-local-staging-telemetry-documentation-rehearsal.mjs",
182182
"check:v35-local-staging-telemetry-documentation-rehearsal": "node scripts/generate-v35-local-staging-telemetry-documentation-rehearsal.mjs --check",
183183
"check:v35-gate9": "node scripts/check-v35-gate9-local-staging-telemetry-documentation-rehearsal.mjs",
184+
"generate:v35-documentation-telemetry-promotion-readiness": "node scripts/generate-v35-documentation-telemetry-promotion-readiness-report.mjs",
185+
"check:v35-documentation-telemetry-promotion-readiness": "node scripts/generate-v35-documentation-telemetry-promotion-readiness-report.mjs --check",
186+
"check:v35-gate10": "node scripts/check-v35-gate10-promotion-readiness.mjs",
184187
"check:spec-quality": "node scripts/run-bitcode-spec-quality.mjs --mode basic",
185188
"check:spec-quality:title": "node scripts/run-bitcode-spec-quality.mjs --mode strict-from-title",
186189
"check:spec-quality:v24": "node scripts/run-bitcode-spec-quality.mjs --mode strict-version --version V24",

0 commit comments

Comments
 (0)