@amalgm/shell 0.1.164-preview.36072132286 → 0.1.164-preview.36809057014

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 (475) hide show
  1. package/PURPOSE.md +642 -128
  2. package/README.md +10 -8
  3. package/dist/accepted-tail.d.ts +26 -0
  4. package/dist/accepted-tail.js +37 -0
  5. package/dist/accepted-tail.js.map +1 -0
  6. package/dist/agent-execution.d.ts +16 -1
  7. package/dist/agent-execution.js +13 -5
  8. package/dist/agent-execution.js.map +1 -1
  9. package/dist/apply-cleanup.d.ts +28 -0
  10. package/dist/apply-cleanup.js +166 -0
  11. package/dist/apply-cleanup.js.map +1 -0
  12. package/dist/apply-recovery.d.ts +47 -0
  13. package/dist/apply-recovery.js +99 -0
  14. package/dist/apply-recovery.js.map +1 -0
  15. package/dist/apply-rows.d.ts +72 -0
  16. package/dist/apply-rows.js +150 -0
  17. package/dist/apply-rows.js.map +1 -0
  18. package/dist/apply-saves.d.ts +85 -0
  19. package/dist/apply-saves.js +238 -0
  20. package/dist/apply-saves.js.map +1 -0
  21. package/dist/boot.js +2 -1
  22. package/dist/boot.js.map +1 -1
  23. package/dist/capture-work.d.ts +8 -0
  24. package/dist/capture-work.js +67 -0
  25. package/dist/capture-work.js.map +1 -0
  26. package/dist/cargo-group.d.ts +45 -0
  27. package/dist/cargo-group.js +88 -0
  28. package/dist/cargo-group.js.map +1 -0
  29. package/dist/channel-session.d.ts +4 -2
  30. package/dist/channel-session.js +4 -3
  31. package/dist/channel-session.js.map +1 -1
  32. package/dist/chat-composition.d.ts +2 -0
  33. package/dist/chat-composition.js +1 -0
  34. package/dist/chat-composition.js.map +1 -1
  35. package/dist/cli.js +20 -1
  36. package/dist/cli.js.map +1 -1
  37. package/dist/construct-apply-host.d.ts +4 -2
  38. package/dist/construct-apply-host.js +8 -3
  39. package/dist/construct-apply-host.js.map +1 -1
  40. package/dist/construct-door.js +1 -1
  41. package/dist/construct-door.js.map +1 -1
  42. package/dist/construct-ledger.d.ts +6 -1
  43. package/dist/construct-ledger.js +21 -33
  44. package/dist/construct-ledger.js.map +1 -1
  45. package/dist/content-cache-collection.d.ts +18 -0
  46. package/dist/content-cache-collection.js +99 -0
  47. package/dist/content-cache-collection.js.map +1 -0
  48. package/dist/content-cache-host.d.ts +83 -17
  49. package/dist/content-cache-host.js +335 -95
  50. package/dist/content-cache-host.js.map +1 -1
  51. package/dist/content-cache-namespace.d.ts +59 -0
  52. package/dist/content-cache-namespace.js +210 -0
  53. package/dist/content-cache-namespace.js.map +1 -0
  54. package/dist/content-cache-ownership.d.ts +13 -0
  55. package/dist/content-cache-ownership.js +75 -0
  56. package/dist/content-cache-ownership.js.map +1 -0
  57. package/dist/content-cache-retention.d.ts +23 -0
  58. package/dist/content-cache-retention.js +195 -0
  59. package/dist/content-cache-retention.js.map +1 -0
  60. package/dist/content-capture-pool.d.ts +287 -0
  61. package/dist/content-capture-pool.js +461 -0
  62. package/dist/content-capture-pool.js.map +1 -0
  63. package/dist/content-capture-worker.d.ts +8 -0
  64. package/dist/content-capture-worker.js +109 -0
  65. package/dist/content-capture-worker.js.map +1 -0
  66. package/dist/content-clock.d.ts +42 -0
  67. package/dist/content-clock.js +166 -0
  68. package/dist/content-clock.js.map +1 -0
  69. package/dist/content-direct.d.ts +2 -0
  70. package/dist/content-direct.js +12 -0
  71. package/dist/content-direct.js.map +1 -1
  72. package/dist/content-failure.d.ts +18 -0
  73. package/dist/content-failure.js +38 -0
  74. package/dist/content-failure.js.map +1 -0
  75. package/dist/content-stream-thread.d.ts +60 -0
  76. package/dist/content-stream-thread.js +95 -0
  77. package/dist/content-stream-thread.js.map +1 -0
  78. package/dist/content-stream-worker.d.ts +7 -0
  79. package/dist/content-stream-worker.js +52 -0
  80. package/dist/content-stream-worker.js.map +1 -0
  81. package/dist/declaration-absorption.d.ts +37 -0
  82. package/dist/declaration-absorption.js +119 -0
  83. package/dist/declaration-absorption.js.map +1 -0
  84. package/dist/declaration-chain.d.ts +36 -0
  85. package/dist/declaration-chain.js +96 -0
  86. package/dist/declaration-chain.js.map +1 -0
  87. package/dist/declaration-commit.d.ts +31 -0
  88. package/dist/declaration-commit.js +49 -0
  89. package/dist/declaration-commit.js.map +1 -0
  90. package/dist/declaration-hold.d.ts +22 -0
  91. package/dist/declaration-hold.js +24 -0
  92. package/dist/declaration-hold.js.map +1 -0
  93. package/dist/declaration-journal.d.ts +62 -0
  94. package/dist/declaration-journal.js +99 -0
  95. package/dist/declaration-journal.js.map +1 -0
  96. package/dist/declaration-save.d.ts +31 -0
  97. package/dist/declaration-save.js +134 -0
  98. package/dist/declaration-save.js.map +1 -0
  99. package/dist/detection/accepted-result.d.ts +19 -1
  100. package/dist/detection/accepted-result.js +36 -5
  101. package/dist/detection/accepted-result.js.map +1 -1
  102. package/dist/detection/admission-save.d.ts +55 -0
  103. package/dist/detection/admission-save.js +48 -0
  104. package/dist/detection/admission-save.js.map +1 -0
  105. package/dist/detection/admission-units.d.ts +66 -0
  106. package/dist/detection/admission-units.js +322 -0
  107. package/dist/detection/admission-units.js.map +1 -0
  108. package/dist/detection/alias-discovery.d.ts +12 -0
  109. package/dist/detection/alias-discovery.js +80 -0
  110. package/dist/detection/alias-discovery.js.map +1 -0
  111. package/dist/detection/alias-examination.d.ts +30 -0
  112. package/dist/detection/alias-examination.js +49 -0
  113. package/dist/detection/alias-examination.js.map +1 -0
  114. package/dist/detection/apply-ownership.d.ts +81 -0
  115. package/dist/detection/apply-ownership.js +232 -0
  116. package/dist/detection/apply-ownership.js.map +1 -0
  117. package/dist/detection/basis-advanced.d.ts +11 -0
  118. package/dist/detection/basis-advanced.js +26 -0
  119. package/dist/detection/basis-advanced.js.map +1 -0
  120. package/dist/detection/capture-outcome.d.ts +16 -0
  121. package/dist/detection/capture-outcome.js +92 -0
  122. package/dist/detection/capture-outcome.js.map +1 -0
  123. package/dist/detection/container-membership.d.ts +32 -0
  124. package/dist/detection/container-membership.js +49 -0
  125. package/dist/detection/container-membership.js.map +1 -0
  126. package/dist/detection/detect-cancelled.d.ts +6 -0
  127. package/dist/detection/detect-cancelled.js +10 -0
  128. package/dist/detection/detect-cancelled.js.map +1 -0
  129. package/dist/detection/directory-proof.d.ts +47 -0
  130. package/dist/detection/directory-proof.js +77 -0
  131. package/dist/detection/directory-proof.js.map +1 -0
  132. package/dist/detection/disposition-rows.d.ts +18 -0
  133. package/dist/detection/disposition-rows.js +29 -0
  134. package/dist/detection/disposition-rows.js.map +1 -0
  135. package/dist/detection/dispositions.d.ts +130 -0
  136. package/dist/detection/dispositions.js +248 -0
  137. package/dist/detection/dispositions.js.map +1 -0
  138. package/dist/detection/git-notice.d.ts +88 -0
  139. package/dist/detection/git-notice.js +444 -0
  140. package/dist/detection/git-notice.js.map +1 -0
  141. package/dist/detection/ground-proof.d.ts +130 -0
  142. package/dist/detection/ground-proof.js +274 -0
  143. package/dist/detection/ground-proof.js.map +1 -0
  144. package/dist/detection/ground-reader.d.ts +29 -0
  145. package/dist/detection/ground-reader.js +102 -0
  146. package/dist/detection/ground-reader.js.map +1 -0
  147. package/dist/detection/held-territory.d.ts +51 -0
  148. package/dist/detection/held-territory.js +205 -0
  149. package/dist/detection/held-territory.js.map +1 -0
  150. package/dist/detection/identity-discovery.d.ts +45 -0
  151. package/dist/detection/identity-discovery.js +287 -0
  152. package/dist/detection/identity-discovery.js.map +1 -0
  153. package/dist/detection/maintenance-sweep.d.ts +108 -0
  154. package/dist/detection/maintenance-sweep.js +325 -0
  155. package/dist/detection/maintenance-sweep.js.map +1 -0
  156. package/dist/detection/name-reach.d.ts +12 -0
  157. package/dist/detection/name-reach.js +28 -0
  158. package/dist/detection/name-reach.js.map +1 -0
  159. package/dist/detection/notebook-basis.d.ts +5 -7
  160. package/dist/detection/notebook-basis.js +6 -7
  161. package/dist/detection/notebook-basis.js.map +1 -1
  162. package/dist/detection/owed-selection.d.ts +51 -0
  163. package/dist/detection/owed-selection.js +169 -0
  164. package/dist/detection/owed-selection.js.map +1 -0
  165. package/dist/detection/portable.d.ts +34 -34
  166. package/dist/detection/portable.js +67 -93
  167. package/dist/detection/portable.js.map +1 -1
  168. package/dist/detection/reconciliation-coverage.d.ts +7 -0
  169. package/dist/detection/reconciliation-coverage.js +16 -0
  170. package/dist/detection/reconciliation-coverage.js.map +1 -0
  171. package/dist/detection/repository-publication.d.ts +20 -0
  172. package/dist/detection/repository-publication.js +79 -0
  173. package/dist/detection/repository-publication.js.map +1 -0
  174. package/dist/detection/repository-routes.d.ts +43 -0
  175. package/dist/detection/repository-routes.js +97 -0
  176. package/dist/detection/repository-routes.js.map +1 -0
  177. package/dist/detection/root-examination.d.ts +94 -0
  178. package/dist/detection/root-examination.js +523 -0
  179. package/dist/detection/root-examination.js.map +1 -0
  180. package/dist/detection/runtime.d.ts +131 -64
  181. package/dist/detection/runtime.js +808 -1103
  182. package/dist/detection/runtime.js.map +1 -1
  183. package/dist/detection/scoped-identity-port.d.ts +34 -0
  184. package/dist/detection/scoped-identity-port.js +81 -0
  185. package/dist/detection/scoped-identity-port.js.map +1 -0
  186. package/dist/detection/seal-law.d.ts +66 -0
  187. package/dist/detection/seal-law.js +116 -0
  188. package/dist/detection/seal-law.js.map +1 -0
  189. package/dist/detection/sharing-policy.d.ts +11 -0
  190. package/dist/detection/sharing-policy.js +32 -0
  191. package/dist/detection/sharing-policy.js.map +1 -0
  192. package/dist/detection/thread-database.d.ts +4 -0
  193. package/dist/detection/thread-database.js +30 -0
  194. package/dist/detection/thread-database.js.map +1 -0
  195. package/dist/detection/unreadable.d.ts +11 -0
  196. package/dist/detection/unreadable.js +9 -0
  197. package/dist/detection/unreadable.js.map +1 -0
  198. package/dist/detection/verified-content.d.ts +6 -0
  199. package/dist/detection/verified-content.js +12 -0
  200. package/dist/detection/verified-content.js.map +1 -0
  201. package/dist/detection/walk-law.d.ts +34 -0
  202. package/dist/detection/walk-law.js +55 -0
  203. package/dist/detection/walk-law.js.map +1 -0
  204. package/dist/development/fly-guest.js +2 -1
  205. package/dist/development/fly-guest.js.map +1 -1
  206. package/dist/entity-apply-host.d.ts +29 -13
  207. package/dist/entity-apply-host.js +1426 -461
  208. package/dist/entity-apply-host.js.map +1 -1
  209. package/dist/entity-apply-store.d.ts +77 -30
  210. package/dist/entity-apply-store.js +221 -516
  211. package/dist/entity-apply-store.js.map +1 -1
  212. package/dist/entity-record-observability.js +2 -0
  213. package/dist/entity-record-observability.js.map +1 -1
  214. package/dist/entity-record-saves.d.ts +20 -0
  215. package/dist/entity-record-saves.js +91 -0
  216. package/dist/entity-record-saves.js.map +1 -0
  217. package/dist/entity-record-store.d.ts +15 -7
  218. package/dist/entity-record-store.js +57 -117
  219. package/dist/entity-record-store.js.map +1 -1
  220. package/dist/files-register-host.d.ts +22 -3
  221. package/dist/files-register-host.js +70 -31
  222. package/dist/files-register-host.js.map +1 -1
  223. package/dist/filesystem.js +3 -2
  224. package/dist/filesystem.js.map +1 -1
  225. package/dist/git-binding.d.ts +65 -0
  226. package/dist/git-binding.js +220 -0
  227. package/dist/git-binding.js.map +1 -0
  228. package/dist/git-capture.d.ts +39 -0
  229. package/dist/git-capture.js +86 -0
  230. package/dist/git-capture.js.map +1 -0
  231. package/dist/git-card.d.ts +12 -0
  232. package/dist/git-card.js +123 -0
  233. package/dist/git-card.js.map +1 -0
  234. package/dist/git-checkpoint-construction.d.ts +41 -0
  235. package/dist/git-checkpoint-construction.js +96 -0
  236. package/dist/git-checkpoint-construction.js.map +1 -0
  237. package/dist/git-checkpoint-preparation.d.ts +37 -0
  238. package/dist/git-checkpoint-preparation.js +145 -0
  239. package/dist/git-checkpoint-preparation.js.map +1 -0
  240. package/dist/git-command.d.ts +61 -8
  241. package/dist/git-command.js +217 -63
  242. package/dist/git-command.js.map +1 -1
  243. package/dist/git-configuration.d.ts +40 -0
  244. package/dist/git-configuration.js +217 -0
  245. package/dist/git-configuration.js.map +1 -0
  246. package/dist/git-evidence.d.ts +61 -0
  247. package/dist/git-evidence.js +181 -0
  248. package/dist/git-evidence.js.map +1 -0
  249. package/dist/git-index-entries.d.ts +15 -0
  250. package/dist/git-index-entries.js +44 -0
  251. package/dist/git-index-entries.js.map +1 -0
  252. package/dist/git-index-format.d.ts +35 -0
  253. package/dist/git-index-format.js +293 -0
  254. package/dist/git-index-format.js.map +1 -0
  255. package/dist/git-index-witness.d.ts +33 -0
  256. package/dist/git-index-witness.js +69 -0
  257. package/dist/git-index-witness.js.map +1 -0
  258. package/dist/git-literal-host.d.ts +82 -0
  259. package/dist/git-literal-host.js +172 -0
  260. package/dist/git-literal-host.js.map +1 -0
  261. package/dist/git-literal-read.d.ts +88 -0
  262. package/dist/git-literal-read.js +170 -0
  263. package/dist/git-literal-read.js.map +1 -0
  264. package/dist/git-literal-replay.d.ts +33 -0
  265. package/dist/git-literal-replay.js +268 -0
  266. package/dist/git-literal-replay.js.map +1 -0
  267. package/dist/git-native-file.d.ts +42 -0
  268. package/dist/git-native-file.js +145 -0
  269. package/dist/git-native-file.js.map +1 -0
  270. package/dist/git-native-index.d.ts +21 -0
  271. package/dist/git-native-index.js +44 -0
  272. package/dist/git-native-index.js.map +1 -0
  273. package/dist/git-operation-host.d.ts +48 -0
  274. package/dist/git-operation-host.js +127 -0
  275. package/dist/git-operation-host.js.map +1 -0
  276. package/dist/git-private-index.d.ts +11 -0
  277. package/dist/git-private-index.js +42 -0
  278. package/dist/git-private-index.js.map +1 -0
  279. package/dist/git-private-repository.d.ts +4 -0
  280. package/dist/git-private-repository.js +69 -0
  281. package/dist/git-private-repository.js.map +1 -0
  282. package/dist/git-private-view.d.ts +39 -0
  283. package/dist/git-private-view.js +162 -0
  284. package/dist/git-private-view.js.map +1 -0
  285. package/dist/git-ref-store.d.ts +12 -0
  286. package/dist/git-ref-store.js +68 -0
  287. package/dist/git-ref-store.js.map +1 -0
  288. package/dist/git-registration-host.d.ts +20 -30
  289. package/dist/git-registration-host.js +86 -249
  290. package/dist/git-registration-host.js.map +1 -1
  291. package/dist/git-repository-host.d.ts +148 -22
  292. package/dist/git-repository-host.js +633 -650
  293. package/dist/git-repository-host.js.map +1 -1
  294. package/dist/git-worktree-host.d.ts +2 -0
  295. package/dist/git-worktree-host.js +16 -0
  296. package/dist/git-worktree-host.js.map +1 -0
  297. package/dist/graph-publication.d.ts +75 -0
  298. package/dist/graph-publication.js +203 -0
  299. package/dist/graph-publication.js.map +1 -0
  300. package/dist/ground-basis.d.ts +242 -0
  301. package/dist/ground-basis.js +1023 -0
  302. package/dist/ground-basis.js.map +1 -0
  303. package/dist/ground-checkpoint-worker.d.ts +1 -0
  304. package/dist/ground-checkpoint-worker.js +84 -0
  305. package/dist/ground-checkpoint-worker.js.map +1 -0
  306. package/dist/ground-checkpoints.d.ts +16 -0
  307. package/dist/ground-checkpoints.js +45 -0
  308. package/dist/ground-checkpoints.js.map +1 -0
  309. package/dist/ground-coordination.d.ts +107 -3
  310. package/dist/ground-coordination.js +249 -24
  311. package/dist/ground-coordination.js.map +1 -1
  312. package/dist/ground-database.d.ts +42 -0
  313. package/dist/ground-database.js +290 -0
  314. package/dist/ground-database.js.map +1 -0
  315. package/dist/ground-differences.d.ts +23 -0
  316. package/dist/ground-differences.js +47 -0
  317. package/dist/ground-differences.js.map +1 -0
  318. package/dist/ground-holders.d.ts +4 -0
  319. package/dist/ground-holders.js +15 -0
  320. package/dist/ground-holders.js.map +1 -0
  321. package/dist/ground-initialization-worker.d.ts +1 -0
  322. package/dist/ground-initialization-worker.js +20 -0
  323. package/dist/ground-initialization-worker.js.map +1 -0
  324. package/dist/ground-initialization.d.ts +35 -0
  325. package/dist/ground-initialization.js +102 -0
  326. package/dist/ground-initialization.js.map +1 -0
  327. package/dist/ground-install-saves.d.ts +63 -0
  328. package/dist/ground-install-saves.js +139 -0
  329. package/dist/ground-install-saves.js.map +1 -0
  330. package/dist/ground-inventory-schema.d.ts +18 -0
  331. package/dist/ground-inventory-schema.js +168 -0
  332. package/dist/ground-inventory-schema.js.map +1 -0
  333. package/dist/ground-profile.d.ts +7 -0
  334. package/dist/ground-profile.js +52 -0
  335. package/dist/ground-profile.js.map +1 -0
  336. package/dist/ground-root-index.d.ts +2 -1
  337. package/dist/ground-root-index.js +16 -14
  338. package/dist/ground-root-index.js.map +1 -1
  339. package/dist/ground-row.d.ts +62 -0
  340. package/dist/ground-row.js +70 -0
  341. package/dist/ground-row.js.map +1 -0
  342. package/dist/ground-save-ops.d.ts +44 -0
  343. package/dist/ground-save-ops.js +41 -0
  344. package/dist/ground-save-ops.js.map +1 -0
  345. package/dist/ground-saver-worker.d.ts +1 -0
  346. package/dist/ground-saver-worker.js +156 -0
  347. package/dist/ground-saver-worker.js.map +1 -0
  348. package/dist/ground-saver.d.ts +75 -0
  349. package/dist/ground-saver.js +216 -0
  350. package/dist/ground-saver.js.map +1 -0
  351. package/dist/ground-store.d.ts +84 -0
  352. package/dist/ground-store.js +473 -0
  353. package/dist/ground-store.js.map +1 -0
  354. package/dist/ground-territory.d.ts +130 -0
  355. package/dist/ground-territory.js +511 -0
  356. package/dist/ground-territory.js.map +1 -0
  357. package/dist/index.d.ts +1 -1
  358. package/dist/index.js.map +1 -1
  359. package/dist/installation/ownership.d.ts +0 -2
  360. package/dist/installation/ownership.js +3 -15
  361. package/dist/installation/ownership.js.map +1 -1
  362. package/dist/machine-host.d.ts +3 -2
  363. package/dist/machine-host.js +28 -16
  364. package/dist/machine-host.js.map +1 -1
  365. package/dist/materialized-graph.d.ts +7 -7
  366. package/dist/materialized-graph.js +11 -23
  367. package/dist/materialized-graph.js.map +1 -1
  368. package/dist/module-thread.d.ts +9 -0
  369. package/dist/module-thread.js +10 -0
  370. package/dist/module-thread.js.map +1 -0
  371. package/dist/native/fsevents-stream.node +0 -0
  372. package/dist/physical-path-witness.d.ts +64 -0
  373. package/dist/physical-path-witness.js +168 -0
  374. package/dist/physical-path-witness.js.map +1 -0
  375. package/dist/register-upload-fusion.d.ts +5 -4
  376. package/dist/register-upload-fusion.js +9 -6
  377. package/dist/register-upload-fusion.js.map +1 -1
  378. package/dist/registry-graph.d.ts +3 -2
  379. package/dist/registry-graph.js +9 -6
  380. package/dist/registry-graph.js.map +1 -1
  381. package/dist/registry-page-cache.d.ts +5 -2
  382. package/dist/registry-page-cache.js.map +1 -1
  383. package/dist/repository-identity-steps.d.ts +5 -0
  384. package/dist/repository-identity-steps.js +33 -0
  385. package/dist/repository-identity-steps.js.map +1 -0
  386. package/dist/runtime-node-flags.d.ts +10 -0
  387. package/dist/runtime-node-flags.js +11 -0
  388. package/dist/runtime-node-flags.js.map +1 -0
  389. package/dist/service/adapter.d.ts +1 -1
  390. package/dist/service/adapter.js +1 -1
  391. package/dist/service/adapter.js.map +1 -1
  392. package/dist/service/cli.js +16 -20
  393. package/dist/service/cli.js.map +1 -1
  394. package/dist/service/control.d.ts +2 -2
  395. package/dist/service/keepalive.d.ts +4 -11
  396. package/dist/service/keepalive.js +65 -118
  397. package/dist/service/keepalive.js.map +1 -1
  398. package/dist/service/policy.d.ts +36 -0
  399. package/dist/service/policy.js +25 -0
  400. package/dist/service/policy.js.map +1 -0
  401. package/dist/service/portable.d.ts +1 -1
  402. package/dist/service/portable.js +1 -1
  403. package/dist/service/portable.js.map +1 -1
  404. package/dist/service/recovery.d.ts +10 -9
  405. package/dist/service/recovery.js +29 -19
  406. package/dist/service/recovery.js.map +1 -1
  407. package/dist/service/windows-action.d.ts +5 -3
  408. package/dist/service/windows-action.js +6 -9
  409. package/dist/service/windows-action.js.map +1 -1
  410. package/dist/service/windows-task.js +5 -5
  411. package/dist/service/windows-task.js.map +1 -1
  412. package/dist/sharing-admission.d.ts +17 -0
  413. package/dist/sharing-admission.js +128 -0
  414. package/dist/sharing-admission.js.map +1 -0
  415. package/dist/snapshot-delivery-baseline.d.ts +12 -3
  416. package/dist/snapshot-delivery-baseline.js +41 -42
  417. package/dist/snapshot-delivery-baseline.js.map +1 -1
  418. package/dist/source-proof.d.ts +36 -0
  419. package/dist/source-proof.js +70 -0
  420. package/dist/source-proof.js.map +1 -0
  421. package/dist/source-signature.d.ts +56 -0
  422. package/dist/source-signature.js +56 -0
  423. package/dist/source-signature.js.map +1 -0
  424. package/dist/source-witness.d.ts +15 -0
  425. package/dist/source-witness.js +29 -0
  426. package/dist/source-witness.js.map +1 -0
  427. package/dist/sqlite-durability.d.ts +31 -0
  428. package/dist/sqlite-durability.js +28 -0
  429. package/dist/sqlite-durability.js.map +1 -0
  430. package/dist/sqlite.d.ts +8 -2
  431. package/dist/sqlite.js +27 -4
  432. package/dist/sqlite.js.map +1 -1
  433. package/dist/sync-address.d.ts +19 -0
  434. package/dist/sync-address.js +52 -0
  435. package/dist/sync-address.js.map +1 -0
  436. package/dist/sync-setting.d.ts +15 -0
  437. package/dist/sync-setting.js +13 -0
  438. package/dist/sync-setting.js.map +1 -1
  439. package/dist/turns.d.ts +42 -0
  440. package/dist/turns.js +112 -0
  441. package/dist/turns.js.map +1 -0
  442. package/dist/updates/bootstrap.d.ts +53 -7
  443. package/dist/updates/bootstrap.js +224 -137
  444. package/dist/updates/bootstrap.js.map +1 -1
  445. package/dist/updates/controller.d.ts +8 -0
  446. package/dist/updates/controller.js +27 -3
  447. package/dist/updates/controller.js.map +1 -1
  448. package/dist/updates/store.d.ts +3 -0
  449. package/dist/updates/store.js +12 -0
  450. package/dist/updates/store.js.map +1 -1
  451. package/dist/user-ground-host.d.ts +364 -69
  452. package/dist/user-ground-host.js +5231 -3366
  453. package/dist/user-ground-host.js.map +1 -1
  454. package/dist/watching/fsevents.d.ts +52 -1
  455. package/dist/watching/fsevents.js +60 -25
  456. package/dist/watching/fsevents.js.map +1 -1
  457. package/dist/watching/host.d.ts +129 -5
  458. package/dist/watching/host.js +433 -80
  459. package/dist/watching/host.js.map +1 -1
  460. package/dist/watching/index.d.ts +1 -1
  461. package/dist/wire-binary.d.ts +3 -2
  462. package/dist/wire-binary.js +10 -8
  463. package/dist/wire-binary.js.map +1 -1
  464. package/dist/wire-client.d.ts +3 -4
  465. package/dist/wire-client.js +18 -44
  466. package/dist/wire-client.js.map +1 -1
  467. package/dist/wire-outbox.d.ts +34 -0
  468. package/dist/wire-outbox.js +127 -0
  469. package/dist/wire-outbox.js.map +1 -0
  470. package/dist/workspace-host.d.ts +4 -0
  471. package/dist/workspace-host.js +12 -1
  472. package/dist/workspace-host.js.map +1 -1
  473. package/examinations/fixtures/private-wire-authority.js +133 -10
  474. package/npm-shrinkwrap.json +43 -56
  475. package/package.json +26 -13
