Skip to content

Commit c883e55

Browse files
V32 Gate 7: Prove browser accessibility coverage
Adds deterministic Gate 7 proof artifacts and scripts for Terminal plus Terminal-hosted Auxillaries browser, accessibility, responsive, and visual coverage. Wires focused Jest and Playwright checks into gate quality, updates the V32 specification family and roadmap, and keeps generated metadata source-safe without tracked secret-shaped literals.
1 parent 69096d4 commit c883e55

19 files changed

Lines changed: 1032 additions & 24 deletions
Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
{
2+
"accessibilityAssertions": [
3+
"keyboard-path",
4+
"landmark-labels",
5+
"focus-state",
6+
"status-announcements",
7+
"contrast-sensitive-tokens",
8+
"reduced-motion",
9+
"overflow-wrapping",
10+
"deterministic-visual-semantics"
11+
],
12+
"artifactId": "v32-browser-accessibility-responsive-visual-proof",
13+
"closureCommand": "pnpm run check:v32-gate7",
14+
"currentTarget": "V31",
15+
"generatedAt": "2026-05-22T00:00:00.000Z",
16+
"passed": true,
17+
"proofCoverage": {
18+
"assertionCount": 8,
19+
"credentialsSerialized": false,
20+
"protectedSourceVisible": false,
21+
"screenshotOnlyApproval": false,
22+
"stateCount": 6,
23+
"surfaceCount": 2,
24+
"viewportCount": 4
25+
},
26+
"schemaId": "bitcode.v32.browserAccessibilityResponsiveVisualProof.v1",
27+
"sourceEvidence": [
28+
{
29+
"digest": "sha256:dda0b55a3606881a20dcccdd8a50bb9df5cac555bc8d315e87366ae15b5d52ad",
30+
"relativePath": "uapi/app/bitcode-browser-accessibility-responsive-proof.ts",
31+
"requiredTokens": [
32+
{
33+
"present": true,
34+
"token": "BITCODE_BROWSER_ACCESSIBILITY_RESPONSIVE_PROOF_CONTRACT"
35+
},
36+
{
37+
"present": true,
38+
"token": "keyboard-path"
39+
},
40+
{
41+
"present": true,
42+
"token": "deterministic-visual-semantics"
43+
},
44+
{
45+
"present": true,
46+
"token": "no-screenshot-only-approval"
47+
}
48+
]
49+
},
50+
{
51+
"digest": "sha256:2ac388fcffdf1820b6a9287177803ec8658e660807e7002e5390c0fc2e70c4b6",
52+
"relativePath": "uapi/app/terminal/terminal-ux-browser-proof.ts",
53+
"requiredTokens": [
54+
{
55+
"present": true,
56+
"token": "TERMINAL_UX_BROWSER_PROOF_VIEWPORTS"
57+
},
58+
{
59+
"present": true,
60+
"token": "source-safe-preview"
61+
}
62+
]
63+
},
64+
{
65+
"digest": "sha256:500a9207ca162344075f6ad36e886aab2fbcf096784df0afe15ebaacbf93abeb",
66+
"relativePath": "uapi/app/auxillaries/auxillaries-ux-accessibility-proof.ts",
67+
"requiredTokens": [
68+
{
69+
"present": true,
70+
"token": "AUXILLARIES_UX_ACCESSIBILITY_PROOF_CONTRACT"
71+
},
72+
{
73+
"present": true,
74+
"token": "audit-expanded"
75+
}
76+
]
77+
},
78+
{
79+
"digest": "sha256:ec43bad3392a266b90a4d5c944ff7e2c34b2b94d1fa31c90397f73479418e1c8",
80+
"relativePath": "uapi/styles/auxillaries-bitcode.css",
81+
"requiredTokens": [
82+
{
83+
"present": true,
84+
"token": "focus-visible"
85+
},
86+
{
87+
"present": true,
88+
"token": "overflow-wrap: anywhere"
89+
},
90+
{
91+
"present": true,
92+
"token": "@media (prefers-reduced-motion: reduce)"
93+
}
94+
]
95+
}
96+
],
97+
"sourceSafetyVerdict": "source-safe-browser-visual-proof-metadata",
98+
"surfaces": [
99+
{
100+
"evidenceFiles": [
101+
"uapi/app/terminal/terminal-ux-browser-proof.ts",
102+
"uapi/tests/terminalUxBrowserProof.test.tsx",
103+
"uapi/tests/e2e/commercial-mvp.terminal-ux.spec.ts",
104+
"uapi/tests/e2e/bitcode-browser-accessibility-responsive-proof.spec.ts"
105+
],
106+
"states": [
107+
"default",
108+
"guided",
109+
"detail"
110+
],
111+
"surfaceId": "terminal"
112+
},
113+
{
114+
"evidenceFiles": [
115+
"uapi/app/auxillaries/auxillaries-ux-accessibility-proof.ts",
116+
"uapi/tests/auxillariesContent.access.test.tsx",
117+
"uapi/tests/e2e/commercial-mvp.auxillaries.spec.ts",
118+
"uapi/tests/e2e/bitcode-browser-accessibility-responsive-proof.spec.ts"
119+
],
120+
"states": [
121+
"default",
122+
"guided",
123+
"detail"
124+
],
125+
"surfaceId": "auxillaries"
126+
}
127+
],
128+
"testEvidence": [
129+
{
130+
"digest": "sha256:0ffbc02bb322af8c85a7987bc1b1c042b4c65bb2db190d018ce9993c585467c0",
131+
"relativePath": "uapi/tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts",
132+
"requiredTokens": [
133+
{
134+
"present": true,
135+
"token": "covers Terminal and Auxillaries default, guided, and detail states"
136+
},
137+
{
138+
"present": true,
139+
"token": "requires keyboard, labels, focus, status, contrast, motion, overflow"
140+
},
141+
{
142+
"present": true,
143+
"token": "no-screenshot-only-approval"
144+
}
145+
]
146+
},
147+
{
148+
"digest": "sha256:a116018ac26cd4ea169a1d0556e90a3ae4a12b9a47501444c702af09af77b5d4",
149+
"relativePath": "uapi/tests/e2e/bitcode-browser-accessibility-responsive-proof.spec.ts",
150+
"requiredTokens": [
151+
{
152+
"present": true,
153+
"token": "Terminal default, guided, and detail states stay semantic and responsive"
154+
},
155+
{
156+
"present": true,
157+
"token": "Auxillaries default, guided, and detail states stay semantic and responsive"
158+
},
159+
{
160+
"present": true,
161+
"token": "expectNoHorizontalOverflow"
162+
},
163+
{
164+
"present": true,
165+
"token": "reducedMotion: 'reduce'"
166+
}
167+
]
168+
},
169+
{
170+
"digest": "sha256:8b255a33c5d08e3e4f9992e778a13c3561592d02e54027aebc6494cc8188c862",
171+
"relativePath": "uapi/tests/terminalUxBrowserProof.test.tsx",
172+
"requiredTokens": [
173+
{
174+
"present": true,
175+
"token": "renders Terminal workspace loading, failed, and empty states with explicit semantics"
176+
},
177+
{
178+
"present": true,
179+
"token": "marks selected detail sections as route-owned controls"
180+
}
181+
]
182+
},
183+
{
184+
"digest": "sha256:054f5a7d883d14b15b5125ba0e1a193561a41a86afc3d5a2519736afa0a3ce11",
185+
"relativePath": "uapi/tests/auxillariesContent.access.test.tsx",
186+
"requiredTokens": [
187+
{
188+
"present": true,
189+
"token": "named landmarks, skip navigation, active-pane announcements"
190+
},
191+
{
192+
"present": true,
193+
"token": "expandable audit detail"
194+
}
195+
]
196+
}
197+
],
198+
"version": "V32",
199+
"viewports": [
200+
{
201+
"height": 844,
202+
"id": "phone",
203+
"width": 390
204+
},
205+
{
206+
"height": 1024,
207+
"id": "tablet",
208+
"width": 768
209+
},
210+
{
211+
"height": 900,
212+
"id": "laptop",
213+
"width": 1280
214+
},
215+
{
216+
"height": 1080,
217+
"id": "widescreen",
218+
"width": 1920
219+
}
220+
],
221+
"visualProofStrategy": [
222+
"semantic-layout-metrics",
223+
"stable-route-state-contracts",
224+
"stateful-accessibility-roles",
225+
"no-screenshot-only-approval"
226+
]
227+
}

