Skip to content

Commit 008b66d

Browse files
V33 Promotion: Keep credential identifiers out of proof-root hashing
Route MCP interface authorization roots through the authenticated principal instead of API key record ids, document the boundary in V33 promotion notes, and regenerate the V33 promotion readiness report.\n\nValidation:\n- pnpm --dir packages/executions-mcp/src/mcp-server run type-check\n- pnpm --dir packages/executions-mcp/src/mcp-server run test:mcp -- --runTestsByPath src/__tests__/unit/pipeline-ingress-contract.test.ts --runInBand\n- pnpm --filter @bitcode/btd test -- --runTestsByPath __tests__/interface-authorization-policy.test.ts --runInBand\n- pnpm run generate:v33-promotion-readiness\n- pnpm run check:v33-gate10\n- git diff --check
1 parent 35d34d6 commit 008b66d

5 files changed

Lines changed: 14 additions & 5 deletions

File tree

.bitcode/v33-promotion-readiness-report.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"currentTarget": "V32",
5656
"documentationEvidence": [
5757
{
58-
"digest": "sha256:c5f427b82720085093158501a0141d4db171ace7437481a4bc175b4897081df5",
58+
"digest": "sha256:f4f18279dea8ecc27de7e13ee5c4c4496b45ad5e4dfd37aa2909355fda7f391e",
5959
"present": true,
6060
"relativePath": "BITCODE_SPEC_V33.md",
6161
"requiredTokens": [
@@ -74,7 +74,7 @@
7474
]
7575
},
7676
{
77-
"digest": "sha256:3fb790d89c99396ca8e422cdfdadcff9baf2c4bf5b44cd338313bf08826c8f5a",
77+
"digest": "sha256:82166f72b7f63ad1dae97e1ddb258af14cfca8d69b1e0dbd4437432e8455ca5d",
7878
"present": true,
7979
"relativePath": "BITCODE_SPEC_V33_DELTA.md",
8080
"requiredTokens": [
@@ -93,7 +93,7 @@
9393
]
9494
},
9595
{
96-
"digest": "sha256:3dea3f5113e0fc89303a92fef92d88eef7faf56c3015cd00950965983c463f86",
96+
"digest": "sha256:d044bd4bad93f88f2019a8133a172807389a710f4f5c5eb5406da88d981a7755",
9797
"present": true,
9898
"relativePath": "BITCODE_SPEC_V33_NOTES.md",
9999
"requiredTokens": [

BITCODE_SPEC_V33.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,8 @@ Generated artifacts must be stable, source-safe, and explicitly tied to validati
572572

573573
V33 Gate 10 closes when `version/v33` can promote to active V33 without direct `main` writes. The readiness report `.bitcode/v33-promotion-readiness-report.json` proves that all V33 interface artifacts are present, source-safe, parseable, and wired into gate checks, promotion checks, generated proof appendix support, and workflow validation. Promotion rewrites runtime posture from `V32` active / `V33` draft to `V33` active / `V34` draft and generates `BITCODE_SPEC_V33_PROVEN.md`; the resulting posture is V33 active / V34 draft.
574574

575+
Interface authorization promotion readiness also requires credential identifiers to stay outside BTD proof-root hashing. Interface adapters may retain API key record ids in adapter-local audit context, but BTD roots bind the authenticated principal, organization authority, wallet/license/rights state, protected-source visibility, and repair posture.
576+
575577
## V33 validation canon
576578

577579
Validation must include spec-family checks, canonical-input checks, canon-posture drift checks, V33 gate checks, package tests, interface contract tests, and source-safe example tests.

BITCODE_SPEC_V33_DELTA.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,5 +235,6 @@ Closure acceptance:
235235

236236
- V33 promotion checks validate all gate artifacts, interface contracts, compatibility matrices, telemetry proof hooks, and generated proof appendix support;
237237
- promotion scripts support V33 command planning, dry-run, generated proof output, and derived promotion commit body generation;
238+
- MCP and other interface adapters keep credential record identifiers in adapter-local audit context rather than hashing them into BTD authorization proof roots;
238239
- promotion workflow can rewrite active V33 / draft V34 posture;
239240
- `version/v33` can be requested into `main` only after all V33 gates close.

BITCODE_SPEC_V33_NOTES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,12 @@ The Gate 10 checker is `check:v33-gate10`. It must pass both before promotion
233233
with `BITCODE_SPEC.txt` pointing at `V32` and after promotion with the pointer
234234
at `V33`.
235235

236+
Promotion readiness also requires interface authorization proof roots to avoid
237+
hashing credential record identifiers as proof material. Interface adapters keep
238+
API key record ids in their own audit context; BTD authorization roots bind the
239+
authenticated principal, organization authority, wallet/license/rights state,
240+
and source-visibility decision.
241+
236242
## Carryforward from V32
237243

238244
V33 inherits these V32 truths:

packages/executions-mcp/src/mcp-server/src/tools/pipeline-tools.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,10 +184,10 @@ function assertPipelineWriteAdmission(
184184
action: 'request_finding_fits',
185185
authIssuer: {
186186
issuerKind: 'api_key',
187-
issuerId: context.apiKeyId ?? context.userId,
187+
issuerId: context.userId,
188188
issuedAt,
189189
expiresAt: new Date(Date.now() + 10 * 60 * 1000).toISOString(),
190-
issuerRoot: context.apiKeyId ? `mcp-api-key:${context.apiKeyId}` : `mcp-user:${context.userId}`,
190+
issuerRoot: `mcp-authenticated-principal:${context.userId}`,
191191
},
192192
actorId: context.userId,
193193
organizationId: context.organizationId ?? null,

0 commit comments

Comments
 (0)