package/PURPOSE.md CHANGED
@@ -10,6 +10,56 @@ At the completed brick/mortar boundary, compatible bricks advance through indepe
10
10
  remains the mortar; publishing a brick must not require publishing unchanged
11
11
  Shell code.
12
12
 
13
+ ## Detect and Apply attribution
14
+
15
+ An originating machine may resolve its own accepted publication without
16
+ claiming that every local byte matches the shared result. The proof is the
17
+ exact acknowledged Outbox record, its authoritative Inbox position, and the
18
+ still-current admission attached to the sharing baseline. A new sharing
19
+ decision invalidates the previous admission even if it returns to equal values;
20
+ a metadata refresh does not. Covered member changes invalidate their repository
21
+ owner's admission, while an independent nested repository head does not change
22
+ the outer repository's placement. This outcome preserves physical observation,
23
+ the sharing baseline, and the last verified materialization. Existing effect
24
+ recovery must finish before this shortcut can resolve history. This boundary
25
+ is being implemented; the full native Apply examination has not passed it yet.
26
+
27
+ One read-only view of bound, nonterminal Apply recovery receipts protects original
28
+ participants and source/destination cones during Detect. Root and path coverage
29
+ remain distinct from ownership: the walk leaves each owned cone unread inside its
30
+ root and admits the root's independent units; only a cone containing the root, or
31
+ Register and first-login declaration, defer the whole root. No deferred row is
32
+ refreshed, erased, or admitted through ignore policy. Register and declaration
33
+ recheck exact ownership answers, including absence, alongside the physical and
34
+ SQLite basis; a unit walk relies on its lease, which every later Apply effect
35
+ crosses under its ground hold.
36
+ Terminal commit wakes original receipt scopes before private cleanup. A self-owned
37
+ capture enters original-effect cancellation; a foreign-owned capture releases its
38
+ attempt and waits on the named Apply producer. Neither means the edit was recorded.
39
+ Fresh Apply attempt UUIDs prevent delayed proof from acting on a replacement intent.
40
+ Apply admission and terminal preparation obey that same ownership predicate;
41
+ matching bytes do not release another attempt's recovery responsibility. Original
42
+ participants retain protection at their currently attributed addresses. An
43
+ unfinished Apply holds only its own root: identity continuity is root-local, so
44
+ an object it owns is named within its binding, and an inode number it freed that
45
+ the filesystem gives another root's file holds nothing back there. Detect's
46
+ identity candidates are likewise one root's rows at an object, and a shared
47
+ object joins admission units only within one root; an object's names across
48
+ roots are hard-link aliases, examined each in its own root. Capture
49
+ completion waits only on its actual Watch roots. A binding that cannot be reached
50
+ now is inaccessible, not wrong: its durable intent still owns the ground bound
51
+ there while its receipt, kept in that binding's control tree, waits unread. A
52
+ binding proved to be another object is unsafe. Neither poisons unrelated roots.
53
+ One preimage association represents source roots (including leaves) and descendant
54
+ directories. Primary and collateral renames use one placement checker; cancellation
55
+ repairs only proved O addresses under their actual binding, never B or accepted
56
+ history. Admission and receipt binding share one SQLite write transaction, including
57
+ physical aliases whose pathname leases do not overlap. Private unbound receipt
58
+ files grant no effects and cannot be adopted as earlier effect evidence.
59
+ Controlled full-ideal checks cover these recovery paths, including a stopped
60
+ primary rename and a second Apply targeting a still-owned collateral participant.
61
+ Complete native and multi-machine convergence remain unproved.
62
+
13
63
  ## Operating axioms
