@tokenoftrust/storefront-runner 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/package.json +1 -1
  2. package/scripts/lib/tenant-dirs.mjs +80 -0
  3. package/scripts/tenant/lint-embeds.mjs +180 -0
  4. package/scripts/tenant/materialize-tenant-content.mjs +533 -0
  5. package/scripts/tenant/validate.mjs +837 -0
  6. package/apps/storefront/scripts/build-v84-clean-clone-standalone.mjs +0 -68
  7. package/apps/storefront/scripts/deny-v84-clean-clone-standalone-capabilities.mjs +0 -111
  8. package/apps/storefront/scripts/deny-v84-dogfood-capabilities.mjs +0 -2
  9. package/apps/storefront/scripts/deny-v84-lifecycle-capabilities.mjs +0 -247
  10. package/apps/storefront/scripts/dogfood-v84-nonportable-routes.ts +0 -73
  11. package/apps/storefront/scripts/fixed-v84-native-install-producer.ts +0 -79
  12. package/apps/storefront/scripts/generated/v84-clean-clone-replay.bundle.mjs +0 -10982
  13. package/apps/storefront/scripts/import-v84-through-ws2.ts +0 -38
  14. package/apps/storefront/scripts/initialize-v84-lifecycle-tooling-dependency.ts +0 -2
  15. package/apps/storefront/scripts/initialize-v84-lifecycle-tooling.ts +0 -4
  16. package/apps/storefront/scripts/install-v84-native-through-ws1.ts +0 -185
  17. package/apps/storefront/scripts/prove-clone-isolation.ts +0 -506
  18. package/apps/storefront/scripts/replay-v84-clean-clone-pass.ts +0 -148
  19. package/apps/storefront/scripts/replay-v84-clean-clone-standalone.ts +0 -35
  20. package/apps/storefront/scripts/replay-v84-clean-clone.ts +0 -214
  21. package/apps/storefront/scripts/run-fixed-v84-native-install-producer.mjs +0 -18
  22. package/apps/storefront/scripts/run-v84-clone-isolation-proof.mjs +0 -18
  23. package/apps/storefront/scripts/run-v84-clone-lifecycle-proof.mjs +0 -18
  24. package/apps/storefront/scripts/run-v84-import-through-ws2-proof.mjs +0 -17
  25. package/apps/storefront/scripts/run-v84-nonportable-route-dogfood.mjs +0 -15
  26. package/apps/storefront/scripts/sanitize-v84-proof-environment.mjs +0 -21
  27. package/apps/storefront/scripts/v84CleanCloneGraphPin.ts +0 -42
  28. package/apps/storefront/scripts/v84CleanCloneSourceGraph.ts +0 -145
  29. package/apps/storefront/scripts/validate-v84-clone-lifecycle.ts +0 -18
  30. package/apps/storefront/src/components/admin/AdminAIWorkflowsTab.astro +0 -531
  31. package/apps/storefront/src/components/admin/AdminBlogDetailRail.astro +0 -878
  32. package/apps/storefront/src/components/admin/AdminBlogTab.astro +0 -1435
  33. package/apps/storefront/src/components/admin/AdminCheckoutSettingsPanel.astro +0 -226
  34. package/apps/storefront/src/components/admin/AdminCustomersTab.astro +0 -593
  35. package/apps/storefront/src/components/admin/AdminFulfillmentTab.astro +0 -465
  36. package/apps/storefront/src/components/admin/AdminIntegrationsTab.astro +0 -105
  37. package/apps/storefront/src/components/admin/AdminProductsTab.astro +0 -901
  38. package/apps/storefront/src/components/admin/AdminPublishTab.astro +0 -2983
  39. package/apps/storefront/src/components/admin/AdminReportingTab.astro +0 -435
  40. package/apps/storefront/src/components/admin/AdminSettingsTab.astro +0 -782
  41. package/apps/storefront/src/components/admin/AdminSubscriptionsTab.astro +0 -611
  42. package/apps/storefront/src/components/admin/orders/OrdersWorkspace.astro +0 -1223
  43. package/apps/storefront/src/lib/dev/cockpitStore.ts +0 -57
  44. package/apps/storefront/src/lib/publish/adminPublishTab.ts +0 -4625
  45. package/apps/storefront/src/lib/publish/apex-readiness.ts +0 -360
  46. package/apps/storefront/src/lib/publish/buildStream.ts +0 -269
  47. package/apps/storefront/src/lib/publish/collapsePersistence.ts +0 -72
  48. package/apps/storefront/src/lib/publish/dispatchHealth.ts +0 -267
  49. package/apps/storefront/src/lib/publish/domainState.ts +0 -360
  50. package/apps/storefront/src/lib/publish/lifecycleState.ts +0 -369
  51. package/apps/storefront/src/lib/publish/liveReleaseSummary.ts +0 -29
  52. package/apps/storefront/src/lib/publish/mergeDoctorOnFailure.ts +0 -78
  53. package/apps/storefront/src/lib/publish/mergeHealthBanner.ts +0 -62
  54. package/apps/storefront/src/lib/publish/mergeRowFindings.ts +0 -124
  55. package/apps/storefront/src/lib/publish/mergeSupportEscalation.ts +0 -75
  56. package/apps/storefront/src/lib/publish/panelPolling.ts +0 -78
  57. package/apps/storefront/src/lib/publish/publish-guard.ts +0 -88
  58. package/apps/storefront/src/lib/publish/publishFormat.ts +0 -165
  59. package/apps/storefront/src/lib/publish/publishHero.ts +0 -177
  60. package/apps/storefront/src/lib/publish/reviewRelease/changeState.ts +0 -66
  61. package/apps/storefront/src/lib/publish/reviewRelease/copy.ts +0 -141
  62. package/apps/storefront/src/lib/publish/reviewRelease/index.ts +0 -41
  63. package/apps/storefront/src/lib/publish/reviewRelease/permissions.ts +0 -47
  64. package/apps/storefront/src/lib/publish/reviewRelease/releaseState.ts +0 -42
  65. package/apps/storefront/src/lib/publish/reviewRelease/types.ts +0 -59
  66. package/apps/storefront/src/lib/publish/reviewRelease/viewModel.ts +0 -440
  67. package/apps/storefront/src/lib/publish/reviewReleaseWorkspace/actions.ts +0 -161
  68. package/apps/storefront/src/lib/publish/reviewReleaseWorkspace/controller.ts +0 -325
  69. package/apps/storefront/src/lib/publish/reviewReleaseWorkspace/render.ts +0 -241
  70. package/apps/storefront/src/lib/publish/shipWorkspace.ts +0 -439
  71. package/apps/storefront/src/lib/publish/sseRoute.ts +0 -119
  72. package/apps/storefront/src/lib/publish/stageBundleUpload.ts +0 -215
  73. package/apps/storefront/src/lib/publish/streamLogConsole.ts +0 -142
  74. package/apps/storefront/src/lib/publish/versionNumber.ts +0 -52
  75. package/apps/storefront/src/pages/admin/ops-timeline.astro +0 -420
  76. package/apps/storefront/src/pages/admin/review-release.astro +0 -265
  77. package/apps/storefront/src/pages/admin/select.astro +0 -96
  78. package/apps/storefront/src/pages/admin.astro +0 -570
  79. package/apps/storefront/src/pages/api/apps/admin/credentials/rotate.ts +0 -86
  80. package/apps/storefront/src/pages/api/apps/admin/gtm-migration-install.ts +0 -174
  81. package/apps/storefront/src/pages/api/apps/admin/gtm-migration.ts +0 -96
  82. package/apps/storefront/src/pages/api/apps/admin/health.ts +0 -44
  83. package/apps/storefront/src/pages/api/apps/admin/install.ts +0 -125
  84. package/apps/storefront/src/pages/api/apps/admin/integration-lifecycle.ts +0 -118
  85. package/apps/storefront/src/pages/api/apps/admin/integrations.ts +0 -89
  86. package/apps/storefront/src/pages/api/apps/admin/list.ts +0 -26
  87. package/apps/storefront/src/pages/api/apps/admin/platform-adapters.ts +0 -85
  88. package/apps/storefront/src/pages/api/apps/admin/resume.ts +0 -79
  89. package/apps/storefront/src/pages/api/apps/admin/suspend.ts +0 -80
  90. package/apps/storefront/src/pages/api/apps/admin/uninstall.ts +0 -98
  91. package/apps/storefront/src/pages/api/apps/admin/update.ts +0 -126
  92. package/apps/storefront/src/pages/api/apps/admin/webhooks/deliveries/[deliveryId]/replay.ts +0 -70
  93. package/apps/storefront/src/pages/api/apps/admin/webhooks/deliveries.ts +0 -51
  94. package/apps/storefront/src/pages/api/apps/internal/order-forward.ts +0 -255
  95. package/apps/storefront/src/pages/api/apps/oauth/token.ts +0 -87
  96. package/apps/storefront/src/pages/api/apps/v1/attribution.ts +0 -162
  97. package/apps/storefront/src/pages/api/apps/v1/catalog/products/[handle].ts +0 -39
  98. package/apps/storefront/src/pages/api/apps/v1/catalog/products.ts +0 -49
  99. package/apps/storefront/src/pages/api/apps/v1/health.ts +0 -32
  100. package/apps/storefront/src/pages/api/apps/v1/inventory.ts +0 -59
  101. package/apps/storefront/src/pages/api/apps/v1/orders/[id].ts +0 -48
  102. package/apps/storefront/src/pages/api/apps/v1/orders.ts +0 -73
  103. package/apps/storefront/src/pages/api/apps/v1/reports.ts +0 -21
  104. package/apps/storefront/src/pages/api/apps/v1/webhooks/deliveries/[deliveryId]/replay.ts +0 -74
  105. package/apps/storefront/src/pages/api/apps/v1/webhooks/deliveries.ts +0 -47
  106. package/apps/storefront/src/pages/api/cache-purge.ts +0 -55
  107. package/apps/storefront/src/pages/api/compliance/tamper.ts +0 -88
  108. package/apps/storefront/src/pages/api/dashboard/enter-vendor.ts +0 -154
  109. package/apps/storefront/src/pages/api/dashboard/vendor-search.ts +0 -120
  110. package/apps/storefront/src/pages/api/integrations/v1/[operation].ts +0 -108
  111. package/apps/storefront/src/pages/api/publish/stage-bundle.ts +0 -70
  112. package/apps/storefront/src/pages/api/test/dev-session.ts +0 -133
  113. package/apps/storefront/src/pages/cockpit.astro +0 -1548
  114. package/apps/storefront/src/pages/dashboard/[appDomain]/apps/index.astro +0 -119
  115. package/apps/storefront/src/pages/dashboard/[appDomain]/index.astro +0 -105
  116. package/apps/storefront/src/pages/dashboard/[appDomain]/team.astro +0 -177
  117. package/apps/storefront/src/pages/dashboard/index.astro +0 -160
