looply-cli 0.0.0-stage → 0.3.0

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 (793) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +137 -3
  3. package/dist/.src-hash +1 -0
  4. package/dist/acceptance-observe.d.ts +108 -0
  5. package/dist/acceptance-observe.d.ts.map +1 -0
  6. package/dist/acceptance-observe.js +152 -0
  7. package/dist/acceptance-observe.js.map +1 -0
  8. package/dist/agent-cmd.d.ts +131 -0
  9. package/dist/agent-cmd.d.ts.map +1 -0
  10. package/dist/agent-cmd.js +154 -0
  11. package/dist/agent-cmd.js.map +1 -0
  12. package/dist/agent-contained.d.ts +114 -0
  13. package/dist/agent-contained.d.ts.map +1 -0
  14. package/dist/agent-contained.js +292 -0
  15. package/dist/agent-contained.js.map +1 -0
  16. package/dist/agent-driver.d.ts +130 -0
  17. package/dist/agent-driver.d.ts.map +1 -0
  18. package/dist/agent-driver.js +170 -0
  19. package/dist/agent-driver.js.map +1 -0
  20. package/dist/agent-envelope.d.ts +94 -0
  21. package/dist/agent-envelope.d.ts.map +1 -0
  22. package/dist/agent-envelope.js +214 -0
  23. package/dist/agent-envelope.js.map +1 -0
  24. package/dist/agent-exec.d.ts +182 -0
  25. package/dist/agent-exec.d.ts.map +1 -0
  26. package/dist/agent-exec.js +125 -0
  27. package/dist/agent-exec.js.map +1 -0
  28. package/dist/agent-runtime.d.ts +23 -0
  29. package/dist/agent-runtime.d.ts.map +1 -0
  30. package/dist/agent-runtime.js +143 -0
  31. package/dist/agent-runtime.js.map +1 -0
  32. package/dist/approval-gate-read.d.ts +66 -0
  33. package/dist/approval-gate-read.d.ts.map +1 -0
  34. package/dist/approval-gate-read.js +138 -0
  35. package/dist/approval-gate-read.js.map +1 -0
  36. package/dist/approval-resolution.d.ts +87 -0
  37. package/dist/approval-resolution.d.ts.map +1 -0
  38. package/dist/approval-resolution.js +100 -0
  39. package/dist/approval-resolution.js.map +1 -0
  40. package/dist/approval-resumes.d.ts +102 -0
  41. package/dist/approval-resumes.d.ts.map +1 -0
  42. package/dist/approval-resumes.js +167 -0
  43. package/dist/approval-resumes.js.map +1 -0
  44. package/dist/ask-brain.d.ts +167 -0
  45. package/dist/ask-brain.d.ts.map +1 -0
  46. package/dist/ask-brain.js +355 -0
  47. package/dist/ask-brain.js.map +1 -0
  48. package/dist/autonomy-authority.d.ts +80 -0
  49. package/dist/autonomy-authority.d.ts.map +1 -0
  50. package/dist/autonomy-authority.js +82 -0
  51. package/dist/autonomy-authority.js.map +1 -0
  52. package/dist/autonomy-controller.d.ts +321 -0
  53. package/dist/autonomy-controller.d.ts.map +1 -0
  54. package/dist/autonomy-controller.js +517 -0
  55. package/dist/autonomy-controller.js.map +1 -0
  56. package/dist/autonomy-store.d.ts +327 -0
  57. package/dist/autonomy-store.d.ts.map +1 -0
  58. package/dist/autonomy-store.js +581 -0
  59. package/dist/autonomy-store.js.map +1 -0
  60. package/dist/autonomy-tick.d.ts +257 -0
  61. package/dist/autonomy-tick.d.ts.map +1 -0
  62. package/dist/autonomy-tick.js +616 -0
  63. package/dist/autonomy-tick.js.map +1 -0
  64. package/dist/bin.d.ts +3 -0
  65. package/dist/bin.d.ts.map +1 -0
  66. package/dist/bin.js +2727 -0
  67. package/dist/bin.js.map +1 -0
  68. package/dist/brain-advice.d.ts +21 -0
  69. package/dist/brain-advice.d.ts.map +1 -0
  70. package/dist/brain-advice.js +51 -0
  71. package/dist/brain-advice.js.map +1 -0
  72. package/dist/candidate-replay-runtime.d.ts +125 -0
  73. package/dist/candidate-replay-runtime.d.ts.map +1 -0
  74. package/dist/candidate-replay-runtime.js +188 -0
  75. package/dist/candidate-replay-runtime.js.map +1 -0
  76. package/dist/checkout-carry.d.ts +76 -0
  77. package/dist/checkout-carry.d.ts.map +1 -0
  78. package/dist/checkout-carry.js +125 -0
  79. package/dist/checkout-carry.js.map +1 -0
  80. package/dist/citation-readers.d.ts +26 -0
  81. package/dist/citation-readers.d.ts.map +1 -0
  82. package/dist/citation-readers.js +102 -0
  83. package/dist/citation-readers.js.map +1 -0
  84. package/dist/command-receipts.d.ts +79 -0
  85. package/dist/command-receipts.d.ts.map +1 -0
  86. package/dist/command-receipts.js +143 -0
  87. package/dist/command-receipts.js.map +1 -0
  88. package/dist/command-runner.d.ts +32 -0
  89. package/dist/command-runner.d.ts.map +1 -0
  90. package/dist/command-runner.js +108 -0
  91. package/dist/command-runner.js.map +1 -0
  92. package/dist/compatible-sets.d.ts +67 -0
  93. package/dist/compatible-sets.d.ts.map +1 -0
  94. package/dist/compatible-sets.js +81 -0
  95. package/dist/compatible-sets.js.map +1 -0
  96. package/dist/compile-check.d.ts +31 -0
  97. package/dist/compile-check.d.ts.map +1 -0
  98. package/dist/compile-check.js +34 -0
  99. package/dist/compile-check.js.map +1 -0
  100. package/dist/compile-store.d.ts +16 -0
  101. package/dist/compile-store.d.ts.map +1 -0
  102. package/dist/compile-store.js +21 -0
  103. package/dist/compile-store.js.map +1 -0
  104. package/dist/completion.d.ts +106 -0
  105. package/dist/completion.d.ts.map +1 -0
  106. package/dist/completion.js +131 -0
  107. package/dist/completion.js.map +1 -0
  108. package/dist/config.d.ts +549 -0
  109. package/dist/config.d.ts.map +1 -0
  110. package/dist/config.js +763 -0
  111. package/dist/config.js.map +1 -0
  112. package/dist/control-file.d.ts +142 -0
  113. package/dist/control-file.d.ts.map +1 -0
  114. package/dist/control-file.js +144 -0
  115. package/dist/control-file.js.map +1 -0
  116. package/dist/coordinator-state.d.ts +131 -0
  117. package/dist/coordinator-state.d.ts.map +1 -0
  118. package/dist/coordinator-state.js +380 -0
  119. package/dist/coordinator-state.js.map +1 -0
  120. package/dist/coordinator.d.ts +95 -0
  121. package/dist/coordinator.d.ts.map +1 -0
  122. package/dist/coordinator.js +97 -0
  123. package/dist/coordinator.js.map +1 -0
  124. package/dist/cursor-store.d.ts +53 -0
  125. package/dist/cursor-store.d.ts.map +1 -0
  126. package/dist/cursor-store.js +98 -0
  127. package/dist/cursor-store.js.map +1 -0
  128. package/dist/daemon-cmd.d.ts +239 -0
  129. package/dist/daemon-cmd.d.ts.map +1 -0
  130. package/dist/daemon-cmd.js +1751 -0
  131. package/dist/daemon-cmd.js.map +1 -0
  132. package/dist/daemon-lock.d.ts +140 -0
  133. package/dist/daemon-lock.d.ts.map +1 -0
  134. package/dist/daemon-lock.js +352 -0
  135. package/dist/daemon-lock.js.map +1 -0
  136. package/dist/daemon-recovery.d.ts +78 -0
  137. package/dist/daemon-recovery.d.ts.map +1 -0
  138. package/dist/daemon-recovery.js +161 -0
  139. package/dist/daemon-recovery.js.map +1 -0
  140. package/dist/daemon.d.ts +368 -0
  141. package/dist/daemon.d.ts.map +1 -0
  142. package/dist/daemon.js +601 -0
  143. package/dist/daemon.js.map +1 -0
  144. package/dist/declared-response-shape.d.ts +93 -0
  145. package/dist/declared-response-shape.d.ts.map +1 -0
  146. package/dist/declared-response-shape.js +200 -0
  147. package/dist/declared-response-shape.js.map +1 -0
  148. package/dist/declared-surfaces.d.ts +16 -0
  149. package/dist/declared-surfaces.d.ts.map +1 -0
  150. package/dist/declared-surfaces.js +19 -0
  151. package/dist/declared-surfaces.js.map +1 -0
  152. package/dist/depends-review.d.ts +113 -0
  153. package/dist/depends-review.d.ts.map +1 -0
  154. package/dist/depends-review.js +110 -0
  155. package/dist/depends-review.js.map +1 -0
  156. package/dist/doctor.d.ts +91 -0
  157. package/dist/doctor.d.ts.map +1 -0
  158. package/dist/doctor.js +71 -0
  159. package/dist/doctor.js.map +1 -0
  160. package/dist/edge-approval.d.ts +105 -0
  161. package/dist/edge-approval.d.ts.map +1 -0
  162. package/dist/edge-approval.js +100 -0
  163. package/dist/edge-approval.js.map +1 -0
  164. package/dist/evidence-cache.d.ts +45 -0
  165. package/dist/evidence-cache.d.ts.map +1 -0
  166. package/dist/evidence-cache.js +90 -0
  167. package/dist/evidence-cache.js.map +1 -0
  168. package/dist/evidence-cmd.d.ts +133 -0
  169. package/dist/evidence-cmd.d.ts.map +1 -0
  170. package/dist/evidence-cmd.js +347 -0
  171. package/dist/evidence-cmd.js.map +1 -0
  172. package/dist/evidence-facts.d.ts +40 -0
  173. package/dist/evidence-facts.d.ts.map +1 -0
  174. package/dist/evidence-facts.js +114 -0
  175. package/dist/evidence-facts.js.map +1 -0
  176. package/dist/exclusive-lock.d.ts +52 -0
  177. package/dist/exclusive-lock.d.ts.map +1 -0
  178. package/dist/exclusive-lock.js +150 -0
  179. package/dist/exclusive-lock.js.map +1 -0
  180. package/dist/exec-domains.d.ts +140 -0
  181. package/dist/exec-domains.d.ts.map +1 -0
  182. package/dist/exec-domains.js +287 -0
  183. package/dist/exec-domains.js.map +1 -0
  184. package/dist/exemption-store.d.ts +197 -0
  185. package/dist/exemption-store.d.ts.map +1 -0
  186. package/dist/exemption-store.js +266 -0
  187. package/dist/exemption-store.js.map +1 -0
  188. package/dist/explicit-start-gate.d.ts +96 -0
  189. package/dist/explicit-start-gate.d.ts.map +1 -0
  190. package/dist/explicit-start-gate.js +103 -0
  191. package/dist/explicit-start-gate.js.map +1 -0
  192. package/dist/fs-trouble.d.ts +70 -0
  193. package/dist/fs-trouble.d.ts.map +1 -0
  194. package/dist/fs-trouble.js +98 -0
  195. package/dist/fs-trouble.js.map +1 -0
  196. package/dist/gate.d.ts +278 -0
  197. package/dist/gate.d.ts.map +1 -0
  198. package/dist/gate.js +278 -0
  199. package/dist/gate.js.map +1 -0
  200. package/dist/git-driver.d.ts +519 -0
  201. package/dist/git-driver.d.ts.map +1 -0
  202. package/dist/git-driver.js +900 -0
  203. package/dist/git-driver.js.map +1 -0
  204. package/dist/git-push-executor.d.ts +41 -0
  205. package/dist/git-push-executor.d.ts.map +1 -0
  206. package/dist/git-push-executor.js +142 -0
  207. package/dist/git-push-executor.js.map +1 -0
  208. package/dist/glob.d.ts +26 -0
  209. package/dist/glob.d.ts.map +1 -0
  210. package/dist/glob.js +93 -0
  211. package/dist/glob.js.map +1 -0
  212. package/dist/goal-adaptive.d.ts +295 -0
  213. package/dist/goal-adaptive.d.ts.map +1 -0
  214. package/dist/goal-adaptive.js +393 -0
  215. package/dist/goal-adaptive.js.map +1 -0
  216. package/dist/goal-compile.d.ts +342 -0
  217. package/dist/goal-compile.d.ts.map +1 -0
  218. package/dist/goal-compile.js +444 -0
  219. package/dist/goal-compile.js.map +1 -0
  220. package/dist/goal-depends-executor.d.ts +55 -0
  221. package/dist/goal-depends-executor.d.ts.map +1 -0
  222. package/dist/goal-depends-executor.js +202 -0
  223. package/dist/goal-depends-executor.js.map +1 -0
  224. package/dist/goal-execution-evidence.d.ts +135 -0
  225. package/dist/goal-execution-evidence.d.ts.map +1 -0
  226. package/dist/goal-execution-evidence.js +159 -0
  227. package/dist/goal-execution-evidence.js.map +1 -0
  228. package/dist/goal-gap.d.ts +140 -0
  229. package/dist/goal-gap.d.ts.map +1 -0
  230. package/dist/goal-gap.js +197 -0
  231. package/dist/goal-gap.js.map +1 -0
  232. package/dist/goal-met-target.d.ts +98 -0
  233. package/dist/goal-met-target.d.ts.map +1 -0
  234. package/dist/goal-met-target.js +92 -0
  235. package/dist/goal-met-target.js.map +1 -0
  236. package/dist/goal-ownership.d.ts +416 -0
  237. package/dist/goal-ownership.d.ts.map +1 -0
  238. package/dist/goal-ownership.js +576 -0
  239. package/dist/goal-ownership.js.map +1 -0
  240. package/dist/goal-runs.d.ts +82 -0
  241. package/dist/goal-runs.d.ts.map +1 -0
  242. package/dist/goal-runs.js +120 -0
  243. package/dist/goal-runs.js.map +1 -0
  244. package/dist/goal-store.d.ts +146 -0
  245. package/dist/goal-store.d.ts.map +1 -0
  246. package/dist/goal-store.js +294 -0
  247. package/dist/goal-store.js.map +1 -0
  248. package/dist/goal-view.d.ts +156 -0
  249. package/dist/goal-view.d.ts.map +1 -0
  250. package/dist/goal-view.js +499 -0
  251. package/dist/goal-view.js.map +1 -0
  252. package/dist/governed-approvals.d.ts +152 -0
  253. package/dist/governed-approvals.d.ts.map +1 -0
  254. package/dist/governed-approvals.js +246 -0
  255. package/dist/governed-approvals.js.map +1 -0
  256. package/dist/governed-broker.d.ts +169 -0
  257. package/dist/governed-broker.d.ts.map +1 -0
  258. package/dist/governed-broker.js +196 -0
  259. package/dist/governed-broker.js.map +1 -0
  260. package/dist/governed-run.d.ts +220 -0
  261. package/dist/governed-run.d.ts.map +1 -0
  262. package/dist/governed-run.js +406 -0
  263. package/dist/governed-run.js.map +1 -0
  264. package/dist/grant-reconcile.d.ts +63 -0
  265. package/dist/grant-reconcile.d.ts.map +1 -0
  266. package/dist/grant-reconcile.js +121 -0
  267. package/dist/grant-reconcile.js.map +1 -0
  268. package/dist/index-for-head.d.ts +56 -0
  269. package/dist/index-for-head.d.ts.map +1 -0
  270. package/dist/index-for-head.js +103 -0
  271. package/dist/index-for-head.js.map +1 -0
  272. package/dist/index.d.ts +39 -0
  273. package/dist/index.d.ts.map +1 -0
  274. package/dist/index.js +55 -0
  275. package/dist/index.js.map +1 -0
  276. package/dist/init-detect.d.ts +39 -0
  277. package/dist/init-detect.d.ts.map +1 -0
  278. package/dist/init-detect.js +188 -0
  279. package/dist/init-detect.js.map +1 -0
  280. package/dist/integration-deps.d.ts +62 -0
  281. package/dist/integration-deps.d.ts.map +1 -0
  282. package/dist/integration-deps.js +251 -0
  283. package/dist/integration-deps.js.map +1 -0
  284. package/dist/integration-runtime.d.ts +458 -0
  285. package/dist/integration-runtime.d.ts.map +1 -0
  286. package/dist/integration-runtime.js +681 -0
  287. package/dist/integration-runtime.js.map +1 -0
  288. package/dist/integration.d.ts +45 -0
  289. package/dist/integration.d.ts.map +1 -0
  290. package/dist/integration.js +87 -0
  291. package/dist/integration.js.map +1 -0
  292. package/dist/integrator.d.ts +84 -0
  293. package/dist/integrator.d.ts.map +1 -0
  294. package/dist/integrator.js +193 -0
  295. package/dist/integrator.js.map +1 -0
  296. package/dist/lane-claims.d.ts +174 -0
  297. package/dist/lane-claims.d.ts.map +1 -0
  298. package/dist/lane-claims.js +218 -0
  299. package/dist/lane-claims.js.map +1 -0
  300. package/dist/lane-coverage.d.ts +87 -0
  301. package/dist/lane-coverage.d.ts.map +1 -0
  302. package/dist/lane-coverage.js +129 -0
  303. package/dist/lane-coverage.js.map +1 -0
  304. package/dist/ledger-replay.d.ts +115 -0
  305. package/dist/ledger-replay.d.ts.map +1 -0
  306. package/dist/ledger-replay.js +155 -0
  307. package/dist/ledger-replay.js.map +1 -0
  308. package/dist/ledger-store.d.ts +68 -0
  309. package/dist/ledger-store.d.ts.map +1 -0
  310. package/dist/ledger-store.js +111 -0
  311. package/dist/ledger-store.js.map +1 -0
  312. package/dist/loop-safety-observer.d.ts +132 -0
  313. package/dist/loop-safety-observer.d.ts.map +1 -0
  314. package/dist/loop-safety-observer.js +76 -0
  315. package/dist/loop-safety-observer.js.map +1 -0
  316. package/dist/loop-safety-store.d.ts +339 -0
  317. package/dist/loop-safety-store.d.ts.map +1 -0
  318. package/dist/loop-safety-store.js +800 -0
  319. package/dist/loop-safety-store.js.map +1 -0
  320. package/dist/machine-store.d.ts +54 -0
  321. package/dist/machine-store.d.ts.map +1 -0
  322. package/dist/machine-store.js +149 -0
  323. package/dist/machine-store.js.map +1 -0
  324. package/dist/mcp-main.d.ts +2 -0
  325. package/dist/mcp-main.d.ts.map +1 -0
  326. package/dist/mcp-main.js +116 -0
  327. package/dist/mcp-main.js.map +1 -0
  328. package/dist/mcp-server.d.ts +72 -0
  329. package/dist/mcp-server.d.ts.map +1 -0
  330. package/dist/mcp-server.js +259 -0
  331. package/dist/mcp-server.js.map +1 -0
  332. package/dist/model-routing.d.ts +75 -0
  333. package/dist/model-routing.d.ts.map +1 -0
  334. package/dist/model-routing.js +108 -0
  335. package/dist/model-routing.js.map +1 -0
  336. package/dist/model-transport.d.ts +188 -0
  337. package/dist/model-transport.d.ts.map +1 -0
  338. package/dist/model-transport.js +625 -0
  339. package/dist/model-transport.js.map +1 -0
  340. package/dist/notify-cadence.d.ts +55 -0
  341. package/dist/notify-cadence.d.ts.map +1 -0
  342. package/dist/notify-cadence.js +68 -0
  343. package/dist/notify-cadence.js.map +1 -0
  344. package/dist/notify-channel.d.ts +69 -0
  345. package/dist/notify-channel.d.ts.map +1 -0
  346. package/dist/notify-channel.js +151 -0
  347. package/dist/notify-channel.js.map +1 -0
  348. package/dist/notify.d.ts +71 -0
  349. package/dist/notify.d.ts.map +1 -0
  350. package/dist/notify.js +125 -0
  351. package/dist/notify.js.map +1 -0
  352. package/dist/observation-inventory.d.ts +65 -0
  353. package/dist/observation-inventory.d.ts.map +1 -0
  354. package/dist/observation-inventory.js +139 -0
  355. package/dist/observation-inventory.js.map +1 -0
  356. package/dist/owned-children.d.ts +45 -0
  357. package/dist/owned-children.d.ts.map +1 -0
  358. package/dist/owned-children.js +64 -0
  359. package/dist/owned-children.js.map +1 -0
  360. package/dist/packet-for-goal.d.ts +19 -0
  361. package/dist/packet-for-goal.d.ts.map +1 -0
  362. package/dist/packet-for-goal.js +32 -0
  363. package/dist/packet-for-goal.js.map +1 -0
  364. package/dist/pair-cmd.d.ts +85 -0
  365. package/dist/pair-cmd.d.ts.map +1 -0
  366. package/dist/pair-cmd.js +205 -0
  367. package/dist/pair-cmd.js.map +1 -0
  368. package/dist/partial-asker.d.ts +96 -0
  369. package/dist/partial-asker.d.ts.map +1 -0
  370. package/dist/partial-asker.js +117 -0
  371. package/dist/partial-asker.js.map +1 -0
  372. package/dist/pdf-text-lines.d.ts +17 -0
  373. package/dist/pdf-text-lines.d.ts.map +1 -0
  374. package/dist/pdf-text-lines.js +70 -0
  375. package/dist/pdf-text-lines.js.map +1 -0
  376. package/dist/pdf-text-worker.d.ts +2 -0
  377. package/dist/pdf-text-worker.d.ts.map +1 -0
  378. package/dist/pdf-text-worker.js +81 -0
  379. package/dist/pdf-text-worker.js.map +1 -0
  380. package/dist/pdf-text.d.ts +56 -0
  381. package/dist/pdf-text.d.ts.map +1 -0
  382. package/dist/pdf-text.js +64 -0
  383. package/dist/pdf-text.js.map +1 -0
  384. package/dist/pending-action.d.ts +154 -0
  385. package/dist/pending-action.d.ts.map +1 -0
  386. package/dist/pending-action.js +148 -0
  387. package/dist/pending-action.js.map +1 -0
  388. package/dist/preemptor.d.ts +40 -0
  389. package/dist/preemptor.d.ts.map +1 -0
  390. package/dist/preemptor.js +49 -0
  391. package/dist/preemptor.js.map +1 -0
  392. package/dist/programme-mode.d.ts +29 -0
  393. package/dist/programme-mode.d.ts.map +1 -0
  394. package/dist/programme-mode.js +50 -0
  395. package/dist/programme-mode.js.map +1 -0
  396. package/dist/progress-view.d.ts +14 -0
  397. package/dist/progress-view.d.ts.map +1 -0
  398. package/dist/progress-view.js +114 -0
  399. package/dist/progress-view.js.map +1 -0
  400. package/dist/project-graph-builder.d.ts +81 -0
  401. package/dist/project-graph-builder.d.ts.map +1 -0
  402. package/dist/project-graph-builder.js +246 -0
  403. package/dist/project-graph-builder.js.map +1 -0
  404. package/dist/project-graph-runtime.d.ts +86 -0
  405. package/dist/project-graph-runtime.d.ts.map +1 -0
  406. package/dist/project-graph-runtime.js +112 -0
  407. package/dist/project-graph-runtime.js.map +1 -0
  408. package/dist/project-index-builder.d.ts +96 -0
  409. package/dist/project-index-builder.d.ts.map +1 -0
  410. package/dist/project-index-builder.js +298 -0
  411. package/dist/project-index-builder.js.map +1 -0
  412. package/dist/project-index-facts.d.ts +51 -0
  413. package/dist/project-index-facts.d.ts.map +1 -0
  414. package/dist/project-index-facts.js +117 -0
  415. package/dist/project-index-facts.js.map +1 -0
  416. package/dist/project-index-store.d.ts +97 -0
  417. package/dist/project-index-store.d.ts.map +1 -0
  418. package/dist/project-index-store.js +140 -0
  419. package/dist/project-index-store.js.map +1 -0
  420. package/dist/project-memory-store.d.ts +127 -0
  421. package/dist/project-memory-store.d.ts.map +1 -0
  422. package/dist/project-memory-store.js +302 -0
  423. package/dist/project-memory-store.js.map +1 -0
  424. package/dist/proposal-store.d.ts +14 -0
  425. package/dist/proposal-store.d.ts.map +1 -0
  426. package/dist/proposal-store.js +19 -0
  427. package/dist/proposal-store.js.map +1 -0
  428. package/dist/prover.d.ts +80 -0
  429. package/dist/prover.d.ts.map +1 -0
  430. package/dist/prover.js +137 -0
  431. package/dist/prover.js.map +1 -0
  432. package/dist/provider-identity-store.d.ts +34 -0
  433. package/dist/provider-identity-store.d.ts.map +1 -0
  434. package/dist/provider-identity-store.js +72 -0
  435. package/dist/provider-identity-store.js.map +1 -0
  436. package/dist/provider-identity.d.ts +104 -0
  437. package/dist/provider-identity.d.ts.map +1 -0
  438. package/dist/provider-identity.js +167 -0
  439. package/dist/provider-identity.js.map +1 -0
  440. package/dist/provider-limit.d.ts +79 -0
  441. package/dist/provider-limit.d.ts.map +1 -0
  442. package/dist/provider-limit.js +148 -0
  443. package/dist/provider-limit.js.map +1 -0
  444. package/dist/provider-preflight.d.ts +171 -0
  445. package/dist/provider-preflight.d.ts.map +1 -0
  446. package/dist/provider-preflight.js +395 -0
  447. package/dist/provider-preflight.js.map +1 -0
  448. package/dist/provider-state.d.ts +120 -0
  449. package/dist/provider-state.d.ts.map +1 -0
  450. package/dist/provider-state.js +182 -0
  451. package/dist/provider-state.js.map +1 -0
  452. package/dist/providers.d.ts +132 -0
  453. package/dist/providers.d.ts.map +1 -0
  454. package/dist/providers.js +161 -0
  455. package/dist/providers.js.map +1 -0
  456. package/dist/publication-recorder.d.ts +117 -0
  457. package/dist/publication-recorder.d.ts.map +1 -0
  458. package/dist/publication-recorder.js +124 -0
  459. package/dist/publication-recorder.js.map +1 -0
  460. package/dist/pursuit-delivery.d.ts +24 -0
  461. package/dist/pursuit-delivery.d.ts.map +1 -0
  462. package/dist/pursuit-delivery.js +38 -0
  463. package/dist/pursuit-delivery.js.map +1 -0
  464. package/dist/queue-store.d.ts +132 -0
  465. package/dist/queue-store.d.ts.map +1 -0
  466. package/dist/queue-store.js +185 -0
  467. package/dist/queue-store.js.map +1 -0
  468. package/dist/queue-summary.d.ts +14 -0
  469. package/dist/queue-summary.d.ts.map +1 -0
  470. package/dist/queue-summary.js +82 -0
  471. package/dist/queue-summary.js.map +1 -0
  472. package/dist/queue-view.d.ts +20 -0
  473. package/dist/queue-view.d.ts.map +1 -0
  474. package/dist/queue-view.js +163 -0
  475. package/dist/queue-view.js.map +1 -0
  476. package/dist/queue-write-lease.d.ts +106 -0
  477. package/dist/queue-write-lease.d.ts.map +1 -0
  478. package/dist/queue-write-lease.js +282 -0
  479. package/dist/queue-write-lease.js.map +1 -0
  480. package/dist/rails-home.d.ts +162 -0
  481. package/dist/rails-home.d.ts.map +1 -0
  482. package/dist/rails-home.js +452 -0
  483. package/dist/rails-home.js.map +1 -0
  484. package/dist/rails-migrations.d.ts +75 -0
  485. package/dist/rails-migrations.d.ts.map +1 -0
  486. package/dist/rails-migrations.js +199 -0
  487. package/dist/rails-migrations.js.map +1 -0
  488. package/dist/rails-stores.d.ts +49 -0
  489. package/dist/rails-stores.d.ts.map +1 -0
  490. package/dist/rails-stores.js +100 -0
  491. package/dist/rails-stores.js.map +1 -0
  492. package/dist/reaper.d.ts +69 -0
  493. package/dist/reaper.d.ts.map +1 -0
  494. package/dist/reaper.js +152 -0
  495. package/dist/reaper.js.map +1 -0
  496. package/dist/record-store.d.ts +36 -0
  497. package/dist/record-store.d.ts.map +1 -0
  498. package/dist/record-store.js +78 -0
  499. package/dist/record-store.js.map +1 -0
  500. package/dist/recovery-io.d.ts +50 -0
  501. package/dist/recovery-io.d.ts.map +1 -0
  502. package/dist/recovery-io.js +122 -0
  503. package/dist/recovery-io.js.map +1 -0
  504. package/dist/recovery.d.ts +146 -0
  505. package/dist/recovery.d.ts.map +1 -0
  506. package/dist/recovery.js +110 -0
  507. package/dist/recovery.js.map +1 -0
  508. package/dist/redraw.d.ts +34 -0
  509. package/dist/redraw.d.ts.map +1 -0
  510. package/dist/redraw.js +62 -0
  511. package/dist/redraw.js.map +1 -0
  512. package/dist/rejected-evidence.d.ts +255 -0
  513. package/dist/rejected-evidence.d.ts.map +1 -0
  514. package/dist/rejected-evidence.js +324 -0
  515. package/dist/rejected-evidence.js.map +1 -0
  516. package/dist/report-cmd.d.ts +32 -0
  517. package/dist/report-cmd.d.ts.map +1 -0
  518. package/dist/report-cmd.js +201 -0
  519. package/dist/report-cmd.js.map +1 -0
  520. package/dist/repos-cmd.d.ts +80 -0
  521. package/dist/repos-cmd.d.ts.map +1 -0
  522. package/dist/repos-cmd.js +240 -0
  523. package/dist/repos-cmd.js.map +1 -0
  524. package/dist/request-body-shape.d.ts +93 -0
  525. package/dist/request-body-shape.d.ts.map +1 -0
  526. package/dist/request-body-shape.js +407 -0
  527. package/dist/request-body-shape.js.map +1 -0
  528. package/dist/requirement-claims.d.ts +89 -0
  529. package/dist/requirement-claims.d.ts.map +1 -0
  530. package/dist/requirement-claims.js +92 -0
  531. package/dist/requirement-claims.js.map +1 -0
  532. package/dist/retention-apply-runtime.d.ts +105 -0
  533. package/dist/retention-apply-runtime.d.ts.map +1 -0
  534. package/dist/retention-apply-runtime.js +269 -0
  535. package/dist/retention-apply-runtime.js.map +1 -0
  536. package/dist/reverify.d.ts +41 -0
  537. package/dist/reverify.d.ts.map +1 -0
  538. package/dist/reverify.js +69 -0
  539. package/dist/reverify.js.map +1 -0
  540. package/dist/round-records.d.ts +65 -0
  541. package/dist/round-records.d.ts.map +1 -0
  542. package/dist/round-records.js +61 -0
  543. package/dist/round-records.js.map +1 -0
  544. package/dist/round-runner.d.ts +924 -0
  545. package/dist/round-runner.d.ts.map +1 -0
  546. package/dist/round-runner.js +1693 -0
  547. package/dist/round-runner.js.map +1 -0
  548. package/dist/run-approval.d.ts +180 -0
  549. package/dist/run-approval.d.ts.map +1 -0
  550. package/dist/run-approval.js +199 -0
  551. package/dist/run-approval.js.map +1 -0
  552. package/dist/run-cmd.d.ts +359 -0
  553. package/dist/run-cmd.d.ts.map +1 -0
  554. package/dist/run-cmd.js +4418 -0
  555. package/dist/run-cmd.js.map +1 -0
  556. package/dist/run-delivery.d.ts +71 -0
  557. package/dist/run-delivery.d.ts.map +1 -0
  558. package/dist/run-delivery.js +104 -0
  559. package/dist/run-delivery.js.map +1 -0
  560. package/dist/run-ended.d.ts +75 -0
  561. package/dist/run-ended.d.ts.map +1 -0
  562. package/dist/run-ended.js +27 -0
  563. package/dist/run-ended.js.map +1 -0
  564. package/dist/run-ending-locator.d.ts +125 -0
  565. package/dist/run-ending-locator.d.ts.map +1 -0
  566. package/dist/run-ending-locator.js +133 -0
  567. package/dist/run-ending-locator.js.map +1 -0
  568. package/dist/run-launcher.d.ts +459 -0
  569. package/dist/run-launcher.d.ts.map +1 -0
  570. package/dist/run-launcher.js +652 -0
  571. package/dist/run-launcher.js.map +1 -0
  572. package/dist/run-lease.d.ts +208 -0
  573. package/dist/run-lease.d.ts.map +1 -0
  574. package/dist/run-lease.js +301 -0
  575. package/dist/run-lease.js.map +1 -0
  576. package/dist/run-refusal-marks.d.ts +189 -0
  577. package/dist/run-refusal-marks.d.ts.map +1 -0
  578. package/dist/run-refusal-marks.js +249 -0
  579. package/dist/run-refusal-marks.js.map +1 -0
  580. package/dist/run-start-marks.d.ts +153 -0
  581. package/dist/run-start-marks.d.ts.map +1 -0
  582. package/dist/run-start-marks.js +269 -0
  583. package/dist/run-start-marks.js.map +1 -0
  584. package/dist/scan-cmd.d.ts +14 -0
  585. package/dist/scan-cmd.d.ts.map +1 -0
  586. package/dist/scan-cmd.js +270 -0
  587. package/dist/scan-cmd.js.map +1 -0
  588. package/dist/scan-events.d.ts +50 -0
  589. package/dist/scan-events.d.ts.map +1 -0
  590. package/dist/scan-events.js +91 -0
  591. package/dist/scan-events.js.map +1 -0
  592. package/dist/scan.d.ts +191 -0
  593. package/dist/scan.d.ts.map +1 -0
  594. package/dist/scan.js +417 -0
  595. package/dist/scan.js.map +1 -0
  596. package/dist/scope-rule.d.ts +148 -0
  597. package/dist/scope-rule.d.ts.map +1 -0
  598. package/dist/scope-rule.js +121 -0
  599. package/dist/scope-rule.js.map +1 -0
  600. package/dist/self-repo-id.d.ts +18 -0
  601. package/dist/self-repo-id.d.ts.map +1 -0
  602. package/dist/self-repo-id.js +70 -0
  603. package/dist/self-repo-id.js.map +1 -0
  604. package/dist/serve-cmd.d.ts +115 -0
  605. package/dist/serve-cmd.d.ts.map +1 -0
  606. package/dist/serve-cmd.js +505 -0
  607. package/dist/serve-cmd.js.map +1 -0
  608. package/dist/serve.d.ts +167 -0
  609. package/dist/serve.d.ts.map +1 -0
  610. package/dist/serve.js +336 -0
  611. package/dist/serve.js.map +1 -0
  612. package/dist/server-client.d.ts +766 -0
  613. package/dist/server-client.d.ts.map +1 -0
  614. package/dist/server-client.js +475 -0
  615. package/dist/server-client.js.map +1 -0
  616. package/dist/session-adapter-runtime.d.ts +195 -0
  617. package/dist/session-adapter-runtime.d.ts.map +1 -0
  618. package/dist/session-adapter-runtime.js +373 -0
  619. package/dist/session-adapter-runtime.js.map +1 -0
  620. package/dist/session-checkpoint-runtime.d.ts +62 -0
  621. package/dist/session-checkpoint-runtime.d.ts.map +1 -0
  622. package/dist/session-checkpoint-runtime.js +268 -0
  623. package/dist/session-checkpoint-runtime.js.map +1 -0
  624. package/dist/session-control-transport.d.ts +106 -0
  625. package/dist/session-control-transport.d.ts.map +1 -0
  626. package/dist/session-control-transport.js +232 -0
  627. package/dist/session-control-transport.js.map +1 -0
  628. package/dist/session-observation-store.d.ts +98 -0
  629. package/dist/session-observation-store.d.ts.map +1 -0
  630. package/dist/session-observation-store.js +155 -0
  631. package/dist/session-observation-store.js.map +1 -0
  632. package/dist/session-observe-runtime.d.ts +123 -0
  633. package/dist/session-observe-runtime.d.ts.map +1 -0
  634. package/dist/session-observe-runtime.js +317 -0
  635. package/dist/session-observe-runtime.js.map +1 -0
  636. package/dist/session-store.d.ts +98 -0
  637. package/dist/session-store.d.ts.map +1 -0
  638. package/dist/session-store.js +116 -0
  639. package/dist/session-store.js.map +1 -0
  640. package/dist/sessions-cmd.d.ts +202 -0
  641. package/dist/sessions-cmd.d.ts.map +1 -0
  642. package/dist/sessions-cmd.js +609 -0
  643. package/dist/sessions-cmd.js.map +1 -0
  644. package/dist/settings-overlay.d.ts +53 -0
  645. package/dist/settings-overlay.d.ts.map +1 -0
  646. package/dist/settings-overlay.js +175 -0
  647. package/dist/settings-overlay.js.map +1 -0
  648. package/dist/setup-prompt.d.ts +34 -0
  649. package/dist/setup-prompt.d.ts.map +1 -0
  650. package/dist/setup-prompt.js +92 -0
  651. package/dist/setup-prompt.js.map +1 -0
  652. package/dist/setup.d.ts +103 -0
  653. package/dist/setup.d.ts.map +1 -0
  654. package/dist/setup.js +283 -0
  655. package/dist/setup.js.map +1 -0
  656. package/dist/shared-grants.d.ts +164 -0
  657. package/dist/shared-grants.d.ts.map +1 -0
  658. package/dist/shared-grants.js +242 -0
  659. package/dist/shared-grants.js.map +1 -0
  660. package/dist/signals.d.ts +55 -0
  661. package/dist/signals.d.ts.map +1 -0
  662. package/dist/signals.js +85 -0
  663. package/dist/signals.js.map +1 -0
  664. package/dist/source-cmd.d.ts +201 -0
  665. package/dist/source-cmd.d.ts.map +1 -0
  666. package/dist/source-cmd.js +684 -0
  667. package/dist/source-cmd.js.map +1 -0
  668. package/dist/source-verdict.d.ts +99 -0
  669. package/dist/source-verdict.d.ts.map +1 -0
  670. package/dist/source-verdict.js +182 -0
  671. package/dist/source-verdict.js.map +1 -0
  672. package/dist/spend-ledger.d.ts +350 -0
  673. package/dist/spend-ledger.d.ts.map +1 -0
  674. package/dist/spend-ledger.js +546 -0
  675. package/dist/spend-ledger.js.map +1 -0
  676. package/dist/stale-run-sweep.d.ts +79 -0
  677. package/dist/stale-run-sweep.d.ts.map +1 -0
  678. package/dist/stale-run-sweep.js +116 -0
  679. package/dist/stale-run-sweep.js.map +1 -0
  680. package/dist/start-attempts.d.ts +385 -0
  681. package/dist/start-attempts.d.ts.map +1 -0
  682. package/dist/start-attempts.js +613 -0
  683. package/dist/start-attempts.js.map +1 -0
  684. package/dist/status-cmd.d.ts +28 -0
  685. package/dist/status-cmd.d.ts.map +1 -0
  686. package/dist/status-cmd.js +116 -0
  687. package/dist/status-cmd.js.map +1 -0
  688. package/dist/stop-follow-up.d.ts +107 -0
  689. package/dist/stop-follow-up.d.ts.map +1 -0
  690. package/dist/stop-follow-up.js +172 -0
  691. package/dist/stop-follow-up.js.map +1 -0
  692. package/dist/surface-lease.d.ts +118 -0
  693. package/dist/surface-lease.d.ts.map +1 -0
  694. package/dist/surface-lease.js +485 -0
  695. package/dist/surface-lease.js.map +1 -0
  696. package/dist/sync.d.ts +54 -0
  697. package/dist/sync.d.ts.map +1 -0
  698. package/dist/sync.js +93 -0
  699. package/dist/sync.js.map +1 -0
  700. package/dist/syncing-ledger.d.ts +45 -0
  701. package/dist/syncing-ledger.d.ts.map +1 -0
  702. package/dist/syncing-ledger.js +53 -0
  703. package/dist/syncing-ledger.js.map +1 -0
  704. package/dist/temp-fixtures.d.ts +68 -0
  705. package/dist/temp-fixtures.d.ts.map +1 -0
  706. package/dist/temp-fixtures.js +38 -0
  707. package/dist/temp-fixtures.js.map +1 -0
  708. package/dist/token-window.d.ts +84 -0
  709. package/dist/token-window.d.ts.map +1 -0
  710. package/dist/token-window.js +143 -0
  711. package/dist/token-window.js.map +1 -0
  712. package/dist/tool-bridge.d.ts +177 -0
  713. package/dist/tool-bridge.d.ts.map +1 -0
  714. package/dist/tool-bridge.js +329 -0
  715. package/dist/tool-bridge.js.map +1 -0
  716. package/dist/tool-call-record.d.ts +197 -0
  717. package/dist/tool-call-record.d.ts.map +1 -0
  718. package/dist/tool-call-record.js +276 -0
  719. package/dist/tool-call-record.js.map +1 -0
  720. package/dist/tool-protocol.d.ts +135 -0
  721. package/dist/tool-protocol.d.ts.map +1 -0
  722. package/dist/tool-protocol.js +104 -0
  723. package/dist/tool-protocol.js.map +1 -0
  724. package/dist/tool-worker.d.ts +3 -0
  725. package/dist/tool-worker.d.ts.map +1 -0
  726. package/dist/tool-worker.js +478 -0
  727. package/dist/tool-worker.js.map +1 -0
  728. package/dist/toolchain-mirror.d.ts +86 -0
  729. package/dist/toolchain-mirror.d.ts.map +1 -0
  730. package/dist/toolchain-mirror.js +307 -0
  731. package/dist/toolchain-mirror.js.map +1 -0
  732. package/dist/trusted-git.d.ts +243 -0
  733. package/dist/trusted-git.d.ts.map +1 -0
  734. package/dist/trusted-git.js +920 -0
  735. package/dist/trusted-git.js.map +1 -0
  736. package/dist/ui.d.ts +76 -0
  737. package/dist/ui.d.ts.map +1 -0
  738. package/dist/ui.js +118 -0
  739. package/dist/ui.js.map +1 -0
  740. package/dist/untrusted-exec.d.ts +275 -0
  741. package/dist/untrusted-exec.d.ts.map +1 -0
  742. package/dist/untrusted-exec.js +479 -0
  743. package/dist/untrusted-exec.js.map +1 -0
  744. package/dist/untrusted-gate.d.ts +73 -0
  745. package/dist/untrusted-gate.d.ts.map +1 -0
  746. package/dist/untrusted-gate.js +226 -0
  747. package/dist/untrusted-gate.js.map +1 -0
  748. package/dist/uploader.d.ts +153 -0
  749. package/dist/uploader.d.ts.map +1 -0
  750. package/dist/uploader.js +204 -0
  751. package/dist/uploader.js.map +1 -0
  752. package/dist/verifier.d.ts +66 -0
  753. package/dist/verifier.d.ts.map +1 -0
  754. package/dist/verifier.js +170 -0
  755. package/dist/verifier.js.map +1 -0
  756. package/dist/verify-apply.d.ts +26 -0
  757. package/dist/verify-apply.d.ts.map +1 -0
  758. package/dist/verify-apply.js +36 -0
  759. package/dist/verify-apply.js.map +1 -0
  760. package/dist/verify-cmd.d.ts +44 -0
  761. package/dist/verify-cmd.d.ts.map +1 -0
  762. package/dist/verify-cmd.js +125 -0
  763. package/dist/verify-cmd.js.map +1 -0
  764. package/dist/verify-pass.d.ts +73 -0
  765. package/dist/verify-pass.d.ts.map +1 -0
  766. package/dist/verify-pass.js +103 -0
  767. package/dist/verify-pass.js.map +1 -0
  768. package/dist/welcome.d.ts +43 -0
  769. package/dist/welcome.d.ts.map +1 -0
  770. package/dist/welcome.js +116 -0
  771. package/dist/welcome.js.map +1 -0
  772. package/dist/workspace-provisioner.d.ts +65 -0
  773. package/dist/workspace-provisioner.d.ts.map +1 -0
  774. package/dist/workspace-provisioner.js +66 -0
  775. package/dist/workspace-provisioner.js.map +1 -0
  776. package/dist/workspace-quarantine.d.ts +64 -0
  777. package/dist/workspace-quarantine.d.ts.map +1 -0
  778. package/dist/workspace-quarantine.js +156 -0
  779. package/dist/workspace-quarantine.js.map +1 -0
  780. package/dist/workspace-residue-sweep.d.ts +113 -0
  781. package/dist/workspace-residue-sweep.d.ts.map +1 -0
  782. package/dist/workspace-residue-sweep.js +158 -0
  783. package/dist/workspace-residue-sweep.js.map +1 -0
  784. package/dist/workspace.d.ts +639 -0
  785. package/dist/workspace.d.ts.map +1 -0
  786. package/dist/workspace.js +2026 -0
  787. package/dist/workspace.js.map +1 -0
  788. package/package.json +52 -4
  789. package/win/CredProbe.cs +64 -0
  790. package/win/FakeClaude.cs +56 -0
  791. package/win/HandleProbe.cs +116 -0
  792. package/win/TokenProbe.cs +53 -0
  793. package/win/appcontainer.ps1 +500 -0