14
64
 
15
65
  For outgoing email, Shell supplies its source computer and home directory to
@@ -33,9 +83,10 @@ migration is out of scope because no existing Engine users need it.
33
83
  - **O2 — Failure stays with its owner.** A failed workload degrades its own
34
84
  capability and declared dependants without restarting its parent or unrelated
35
85
  capabilities.
36
- - **O3 — Recovery has an end.** Automatic process recovery reaches sustained
37
- health or a durable parked state within a finite attempt budget that parent
38
- restarts and elapsed backoff cannot replenish.
86
+ - **O3 — The runtime is always on.** Only an operator stop ends it. Every
87
+ other exit is a crash, and a crash is retried forever after a delay capped
88
+ at five minutes; a slow runtime is alive, and only sustained silence ends a
89
+ generation. An update is a trial: the last good release is home.
39
90
  - **O4 — Health observation stays available.** Local control and liveness
40
91
  perform bounded work independently of product readiness, cloud connectivity,
41
92
  and workload size.
@@ -52,6 +103,140 @@ gap to resolve at its owning SDK, not a reason to perpetuate the violation.
52
103
 
53
104
  ## Axioms
54
105
 
106
+ Detect observes physical truth so local files keep their identity whether or not
107
+ sharing policy selects them. Record admits only a coherent selected result;
108
+ Send retries that immutable promise. Physical associations and the sharing
109
+ baseline are distinct inventories, with one permanent UUID domain. The physical
110
+ index retains last-proven-positive associations. Unresolved disappearance keeps
111
+ that association until a complete examination distinguishes a move from removal;
112
+ proved removal releases it, while nonreused UUID revisions and shared history
113
+ remain. An absent row never proves disk absence. Watch/coverage and Add/Apply
114
+ intents own uncertainty; no parallel absent-entity inventory is introduced.
115
+ Every Detect lane now reads physical identity from this index and compares changes
116
+ against the separate sharing baseline. Sharing rows never supply a missing
117
+ physical address or inode association. One explicit
118
+ ground store derives affected dependency keys from actual before/after writes;
119
+ a transaction advances each affected key once and no-op writes advance none.
120
+ An unrelated content edit cannot invalidate another entity's structural basis.
121
+ Every database fact used by one observation must remain jointly valid at
122
+ admission, alongside its closing source proof. An adaptive observer may add a
123
+ previously unread dependency in a short read transaction; it never renews an
124
+ existing dependency token. Admission closes the read set and checks every token
125
+ and complete query predicate together before any write. Apply
126
+ invalidates old observation permission before changing bytes, while its intent
127
+ retains ownership of incomplete effects. Every Detect lane implements selection
128
+ before Record; native completion with excluded local Git state remains open.
129
+ `ground-store.ts` now owns all projection writes and atomic slot permutations.
130
+ `ground-basis.ts` records short coherent original read receipts, with per-UUID
131
+ revisions that survive row removal. Broad Record checks both physical and sharing
132
+ bases. The named lane now accumulates indexed path, candidate, ancestor and
133
+ subtree receipts before closing the read set. Bound Apply receipts protect physical
134
+ attribution. Snapshot callbacks cannot write through the same connection, and repeated reads
135
+ retain their first dependency token. Scoped creation requires a never-used UUID;
136
+ a missing historical UUID needs its own original expectation. Failed
137
+ batches roll back even if their caller catches an individual placement error.
138
+ A shared content edit does not invalidate a separate parent's namespace proof.
139
+ Optional examination evidence preserves each admission batch's original and final
140
+ ground rows and exact appended records after its outer commit, including B-only
141
+ changes. It never reconstructs a prior admission from later database state and
142
+ never becomes another product journal or admission dependency.
143
+ An observation owns every capture it starts until that read settles. Capture
144
+ admission backpressures the walk at its fixed concurrency; failure stops new
145
+ admission and drains already started work before the attempt returns. The same
146
+ capture owner serves Register without changing its enrollment or upload journey.
147
+ Independent read failures survive draining; source churn cannot hide an I/O error.
148
+ Publication ownership never erases known sharing lineage. A child leaving a Git
149
+ parcel requires complete standalone cargo and one record even when unchanged;
150
+ its selected parent transition and required records commit together.
151
+ A pending logical root must have an observed physical coverage owner before
152
+ broad reconciliation can settle it; a missing owner is requested for the next
153
+ held pass without consuming the nested responsibility.
154
+ A named observation retains its physical source evidence until Record; reading
155
+ another file or sealing a repository cannot make an earlier unvalidated read
156
+ safe. Closing proof checks only the retained paths and ancestry, and retains
157
+ owned values rather than caller-mutable Stats objects. Re-proving unchanged
158
+ content retains its already sufficient content-read timestamp; access time alone
159
+ is not a projection mutation or an invalidation of another observation.
160
+
161
+ Each admission closes an original source proof once at its final requested
162
+ position; distinct proof owners and the physical opening/closing bracket remain
163
+ separate. Later phases must recheck the same original evidence. A retained Git
164
+ reuse proof rereads semantic config and stash, then closes all its original
165
+ file, absence, namespace and invocation witnesses. It never replaces a failed
166
+ original with a newly equal digest. Optional seal eligibility may fail without
167
+ discarding independently proved full capture; required reuse failure refuses
168
+ admission. No working-file content or parcel is retained by this proof owner.
169
+ Ongoing broad collection may prepare a provisional reuse decision without an
170
+ intermediate complete close. Its enclosing root and Record boundaries must close
171
+ the retained proof, including zero-record passes. Standalone observations,
172
+ optional seal writes and cold journeys retain their closed contracts.
173
+
174
+ Missing Git metadata keeps the first proved missing entry beneath its original
175
+ physical parent. A missing suffix needs no invented directories. If that entry
176
+ appears, the original proof rejects even when a deeper entry remains absent;
177
+ closing never discovers a replacement reason for absence. Obstructions and read
178
+ errors are not absence, and an obstruction's bytes need not be read. Repository
179
+ availability and storage association remain separate binding obligations.
180
+
181
+ A repository's O row may carry one local configuration-observation stamp.
182
+ It binds the original value-bearing Git answer, invocation and physical binding
183
+ to that UUID and actual observed payload; it is neither shared state nor cargo.
184
+ The same captured configuration supplies Card remotes, so adjacent unrelated
185
+ reads cannot certify a false pair. GroundStore commits the pair atomically. Fresh installation is an explicit
186
+ repository-observation input; ordinary serialized rows may retain a still-valid
187
+ stamp or clear it, but cannot manufacture a new observation by changing a hash.
188
+ A parcel-reuse seal must compare its original configuration and semantic stash
189
+ answers with those that produced the captured result before closing. Two
190
+ independently successful observations never prove that pair. Initial native
191
+ binding acquisition closes once against the subsequently captured prerequisites;
192
+ later ordinary-layout closes retain those original inputs. Routing only compares this
193
+ original O fact with current configuration and never refreshes it. Unknown, changed or unsupported proof retains complete repository
194
+ responsibility, including disappearance of the last configuration contribution.
195
+ Broad parcel reuse compares its freshly proved configuration and native binding
196
+ against the original O stamp too. Other Git state and storage/alias proofs remain separate. Cold journeys may
197
+ leave the fact unknown; B, received packages and acknowledgements cannot supply it.
198
+
199
+ Apply's capture result distinguishes a completed observation from local-only
200
+ changes and unresolved evidence. Live separately checks durable Outbox protection.
201
+ Local-only work retains the intent and waits for a named Detect change before
202
+ further effects; observing bytes never constitutes a backup. A matching target
203
+ permits Verify only when its physical identity is established and no other
204
+ effect remains. Every remaining effect passes the same local-work, preimage
205
+ and destination checks under the complete ground scope. An interrupted effect
206
+ owns a recovery obligation, never arbitrary later edits at its address. Recovery
207
+ cannot be retired until its retained versions have an explicit safe disposition.
208
+ Startup may settle history through an explicitly installed snapshot watermark;
209
+ equality with a sharing row never manufactures a current materialization proof.
210
+ The exact Apply outcome commits before private recovery deletion. The same
211
+ intent then owns only a finite cleanup description; restart dispatches that
212
+ responsibility without current O or old cargo. Cleanup hashes survivors with
213
+ bounded streaming buffers, rejects replacements and unexpected objects, makes
214
+ removal durable, and acknowledges only the matching nonreused terminal token.
215
+ Collision recovery records original UUID-to-address moves and refuses retirement
216
+ while rows and disk disagree. Repository Verify emits only its owned frontier;
217
+ independent nested heads and observed/shared projections remain separate.
218
+ Verify retains the metadata and closing witness from the content read itself,
219
+ and an original database basis collected before deriving its output. Terminal
220
+ commit rejects changed evidence and releases only the failed attempt's lease.
221
+ Directory identity survives content equality: a replaced directory or ancestor
222
+ must be reconciled before adoption or overwrite. Private preimages retain those
223
+ directory identities too. Construct Verify hands its product result to the same
224
+ terminal owner with an explicit absence of filesystem cleanup responsibilities.
225
+ An immutable Apply receipt bounds every resumed effect. A changed forward plan
226
+ does not enlarge that authority: reconcile an explained intermediate physical
227
+ placement against its original basis, commit that correction with cancellation,
228
+ retain newer sharing values and unresolved Inbox, then replan on the same rail.
229
+ Recovery enters through the recorded cones before depending on a new parent or
230
+ package. Every original effect still needs a disposition; unexplained ground
231
+ retains its owner. Exact-target adoption may reach `revealed` without effects;
232
+ that phase alone cannot suppress a later local edit. The current recovery
233
+ cutover has controlled full-ideal evidence, including actual named Detect during
234
+ row-before-rename recovery. The scoped receipt reader, deferred coverage and
235
+ post-terminal wake are integrated as described above; the complete native and
236
+ multi-machine examinations remain open.
237
+ These Apply guard laws and the ignore publication host integration are being
238
+ completed; component evidence is not a full-host pass.
239
+
55
240
  Sync has one persistent machine setting: paused or enabled. An absent setting
