@wenathlan/saddle 2.0.153 → 2.0.155

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 (307) hide show
  1. package/Dockerfile +139 -55
  2. package/README.md +58 -59
  3. package/browser.ts +482 -0
  4. package/cli.ts +274 -0
  5. package/distribution.ts +731 -0
  6. package/docker.config +29 -8
  7. package/docs/artifactavailability.md +2 -2
  8. package/docs/browser.md +18 -1
  9. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  10. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  11. package/docs/extension.md +13 -2
  12. package/docs/libraryapi.md +1 -1
  13. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  14. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  15. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  16. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  17. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  18. package/docs/todo.md +2 -2
  19. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  20. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  21. package/execution.ts +677 -0
  22. package/foundation.ts +314 -0
  23. package/index.ts +35 -27
  24. package/isolation.ts +84 -0
  25. package/modes.ts +170 -0
  26. package/mttg.config +1 -1
  27. package/orchestrator.ts +49 -15
  28. package/package.json +90 -75
  29. package/qemu.config +2 -2
  30. package/sandbox.ts +2094 -0
  31. package/scheduler.ts +1 -1
  32. package/server.ts +52 -0
  33. package/tsconfig.json +11 -12
  34. package/virtual.ts +1105 -0
  35. package/virtualgpu.ts +1 -1
  36. package/virtualization.ts +1 -1
  37. package/workloadlaw.ts +293 -0
  38. package/dist/App.d.ts +0 -5
  39. package/dist/App.js +0 -52
  40. package/dist/Sol/Sol.d.ts +0 -3
  41. package/dist/Sol/Sol.js +0 -46
  42. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  43. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  44. package/dist/Sol/architecture/architecture.d.ts +0 -9
  45. package/dist/Sol/architecture/architecture.js +0 -93
  46. package/dist/Sol/compute/compute.d.ts +0 -9
  47. package/dist/Sol/compute/compute.js +0 -22
  48. package/dist/Sol/console/console.d.ts +0 -15
  49. package/dist/Sol/console/console.js +0 -292
  50. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  51. package/dist/Sol/dashboard/dashboard.js +0 -181
  52. package/dist/Sol/docs/docs.d.ts +0 -9
  53. package/dist/Sol/docs/docs.js +0 -28
  54. package/dist/Sol/home/home.d.ts +0 -35
  55. package/dist/Sol/home/home.js +0 -239
  56. package/dist/Sol/integrations/integrations.d.ts +0 -9
  57. package/dist/Sol/integrations/integrations.js +0 -83
  58. package/dist/Sol/intro/intro.d.ts +0 -7
  59. package/dist/Sol/intro/intro.js +0 -102
  60. package/dist/Sol/login/login.d.ts +0 -16
  61. package/dist/Sol/login/login.js +0 -49
  62. package/dist/Sol/notfound/notfound.d.ts +0 -9
  63. package/dist/Sol/notfound/notfound.js +0 -15
  64. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  65. package/dist/Sol/onboarding/onboarding.js +0 -60
  66. package/dist/Sol/playground/playground.d.ts +0 -9
  67. package/dist/Sol/playground/playground.js +0 -127
  68. package/dist/Sol/register/register.d.ts +0 -16
  69. package/dist/Sol/register/register.js +0 -193
  70. package/dist/Sol/shell/Shell.d.ts +0 -124
  71. package/dist/Sol/shell/Shell.js +0 -335
  72. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  73. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  74. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  75. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  76. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  77. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  78. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  79. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  80. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  81. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  82. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  83. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  84. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  85. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  86. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  87. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  88. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  89. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  90. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  91. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  92. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  93. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  94. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  95. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  96. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  97. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  98. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  100. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  102. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  103. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  104. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  105. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  106. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  107. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  108. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  109. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  110. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  111. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  112. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  113. package/dist/Sol/wingets/LoginForm.js +0 -141
  114. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  115. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  116. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  117. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  118. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  119. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  120. package/dist/Sol/wingets/index.d.ts +0 -39
  121. package/dist/Sol/wingets/index.js +0 -39
  122. package/dist/alternatives.d.ts +0 -508
  123. package/dist/alternatives.js +0 -950
  124. package/dist/api.d.ts +0 -154
  125. package/dist/api.js +0 -174
  126. package/dist/auth.d.ts +0 -268
  127. package/dist/auth.js +0 -476
  128. package/dist/automation.d.ts +0 -425
  129. package/dist/automation.js +0 -566
  130. package/dist/browser.d.ts +0 -561
  131. package/dist/browser.js +0 -1058
  132. package/dist/capacitor.config.d.ts +0 -45
  133. package/dist/capacitor.config.js +0 -48
  134. package/dist/catalog.d.ts +0 -43
  135. package/dist/catalog.js +0 -44
  136. package/dist/cli.d.ts +0 -16
  137. package/dist/cli.js +0 -168
  138. package/dist/communication.d.ts +0 -181
  139. package/dist/communication.js +0 -376
  140. package/dist/compute.d.ts +0 -1160
  141. package/dist/compute.js +0 -2272
  142. package/dist/dashboardlib.d.ts +0 -58
  143. package/dist/dashboardlib.js +0 -161
  144. package/dist/db.d.ts +0 -569
  145. package/dist/db.js +0 -1080
  146. package/dist/distribution.d.ts +0 -528
  147. package/dist/distribution.js +0 -810
  148. package/dist/drizzle.config.d.ts +0 -20
  149. package/dist/drizzle.config.js +0 -18
  150. package/dist/edgelandes.d.ts +0 -70
  151. package/dist/edgelandes.host.d.ts +0 -26
  152. package/dist/edgelandes.host.js +0 -1089
  153. package/dist/edgelandes.inproc.d.ts +0 -27
  154. package/dist/edgelandes.inproc.js +0 -952
  155. package/dist/edgelandes.js +0 -1133
  156. package/dist/edgelandes.ninety.d.ts +0 -31
  157. package/dist/edgelandes.ninety.js +0 -174
  158. package/dist/edgelandes.virtual.d.ts +0 -25
  159. package/dist/edgelandes.virtual.js +0 -629
  160. package/dist/edgeplane.d.ts +0 -114
  161. package/dist/edgeplane.js +0 -305
  162. package/dist/examplelocaljob.d.ts +0 -1
  163. package/dist/examplelocaljob.js +0 -14
  164. package/dist/execution.d.ts +0 -529
  165. package/dist/execution.js +0 -760
  166. package/dist/family.d.ts +0 -16
  167. package/dist/family.js +0 -42
  168. package/dist/familyurl.d.ts +0 -21
  169. package/dist/familyurl.js +0 -24
  170. package/dist/format.d.ts +0 -18
  171. package/dist/format.js +0 -59
  172. package/dist/foundation.d.ts +0 -172
  173. package/dist/foundation.js +0 -312
  174. package/dist/index.d.ts +0 -735
  175. package/dist/index.js +0 -1020
  176. package/dist/integration.d.ts +0 -235
  177. package/dist/integration.js +0 -228
  178. package/dist/intelligence.d.ts +0 -93
  179. package/dist/intelligence.js +0 -144
  180. package/dist/isolation.d.ts +0 -128
  181. package/dist/isolation.js +0 -95
  182. package/dist/labels.d.ts +0 -665
  183. package/dist/labels.js +0 -751
  184. package/dist/localauth.d.ts +0 -127
  185. package/dist/localauth.js +0 -413
  186. package/dist/media.d.ts +0 -343
  187. package/dist/media.js +0 -985
  188. package/dist/mesh.d.ts +0 -177
  189. package/dist/mesh.js +0 -468
  190. package/dist/modalityregistry.d.ts +0 -109
  191. package/dist/modalityregistry.js +0 -1386
  192. package/dist/modes.d.ts +0 -358
  193. package/dist/modes.js +0 -133
  194. package/dist/onboardingstate.d.ts +0 -79
  195. package/dist/onboardingstate.js +0 -282
  196. package/dist/orchestrator.d.ts +0 -1338
  197. package/dist/orchestrator.js +0 -4310
  198. package/dist/packager/targetcli.js +0 -4
  199. package/dist/paths.d.ts +0 -2
  200. package/dist/paths.js +0 -14
  201. package/dist/performance.d.ts +0 -415
  202. package/dist/performance.js +0 -826
  203. package/dist/quantum.d.ts +0 -809
  204. package/dist/quantum.js +0 -2072
  205. package/dist/render.d.ts +0 -380
  206. package/dist/render.js +0 -1072
  207. package/dist/runall.d.ts +0 -2
  208. package/dist/runall.js +0 -39
  209. package/dist/runtimeprobe.d.ts +0 -4
  210. package/dist/runtimeprobe.js +0 -8
  211. package/dist/sandbox.d.ts +0 -355
  212. package/dist/sandbox.js +0 -1721
  213. package/dist/sandboxenvprofile.d.ts +0 -29
  214. package/dist/sandboxenvprofile.js +0 -89
  215. package/dist/sandboxprofile.d.ts +0 -137
  216. package/dist/sandboxprofile.js +0 -241
  217. package/dist/sandboxqueue.d.ts +0 -108
  218. package/dist/sandboxqueue.js +0 -201
  219. package/dist/sandboxquota.d.ts +0 -121
  220. package/dist/sandboxquota.js +0 -236
  221. package/dist/scheduler.d.ts +0 -595
  222. package/dist/scheduler.js +0 -1258
  223. package/dist/scriptlanes.d.ts +0 -182
  224. package/dist/scriptlanes.js +0 -660
  225. package/dist/scripts.buildengine.d.ts +0 -1
  226. package/dist/scripts.buildengine.js +0 -39
  227. package/dist/scripts.securitygate.d.ts +0 -1
  228. package/dist/scripts.securitygate.js +0 -68
  229. package/dist/scripts.validateflatnative.d.ts +0 -1
  230. package/dist/scripts.validateflatnative.js +0 -72
  231. package/dist/security.d.ts +0 -500
  232. package/dist/security.js +0 -1169
  233. package/dist/seedcatalog.d.ts +0 -13
  234. package/dist/seedcatalog.js +0 -46
  235. package/dist/server.d.ts +0 -20
  236. package/dist/server.js +0 -53
  237. package/dist/speccatalog.d.ts +0 -31
  238. package/dist/speccatalog.js +0 -163
  239. package/dist/tiers.d.ts +0 -1001
  240. package/dist/tiers.js +0 -2169
  241. package/dist/utils.d.ts +0 -2
  242. package/dist/utils.js +0 -5
  243. package/dist/vaulthandoff.d.ts +0 -141
  244. package/dist/vaulthandoff.js +0 -444
  245. package/dist/virtual.d.ts +0 -640
  246. package/dist/virtual.js +0 -1284
  247. package/dist/virtualcpu.d.ts +0 -315
  248. package/dist/virtualcpu.js +0 -1180
  249. package/dist/virtualgpu.d.ts +0 -344
  250. package/dist/virtualgpu.js +0 -1000
  251. package/dist/virtualization.d.ts +0 -606
  252. package/dist/virtualization.js +0 -1186
  253. package/dist/virtualmemory.d.ts +0 -817
  254. package/dist/virtualmemory.js +0 -1795
  255. package/dist/vite.config.d.ts +0 -3
  256. package/dist/vite.config.js +0 -43
  257. package/dist/vitest.config.d.ts +0 -2
  258. package/dist/vitest.config.js +0 -25
  259. package/dist/webserver.d.ts +0 -166
  260. package/dist/webserver.js +0 -2226
  261. package/dist/workloadlaw.d.ts +0 -133
  262. package/dist/workloadlaw.js +0 -193
  263. package/manifest.json +0 -20
  264. package/media.ts +0 -1337
  265. /package/docs/{architecture.1.8.19.md → architecture1819.md} +0 -0
  266. /package/docs/{architecture.1.8.19.mmd → architecture1819.mmd} +0 -0
  267. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  268. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  269. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  270. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  271. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  272. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  273. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  274. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  275. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  276. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  277. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  278. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  279. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  280. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  281. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  282. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  283. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  284. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  285. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  286. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  287. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  288. /package/docs/{repo.analysis.1.8.21.json → repoanalysis1821.json} +0 -0
  289. /package/docs/{repo.candidates.1.8.21.jsonl → repocandidates1821.jsonl} +0 -0
  290. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  291. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  292. /package/docs/{repo.selected.1.8.21.json → reposelected1821.json} +0 -0
  293. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  294. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  295. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  296. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  297. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  298. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  299. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  300. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  301. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  302. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  303. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  304. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  305. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  306. /package/docs/{web.ideas.md → webideas.md} +0 -0
  307. /package/docs/{workflowimprovements.2026.08.19.md → workflowimprovements20260819.md} +0 -0