@@ -1,214 +0,0 @@
1
- /** Validate and compose two exact passes produced by one attested immutable execution snapshot. */
2
- import { createHash } from "node:crypto";
3
- import {
4
- V84_CLEAN_CLONE_GRAPH_COUNT,
5
- V84_CLEAN_CLONE_GRAPH_SHA256,
6
- V84_CLEAN_CLONE_LAUNCHER_ENTRY,
7
- type V84CleanCloneGraphIdentity,
8
- } from "./v84CleanCloneGraphPin.js";
9
-
10
- const SOURCE = "tokenoftrust.com";
11
- const CLONE = "tokenoftrust.com~clone~gtm-migration-v84";
12
- const SESSION = "offline-v84-shared-clone-session";
13
- const FAILURE = "The fixed clean-clone replay failed safely.";
14
- const STAGE_ORDER = ["import", "native", "dogfood", "lifecycle"] as const;
15
-
16
- type Json = null | boolean | number | string | Json[] | { [key: string]: Json };
17
- function digest(value: string): string {
18
- return createHash("sha256").update(value).digest("hex");
19
- }
20
- function assertSafe(condition: unknown): asserts condition {
21
- if (!condition) throw new Error(FAILURE);
22
- }
23
- function validateJson(value: unknown): asserts value is Json {
24
- if (value === null || typeof value === "string" || typeof value === "boolean") return;
25
- if (typeof value === "number") return assertSafe(Number.isFinite(value));
26
- assertSafe(typeof value === "object");
27
- if (Array.isArray(value)) return value.forEach(validateJson);
28
- assertSafe(Object.getPrototypeOf(value) === Object.prototype);
29
- for (const [key, child] of Object.entries(value)) {
30
- assertSafe(!["__proto__", "prototype", "constructor"].includes(key));
31
- validateJson(child);
32
- }
33
- }
34
- function object(value: unknown): Record<string, Json> {
35
- validateJson(value);
36
- assertSafe(value !== null && !Array.isArray(value) && typeof value === "object");
37
- return value;
38
- }
39
- function at(root: unknown, ...keys: readonly (string | number)[]): Json {
40
- let current = root as Json;
41
- for (const key of keys) {
42
- if (typeof key === "number") {
43
- assertSafe(Array.isArray(current) && key in current);
44
- current = current[key]!;
45
- } else {
46
- assertSafe(current !== null && !Array.isArray(current) && typeof current === "object" && key in current);
47
- current = current[key]!;
48
- }
49
- }
50
- return current;
51
- }
52
- function arrayAt(root: unknown, ...keys: readonly (string | number)[]): Json[] {
53
- const value = at(root, ...keys);
54
- assertSafe(Array.isArray(value));
55
- return value;
56
- }
57
- function validateSanitized(canonical: string): void {
58
- assertSafe(!/(?:\/Users\/|\\Users\\|\/home\/|storefront-issue-|[A-Z]:\\)/i.test(canonical));
59
- assertSafe(!/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/i.test(canonical));
60
- assertSafe(!/(?:-----BEGIN [A-Z ]+ PRIVATE KEY-----|\bBearer\s+[A-Za-z0-9._~-]+)/i.test(canonical));
61
- }
62
- function validateScope(evidence: Json, sourceMode: string, destinationMode: string): void {
63
- assertSafe(at(evidence, "scope", "sourceTenant") === SOURCE);
64
- assertSafe(at(evidence, "scope", "sourceMode") === sourceMode);
65
- assertSafe(at(evidence, "scope", "cloneTenant") === CLONE);
66
- assertSafe(at(evidence, "scope", "destinationMode") === destinationMode);
67
- }
68
-
69
- /** Validate that all product evidence belongs to one active, ordered clone session. */
70
- export function validateComposedV84Pass(unsafe: unknown): asserts unsafe is Json {
71
- const evidence = object(unsafe);
72
- validateScope(evidence, "read-only-fixed-fixture", "offline-in-memory-fake-local-only");
73
- assertSafe(at(evidence, "proof") === "ws3-composed-clean-clone-pass");
74
- assertSafe(at(evidence, "stateHandoff", "startsAbsent") === true);
75
- assertSafe(at(evidence, "stateHandoff", "provisioned", "state") === "active");
76
- assertSafe(at(evidence, "stateHandoff", "provisioned", "cloneTenant") === CLONE);
77
- assertSafe(at(evidence, "stateHandoff", "activeThroughFinalStage") === true);
78
- const immutable = at(evidence, "stateHandoff", "immutableExecution");
79
- assertSafe(at(immutable, "exactBytesReadOnceAndExecuted") === true);
80
- assertSafe(at(immutable, "sourceGraphCount") === V84_CLEAN_CLONE_GRAPH_COUNT);
81
- assertSafe(at(immutable, "sourceGraphSha256") === V84_CLEAN_CLONE_GRAPH_SHA256);
82
- const snapshotSha256 = at(immutable, "executionSnapshotSha256");
83
- assertSafe(typeof snapshotSha256 === "string" && /^[a-f0-9]{64}$/.test(snapshotSha256));
84
- const executionLedger = arrayAt(immutable, "ledger");
85
- assertSafe(executionLedger.length === STAGE_ORDER.length);
86
- const ledger = arrayAt(evidence, "stateHandoff", "stageLedger");
87
- assertSafe(ledger.length === STAGE_ORDER.length);
88
- for (let index = 0; index < STAGE_ORDER.length; index += 1) {
89
- const row = ledger[index]!;
90
- const stage = STAGE_ORDER[index]!;
91
- const executionRow = executionLedger[index]!;
92
- assertSafe(at(executionRow, "stage") === stage);
93
- assertSafe(at(executionRow, "sourceGraphCount") === V84_CLEAN_CLONE_GRAPH_COUNT);
94
- assertSafe(at(executionRow, "sourceGraphSha256") === V84_CLEAN_CLONE_GRAPH_SHA256);
95
- assertSafe(at(executionRow, "executionSnapshotSha256") === snapshotSha256);
96
- assertSafe(at(row, "stage") === stage);
97
- assertSafe(at(row, "cloneTenant") === CLONE);
98
- assertSafe(at(row, "cloneState") === "active");
99
- assertSafe(at(row, "sessionId") === SESSION);
100
- assertSafe(at(row, "sharedStateKeyCount") === [1, 5, 9, 4][index]);
101
- assertSafe(at(row, "evidenceSha256") === at(evidence, "stages", stage, "evidenceSha256"));
102
- const stageEvidence = at(evidence, "stages", stage, "evidence");
103
- assertSafe(at(row, "evidenceSha256") === `sha256:${digest(JSON.stringify(stageEvidence))}`);
104
- }
105
- assertSafe(arrayAt(evidence, "stateHandoff", "cleanup", "cloneResidual", "kvKeys").length === 0);
106
- assertSafe(arrayAt(evidence, "stateHandoff", "cleanup", "cloneResidual", "r2Keys").length === 0);
107
- assertSafe(at(evidence, "stateHandoff", "cleanup", "sourcePreserved") === true);
108
- const deletedKvKeys = arrayAt(evidence, "stateHandoff", "cleanup", "kvKeysDeleted");
109
- for (const required of [
110
- "shared-state:stage/import/handoff",
111
- "shared-state:stage/native/drafts/",
112
- "shared-state:stage/native/installs/",
113
- "shared-state:stage/native/handoff",
114
- "shared-state:stage/dogfood/artifacts/",
115
- "shared-state:stage/dogfood/handoff",
116
- "shared-state:stage/lifecycle/materialization/",
117
- "shared-state:stage/lifecycle/cache/",
118
- "shared-state:stage/lifecycle/handoff",
119
- ]) {
120
- assertSafe(deletedKvKeys.some((key) => typeof key === "string" && key.includes(required)));
121
- }
122
- assertSafe(at(evidence, "sourceInvariant", "fixtureSha256Before") === at(evidence, "sourceInvariant", "fixtureSha256After"));
123
- assertSafe(at(evidence, "sourceInvariant", "sourceStateBefore") === at(evidence, "sourceInvariant", "sourceStateAtFinalStage"));
124
- assertSafe(at(evidence, "sourceInvariant", "sourceStateBefore") === at(evidence, "sourceInvariant", "sourceStateAfterCleanup"));
125
- assertSafe(at(evidence, "sourceInvariant", "sourceWrites") === 0);
126
- assertSafe(at(evidence, "sourceInvariant", "unchanged") === true);
127
- const imported = at(evidence, "stages", "import", "evidence");
128
- validateScope(imported, "read-only-fixture", "offline-in-memory-only");
129
- assertSafe(at(imported, "accounting", "accountedTotal") === 89);
130
- assertSafe(arrayAt(imported, "codeExecutionUnsupported").length === 8);
131
- assertSafe(at(imported, "safety", "sourceMutationCount") === 0);
132
- assertSafe(at(imported, "safety", "networkRequestCount") === 0);
133
- assertSafe(at(imported, "safety", "importedCodeExecuted") === false);
134
- const native = at(evidence, "stages", "native", "evidence");
135
- validateScope(native, "read-only", "offline-in-memory-fake-only");
136
- assertSafe(arrayAt(native, "installations").length === 2);
137
- assertSafe(at(native, "safety", "liveDestinationCount") === 0);
138
- assertSafe(at(native, "safety", "externalNetworkRequestCount") === 0);
139
- assertSafe(at(native, "operationCounts", "publish") === 0);
140
- const dogfood = at(evidence, "stages", "dogfood", "evidence");
141
- validateScope(dogfood, "read-only-fixture", "fake-local-only");
142
- assertSafe(arrayAt(dogfood, "ledger").length === 8);
143
- assertSafe(at(dogfood, "summary", "retired") === 3);
144
- assertSafe(at(dogfood, "summary", "evidenceRejected") === 5);
145
- assertSafe(at(dogfood, "summary", "unexplainedNotInstalled") === 0);
146
- assertSafe(at(dogfood, "safety", "externalNetworkRequests") === 0);
147
- assertSafe(at(dogfood, "safety", "dataLayerTouched") === false);
148
- const lifecycle = at(evidence, "stages", "lifecycle", "evidence");
149
- validateScope(lifecycle, "read-only", "offline-in-memory-callback-only");
150
- assertSafe(at(lifecycle, "disabledDrafts", "materializedCount") === 0);
151
- assertSafe(at(lifecycle, "operationCounts", "sourceWrites") === 0);
152
- assertSafe(at(lifecycle, "operationCounts", "externalNetworkRequests") === 0);
153
- assertSafe(at(lifecycle, "operationCounts", "lifecycleMutations") === 0);
154
- assertSafe(at(lifecycle, "operationCounts", "publishes") === 0);
155
- assertSafe(at(evidence, "result") === "pass");
156
- }
157
-
158
- export function composeV84CleanCloneReplayEvidence(
159
- firstUnsafe: unknown,
160
- secondUnsafe: unknown,
161
- graph: V84CleanCloneGraphIdentity,
162
- executionSnapshotSha256: string,
163
- ) {
164
- const firstCanonical = JSON.stringify(firstUnsafe);
165
- const secondCanonical = JSON.stringify(secondUnsafe);
166
- const first = object(JSON.parse(firstCanonical) as unknown);
167
- const second = object(JSON.parse(secondCanonical) as unknown);
168
- validateSanitized(firstCanonical);
169
- validateSanitized(secondCanonical);
170
- validateComposedV84Pass(first);
171
- validateComposedV84Pass(second);
172
- assertSafe(firstCanonical === secondCanonical);
173
- assertSafe(graph.count === V84_CLEAN_CLONE_GRAPH_COUNT && graph.sha256 === V84_CLEAN_CLONE_GRAPH_SHA256);
174
- assertSafe(/^[a-f0-9]{64}$/.test(executionSnapshotSha256));
175
- assertSafe(at(first, "stateHandoff", "immutableExecution", "executionSnapshotSha256") === executionSnapshotSha256);
176
- const passEvidenceSha256 = digest(firstCanonical);
177
- const pass = first;
178
- return {
179
- schemaVersion: 2 as const,
180
- proof: "ws3-composed-clean-clone-complete-replay" as const,
181
- scope: at(pass, "scope"),
182
- commandPin: {
183
- entry: V84_CLEAN_CLONE_LAUNCHER_ENTRY,
184
- resolvedSourceCount: graph.count,
185
- resolvedSourceGraphSha256: graph.sha256,
186
- executionSnapshotSha256,
187
- composedPassEvidenceSha256: passEvidenceSha256,
188
- exactBytesReadOnceAndExecuted: true as const,
189
- runtimeTooling: "none" as const,
190
- },
191
- replay: { passes: 2 as const, exact: true as const },
192
- stateHandoff: at(pass, "stateHandoff"),
193
- sourceInvariant: at(pass, "sourceInvariant"),
194
- accounting: at(pass, "stages", "import", "evidence", "accounting"),
195
- nativeInstallSummary: {
196
- count: arrayAt(pass, "stages", "native", "evidence", "installations").length,
197
- lifecycle: at(pass, "stages", "native", "evidence", "safety", "lifecycle"),
198
- liveDestinationCount: at(pass, "stages", "native", "evidence", "safety", "liveDestinationCount"),
199
- },
200
- eightRouteLedger: at(pass, "stages", "dogfood", "evidence", "ledger"),
201
- eightRouteSummary: at(pass, "stages", "dogfood", "evidence", "summary"),
202
- lifecycleSummary: {
203
- disabledDrafts: at(pass, "stages", "lifecycle", "evidence", "disabledDrafts"),
204
- operationCounts: at(pass, "stages", "lifecycle", "evidence", "operationCounts"),
205
- },
206
- safety: {
207
- externalNetworkRequests: 0 as const, liveSecretsUsed: 0 as const,
208
- productionActions: 0 as const, sourceMutations: 0 as const,
209
- importedCodeExecuted: false as const, originalMarkupRendered: false as const,
210
- runtimeLoaderInitialized: false as const, dataLayerTouched: false as const,
211
- },
212
- result: "pass" as const,
213
- };
214
- }
@@ -1,18 +0,0 @@
1
- /** Trusted plain-JavaScript bootstrap for the frozen v84 native-install producer. */
2
- if (process.argv.length !== 2) {
3
- process.stderr.write("refused: fixed-input native-install evidence accepts no arguments\n");
4
- process.exitCode = 64;
5
- } else try {
6
- const { sanitizeV84ProofEnvironment } = await import("./sanitize-v84-proof-environment.mjs");
7
- sanitizeV84ProofEnvironment();
8
- await import("tsx");
9
- const { tsImport } = await import("tsx/esm/api");
10
- const tooling = await tsImport("./initialize-v84-lifecycle-tooling.ts", import.meta.url);
11
- if (tooling.V84_LIFECYCLE_TOOLING_READY !== true) throw new Error("tooling unavailable");
12
- await import("./deny-v84-lifecycle-capabilities.mjs");
13
- const producer = await tsImport("./install-v84-native-through-ws1.ts", import.meta.url);
14
- process.stdout.write(`${JSON.stringify(await producer.buildFixedV84NativeInstallEvidence(), null, 2)}\n`);
15
- } catch {
16
- process.stderr.write("refused: fixed native-install evidence unavailable\n");
17
- process.exitCode = 70;
18
- }
@@ -1,18 +0,0 @@
1
- /** Capability-denied bootstrap for the fixed offline clone isolation proof. */
2
- if (process.argv.length !== 2) {
3
- process.stderr.write("refused: fixed-input clone-isolation command accepts no arguments\n");
4
- process.exitCode = 64;
5
- } else try {
6
- const { sanitizeV84ProofEnvironment } = await import("./sanitize-v84-proof-environment.mjs");
7
- sanitizeV84ProofEnvironment();
8
- await import("tsx");
9
- const { tsImport } = await import("tsx/esm/api");
10
- const tooling = await tsImport("./initialize-v84-lifecycle-tooling.ts", import.meta.url);
11
- if (tooling.V84_LIFECYCLE_TOOLING_READY !== true) throw new Error("tooling unavailable");
12
- await import("./deny-v84-lifecycle-capabilities.mjs");
13
- const proof = await tsImport("./prove-clone-isolation.ts", import.meta.url);
14
- process.stdout.write(`${JSON.stringify(await proof.runOfflineCloneIsolationProof(), null, 2)}\n`);
15
- } catch {
16
- process.stderr.write("refused: fixed clone-isolation evidence unavailable\n");
17
- process.exitCode = 70;
18
- }
@@ -1,18 +0,0 @@
1
- /** Trusted plain-JavaScript bootstrap for the fixed v84 lifecycle proof. */
2
- try {
3
- const { sanitizeV84ProofEnvironment } = await import("./sanitize-v84-proof-environment.mjs");
4
- sanitizeV84ProofEnvironment();
5
- await import("tsx");
6
- const { tsImport } = await import("tsx/esm/api");
7
- const tooling = await tsImport("./initialize-v84-lifecycle-tooling.ts", import.meta.url);
8
- if (tooling.V84_LIFECYCLE_TOOLING_READY !== true) throw new Error("tooling unavailable");
9
- Object.defineProperty(globalThis, Symbol.for("tot.v84.lifecycle-producer-capability"), {
10
- configurable: true,
11
- value: "allow-exact-native-install-producer",
12
- });
13
- await import("./deny-v84-lifecycle-capabilities.mjs");
14
- await tsImport("./validate-v84-clone-lifecycle.ts", import.meta.url);
15
- } catch {
16
- process.stderr.write("refused: fixed lifecycle evidence unavailable\n");
17
- process.exitCode = 70;
18
- }
@@ -1,17 +0,0 @@
1
- /** Capability-denied bootstrap for the fixed offline WS2 import proof. */
2
- if (process.argv.length !== 2) {
3
- process.stderr.write("refused: fixed-input WS2 import command accepts no arguments\n");
4
- process.exitCode = 64;
5
- } else try {
6
- const { sanitizeV84ProofEnvironment } = await import("./sanitize-v84-proof-environment.mjs");
7
- sanitizeV84ProofEnvironment();
8
- await import("tsx");
9
- const { tsImport } = await import("tsx/esm/api");
10
- const tooling = await tsImport("./initialize-v84-lifecycle-tooling.ts", import.meta.url);
11
- if (tooling.V84_LIFECYCLE_TOOLING_READY !== true) throw new Error("tooling unavailable");
12
- await import("./deny-v84-lifecycle-capabilities.mjs");
13
- await tsImport("./import-v84-through-ws2.ts", import.meta.url);
14
- } catch {
15
- process.stderr.write("refused: fixed WS2 import evidence unavailable\n");
16
- process.exitCode = 70;
17
- }
@@ -1,15 +0,0 @@
1
- /** Capability-denied bootstrap for the fixed v84 eight-route dogfood proof. */
2
- try {
3
- // No caller environment survives into the proof; live secrets cannot be read.
4
- const { sanitizeV84ProofEnvironment } = await import("./sanitize-v84-proof-environment.mjs");
5
- sanitizeV84ProofEnvironment();
6
- await import("tsx");
7
- const { tsImport } = await import("tsx/esm/api");
8
- const tooling = await tsImport("./initialize-v84-lifecycle-tooling.ts", import.meta.url);
9
- if (tooling.V84_LIFECYCLE_TOOLING_READY !== true) throw new Error("tooling unavailable");
10
- await import("./deny-v84-dogfood-capabilities.mjs");
11
- await tsImport("./dogfood-v84-nonportable-routes.ts", import.meta.url);
12
- } catch {
13
- process.stderr.write("refused: fixed nonportable-route dogfood unavailable\n");
14
- process.exitCode = 70;
15
- }
@@ -1,21 +0,0 @@
1
- /** Reduce the native process environment to the one fixed proof setting. */
2
- export function sanitizeV84ProofEnvironment() {
3
- const environment = process.env;
4
- const inheritedKeys = Reflect.ownKeys(environment);
5
- for (const key of inheritedKeys) {
6
- if (typeof key !== "string" || !Reflect.deleteProperty(environment, key)) {
7
- throw new Error("proof environment unavailable");
8
- }
9
- }
10
- if (Reflect.ownKeys(environment).length !== 0) {
11
- throw new Error("proof environment unavailable");
12
- }
13
- environment.TSX_DISABLE_CACHE = "1";
14
- const descriptors = Object.getOwnPropertyDescriptors(environment);
15
- const keys = Reflect.ownKeys(descriptors);
16
- const descriptor = descriptors.TSX_DISABLE_CACHE;
17
- if (keys.length !== 1 || keys[0] !== "TSX_DISABLE_CACHE" || descriptor === undefined ||
18
- !("value" in descriptor) || descriptor.value !== "1") {
19
- throw new Error("proof environment unavailable");
20
- }
21
- }
@@ -1,42 +0,0 @@
1
- import { dirname, resolve } from "node:path";
2
- import { fileURLToPath } from "node:url";
3
- import { resolveV84CleanCloneSourceGraph } from "./v84CleanCloneSourceGraph.js";
4
-
5
- export const V84_CLEAN_CLONE_LAUNCHER_ENTRY =
6
- "scripts/diag/rerun-v84-clean-clone.sh" as const;
7
- export const V84_CLEAN_CLONE_BOOTSTRAP_ENTRY =
8
- "scripts/diag/run-v84-clean-clone-attested.cjs" as const;
9
- export const V84_CLEAN_CLONE_STANDALONE_SOURCE_ENTRY =
10
- "apps/storefront/scripts/replay-v84-clean-clone-standalone.ts" as const;
11
- export const V84_CLEAN_CLONE_BUILD_ENTRY =
12
- "apps/storefront/scripts/build-v84-clean-clone-standalone.mjs" as const;
13
- export const V84_CLEAN_CLONE_GRAPH_COUNT = 191;
14
- export const V84_CLEAN_CLONE_GRAPH_SHA256 =
15
- "dc9fb2e28b7d8041ca901ae2df204ab34da1eb957cd88f75437361e42491e566" as const;
16
-
17
- export interface V84CleanCloneGraphIdentity {
18
- readonly paths: readonly string[];
19
- readonly count: number;
20
- readonly sha256: string;
21
- }
22
-
23
- export function resolvePinnedV84CleanCloneGraph(): V84CleanCloneGraphIdentity {
24
- const storefrontDir = dirname(dirname(fileURLToPath(import.meta.url)));
25
- const repositoryRoot = resolve(storefrontDir, "../..");
26
- return resolveV84CleanCloneSourceGraph(repositoryRoot, [
27
- V84_CLEAN_CLONE_LAUNCHER_ENTRY,
28
- V84_CLEAN_CLONE_BOOTSTRAP_ENTRY,
29
- V84_CLEAN_CLONE_STANDALONE_SOURCE_ENTRY,
30
- V84_CLEAN_CLONE_BUILD_ENTRY,
31
- ]);
32
- }
33
-
34
- export function assertPinnedV84CleanCloneGraph(
35
- resolveGraph: () => V84CleanCloneGraphIdentity = resolvePinnedV84CleanCloneGraph,
36
- ): V84CleanCloneGraphIdentity {
37
- const graph = resolveGraph();
38
- if (graph.count !== V84_CLEAN_CLONE_GRAPH_COUNT || graph.sha256 !== V84_CLEAN_CLONE_GRAPH_SHA256) {
39
- throw new Error("The fixed clean-clone graph changed.");
40
- }
41
- return graph;
42
- }
@@ -1,145 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
3
- import { dirname, extname, relative, resolve, sep } from "node:path";
4
-
5
- const TOOLCHAIN_FILES = [
6
- "package.json",
7
- "pnpm-lock.yaml",
8
- "pnpm-workspace.yaml",
9
- "apps/storefront/package.json",
10
- "apps/storefront/tsconfig.json",
11
- ] as const;
12
- const IMPORT_PATTERN = /(?:from\s+|import\s*(?:\(\s*)?|tsImport\s*\(\s*|require(?:\.resolve)?\s*\(\s*)["'`]([^"'`]+)["'`]/g;
13
- const URL_PATTERN = /new\s+URL\s*\(\s*["'`]([^"'`]+)["'`]\s*,\s*import\.meta\.url\s*\)/g;
14
-
15
- function sha256(value: string): string {
16
- return createHash("sha256").update(value).digest("hex");
17
- }
18
-
19
- function canonicalSource(path: string, repositoryRoot: string): string {
20
- const source = readFileSync(path, "utf8");
21
- const relativePath = relative(repositoryRoot, path).split(sep).join("/");
22
- if (relativePath === "apps/storefront/scripts/v84CleanCloneGraphPin.ts") {
23
- const canonical = source.replace(
24
- /(V84_CLEAN_CLONE_GRAPH_SHA256\s*=\s*")[a-f0-9]{64}("\s+as const)/,
25
- "$1<self-pinned-graph-sha256>$2",
26
- );
27
- if (canonical === source) throw new Error("The clean-clone graph self-pin could not be canonicalized.");
28
- return canonical;
29
- }
30
- if (relativePath === "scripts/diag/rerun-v84-clean-clone.sh") {
31
- const canonical = source.replace(
32
- /(expected_artifact_sha256=)[a-f0-9]{64}/,
33
- "$1<self-pinned-replay-artifact-sha256>",
34
- );
35
- if (canonical === source) throw new Error("The clean-clone replay artifact pin could not be canonicalized.");
36
- return canonical;
37
- }
38
- if (relativePath === "scripts/diag/run-v84-clean-clone-attested.cjs") {
39
- const canonical = source.replace(
40
- /(const expected = ")[a-f0-9]{64}(";)/,
41
- "$1<self-pinned-execution-snapshot-sha256>$2",
42
- );
43
- if (canonical === source) throw new Error("The clean-clone bootstrap snapshot pin could not be canonicalized.");
44
- return canonical;
45
- }
46
- return source;
47
- }
48
-
49
- function workspacePackages(repositoryRoot: string) {
50
- const packages = new Map<string, { root: string; packageJson: string; manifest: Record<string, unknown> }>();
51
- for (const parent of ["apps", "packages"]) {
52
- const parentPath = resolve(repositoryRoot, parent);
53
- for (const child of readdirSync(parentPath, { withFileTypes: true })) {
54
- if (!child.isDirectory()) continue;
55
- const root = resolve(parentPath, child.name);
56
- const packageJson = resolve(root, "package.json");
57
- if (!existsSync(packageJson)) continue;
58
- const manifest = JSON.parse(readFileSync(packageJson, "utf8")) as Record<string, unknown>;
59
- if (typeof manifest.name === "string") packages.set(manifest.name, { root, packageJson, manifest });
60
- }
61
- }
62
- return packages;
63
- }
64
-
65
- function candidatePaths(target: string): string[] {
66
- const extension = extname(target);
67
- if (extension === ".js") return [target, `${target.slice(0, -3)}.ts`, `${target.slice(0, -3)}.mjs`];
68
- if (extension) return [target];
69
- return [target, `${target}.ts`, `${target}.mjs`, `${target}.js`, `${target}.json`, resolve(target, "index.ts")];
70
- }
71
-
72
- function exactFile(target: string): string {
73
- const found = candidatePaths(target).find((path) => existsSync(path) && statSync(path).isFile());
74
- if (!found) throw new Error("The clean-clone executable import graph could not be resolved.");
75
- return found;
76
- }
77
-
78
- function exportTarget(exportsValue: unknown, key: string): string | null {
79
- if (typeof exportsValue === "string" && key === ".") return exportsValue;
80
- if (!exportsValue || typeof exportsValue !== "object" || Array.isArray(exportsValue)) return null;
81
- const selected = (exportsValue as Record<string, unknown>)[key];
82
- if (typeof selected === "string") return selected;
83
- if (!selected || typeof selected !== "object" || Array.isArray(selected)) return null;
84
- const conditions = selected as Record<string, unknown>;
85
- for (const condition of ["import", "default", "types"]) {
86
- if (typeof conditions[condition] === "string") return conditions[condition];
87
- }
88
- return null;
89
- }
90
-
91
- function resolveSpecifier(
92
- specifier: string,
93
- importer: string,
94
- repositoryRoot: string,
95
- packages: ReturnType<typeof workspacePackages>,
96
- ): string[] {
97
- const clean = specifier.split(/[?#]/, 1)[0]!;
98
- if (clean.startsWith("node:") || /^[a-z]+:/i.test(clean)) return [];
99
- if (clean.startsWith(".")) return [exactFile(resolve(dirname(importer), clean))];
100
- if (clean.startsWith("@/")) return [exactFile(resolve(repositoryRoot, "apps/storefront/src", clean.slice(2)))];
101
- const matched = [...packages.entries()]
102
- .sort(([left], [right]) => right.length - left.length)
103
- .find(([name]) => clean === name || clean.startsWith(`${name}/`));
104
- if (!matched) return [];
105
- const [name, workspace] = matched;
106
- const subpath = clean === name ? "." : `.${clean.slice(name.length)}`;
107
- const target = exportTarget(workspace.manifest.exports, subpath) ??
108
- (subpath === "." && typeof workspace.manifest.main === "string" ? workspace.manifest.main : null);
109
- if (!target) throw new Error("The clean-clone workspace barrel could not be resolved.");
110
- return [workspace.packageJson, exactFile(resolve(workspace.root, target))];
111
- }
112
-
113
- function insideRepository(path: string, repositoryRoot: string): boolean {
114
- const tail = relative(repositoryRoot, path);
115
- return tail !== "" && tail !== ".." && !tail.startsWith(`..${sep}`) && !resolve(path).includes(`${sep}node_modules${sep}`);
116
- }
117
-
118
- export function resolveV84CleanCloneSourceGraph(repositoryRoot: string, entries: readonly string[]) {
119
- const packages = workspacePackages(repositoryRoot);
120
- const seen = new Set<string>();
121
- const pending = [
122
- ...TOOLCHAIN_FILES.map((path) => resolve(repositoryRoot, path)),
123
- ...entries.map((path) => resolve(repositoryRoot, path)),
124
- ];
125
- while (pending.length > 0) {
126
- const path = exactFile(pending.pop()!);
127
- if (seen.has(path)) continue;
128
- if (!insideRepository(path, repositoryRoot)) throw new Error("The clean-clone source graph escaped the repository.");
129
- seen.add(path);
130
- const source = readFileSync(path, "utf8");
131
- const specifiers = [
132
- ...[...source.matchAll(IMPORT_PATTERN)].map((match) => match[1]!),
133
- ...[...source.matchAll(URL_PATTERN)].map((match) => match[1]!),
134
- ];
135
- for (const specifier of specifiers) {
136
- for (const resolved of resolveSpecifier(specifier, path, repositoryRoot, packages)) pending.push(resolved);
137
- }
138
- }
139
- const paths = [...seen].sort();
140
- const canonical = JSON.stringify(paths.map((path) => [
141
- relative(repositoryRoot, path).split(sep).join("/"),
142
- canonicalSource(path, repositoryRoot),
143
- ]));
144
- return { paths, count: paths.length, sha256: sha256(canonical) };
145
- }
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env node
2
- /** Fixed-input lifecycle proof composed from the frozen offline native-install producer. */
3
- import { readFixedV84NativeInstallEvidence } from "./fixed-v84-native-install-producer.js";
4
- import { buildV84CloneLifecycleEvidence } from "../src/lib/apps/v84CloneLifecycleEvidence.js";
5
-
6
- if (process.argv.length !== 2) {
7
- process.stderr.write("refused: fixed-input lifecycle command accepts no arguments\n");
8
- process.exit(64);
9
- }
10
-
11
- try {
12
- const nativeEvidence = readFixedV84NativeInstallEvidence();
13
- const evidence = await buildV84CloneLifecycleEvidence(nativeEvidence);
14
- process.stdout.write(`${JSON.stringify(evidence, null, 2)}\n`);
15
- } catch {
16
- process.stderr.write("refused: fixed lifecycle evidence unavailable\n");
17
- process.exit(70);
18
- }