56
241
  keeps the existing enabled behavior; pausing persists an explicit choice.
57
242
  It lives outside package generations and changes only by explicit command.
@@ -77,7 +262,8 @@ authority, and Channels sends carry the trusted originating session identity.
77
262
  Until the owner saves Email defaults, Channels suggests them from this
78
263
  computer's last-used preferences; Shell offers them back only when the agent
79
264
  is installed here, resolves with that model, and can send, keeping the
80
- suggested folder only if it exists here and otherwise the agent's own.
265
+ suggested folder only if it exists here and otherwise the agent's own, else the
266
+ Workspaces folder.
81
267
 
82
268
  Registry acceptance and public installability are separate states; publication
83
269
  waits for the exact examined bytes to become readable before recording success.
@@ -94,6 +280,10 @@ Core's snapshot/event projection together, including when Files has no cloud rai
94
280
  One folder remains a direct link; a named group remembers its selected child;
95
281
  neither registration nor removal copies, moves, or deletes the linked contents.
96
282
  The machine workspace root exists before an unscoped chat can use it as its cwd.
283
+ It is the one default folder: agent runs, automation steps, terminals and Email
284
+ start there when nothing else is chosen, and a run started there also receives
285
+ every registered folder outside it as an additional directory. Shell gives Chat
286
+ the same folder, so a chat whose chosen folder is gone starts there instead.
97
287
  Installed machines keep these local links and their event tail in machine state.
98
288
  The registry file is authoritative. Replacement validates the complete registry,
99
289
  flushes private temporary bytes and atomically renames them; a failed write cannot
@@ -110,6 +300,9 @@ A materialized row proves local observation, not completed official delivery.
110
300
  An independent later observation starts from a settled basis only after earlier
111
301
  mutations are accepted, their matching Inbox records resolve, and Apply releases
112
302
  their intents; finite observation flushes do not promise global delivery silence.
303
+ Shutdown can interrupt an Apply-requested observation, but cannot report that
304
+ observation settled. Its exact Watch generation must be proved before the
305
+ capture returns successfully; otherwise the existing intent remains unresolved.
113
306
  Apply retry reads revisit only the requested entities through indexed lookups
114
307
  and the same current eligibility rule used by paged discovery; page position
115
308
  cannot prevent a due entity from being reconsidered.
@@ -184,19 +377,25 @@ Every control mutation carries the expected user, binding and owner generation;
184
377
  the receiving controller verifies that identity before performing the mutation.
185
378
  Authenticating a response after an effect cannot authorize that effect.
186
379
  Layer 1 keeps one usable runtime available while the OS session can execute.
187
- Core supplies its retry allowance, backoff and health timings; Shell records
188
- each launch in a durable SQLite journal before spawning. Neither elapsed time,
189
- controller replacement nor repeated service starts grants another attempt.
190
- Only sustained ready IPC health or an explicit `service retry` resets the
191
- allowance. Exhaustion parks the child while its controller retains ownership,
192
- status and stop/retry control; intentional shutdown never launches a replacement.
380
+ One always-on policy (`src/service/policy.ts`) governs the copied launcher, the
381
+ controller and the Windows action alike: only an operator stop ends the runtime,
382
+ and every other exit restarts after a doubling delay capped at five minutes,
383
+ forever. Shell records each launch in a durable SQLite journal before spawning,
384
+ so controller replacement and repeated service starts neither reset the delay
385
+ nor make anyone wait twice; sustained ready IPC health, an explicit
386
+ `service retry` or an authorized update resets it. Any answer to an outstanding
387
+ health question proves life however late it arrives; only a long run of on-time
388
+ checks left unanswered ends a generation. Intentional shutdown never launches a
389
+ replacement, and every stop records its reason.
193
390
  Native registration belongs to the current OS account even when the installation