.bitcode/v32-deterministic-replay-report.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
{
1212
"artifactPath": ".bitcode/v32-proof-coverage-matrix.json",
1313
"byteEqual": true,
14-
"byteLength": 21157,
15-
"firstDigest": "sha256:2021ab0d617d08e507ac902daacde19f70516f9d2f968bd946566891f72268d6",
16-
"secondDigest": "sha256:2021ab0d617d08e507ac902daacde19f70516f9d2f968bd946566891f72268d6"
14+
"byteLength": 21695,
15+
"firstDigest": "sha256:61248901dde4774485f5c9e56b2c7a83a44943274058a3408c503bbcb8dd6851",
16+
"secondDigest": "sha256:61248901dde4774485f5c9e56b2c7a83a44943274058a3408c503bbcb8dd6851"
1717
}
1818
],
1919
"artifactId": "v32-deterministic-replay-report",

.bitcode/v32-proof-coverage-matrix.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,19 +58,19 @@
5858
{
5959
"blockers": [],
6060
"coverageStatus": "v32-expansion-required",
61-
"expectedArtifact": ".bitcode/v32-interface-contract-regression-suite.json",
61+
"expectedArtifact": ".bitcode/v32-browser-accessibility-responsive-visual-proof.json",
6262
"failureModes": [
6363
"route-state-drift",
6464
"stream-payload-shape-drift",
6565
"unredacted-protected-source-in-detail-pane",
6666
"operator-detail-overflow"
6767
],
68-
"fixture": "uapi/tests/terminalTransactionReadModel.test.ts; uapi/tests/terminalPipelineHarnessClient.test.ts; uapi/tests/pipelineExecutionLogHeader.test.tsx; uapi/tests/terminalInterfaceIntegrationRegression.test.ts",
68+
"fixture": "uapi/tests/terminalTransactionReadModel.test.ts; uapi/tests/terminalPipelineHarnessClient.test.ts; uapi/tests/pipelineExecutionLogHeader.test.tsx; uapi/tests/terminalInterfaceIntegrationRegression.test.ts; uapi/tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts; uapi/tests/e2e/bitcode-browser-accessibility-responsive-proof.spec.ts",
6969
"owner": "uapi/app/terminal",
7070
"plannedGate": "Gate 6 and Gate 7",
7171
"promotedBehavior": "URL-addressable Terminal transactions, live execution streams, transaction detail cards, wallet/BTC posture, and source-safe operator readback.",
7272
"repairPosture": "Gate 6 hardens transaction contract fixtures; Gate 7 proves browser/accessibility/responsive presentation.",
73-
"replayCommand": "pnpm --dir uapi exec jest --runTestsByPath tests/terminalTransactionReadModel.test.ts tests/terminalPipelineHarnessClient.test.ts tests/pipelineExecutionLogHeader.test.tsx tests/terminalInterfaceIntegrationRegression.test.ts --runInBand && pnpm run check:v32-interface-contract-regression-suites",
73+
"replayCommand": "pnpm --dir uapi exec jest --runTestsByPath tests/terminalTransactionReadModel.test.ts tests/terminalPipelineHarnessClient.test.ts tests/pipelineExecutionLogHeader.test.tsx tests/terminalInterfaceIntegrationRegression.test.ts tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts --runInBand && pnpm run check:v32-interface-contract-regression-suites && pnpm run check:v32-browser-accessibility-responsive-visual-proof",
7474
"requiredContexts": [
7575
"TerminalTransaction",
7676
"TerminalTransactionReadModel",
@@ -135,19 +135,19 @@
135135
{
136136
"blockers": [],
137137
"coverageStatus": "v32-expansion-required",
138-
"expectedArtifact": ".bitcode/v32-interface-contract-regression-suite.json",
138+
"expectedArtifact": ".bitcode/v32-browser-accessibility-responsive-visual-proof.json",
139139
"failureModes": [
140140
"provider-readiness-drift",
141141
"policy-denial-missing-reason",
142142
"wallet-btd-projection-mismatch",
143143
"recovery-run-without-before-after-roots"
144144
],
145-
"fixture": "packages/api/src/routes/__tests__/auxillaries-contract.test.ts; uapi/tests/userDataRoute.test.ts; uapi/tests/auxillariesWalletPane.test.tsx; uapi/tests/auxillariesExternalsPane.test.tsx; uapi/tests/auxillariesContent.access.test.tsx",
145+
"fixture": "packages/api/src/routes/__tests__/auxillaries-contract.test.ts; uapi/tests/userDataRoute.test.ts; uapi/tests/auxillariesWalletPane.test.tsx; uapi/tests/auxillariesExternalsPane.test.tsx; uapi/tests/auxillariesContent.access.test.tsx; uapi/tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts; uapi/tests/e2e/bitcode-browser-accessibility-responsive-proof.spec.ts",
146146
"owner": "packages/api; packages/orm; uapi/app/auxillaries",
147147
"plannedGate": "Gate 6 and Gate 7",
148148
"promotedBehavior": "Profile, account, provider readiness, interface admission, wallet/BTD pane, organization authority, diagnostics, recovery, and telemetry proof hooks.",
149149
"repairPosture": "Gate 6 turns inherited Auxillaries contracts into shared regression fixtures; Gate 7 expands browser/accessibility evidence.",
150-
"replayCommand": "pnpm --filter @bitcode/api exec jest --config jest.config.cjs --runTestsByPath src/routes/__tests__/auxillaries-contract.test.ts --runInBand && pnpm --dir uapi exec jest --runTestsByPath tests/userDataRoute.test.ts tests/auxillariesWalletPane.test.tsx tests/auxillariesExternalsPane.test.tsx tests/auxillariesContent.access.test.tsx --runInBand && pnpm run check:v32-interface-contract-regression-suites",
150+
"replayCommand": "pnpm --filter @bitcode/api exec jest --config jest.config.cjs --runTestsByPath src/routes/__tests__/auxillaries-contract.test.ts --runInBand && pnpm --dir uapi exec jest --runTestsByPath tests/userDataRoute.test.ts tests/auxillariesWalletPane.test.tsx tests/auxillariesExternalsPane.test.tsx tests/auxillariesContent.access.test.tsx tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts --runInBand && pnpm run check:v32-interface-contract-regression-suites && pnpm run check:v32-browser-accessibility-responsive-visual-proof",
151151
"requiredContexts": [
152152
"AuxillariesProfileState",
153153
"AuxillariesConnectionReadiness",

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ jobs:
117117
node scripts/check-v32-gate4-reading-pipeline-proof-coverage.mjs --skip-branch-check
118118
node scripts/check-v32-gate5-ledger-btd-settlement-failure-states.mjs --skip-branch-check
119119
node scripts/check-v32-gate6-interface-contract-regression-suites.mjs --skip-branch-check
120+
node scripts/check-v32-gate7-browser-accessibility-responsive-visual-proof.mjs --skip-branch-check
120121
else
121122
echo "Unexpected BITCODE_SPEC.txt pointer: $POINTER" >&2
122123
exit 1
@@ -182,6 +183,7 @@ jobs:
182183
tests/terminalTransactionDetailCards.test.tsx \
183184
tests/terminalTransactionDetailSnapshot.test.ts \
184185
tests/terminalUxBrowserProof.test.tsx \
186+
tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts \
185187
tests/pipelineExecutionLogHeader.test.tsx \
186188
--runInBand
187189
@@ -191,6 +193,9 @@ jobs:
191193
- name: Browser proof Terminal cockpit
192194
run: pnpm --dir uapi run test:e2e:terminal-ux
193195

196+
- name: Browser proof Terminal and Auxillaries responsive accessibility
197+
run: pnpm --dir uapi run test:e2e:v32-browser-proof
198+
194199
- name: Test pipeline readback verifier
195200
run: pnpm test:qa:v28:pipeline-readback
196201

BITCODE_SPEC_V32.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,15 @@ The generated artifact is source-safe interface contract proof metadata only: it
287287
Gate 7 browser and visual proof precision:
288288

289289
- Browser proof must cover Terminal and Auxillaries default/guided/detail states across desktop and mobile viewports.
290+
Auxillaries browser proof uses the active Terminal-hosted entry points (`/terminal?auxillary-open-to=<pane>`), because `/auxillaries/*` remains a redirect/support carrier rather than a standalone application surface.
290291
- Accessibility assertions must cover keyboard path, labels, focus state, status announcements, contrast-sensitive tokens, reduced-motion behavior, and overflow/wrapping.
291292
- Visual proof must favor deterministic semantic checks and stable snapshots over brittle screenshot-only assertions.
292293

294+
Gate 7 closes its operator-surface proof with `.bitcode/v32-browser-accessibility-responsive-visual-proof.json`.
295+
That artifact is generated by `pnpm run generate:v32-browser-accessibility-responsive-visual-proof` and checked by `pnpm run check:v32-browser-accessibility-responsive-visual-proof` plus `pnpm run check:v32-gate7`.
296+
The focused Jest contract `uapi/tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts` and browser proof `uapi/tests/e2e/bitcode-browser-accessibility-responsive-proof.spec.ts` prove Terminal and Auxillaries default/guided/detail states, phone and desktop browser execution, keyboard path, landmark labels, focus state, status announcements, contrast-sensitive tokens, reduced-motion, overflow/wrapping, and `no-screenshot-only-approval` deterministic visual semantics.
297+
The generated artifact is source-safe browser proof metadata only; it must not store protected AssetPack source, credentials, private prompts, raw inference payloads, wallet secrets, Vercel tokens, OpenAI keys, or Supabase secret material.
298+
293299
Gate 8 readiness rehearsal precision:
294300

295301
- Local, staging-testnet, production-mainnet, and offline/disabled lanes are typed readiness records.

BITCODE_SPEC_V32_DELTA.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,10 +159,14 @@ Gate 7 expands operator-facing proof.
159159

160160
Closure acceptance:
161161

162-
- Terminal and Auxillaries guided/default/detail states are covered across desktop and mobile;
162+
- Terminal and Auxillaries guided/default/detail states are covered across desktop and mobile, with Auxillaries proved through the active Terminal-hosted support-plane entry points (`/terminal?auxillary-open-to=<pane>`);
163163
- keyboard, labels, focus, contrast, reduced motion, overflow, and visual regression evidence are deterministic enough for CI;
164164
- browser proofs avoid brittle screenshots where semantic assertions can prove the same behavior.
165165

166+
Gate 7 source closure is `.bitcode/v32-browser-accessibility-responsive-visual-proof.json`, generated by `pnpm run generate:v32-browser-accessibility-responsive-visual-proof` and checked by `pnpm run check:v32-browser-accessibility-responsive-visual-proof` plus `pnpm run check:v32-gate7`.
167+
The focused Jest test `uapi/tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts` and Playwright proof `uapi/tests/e2e/bitcode-browser-accessibility-responsive-proof.spec.ts` cover Terminal and Auxillaries default/guided/detail states, phone and desktop browser execution, accessibility assertions, overflow proof, reduced motion, and `no-screenshot-only-approval`.
168+
The artifact records browser proof metadata and source/test digests only.
169+
166170
### Gate 8: Testnet And Mainnet Readiness Rehearsal
167171

168172
Gate 8 rehearses environment readiness without approving value-bearing launch.

BITCODE_SPEC_V32_NOTES.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,12 @@ Harden API, MCP, ChatGPT App, Terminal, Auxillaries, and deferred-interface cont
104104

105105
Expand operator-facing proof:
106106

107-
- Terminal and Auxillaries default/guided/detail states across desktop and mobile;
107+
- Terminal and Terminal-hosted Auxillaries default/guided/detail states across desktop and mobile;
108108
- keyboard, labels, focus, contrast, reduced motion, overflow, and visual regression evidence;
109109
- semantic browser assertions where they are more stable than screenshots.
110+
- generated artifact `.bitcode/v32-browser-accessibility-responsive-visual-proof.json`;
111+
- generator command `pnpm run generate:v32-browser-accessibility-responsive-visual-proof`, checker command `pnpm run check:v32-browser-accessibility-responsive-visual-proof`, and gate closure command `pnpm run check:v32-gate7`;
112+
- focused Jest test `uapi/tests/bitcodeBrowserAccessibilityResponsiveProof.test.ts` and browser proof `uapi/tests/e2e/bitcode-browser-accessibility-responsive-proof.spec.ts` proving `no-screenshot-only-approval` visual semantics.
110113

111114
### Gate 8: Testnet And Mainnet Readiness Rehearsal
112115

0 commit comments

Comments
 (0)