package/docker.config CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "name": "docker.config",
4
4
  "title": "saddle - Docker Engine and Containerization Configuration",
5
- "version": "2.1.6",
5
+ "version": "2.0.154",
6
6
  "date": "2026-08-22",
7
7
  "language": "en",
8
8
  "sources": [
@@ -106,14 +106,21 @@
106
106
  "platforms": {
107
107
  "architectures": [
108
108
  "linux/amd64",
109
+ "linux/amd64/v2",
109
110
  "linux/arm64",
111
+ "linux/arm/v7",
112
+ "linux/arm/v6",
110
113
  "linux/ppc64le",
111
- "linux/s390x"
114
+ "linux/s390x",
115
+ "linux/riscv64",
116
+ "linux/386",
117
+ "linux/mips64le",
118
+ "linux/loong64"
112
119
  ],
113
120
  "primary": "linux/amd64",
114
121
  "qemuEmulation": true,
115
122
  "nativeBuild": true,
116
- "note": "the four-arch family standard (amd64, arm64, ppc64le, s390x) the one container file and the publish lanes carry; amd64 builds native, the other legs ride QEMU emulation; unknown/* stays rejected as not runnable"
123
+ "note": "the eleven-arch family standard (PR15b: amd64, amd64/v2, arm64, arm/v7, arm/v6, ppc64le, s390x, riscv64, 386, mips64le, loong64 - the complete linux platform surface docker/buildx carries, the owner's law: eleven OS architectures for every container of every application) the one container file and the publish lanes carry; amd64 and amd64/v2 build native, the other nine legs ride QEMU emulation; unknown/* stays rejected as not runnable"
117
124
  },
118
125
  "runtimeBase": {
119
126
  "nodeImage": "node:26.7.0-alpine",
@@ -471,11 +478,18 @@
471
478
  "multiArch": {
472
479
  "platforms": [
473
480
  "linux/amd64",
481
+ "linux/amd64/v2",
474
482
  "linux/arm64",
483
+ "linux/arm/v7",
484
+ "linux/arm/v6",
475
485
  "linux/ppc64le",
476
- "linux/s390x"
486
+ "linux/s390x",
487
+ "linux/riscv64",
488
+ "linux/386",
489
+ "linux/mips64le",
490
+ "linux/loong64"
477
491
  ],
478
- "command": "docker buildx build --platform linux/amd64,linux/arm64,linux/ppc64le,linux/s390x --cache-from type=gha --cache-to type=gha,mode=max --push -t ghcr.io/vhe/sandbox:29.7.2 ."
492
+ "command": "docker buildx build --platform linux/amd64,linux/amd64/v2,linux/arm64,linux/arm/v7,linux/arm/v6,linux/ppc64le,linux/s390x,linux/riscv64,linux/386,linux/mips64le,linux/loong64 --cache-from type=gha --cache-to type=gha,mode=max --push -t ghcr.io/vhe/sandbox:29.7.2 ."
479
493
  },
480
494
  "actionsWorkflowUses": [
481
495
  "docker/setup-buildx-action@v4.3.0",
@@ -623,7 +637,7 @@
623
637
  "labels": {
624
638
  "org.opencontainers.image.title": "saddle-v6",
625
639
  "org.opencontainers.image.description": "Saddle v6 virtualization orchestrator with QEMU 11.1.0, Node 22 LTS, Python 3.13.5, MTTG, Passage, OVMF",
626
- "org.opencontainers.image.version": "2.1.6",
640
+ "org.opencontainers.image.version": "2.0.154",
627
641
  "org.opencontainers.image.created": "2026-08-22T00:00:00Z",
628
642
  "org.opencontainers.image.authors": "Saddle Core <core@saddle.dev>",
629
643
  "org.opencontainers.image.url": "https://saddle.dev",
@@ -635,7 +649,7 @@
635
649
  "org.opencontainers.image.base.name": "debian:bookworm-slim",
636
650
  "org.opencontainers.image.base.digest": "sha256:bookworm-slim-pinned-2026-08-22",
637
651
  "saddle": {
638
- "com.saddle.version": "2.1.6",
652
+ "com.saddle.version": "2.0.154",
639
653
  "com.saddle.engine": "qemu-11.1.0",
640
654
  "com.saddle.modes": "32",
641
655
  "com.saddle.forge.mirrors": "github,gitea,forgejo",
@@ -660,9 +674,16 @@
660
674
  "target": "runtime-base",
661
675
  "platforms": [
662
676
  "linux/amd64",
677
+ "linux/amd64/v2",
663
678
  "linux/arm64",
679
+ "linux/arm/v7",
680
+ "linux/arm/v6",
664
681
  "linux/ppc64le",
665
- "linux/s390x"
682
+ "linux/s390x",
683
+ "linux/riscv64",
684
+ "linux/386",
685
+ "linux/mips64le",
686
+ "linux/loong64"
666
687
  ],
667
688
  "cacheFrom": [
668
689
  "type=gha",
@@ -141,7 +141,7 @@ The available metadata files are `manifest.android.1.8.15.json`, `manifest.conta
141
141
 
142
142
  ## 1.8.16 verified release matrix
143
143
 
144
- The published [v1.8.16 release](https://github.com/wenathlan/saddle/releases/tag/v1.8.16) contains 38 attached assets: six Linux desktop artifacts, six Windows desktop artifacts, four macOS desktop artifacts, two Android artifacts, one container archive, one browser extension, nine manifests, and nine checksum files. The asset names match the matrix in [releasenotes.1.8.16.md](releasenotes.1.8.16.md).
144
+ The published [v1.8.16 release](https://github.com/wenathlan/saddle/releases/tag/v1.8.16) contains 38 attached assets: six Linux desktop artifacts, six Windows desktop artifacts, four macOS desktop artifacts, two Android artifacts, one container archive, one browser extension, nine manifests, and nine checksum files. The asset names match the matrix in [releasenotes1816.md](releasenotes1816.md).
145
145
 
146
146
  The release-event Android workflow stopped because production signing secrets were not configured. The separately successful manual Android run `31839378707` used the workflow's explicit `ci-test-key` option and attached the APK, AAB, checksum, and manifest. No iOS artifact is claimed because Apple signing, provisioning, and export credentials were not configured. Desktop artifacts remain `unsigned`, the container manifest remains `caller-owned`, and no result is represented as production signing, notarization, registry trust, SBOM validation, or vulnerability status without its own evidence.
147
147
 
@@ -151,7 +151,7 @@ The release-evidence API can normalize and evaluate results supplied by complete
151
151
 
152
152
  The 1.8.17 candidate keeps the established release asset contract while expanding the GHCR image index to `linux/amd64`, `linux/arm64`, and `linux/ppc64le`. The workflow must inspect the pushed index before this document treats those platform variants as available. The attached `saddle.container.1.8.17.tar.gz` remains one archive artifact and is not evidence of a Windows container variant.
153
153
 
154
- `windows/amd64`, `linux/arm/v7`, and `linux/386` are not claimed by this candidate. A Windows image requires its own versioned Windows base, Dockerfile, runner, and compatibility validation; the existing Debian Linux Dockerfile cannot produce it by adding a platform string. `unknown` descriptors are not runnable targets. The platform decision and evidence limits are detailed in [containerplatforms.1.8.17.md](containerplatforms.1.8.17.md).
154
+ `windows/amd64`, `linux/arm/v7`, and `linux/386` are not claimed by this candidate. A Windows image requires its own versioned Windows base, Dockerfile, runner, and compatibility validation; the existing Debian Linux Dockerfile cannot produce it by adding a platform string. `unknown` descriptors are not runnable targets. The platform decision and evidence limits are detailed in [containerplatforms1817.md](containerplatforms1817.md).
155
155
 
156
156
  ## 1.8.17 verified container publication
157
157
 
package/docs/browser.md CHANGED
@@ -1,7 +1,24 @@
1
1
  # Saddle browser surface
2
2
 
3
- The root `browser/` directory contains the transport-neutral browser-agent contracts: session state, context, snapshots, fingerprints, Playwright integration, recording and agent orchestration. It is library logic and is shared by callers; it is not a second copy of the desktop UI.
3
+ The root `browser.ts` carries the transport-neutral browser-agent contracts of the engine: session state, context, snapshots, fingerprints, the virtual-browser request/decision/handoff/receipt family, the optional Playwright adapter, recording and agent orchestration (sections 1-9 of the grand merge). It is library logic and is shared by callers; it is not a second copy of the desktop UI.
4
4
 
5
5
  The user-facing browser application is the existing Tauri shell in `desktop/`, which wraps the compiled `web/dist/public` surface on Windows, Linux and macOS. Android and iOS convert the same web output through Capacitor. This boundary keeps browser behavior in the library and keeps presentation and native packaging in their target surfaces.
6
6
 
7
+ ## The Manifest V3 extension migrated to devthink (wave 2 regrouping)
8
+
9
+ The Chrome Manifest V3 extension surface — the former sections 10-17 of `browser.ts` (`extension/permissions`, `extension/protocol`, `extension/content`, `extension/popup`, `extension/pagebridge`, `extension/worker`, `extension/serviceworker`, `extension/build`) — now lives in **`devthink/browserextension.ts`** with every export under the same name and signature. The family rule that drove the move: the saddle is exclusively the virtualization engine (VM / sandbox / microVM / the ninety modalities / vGPU / vCPU) and never touches the browser, GPU, CPU or storage of the user — every feature that runs in the user's browser is not a VM modality and belongs to devthink, the owner of the family extension product (which already packages its own extension through `packageextension.ts` and `crossbrowser.ts`).
10
+
11
+ What moved with the surface:
12
+
13
+ | former saddle root file | devthink root file |
14
+ | --- | --- |
15
+ | `browser.ts` sections 10-17 | `devthink/browserextension.ts` |
16
+ | `manifest.json` (MV3 bridge manifest) | `devthink/extensionmanifest.json` |
17
+ | `popup.html` | `devthink/extensionpopup.html` |
18
+ | `popup.css` | `devthink/extensionpopup.css` |
19
+ | `icon32.png` / `icon64.png` / `icon128.png` | `devthink/extensionicon32.png` / `extensionicon64.png` / `extensionicon128.png` |
20
+ | `tests/extension.test.ts` | `devthink/tests/browserextension.test.ts` |
21
+
22
+ The tracked assets carry the `extension` prefix at the devthink root because devthink already owns its own extension surface (`manifest.json` of record, `popup.ts`, `design.html`) — no root name collides. The build adapter (section 17 of the migrated module) is self-referential: it extracts the seven script sections from `devthink/browserextension.ts` itself, reads `extensionmanifest.json` for the versioned manifest and copies the extension-prefixed assets into an isolated unpacked artifact (default output `build/browserextension`, so it never touches the `build/extension` directory owned by the devthink extension build). The `@wenathlan/saddle/extension` package export and the `extension:build` script retired with the migration — consumers import the surface from the devthink app.
23
+
7
24
  Release filenames identify the user-facing desktop browser with the dotted lowercase pattern `saddle.browser.1.8.14.<format>`. Internal module filenames remain API-compatible unless a deliberate public compatibility migration is documented.
@@ -8,7 +8,7 @@ from a three-platform Linux manifest index to the four-architecture family
8
8
  surface: `linux/amd64`, `linux/arm64`, `linux/ppc64le`, and `linux/s390x`.
9
9
  The selection unifies the container surfaces of the grand merge: the saddle
10
10
  lineage shipped amd64/arm64/ppc64le (the 1.8.17 decision, see
11
- [containerplatforms.1.8.17.md](containerplatforms.1.8.17.md)) and the e2ugh
11
+ [containerplatforms1817.md](containerplatforms1817.md)) and the e2ugh
12
12
  lineage published all four architectures for the virtual-hardware engine
13
13
  (`publish ghcr vhe`). One product, one registry, one architecture surface:
14
14
  the s390x leg joins the node engine from the e2ugh side of the family.
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Canonical root documents
4
4
 
5
- Project policies, notices and contribution guidance remain at the repository root so package consumers and forge interfaces can discover them without entering `docs`. The canonical license is the extensionless `LICENSE` file containing the official unmodified GNU GPL v3.0 text. Human-readable project policies use one Markdown file per context: `acceptable.use.policy.md`, `authors.md`, `bug.report.md`, `cla.md`, `code.of.conduct.md`, `contributing.md`, `copyright.md`, `disclaimer.md`, `eula.md`, `export.control.md`, `governance.md`, `notice.md`, `privacy.policy.md`, `pull.request.template.md`, `security.md`, `support.md`, `terms.and.conditions.md`, `terms.of.use.md`, `third.party.notices.md` and `trademark.policy.md`.
5
+ Project policies, notices and contribution guidance remain at the repository root so package consumers and forge interfaces can discover them without entering `docs`. The canonical license is the extensionless `LICENSE` file containing the official unmodified GNU GPL v3.0 text. Human-readable project policies use one Markdown file per context: `acceptableusepolicy.md`, `authors.md`, `bugreport.md`, `cla.md`, `codeofconduct.md`, `contributing.md`, `copyright.md`, `disclaimer.md`, `eula.md`, `exportcontrol.md`, `governance.md`, `notice.md`, `privacypolicy.md`, `pullrequesttemplate.md`, `security.md`, `support.md`, `termsandconditions.md`, `termsofuse.md`, `thirdpartynotices.md` and `trademarkpolicy.md`.
6
6
 
7
7
  The public scope README remains `/home/ubuntu/upload/README.md` and was not modified. The repository's own `README.md` remains a public project document and can receive release or signing-policy updates separately from the immutable scope reference.
8
8
 
package/docs/extension.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # saddle browser bridge
2
2
 
3
+ > **Migration note (wave 2 regrouping):** the extension surface moved to
4
+ > `devthink/browserextension.ts` (sections 10-17 of the former
5
+ > `saddle/browser.ts`), with its tracked assets at the devthink root
6
+ > (`extensionmanifest.json`, `extensionpopup.html`, `extensionpopup.css`,
7
+ > `extensionicon32.png`, `extensionicon64.png`, `extensionicon128.png`)
8
+ > and its test battery at `devthink/tests/browserextension.test.ts`. The
9
+ > saddle is exclusively the virtualization engine; everything that runs
10
+ > in the user's browser belongs to devthink, the owner of the family
11
+ > extension product. The notes below describe the bridge design and stay
12
+ > accurate for the migrated surface.
13
+
3
14
  This directory contains the first Manifest V3 surface for Saddle. It is a user initiated bridge, not a hidden automation service.
4
15
 
5
16
  ## load unpacked
@@ -7,7 +18,7 @@ This directory contains the first Manifest V3 surface for Saddle. It is a user i
7
18
  1. Open `chrome://extensions`.
8
19
  2. Enable developer mode.
9
20
  3. Choose **Load unpacked**.
10
- 4. Select this `extension/` directory.
21
+ 4. Select the built artifact directory (the unpacked output of the build adapter below).
11
22
  5. Open a page, invoke Saddle from the extension action and choose `Snapshot` or `Read page`.
12
23
 
13
24
  The manifest requests only `activeTab`, `scripting` and `storage`. It does not request broad host permissions, cookies, tabs, webRequest or debugger access. `activeTab` gives temporary access after the user invokes the action for the current tab.
@@ -20,7 +31,7 @@ The content bridge runs in Chrome's isolated world. It exposes bounded page meta
20
31
 
21
32
  ## deterministic release artifact
22
33
 
23
- The Node-only build adapter creates an isolated unpacked artifact with the release version in its manifest. A caller can run `npm run extension:build -- --version 1.8.14 --output build/extension` and package that directory with the archive tool available in the host environment. The release workflow derives the version from the published tag and attaches `saddle.extension.<version>.zip` without changing the source manifest.
34
+ The Node-only build adapter creates an isolated unpacked artifact with the release version in its manifest. A caller can run `node --import tsx ./browserextension.ts --version 1.8.14 --output build/browserextension` from the devthink app root (the retired saddle `extension:build` script went with the migration) and package that directory with the archive tool available in the host environment. The release workflow derives the version from the published tag and attaches `saddle.extension.<version>.zip` without changing the source manifest.
24
35
 
25
36
  ## next slices
26
37
 
@@ -60,7 +60,7 @@ The `fetcher`, browser adapter, persistence adapter, proxy pool, captcha solver,
60
60
 
61
61
  The package exposes explicit subpaths for `./browser`, `./bot`, `./captcha`, `./memory-engine`, `./deploy`, and `./release-evidence`. Desktop, mobile, target-plan and n8n contracts are exported from the root entry; the root entry remains the complete compiled JavaScript API with generated TypeScript declarations for consumers that prefer one import.
62
62
 
63
- The `./extension` subpath exposes browser-neutral message, snapshot and service-worker routing contracts. The concrete Manifest V3 files live in `extension/`; they are not imported by the core at runtime and do not require Chrome when the library is used as a Node package. The browser surface also exposes snapshots, tab/frame context, action results, bounded action batches and recording through `./browser`.
63
+ The former `./extension` subpath retired with the wave 2 regrouping: the Chrome Manifest V3 surface (message, snapshot and service-worker routing contracts, the content and page bridges, the popup and the build adapter) runs in the user's browser, so it is not a VM modality of the engine and migrated to `devthink/browserextension.ts` with every export under the same name. The browser surface keeps exposing snapshots, tab/frame context, action results, bounded action batches and recording through `./browser`.
64
64
 
65
65
  The current release exposes `desktopmanifest`, `mobilemanifest`, `desktopadapter`, `mobileadapter`, `n8nnode`, `n8nmatch`, `n8nexecute`, `controlsurface`, `controlservice`, and `workerbridge`. These factories describe surface boundaries and invoke caller-owned handlers; they do not install a native toolkit, start an n8n server, create a dashboard, or store credentials.
66
66
 
@@ -14,7 +14,7 @@ sandbox seat only through the debonair precedent (4 ids).
14
14
 
15
15
  ## the wiring the wave answered
16
16
 
17
- - **edgelandes.host.ts** (group a, 25 lanes): the sandbox jails
17
+ - **edgelandeshost.ts** (group a, 25 lanes): the sandbox jails
18
18
  (bubblewrap, nsjail, chroot with the fakechroot fallback and the
19
19
  privilege gate), the container extensions (podman, containerd, runc,
20
20
  crun, the docker max/lite/ghcr profiles), the runtimes (clr, workerd),
@@ -25,7 +25,7 @@ sandbox seat only through the debonair precedent (4 ids).
25
25
  keygen law) and the storage daemons (minio mc, garage). every lane
26
26
  probes its binary, runs under the hard deadline in a private temp dir
27
27
  and answers the coded absence when the host carries no runtime.
28
- - **edgelandes.inproc.ts** (group b, 19 lanes): the ram recipes (tmpfs,
28
+ - **edgelandesinproc.ts** (group b, 19 lanes): the ram recipes (tmpfs,
29
29
  mmap, overlayfs, loopram, gitram, zram with the real stored-block
30
30
  zlib stream, zswap with the lru pool, swapfile) behind the oom-guard
31
31
  quota, the delivery protocols (the cdn mirror manifest, the rfc6455
@@ -34,14 +34,14 @@ sandbox seat only through the debonair precedent (4 ids).
34
34
  handshake packet, the postgres startup message, the s3 canonical
35
35
  signer), the webcontainer seat (the frozen module vm) and the
36
36
  local-optin consent gate — pure ts, deterministic, in-process.
37
- - **edgelandes.virtual.ts** (group c, 7 lanes): the virtual hardware
37
+ - **edgelandesvirtual.ts** (group c, 7 lanes): the virtual hardware
38
38
  compositions riding the engine's own catalogs — the full machine, the
39
39
  vgpu mig slice, the screen with the session otp, the driver surface,
40
40
  the kvm plan (the qemu argv through the lazy virtualization domain —
41
41
  the .js specifier graph loads inside the executor, never the boot),
42
42
  the gpuless mesa render and the virgl context. every report says
43
43
  composed, never booted.
44
- - **edgelandes.ninety.ts** (the merge seat): the six heavyweight probes
44
+ - **edgelandesninety.ts** (the merge seat): the six heavyweight probes
45
45
  (browser-server, mobile-capacitor, mobile-postmarketos, pod-session,
46
46
  confidential-sevsnp, confidential-tdx) and the merged lane tables the
47
47
  dispatch plane reads — 73 lanes in the plane, every one carrying its
@@ -106,3 +106,86 @@ planned-only lanes, and the batteries say so.
106
106
  - the six heavyweight lanes stay host (probe only): the execution
107
107
  wiring of a confidential compute seat or a pod session is the next
108
108
  rung, and the registry says so.
109
+
110
+ ## the wiring wave (wave four, pr15 — branch wave/ninety.wiring)
111
+
112
+ the wiring wave closed the last gap of the ninety plan: the registry
113
+ carried the ninety records with 81 live and 9 host while the plane
114
+ drove only 73 lanes — seventeen registry-live modalities waited without
115
+ a lane. the wave wired all seventeen, honestly, and the plane table
116
+ now answers the full plan: **90 lanes, 66 live, 24 host.**
117
+
118
+ ### the state the wave found
119
+
120
+ - the plane: 73 lanes (61 live, 12 host); the registry live set ahead
121
+ of the lane table by seventeen ids — runner-deno, runner-serverless,
122
+ language-rust, language-cargo, language-v, language-dotnet,
123
+ language-php, language-lua, language-zig, language-nim, runner-wasi,
124
+ fs-gitobjects, storage-sqlite, network-dns, network-doh, build-make
125
+ and build-ninja, every one already live in the registry.
126
+
127
+ ### the wiring the wave answered
128
+
129
+ - **edgelandeshost.ts** (group a, +12 lanes): the language toolchains
130
+ (rustc with the compile-then-run seat, cargo with CARGO_HOME and the
131
+ target tree inside the private dir, v with HOME at the temp dir,
132
+ dotnet with the csproj seat and DOTNET_CLI_HOME inside, php, lua, zig
133
+ with the global cache inside, nim with the nimcache inside), the
134
+ runner seats (deno with the scoped read permission and DENO_DIR
135
+ inside, wasi through wasmtime with the base64 module bytes) and the
136
+ build tail (make with the Makefile as the code field, ninja with the
137
+ build.ninja as the code field). every lane probes its binary, runs
138
+ under the hard deadline in the private temp dir and answers the coded
139
+ absence when the host carries no runtime — the twelve ride kind host
140
+ (the runtime probe rung), the twenty-five of the first wave stay kind
141
+ live.
142
+ - **edgelandesinproc.ts** (group b, +5 lanes): the serverless runner
143
+ (the v8 isolate manifest — one fresh node:vm context per run, the
144
+ module fingerprint fnv-1a, the frozen inputs surface), the git
145
+ objects vfs (the loose-object header law and the two-hex-char
146
+ fan-out), the sqlite vault (the hundred-byte page-one header with the
147
+ fnv-1a statement id as the change counter) and the network resolvers
148
+ (the rfc1035 question bytes of dns, the rfc8484 base64url ride of
149
+ doh under the https-only resolver law) — pure ts, deterministic,
150
+ seeded, in-process.
151
+ - **edgelandesninety.ts / edgeplane.ts**: the stale sixty-three
152
+ comments now state the post-wiring truth — ninety lanes, sixty-six
153
+ live, twenty-four host.
154
+ - **the pinned tests**: the host battery 25 → 37 (the twelve wave ids
155
+ in alphabetical order, kind host), the inproc battery 19 → 24 with
156
+ the five samples and the wave four seat laws (the isolate, the
157
+ fan-out, the page and the resolvers), the plane table 61/12 → 66/24,
158
+ and the runner-deno refusal test rewired to the wired truth (a real
159
+ run or the coded absence — the gap it proved is closed).
160
+
161
+ ### the verification the wave recorded
162
+
163
+ - saddle: 30 files / **437 tests green** (436 base + 1 seat law test)
164
+ - the build green, dist carrying both lane files
165
+ - biome zero findings on every file the wave touched
166
+ - the live proof: the plane table answers 66 live and 24 host of 90 —
167
+ /api/v1/edge/lanes now reports the ninety probed lanes
168
+
169
+ ### the honest notes
170
+
171
+ - the twelve host seats ride kind host with real executors: the plane
172
+ probes the runtime and the executor drives it when the host carries
173
+ it — an absent runtime answers HOST_RUNTIME_ABSENT naming the runtime,
174
+ exactly like the live seats of the first wave (the kind answers the
175
+ rung the table reports, the executor answers the run).
176
+ - the inproc seats stay deterministic: fixed fnv-1a addresses, rfc1035
177
+ big-endian fields and stored hex — no clock, no randomness, the same
178
+ payload answers the same bytes every run.
179
+ - this engine host carries make only: the eleven other runtimes answer
180
+ the coded absence here while the make lane proves a real run — the
181
+ batteries stay green on both kinds of host.
182
+
183
+ ## the os nicknames of the owner (reference)
184
+
185
+ sandboxprofile.ts answers five guest os ids — android, grapheneos, linux,
186
+ omarchy, windows — and the owner's spoken names are nicknames of those
187
+ builds, not new ids: marsh (marshmallow) → android, grapenios and grafene
188
+ os → grapheneos, omashi → omarchy, linux normal → linux. the owner's "v"
189
+ names no guest os: it answers the language-v lane of the modality
190
+ registry (the v compiler seat). nothing to add — the vocabulary already
191
+ covers every name the owner used.
@@ -11,14 +11,14 @@ the ladder below — every rung checked before the merge.
11
11
 
12
12
  ## the groups
13
13
 
14
- - group a — edgelandes.host.ts: the host binary lanes (the spawn pattern of
14
+ - group a — edgelandeshost.ts: the host binary lanes (the spawn pattern of
15
15
  edgelandes.ts): the sandbox jails, the container extensions, the runtimes,
16
16
  the screens, the builds, the ci runners, the network tunnels and the
17
17
  storage daemons the host may carry.
18
- - group b — edgelandes.inproc.ts: the in-process pure ts lanes: the ram
18
+ - group b — edgelandesinproc.ts: the in-process pure ts lanes: the ram
19
19
  recipes, the delivery protocols, the storage wire protocols, the
20
20
  webcontainer lane and the local opt-in gate.
21
- - group c — edgelandes.virtual.ts: the virtual hardware composition lanes
21
+ - group c — edgelandesvirtual.ts: the virtual hardware composition lanes
22
22
  that ride the engine's own virtualcpu, virtualgpu and virtualmemory
23
23
  payloads (sandbox.ts) — the full machine, the vgpu slice, the screen, the
24
24
  drivers, the kvm seat, the gpuless render and the virgl slice.
@@ -71,7 +71,7 @@ the ladder below — every rung checked before the merge.
71
71
 
72
72
  ### phase 2a — the host lanes (106)
73
73
 
74
- - [x] 2a.007 write the file header and the imports of edgelandes.host.ts
74
+ - [x] 2a.007 write the file header and the imports of edgelandeshost.ts
75
75
  - [x] 2a.008 export the executor and spec types riding the edgelandes contract
76
76
  - [x] 2a.009 sandbox-bubblewrap: the bwrap probe
77
77
  - [x] 2a.010 sandbox-bubblewrap: the executor (bwrap --ro-bind / / --unshare-all)
@@ -174,7 +174,7 @@ the ladder below — every rung checked before the merge.
174
174
 
175
175
  ### phase 2b — the in-process lanes (82)
176
176
 
177
- - [x] 2b.007 write the file header and the imports of edgelandes.inproc.ts
177
+ - [x] 2b.007 write the file header and the imports of edgelandesinproc.ts
178
178
  - [x] 2b.008 export the executor and spec types riding the contract
179
179
  - [x] 2b.009 ram-tmpfs: the tmpfs mount recipe
180
180
  - [x] 2b.010 ram-tmpfs: the executor (the in-memory fs tree)
@@ -253,7 +253,7 @@ the ladder below — every rung checked before the merge.
253
253
 
254
254
  ### phase 2c — the virtual hardware lanes (41)
255
255
 
256
- - [x] 2c.007 write the file header and the imports of edgelandes.virtual.ts
256
+ - [x] 2c.007 write the file header and the imports of edgelandesvirtual.ts
257
257
  - [x] 2c.008 export the executor and spec types riding the contract
258
258
  - [x] 2c.009 virtual-full: the complete machine composition
259
259
  - [x] 2c.010 virtual-full: the executor (cpu, gpu, memory, boot sequence)
@@ -1,6 +1,6 @@
1
1
  # Saddle 1.8.13
2
2
 
3
- Saddle 1.8.13 carries the active code and release-facing manifests forward from 1.8.12. The previous [1.8.12 release notes](releasenotes.1.8.12.md) remain the canonical record for the licensing and artifact baseline. The comparative 1.8.21 research is planning material and is not presented as a shipped feature.
3
+ Saddle 1.8.13 carries the active code and release-facing manifests forward from 1.8.12. The previous [1.8.12 release notes](releasenotes1812.md) remain the canonical record for the licensing and artifact baseline. The comparative 1.8.21 research is planning material and is not presented as a shipped feature.
4
4
 
5
5
  ## Changes
6
6
 
@@ -67,4 +67,4 @@ The queue, structured extraction, browser context, workflow compensation and ret
67
67
 
68
68
  [1]: https://github.com/wenathlan/saddle "Saddle source repository"
69
69
  [2]: https://github.com/wenathlan/saddle/releases "Saddle release archive"
70
- [3]: https://github.com/wenathlan/saddle/blob/main/docs/releasenotes.1.8.12.md "Saddle 1.8.12 release notes"
70
+ [3]: https://github.com/wenathlan/saddle/blob/main/docs/releasenotes1812.md "Saddle 1.8.12 release notes"
@@ -64,4 +64,4 @@ Local gates passed before the tag was created. Desktop run `31806235468` complet
64
64
 
65
65
  [1]: https://github.com/wenathlan/saddle "Saddle source repository"
66
66
  [2]: https://github.com/wenathlan/saddle/releases "Saddle release archive"
67
- [3]: https://github.com/wenathlan/saddle/blob/main/docs/releasenotes.1.8.13.md "Saddle 1.8.13 release notes"
67
+ [3]: https://github.com/wenathlan/saddle/blob/main/docs/releasenotes1813.md "Saddle 1.8.13 release notes"
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Scope and evidence boundary
4
4
 
5
- This synthesis evaluates the 100 primary repository sources recorded in [repo.research.1.8.16.md](./repo.research.1.8.16.md). It does not copy source code, vendor dependencies, credentials, workflow configuration, service setup, operating assumptions, or claims of the reviewed projects. A candidate that lacked successful primary extraction is retained only as a pending source and is not used as implementation evidence.
5
+ This synthesis evaluates the 100 primary repository sources recorded in [reporesearch1816.md](./reporesearch1816.md). It does not copy source code, vendor dependencies, credentials, workflow configuration, service setup, operating assumptions, or claims of the reviewed projects. A candidate that lacked successful primary extraction is retained only as a pending source and is not used as implementation evidence.
6
6
 
7
7
  The current baseline is Saddle 1.8.15. It already has deterministic storage pools and budgets, working-set planning, archive inspection, transform cache eligibility, provider-chain selection and cancellation plans, declarative delivery/PWA/surface requirements, release asset generation and local checksum verification. The selected 1.8.16 additions must remain additive, TypeScript-first, root-first, dependency-free, serializable and adapter-owned for all privileged or remote effects.
8
8
 
package/docs/todo.md CHANGED
@@ -696,9 +696,9 @@ The following blocks are the execution order for the complete ecosystem. A block
696
696
 
697
697
  - [x] Read the supplied scope references in full, distinguish verified constraints from aspirational proposals, and preserve both files unchanged.
698
698
  - [x] Map the active 1.8.14 engine, exports, tests, package surfaces and release rules against the realistic 1.8.15 opportunity set.
699
- - [x] Create `docs/todo.1.8.15.md` with more than 400 individually checkable research, contract, implementation, test, documentation, validation and release steps.
699
+ - [x] Create `docs/todo1815.md` with more than 400 individually checkable research, contract, implementation, test, documentation, validation and release steps.
700
700
  - [ ] Define a public-repository research rubric and category quota for the 1.8.16 comparative analysis, targeting 100–300 relevant repositories without treating any external implementation as a copy source.
701
- - [x] Create `docs/todo.1.8.16.md` with 600–900 individually checkable steps covering repository research, evidence capture, gap selection, implementation, tests, documentation, release and post-release verification.
701
+ - [x] Create `docs/todo1816.md` with 600–900 individually checkable steps covering repository research, evidence capture, gap selection, implementation, tests, documentation, release and post-release verification.
702
702
  - [x] Review both versioned plans for architectural constraints, security, feasibility, feature ownership and release-gate dependencies before beginning implementation.
703
703
 
704
704
  ### Authorized execution order
@@ -470,7 +470,7 @@
470
470
  - [ ] Verify all active version manifests remain at 1.8.14 until implementation and release notes are ready.
471
471
  - [ ] Bump all active version manifests to 1.8.15 only after the release candidate is validated.
472
472
  - [ ] Update the iOS build number to 1008015 only as part of the validated version bump.
473
- - [ ] Create docs/releasenotes.1.8.15.md from verified claims and the real generated artifact inventory.
473
+ - [ ] Create docs/releasenotes1815.md from verified claims and the real generated artifact inventory.
474
474
  - [ ] Update changelog.md with concise, evidence-backed 1.8.15 entries.
475
475
  - [ ] Update docs/artifactavailability.md using only post-build and post-release evidence.
476
476
  - [ ] Create a commit authored as iakadion after the full local gate passes.
@@ -541,7 +541,7 @@
541
541
  - [x] Derive the 1.8.16 verification check for release evidence only after comparative evidence identifies a concrete gap that does not duplicate an existing Saddle capability. Completed by deterministic acceptance, insufficiency, mismatch, and readiness tests in `tests/engine.test.ts`.
542
542
  - [ ] Derive the 1.8.16 workflow test for release evidence only after comparative evidence identifies a concrete gap that does not duplicate an existing Saddle capability.
543
543
  - [x] Derive the 1.8.16 failure policy for release evidence only after comparative evidence identifies a concrete gap that does not duplicate an existing Saddle capability. Completed by ordered `rejected` and `insufficient` reason codes without positive assurance claims.
544
- - [x] Derive the 1.8.16 documentation for release evidence only after comparative evidence identifies a concrete gap that does not duplicate an existing Saddle capability. Completed in `docs/enginearchitecture.md` and `docs/repo.synthesis.1.8.16.md`.
544
+ - [x] Derive the 1.8.16 documentation for release evidence only after comparative evidence identifies a concrete gap that does not duplicate an existing Saddle capability. Completed in `docs/enginearchitecture.md` and `docs/reposynthesis1816.md`.
545
545
  - [ ] Derive the 1.8.16 contract for cross-runtime compatibility only after comparative evidence identifies a concrete gap that does not duplicate an existing Saddle capability.
546
546
  - [ ] Derive the 1.8.16 capability matrix for cross-runtime compatibility only after comparative evidence identifies a concrete gap that does not duplicate an existing Saddle capability.
547
547
  - [ ] Derive the 1.8.16 import graph audit for cross-runtime compatibility only after comparative evidence identifies a concrete gap that does not duplicate an existing Saddle capability.
@@ -626,15 +626,15 @@
626
626
 
627
627
  ## 8. Documentation, compatibility, and release execution
628
628
 
629
- - [ ] Update docs/repo.research.1.8.16.md with the complete selected repository inventory and source evidence.
629
+ - [ ] Update docs/reporesearch1816.md with the complete selected repository inventory and source evidence.
630
630
  - [ ] Update docs/repo-analysis-1.8.16.json with structured metadata, classification, source paths, and implementation disposition for every analyzed repository.
631
- - [ ] Update docs/repo.synthesis.1.8.16.md with feature-gap rankings, accepted patterns, rejected patterns, and implementation rationale.
631
+ - [ ] Update docs/reposynthesis1816.md with feature-gap rankings, accepted patterns, rejected patterns, and implementation rationale.
632
632
  - [ ] Update docs/gapmatrix.md only after comparing the implemented result against the final 1.8.16 code and tests.
633
633
  - [ ] Update README claims only when a corresponding capability is public, tested, documented, and not caller-owned or speculative.
634
634
  - [ ] Update package exports only for stable, explicitly documented additive contracts.
635
635
  - [ ] Update type declarations and package-import tests for every export-map change.
636
636
  - [ ] Update changelog.md from verified completed work rather than the original research hypothesis.
637
- - [x] Create docs/releasenotes.1.8.16.md only after artifact inventory, signing status, workflows, and registry results are known. The final release record lists 38 attached assets and the manual Android fallback state.
637
+ - [x] Create docs/releasenotes1816.md only after artifact inventory, signing status, workflows, and registry results are known. The final release record lists 38 attached assets and the manual Android fallback state.
638
638
  - [x] Update docs/artifactavailability.md only from generated and remotely verified release evidence. The 1.8.15 and 1.8.16 matrices use published release inventories.
639
639
  - [x] Run npm test, legacy tests, web typecheck, web build, formatcheck, package dry-run, high-severity audit, and flat-native validation on the final candidate. The candidate passed 136 active and 69 legacy tests with all required gates.
640
640
  - [x] Review CI workflows for tag-derived versioning, no hardcoded release version, no exposed secrets, and no unverified publish claim. Tag-triggered registry and asset workflows completed with explicit signing-state boundaries.
@@ -670,7 +670,7 @@
670
670
  - [x] Compare requested operating-system and architecture combinations against Docker Buildx, OCI image-index, Node runtime, and runner support.
671
671
  - [x] Distinguish publishable Linux OCI variants from Windows container variants that require a compatible Windows base image and Windows runner.
672
672
  - [x] Avoid claiming an `unknown` platform as a runnable operating-system or architecture target.
673
- - [x] Select a supported 1.8.17 Linux multi-architecture matrix and record rejected or deferred combinations with their technical reason in `docs/containerplatforms.1.8.17.md`.
673
+ - [x] Select a supported 1.8.17 Linux multi-architecture matrix and record rejected or deferred combinations with their technical reason in `docs/containerplatforms1817.md`.
674
674
  - [x] Review the current container workflow, image base, tags, OCI labels, post-push pull, label verification, and smoke test before modifying it.
675
675
  - [x] Extend the container workflow only for platform combinations that can build and execute the packaged Saddle runtime: `linux/amd64`, `linux/arm64`, and `linux/ppc64le`.
676
676
  - [x] Keep release-tag version derivation, registry credentials, permissions, and the container-first documentation order intact.