194
391
  uses another data home. Windows Task Scheduler owns a hidden action in that
195
- account's logged-in session; the action owns controller exit recovery using
196
- Core's restart policy. Scheduler launch retries alone cannot recover a program
197
- that started successfully and then exited.
198
- The stable bootstrap retains a bounded result for each controller launch role,
199
- including failures before the controller can open its own log.
392
+ account's logged-in session; the action owns controller exit recovery using the
393
+ same policy. Scheduler launch retries alone cannot recover a program that
394
+ started successfully and then exited.
395
+ The copied launcher retains a bounded result and stop reason for each controller
396
+ launch role, including failures before the controller can open its own log. It
397
+ upgrades itself: a launcher that finds a newer revision installed exits at its
398
+ next launch boundary so the OS starts the new one.
200
399
  Before launching any controller, the Windows action joins its own unnamed,
201
400
  non-inheritable, kill-on-close Job Object; every descendant remains inside that
202
401
  lifetime boundary, and only action termination releases its owning handle.
@@ -211,6 +410,23 @@ Native Watch opens the OS-resolved physical directory; portable or short-name
211
410
  aliases cannot become a second path grammar inside a kernel handle.
212
411
  Persistent SQLite handles use the OS namespace for the selected file, including
213
412
  Windows extended paths; a host API's legacy path limit cannot select another file.
413
+ That namespaced name is the file's one name: every registry keyed by a ground
414
+ file uses the name its connections report, so no spelling selects a second
415
+ owner. Releasing a ground file settles only once no thread of the process holds
416
+ it, so the final checkpoint is part of closing and Windows can remove it after.
417
+ Git's environment is read with the platform's own name rules; Windows names are
418
+ case-insensitive, so `Path` is PATH and an inherited `git_dir` is still Git's.
419
+ Each requests F_FULLFSYNC where the platform has it, because a plain macOS fsync
420
+ can leave a commit in the drive's cache. Every write to a ground file is a
421
+ named save run by that file's one saver thread (`src/ground-saver.ts`): saves
422
+ posted while a commit flushes form the next batch, each in its own savepoint,
423
+ committed once at synchronous=FULL. A save settles only once the drive holds
424
+ it, so Send submits only durable Outbox rows; the main thread's ground
425
+ connections only read, so it never waits for the drive. Detect reports the
426
+ journal, synchronous and fullfsync settings the saver committed under.
427
+ Whatever launches the runtime process names the Node flags of
428
+ `src/runtime-node-flags.ts`: a bounded young generation keeps each of the main
429
+ thread's garbage-collection pauses to a few milliseconds.
214
430
  Durability acknowledgements require the native flush to succeed through a handle
215
431
  with the access it requires; a failed flush cannot become a successful install
216
432
  or materialization. Each writer owns the durability of the files it creates.
@@ -372,9 +588,10 @@ links and groups persist as one validated registry replacement before events are
372
588
  published. Disk remains authoritative after a failed persistence acknowledgement;
373
589
  corrupt and unsupported documents are refused, never replaced with defaults.
374
590
  Each streamed response owns its source through completion or client disconnect.
375
- Installation format 3 reads prior direct-link and group records and the Chat
376
- journal with durable turn usage. Its receipt advances before any product opens
377
- writable state; format-1 and format-2 runtimes cannot recover after adoption.
591
+ The installation format, declared once as `RUNTIME_FORMAT`, reads every earlier
592
+ direct-link, group, and Chat journal record. Its receipt advances before any
593
+ product opens writable state; a runtime built for an older format cannot recover
594
+ after adoption.
378
595
 
379
596
  14a. **Automations CLI is one service-owned command surface.** Shell discovers
380
597
  the selected signed-in runtime, supplies its loopback admission credential,
@@ -407,10 +624,11 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
407
624
  cloud, and Watch work use the established owners rather than constructing a
408
625
  second lifecycle. Register waits through graph reconciliation, healthy
409
626
  coverage, capture of every repository parcel, immutable upload, and
410
- graph-head commit before it returns. An uncapturable repository may settle
411
- its local type and identity evidence, but Register fails and retains its
412
- durable declaration; no graph containing a `repo.git` without its verified
413
- Card + Checkpoint transport can become the cloud head. The
627
+ graph-head commit before it returns. An uncapturable repository refuses
628
+ Register, which then admits and journals nothing; Live's binding and
629
+ reference stay durable, so a retry declares the same workspace. No graph
630
+ containing a `repo.git` without its verified Card + Checkpoint transport
631
+ can become the cloud head. The
414
632
  watcher established after authoritative materialization remains the one
415
633
  ongoing watcher; the CLI never creates and immediately closes a second
416
634
  Watch lifecycle. Closing an unchanged watcher does not invent a full scan. A
@@ -428,15 +646,23 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
428
646
  is still the same device, inode, and filesystem creation generation its
429
647
  content handle was opened on, that handle already covers everything inside
430
648
  and the ring adds nothing; missing ground, a lost handle, or a replaced
431
- directory retires the handle, re-establishes coverage, and puts the
432
- complete root in question. On macOS
433
- each handle is its own FSEvents stream through the `fsevents` binding, so
649
+ directory retires the handle and re-establishes coverage. The blind
650
+ interval could hide an effect through an alias in any root, so every root
651
+ is put completely in question. On macOS
652
+ each handle is its own FSEvents stream through Amalgm's own binding
653
+ (`native/fsevents/`), which asks for per-file events delivered without
654
+ coalescing delay, so a ring reaches Detect at the platform floor and
434
655
  opening or closing one never interrupts another; Node's own watcher serves
435
656
  every handle in the process from one stream that it recreates, resuming
436
657
  from the present, on every change, and loses the events in between.
437
658
  Initialization failure or handle death is reported as degraded, retains
438
659
  full-root suspicion, and retries independently of Detect; it can never be
439
- reported as active coverage.
660
+ reported as active coverage. A Linux descendant directory the tree cannot
661
+ enter is not lost coverage: its parent hears it. One that vanished needs
662
+ no handle. One this process may not read keeps any handle it already had,
663
+ and Detect names that ground unavailable, until an event on its name asks
664
+ again; entering it then ends an interval no handle heard, so its whole
665
+ root is put in question. Only the root's own failure is lost coverage.
440
666
 
441
667
  17. **Independent content may travel concurrently; authority remains atomic.**
442
668
  The host bounds parallel uploads for small immutable objects and processes
@@ -496,20 +722,79 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
496
722
  Hashes, manifests, caches, and R2 protection always prove the exact decoded
497
723
  bytes; incompressible input travels unchanged.
498
724
 
499
- 21. **Watch events preserve suspicion until proof.** Watch records only the
500
- producing handle plus an optional relative path: a named event preserves
501
- that hint and a nameless or invalid event widens to the complete covered
502
- root. It does not read `.amalgmignore`, inspect `.git`, classify a file, or
725
+ 21. **Watch events preserve suspicion until proof.** Watch preserves the
726
+ producing handle, optional path, and native evidence that widens its scope.
727
+ A named event preserves that hint; loss or possible hardlink effects require
728
+ one examination across every configured materialization root. Such a shared
729
+ obligation settles only when every participating root completes against the
730
+ same frozen Watch generation and binding set. Unavailable ground remains
731
+ pending; a changed binding set requires a new complete examination. Native
732
+ event IDs are diagnostics, never identities or settlement cutoffs. Unexpected
733
+ coverage loss retains one episode through repeated reopen failures; its
734
+ qualifying observation starts only after replacement coverage is healthy.
735
+ Detect waits on the existing recovery wake while coverage is unavailable.
736
+ A later coverage loss invalidates an in-flight recovery proof. Ordinary
737
+ unnamed notifications retain complete covered-root suspicion. Watch does not
738
+ read `.amalgmignore`, inspect `.git`, classify a file, or
503
739
  infer create, move, rename, and delete semantics. Detect reads live policy
504
740
  and repository evidence when it observes the suspicion. Only Core's fixed
505
- `.amalgm/` control subtree is structurally outside Files ground and may be
506
- dropped at the host callback boundary. A scan settles only the generations
741
+ `.amalgm/` control subtree is structurally outside Files ground. Its named
742
+ notices may be dropped only after native scope ambiguity has been preserved.
743
+ A scan settles only the generations
507
744
  it observed, so an event received during that scan remains pending.
508
-
509
- 22. **Git supplies clean repository evidence.** Registration obtains clean
510
- tracked leaf identity and text/binary classification from Git's index,
511
- attributes, and object database. It reads worktree bytes only for dirty or
512
- untracked leaves. Git ignore never becomes Amalgm enrollment policy.
745
+ An object's change is a change at every one of its names: a committed name
746
+ whose object changed, or which left an object with another name, rings each
747
+ other name the inventory holds for it, in any root, unless that alias is
748
+ already recorded at the committed stat. Native alias evidence names the
749
+ objects a name held (the FSEvents file ID is the inode); each such object
750
+ rings every name the inventory holds for it before the cut is proved, and
751
+ a hint whose objects are unknown rings the domain. Each alias is read as
752
+ its own name in its own root; bytes and identities never propagate between
753
+ names.
754
+
755
+ 22. **Physical bytes supply worktree evidence.** Git's index describes stored
756
+ blobs, not necessarily the files on disk. Shell derives a worktree leaf's
757
+ type and payload from the same stable byte observation; any NUL means
758
+ binary, including beyond Git's preview window. Index flags, attributes
759
+ and checkout conversions cannot suppress that observation or choose its
760
+ type. A Git object identity is reusable only with proof of raw byte
761
+ equality. Checkpoint replay preserves those exact bytes independently of
762
+ receiver settings. Git ignore never becomes Amalgm Detect policy.
763
+ Observation cannot alter Git object timestamps either: source object
764
+ alternates are read-only inputs, and every object-writing command runs
765
+ with private storage alone. Patch writers copy only their required base
766
+ blobs into that private storage first.
767
+ Indexed and untracked inventory share one native-index observation, read
768
+ without a Git process and versioned by what capture means by an index:
769
+ its stage listing, exactly what `git ls-files --stage -z` writes
770
+ (`src/git-index-format.ts`). Capture asks nothing else of an index, so a
771
+ refresh that re-stamps stat data, a version change, or entries moving
772
+ between a split index and its shared base leave every answer drawn from
773
+ it standing; the witness keeps the bytes it decoded and decodes again
774
+ only when they differ. Git lists untracked names over copied index bytes,
775
+ and repository/storage bindings remain valid through closing capture. One Git binding owner retains the original effective
776
+ invocation and lexical/resolved directory associations. It re-resolves
777
+ through Git at each bracket; one framed batch replaces four commands, with
778
+ scalar fallback preserving embedded or trailing newlines. No incomplete
779
+ config-source list can authorize cached location reuse. Special index files are refused with nonblocking, no-follow
780
+ reads. Only the shared base a split index names is read, from the Git
781
+ directory before the index's own as Git reads it, and its checksum must
782
+ match the link. Observation never freshens a shared base; that timestamp
783
+ refresh remains Git's own work. Thin-pack export reads borrowed objects through the
784
+ private repository without source remote configuration. Checkpoint decoding
785
+ and member verification have one private preparation owner, separate from
786
+ index installation and working-file effects. Replay consumes and closes that
787
+ preparation; it does not maintain a second package validator. Sparse directory
788
+ entries currently cause an explicit unsupported-index refusal, never an
789
+ incomplete index or an alternate-enabled index writer; the native decoder
790
+ refuses them before any Git process could expand them. A form Git never
791
+ writes, or a required extension Git would not understand, is refused
792
+ rather than guessed. A zero split link has no shared-base dependency.
793
+ Fast reuse closes the complete metadata/namespace proof, whose index
794
+ member is its meaning; its presence tags distinguish absent files from
795
+ all possible bytes.
796
+ Shared registration inspection closes its physical and boundary witnesses
797
+ against that same native-index basis.
513
798
 
