@wenathlan/saddle 2.0.154 → 2.0.159

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 (314) hide show
  1. package/Dockerfile +167 -1334
  2. package/README.md +59 -60
  3. package/biome.jsonc +3 -3
  4. package/browser.ts +482 -0
  5. package/cli.ts +274 -0
  6. package/distribution.ts +731 -0
  7. package/docker.config +29 -8
  8. package/docs/{architecture.1.8.19.mmd → architecture1819.md} +6 -0
  9. package/docs/artifactavailability.md +2 -2
  10. package/docs/browser.md +18 -1
  11. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  12. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  13. package/docs/extension.md +13 -2
  14. package/docs/features.md +5 -0
  15. package/docs/libraryapi.md +1 -1
  16. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  17. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  18. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  19. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  20. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  21. package/docs/todo.md +2 -2
  22. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  23. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  24. package/execution.ts +677 -0
  25. package/foundation.ts +314 -0
  26. package/index.ts +36 -34
  27. package/isolation.ts +84 -0
  28. package/modalityregistry.ts +189 -145
  29. package/modes.ts +170 -0
  30. package/mttg.config +1 -1
  31. package/orchestrator.ts +49 -15
  32. package/package.json +105 -89
  33. package/qemu.config +2 -2
  34. package/sandbox.ts +3279 -0
  35. package/scheduler.ts +1 -1
  36. package/server.ts +52 -0
  37. package/tsconfig.json +12 -13
  38. package/virtual.ts +7528 -0
  39. package/workloadlaw.ts +293 -0
  40. package/dist/App.d.ts +0 -5
  41. package/dist/App.js +0 -52
  42. package/dist/Sol/Sol.d.ts +0 -3
  43. package/dist/Sol/Sol.js +0 -46
  44. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  45. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  46. package/dist/Sol/architecture/architecture.d.ts +0 -9
  47. package/dist/Sol/architecture/architecture.js +0 -93
  48. package/dist/Sol/compute/compute.d.ts +0 -9
  49. package/dist/Sol/compute/compute.js +0 -22
  50. package/dist/Sol/console/console.d.ts +0 -15
  51. package/dist/Sol/console/console.js +0 -292
  52. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  53. package/dist/Sol/dashboard/dashboard.js +0 -181
  54. package/dist/Sol/docs/docs.d.ts +0 -9
  55. package/dist/Sol/docs/docs.js +0 -28
  56. package/dist/Sol/home/home.d.ts +0 -35
  57. package/dist/Sol/home/home.js +0 -239
  58. package/dist/Sol/integrations/integrations.d.ts +0 -9
  59. package/dist/Sol/integrations/integrations.js +0 -83
  60. package/dist/Sol/intro/intro.d.ts +0 -7
  61. package/dist/Sol/intro/intro.js +0 -102
  62. package/dist/Sol/login/login.d.ts +0 -16
  63. package/dist/Sol/login/login.js +0 -49
  64. package/dist/Sol/notfound/notfound.d.ts +0 -9
  65. package/dist/Sol/notfound/notfound.js +0 -15
  66. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  67. package/dist/Sol/onboarding/onboarding.js +0 -60
  68. package/dist/Sol/playground/playground.d.ts +0 -9
  69. package/dist/Sol/playground/playground.js +0 -127
  70. package/dist/Sol/register/register.d.ts +0 -16
  71. package/dist/Sol/register/register.js +0 -193
  72. package/dist/Sol/shell/Shell.d.ts +0 -124
  73. package/dist/Sol/shell/Shell.js +0 -335
  74. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  75. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  76. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  77. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  78. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  79. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  80. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  81. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  82. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  83. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  84. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  85. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  86. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  87. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  88. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  89. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  90. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  91. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  92. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  93. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  94. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  95. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  96. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  97. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  98. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  100. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  102. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  103. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  104. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  105. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  106. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  107. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  108. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  109. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  110. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  111. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  112. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  113. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  114. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  115. package/dist/Sol/wingets/LoginForm.js +0 -141
  116. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  117. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  118. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  119. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  120. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  121. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  122. package/dist/Sol/wingets/index.d.ts +0 -39
  123. package/dist/Sol/wingets/index.js +0 -39
  124. package/dist/alternatives.d.ts +0 -508
  125. package/dist/alternatives.js +0 -950
  126. package/dist/api.d.ts +0 -154
  127. package/dist/api.js +0 -174
  128. package/dist/auth.d.ts +0 -268
  129. package/dist/auth.js +0 -476
  130. package/dist/automation.d.ts +0 -425
  131. package/dist/automation.js +0 -566
  132. package/dist/browser.d.ts +0 -561
  133. package/dist/browser.js +0 -1058
  134. package/dist/capacitor.config.d.ts +0 -45
  135. package/dist/capacitor.config.js +0 -48
  136. package/dist/catalog.d.ts +0 -43
  137. package/dist/catalog.js +0 -44
  138. package/dist/cli.d.ts +0 -16
  139. package/dist/cli.js +0 -168
  140. package/dist/communication.d.ts +0 -181
  141. package/dist/communication.js +0 -376
  142. package/dist/compute.d.ts +0 -1160
  143. package/dist/compute.js +0 -2272
  144. package/dist/dashboardlib.d.ts +0 -58
  145. package/dist/dashboardlib.js +0 -161
  146. package/dist/db.d.ts +0 -569
  147. package/dist/db.js +0 -1080
  148. package/dist/distribution.d.ts +0 -528
  149. package/dist/distribution.js +0 -810
  150. package/dist/drizzle.config.d.ts +0 -20
  151. package/dist/drizzle.config.js +0 -18
  152. package/dist/edgelandes.d.ts +0 -70
  153. package/dist/edgelandes.host.d.ts +0 -26
  154. package/dist/edgelandes.host.js +0 -1089
  155. package/dist/edgelandes.inproc.d.ts +0 -27
  156. package/dist/edgelandes.inproc.js +0 -952
  157. package/dist/edgelandes.js +0 -1133
  158. package/dist/edgelandes.ninety.d.ts +0 -31
  159. package/dist/edgelandes.ninety.js +0 -174
  160. package/dist/edgelandes.virtual.d.ts +0 -25
  161. package/dist/edgelandes.virtual.js +0 -629
  162. package/dist/edgeplane.d.ts +0 -121
  163. package/dist/edgeplane.js +0 -341
  164. package/dist/examplelocaljob.d.ts +0 -1
  165. package/dist/examplelocaljob.js +0 -14
  166. package/dist/execution.d.ts +0 -529
  167. package/dist/execution.js +0 -760
  168. package/dist/family.d.ts +0 -16
  169. package/dist/family.js +0 -42
  170. package/dist/familyurl.d.ts +0 -21
  171. package/dist/familyurl.js +0 -24
  172. package/dist/format.d.ts +0 -18
  173. package/dist/format.js +0 -59
  174. package/dist/foundation.d.ts +0 -172
  175. package/dist/foundation.js +0 -312
  176. package/dist/index.d.ts +0 -735
  177. package/dist/index.js +0 -1020
  178. package/dist/integration.d.ts +0 -235
  179. package/dist/integration.js +0 -228
  180. package/dist/intelligence.d.ts +0 -93
  181. package/dist/intelligence.js +0 -144
  182. package/dist/isolation.d.ts +0 -128
  183. package/dist/isolation.js +0 -95
  184. package/dist/labels.d.ts +0 -665
  185. package/dist/labels.js +0 -707
  186. package/dist/localauth.d.ts +0 -127
  187. package/dist/localauth.js +0 -413
  188. package/dist/media.d.ts +0 -343
  189. package/dist/media.js +0 -985
  190. package/dist/mesh.d.ts +0 -177
  191. package/dist/mesh.js +0 -468
  192. package/dist/modalityregistry.d.ts +0 -109
  193. package/dist/modalityregistry.js +0 -1386
  194. package/dist/modes.d.ts +0 -358
  195. package/dist/modes.js +0 -133
  196. package/dist/onboardingstate.d.ts +0 -79
  197. package/dist/onboardingstate.js +0 -282
  198. package/dist/orchestrator.d.ts +0 -1338
  199. package/dist/orchestrator.js +0 -4310
  200. package/dist/packager/targetcli.js +0 -4
  201. package/dist/paths.d.ts +0 -2
  202. package/dist/paths.js +0 -14
  203. package/dist/performance.d.ts +0 -415
  204. package/dist/performance.js +0 -826
  205. package/dist/quantum.d.ts +0 -809
  206. package/dist/quantum.js +0 -2072
  207. package/dist/render.d.ts +0 -380
  208. package/dist/render.js +0 -1072
  209. package/dist/runall.d.ts +0 -2
  210. package/dist/runall.js +0 -39
  211. package/dist/runtimeprobe.d.ts +0 -4
  212. package/dist/runtimeprobe.js +0 -8
  213. package/dist/sandbox.d.ts +0 -355
  214. package/dist/sandbox.js +0 -1721
  215. package/dist/sandboxenvprofile.d.ts +0 -29
  216. package/dist/sandboxenvprofile.js +0 -89
  217. package/dist/sandboxprofile.d.ts +0 -137
  218. package/dist/sandboxprofile.js +0 -241
  219. package/dist/sandboxqueue.d.ts +0 -108
  220. package/dist/sandboxqueue.js +0 -201
  221. package/dist/sandboxquota.d.ts +0 -121
  222. package/dist/sandboxquota.js +0 -236
  223. package/dist/scheduler.d.ts +0 -595
  224. package/dist/scheduler.js +0 -1258
  225. package/dist/scriptlanes.d.ts +0 -182
  226. package/dist/scriptlanes.js +0 -660
  227. package/dist/scripts.buildengine.d.ts +0 -1
  228. package/dist/scripts.buildengine.js +0 -39
  229. package/dist/scripts.securitygate.d.ts +0 -1
  230. package/dist/scripts.securitygate.js +0 -68
  231. package/dist/scripts.validateflatnative.d.ts +0 -1
  232. package/dist/scripts.validateflatnative.js +0 -72
  233. package/dist/security.d.ts +0 -500
  234. package/dist/security.js +0 -1169
  235. package/dist/seedcatalog.d.ts +0 -13
  236. package/dist/seedcatalog.js +0 -46
  237. package/dist/server.d.ts +0 -20
  238. package/dist/server.js +0 -53
  239. package/dist/speccatalog.d.ts +0 -31
  240. package/dist/speccatalog.js +0 -163
  241. package/dist/tiers.d.ts +0 -1001
  242. package/dist/tiers.js +0 -2169
  243. package/dist/utils.d.ts +0 -2
  244. package/dist/utils.js +0 -5
  245. package/dist/vaulthandoff.d.ts +0 -141
  246. package/dist/vaulthandoff.js +0 -444
  247. package/dist/virtual.d.ts +0 -640
  248. package/dist/virtual.js +0 -1284
  249. package/dist/virtualcpu.d.ts +0 -315
  250. package/dist/virtualcpu.js +0 -1180
  251. package/dist/virtualgpu.d.ts +0 -344
  252. package/dist/virtualgpu.js +0 -1000
  253. package/dist/virtualization.d.ts +0 -606
  254. package/dist/virtualization.js +0 -1186
  255. package/dist/virtualmemory.d.ts +0 -817
  256. package/dist/virtualmemory.js +0 -1795
  257. package/dist/vite.config.d.ts +0 -3
  258. package/dist/vite.config.js +0 -48
  259. package/dist/vitest.config.d.ts +0 -2
  260. package/dist/vitest.config.js +0 -25
  261. package/dist/webserver.d.ts +0 -166
  262. package/dist/webserver.js +0 -2226
  263. package/dist/workloadlaw.d.ts +0 -133
  264. package/dist/workloadlaw.js +0 -193
  265. package/docs/.gitkeep +0 -0
  266. package/docs/architecture.1.8.19.md +0 -76
  267. package/docs/logs/examplesession.json +0 -54
  268. package/docs/repo.analysis.1.8.21.json +0 -2617
  269. package/docs/repo.candidates.1.8.21.jsonl +0 -666
  270. package/docs/repo.selected.1.8.21.json +0 -786
  271. package/manifest.json +0 -20
  272. package/media.ts +0 -1337
  273. package/virtualcpu.ts +0 -1274
  274. package/virtualgpu.ts +0 -1182
  275. package/virtualization.ts +0 -1628
  276. package/virtualmemory.ts +0 -2303
  277. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  278. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  279. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  280. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  281. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  282. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  283. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  284. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  285. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  286. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  287. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  288. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  289. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  290. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  291. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  292. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  293. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  294. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  295. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  296. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  297. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  298. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  299. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  300. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  301. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  302. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  303. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  304. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  305. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  306. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  307. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  308. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  309. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  310. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  311. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  312. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  313. /package/docs/{web.ideas.md → webideas.md} +0 -0
  314. /package/docs/{workflowimprovements.2026.08.19.md → workflowimprovements20260819.md} +0 -0
