Skip to content

Commit 76f6556

Browse files
Merge pull request #234 from engineeredsoftware/v47/gate-2-feature-excess-alignment-audit
V47 Gate 2: Feature Excess And Alignment Audit
2 parents 71725ab + 46ee861 commit 76f6556

22 files changed

Lines changed: 1161 additions & 60 deletions

.bitcode/v46-local-interface-comprehension-rehearsal.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -799,18 +799,18 @@
799799
"delta": "BITCODE_SPEC_V46_DELTA.md:a16a16db40d4eeae612a0657",
800800
"notes": "BITCODE_SPEC_V46_NOTES.md:cca70aca3566132e7026351c",
801801
"parity": "BITCODE_SPEC_V46_PARITY_MATRIX.md:91b47eeaa106639d2d21856b",
802-
"roadmap": "SPECIFICATIONS_ROADMAP.md:9a349af9258300768b8fc758",
802+
"roadmap": "SPECIFICATIONS_ROADMAP.md:d77398b3e03ad727d9275b66",
803803
"readme": "README.md:d28ec731634e03953d8adfe6",
804804
"protocolReadme": "packages/protocol/README.md:f5b175049f4f4e8df179e184",
805-
"packageJson": "package.json:9985108aaea23b4bb4f5e7a9",
806-
"packageIndex": "packages/protocol/src/index.js:1f16ea428bd71351a1292cb6",
807-
"packageTypes": "packages/protocol/src/index.d.ts:278dfc652c621533b5e86f4d",
808-
"packageSource": "packages/protocol/src/canonical/v46-local-interface-comprehension-rehearsal.js:ea56065835a819cd454c5558",
805+
"packageJson": "package.json:47e46090fa44c01d26069bfb",
806+
"packageIndex": "packages/protocol/src/index.js:41a9fb2ceea33ad0a2eb5585",
807+
"packageTypes": "packages/protocol/src/index.d.ts:0668307b7b1f6262432f32e0",
808+
"packageSource": "packages/protocol/src/canonical/v46-local-interface-comprehension-rehearsal.js:79ee15948652b8909022052e",
809809
"packageTest": "packages/protocol/test/v46-local-interface-comprehension-rehearsal.test.js:5b6ad282088791ea76ec2bbf",
810810
"generator": "scripts/generate-v46-local-interface-comprehension-rehearsal.mjs:d6a9dadb6f8ee51de50a529f",
811811
"checker": "scripts/check-v46-gate7-local-interface-comprehension-rehearsal.mjs:beb49c72404e73e730640a72",
812-
"gateWorkflow": ".github/workflows/bitcode-gate-quality.yml:7cb34abd82e64e1fb32946b0",
813-
"canonWorkflow": ".github/workflows/bitcode-canon-quality.yml:7e675adc942626fc2048a266",
812+
"gateWorkflow": ".github/workflows/bitcode-gate-quality.yml:0cc93a50c149a253eb60287a",
813+
"canonWorkflow": ".github/workflows/bitcode-canon-quality.yml:31089b944c381ce30c0633db",
814814
"v46ProtocolArtifact": ".bitcode/v46-protocol-comprehension-object-model.json:b09508f0d7841284effb0e01",
815815
"v46PublicArtifact": ".bitcode/v46-public-operator-claim-boundaries.json:352e9021ffbe43d650923b98",
816816
"v46ProductArtifact": ".bitcode/v46-product-route-comprehension-readback.json:c5d1d887915cb920288b18a8",
Lines changed: 356 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,356 @@
1+
{
2+
"artifactId": "v47-feature-excess-alignment-audit",
3+
"schemaId": "bitcode.v47.featureExcessAlignmentAudit.v1",
4+
"version": "V47",
5+
"currentTarget": "V46",
6+
"sourceSafetyVerdict": "source-safe-launch-scope-metadata",
7+
"generatedAt": "deterministic",
8+
"artifactRoot": "v47-feature-excess-alignment-audit:07dd51ab80528e971790e5c1",
9+
"passed": true,
10+
"launchRouteIds": [
11+
"/deposit",
12+
"/read",
13+
"/packs"
14+
],
15+
"supportingSurfaceIds": [
16+
"/",
17+
"/docs",
18+
"/auxillaries",
19+
"/btd/[assetPackId]",
20+
"/executions/[runId]",
21+
"/api/activity",
22+
"/api/deposits",
23+
"/api/read-review",
24+
"/api/make-bitcode-branch",
25+
"/api/executions"
26+
],
27+
"deferredSurfaceIds": [
28+
"/terminal direct product entry",
29+
"/conversations direct commercial launch",
30+
"/exchange direct product entry",
31+
"/orbitals direct route family",
32+
"/edgetimes",
33+
"/demo-video",
34+
"ChatGPT App commercialization",
35+
"MCP/API commercialization",
36+
"Bitcode Chat commercialization",
37+
"value-bearing mainnet BTC settlement",
38+
"advanced market mechanics"
39+
],
40+
"featurePolicyIds": [
41+
"public-nav-current-routes-only",
42+
"landing-cta-current-routes-only",
43+
"btd-detail-current-routes-only",
44+
"exchange-compatibility-redirect-only",
45+
"terminal-direct-entry-flaggable",
46+
"conversations-direct-entry-flaggable",
47+
"testnet-btc-only",
48+
"source-safe-preview-only"
49+
],
50+
"forbiddenLaunchEntryTargets": [
51+
"/terminal?intent=acquire-btd",
52+
"/terminal?intent=submit-read-for-btd",
53+
"/exchange?intent=buy-existing-btd",
54+
"router.push('/terminal')",
55+
"window.location.assign('/terminal"
56+
],
57+
"forbiddenPayloadIds": [
58+
"protected_source_payload",
59+
"raw_source_text",
60+
"unpaid_assetpack_source",
61+
"raw_protected_prompt",
62+
"interpolated_prompt",
63+
"raw_provider_response",
64+
"wallet_private_material",
65+
"settlement_private_payload",
66+
"mainnet_value_bearing_payment_secret"
67+
],
68+
"auditRows": [
69+
{
70+
"rowId": "launch-routes-are-current-product-entrypoints",
71+
"classification": "launch",
72+
"owner": "website-product-routes",
73+
"routeIds": [
74+
"/deposit",
75+
"/read",
76+
"/packs"
77+
],
78+
"policy": "The V47 website MVP opens through Deposit, Read, and Packs; public navigation and landing acquisition actions must point at those route roots.",
79+
"requiredPolicyIds": [
80+
"public-nav-current-routes-only",
81+
"landing-cta-current-routes-only"
82+
],
83+
"rowRoot": "v47-feature-excess-row:ea73c2d5b16a4df3e4c7a7dc",
84+
"sourceSafeMetadataOnly": true,
85+
"protectedSourceVisible": false,
86+
"unpaidAssetPackSourceVisible": false,
87+
"launchBlockingWhenViolated": true
88+
},
89+
{
90+
"rowId": "compatibility-routes-cannot-own-product-state",
91+
"classification": "compatibility",
92+
"owner": "compatibility-routes",
93+
"routeIds": [
94+
"/exchange",
95+
"/btd/[assetPackId]"
96+
],
97+
"policy": "Compatibility routes may preserve old links only when they redirect or point into Packs/Read and do not claim independent Exchange or Terminal product authority.",
98+
"requiredPolicyIds": [
99+
"exchange-compatibility-redirect-only",
100+
"btd-detail-current-routes-only"
101+
],
102+
"rowRoot": "v47-feature-excess-row:e191b697d12abdddde5f2d14",
103+
"sourceSafeMetadataOnly": true,
104+
"protectedSourceVisible": false,
105+
"unpaidAssetPackSourceVisible": false,
106+
"launchBlockingWhenViolated": true
107+
},
108+
{
109+
"rowId": "retained-workspaces-are-flagged-or-direct-only",
110+
"classification": "deferred",
111+
"owner": "retained-workspaces",
112+
"routeIds": [
113+
"/terminal",
114+
"/conversations"
115+
],
116+
"policy": "Terminal and Conversations remain retained operator/composition workspaces; they must not be primary launch CTAs and direct entry must be flaggable for launch mode.",
117+
"requiredPolicyIds": [
118+
"terminal-direct-entry-flaggable",
119+
"conversations-direct-entry-flaggable"
120+
],
121+
"rowRoot": "v47-feature-excess-row:7f5941cec87ea2b766915ab6",
122+
"sourceSafeMetadataOnly": true,
123+
"protectedSourceVisible": false,
124+
"unpaidAssetPackSourceVisible": false,
125+
"launchBlockingWhenViolated": true
126+
},
127+
{
128+
"rowId": "commercial-surfaces-deferred",
129+
"classification": "deferred",
130+
"owner": "non-website-commercial-surfaces",
131+
"routeIds": [
132+
"MCP/API",
133+
"ChatGPT App",
134+
"Bitcode Chat"
135+
],
136+
"policy": "API/MCP, ChatGPT App, and Bitcode Chat are protocol/interface surfaces only in V47 and must not be presented as commercially launched website flows.",
137+
"requiredPolicyIds": [
138+
"testnet-btc-only",
139+
"source-safe-preview-only"
140+
],
141+
"rowRoot": "v47-feature-excess-row:ad4ea3f63b6f0cf6dd67212d",
142+
"sourceSafeMetadataOnly": true,
143+
"protectedSourceVisible": false,
144+
"unpaidAssetPackSourceVisible": false,
145+
"launchBlockingWhenViolated": true
146+
},
147+
{
148+
"rowId": "source-and-value-boundaries-remain-launch-blockers",
149+
"classification": "blocked",
150+
"owner": "source-safety-and-mainnet",
151+
"routeIds": [
152+
"mainnet settlement",
153+
"source-bearing preview"
154+
],
155+
"policy": "V47 testnet launch cannot expose unpaid AssetPack source, raw prompts, raw provider responses, secrets, wallet private material, or value-bearing mainnet settlement.",
156+
"requiredPolicyIds": [
157+
"testnet-btc-only",
158+
"source-safe-preview-only"
159+
],
160+
"rowRoot": "v47-feature-excess-row:7ab47362d3f4342bfaae9cf7",
161+
"sourceSafeMetadataOnly": true,
162+
"protectedSourceVisible": false,
163+
"unpaidAssetPackSourceVisible": false,
164+
"launchBlockingWhenViolated": true
165+
}
166+
],
167+
"sourceRoots": {
168+
"activePointer": "BITCODE_SPEC.txt:820a850b09546da1a1a1c447",
169+
"spec": "BITCODE_SPEC_V47.md:9ccb78b6f22f1360552940a4",
170+
"delta": "BITCODE_SPEC_V47_DELTA.md:949e8f86783da80db60e5d58",
171+
"notes": "BITCODE_SPEC_V47_NOTES.md:c2951a1b11a87828391f1961",
172+
"parity": "BITCODE_SPEC_V47_PARITY_MATRIX.md:6c48efc4b067a78e947c85d8",
173+
"roadmap": "SPECIFICATIONS_ROADMAP.md:d77398b3e03ad727d9275b66",
174+
"publicCopy": "uapi/components/base/bitcode/layout/bitcode-public-copy.ts:9b39322f872b899e1c752701",
175+
"nav": "uapi/components/base/bitcode/layout/nav.tsx:2b2eaaf65982969883af8d1e",
176+
"features": "uapi/config/features.ts:6ff2da113ab17dfc468d7461",
177+
"workspaceSurface": "uapi/components/base/bitcode/layout/workspace-surface.ts:12418d5db9c3ddad6d10c841",
178+
"home": "uapi/app/page.tsx:b1b707e58f8917b8a97717b4",
179+
"heroClient": "uapi/app/hero-client.tsx:2a524ab6b50787be4414f8ba",
180+
"marketingPricing": "uapi/app/(root)/components/MarketingPricingSection.tsx:6eda1c0801da2e0e2b6dc47c",
181+
"packsPage": "uapi/app/packs/page.tsx:1b3d7a1cc00500a13042e8dd",
182+
"readPage": "uapi/app/read/page.tsx:37a723ed87feac05c0504249",
183+
"depositPage": "uapi/app/deposit/page.tsx:6bab6a9debab3f4350d0ddca",
184+
"terminalPage": "uapi/app/terminal/page.tsx:6b75306c69248605ab1bb69b",
185+
"conversationsPage": "uapi/app/conversations/page.tsx:bb3f749e94dbe158142bbe0d",
186+
"exchangePage": "uapi/app/exchange/page.tsx:be7a744d1f9c9252d1b6eba9",
187+
"exchangeReadme": "uapi/app/exchange/README.md:3a0b7052de6be76fcda2b094",
188+
"btdDetailPage": "uapi/app/btd/[assetPackId]/page.tsx:b94efe66179c2a2a27bde659",
189+
"packageJson": "package.json:47e46090fa44c01d26069bfb",
190+
"protocolIndex": "packages/protocol/src/index.js:41a9fb2ceea33ad0a2eb5585",
191+
"protocolTypes": "packages/protocol/src/index.d.ts:0668307b7b1f6262432f32e0",
192+
"protocolSource": "packages/protocol/src/canonical/v47-feature-excess-alignment-audit.js:c96a52d2511eff4d321a61e3",
193+
"protocolTest": "packages/protocol/test/v47-feature-excess-alignment-audit.test.js:d4eb230b98bcbc3ee18af459",
194+
"generator": "scripts/generate-v47-feature-excess-alignment-audit.mjs:1132b37cd29dddc216db998d",
195+
"checker": "scripts/check-v47-gate2-feature-excess-alignment-audit.mjs:007c139e5c0a60e0d621e7f4",
196+
"gateWorkflow": ".github/workflows/bitcode-gate-quality.yml:0cc93a50c149a253eb60287a",
197+
"canonWorkflow": ".github/workflows/bitcode-canon-quality.yml:31089b944c381ce30c0633db"
198+
},
199+
"predicateResults": [
200+
{
201+
"id": "active-canon-pointer-remains-v46",
202+
"sourcePath": "BITCODE_SPEC.txt",
203+
"passed": true
204+
},
205+
{
206+
"id": "spec-records-gate2-feature-excess",
207+
"sourcePath": "BITCODE_SPEC_V47.md",
208+
"passed": true
209+
},
210+
{
211+
"id": "delta-records-gate2-artifact",
212+
"sourcePath": "BITCODE_SPEC_V47_DELTA.md",
213+
"passed": true
214+
},
215+
{
216+
"id": "notes-record-gate2-policy",
217+
"sourcePath": "BITCODE_SPEC_V47_NOTES.md",
218+
"passed": true
219+
},
220+
{
221+
"id": "parity-records-gate2-closure",
222+
"sourcePath": "BITCODE_SPEC_V47_PARITY_MATRIX.md",
223+
"passed": true
224+
},
225+
{
226+
"id": "roadmap-records-gate2-closure",
227+
"sourcePath": "SPECIFICATIONS_ROADMAP.md",
228+
"passed": true
229+
},
230+
{
231+
"id": "public-nav-current-routes-only",
232+
"sourcePath": "uapi/components/base/bitcode/layout/bitcode-public-copy.ts",
233+
"passed": true
234+
},
235+
{
236+
"id": "landing-cta-current-routes-only",
237+
"sourcePath": "uapi/app/hero-client.tsx",
238+
"passed": true
239+
},
240+
{
241+
"id": "marketing-acquisition-current-routes-only",
242+
"sourcePath": "uapi/app/(root)/components/MarketingPricingSection.tsx",
243+
"passed": true
244+
},
245+
{
246+
"id": "btd-detail-current-routes-only",
247+
"sourcePath": "uapi/app/btd/[assetPackId]/page.tsx",
248+
"passed": true
249+
},
250+
{
251+
"id": "exchange-compatibility-redirect-only",
252+
"sourcePath": "uapi/app/exchange/page.tsx",
253+
"passed": true
254+
},
255+
{
256+
"id": "terminal-direct-entry-flaggable",
257+
"sourcePath": "uapi/components/base/bitcode/layout/nav.tsx",
258+
"passed": true
259+
},
260+
{
261+
"id": "terminal-metadata-retained-operator-workspace",
262+
"sourcePath": "uapi/app/terminal/page.tsx",
263+
"passed": true
264+
},
265+
{
266+
"id": "conversations-direct-entry-flaggable",
267+
"sourcePath": "uapi/app/conversations/page.tsx",
268+
"passed": true
269+
},
270+
{
271+
"id": "feature-config-owns-deferred-flags",
272+
"sourcePath": "uapi/config/features.ts",
273+
"passed": true
274+
},
275+
{
276+
"id": "public-shell-launch-routes-classified",
277+
"sourcePath": "uapi/components/base/bitcode/layout/workspace-surface.ts",
278+
"passed": true
279+
},
280+
{
281+
"id": "public-launch-sources-avoid-deferred-entry-targets",
282+
"sourcePath": "uapi/components/base/bitcode/layout/bitcode-public-copy.ts",
283+
"passed": true
284+
},
285+
{
286+
"id": "protocol-test-covers-artifact",
287+
"sourcePath": "packages/protocol/test/v47-feature-excess-alignment-audit.test.js",
288+
"passed": true
289+
},
290+
{
291+
"id": "protocol-package-exports-gate2",
292+
"sourcePath": "packages/protocol/src/index.js",
293+
"passed": true
294+
},
295+
{
296+
"id": "protocol-types-export-gate2",
297+
"sourcePath": "packages/protocol/src/index.d.ts",
298+
"passed": true
299+
},
300+
{
301+
"id": "package-json-exposes-gate2",
302+
"sourcePath": "package.json",
303+
"passed": true
304+
},
305+
{
306+
"id": "gate-workflow-runs-gate2",
307+
"sourcePath": ".github/workflows/bitcode-gate-quality.yml",
308+
"passed": true
309+
},
310+
{
311+
"id": "canon-workflow-runs-gate2",
312+
"sourcePath": ".github/workflows/bitcode-canon-quality.yml",
313+
"passed": true
314+
},
315+
{
316+
"id": "generator-exists",
317+
"sourcePath": "scripts/generate-v47-feature-excess-alignment-audit.mjs",
318+
"passed": true
319+
},
320+
{
321+
"id": "checker-exists",
322+
"sourcePath": "scripts/check-v47-gate2-feature-excess-alignment-audit.mjs",
323+
"passed": true
324+
}
325+
],
326+
"coverage": {
327+
"websiteLaunchRoutesOnly": true,
328+
"publicNavCurrentRoutesOnly": true,
329+
"launchCtasCurrentRoutesOnly": true,
330+
"btdDetailCurrentRoutesOnly": true,
331+
"exchangeCompatibilityRedirectOnly": true,
332+
"terminalDirectEntryFlaggable": true,
333+
"conversationsDirectEntryFlaggable": true,
334+
"nonWebsiteCommercialSurfacesDeferred": true,
335+
"testnetBtcOnly": true,
336+
"sourceSafePreviewOnly": true,
337+
"launchRouteCount": 3,
338+
"supportingSurfaceCount": 10,
339+
"deferredSurfaceCount": 11,
340+
"launchAuditRowCount": 1,
341+
"deferredAuditRowCount": 2,
342+
"sourceSafeMetadataOnly": true,
343+
"protectedSourceVisible": false,
344+
"rawSourceTextVisible": false,
345+
"unpaidAssetPackSourceVisible": false,
346+
"rawPromptVisible": false,
347+
"interpolatedPromptVisible": false,
348+
"rawProviderResponseVisible": false,
349+
"walletPrivateMaterialVisible": false,
350+
"settlementPrivatePayloadVisible": false,
351+
"valueBearingMainnetEnabled": false,
352+
"requiredPredicateCount": 25,
353+
"passedPredicateCount": 25,
354+
"failedPredicateIds": []
355+
}
356+
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,9 @@ jobs:
454454
if [ -f scripts/check-v47-gate1-scope-measurement-launch-freeze.mjs ]; then
455455
node scripts/check-v47-gate1-scope-measurement-launch-freeze.mjs --skip-branch-check
456456
fi
457+
if [ -f scripts/check-v47-gate2-feature-excess-alignment-audit.mjs ]; then
458+
node scripts/check-v47-gate2-feature-excess-alignment-audit.mjs --skip-branch-check --skip-uapi-tests
459+
fi
457460
fi
458461
else
459462
echo "Unexpected BITCODE_SPEC.txt pointer: $POINTER" >&2

0 commit comments

Comments
 (0)