@@ -0,0 +1,133 @@
1
+ import { type ApplyIntent, type Artifact, type PlannedDeletion, type RetentionPolicy, type Tombstone } from '@looply/core';
2
+ /**
3
+ * `looply evidence` — THE INVENTORY THE RETENTION POLICY WAS WAITING FOR.
4
+ *
5
+ * 🔴 D5 SHIPPED A COMPLETE POLICY WITH NO CALLER. `retentionPlan` and
6
+ * `describeRetentionPlan` had zero production callers: the fold knew what should
7
+ * expire and nothing ever asked it. This asks.
8
+ *
9
+ * ⚠️ AND IT ONLY ASKS. There is no `--apply`, deliberately. `retentionPlan`'s own
10
+ * docblock is unambiguous about why — *"DRY RUN IS NOT A MODE HERE, IT IS THE
11
+ * ONLY THING THIS FUNCTION DOES. The charter requires that old stores get an
12
+ * inventory before anything is removed, and a function that could be called in
13
+ * either mode is one that gets called in the wrong one."* The same reasoning
14
+ * applies one level up: a command that could delete is one that eventually
15
+ * deletes the wrong thing, and the policy's first rule is the one about not
16
+ * deleting.
17
+ *
18
+ * So this prints what WOULD happen and stops. Applying a plan is a separate act
19
+ * somebody builds deliberately, with the tombstones the policy already
20
+ * specifies, and it is recorded as UNFINISHED rather than half-built here.
21
+ */
22
+ export declare const EVIDENCE_USAGE: string;
23
+ export declare const EXIT_OK = 0;
24
+ export declare const EXIT_USAGE = 2;
25
+ /** The budget cannot be met without expiring something that may not be. */
26
+ export declare const EXIT_PAUSE_CAPTURE = 4;
27
+ /**
28
+ * An apply ran and refused at least one removal.
29
+ *
30
+ * 🔴 ITS OWN CODE, BECAUSE A REFUSAL IS NOT AN ERROR AND NOT A SUCCESS. Every
31
+ * refusal is the policy working, and a script that treated them as failure
32
+ * would learn to ignore them. One that could not tell them from a clean run
33
+ * would never look.
34
+ */
35
+ export declare const EXIT_REFUSED = 5;
36
+ export interface EvidenceDeps {
37
+ /**
38
+ * Every artifact this project has, already classified.
39
+ *
40
+ * ⚠️ `owned` MUST be set by whoever knows. The policy treats absent as NOT
41
+ * owned and refuses to expire it — which is the safe default and exactly why
42
+ * the caller, not the fold, decides.
43
+ */
44
+ artifacts(): Promise<readonly Artifact[]>;
45
+ /**
46
+ * What is present in the state directory and has NO class, so is not part of
47
+ * the plan above.
48
+ *
49
+ * 🔴 REPORTING THIS IS NOT OPTIONAL. Measured on a real project, the two
50
+ * classified stores held 109 KB of a 195 KB state directory: a report saying
51
+ * "7 artifacts across 2 stores" and nothing else silently omitted 44% of what
52
+ * was there, and read like an accounting. An instrument that measures less
53
+ * than it appears to is the defect this codebase names most often.
54
+ */
55
+ /**
56
+ * ⚠️ `bytes: null` means **could not be read**, not zero. An entry the
57
+ * scanner cannot size still has to appear, because the alternative is the
58
+ * silence this whole report exists to prevent.
59
+ */
60
+ uninventoried(): Promise<readonly {
61
+ name: string;
62
+ bytes: number | null;
63
+ }[]>;
64
+ policy(): RetentionPolicy;
65
+ nowMs(): number;
66
+ out(line: string): void;
67
+ err(line: string): void;
68
+ /** Where an artifact lives on disk, absolute. */
69
+ pathOf?(a: Artifact): string;
70
+ /**
71
+ * The project's own state directory.
72
+ *
73
+ * 🔴 THIS IS WHAT MAKES A ROOT "EXPLICITLY RECORDED". `OWNER_CHARTER.md` §5 D5
74
+ * limits application to *"explicitly recorded disposable roots"*, and a path
75
+ * typed on a command line is explicit but not recorded — a typo is just as
76
+ * explicit. A root has to be one the PRODUCT made and knows about, so it is
77
+ * checked against this and refused otherwise.
78
+ */
79
+ stateDir?(): string;
80
+ /** Carry out an intent. Injected, so this command is testable without a disk. */
81
+ apply?(intent: ApplyIntent): ApplyResult;
82
+ }
83
+ /** What `applyRetention` answers with, as this command needs to read it. */
84
+ export interface ApplyResult {
85
+ readonly removed: readonly Tombstone[];
86
+ readonly refused: readonly {
87
+ id: string;
88
+ because: string;
89
+ }[];
90
+ readonly alreadyGone: readonly string[];
91
+ readonly resumed: readonly string[];
92
+ /** Entries this intent had already finished. Absent on an older executor. */
93
+ readonly settled?: readonly {
94
+ id: string;
95
+ phase: string;
96
+ }[];
97
+ }
98
+ export declare function evidenceCommand(argv: readonly string[], deps: EvidenceDeps): Promise<number>;
99
+ /**
100
+ * The intent's id, DERIVED FROM WHAT IT IS ABOUT rather than freshly minted.
101
+ *
102
+ * 🔴 A MINTED ID MEANT A CRASH COULD NEVER BE RESUMED. `resumeApply` reads the
103
+ * journal for records of THIS intent; with a new id every invocation, an
104
+ * `intended` left behind by a crash belonged to an id nothing would ever ask
105
+ * about again — so the one state the two-phase journal exists to survive was
106
+ * the one state it could not reach. Measured live: three identical `refused`
107
+ * records for one artifact across three runs, because every run decided it
108
+ * afresh under a new name.
109
+ *
110
+ * Deriving it from the root and from each deletion's identity, size and age
111
+ * means the same plan is the same intent — so a crash resumes — and a different
112
+ * plan is a different one, so a later, different apply is not mistaken for a
113
+ * continuation of an earlier one.
114
+ *
115
+ * FNV-1a, inline: this needs a stable short string, not a cryptographic
116
+ * property, and reaching for a hash module to get one would be a dependency
117
+ * with nothing behind it.
118
+ */
119
+ export declare function intentIdFor(root: string, deletions: readonly PlannedDeletion[]): string;
120
+ /**
121
+ * What this report does NOT account for, said out loud with its size.
122
+ *
123
+ * ⚠️ THE POLICY'S UNIT IS AN ARTIFACT WITH A CLASS, and a ledger or a cache
124
+ * has no class until somebody decides what one entry of it IS. Guessing in
125
+ * order to report a bigger number would be worse than omitting them — but
126
+ * omitting them SILENTLY is worse still, because the total then reads as the
127
+ * whole accounting.
128
+ */
129
+ /** How many named entries the short form shows before it says how many it is hiding. */
130
+ export declare const UNINVENTORIED_PREVIEW = 5;
131
+ /** The numbers, unless a project says otherwise. Stated once, here and in the policy. */
132
+ export declare const evidencePolicy: () => RetentionPolicy;
133
+ //# sourceMappingURL=evidence-cmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-cmd.d.ts","sourceRoot":"","sources":["../src/evidence-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAEtB;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,eAAO,MAAM,cAAc,QAQf,CAAC;AAEb,eAAO,MAAM,OAAO,IAAI,CAAC;AACzB,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,SAAS,IAAI,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IAC1C;;;;;;;;;OASG;IACH;;;;OAIG;IACH,aAAa,IAAI,OAAO,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,IAAI,eAAe,CAAC;IAC1B,KAAK,IAAI,MAAM,CAAC;IAChB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAIxB,iDAAiD;IACjD,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAI,MAAM,CAAC;IACpB,iFAAiF;IACjF,KAAK,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;CAC1C;AAED,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7D;AAKD,wBAAsB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAiHlG;AAGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAQvF;AAyGD;;;;;;;;GAQG;AACH,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AA2DvC,yFAAyF;AACzF,eAAO,MAAM,cAAc,QAAO,eAAoC,CAAC"}
@@ -0,0 +1,347 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evidencePolicy = exports.UNINVENTORIED_PREVIEW = exports.EXIT_REFUSED = exports.EXIT_PAUSE_CAPTURE = exports.EXIT_USAGE = exports.EXIT_OK = exports.EVIDENCE_USAGE = void 0;
4
+ exports.evidenceCommand = evidenceCommand;
5
+ exports.intentIdFor = intentIdFor;
6
+ const core_1 = require("@looply/core");
7
+ /**
8
+ * `looply evidence` — THE INVENTORY THE RETENTION POLICY WAS WAITING FOR.
9
+ *
10
+ * 🔴 D5 SHIPPED A COMPLETE POLICY WITH NO CALLER. `retentionPlan` and
11
+ * `describeRetentionPlan` had zero production callers: the fold knew what should
12
+ * expire and nothing ever asked it. This asks.
13
+ *
14
+ * ⚠️ AND IT ONLY ASKS. There is no `--apply`, deliberately. `retentionPlan`'s own
15
+ * docblock is unambiguous about why — *"DRY RUN IS NOT A MODE HERE, IT IS THE
16
+ * ONLY THING THIS FUNCTION DOES. The charter requires that old stores get an
17
+ * inventory before anything is removed, and a function that could be called in
18
+ * either mode is one that gets called in the wrong one."* The same reasoning
19
+ * applies one level up: a command that could delete is one that eventually
20
+ * deletes the wrong thing, and the policy's first rule is the one about not
21
+ * deleting.
22
+ *
23
+ * So this prints what WOULD happen and stops. Applying a plan is a separate act
24
+ * somebody builds deliberately, with the tombstones the policy already
25
+ * specifies, and it is recorded as UNFINISHED rather than half-built here.
26
+ */
27
+ exports.EVIDENCE_USAGE = [
28
+ 'looply evidence what this project has accumulated, and what the retention policy would do with it',
29
+ 'looply evidence --all the same, listing every uninventoried entry by name rather than the largest few',
30
+ 'looply evidence --apply --root <d> carry the plan out, inside that one directory and nowhere else',
31
+ '',
32
+ 'Without --apply it deletes nothing. With it, --root is REQUIRED and must name one',
33
+ 'of this project\'s own evidence stores: the executor refuses anything unowned,',
34
+ 'pinned, referenced, changed since the plan, or reachable only through a link.',
35
+ ].join('\n');
36
+ exports.EXIT_OK = 0;
37
+ exports.EXIT_USAGE = 2;
38
+ /** The budget cannot be met without expiring something that may not be. */
39
+ exports.EXIT_PAUSE_CAPTURE = 4;
40
+ /**
41
+ * An apply ran and refused at least one removal.
42
+ *
43
+ * 🔴 ITS OWN CODE, BECAUSE A REFUSAL IS NOT AN ERROR AND NOT A SUCCESS. Every
44
+ * refusal is the policy working, and a script that treated them as failure
45
+ * would learn to ignore them. One that could not tell them from a clean run
46
+ * would never look.
47
+ */
48
+ exports.EXIT_REFUSED = 5;
49
+ const kb = (bytes) => bytes >= 1024 * 1024 ? `${(bytes / 1024 / 1024).toFixed(1)} MB` : `${Math.round(bytes / 1024)} KB`;
50
+ async function evidenceCommand(argv, deps) {
51
+ /** Arguments first, before anything is read — the R2-G-1 lesson. */
52
+ const all = argv.includes('--all');
53
+ const apply = argv.includes('--apply');
54
+ const rootAt = argv.indexOf('--root');
55
+ const root = rootAt >= 0 ? argv[rootAt + 1] : undefined;
56
+ const consumed = new Set();
57
+ for (const [i, a] of argv.entries()) {
58
+ if (a === '--all' || a === '--apply' || a === '--root')
59
+ consumed.add(i);
60
+ if (a === '--root' && rootAt === i)
61
+ consumed.add(i + 1);
62
+ }
63
+ const unknown = argv.filter((_, i) => !consumed.has(i));
64
+ if (unknown.length > 0) {
65
+ deps.err(`looply evidence: ${unknown.join(', ')} — no idea what that means.\n\n${exports.EVIDENCE_USAGE}`);
66
+ return exports.EXIT_USAGE;
67
+ }
68
+ /**
69
+ * ⚠️ `--root` WITHOUT `--apply` IS REFUSED RATHER THAN IGNORED. A person who
70
+ * typed a root meant to act on it; printing a report and exiting 0 would look
71
+ * exactly like having done so.
72
+ */
73
+ if (rootAt >= 0 && !apply) {
74
+ deps.err(`looply evidence: --root means nothing without --apply.\n\n${exports.EVIDENCE_USAGE}`);
75
+ return exports.EXIT_USAGE;
76
+ }
77
+ if (apply) {
78
+ const bad = applyPrecheck(root, deps);
79
+ if (bad !== null) {
80
+ deps.err(`looply evidence --apply: ${bad}`);
81
+ return exports.EXIT_USAGE;
82
+ }
83
+ }
84
+ const artifacts = await deps.artifacts();
85
+ const uncounted = await deps.uninventoried();
86
+ if (artifacts.length === 0) {
87
+ deps.out('evidence: this project has accumulated nothing the retention policy covers.');
88
+ reportUninventoried(deps, uncounted, all);
89
+ return exports.EXIT_OK;
90
+ }
91
+ // (artifacts, nowMs, policy) — the order the fold declares, not the one that reads nicely.
92
+ const plan = (0, core_1.retentionPlan)(artifacts, deps.nowMs(), deps.policy());
93
+ /** What is there, by store, before anything about expiry. */
94
+ const byStore = new Map();
95
+ for (const a of artifacts) {
96
+ const at = byStore.get(a.store) ?? { count: 0, bytes: 0 };
97
+ byStore.set(a.store, { count: at.count + 1, bytes: at.bytes + a.bytes });
98
+ }
99
+ deps.out(`evidence: ${artifacts.length} artifact(s) across ${byStore.size} store(s)`);
100
+ for (const [store, at] of [...byStore.entries()].sort((a, b) => b[1].bytes - a[1].bytes)) {
101
+ deps.out(` ${store.padEnd(22)} ${String(at.count).padStart(4)} ${kb(at.bytes).padStart(9)}`);
102
+ }
103
+ /**
104
+ * ⚠️ PROTECTED BYTES ARE SAID SEPARATELY FROM KEPT ONES. They are not the
105
+ * same claim: kept-but-expirable will go one day, and protected will not go
106
+ * at all. A single "retained" number would hide which of those a person is
107
+ * looking at.
108
+ */
109
+ deps.out('');
110
+ deps.out(` would expire ${String(plan.tombstones.length).padStart(4)} ${kb(plan.tombstones.reduce((n, t) => n + t.bytes, 0)).padStart(9)}`);
111
+ deps.out(` would keep ${String(plan.decisions.filter((d) => d.verdict.kind === 'keep').length).padStart(4)} ${kb(plan.unpinnedBytesAfter).padStart(9)} unpinned, still expirable later`);
112
+ deps.out(` protected ${' -'} ${kb(plan.protectedBytes).padStart(9)} pinned or not owned — nothing may expire these`);
113
+ /**
114
+ * 🔴 THE REASONS ARE PRINTED, NOT JUST THE COUNTS. An inventory that said
115
+ * "12 would expire" and nothing else is a number somebody has to trust. The
116
+ * policy writes a `because` for every decision; this is where a person reads
117
+ * it and disagrees with it before anything is ever applied.
118
+ */
119
+ /**
120
+ * 🔴 THE "NOTHING WAS DELETED" LINE IS DROPPED WHEN SOMETHING IS ABOUT TO BE.
121
+ *
122
+ * `describeRetentionPlan` ends with *"nothing was deleted: this is a plan, and
123
+ * applying one is a separate deliberate act"* — true of every report, and
124
+ * FALSE three lines above an apply that removed two directories. Measured on a
125
+ * real project: the report said nothing was deleted and the apply underneath
126
+ * it said `removed 2`. A reassurance contradicted by the next paragraph is
127
+ * worse than no reassurance.
128
+ */
129
+ const lines = (0, core_1.describeRetentionPlan)(plan).filter((l) => !(apply && l.includes('nothing was deleted')));
130
+ if (lines.length > 0) {
131
+ deps.out('');
132
+ for (const line of lines)
133
+ deps.out(` ${line}`);
134
+ }
135
+ reportUninventoried(deps, uncounted, all);
136
+ if (apply) {
137
+ return carryOut(plan.tombstones, root, deps);
138
+ }
139
+ if (plan.capturePaused) {
140
+ /**
141
+ * 🔴 AN ACTIONABLE STATE, AND ITS OWN EXIT CODE. The budget is full of
142
+ * things that may not be expired, so capture of NEW artifacts must stop
143
+ * until a person resolves it. Reporting that as ordinary output would let a
144
+ * script sail past the one condition the budget exists to surface.
145
+ */
146
+ deps.err('');
147
+ deps.err('evidence: CAPTURE PAUSED — the budget is full of artifacts nothing may expire. ' +
148
+ 'New capture in those stores should stop until somebody pins less, or raises the budget deliberately.');
149
+ return exports.EXIT_PAUSE_CAPTURE;
150
+ }
151
+ // No closing line of our own: `describeRetentionPlan` already ends with
152
+ // "nothing was deleted: this is a plan…", and saying it twice would read as
153
+ // two different reassurances rather than one fact.
154
+ return exports.EXIT_OK;
155
+ }
156
+ /**
157
+ * The intent's id, DERIVED FROM WHAT IT IS ABOUT rather than freshly minted.
158
+ *
159
+ * 🔴 A MINTED ID MEANT A CRASH COULD NEVER BE RESUMED. `resumeApply` reads the
160
+ * journal for records of THIS intent; with a new id every invocation, an
161
+ * `intended` left behind by a crash belonged to an id nothing would ever ask
162
+ * about again — so the one state the two-phase journal exists to survive was
163
+ * the one state it could not reach. Measured live: three identical `refused`
164
+ * records for one artifact across three runs, because every run decided it
165
+ * afresh under a new name.
166
+ *
167
+ * Deriving it from the root and from each deletion's identity, size and age
168
+ * means the same plan is the same intent — so a crash resumes — and a different
169
+ * plan is a different one, so a later, different apply is not mistaken for a
170
+ * continuation of an earlier one.
171
+ *
172
+ * FNV-1a, inline: this needs a stable short string, not a cryptographic
173
+ * property, and reaching for a hash module to get one would be a dependency
174
+ * with nothing behind it.
175
+ */
176
+ function intentIdFor(root, deletions) {
177
+ const material = [root, ...[...deletions].map((d) => `${d.id}:${d.bytes}:${d.createdAtMs}`).sort()].join('|');
178
+ let h = 0x811c9dc5;
179
+ for (let i = 0; i < material.length; i += 1) {
180
+ h ^= material.charCodeAt(i);
181
+ h = Math.imul(h, 0x01000193) >>> 0;
182
+ }
183
+ return `ret_${h.toString(36)}`;
184
+ }
185
+ /**
186
+ * Everything wrong with an `--apply` invocation, before a single file is read.
187
+ *
188
+ * Null when there is nothing wrong. Checked BEFORE the inventory, so a bad root
189
+ * never reaches a plan — the R2-G-1 lesson applied to the one verb that can
190
+ * destroy something.
191
+ */
192
+ function applyPrecheck(root, deps) {
193
+ if (deps.apply === undefined || deps.pathOf === undefined || deps.stateDir === undefined) {
194
+ return 'this build has no executor wired to it, so there is nothing to apply with';
195
+ }
196
+ if (root === undefined || root === '' || root.startsWith('--')) {
197
+ return '--root is required, and must name one of this project\u2019s evidence stores';
198
+ }
199
+ const state = deps.stateDir();
200
+ if (!(0, core_1.insideRoot)(state, root)) {
201
+ return `${root} is not inside this project\u2019s state directory (${state}), and only a root the product made may be applied to`;
202
+ }
203
+ /**
204
+ * 🔴 AND IT MUST NOT BE THE STATE DIRECTORY ITSELF. `insideRoot` answers true
205
+ * for the root it is given, so naming the state directory would authorise the
206
+ * queue, the ledger, the lease and every index under it. A store is a child of
207
+ * it, never it.
208
+ */
209
+ if ((0, core_1.insideRoot)(root, state)) {
210
+ return `${root} is the whole state directory — name a single store inside it, not the directory that holds everything`;
211
+ }
212
+ return null;
213
+ }
214
+ /**
215
+ * Turn what the plan would expire into an intent bounded by one root, and run it.
216
+ *
217
+ * ⚠️ THE PLAN IS FILTERED TO THE ROOT, NOT CHECKED AGAINST IT. An artifact the
218
+ * policy would expire that lives somewhere else is not an error and not a
219
+ * refusal — the person named one store, and the others are simply not this
220
+ * invocation's business. They are counted out loud so the difference between
221
+ * "nothing to do" and "nothing HERE to do" is visible.
222
+ */
223
+ function carryOut(tombstones, root, deps) {
224
+ const pathOf = deps.pathOf;
225
+ const run = deps.apply;
226
+ const all = tombstones.map((t) => ({
227
+ id: t.id,
228
+ store: t.store,
229
+ path: pathOf({ id: t.id, store: t.store, bytes: t.bytes, createdAtMs: t.createdAtMs, class: 'failure-diagnostic' }),
230
+ bytes: t.bytes,
231
+ createdAtMs: t.createdAtMs,
232
+ because: t.because,
233
+ }));
234
+ const here = all.filter((d) => (0, core_1.insideRoot)(root, d.path));
235
+ const elsewhere = all.length - here.length;
236
+ deps.out('');
237
+ if (here.length === 0) {
238
+ deps.out(elsewhere === 0
239
+ ? 'apply: the policy would expire nothing, so there is nothing to carry out.'
240
+ : `apply: nothing to carry out in ${root} — the ${elsewhere} the policy would expire live in other stores.`);
241
+ return exports.EXIT_OK;
242
+ }
243
+ const intent = {
244
+ intentId: intentIdFor(root, here),
245
+ root,
246
+ plannedAtMs: deps.nowMs(),
247
+ policy: deps.policy(),
248
+ deletions: here,
249
+ };
250
+ const out = run(intent);
251
+ deps.out(`apply: ${here.length} planned in ${root}${elsewhere > 0 ? ` (${elsewhere} more are in other stores)` : ''}`);
252
+ if (out.resumed.length > 0)
253
+ deps.out(` resumed ${String(out.resumed.length).padStart(4)} left in flight by an earlier run`);
254
+ deps.out(` removed ${String(out.removed.length).padStart(4)} ${kb(out.removed.reduce((n, t) => n + t.bytes, 0)).padStart(9)}`);
255
+ if (out.alreadyGone.length > 0)
256
+ deps.out(` already gone ${String(out.alreadyGone.length).padStart(4)} removed before this run reached them`);
257
+ /**
258
+ * 🔴 EVERY REFUSAL IS PRINTED WITH ITS REASON. A count of refusals is a number
259
+ * nobody can act on; the whole design of the executor is that it says which of
260
+ * a dozen named reasons applied, and a report that swallowed those would make
261
+ * the care in it invisible.
262
+ */
263
+ for (const r of out.refused)
264
+ deps.out(` refused ${r.id}: ${r.because}`);
265
+ /**
266
+ * 🔴 A REFUSAL THIS RUN DID NOT MAKE IS STILL A REFUSAL.
267
+ *
268
+ * Running the same plan twice decides nothing the second time — that is the
269
+ * journal working. But reporting "removed 0, refused 0, exit 0" would tell
270
+ * somebody re-running to check that everything is fine, about a store where an
271
+ * artifact is still standing because the policy refused to remove it. The
272
+ * decision holds; it was simply made earlier, and it is said and counted.
273
+ */
274
+ const stoodRefused = (out.settled ?? []).filter((e) => e.phase === 'refused');
275
+ for (const e of stoodRefused)
276
+ deps.out(` refused ${e.id}: decided by an earlier run of this same plan, and it still stands`);
277
+ if ((out.settled ?? []).length > 0) {
278
+ deps.out(` settled ${String(out.settled.length).padStart(4)} this plan had already been carried out`);
279
+ }
280
+ return out.refused.length + stoodRefused.length > 0 ? exports.EXIT_REFUSED : exports.EXIT_OK;
281
+ }
282
+ /**
283
+ * What this report does NOT account for, said out loud with its size.
284
+ *
285
+ * ⚠️ THE POLICY'S UNIT IS AN ARTIFACT WITH A CLASS, and a ledger or a cache
286
+ * has no class until somebody decides what one entry of it IS. Guessing in
287
+ * order to report a bigger number would be worse than omitting them — but
288
+ * omitting them SILENTLY is worse still, because the total then reads as the
289
+ * whole accounting.
290
+ */
291
+ /** How many named entries the short form shows before it says how many it is hiding. */
292
+ exports.UNINVENTORIED_PREVIEW = 5;
293
+ function reportUninventoried(deps, uncounted, all) {
294
+ if (uncounted.length === 0)
295
+ return;
296
+ /**
297
+ * 🔴 THE DOCBLOCK ABOVE SAID IT, AND THE CODE DID THE OPPOSITE.
298
+ *
299
+ * *"omitting them SILENTLY is worse still, because the total then reads as
300
+ * the whole accounting"* — and an entry the scanner could not `stat` was
301
+ * dropped on the floor, so a state directory containing an unreadable entry
302
+ * reported the same count and the same total as one containing nothing of
303
+ * the kind. Measured: 24 entries / 94 KB before a dangling junction was put
304
+ * in the state dir, and **24 entries / 94 KB after**.
305
+ *
306
+ * ⚠️ So an unsized entry is counted, named, and kept OUT of the byte total,
307
+ * and the total is marked as a floor rather than a figure. Adding a zero for
308
+ * it would understate the directory while looking exact, which is the same
309
+ * failure wearing a number.
310
+ */
311
+ const sized = uncounted.filter((u) => u.bytes !== null);
312
+ const unsized = uncounted.filter((u) => u.bytes === null);
313
+ const total = sized.reduce((n, u) => n + u.bytes, 0);
314
+ const size = unsized.length > 0 ? `at least ${kb(total)}` : kb(total);
315
+ deps.out('');
316
+ deps.out(` NOT inventoried: ${uncounted.length} entr${uncounted.length === 1 ? 'y' : 'ies'}, ${size} — no class yet, so no plan covers them`);
317
+ /**
318
+ * 🔴 `… and 20 more` HID THE ONE THING THE CHARTER ASKS FOR BY NAME.
319
+ *
320
+ * `OWNER_CHARTER.md` §5 D5: *"Also cover the named compile/tool/rejected
321
+ * stores or report exact unclassified entries."* `rejected` is inventoried;
322
+ * the compile and tool stores are not, and on a real project they sat inside
323
+ * an elision that named five entries and swallowed twenty. A reader could not
324
+ * tell whether they were in there at all.
325
+ *
326
+ * So `--all` lists every one, and the short form's elision now carries the
327
+ * BYTES it is hiding as well as the count — a number that cannot be read as
328
+ * "a few small ones" when it is not.
329
+ */
330
+ const ordered = [...sized].sort((a, b) => b.bytes - a.bytes);
331
+ const shown = all ? ordered : ordered.slice(0, exports.UNINVENTORIED_PREVIEW);
332
+ for (const u of shown) {
333
+ deps.out(` ${u.name.padEnd(30)} ${kb(u.bytes).padStart(9)}`);
334
+ }
335
+ const hidden = ordered.slice(shown.length);
336
+ if (hidden.length > 0) {
337
+ const hiddenBytes = hidden.reduce((n, u) => n + u.bytes, 0);
338
+ deps.out(` … and ${hidden.length} more, ${kb(hiddenBytes)} — \`looply evidence --all\` names them`);
339
+ }
340
+ for (const u of unsized) {
341
+ deps.out(` ${u.name.padEnd(30)} ${'unreadable'.padStart(9)}`);
342
+ }
343
+ }
344
+ /** The numbers, unless a project says otherwise. Stated once, here and in the policy. */
345
+ const evidencePolicy = () => core_1.DEFAULT_RETENTION;
346
+ exports.evidencePolicy = evidencePolicy;
347
+ //# sourceMappingURL=evidence-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-cmd.js","sourceRoot":"","sources":["../src/evidence-cmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * WHAT THE FILESYSTEM CANNOT SAY: provenance, pins and references, asked
3
+ * again at the moment of removal.
4
+ *
5
+ * 🔴 IT LIVES HERE, AND NOT IN `bin.ts`, FOR THE REASON `self-repo-id.ts`
6
+ * gives at length: a spec that needs this would otherwise have to import the
7
+ * CLI entry point, and two suites importing that file is how a half-written
8
+ * transform cache entry took the gate down twice. It is also the only way to
9
+ * test it at all — this is the last check before a delete, and it had no
10
+ * spec of its own while it was a private function in a 2,000-line file.
11
+ */
12
+ /**
13
+ * Ownership, class and — the hard one — whether anything still refers to it.
14
+ *
15
+ * 🔴 `referenced` DEFAULTS TO TRUE, AND THAT IS THE WHOLE DESIGN OF IT.
16
+ * `OWNER_CHARTER.md` §5 D5 forbids deleting *"artifacts referenced by
17
+ * active/review/recovery work"* and says *"missing/unreadable/unknown is never
18
+ * deletion permission"*. Put together, those mean an artifact whose references
19
+ * could not be established is referenced as far as this is concerned. Only a
20
+ * check that RAN and found nothing may answer false.
21
+ *
22
+ * The three places a rejected candidate can still be spoken for, and all of them
23
+ * are bounded reads of files this project already keeps:
24
+ *
25
+ * run.lease.json the run holding the project right now
26
+ * runs/ the run records that have not been reaped
27
+ * queue.json an item still carrying the failure this candidate is from
28
+ *
29
+ * ⚠️ NOT `events.jsonl`. Every run id that ever existed is in it, so a search
30
+ * there would find every artifact referenced for ever and the policy would never
31
+ * expire anything — a rule that always says no is indistinguishable from one
32
+ * nobody wrote.
33
+ */
34
+ export declare function artifactFacts(stateDir: string, id: string): {
35
+ owned: boolean;
36
+ pinned: boolean;
37
+ referenced: boolean;
38
+ class: 'failure-diagnostic' | 'success-diagnostic' | 'durable';
39
+ };
40
+ //# sourceMappingURL=evidence-facts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-facts.d.ts","sourceRoot":"","sources":["../src/evidence-facts.ts"],"names":[],"mappings":"AAyBA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG;IAC3D,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,SAAS,CAAC;CAChE,CAuDA"}