514
799
  23. **Cold add never rereads a repository graph.** Download verifies and
515
800
  seals each content-addressed transport to a file, streams its Git pack
@@ -524,6 +809,19 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
524
809
  entity identity. Missing, corrupt, or obsolete cache bytes are removed and
525
810
  recomputed from authoritative local ground; they never become a legacy
526
811
  compatibility requirement and never prevent the machine from resuming.
812
+ A cache name appears only over durable bytes: every writer makes a staged
813
+ file durable before renaming it into place, so an existing name already
814
+ holds that immutable object and a rename over it replaces identical
815
+ durable bytes. Staged cargo becomes durable in groups: its bytes are
816
+ written through to the device, and one barrier covers every writer that
817
+ staged before the barrier began (on macOS, one drive flush), so a burst of
818
+ captures never waits for one full flush per file. A barrier stalls the
819
+ staging still in flight, so a pass that captures a set names it together
820
+ once the whole set has staged, as Git batches object writes behind one
821
+ flush: one barrier per pass, and none while its reads run. Before Record admits
822
+ captured cargo it flushes the cache directories off the event loop only
823
+ when a required name is not yet known durable; a crash can lose an
824
+ unrecorded name, never leave a Record naming torn bytes.
527
825
  A pending Send consults its capture-derived manifest and the authority's
528
826
  immutable inventory before opening local cargo: after upload succeeded but
529
827
  before its acknowledgement became durable, complete cloud cargo is enough
@@ -533,7 +831,9 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
533
831
  the entity's existing bytes. When the negotiated wire supports it and all
534
832
  declared cargo is bounded, Shell supplies the cached manifest and blocks to
535
833
  Live for the same submit frame; otherwise it uses the ordinary missing-block
536
- effect. The cloud, not Shell, owns the final seal-before-number decision.
834
+ effect. A cached manifest is read off the main thread and is only a hint:
835
+ an absent or invalid one takes the ordinary obtain-or-derive path, and the
836
+ cache use that protects it lasts until the read finishes. The cloud, not Shell, owns the final seal-before-number decision.
537
837
  Cache bytes remain only while an unresolved durable operation names their
538
838
  content head or while the current verified text or repository head is the
539
839
  one exact base for that entity's next delta. Once Send acceptance is
@@ -649,27 +949,42 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
649
949
  older Detect transaction settles first and any newer Watch generation
650
950
  waits until adoption finishes. Register
651
951
  and Watch enumerate the same durable binding inventory, so a missed
652
- notification for rendering the portable reference cannot make either the
653
- reference row or its declared external
654
- boundary disappear from registration. Registering an enclosing parent
655
- reuses every known descendant UUID and rewrites containment/root projection atomically;
656
- overlapping registrations never create a second identity family.
952
+ notification for rendering the portable reference cannot lose a
953
+ declaration. A bound root that no Register has committed is held: it is
954
+ covered but stays `catching-up`, and Detect neither walks nor shares it
955
+ or its reference until Register declares it again under the same UUID.
956
+ Register admits exactly its declaration — the walked workspace, its
957
+ reference, and any core ancestor the accepted view lacks — beside one
958
+ journal row, and nothing else.
959
+ Registering ground that encloses workspaces this machine already
960
+ materializes absorbs each one the authority holds as its own active root.
961
+ Every identity is kept. Only the absorbed root's own record changes: its
962
+ parentUUID and name become where the enclosing walk found it, and a
963
+ `workspace` becomes a `folder`. The head drops that root in the same
964
+ commit. Absorbed ground rides as the accepted graph and the sharing
965
+ baseline already hold it, so local work there stays owed to ordinary
966
+ Detect, and it is held with the enclosing workspace until the authority
967
+ accepts that declaration; a refusal keeps both held until Register runs
968
+ again. Enclosed ground that is still held, was never accepted, is accepted
969
+ inside a root the new ground does not enclose, or is not active refuses
970
+ Register. Ground inside a materialized workspace is refused, because that
971
+ graph already holds it. Overlapping registrations never create a second
972
+ identity family.
657
973
  Register success is scoped to the selected workspace's SQLite row, its
658
974
  exact durable reference row, immutable content, cloud-head membership for
659
- both identities, and healthy coverage; merely finding a previously
660
- discovered nested target is not completed registration. It never waits for
661
- unrelated Watch traffic across the machine to become silent.
662
- Registration consumes the suspicion created when Watch reconciles the new
663
- durable root. Its cold proof reads only core reference ground and the one
664
- physical coverage family containing that boundary; it never enumerates,
665
- scans, or reprojects unrelated existing roots. Any unrelated suspicion
666
- remains ordinary ongoing work of the same host.
667
- Re-declaring a workspace already present in local identity and the cloud
668
- head is therefore an idempotent proof, not a second Detect scan; Watch
669
- continues to own subsequent content changes. Ending any cold command
670
- rearms a Watch generation that arrived while that command temporarily
671
- suppressed Detect; a successful idempotent proof cannot strand pending
672
- suspicion.
975
+ both identities, and healthy coverage. It never waits for unrelated Watch
976
+ traffic across the machine to become silent.
977
+ Register's one walk of the workspace consumes the complete suspicion of
978
+ its new coverage. The core records it declares derive from their two
979
+ addresses; it never enumerates, scans, or reprojects core or unrelated
980
+ existing roots. Any unrelated suspicion remains ordinary ongoing work of
981
+ the same host.
982
+ Re-declaring a workspace the accepted view already holds as its own root
983
+ publishes no head and walks nothing: it proves cargo closure (31) and
984
+ returns, and Watch continues to own subsequent content changes. Ending
985
+ any cold command rearms a Watch generation that arrived while that
986
+ command temporarily suppressed Detect; a successful idempotent proof
987
+ cannot strand pending suspicion.
673
988
  31. **A cold graph publication proves cargo closure under the current
674
989
  contract.** A replacement of the selected complete logical roots is one
675
990
  atomic cloud operation; unrelated roots already held by authority are
@@ -679,14 +994,16 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
679
994
  content sealed only under a prior content contract, whose namespace the
680
995
  current readers never touch. Only the authority's durable seal for the
681
996
  exact (resource, content hash, current content contract) proves an
682
- artifact's cargo. Before advancing the head — and before answering an
683
- idempotent re-declaration — the machine asks the authority which of its
684
- locally materialized content heads are sealed under the current contract
685
- and uploads exactly the remainder, so Register re-establishes cargo
686
- closure before returning even when the graph itself is unchanged. The
687
- finite publication journal retains this exact upload subset across
688
- retries. This remains true when the local materialization boundary has a
689
- portable parent outside the local projection.
997
+ artifact's cargo. Before advancing the head, the machine asks the
998
+ authority which content heads the declaration names are sealed under the
999
+ current contract and uploads exactly the remainder; every one is sealed
1000
+ before its journal row exists, so a replay carries only graph pages.
1001
+ Before answering an idempotent re-declaration, it asks the same of every
1002
+ content head the accepted workspace names and re-ships each lacking one
1003
+ that its cache or ground still holds exactly. One overtaken here already
1004
+ travels as its own Record; the stage names how many it could not restore.
1005
+ This remains true when the local materialization boundary has a portable
1006
+ parent outside the local projection.
690
1007
 
691
1008
  32. **Coverage precedes recovery, and coverage is not currency.** On process
692
1009
  start Watch first opens the same durable root topology, then Detect closes
@@ -740,12 +1057,12 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
740
1057
  35. **Container membership is version input, never cargo.** A workspace or
741
1058
  folder derives its logical version from the UUIDs and names of active
742
1059
  direct children, while its portable and notebook `payloadVersion` remains
743
- null. Shell normalizes that boundary before Detect and after every Apply
744
- projection transaction. An independently ordered container receipt may
745
- therefore create, move, or rename its address, but it can never overwrite
746
- membership already established by child UUID rows or emit a second
747
- container mutation for that derivation. Local adapter evidence can never
748
- masquerade as a transferable content head.
1060
+ null. Every Shell writer stores only the derived version, and Live's cloud
1061
+ codec refuses a container payload. An independently ordered container
1062
+ receipt may therefore create, move, or rename its address, but it can never
1063
+ overwrite membership already established by child UUID rows or emit a
1064
+ second container mutation for that derivation. Local adapter evidence can
1065
+ never masquerade as a transferable content head.
749
1066
 
750
1067
  36. **Portable path grammar becomes a native path only at the host boundary.**
751
1068
  Core and Live describe path components with `/`; Shell performs portable
@@ -786,7 +1103,24 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
786
1103
  every covered root suspect, retires native Watch handles, and then performs
787
1104
  one final Detect/Record pass. Native events cannot make shutdown unbounded;
788
1105
  changes after the cutoff remain inside the blind interval that startup
789
- catch-up is required to close.
1106
+ catch-up is required to close. Neither can a writer that keeps changing
1107
+ ground: the final pass reads again only a racy listing, whose wait is
1108
+ bounded, and reports any root whose ground still moved as incomplete,
1109
+ never as a wait. A systemic fault fails shutdown after teardown; ground
1110
+ that cannot be read is unsettled, not a fault. Otherwise an incomplete
1111
+ answer names every cause that applies, each on its own: the unfinished
1112
+ Apply intents that own ground, the roots still moving, the roots that
1113
+ could not be read and the roots Git refused. An intent whose binding
1114
+ cannot be reached is named with that binding as unreadable ground; a
1115
+ binding proved to be another object fails shutdown, and the old intent
1116
+ never acts on it. One cause never erases another, and the answer does
1117
+ not depend on the order in which lanes parked. Network delivery is not
1118
+ part of the cutoff. Apply's last flush and Send's last delivery share one
1119
+ finite network budget; once it is spent, closing the wire cancels what is
1120
+ still in flight, Apply keeps its durable intent, and shutdown reports the
1121
+ records still saved locally, naming those sent without an answer. It
1122
+ never calls them synchronized: they send again under the same mutation
1123
+ identity when Files next starts.
790
1124
 
791
1125
  43. **Record commits evidence before Watch settles.** The host reconciles a
792
1126
  Watch generation against one last-verified detection notebook, writes the
@@ -806,42 +1140,36 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
806
1140
  observes fresh truth; stale evidence can never overwrite proof or create an
807
1141
  outgoing echo.
808
1142
 