@@ -1,133 +0,0 @@
1
- import { type ModalityRecord } from "./modalityregistry.ts";
2
- /** The demand one workload lane puts on the sandbox — the join vocabulary
3
- * the resolver reads (never a modality name: the nuclear law). */
4
- export type WorkloadDemand = {
5
- /** Whether the lane's pass needs a gpu path through the virtual drivers. */
6
- gpu: boolean;
7
- /** Whether the lane's pass needs a network path. */
8
- network: boolean;
9
- /** The isolation depth the lane demands at minimum. */
10
- isolation: ModalityRecord["isolation"];
11
- /** The boot budget the lane tolerates, in milliseconds (defaults to the
12
- * cold ceiling of the ladder when absent). */
13
- bootbudget?: number;
14
- };
15
- /** Where the heavy pass of the lane runs today — the honest truth the
16
- * report reads beside the join verdict. */
17
- export type LaneToday = "engine-lane" | "app-lane";
18
- /** One workload lane of the family catalog: the app that owns the lane,
19
- * the lane's stable id, the role sentence, the demand and the honest
20
- * today. */
21
- export type WorkloadLane = {
22
- /** The official app slug that owns the lane. */
23
- app: string;
24
- /** The lane id inside the app (kebab-case, unique per app). */
25
- lane: string;
26
- /** What the lane does, in one sentence. */
27
- role: string;
28
- /** The demand the lane puts on the sandbox. */
29
- demand: WorkloadDemand;
30
- /** Where the heavy pass runs today (the honest truth). */
31
- today: LaneToday;
32
- };
33
- /** The join verdict of one lane: computed from the registry, never
34
- * declared by hand. */
35
- export type LaneVerdict = "dispatchable" | "planned-only" | "unresolved";
36
- /** One answered join: the lane row, the verdict and the candidate records
37
- * the resolver answered (best candidate first). */
38
- export type LaneJoin = {
39
- /** The lane row the join answered. */
40
- lane: WorkloadLane;
41
- /** The honest verdict computed from the registry. */
42
- verdict: LaneVerdict;
43
- /** The modality records that satisfy the demand, best first. */
44
- candidates: readonly ModalityRecord[];
45
- /** How many candidates the registry already drives live. */
46
- livecount: number;
47
- };
48
- /** The family workload lane catalog: the lanes of the eleven official
49
- * apps, walked from the analysis waves (A1) that mapped every app's heavy
50
- * passes. The rows carry demands and honest todays — never modality ids:
51
- * the join computes the answer from the registry of record. */
52
- export declare const FAMILYLANES: readonly WorkloadLane[];
53
- /** The official app slugs the catalog covers — the lockstep vocabulary the
54
- * ownership manifest of the os answers (every official app owns at least
55
- * one workload lane here). */
56
- export declare const CATALOGAPPS: readonly string[];
57
- /** Answers the workload lanes one app owns.
58
- *
59
- * @param app the official app slug.
60
- * @returns the lane rows of the app, catalog order.
61
- */
62
- export declare function lanesof(app: string): readonly WorkloadLane[];
63
- /** Answers one lane row by app and lane id.
64
- *
65
- * @param app the official app slug.
66
- * @param lane the lane id inside the app.
67
- * @returns the lane row, or undefined when the catalog carries no such
68
- * lane.
69
- */
70
- export declare function getlane(app: string, lane: string): WorkloadLane | undefined;
71
- /** Joins one lane row against the registry of record: the nuclear law
72
- * made executable — the demand rides the join resolver, the candidates
73
- * answer best-first and the verdict is computed, never declared.
74
- *
75
- * @param row the lane row to join.
76
- * @returns the answered join: the row, the verdict and the candidates.
77
- */
78
- export declare function lanejoin(row: WorkloadLane): LaneJoin;
79
- /** Joins one lane of one app by id — the surface the api route and the
80
- * app mirrors read.
81
- *
82
- * @param app the official app slug.
83
- * @param lane the lane id inside the app.
84
- * @returns the answered join, or undefined when the catalog carries no
85
- * such lane.
86
- */
87
- export declare function familyjoin(app: string, lane: string): LaneJoin | undefined;
88
- /** One app's workload answer: the lanes, the joins and the honest counts. */
89
- export type AppWorkloadReport = {
90
- /** The official app slug. */
91
- app: string;
92
- /** The lane count the app owns. */
93
- lanes: number;
94
- /** The lanes whose join answered at least one live modality. */
95
- dispatchable: number;
96
- /** The lanes whose join answered only planned records. */
97
- plannedonly: number;
98
- /** The lanes whose join answered nothing (a calibration defect). */
99
- unresolved: number;
100
- /** The lanes whose heavy pass still walks the app surface. */
101
- applane: number;
102
- /** The lanes whose heavy pass already walks an engine surface. */
103
- enginelane: number;
104
- /** The per-lane joins, catalog order. */
105
- joins: readonly LaneJoin[];
106
- };
107
- /** The family workload report: the honest census of every app's lanes
108
- * against the registry of record — the work order the next waves read.
109
- * */
110
- export type FamilyWorkloadReport = {
111
- /** The official app count the catalog covers. */
112
- apps: number;
113
- /** The total lane count of the catalog. */
114
- lanes: number;
115
- /** The lanes whose join answered at least one live modality. */
116
- dispatchable: number;
117
- /** The lanes whose join answered only planned records (the gpu waits). */
118
- plannedonly: number;
119
- /** The lanes whose join answered nothing. */
120
- unresolved: number;
121
- /** The lanes whose heavy pass still walks the app surface — the honest
122
- * migration list the next waves work through. */
123
- applanemigration: number;
124
- /** The per-app reports, catalog order. */
125
- perapp: readonly AppWorkloadReport[];
126
- };
127
- /** Computes the honest family workload report from the catalog and the
128
- * registry — every count derived, nothing hardcoded, so the report can
129
- * never drift from either surface.
130
- *
131
- * @returns the family census of the workload law.
132
- */
133
- export declare function workloadreport(): FamilyWorkloadReport;
@@ -1,193 +0,0 @@
1
- // # workloadlaw — the family workload lane catalog and the join law of the
2
- // engine (root layer, wave WL1). One row per heavy workload lane of every
3
- // official app of the family: the app that owns the lane, the lane's name,
4
- // the demand the lane puts on the sandbox (gpu, network, isolation depth,
5
- // boot budget) and where the lane runs today. The law this module answers
6
- // is the owner's nuclear modality law made executable for the whole
7
- // family: the workload never chooses a modality by name — the join
8
- // resolver reads the demand and answers the modality set that satisfies
9
- // it, so the person chooses none and the platform resolves the join of
10
- // all. Every lane row carries a demand and never a modality id: the
11
- // candidates are always computed from the registry of record
12
- // (modalityregistry.ts), so the answer can never drift from the catalog
13
- // and a modality that turns live tomorrow answers the same lane without
14
- // this file moving.
15
- //
16
- // The honest today fields: one row declares `today: "engine-lane"` when the
17
- // heavy pass already runs on a server-side engine surface of the family
18
- // (the os sandbox lane, the edge plane dispatcher, the app gateways the
19
- // deploys serve), and `today: "app-lane"` when the heavy pass still walks
20
- // inside the app surface (the seeded rehearsals, the browser fallbacks the
21
- // catalog laws keep naming). The report reads both truths beside the join
22
- // verdict — a lane that resolves dispatchable and still walks app-lane is
23
- // the next wave's work order, named honestly instead of hidden. The join
24
- // verdict itself answers from the registry alone: "dispatchable" when at
25
- // least one live modality satisfies the demand, "planned-only" when only
26
- // planned records do (the gpu lanes ride here today and say so), and
27
- // "unresolved" when the demand fits nothing — a calibration defect the
28
- // battery refuses.
29
- //
30
- // Pure data and pure functions: zero storage, zero node-only imports, the
31
- // browser-pure bundle keeps carrying it, exactly the registry law.
32
- import { resolvejoin } from "./modalityregistry.ts";
33
- /** The family workload lane catalog: the lanes of the eleven official
34
- * apps, walked from the analysis waves (A1) that mapped every app's heavy
35
- * passes. The rows carry demands and honest todays — never modality ids:
36
- * the join computes the answer from the registry of record. */
37
- export const FAMILYLANES = Object.freeze([
38
- // the argan lanes: the dns engine's heavy passes
39
- { app: "argan", lane: "dnssec-validate", role: "the dnssec chain validation walk: rrsig parsing, key tag checksums, validity windows and ds match rules over untrusted input", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "app-lane" },
40
- { app: "argan", lane: "zonefile-parse-diff", role: "the master file parse and the external-dns diff: tokenizer, normalization, creates/deletes/updates by group", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "app-lane" },
41
- { app: "argan", lane: "catalog-registry-serve", role: "the registry tables the catalog serves: mime types, protocols and seed rows over https and db, never the browser fallback", demand: { gpu: false, network: true, isolation: "process", bootbudget: 800 }, today: "app-lane" },
42
- { app: "argan", lane: "label-store-seed", role: "the label manifest seed into the store: the upsert walk that protects translated rows, mirrored server-side", demand: { gpu: false, network: true, isolation: "process", bootbudget: 25 }, today: "app-lane" },
43
- // the cadria lanes: the versawaze engine's generation passes
44
- { app: "cadria", lane: "analyze-wav", role: "the audio analysis pipeline: decode, downmix, resample, stft and the spectrum, rhythm, tonality, timbre and structure fusion", demand: { gpu: false, network: false, isolation: "process", bootbudget: 800 }, today: "engine-lane" },
45
- { app: "cadria", lane: "generate-image", role: "the image generation walk: palette, composition blocks, rhythm scatter, texture and motion into the deterministic project", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "engine-lane" },
46
- { app: "cadria", lane: "render-svg", role: "the svg render of the image project: draw command compilation and the byte-deterministic serialization", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "engine-lane" },
47
- { app: "cadria", lane: "decode-video", role: "the frame-accurate video decode lane: the container-namespace pass the codec walk rides, never the visitor decoder", demand: { gpu: false, network: false, isolation: "namespace", bootbudget: 800 }, today: "app-lane" },
48
- { app: "cadria", lane: "compile-shader", role: "the shader program assembly: the fragment library, the deterministic manifest and the sha digest, no visitor gpu ever compiles", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "engine-lane" },
49
- // the cobaia lanes: the monetization surface's light walks
50
- { app: "cobaia", lane: "plan-checkout", role: "the plan checkout surface: mrr plan rows, link validation and the billing webhook walk when it lands, secrets server-side", demand: { gpu: false, network: true, isolation: "process", bootbudget: 25 }, today: "app-lane" },
51
- { app: "cobaia", lane: "ads-slot", role: "the honest ad slot lane: the reserved slots and the rotation decision the deploy answers before the render", demand: { gpu: false, network: true, isolation: "process", bootbudget: 25 }, today: "app-lane" },
52
- { app: "cobaia", lane: "label-seed", role: "the label manifest seed of the monetization face: the store walk the sqlite vault carries", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "app-lane" },
53
- // the debonair lanes: the kathesis engine's audio walks
54
- { app: "debonair", lane: "ingest-audio", role: "the ingest worker: the stream separation, the pcm downmix and the payload json the reconstruction reads", demand: { gpu: false, network: false, isolation: "process", bootbudget: 800 }, today: "engine-lane" },
55
- { app: "debonair", lane: "render-track", role: "the render worker: the composed plan render, the mastering chain and the wav encode into the take store", demand: { gpu: false, network: false, isolation: "process", bootbudget: 800 }, today: "engine-lane" },
56
- // the forge lanes: the execution clone's run walks
57
- { app: "forge", lane: "binary-run", role: "the binary run lane: the runner the saddle engine answers for the fleet, the mode gate resolving through the join", demand: { gpu: false, network: true, isolation: "namespace", bootbudget: 800 }, today: "app-lane" },
58
- { app: "forge", lane: "queue-priority", role: " the run queue walk: express, normal and batch ordering over the queue the lane serves", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "app-lane" },
59
- // the foundry lanes: the pipeline clone's graph walks
60
- { app: "foundry", lane: "pipeline-graph", role: "the pipeline graph lane: provision, pull, run, collect and store — the plan walk the herd drives", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "app-lane" },
61
- { app: "foundry", lane: "image-artifact", role: "the image artifact lane: the format plans, the checksum seals and the shelf records the vault stores", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "app-lane" },
62
- // the getry lanes: the ai gateway's inference walks
63
- { app: "getry", lane: "inference-route", role: "the inference route lane: the provider pool, the sse parse and the model masking over the upstream calls", demand: { gpu: false, network: true, isolation: "process", bootbudget: 800 }, today: "engine-lane" },
64
- { app: "getry", lane: "stream-fallback", role: "the resilience runner: the verdict ladder, the backoff walk and the trail the retry lane keeps", demand: { gpu: false, network: true, isolation: "process", bootbudget: 25 }, today: "engine-lane" },
65
- { app: "getry", lane: "thinking-ladder", role: "the seven-level reasoning ladder: the budget resolution the request injects before the upstream call", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "engine-lane" },
66
- { app: "getry", lane: "router-rotation", role: "the rotation lane: the weighted draw, the cooldown ledger and the session rows the store keeps", demand: { gpu: false, network: true, isolation: "process", bootbudget: 25 }, today: "engine-lane" },
67
- // the saddle lanes: the engine's own dispatch surface
68
- { app: "saddle", lane: "edge-dispatch", role: "the edge plane dispatch itself: the visitor guard, the lane resolution and the artifact commit through the vault seam", demand: { gpu: false, network: true, isolation: "process", bootbudget: 1500 }, today: "engine-lane" },
69
- // the stealthhead lanes: the fps platform's simulation walks
70
- { app: "stealthhead", lane: "match-simulate", role: "the authoritative match simulation: the fixed-step physics, the reconcile and rewind twin and the seeded spawns", demand: { gpu: false, network: true, isolation: "process", bootbudget: 25 }, today: "app-lane" },
71
- { app: "stealthhead", lane: "rank-compute", role: "the ranking walk: the elo ladder, the season batch and the position assignment over the standing rows", demand: { gpu: false, network: true, isolation: "process", bootbudget: 800 }, today: "app-lane" },
72
- { app: "stealthhead", lane: "world-bake", role: "the world pre-compilation: the map bake through the render engine — the gpu pass the planned modalities answer", demand: { gpu: true, network: true, isolation: "vm", bootbudget: 1500 }, today: "app-lane" },
73
- { app: "stealthhead", lane: "ballistics-balance", role: "the armory balance sweep: falloff, shots-to-kill and ttk validation, offline and deterministic", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "app-lane" },
74
- // the vault lanes: the storage engine's object walks
75
- { app: "vault", lane: "blob-ingest", role: "the object deposit lane: path and mime validation, the quota gate inside the write transaction and the detach walk", demand: { gpu: false, network: true, isolation: "process", bootbudget: 800 }, today: "engine-lane" },
76
- { app: "vault", lane: "chunk-window", role: "the chunk window lane: the fixed slicing, the per-window digest and the brotli decision over the byte stream", demand: { gpu: false, network: false, isolation: "process", bootbudget: 800 }, today: "engine-lane" },
77
- { app: "vault", lane: "digest-sha256", role: "the digest engine: the sha-256 master and chunk walks and the full re-verification the read path answers", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "engine-lane" },
78
- { app: "vault", lane: "ref-gc", role: "the reference gc lane: the soft-delete tombstones, the ref detach and the orphan sweep the store drives", demand: { gpu: false, network: true, isolation: "process", bootbudget: 800 }, today: "engine-lane" },
79
- // the devthink lanes: the os envelope's command walks
80
- { app: "devthink", lane: "chat-sandbox", role: "the chat sandbox lane: the session jail, the tool surface and the exec walks the engine dispatches server-side", demand: { gpu: false, network: true, isolation: "namespace", bootbudget: 1500 }, today: "engine-lane" },
81
- { app: "devthink", lane: "llm-gateway", role: "the universal gateway pipeline: model resolution, auth, body building, retry and the streaming byte passthrough", demand: { gpu: false, network: true, isolation: "process", bootbudget: 800 }, today: "engine-lane" },
82
- { app: "devthink", lane: "stream-parse", role: "the streaming parser: the tolerant sse walk, the payload normalization and the delta tracking over the live stream", demand: { gpu: false, network: true, isolation: "process", bootbudget: 25 }, today: "engine-lane" },
83
- { app: "devthink", lane: "graph-run", role: "the graph runner: the deterministic stage walk, the retry ladder and the progress views the console draws", demand: { gpu: false, network: false, isolation: "process", bootbudget: 25 }, today: "engine-lane" },
84
- { app: "devthink", lane: "mcp-serve", role: "the mcp registry lane: the tool catalog, the approval gates and the transports the server answers", demand: { gpu: false, network: true, isolation: "process", bootbudget: 800 }, today: "engine-lane" },
85
- ]);
86
- /** The official app slugs the catalog covers — the lockstep vocabulary the
87
- * ownership manifest of the os answers (every official app owns at least
88
- * one workload lane here). */
89
- export const CATALOGAPPS = Object.freeze([
90
- "argan",
91
- "cadria",
92
- "cobaia",
93
- "debonair",
94
- "devthink",
95
- "forge",
96
- "foundry",
97
- "getry",
98
- "saddle",
99
- "stealthhead",
100
- "vault",
101
- ]);
102
- /** Answers the workload lanes one app owns.
103
- *
104
- * @param app the official app slug.
105
- * @returns the lane rows of the app, catalog order.
106
- */
107
- export function lanesof(app) {
108
- return FAMILYLANES.filter((row) => row.app === app);
109
- }
110
- /** Answers one lane row by app and lane id.
111
- *
112
- * @param app the official app slug.
113
- * @param lane the lane id inside the app.
114
- * @returns the lane row, or undefined when the catalog carries no such
115
- * lane.
116
- */
117
- export function getlane(app, lane) {
118
- return FAMILYLANES.find((row) => row.app === app && row.lane === lane);
119
- }
120
- /** Joins one lane row against the registry of record: the nuclear law
121
- * made executable — the demand rides the join resolver, the candidates
122
- * answer best-first and the verdict is computed, never declared.
123
- *
124
- * @param row the lane row to join.
125
- * @returns the answered join: the row, the verdict and the candidates.
126
- */
127
- export function lanejoin(row) {
128
- const candidates = resolvejoin({
129
- base: "max",
130
- gpu: row.demand.gpu,
131
- network: row.demand.network,
132
- isolation: row.demand.isolation,
133
- bootbudget: row.demand.bootbudget,
134
- });
135
- const livecount = candidates.filter((modality) => modality.state === "live").length;
136
- const verdict = livecount > 0 ? "dispatchable" : candidates.length > 0 ? "planned-only" : "unresolved";
137
- return { lane: row, verdict, candidates, livecount };
138
- }
139
- /** Joins one lane of one app by id — the surface the api route and the
140
- * app mirrors read.
141
- *
142
- * @param app the official app slug.
143
- * @param lane the lane id inside the app.
144
- * @returns the answered join, or undefined when the catalog carries no
145
- * such lane.
146
- */
147
- export function familyjoin(app, lane) {
148
- const row = getlane(app, lane);
149
- return row === undefined ? undefined : lanejoin(row);
150
- }
151
- /** Computes the honest family workload report from the catalog and the
152
- * registry — every count derived, nothing hardcoded, so the report can
153
- * never drift from either surface.
154
- *
155
- * @returns the family census of the workload law.
156
- */
157
- export function workloadreport() {
158
- const perapp = [];
159
- let dispatchable = 0;
160
- let plannedonly = 0;
161
- let unresolved = 0;
162
- let applanemigration = 0;
163
- for (const app of CATALOGAPPS) {
164
- const joins = lanesof(app).map(lanejoin);
165
- const dispatchablecount = joins.filter((join) => join.verdict === "dispatchable").length;
166
- const plannedonlycount = joins.filter((join) => join.verdict === "planned-only").length;
167
- const unresolvedcount = joins.filter((join) => join.verdict === "unresolved").length;
168
- const applanecount = joins.filter((join) => join.lane.today === "app-lane").length;
169
- dispatchable += dispatchablecount;
170
- plannedonly += plannedonlycount;
171
- unresolved += unresolvedcount;
172
- applanemigration += applanecount;
173
- perapp.push({
174
- app,
175
- lanes: joins.length,
176
- dispatchable: dispatchablecount,
177
- plannedonly: plannedonlycount,
178
- unresolved: unresolvedcount,
179
- applane: applanecount,
180
- enginelane: joins.length - applanecount,
181
- joins,
182
- });
183
- }
184
- return {
185
- apps: CATALOGAPPS.length,
186
- lanes: FAMILYLANES.length,
187
- dispatchable,
188
- plannedonly,
189
- unresolved,
190
- applanemigration,
191
- perapp,
192
- };
193
- }
package/docs/.gitkeep DELETED
File without changes
@@ -1,76 +0,0 @@
1
- # Saddle 1.8.19 architecture organization
2
-
3
- ## Objective
4
-
5
- This reorganization preserves every existing capability while making ownership and dependency direction easier to inspect. The root entry point remains a thin universal router. Public contracts remain additive and stable. Existing package subpaths remain compatible. Generated `dist/` output remains untracked.
6
-
7
- > A domain groups correlated behavior, contracts and tests. It is not a claim that unrelated code is removed or that an infrastructure adapter is activated.
8
-
9
- ## Twenty correlated domains
10
-
11
- | ID | Domain | Current ownership | Allowed direction |
12
- | --- | --- | --- | --- |
13
- | 01 | Public surface | `index.ts`, `library/` | Re-exports domain façades only. |
14
- | 02 | Foundation | `core/` | Defines errors, identifiers, hashing, events and serializable nouns. |
15
- | 03 | Isolation policy | `isolation/`, API policy helpers | Evaluates approval, denial, handoff and receipt boundaries. |
16
- | 04 | Execution planning | `runtime/`, `runners/` | Plans and observes work through caller-owned adapters. |
17
- | 05 | Memory planning | `memory/` | Defines internal working-set, targets, transforms and bounded plans. |
18
- | 06 | Storage planning | `storage/` | Defines adapter-owned content, cache, chunk and synchronization contracts. |
19
- | 07 | Persistence | `persistence/` | Defines optional schema, migration and provider-neutral persistence adapters. |
20
- | 08 | Browser | `browser/`, `extension/` | Defines browser, virtual-browser, extension and session contracts without user-profile access. |
21
- | 09 | Acquisition | `scrape/`, `captcha/` | Defines request, crawl, extract, proxy and challenge contracts. |
22
- | 10 | Communication | `api/` | Defines authenticated envelopes, transports, rate policy and event serialization. |
23
- | 11 | External adapters | `adapters/` | Defines replaceable forge, socket, app and MCP adapters. |
24
- | 12 | Automation | `automation/`, `surfaces/` | Defines automation manifests, permissions, triggers and surface requirements. |
25
- | 13 | Intelligence | `ai/` | Defines token, chunk, retrieval, provenance and metric contracts. |
26
- | 14 | Binary handling | `binary/` | Defines archive, build and transformation plans without execution. |
27
- | 15 | Distribution | `packager/`, `release/` | Defines package, artifact, delivery, readiness and evidence contracts; filesystem-backed asset verification remains an explicit subpath. |
28
- | 16 | Modes | `modes/`, `server/` | Defines target modes, surface profiles and host-neutral service/deployment adapters; the Node server remains an explicit subpath only. |
29
- | 17 | Commands | `cli/` | Defines command parsing, presentation and command-level integration. |
30
- | 18 | Web application | `web/` | Defines static routes, UI components, visual assets and build boundaries. |
31
- | 19 | Native modes | `desktop/`, `android/`, `ios/`, `extension/` | Defines platform packaging metadata and calls library contracts. |
32
- | 20 | Quality and operations | `tests/`, `.github/`, `docs/` | Defines deterministic evidence, build checks, release operations and architecture records. |
33
-
34
- ## Dependency flow
35
-
36
- ![Rendered organization diagram](architecture-1.8.19.png)
37
-
38
- ```mermaid
39
- flowchart TD
40
- public[Public surface] --> foundation[Foundation]
41
- public --> policy[Isolation policy]
42
- public --> execution[Execution planning]
43
- public --> memory[Memory planning]
44
- public --> storage[Storage planning]
45
- public --> browser[Browser]
46
- public --> acquisition[Acquisition]
47
- public --> communication[Communication]
48
- public --> automation[Automation]
49
- public --> intelligence[Intelligence]
50
- public --> binary[Binary handling]
51
- public --> distribution[Distribution]
52
- public --> modes[Modes]
53
- foundation --> policy
54
- policy --> execution
55
- memory --> storage
56
- storage --> persistence[Persistence]
57
- acquisition --> browser
58
- automation --> communication
59
- execution --> adapters[External adapters]
60
- browser --> adapters
61
- communication --> adapters
62
- binary --> distribution
63
- modes --> surfaces[Commands, web and native modes]
64
- distribution --> operations[Quality and operations]
65
- surfaces --> operations
66
- ```
67
-
68
- The root may import only domain façades. Each façade may import its owned modules and lower-level contracts. Runtime, browser, storage, binary and remote-provider behavior remain adapter-owned: no domain may add implicit host, filesystem, browser-profile, network or provider effects.
69
-
70
- ## Compatibility rules
71
-
72
- Existing module paths referenced by package exports remain valid. A module may be moved only after a compatibility shim or an equivalent export is in place, all relative imports are updated, and the package dry-run includes the expected output. Native mode metadata, workflow paths, CLI command paths and static web routing are release boundaries and therefore move only with corresponding validation.
73
-
74
- ## Implementation order
75
-
76
- The first reorganization block groups the public root exports behind domain façades. The second groups adjacent library modules where no package subpath or native workflow depends on their exact location. The final block aligns tests and documentation with the same 20 domains. Each block must pass the engine build, active tests, legacy tests, formatting, package inspection, web checks and native-flat validation before the next block begins.
@@ -1,54 +0,0 @@
1
- {
2
- "version": 1,
3
- "session": {
4
- "id": "examplesession-0001",
5
- "browser": "brave",
6
- "seed": "examplesession-seed-0001"
7
- },
8
- "events": [
9
- {
10
- "t": 140,
11
- "type": "move",
12
- "x": 120,
13
- "y": 90
14
- },
15
- {
16
- "t": 300,
17
- "type": "move",
18
- "x": 180,
19
- "y": 140
20
- },
21
- {
22
- "t": 480,
23
- "type": "click",
24
- "x": 180,
25
- "y": 140
26
- },
27
- {
28
- "t": 680,
29
- "type": "type",
30
- "key": "k"
31
- },
32
- {
33
- "t": 900,
34
- "type": "move",
35
- "x": 240,
36
- "y": 200
37
- },
38
- {
39
- "t": 1140,
40
- "type": "click",
41
- "x": 240,
42
- "y": 200
43
- },
44
- {
45
- "t": 1400,
46
- "type": "scroll",
47
- "dy": 320
48
- }
49
- ],
50
- "captcha": {
51
- "kind": "hcaptcha",
52
- "passed": true
53
- }
54
- }