809
- 44. **One Detect job proves one finite Watch generation, root by root.** A
810
- scheduled pass or explicit flush observes and settles only the generations
811
- it froze before reading truth, and it observes only roots with pending
812
- suspicion. A root that no callback rang costs nothing: no walk, no
813
- notebook plan, no repository inspection, no ground coordination. Each rung
814
- root is first proved on its own named lane and settled as soon as its
815
- transaction is durable; only a root the named lane declines widens to
816
- reconciliation, and only that root. Metadata noise inside one repository
817
- root is proved inside that root. Two facts alone can pull an unobserved
818
- root into a pass: core ground missing a portable reference for a binding,
819
- and a bound root that has never produced a row. Large walks yield the
820
- event loop periodically so the wire, Receive, and Apply keep running while
821
- a root is proved; a ring during that yield remains a later generation. An explicit flush waits until the cutoff it created is
822
- settled even when it first joins an older in-flight Detect job. Neither
823
- success nor failure from that older job decides the later cutoff. A ring
824
- received during that read remains pending and owns a later bounded pass;
825
- no caller waits for the operating system
826
- to become globally silent. This keeps duplicate or continuous native
827
- callbacks from making an otherwise complete Record operation unbounded
828
- without dropping any suspicion.
829
-
830
- 45. **Named Detect is independent of workspace size.** Shell holds one
831
- prepared SQLite owner for the live Detect runtime. A named path uses one
832
- indexed row, its parent chain, one stat, changed bytes when required, and
833
- one transaction. Structural work widens only to the affected subtree;
834
- repository work widens only to its Card + Checkpoint territory. A named
835
- disappearance is ambiguous between deletion and a move whose destination
836
- event has not arrived, so Detect widens that materialized root before
837
- removing its physical identity evidence. A destination-only event that
838
- carries a known inode across a repository boundary widens for the same
839
- reason: old and new addresses must reconcile in one identity pass.
840
- Git's transient lock files (`index.lock`, `HEAD.lock`, ref locks) are
841
- settlement evidence, not repository state: while a named lock still
842
- exists, that root remains unsettled and retries without inspecting Git or
843
- reading the worktree. Once the lock disappears, Detect captures Card +
844
- Checkpoint once even if the OS emitted no second filename callback. Shell's
1143
+ 44. **One Detect job owns finite original Watch cutoffs.** A pass settles
1144
+ only the generations it froze before reading truth. Later notifications
1145
+ remain pending even when they arrive during a yielding walk. Named work
1146
+ uses its closed dependency scope; identity ambiguity, lost attribution or
1147
+ coverage recovery can require a complete materialization domain. That
1148
+ cohort admits and settles only as a whole. Independent periodic freshness
1149
+ is a separate reason to examine silent roots, never a fabricated native
1150
+ notification. An explicit flush retains its original completion boundary
1151
+ across older in-flight work and later recurrence. No caller waits for the
1152
+ operating system to become globally silent.
1153
+
1154
+ 45. **Detect scope follows its proof dependencies.** Shell holds one
1155
+ prepared SQLite owner for Detect. A qualified named observation uses
1156
+ indexed identity, original parent/sibling context, physical witnesses and
1157
+ changed bytes. It widens when those facts cannot close attribution; an
1158
+ edit through a vanished alias reaches the object's remaining names through
1159
+ the object native evidence saw, even when no row ever occupied that path,
1160
+ and widens only when that object is unknown. Old and new addresses reconcile
1161
+ under the same complete identity law. Ordinary structural changes still
1162
+ use broad reconciliation; constant-time named work is not a current claim.
1163
+ Git lock filenames (`index.lock`, `HEAD.lock`, ref locks) are notices,
1164
+ not repository state or proof that reading is unsafe. Detect reads the
1165
+ committed index and current physical bytes and closes their normal source
1166
+ witnesses even while a lock exists. A lock says only when a rung lane
1167
+ reads: a writer lock younger than 750 ms (the one-second Git budget less
1168
+ an ordinary read's 250 ms) holds its repository as moving ground until the
1169
+ lock's release rings or the lock stops holding, and the held lane parks
1170
+ for exactly that deadline. Moving evidence without a known deadline
1171
+ retries after 250 ms. A stale lock therefore cannot prevent completion
1172
+ and is never deleted by observation. Shell's
845
1173
  own background Git reads disable optional locks so observation never rings
846
1174
  itself merely by refreshing the index.
847
1175
  Nameless, invalid, startup, and
@@ -878,15 +1206,17 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
878
1206
  crash-recoverable snapshot publication has its own finite local table.
879
1207
  Detect records never enter it, and snapshot rows never enter the entity
880
1208
  outbox. The superseded mixed mutation journal does not remain as a third
881
- queue or compatibility path. A journal row has exactly three meanings.
1209
+ queue or compatibility path. Each row owns exactly one declaration, named
1210
+ by its workspace, and has exactly three meanings.
882
1211
  `pending` and unsubmitted is a local publication intent the authority has
883
1212
  never seen; if its captured ground moves it may be deleted and re-derived,
884
- and a newer complete snapshot may supersede it. `pending` and submitted
885
- has an unknown authority outcome — the same mutation id retries until the
886
- authority answers, because it may already be accepted with only the
887
- acknowledgement lost, and nothing may supersede it. `rejected` means the
888
- authority conclusively refused that mutation; it is never replayed and a
889
- newer complete snapshot may replace it transactionally (last write wins).
1213
+ and a newer declaration of the same workspace may supersede it. `pending`
1214
+ and submitted has an unknown authority outcome — the same mutation id
1215
+ retries before any lookup reads the head, because it may already be
1216
+ accepted with only the acknowledgement lost, and nothing may supersede
1217
+ it. `rejected` means the authority conclusively refused that mutation; it
1218
+ is never replayed and the next Register of that workspace folds its
1219
+ declaration again beside a new row, transactionally (last write wins).
890
1220
  The submitted boundary is durable before the first commit frame leaves.
891
1221
  A permanent refusal therefore cannot wedge Register, stale local capture
892
1222
  cannot publish old bytes, and an unacknowledged acceptance always recovers
@@ -968,9 +1298,12 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
968
1298
  result, replay, or immutable cargo remains a real local change. Watch stays
969
1299
  active throughout, and its Apply-created ring settles to notebook equality
970
1300
  without an outgoing echo. The Inbox may know cloud-only entities that this
971
- machine does not materialize: core-ground Apply consults the current
972
- portable enrollment policy before creating an intent, so excluded entities
973
- retain history without receiving local rows or bytes.
1301
+ machine has not selected to materialize. Materialization selection is
1302
+ distinct from `.amalgmignore`: that policy selects what this machine
1303
+ shares, from every declaration on, and never filters cold download or
1304
+ incoming Apply. Detect observes ignored ground like any other; sharing
1305
+ holds an ignored identity at its last shared result. Incoming eligibility
1306
+ follows materialization selection alone.
974
1307
 
975
1308
  54. **Repository Apply is Card + Checkpoint + identity as one result.** Shell
976
1309
  imports the immutable Git transport chain, materializes Card and
@@ -1009,10 +1342,16 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
1009
1342
  rows as the prior materialization: an accepted identity map may relocate
1010
1343
  the same UUID into repository territory, keeps the prior source privately
1011
1344
  recoverable through Verify, then projects the new address transactionally.
1012
- Apply observes Card + Checkpoint once for each guard moment and never builds
1013
- a Git pack merely to prove equality. The held address cone keeps the final
1014
- guard's observation valid through reveal, and reveal's own verified result
1015
- is the observation consumed by Verify. A visible repository rewrite carries
1345
+ Apply observes Card + Checkpoint for each guard moment and never builds
1346
+ a Git pack merely to prove equality. A new observation returns with its
1347
+ complete source proof closed; reuse revalidates it at the later boundary.
1348
+ The native inventory scan owns its before/after source checks, without an
1349
+ immediate duplicate composite check. Address ownership excludes competing
1350
+ Amalgm effects, not outside editors: Verify reads fresh physical evidence
1351
+ after reveal. The host yields before guards and fresh Verify so completed
1352
+ phases service Watch and transport; it inserts no scheduling gap between
1353
+ a final guard and reveal. This does not bound a single synchronous effect.
1354
+ A visible repository rewrite carries
1016
1355
  `.git/amalgm-reveal` from its first Git mutation until exact Verify; Detect
1017
1356
  treats that marker as unsettled private Apply ground, and restart resumes the
1018
1357
  same durable intent before the marker is removed. Incremental materialization
@@ -1064,8 +1403,13 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
1064
1403
  at or below `N` are retained history, never filesystem work, and only
1065
1404
  later records may Apply. When publication folds that tail, final ancestry
1066
1405
  in the complete prefix places every result: a container created after the
1067
- snapshot can own later children, and a cross-root move vacates its old root;
1068
- old snapshot membership alone never chooses the result's root. The settled
1406
+ snapshot can own later children, and a result whose final ancestry lies in
1407
+ another root leaves its old root's pages, so no UUID is filed in two roots;
1408
+ old snapshot membership alone never chooses the result's root. That
1409
+ placement serves an enclosing Register's re-rooting; it is not identity
1410
+ continuity. Identity is root-local, no producer emits a same-UUID record
1411
+ across independently materialized roots, and such a record is unsupported:
1412
+ the fold does not carry its subtree into the other root. The settled
1069
1413
  fold passes through the repository parcel projection exactly as publication
1070
1414
  does: a tail that turns a container into a repository retires that
1071
1415
  container's snapshot children into its parcel, and a tail that turns a
@@ -1085,8 +1429,9 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
1085
1429
  head operation plus the changed pages needed to replay that publication;
1086
1430
  it never writes a second whole-registry snapshot into SQLite or rebuilds
1087
1431
  roots Live did not select. A submitted intent keeps its mutation identity
1088
- across restart, and all pre-page journal shapes convert atomically without
1089
- dropping an unknown authority outcome.
1432
+ across restart. A journal in any earlier shape names no declaration: an
1433
+ empty one is recreated, and a non-empty one refuses to open rather than
1434
+ drop an unknown authority outcome.
1090
1435
 
1091
1436
  60. **Runtime binding is proved, never inferred.** A platform adapter adopts
1092
1437
  an existing runtime only when Shell's published loopback address answers
@@ -1244,8 +1589,14 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
1244
1589
  Toolbox loadout, and Chat prepares that exact immutable agent revision
1245
1590
  and tool deployment.
1246
1591
 
1247
- 73. **Git host capture distinguishes moving state from durable conflicts.** An
1248
- index lock or Amalgm reveal is transient and refuses capture. A stable
1592
+ 73. **Git host capture distinguishes moving state from durable conflicts.**
1593
+ Git administrative storage does not identify its checkout owner. Detect
1594
+ may settle a storage notice only after every affected enrolled checkout
1595
+ is examined or remains explicitly pending. A named single-consumer result
1596
+ closes the complete original binding and exclusion proof at Record.
1597
+
1598
+ Changed native source evidence and Amalgm's own incomplete reveal refuse
1599
+ capture; the mere existence of a Git lock does not. A stable
1249
1600
  unfinished merge is portable Checkpoint truth: Shell captures its
1250
1601
  unmerged stages, worktree conflict bytes, and merge continuation through
1251
1602
  Live's one repository contract, and restores ordinary stages only after
@@ -1256,6 +1607,30 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
1256
1607
  by the current contract and refuses explicitly rather than being mistaken
1257
1608
  for transient work or flattened into a clean stage-zero entry.
1258
1609
 
1610
+ Scheduling never extends source evidence. A suspended walk retains its
1611
+ physical identity basis, rechecks it before repository reuse or capture,
1612
+ and closes all participating source proofs at Record admission. Every
1613
+ examined result carries that proof; an unexamined result authorizes no
1614
+ writes. All Git dependencies precede the final physical sweep, and parent
1615
+ witnesses close after their descendants. This is a bounded source check,
1616
+ not an atomic filesystem snapshot or a no-traversal guarantee. Retained
1617
+ validators own witnesses rather than captured content buffers. Inspection
1618
+ fingerprints working files through the shared bounded reader; it never
1619
+ allocates file-sized content that it does not consume. A changed
1620
+ basis retries the observation without persisting its stale associations.
1621
+ A native-index collection is unclosed until its owning observation checks
1622
+ the original semantic binding, index meaning and fresh untracked namespace
1623
+ together. Internal inventory reads keep local invocation/path and file
1624
+ checks; one semantic bracket closes each public result and each later reuse.
1625
+ Physical and ownership witnesses close after the last Git subprocess.
1626
+ Neither returned buffers nor a caller's mutable scope may alter retained
1627
+ evidence. No successful close is cached across an admission boundary.
1628
+ A captured binding path disappearing or becoming obstructed is source
1629
+ change and retains its original cause; access and I/O failures stay faults.
1630
+ Private Checkpoint preparation proves package contents; the installer still
1631
+ checks current independent repository boundaries after preparation and before
1632
+ changing receiver objects, metadata or files.
1633
+
1259
1634
  74. **Same-slot records keep identity and derive distinct disk addresses.**
1260
1635
  Shell never rewrites a portable name to settle concurrent identities.
1261
1636
  Cold materialization and Apply derive the same UUID-ordered suffixes from
@@ -1265,6 +1640,18 @@ writable state; format-1 and format-2 runtimes cannot recover after adoption.
1265
1640
  destination cone, with row addresses committed before disk movement so a
1266
1641
  crash can only re-prove the same portable identities.
1267
1642
 
1643
+ 75. **Ground storage has one initializer and one visible generation per root.**
1644
+ A ground file's migration and its process epoch run once per file per
1645
+ process, on a bootstrap thread under one owner, never on the main thread.
1646
+ The outcome is known only after that thread exits and its committed result
1647
+ is confirmed. Every opener requires that confirmation, and a failed start
1648
+ records nothing. Both inventories are read through read-only views over
1649
+ `(uuid, generation)` storage; `ground_roots` names each root's one visible
1650
+ generation, and writes touch only that generation. A flat file converts in
1651
+ one transaction that proves the views reproduce it exactly, or it stays as
1652
+ it was. The qualified profile gathers no planner statistics, but
1653
+ statistics already present are kept, never treated as corruption.
1654
+
1268
1655
  ## Relationship to amalgm-engine
1269
1656
 
1270
1657
  Stage 1 cut the bricks out of the engine. Stage 2 proves them here, composed.
@@ -1275,3 +1662,130 @@ Automations hosted independently and claimed by its target Shell. The Engine
1275
1662
  `https://automations.amalgm.ai/e/<capability>` and never depend on the target
1276
1663
  machine being online. Later services cross the same parity gate without
1277
1664
  creating a second runtime for anything already released.
1665
+
1666
+ ## Ongoing Files reconciliation boundaries
1667
+
1668
+ The complete repository payload combines Git state and the member UUID map;
1669
+ its hash is separate from the incremental package hash. Register, cold transfer,
1670
+ Add and Watch setup retain their existing journeys. Their shared entity rows
1671
+ use that complete payload hash. Construct product adapters and the installed
1672
+ pause/resume switch keep their existing responsibilities.
1673
+
1674
+ The Git effect adapter observes private versus common Git storage. Ongoing
1675
+ Apply requires independent checkout storage; shared worktrees and unsupported
1676
+ unfinished Git continuations are named capability waits. The enclosing
1677
+ repository cannot remove an independently materialized nested repository's
1678
+ identity. Its own accepted move or type change must satisfy that prerequisite.
1679
+ Live's existing Apply coordinator owns the wait and wake-up; Shell supplies
1680
+ physical evidence and reports the prerequisite through Files stage diagnostics.
1681
+
1682
+ Git history export uses the captured object format and shallow boundary, and
1683
+ packs exactly what the receiver lacks, as upload-pack does. The receiver holds
1684
+ each previous tip's closure under the horizon it received, so those tips
1685
+ exclude history even when the boundary changed. A boundary the new horizon
1686
+ moved past (Git's unshallow) is a commit the receiver holds, if at all,
1687
+ without its parents: each one this state reaches wants its parents, so the
1688
+ history newly exposed beneath it travels, and each one the receiver holds is
1689
+ an edge, so its tree never travels again. Patch operations are read from machine patch headers, never from a
1690
+ human summary where filename bytes can resemble instructions.
1691
+
1692
+ ### Notification-independent observation
1693
+
1694
+ Active Files must eventually notice persistent local changes even when native
1695
+ Watch is silent. Native36 and its independent raw-native complete-ground control
1696
+ show missed equal-length writes through a held descriptor. Healthy handles and
1697
+ an empty notification backlog are not physical freshness. The Files host
1698
+ therefore runs a metadata maintenance sweep (`detection/maintenance-sweep.ts`),
1699
+ paused with the Files host. One visit at a time compares a Watch root's
1700
+ metadata with O and reads no bytes; each difference becomes a request in
1701
+ Live's maintenance ledger that the ordinary scoped lanes serve, and the sweep
1702
+ writes no row or Record. A receipt proves the comparison completed and its
1703
+ work was handled, never a byte reread. Visits follow cadence C: an owner's
1704
+ next visit is due one freshly drawn interval, one hour times uniform
1705
+ [0.75, 1.25), after its last. That is a configured inter-visit interval, not a
1706
+ mutation→Record bound; Watch's loss evidence still suspects its root
1707
+ immediately, meaning immediate responsibility and scheduling, not single-pass
1708
+ completion. Foreground work comes first, never forever: the longest-waiting
1709
+ due owner goes first, and a root already owed a complete proof defers its
1710
+ visit by at most 10 s. `UserGroundHost.requestVisit` asks for one visit that
1711
+ begins after the request and settles once the lanes discharged what it found
1712
+ through Detect → Record, or with a typed reason it cannot (`not-ready`,
1713
+ `removed`, `stopped`, `unreadable`); it jumps the schedule within the one
1714
+ slot and is never a content reread. Apply-owned ground is a gap. An empty
1715
+ binding set has no owner. Native notices
1716
+ keep their narrow fast path, and a later visit cannot revoke a completed
1717
+ finite boundary. One frozen native batch receives service, including one
1718
+ necessary widening to the complete domain. That widening is the
1719
+ invocation's only immediate retry. It freezes the wider cutoff before
1720
+ releasing narrow leases, then yields: the complete examination starts in its
1721
+ own dispatcher activation and reads a new basis over the wider scope. Later
1722
+ notices retain their own cutoffs. Failure, deferral and repeated widening
1723
+ cannot replenish foreground priority. Every examination may reuse proven
1724
+ content: a leaf is reused only while its signature is unchanged and both its
1725
+ times precede the boundary of a content clock stamped on the root's own
1726
+ filesystem in `.amalgm/content-clock` before the reads (`content-clock.ts`).
1727
+ The boundary is the stamp less its profile's margin; a time with no
1728
+ subsecond part stands for its whole second. A racy leaf is reread; only that
1729
+ reread clears it. A stamp behind the root's previous one, or under another
1730
+ profile than the previous stamp names, retires every proof under the root;
1731
+ a conclusion drawn before that retirement at, above or beneath the root fails
1732
+ its admission and is read again, and a unit that consumed an identity
1733
+ discovery reads and stands on that discovery's whole scope.
1734
+ Directory listings close on the same rule: a racy listing names no complete
1735
+ membership until a fresh listing under a later stamp, and only filesystems
1736
+ `ground-profile.ts` names qualify at all. A listing no stamp can qualify
1737
+ closes only when a fresh listing taken after the whole walk names exactly
1738
+ what the walk listed while the directory held still on both sides; only an
1739
+ entry moved and moved back across both listings inside its directories'
1740
+ clock ticks escapes that, and each such move is a later Watch generation.
1741
+ The control tree carries a `.gitignore` of `*`, written once per root per
1742
+ process when absent or different, so a registered repository's Git status
1743
+ never shows it. Ground without a qualified clock (another device, a root that
1744
+ cannot hold a stamp, a clock that went backwards) is read by every
1745
+ examination and closes each listing by reading it again: it loses shortcuts,
1746
+ never conclusions. Qualifying further filesystems, NTFS and ReFS among them,
1747
+ is unfinished.
1748
+ A write through a writable `MAP_SHARED` mapping can change bytes while the
1749
+ signature stays equal, through flush, unmap and fsync: that mapped-write
1750
+ limitation is outside the metadata-only guarantee, and a faster stat tier
1751
+ would not reveal it.
1752
+ No lane preempts a complete
1753
+ examination; only shutdown stops it. Detect leases hold no ground, so Apply
1754
+ may reveal while collection reads. Admission runs per unit in bounded batches
1755
+ and yields between them. Participating rails dispatch at most one ready work
1756
+ chunk per dispatcher activation and return to the event loop before
1757
+ dispatching another. Asynchronous operations do not occupy the dispatcher
1758
+ while waiting. The participating rails are Detect, Send, Receive, Apply and
1759
+ cache maintenance (`turns.ts`): each Detect stage, network answer, download
1760
+ and capture-thread reply resumes in its own activation. The dispatcher
1761
+ controls participating application continuations. It does not control all
1762
+ work in a Node iteration. A long named or routing preparation continues past
1763
+ an already-valid boundary (between names, between collection and
1764
+ preparation, after a retained snapshot) only within its activation's budget;
1765
+ admission's basis check, writes and commit, and an assessment's install with
1766
+ its cutoff bookkeeping, are never split. A committed Record is an immutable
1767
+ fact: finalizing its assessment and draining the next rail start in later
1768
+ activations, and recheck what they publish. Each unit's
1769
+ physical closure, binding, SQL-revision and source proofs close together in
1770
+ its own transaction. A unit that fails them is left out and retried by timer
1771
+ while the others admit. Unreadable or
1772
+ Apply-owned ground is a scoped gap, never absence: it defers only the units
1773
+ that need its facts, withholds the complete receipt, and never voids the other
1774
+ admissions of the same domain. A protected attempt remains subject to real
1775
+ source/coverage failures. This scheduling bound does not claim
1776
+ short tail latency: blocking Git calls and complete closing cost remain measured
1777
+ limitations. Register, Add and watcher placement retain
1778
+ their journeys. Integrated correctness and cadence/service-cost qualification
1779
+ are pending; this setting grants no performance pass.
1780
+
1781
+ Fresh observation reads mutable content without copying unchanged files into
1782
+ the cache. Only selected new content is sealed before Record, against the same
1783
+ original physical proof. Cache existence or size alone is never content proof.
1784
+ Source reads refuse special-file substitutions without waiting for another
1785
+ process, and release every owned resource even when another cleanup fails.
1786
+ Git parcel reuse requires equal fresh worktree and Card evidence. The Card's
1787
+ own stash reader supplies stash evidence; conventional reflog filenames cannot
1788
+ stand in for Git's semantic answer. Effective configuration and stash reads
1789
+ close before their original physical prerequisites. Internal Git owns its
1790
+ piped output settings, so an interactive display preference cannot alter its
1791
+ storage eligibility; unrepresented Git inputs still require full capture.