@quolu/lattice 0.1.0 → 0.12.2

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 (370) hide show
  1. package/README.md +87 -4
  2. package/bin/lattice-bridge.mjs +87 -0
  3. package/bin/lattice-dashboard.mjs +70 -0
  4. package/bin/lattice-mcp.mjs +9 -9
  5. package/bin/lattice.mjs +61 -8
  6. package/docs/bridge-setup.md +87 -0
  7. package/docs/schemas/lattice.plan_create_input.v1.schema.json +56 -0
  8. package/docs/schemas/lattice.plan_create_input.v2.schema.json +72 -0
  9. package/docs/schemas/lattice.plan_create_input.v3.schema.json +81 -0
  10. package/package.json +19 -7
  11. package/sensor/dist/bin/command-supervision.d.ts +1 -1
  12. package/sensor/dist/bin/command-supervision.js +4 -4
  13. package/sensor/dist/bin/command-supervision.js.map +1 -1
  14. package/sensor/dist/bin/fatal-handler.js +2 -2
  15. package/sensor/dist/bin/fatal-handler.js.map +1 -1
  16. package/sensor/dist/bin/{codegraph.js → lattice-sensor.js} +207 -328
  17. package/sensor/dist/bin/node-version-check.d.ts +7 -5
  18. package/sensor/dist/bin/node-version-check.d.ts.map +1 -1
  19. package/sensor/dist/bin/node-version-check.js +19 -14
  20. package/sensor/dist/bin/node-version-check.js.map +1 -1
  21. package/sensor/dist/context/index.d.ts +1 -1
  22. package/sensor/dist/context/index.js +6 -6
  23. package/sensor/dist/context/index.js.map +1 -1
  24. package/sensor/dist/db/index.d.ts +5 -5
  25. package/sensor/dist/db/index.d.ts.map +1 -1
  26. package/sensor/dist/db/index.js +7 -7
  27. package/sensor/dist/db/index.js.map +1 -1
  28. package/sensor/dist/db/migrations.js +1 -1
  29. package/sensor/dist/db/migrations.js.map +1 -1
  30. package/sensor/dist/db/queries.d.ts +1 -1
  31. package/sensor/dist/db/queries.js +5 -5
  32. package/sensor/dist/db/queries.js.map +1 -1
  33. package/sensor/dist/db/schema.sql +2 -2
  34. package/sensor/dist/db/sqlite-adapter.d.ts +2 -2
  35. package/sensor/dist/db/sqlite-adapter.js +3 -3
  36. package/sensor/dist/db/sqlite-adapter.js.map +1 -1
  37. package/sensor/dist/db/wal-valve.d.ts +1 -1
  38. package/sensor/dist/db/wal-valve.d.ts.map +1 -1
  39. package/sensor/dist/db/wal-valve.js +2 -2
  40. package/sensor/dist/db/wal-valve.js.map +1 -1
  41. package/sensor/dist/directory.d.ts +27 -63
  42. package/sensor/dist/directory.d.ts.map +1 -1
  43. package/sensor/dist/directory.js +78 -134
  44. package/sensor/dist/directory.js.map +1 -1
  45. package/sensor/dist/errors.d.ts +15 -15
  46. package/sensor/dist/errors.d.ts.map +1 -1
  47. package/sensor/dist/errors.js +21 -21
  48. package/sensor/dist/errors.js.map +1 -1
  49. package/sensor/dist/extraction/dynamic-import.d.ts +1 -1
  50. package/sensor/dist/extraction/dynamic-import.js +1 -1
  51. package/sensor/dist/extraction/extraction-version.d.ts +1 -1
  52. package/sensor/dist/extraction/extraction-version.js +1 -1
  53. package/sensor/dist/extraction/generated-detection.d.ts +1 -1
  54. package/sensor/dist/extraction/generated-detection.js +1 -1
  55. package/sensor/dist/extraction/grammars.d.ts +3 -3
  56. package/sensor/dist/extraction/grammars.js +5 -5
  57. package/sensor/dist/extraction/grammars.js.map +1 -1
  58. package/sensor/dist/extraction/index.d.ts +6 -6
  59. package/sensor/dist/extraction/index.js +50 -50
  60. package/sensor/dist/extraction/index.js.map +1 -1
  61. package/sensor/dist/extraction/kernel/decode.d.ts +1 -1
  62. package/sensor/dist/extraction/kernel/decode.js +1 -1
  63. package/sensor/dist/extraction/kernel/index.d.ts +3 -3
  64. package/sensor/dist/extraction/kernel/index.js +6 -6
  65. package/sensor/dist/extraction/kernel/index.js.map +1 -1
  66. package/sensor/dist/extraction/kernel/layout.d.ts +1 -1
  67. package/sensor/dist/extraction/kernel/layout.js +1 -1
  68. package/sensor/dist/extraction/kernel/loader.d.ts +6 -6
  69. package/sensor/dist/extraction/kernel/loader.js +13 -13
  70. package/sensor/dist/extraction/kernel/loader.js.map +1 -1
  71. package/sensor/dist/extraction/languages/cfquery.d.ts +1 -1
  72. package/sensor/dist/extraction/languages/cfquery.js +1 -1
  73. package/sensor/dist/extraction/languages/lua.d.ts +11 -0
  74. package/sensor/dist/extraction/languages/lua.d.ts.map +1 -1
  75. package/sensor/dist/extraction/languages/lua.js +1 -0
  76. package/sensor/dist/extraction/languages/lua.js.map +1 -1
  77. package/sensor/dist/extraction/parse-pool.d.ts +5 -5
  78. package/sensor/dist/extraction/parse-pool.d.ts.map +1 -1
  79. package/sensor/dist/extraction/parse-pool.js +4 -4
  80. package/sensor/dist/extraction/parse-worker.js +1 -1
  81. package/sensor/dist/extraction/parse-worker.js.map +1 -1
  82. package/sensor/dist/extraction/store-writer.d.ts +1 -1
  83. package/sensor/dist/extraction/store-writer.js +1 -1
  84. package/sensor/dist/extraction/svelte-extractor.d.ts +1 -1
  85. package/sensor/dist/extraction/svelte-extractor.js +1 -1
  86. package/sensor/dist/extraction/tree-sitter-helpers.js +1 -1
  87. package/sensor/dist/extraction/tree-sitter.d.ts +2 -2
  88. package/sensor/dist/extraction/tree-sitter.d.ts.map +1 -1
  89. package/sensor/dist/extraction/tree-sitter.js +71 -4
  90. package/sensor/dist/extraction/tree-sitter.js.map +1 -1
  91. package/sensor/dist/extraction/wasm-runtime-flags.d.ts +2 -2
  92. package/sensor/dist/extraction/wasm-runtime-flags.d.ts.map +1 -1
  93. package/sensor/dist/extraction/wasm-runtime-flags.js +5 -5
  94. package/sensor/dist/extraction/wasm-runtime-flags.js.map +1 -1
  95. package/sensor/dist/index.d.ts +36 -36
  96. package/sensor/dist/index.d.ts.map +1 -1
  97. package/sensor/dist/index.js +71 -71
  98. package/sensor/dist/index.js.map +1 -1
  99. package/sensor/dist/mcp/daemon-manager.js +1 -1
  100. package/sensor/dist/mcp/daemon-paths.d.ts +3 -3
  101. package/sensor/dist/mcp/daemon-paths.js +7 -7
  102. package/sensor/dist/mcp/daemon-paths.js.map +1 -1
  103. package/sensor/dist/mcp/daemon-registry.d.ts +2 -2
  104. package/sensor/dist/mcp/daemon-registry.js +5 -5
  105. package/sensor/dist/mcp/daemon.d.ts +7 -7
  106. package/sensor/dist/mcp/daemon.d.ts.map +1 -1
  107. package/sensor/dist/mcp/daemon.js +21 -21
  108. package/sensor/dist/mcp/daemon.js.map +1 -1
  109. package/sensor/dist/mcp/dynamic-boundaries.js +1 -1
  110. package/sensor/dist/mcp/engine.d.ts +9 -9
  111. package/sensor/dist/mcp/engine.d.ts.map +1 -1
  112. package/sensor/dist/mcp/engine.js +44 -44
  113. package/sensor/dist/mcp/engine.js.map +1 -1
  114. package/sensor/dist/mcp/index.d.ts +14 -14
  115. package/sensor/dist/mcp/index.d.ts.map +1 -1
  116. package/sensor/dist/mcp/index.js +41 -41
  117. package/sensor/dist/mcp/index.js.map +1 -1
  118. package/sensor/dist/mcp/liveness-watchdog.js +7 -7
  119. package/sensor/dist/mcp/liveness-watchdog.js.map +1 -1
  120. package/sensor/dist/mcp/ppid-watchdog.d.ts +3 -3
  121. package/sensor/dist/mcp/ppid-watchdog.js +2 -2
  122. package/sensor/dist/mcp/proxy.d.ts.map +1 -1
  123. package/sensor/dist/mcp/proxy.js +37 -37
  124. package/sensor/dist/mcp/proxy.js.map +1 -1
  125. package/sensor/dist/mcp/query-pool.d.ts +3 -3
  126. package/sensor/dist/mcp/query-pool.js +7 -7
  127. package/sensor/dist/mcp/query-pool.js.map +1 -1
  128. package/sensor/dist/mcp/query-worker.d.ts +2 -2
  129. package/sensor/dist/mcp/query-worker.js +7 -7
  130. package/sensor/dist/mcp/query-worker.js.map +1 -1
  131. package/sensor/dist/mcp/server-instructions.d.ts +10 -12
  132. package/sensor/dist/mcp/server-instructions.d.ts.map +1 -1
  133. package/sensor/dist/mcp/server-instructions.js +39 -37
  134. package/sensor/dist/mcp/server-instructions.js.map +1 -1
  135. package/sensor/dist/mcp/session.d.ts +2 -2
  136. package/sensor/dist/mcp/session.js +18 -18
  137. package/sensor/dist/mcp/session.js.map +1 -1
  138. package/sensor/dist/mcp/startup-handshake.d.ts +3 -3
  139. package/sensor/dist/mcp/startup-handshake.d.ts.map +1 -1
  140. package/sensor/dist/mcp/startup-handshake.js +3 -3
  141. package/sensor/dist/mcp/startup-handshake.js.map +1 -1
  142. package/sensor/dist/mcp/tools.d.ts +53 -53
  143. package/sensor/dist/mcp/tools.d.ts.map +1 -1
  144. package/sensor/dist/mcp/tools.js +180 -216
  145. package/sensor/dist/mcp/tools.js.map +1 -1
  146. package/sensor/dist/mcp/transport.d.ts +1 -1
  147. package/sensor/dist/mcp/transport.js +6 -6
  148. package/sensor/dist/mcp/transport.js.map +1 -1
  149. package/sensor/dist/mcp/version.d.ts +2 -2
  150. package/sensor/dist/mcp/version.d.ts.map +1 -1
  151. package/sensor/dist/mcp/version.js +3 -3
  152. package/sensor/dist/mcp/version.js.map +1 -1
  153. package/sensor/dist/project-config.d.ts +6 -6
  154. package/sensor/dist/project-config.d.ts.map +1 -1
  155. package/sensor/dist/project-config.js +10 -10
  156. package/sensor/dist/project-config.js.map +1 -1
  157. package/sensor/dist/resolution/callback-synthesizer.js +4 -4
  158. package/sensor/dist/resolution/callback-synthesizer.js.map +1 -1
  159. package/sensor/dist/resolution/frameworks/drupal.d.ts +3 -3
  160. package/sensor/dist/resolution/frameworks/drupal.js +3 -3
  161. package/sensor/dist/resolution/frameworks/fabric.js +1 -1
  162. package/sensor/dist/resolution/frameworks/fabric.js.map +1 -1
  163. package/sensor/dist/resolution/frameworks/java.js +1 -1
  164. package/sensor/dist/resolution/frameworks/java.js.map +1 -1
  165. package/sensor/dist/resolution/frameworks/svelte.js +1 -1
  166. package/sensor/dist/resolution/frameworks/svelte.js.map +1 -1
  167. package/sensor/dist/resolution/goframe-synthesizer.d.ts +1 -1
  168. package/sensor/dist/resolution/goframe-synthesizer.js +1 -1
  169. package/sensor/dist/resolution/index.d.ts +1 -1
  170. package/sensor/dist/resolution/index.js +9 -9
  171. package/sensor/dist/resolution/index.js.map +1 -1
  172. package/sensor/dist/resolution/name-matcher.js +2 -2
  173. package/sensor/dist/resolution/name-matcher.js.map +1 -1
  174. package/sensor/dist/resolution/resolver-pool.d.ts +2 -2
  175. package/sensor/dist/resolution/resolver-pool.js +4 -4
  176. package/sensor/dist/resolution/resolver-pool.js.map +1 -1
  177. package/sensor/dist/resolution/resolver-worker.js +2 -2
  178. package/sensor/dist/resolution/resolver-worker.js.map +1 -1
  179. package/sensor/dist/resolution/workspace-packages.js +1 -1
  180. package/sensor/dist/resolution/workspace-packages.js.map +1 -1
  181. package/sensor/dist/search/identifier-segments.d.ts +1 -1
  182. package/sensor/dist/search/identifier-segments.js +1 -1
  183. package/sensor/dist/search/query-utils.d.ts +1 -0
  184. package/sensor/dist/search/query-utils.d.ts.map +1 -1
  185. package/sensor/dist/search/query-utils.js +10 -3
  186. package/sensor/dist/search/query-utils.js.map +1 -1
  187. package/sensor/dist/sync/git-hooks.d.ts +9 -9
  188. package/sensor/dist/sync/git-hooks.d.ts.map +1 -1
  189. package/sensor/dist/sync/git-hooks.js +15 -15
  190. package/sensor/dist/sync/git-hooks.js.map +1 -1
  191. package/sensor/dist/sync/watch-policy.d.ts +2 -2
  192. package/sensor/dist/sync/watch-policy.js +5 -5
  193. package/sensor/dist/sync/watch-policy.js.map +1 -1
  194. package/sensor/dist/sync/watcher.d.ts +2 -2
  195. package/sensor/dist/sync/watcher.d.ts.map +1 -1
  196. package/sensor/dist/sync/watcher.js +16 -16
  197. package/sensor/dist/sync/watcher.js.map +1 -1
  198. package/sensor/dist/sync/worktree.d.ts +5 -5
  199. package/sensor/dist/sync/worktree.d.ts.map +1 -1
  200. package/sensor/dist/sync/worktree.js +9 -9
  201. package/sensor/dist/sync/worktree.js.map +1 -1
  202. package/sensor/dist/telemetry/index.d.ts +8 -8
  203. package/sensor/dist/telemetry/index.d.ts.map +1 -1
  204. package/sensor/dist/telemetry/index.js +16 -16
  205. package/sensor/dist/telemetry/index.js.map +1 -1
  206. package/sensor/dist/types.d.ts +2 -2
  207. package/sensor/dist/types.js +1 -1
  208. package/sensor/dist/ui/color.d.ts +2 -2
  209. package/sensor/dist/ui/color.js +2 -2
  210. package/sensor/dist/ui/glyphs.d.ts +3 -3
  211. package/sensor/dist/ui/glyphs.js +7 -7
  212. package/sensor/dist/ui/glyphs.js.map +1 -1
  213. package/sensor/dist/utils.d.ts +4 -4
  214. package/sensor/dist/utils.js +8 -8
  215. package/sensor/dist/utils.js.map +1 -1
  216. package/sensor/package.json +8 -13
  217. package/src/artifact-contracts.mjs +2 -2
  218. package/src/boundary-compiler.mjs +28 -28
  219. package/src/boundary-observation-compiler-v2.mjs +10 -10
  220. package/src/bounded-seam.mjs +144 -0
  221. package/src/bridge-cli.mjs +227 -0
  222. package/src/bridge-config.mjs +346 -0
  223. package/src/bridge-daemon.mjs +328 -0
  224. package/src/bridge-launch-agent.mjs +311 -0
  225. package/src/bridge-server.mjs +309 -0
  226. package/src/cli-help.mjs +163 -0
  227. package/src/control-compiler.mjs +30 -30
  228. package/src/dag-chain.mjs +261 -0
  229. package/src/factory-diagnostics.mjs +8 -7
  230. package/src/hash-chain.mjs +76 -0
  231. package/src/node-version-guard.mjs +5 -4
  232. package/src/project-cli.mjs +392 -0
  233. package/src/project-identity.mjs +71 -0
  234. package/src/rc1-evidence-bundle.mjs +16 -16
  235. package/src/rc1-v4-campaign.mjs +15 -14
  236. package/src/rc1-v5-artifact-set.mjs +2 -2
  237. package/src/rc1-v5-campaign.mjs +15 -14
  238. package/src/rc1-v6-artifact-set.mjs +18 -18
  239. package/src/rc1-v6-campaign.mjs +16 -16
  240. package/src/rc1-v6-causal-binding.mjs +16 -14
  241. package/src/rc1-v6-measurement.mjs +20 -38
  242. package/src/rc2-artifact-set.mjs +45 -40
  243. package/src/rc2-campaign.mjs +48 -66
  244. package/src/rc2-delivery-policy-front-end.mjs +30 -30
  245. package/src/rc2-rc1-transfer-front-end.mjs +5 -5
  246. package/src/rc3-actual-dogfood.mjs +6 -6
  247. package/src/rc3-dogfood-scaffold.mjs +12 -7
  248. package/src/rc3-scripted-campaign.mjs +75 -21
  249. package/src/rc4-stage1-dogfood.mjs +24 -7
  250. package/src/runtime-cli.mjs +2424 -45
  251. package/src/runtime-contracts.mjs +7 -7
  252. package/src/runtime-control-store.mjs +547 -0
  253. package/src/runtime-controller-protocol.mjs +517 -0
  254. package/src/runtime-direct-os-observer.mjs +284 -0
  255. package/src/runtime-engine.mjs +2 -2
  256. package/src/runtime-errors.mjs +1 -1
  257. package/src/runtime-event-store.mjs +15 -43
  258. package/src/runtime-front-end.mjs +26 -26
  259. package/src/runtime-gate-store.mjs +477 -0
  260. package/src/runtime-hold-recompile.mjs +214 -23
  261. package/src/runtime-lifecycle-lock.mjs +290 -0
  262. package/src/runtime-managed-supervisor.mjs +1276 -0
  263. package/src/runtime-multi-epoch-store.mjs +761 -0
  264. package/src/runtime-projection.mjs +62 -0
  265. package/src/seam-transform.mjs +38 -38
  266. package/src/{codegraph-adapter.mjs → sensor-adapter.mjs} +7 -7
  267. package/src/sensor-cli.mjs +107 -0
  268. package/src/sensor-runtime.mjs +48 -0
  269. package/src/timestamp-contract.mjs +8 -0
  270. package/src/todo-chain.mjs +178 -0
  271. package/src/todo-cli.mjs +1032 -0
  272. package/src/todo-contracts.mjs +501 -0
  273. package/src/todo-dashboard-registry.mjs +318 -0
  274. package/src/todo-gantt-html.mjs +416 -0
  275. package/src/todo-gantt-layout.mjs +603 -0
  276. package/src/todo-gantt-live.mjs +269 -0
  277. package/src/todo-gantt-presentation.mjs +217 -0
  278. package/src/todo-gantt-svg.mjs +249 -0
  279. package/src/todo-markdown-renderer.mjs +260 -0
  280. package/src/todo-migration.mjs +260 -0
  281. package/src/todo-narrative-anchor.mjs +130 -0
  282. package/src/todo-revision.mjs +425 -0
  283. package/src/todo-status.mjs +340 -0
  284. package/src/todo-store.mjs +3451 -0
  285. package/src/treatment-compiler.mjs +28 -28
  286. package/src/treatment-runner.mjs +42 -44
  287. package/sensor/dist/bin/codegraph.d.ts +0 -26
  288. package/sensor/dist/bin/codegraph.d.ts.map +0 -1
  289. package/sensor/dist/bin/codegraph.js.map +0 -1
  290. package/sensor/dist/bin/uninstall.d.ts +0 -14
  291. package/sensor/dist/bin/uninstall.d.ts.map +0 -1
  292. package/sensor/dist/bin/uninstall.js +0 -36
  293. package/sensor/dist/bin/uninstall.js.map +0 -1
  294. package/sensor/dist/installer/beta-signup.d.ts +0 -54
  295. package/sensor/dist/installer/beta-signup.d.ts.map +0 -1
  296. package/sensor/dist/installer/beta-signup.js +0 -178
  297. package/sensor/dist/installer/beta-signup.js.map +0 -1
  298. package/sensor/dist/installer/config-writer.d.ts +0 -28
  299. package/sensor/dist/installer/config-writer.d.ts.map +0 -1
  300. package/sensor/dist/installer/config-writer.js +0 -91
  301. package/sensor/dist/installer/config-writer.js.map +0 -1
  302. package/sensor/dist/installer/index.d.ts +0 -142
  303. package/sensor/dist/installer/index.d.ts.map +0 -1
  304. package/sensor/dist/installer/index.js +0 -622
  305. package/sensor/dist/installer/index.js.map +0 -1
  306. package/sensor/dist/installer/instructions-template.d.ts +0 -41
  307. package/sensor/dist/installer/instructions-template.d.ts.map +0 -1
  308. package/sensor/dist/installer/instructions-template.js +0 -53
  309. package/sensor/dist/installer/instructions-template.js.map +0 -1
  310. package/sensor/dist/installer/targets/antigravity.d.ts +0 -57
  311. package/sensor/dist/installer/targets/antigravity.d.ts.map +0 -1
  312. package/sensor/dist/installer/targets/antigravity.js +0 -308
  313. package/sensor/dist/installer/targets/antigravity.js.map +0 -1
  314. package/sensor/dist/installer/targets/claude.d.ts +0 -62
  315. package/sensor/dist/installer/targets/claude.d.ts.map +0 -1
  316. package/sensor/dist/installer/targets/claude.js +0 -454
  317. package/sensor/dist/installer/targets/claude.js.map +0 -1
  318. package/sensor/dist/installer/targets/codex.d.ts +0 -18
  319. package/sensor/dist/installer/targets/codex.d.ts.map +0 -1
  320. package/sensor/dist/installer/targets/codex.js +0 -185
  321. package/sensor/dist/installer/targets/codex.js.map +0 -1
  322. package/sensor/dist/installer/targets/cursor.d.ts +0 -35
  323. package/sensor/dist/installer/targets/cursor.d.ts.map +0 -1
  324. package/sensor/dist/installer/targets/cursor.js +0 -254
  325. package/sensor/dist/installer/targets/cursor.js.map +0 -1
  326. package/sensor/dist/installer/targets/gemini.d.ts +0 -26
  327. package/sensor/dist/installer/targets/gemini.d.ts.map +0 -1
  328. package/sensor/dist/installer/targets/gemini.js +0 -165
  329. package/sensor/dist/installer/targets/gemini.js.map +0 -1
  330. package/sensor/dist/installer/targets/hermes.d.ts +0 -18
  331. package/sensor/dist/installer/targets/hermes.d.ts.map +0 -1
  332. package/sensor/dist/installer/targets/hermes.js +0 -359
  333. package/sensor/dist/installer/targets/hermes.js.map +0 -1
  334. package/sensor/dist/installer/targets/kiro.d.ts +0 -27
  335. package/sensor/dist/installer/targets/kiro.d.ts.map +0 -1
  336. package/sensor/dist/installer/targets/kiro.js +0 -178
  337. package/sensor/dist/installer/targets/kiro.js.map +0 -1
  338. package/sensor/dist/installer/targets/opencode.d.ts +0 -38
  339. package/sensor/dist/installer/targets/opencode.d.ts.map +0 -1
  340. package/sensor/dist/installer/targets/opencode.js +0 -288
  341. package/sensor/dist/installer/targets/opencode.js.map +0 -1
  342. package/sensor/dist/installer/targets/registry.d.ts +0 -35
  343. package/sensor/dist/installer/targets/registry.d.ts.map +0 -1
  344. package/sensor/dist/installer/targets/registry.js +0 -91
  345. package/sensor/dist/installer/targets/registry.js.map +0 -1
  346. package/sensor/dist/installer/targets/shared.d.ts +0 -101
  347. package/sensor/dist/installer/targets/shared.d.ts.map +0 -1
  348. package/sensor/dist/installer/targets/shared.js +0 -264
  349. package/sensor/dist/installer/targets/shared.js.map +0 -1
  350. package/sensor/dist/installer/targets/toml.d.ts +0 -52
  351. package/sensor/dist/installer/targets/toml.d.ts.map +0 -1
  352. package/sensor/dist/installer/targets/toml.js +0 -147
  353. package/sensor/dist/installer/targets/toml.js.map +0 -1
  354. package/sensor/dist/installer/targets/types.d.ts +0 -108
  355. package/sensor/dist/installer/targets/types.d.ts.map +0 -1
  356. package/sensor/dist/installer/targets/types.js +0 -16
  357. package/sensor/dist/installer/targets/types.js.map +0 -1
  358. package/sensor/dist/upgrade/index.d.ts +0 -171
  359. package/sensor/dist/upgrade/index.d.ts.map +0 -1
  360. package/sensor/dist/upgrade/index.js +0 -659
  361. package/sensor/dist/upgrade/index.js.map +0 -1
  362. package/sensor/dist/upgrade/remove-binary.d.ts +0 -87
  363. package/sensor/dist/upgrade/remove-binary.d.ts.map +0 -1
  364. package/sensor/dist/upgrade/remove-binary.js +0 -289
  365. package/sensor/dist/upgrade/remove-binary.js.map +0 -1
  366. package/sensor/dist/upgrade/update-check.d.ts +0 -92
  367. package/sensor/dist/upgrade/update-check.d.ts.map +0 -1
  368. package/sensor/dist/upgrade/update-check.js +0 -258
  369. package/sensor/dist/upgrade/update-check.js.map +0 -1
  370. package/src/bootstrap.mjs +0 -88
@@ -4,14 +4,14 @@ import {
4
4
  canonicalizeArtifact,
5
5
  digestArtifact,
6
6
  } from './artifact-contracts.mjs';
7
- import { portableCodegraphOutcome } from './codegraph-adapter.mjs';
7
+ import { portableSensorOutcome } from './sensor-adapter.mjs';
8
8
 
9
9
  const IDENTIFIER = /^[0-9A-Za-z](?:[0-9A-Za-z._-]{0,127})$/;
10
10
  const SHA256 = /^[0-9a-f]{64}$/;
11
11
  const CONDITIONS = new Set(['control', 'treatment']);
12
12
  const OPERATIONS = new Set(['status', 'query', 'callers', 'callees', 'impact', 'affected']);
13
- const PROJECTION = 'lattice.codegraph_portable_outcome.v1';
14
- const SANITIZER = 'lattice.codegraph_diagnostic_sanitizer.v1';
13
+ const PROJECTION = 'lattice.sensor_portable_outcome.v1';
14
+ const SANITIZER = 'lattice.sensor_diagnostic_sanitizer.v1';
15
15
  const STATUS_REMOVALS = Object.freeze([
16
16
  'projectPath',
17
17
  'indexPath',
@@ -69,7 +69,7 @@ function sameArtifact(left, right) {
69
69
 
70
70
  function validateQuerySet(querySet) {
71
71
  if (!exactRecord(querySet, ['schema', 'queries'])
72
- || querySet.schema !== 'lattice.codegraph_query_set.v2'
72
+ || querySet.schema !== 'lattice.sensor_query_set.v2'
73
73
  || !Array.isArray(querySet.queries)
74
74
  || querySet.queries.length === 0
75
75
  || querySet.queries.length > 256) {
@@ -194,8 +194,8 @@ function rawReceipt(rawEvidence) {
194
194
  const canonical = canonicalizeArtifact(rawEvidence);
195
195
  const bytes = Buffer.from(canonical, 'utf8');
196
196
  return {
197
- schema: 'lattice.codegraph_raw_opaque_receipt.v1',
198
- media_type: 'application/vnd.lattice.codegraph-evidence+json',
197
+ schema: 'lattice.sensor_raw_opaque_receipt.v1',
198
+ media_type: 'application/vnd.lattice.sensor-evidence+json',
199
199
  encoding: 'canonical-json-base64',
200
200
  payload_base64: bytes.toString('base64'),
201
201
  payload_digest: sha256(bytes),
@@ -207,13 +207,13 @@ function diagnosticArtifact(rawEvidence, sourceRawDigest) {
207
207
  const { payload, operations } = sanitizeDiagnostic(rawEvidence);
208
208
  if (containsAbsolutePath(payload)) fail('sanitized diagnosticに絶対pathが残る');
209
209
  const manifest = {
210
- schema: 'lattice.codegraph_sanitization_manifest.v1',
210
+ schema: 'lattice.sensor_sanitization_manifest.v1',
211
211
  sanitizer: SANITIZER,
212
212
  rules_digest: digestArtifact(SANITIZATION_RULES),
213
213
  operations,
214
214
  };
215
215
  return {
216
- schema: 'lattice.codegraph_sanitized_diagnostic.v1',
216
+ schema: 'lattice.sensor_sanitized_diagnostic.v1',
217
217
  source_raw_digest: sourceRawDigest,
218
218
  sanitization_manifest: manifest,
219
219
  sanitization_manifest_digest: digestArtifact(manifest),
@@ -224,7 +224,7 @@ function diagnosticArtifact(rawEvidence, sourceRawDigest) {
224
224
 
225
225
  function buildPortable(querySet, rawEvidence) {
226
226
  const querySetDigest = digestArtifact(querySet);
227
- const outcomes = rawEvidence.outcomes.map((outcome) => portableCodegraphOutcome(outcome));
227
+ const outcomes = rawEvidence.outcomes.map((outcome) => portableSensorOutcome(outcome));
228
228
  if (containsAbsolutePath(outcomes)) fail('portable outcomeに絶対pathが残る');
229
229
  const perQuery = outcomes.map((outcome, index) => ({
230
230
  id: querySet.queries[index].id,
@@ -233,7 +233,7 @@ function buildPortable(querySet, rawEvidence) {
233
233
  result_digest: digestArtifact(outcome),
234
234
  }));
235
235
  const portable = {
236
- schema: 'lattice.codegraph_portable_preimage.v1',
236
+ schema: 'lattice.sensor_portable_preimage.v1',
237
237
  projection: PROJECTION,
238
238
  query_set_digest: querySetDigest,
239
239
  outcomes,
@@ -247,7 +247,7 @@ function buildPortable(querySet, rawEvidence) {
247
247
  /** full portable payloadだけからaggregate digestを再計算する。 */
248
248
  export function recomputePortableAggregate(portable) {
249
249
  if (!isPlainObject(portable)
250
- || portable.schema !== 'lattice.codegraph_portable_preimage.v1'
250
+ || portable.schema !== 'lattice.sensor_portable_preimage.v1'
251
251
  || portable.projection !== PROJECTION
252
252
  || typeof portable.query_set_digest !== 'string'
253
253
  || !SHA256.test(portable.query_set_digest)
@@ -270,8 +270,8 @@ function decodeRawReceipt(receipt) {
270
270
  'payload_digest',
271
271
  'canonical_bytes',
272
272
  ])
273
- || receipt.schema !== 'lattice.codegraph_raw_opaque_receipt.v1'
274
- || receipt.media_type !== 'application/vnd.lattice.codegraph-evidence+json'
273
+ || receipt.schema !== 'lattice.sensor_raw_opaque_receipt.v1'
274
+ || receipt.media_type !== 'application/vnd.lattice.sensor-evidence+json'
275
275
  || receipt.encoding !== 'canonical-json-base64'
276
276
  || typeof receipt.payload_base64 !== 'string'
277
277
  || typeof receipt.payload_digest !== 'string'
@@ -302,7 +302,7 @@ function validatePortable(portable, querySet, rawEvidence) {
302
302
  'per_query',
303
303
  'aggregate_digest',
304
304
  ])
305
- || portable.schema !== 'lattice.codegraph_portable_preimage.v1'
305
+ || portable.schema !== 'lattice.sensor_portable_preimage.v1'
306
306
  || portable.projection !== PROJECTION
307
307
  || portable.query_set_digest !== digestArtifact(querySet)
308
308
  || !Array.isArray(portable.outcomes)
@@ -337,7 +337,7 @@ function validateDiagnostic(diagnostic, rawEvidence, rawDigest) {
337
337
  'payload',
338
338
  'payload_digest',
339
339
  ])
340
- || diagnostic.schema !== 'lattice.codegraph_sanitized_diagnostic.v1'
340
+ || diagnostic.schema !== 'lattice.sensor_sanitized_diagnostic.v1'
341
341
  || diagnostic.source_raw_digest !== rawDigest
342
342
  || diagnostic.sanitization_manifest_digest
343
343
  !== digestArtifact(diagnostic.sanitization_manifest)
@@ -349,7 +349,7 @@ function validateDiagnostic(diagnostic, rawEvidence, rawDigest) {
349
349
  }
350
350
 
351
351
  /**
352
- * 1 fresh Codegraph runをraw/diagnostic/portableの独立componentへcompileする。
352
+ * 1 fresh LatticeSensor runをraw/diagnostic/portableの独立componentへcompileする。
353
353
  */
354
354
  export function createRc1EvidenceBundle({
355
355
  condition,
@@ -20,7 +20,8 @@ import {
20
20
  compileBoundaryCondition,
21
21
  RC1_BOUNDARY_COMPILER_CONTRACT,
22
22
  } from './boundary-compiler.mjs';
23
- import { collectCodegraphEvidence } from './codegraph-adapter.mjs';
23
+ import { collectSensorEvidence } from './sensor-adapter.mjs';
24
+ import { invokeSensorCli } from './sensor-runtime.mjs';
24
25
  import { runIsolatedTransform } from './isolation-runner.mjs';
25
26
  import { evaluateRc1Hypothesis } from './rc1-comparison.mjs';
26
27
  import {
@@ -145,21 +146,21 @@ async function applyAcceptedPatch(worktreePath, patch) {
145
146
  await run('git', ['apply', '--binary', '-'], { cwd: worktreePath, input: patch });
146
147
  }
147
148
 
148
- async function captureCodegraphBootstrap(worktreePath) {
149
+ async function captureLatticeSensorBootstrap(worktreePath) {
149
150
  try {
150
- return await readFile(path.join(worktreePath, '.codegraph', '.gitignore'));
151
+ return await readFile(path.join(worktreePath, '.lattice/sensor', '.gitignore'));
151
152
  } catch (error) {
152
153
  if (error?.code === 'ENOENT') return null;
153
154
  throw error;
154
155
  }
155
156
  }
156
157
 
157
- async function restoreCodegraphBootstrap(worktreePath, bootstrap) {
158
- const codegraphPath = path.join(worktreePath, '.codegraph');
159
- await rm(codegraphPath, { recursive: true, force: true });
158
+ async function restoreLatticeSensorBootstrap(worktreePath, bootstrap) {
159
+ const sensorPath = path.join(worktreePath, '.lattice/sensor');
160
+ await rm(sensorPath, { recursive: true, force: true });
160
161
  if (bootstrap === null) return;
161
- await mkdir(codegraphPath, { recursive: true });
162
- await writeFile(path.join(codegraphPath, '.gitignore'), bootstrap);
162
+ await mkdir(sensorPath, { recursive: true });
163
+ await writeFile(path.join(sensorPath, '.gitignore'), bootstrap);
163
164
  }
164
165
 
165
166
  async function observeFreshIndex({
@@ -181,16 +182,16 @@ async function observeFreshIndex({
181
182
  transform: async ({ worktreePath }) => {
182
183
  if (condition === 'treatment') await applyAcceptedPatch(worktreePath, patch);
183
184
  snapshot = await fixedSnapshot(worktreePath);
184
- const codegraphBootstrap = await captureCodegraphBootstrap(worktreePath);
185
+ const sensorBootstrap = await captureLatticeSensorBootstrap(worktreePath);
185
186
  try {
186
187
  const indexStartedAt = performance.now();
187
- await run('codegraph', ['init', '.'], { cwd: worktreePath });
188
+ await invokeSensorCli(run, ['init', '.'], { cwd: worktreePath });
188
189
  indexElapsedMs = roundedMilliseconds(indexStartedAt);
189
190
  const queryStartedAt = performance.now();
190
- rawEvidence = await collectCodegraphEvidence({ cwd: worktreePath, querySet });
191
+ rawEvidence = await collectSensorEvidence({ cwd: worktreePath, querySet });
191
192
  queryElapsedMs = roundedMilliseconds(queryStartedAt);
192
193
  } finally {
193
- await restoreCodegraphBootstrap(worktreePath, codegraphBootstrap);
194
+ await restoreLatticeSensorBootstrap(worktreePath, sensorBootstrap);
194
195
  }
195
196
  },
196
197
  verifyCommands: [],
@@ -223,7 +224,7 @@ function compileOne({ inputs, observation, manualEvidence, planVersion }) {
223
224
  candidateSpec: inputs.candidateSpec,
224
225
  manualEvidence,
225
226
  querySet: inputs.querySet,
226
- codegraphEvidence: observation.rawEvidence,
227
+ sensorEvidence: observation.rawEvidence,
227
228
  codeSnapshotDigest: observation.codeSnapshotDigest,
228
229
  planVersion,
229
230
  });
@@ -310,7 +311,7 @@ function evidenceSummary(bundles, querySet) {
310
311
  validateRc1EvidenceBundle(bundle)
311
312
  && bundle.diagnostic.payload.cwd === '<repo-root>'
312
313
  && bundle.diagnostic.sanitization_manifest.schema
313
- === 'lattice.codegraph_sanitization_manifest.v1'
314
+ === 'lattice.sensor_sanitization_manifest.v1'
314
315
  )),
315
316
  };
316
317
  }
@@ -313,7 +313,7 @@ function compilerReplayValid(context) {
313
313
  ? inputs.normalManualEvidence
314
314
  : inputs.negativeManualEvidence,
315
315
  querySet: inputs.querySet,
316
- codegraphEvidence: rawEvidence,
316
+ sensorEvidence: rawEvidence,
317
317
  codeSnapshotDigest: run.code_snapshot_digest,
318
318
  planVersion: `rc1-v5-${condition}${variant === 'negative' ? '-negative' : ''}`,
319
319
  });
@@ -521,7 +521,7 @@ function evidenceSummary(bundles, querySet) {
521
521
  validateRc1EvidenceBundle(bundle)
522
522
  && bundle.diagnostic.payload.cwd === '<repo-root>'
523
523
  && bundle.diagnostic.sanitization_manifest.schema
524
- === 'lattice.codegraph_sanitization_manifest.v1'
524
+ === 'lattice.sensor_sanitization_manifest.v1'
525
525
  )),
526
526
  };
527
527
  }
@@ -20,7 +20,8 @@ import {
20
20
  compileBoundaryCondition,
21
21
  RC1_BOUNDARY_COMPILER_CONTRACT,
22
22
  } from './boundary-compiler.mjs';
23
- import { collectCodegraphEvidence } from './codegraph-adapter.mjs';
23
+ import { collectSensorEvidence } from './sensor-adapter.mjs';
24
+ import { invokeSensorCli } from './sensor-runtime.mjs';
24
25
  import { runIsolatedTransform } from './isolation-runner.mjs';
25
26
  import {
26
27
  createRc1EvidenceBundle,
@@ -150,21 +151,21 @@ async function applyAcceptedPatch(worktreePath, patch) {
150
151
  await run('git', ['apply', '--binary', '-'], { cwd: worktreePath, input: patch });
151
152
  }
152
153
 
153
- async function captureCodegraphBootstrap(worktreePath) {
154
+ async function captureLatticeSensorBootstrap(worktreePath) {
154
155
  try {
155
- return await readFile(path.join(worktreePath, '.codegraph', '.gitignore'));
156
+ return await readFile(path.join(worktreePath, '.lattice/sensor', '.gitignore'));
156
157
  } catch (error) {
157
158
  if (error?.code === 'ENOENT') return null;
158
159
  throw error;
159
160
  }
160
161
  }
161
162
 
162
- async function restoreCodegraphBootstrap(worktreePath, bootstrap) {
163
- const codegraphPath = path.join(worktreePath, '.codegraph');
164
- await rm(codegraphPath, { recursive: true, force: true });
163
+ async function restoreLatticeSensorBootstrap(worktreePath, bootstrap) {
164
+ const sensorPath = path.join(worktreePath, '.lattice/sensor');
165
+ await rm(sensorPath, { recursive: true, force: true });
165
166
  if (bootstrap === null) return;
166
- await mkdir(codegraphPath, { recursive: true });
167
- await writeFile(path.join(codegraphPath, '.gitignore'), bootstrap);
167
+ await mkdir(sensorPath, { recursive: true });
168
+ await writeFile(path.join(sensorPath, '.gitignore'), bootstrap);
168
169
  }
169
170
 
170
171
  async function observeFreshIndex({
@@ -186,16 +187,16 @@ async function observeFreshIndex({
186
187
  transform: async ({ worktreePath }) => {
187
188
  if (condition === 'treatment') await applyAcceptedPatch(worktreePath, patch);
188
189
  snapshot = await fixedSnapshot(worktreePath);
189
- const codegraphBootstrap = await captureCodegraphBootstrap(worktreePath);
190
+ const sensorBootstrap = await captureLatticeSensorBootstrap(worktreePath);
190
191
  try {
191
192
  const indexStartedAt = performance.now();
192
- await run('codegraph', ['init', '.'], { cwd: worktreePath });
193
+ await invokeSensorCli(run, ['init', '.'], { cwd: worktreePath });
193
194
  indexElapsedMs = roundedMilliseconds(indexStartedAt);
194
195
  const queryStartedAt = performance.now();
195
- rawEvidence = await collectCodegraphEvidence({ cwd: worktreePath, querySet });
196
+ rawEvidence = await collectSensorEvidence({ cwd: worktreePath, querySet });
196
197
  queryElapsedMs = roundedMilliseconds(queryStartedAt);
197
198
  } finally {
198
- await restoreCodegraphBootstrap(worktreePath, codegraphBootstrap);
199
+ await restoreLatticeSensorBootstrap(worktreePath, sensorBootstrap);
199
200
  }
200
201
  },
201
202
  verifyCommands: [],
@@ -228,7 +229,7 @@ function compileOne({ inputs, observation, manualEvidence, planVersion }) {
228
229
  candidateSpec: inputs.candidateSpec,
229
230
  manualEvidence,
230
231
  querySet: inputs.querySet,
231
- codegraphEvidence: observation.rawEvidence,
232
+ sensorEvidence: observation.rawEvidence,
232
233
  codeSnapshotDigest: observation.codeSnapshotDigest,
233
234
  planVersion,
234
235
  });
@@ -314,7 +315,7 @@ function evidenceSummary(bundles, querySet) {
314
315
  validateRc1EvidenceBundle(bundle)
315
316
  && bundle.diagnostic.payload.cwd === '<repo-root>'
316
317
  && bundle.diagnostic.sanitization_manifest.schema
317
- === 'lattice.codegraph_sanitization_manifest.v1'
318
+ === 'lattice.sensor_sanitization_manifest.v1'
318
319
  )),
319
320
  };
320
321
  }
@@ -35,13 +35,13 @@ const INPUT_PATHS = Object.freeze({
35
35
  querySet: 'inputs/query-set-v2.json',
36
36
  oracle: 'inputs/behavior-oracle-v2.json',
37
37
  runtimeIdentity: 'inputs/oracle-runtime-identity.json',
38
- codegraphIdentity: 'inputs/codegraph-identity.json',
38
+ sensorIdentity: 'inputs/lattice-sensor-identity.json',
39
39
  });
40
40
  const RUN_IDS = Object.freeze(['control-1', 'control-2', 'treatment-1', 'treatment-2']);
41
41
  const IDENTITY_PATHS = Object.freeze({
42
42
  compiler: 'identity/boundary-compiler.mjs',
43
43
  oracleExecutor: 'identity/black-box-oracle.mjs',
44
- codegraphExecutable: 'identity/codegraph-executable',
44
+ sensorExecutable: 'identity/lattice-sensor-executable',
45
45
  });
46
46
  const INVALIDATED_CONTEXTS = Object.freeze([
47
47
  {
@@ -123,7 +123,7 @@ function compilationSummary(compiled) {
123
123
  };
124
124
  }
125
125
 
126
- function fixedInputIdentity(inputs, runtimeIdentity, codegraphIdentity) {
126
+ function fixedInputIdentity(inputs, runtimeIdentity, sensorIdentity) {
127
127
  return {
128
128
  plan_input: digestArtifact(inputs.planInput),
129
129
  candidate_spec: digestArtifact(inputs.candidateSpec),
@@ -132,7 +132,7 @@ function fixedInputIdentity(inputs, runtimeIdentity, codegraphIdentity) {
132
132
  query_set: digestArtifact(inputs.querySet),
133
133
  behavior_oracle: digestArtifact(inputs.oracle),
134
134
  oracle_runtime: digestArtifact(runtimeIdentity),
135
- codegraph_identity: digestArtifact(codegraphIdentity),
135
+ sensor_identity: digestArtifact(sensorIdentity),
136
136
  capacity_writers: inputs.planInput.capacity.writers,
137
137
  };
138
138
  }
@@ -230,7 +230,7 @@ export function compileRc1V6Comparison({
230
230
  baseSha,
231
231
  inputs,
232
232
  runtimeIdentity,
233
- codegraphIdentity,
233
+ sensorIdentity,
234
234
  compilerSourceDigest,
235
235
  control,
236
236
  treatment,
@@ -244,7 +244,7 @@ export function compileRc1V6Comparison({
244
244
  return {
245
245
  schema: 'lattice.rc1.control_treatment_comparison.v4',
246
246
  base_sha: baseSha,
247
- fixed_inputs: fixedInputIdentity(inputs, runtimeIdentity, codegraphIdentity),
247
+ fixed_inputs: fixedInputIdentity(inputs, runtimeIdentity, sensorIdentity),
248
248
  independent_variable: {
249
249
  kind: 'accepted_production_and_test_seam',
250
250
  transform_artifact_digest: transform.artifact_digest,
@@ -256,7 +256,7 @@ export function compileRc1V6Comparison({
256
256
  source_digest: compilerSourceDigest,
257
257
  condition_selector: RC1_BOUNDARY_COMPILER_CONTRACT.condition_selector,
258
258
  },
259
- codegraph_identity: structuredClone(codegraphIdentity),
259
+ sensor_identity: structuredClone(sensorIdentity),
260
260
  oracle_runtime_identity: structuredClone(runtimeIdentity),
261
261
  conditions: {
262
262
  control: compiledConditionSummary(control, controlBundles),
@@ -283,8 +283,8 @@ export function evaluateRc1V6Hypothesis(comparison) {
283
283
  && SHA256.test(comparison?.compiler?.source_digest),
284
284
  },
285
285
  {
286
- id: 'codegraph_identity_fixed',
287
- passed: comparison?.codegraph_identity?.schema === 'lattice.rc1.codegraph_identity.v1',
286
+ id: 'sensor_identity_fixed',
287
+ passed: comparison?.sensor_identity?.schema === 'lattice.rc1.sensor_identity.v1',
288
288
  },
289
289
  {
290
290
  id: 'runtime_identity_fixed',
@@ -391,7 +391,7 @@ export function rc1V6ArtifactMediaType(relativePath) {
391
391
  throw new TypeError(`RC1 v6 artifact pathがexact setに存在しない: ${relativePath}`);
392
392
  }
393
393
  if (relativePath.endsWith('.json')) return 'application/json';
394
- if (relativePath.endsWith('.mjs') || relativePath === IDENTITY_PATHS.codegraphExecutable) {
394
+ if (relativePath.endsWith('.mjs') || relativePath === IDENTITY_PATHS.sensorExecutable) {
395
395
  return 'application/javascript';
396
396
  }
397
397
  if (relativePath.endsWith('.patch')) return 'text/x-diff';
@@ -568,7 +568,7 @@ function executionValid(value, expected) {
568
568
  'base_sha',
569
569
  'elapsed_ms',
570
570
  'compiler_source_digest',
571
- 'codegraph_identity_digest',
571
+ 'sensor_identity_digest',
572
572
  'runtime_identity_digest',
573
573
  'run_descriptor_digests',
574
574
  'transform_artifact_digest',
@@ -583,7 +583,7 @@ function executionValid(value, expected) {
583
583
  && Number.isFinite(value.elapsed_ms)
584
584
  && value.elapsed_ms >= 0
585
585
  && value.compiler_source_digest === expected.compilerSourceDigest
586
- && value.codegraph_identity_digest === digestArtifact(expected.codegraphIdentity)
586
+ && value.sensor_identity_digest === digestArtifact(expected.sensorIdentity)
587
587
  && value.runtime_identity_digest === digestArtifact(expected.runtimeIdentity)
588
588
  && sameArtifact(value.run_descriptor_digests, expected.runDescriptorDigests)
589
589
  && value.transform_artifact_digest === expected.transformArtifactDigest
@@ -619,8 +619,8 @@ export function verifyRc1V6CampaignArtifactSet(options) {
619
619
  const compilerSourceDigest = sha256(context.payloads.get(IDENTITY_PATHS.compiler));
620
620
  const identitySourceBinding = sha256(context.payloads.get(IDENTITY_PATHS.oracleExecutor))
621
621
  === inputs.runtimeIdentity?.executor_source_digest
622
- && sha256(context.payloads.get(IDENTITY_PATHS.codegraphExecutable))
623
- === inputs.codegraphIdentity?.executable_digest;
622
+ && sha256(context.payloads.get(IDENTITY_PATHS.sensorExecutable))
623
+ === inputs.sensorIdentity?.executable_digest;
624
624
  check('identity_source_binding', identitySourceBinding);
625
625
  const baseInputsValid = validatePlanInput(inputs.planInput)
626
626
  && validateRc1BlackBoxOracle(inputs.oracle)
@@ -656,14 +656,14 @@ export function verifyRc1V6CampaignArtifactSet(options) {
656
656
  base_sha: context.manifest.base_sha,
657
657
  patch_digest: null,
658
658
  snapshot: controlSnapshot,
659
- codegraph_identity: inputs.codegraphIdentity,
659
+ sensor_identity: inputs.sensorIdentity,
660
660
  query_set_digest: digestArtifact(inputs.querySet),
661
661
  },
662
662
  treatment: {
663
663
  base_sha: context.manifest.base_sha,
664
664
  patch_digest: behaviorEvidence.patch_digest,
665
665
  snapshot: treatmentSnapshot,
666
- codegraph_identity: inputs.codegraphIdentity,
666
+ sensor_identity: inputs.sensorIdentity,
667
667
  query_set_digest: digestArtifact(inputs.querySet),
668
668
  },
669
669
  };
@@ -740,7 +740,7 @@ export function verifyRc1V6CampaignArtifactSet(options) {
740
740
  baseSha: context.manifest.base_sha,
741
741
  inputs,
742
742
  runtimeIdentity: inputs.runtimeIdentity,
743
- codegraphIdentity: inputs.codegraphIdentity,
743
+ sensorIdentity: inputs.sensorIdentity,
744
744
  compilerSourceDigest,
745
745
  control: savedControl,
746
746
  treatment: savedTreatment,
@@ -765,7 +765,7 @@ export function verifyRc1V6CampaignArtifactSet(options) {
765
765
  check('execution_evidence', transform !== null && executionValid(execution, {
766
766
  baseSha: context.manifest.base_sha,
767
767
  compilerSourceDigest,
768
- codegraphIdentity: inputs.codegraphIdentity,
768
+ sensorIdentity: inputs.sensorIdentity,
769
769
  runtimeIdentity: inputs.runtimeIdentity,
770
770
  runDescriptorDigests: runs.map(({ evidence_bundle_descriptor_digest: digest }) => digest),
771
771
  transformArtifactDigest: transform.artifact_digest,
@@ -39,7 +39,7 @@ import { createRc1V6EvidenceBundleDescriptor } from './rc1-v6-causal-binding.mjs
39
39
  import { runRc1V5Campaign } from './rc1-v5-campaign.mjs';
40
40
  import {
41
41
  bindRc1V6EvidenceBundle,
42
- captureRc1V6CodegraphExecutable,
42
+ captureRc1V6LatticeSensorExecutable,
43
43
  compileRc1V6BoundaryCondition,
44
44
  createRc1V6ConditionRun,
45
45
  sourceSnapshotFromRc1BehaviorSurface,
@@ -294,24 +294,24 @@ export async function runRc1V6Campaign(options = {}) {
294
294
  .stdout.toString('utf8').trim();
295
295
  if (!GIT_SHA1.test(baseSha)) throw new TypeError('RC1 v6 campaign base SHA is invalid');
296
296
  const startedAt = performance.now();
297
- const [codegraphCapture, compilerSourceBytes, oracleExecutorBytes] = await Promise.all([
298
- captureRc1V6CodegraphExecutable(),
297
+ const [sensorCapture, compilerSourceBytes, oracleExecutorBytes] = await Promise.all([
298
+ captureRc1V6LatticeSensorExecutable(),
299
299
  readFile(new URL('./boundary-compiler.mjs', import.meta.url)),
300
300
  readFile(new URL('./rc1-black-box-oracle.mjs', import.meta.url)),
301
301
  ]);
302
- const codegraphIdentity = codegraphCapture.identity;
302
+ const sensorIdentity = sensorCapture.identity;
303
303
  const runtimeIdentity = await createRc1V6OracleRuntimeIdentity();
304
304
  if (runtimeIdentity.executor_source_digest !== sha256(oracleExecutorBytes)) {
305
305
  throw new TypeError('RC1 v6 oracle runtime identityが保存executor bytesと一致しない');
306
306
  }
307
307
  const v5 = await runRc1V5Campaign({ repoRoot, baseRef: baseSha, inputs: fixedInputs });
308
- const [finalCodegraphCapture, finalCompilerSourceBytes, finalOracleExecutorBytes] =
308
+ const [finalLatticeSensorCapture, finalCompilerSourceBytes, finalOracleExecutorBytes] =
309
309
  await Promise.all([
310
- captureRc1V6CodegraphExecutable(),
310
+ captureRc1V6LatticeSensorExecutable(),
311
311
  readFile(new URL('./boundary-compiler.mjs', import.meta.url)),
312
312
  readFile(new URL('./rc1-black-box-oracle.mjs', import.meta.url)),
313
313
  ]);
314
- if (!isDeepStrictEqual(codegraphCapture, finalCodegraphCapture)
314
+ if (!isDeepStrictEqual(sensorCapture, finalLatticeSensorCapture)
315
315
  || !compilerSourceBytes.equals(finalCompilerSourceBytes)
316
316
  || !oracleExecutorBytes.equals(finalOracleExecutorBytes)) {
317
317
  throw new TypeError('RC1 v6実行主体のidentityがcampaign中にdriftした');
@@ -343,7 +343,7 @@ export async function runRc1V6Campaign(options = {}) {
343
343
  base_sha: baseSha,
344
344
  patch_digest: bundle.condition === 'treatment' ? v5.transform.artifact.patch.digest : null,
345
345
  snapshot: bundle.condition === 'treatment' ? treatmentSnapshot : controlSnapshot,
346
- codegraph_identity: codegraphIdentity,
346
+ sensor_identity: sensorIdentity,
347
347
  query_set_digest: digestArtifact(fixedInputs.querySet),
348
348
  }));
349
349
  const runs = evidenceBundles.map(createRc1V6ConditionRun);
@@ -355,14 +355,14 @@ export async function runRc1V6Campaign(options = {}) {
355
355
  base_sha: baseSha,
356
356
  patch_digest: null,
357
357
  snapshot: controlSnapshot,
358
- codegraph_identity: codegraphIdentity,
358
+ sensor_identity: sensorIdentity,
359
359
  query_set_digest: digestArtifact(fixedInputs.querySet),
360
360
  };
361
361
  const treatmentExpected = {
362
362
  base_sha: baseSha,
363
363
  patch_digest: v5.transform.artifact.patch.digest,
364
364
  snapshot: treatmentSnapshot,
365
- codegraph_identity: codegraphIdentity,
365
+ sensor_identity: sensorIdentity,
366
366
  query_set_digest: digestArtifact(fixedInputs.querySet),
367
367
  };
368
368
  const control = compileCondition({
@@ -419,7 +419,7 @@ export async function runRc1V6Campaign(options = {}) {
419
419
  baseSha,
420
420
  inputs: fixedInputs,
421
421
  runtimeIdentity,
422
- codegraphIdentity,
422
+ sensorIdentity,
423
423
  compilerSourceDigest,
424
424
  control,
425
425
  treatment,
@@ -443,7 +443,7 @@ export async function runRc1V6Campaign(options = {}) {
443
443
  base_sha: baseSha,
444
444
  elapsed_ms: roundedMilliseconds(startedAt),
445
445
  compiler_source_digest: compilerSourceDigest,
446
- codegraph_identity_digest: digestArtifact(codegraphIdentity),
446
+ sensor_identity_digest: digestArtifact(sensorIdentity),
447
447
  runtime_identity_digest: digestArtifact(runtimeIdentity),
448
448
  run_descriptor_digests: runs.map(({ evidence_bundle_descriptor_digest: digest }) => digest),
449
449
  transform_artifact_digest: transform.artifact_digest,
@@ -458,11 +458,11 @@ export async function runRc1V6Campaign(options = {}) {
458
458
  base_sha: baseSha,
459
459
  inputs: fixedInputs,
460
460
  runtime_identity: runtimeIdentity,
461
- codegraph_identity: codegraphIdentity,
461
+ sensor_identity: sensorIdentity,
462
462
  identity_sources: {
463
463
  compiler: compilerSourceBytes,
464
464
  oracle_executor: oracleExecutorBytes,
465
- codegraph_executable: codegraphCapture.executable_bytes,
465
+ sensor_executable: sensorCapture.executable_bytes,
466
466
  },
467
467
  evidence_bundles: evidenceBundles,
468
468
  runs,
@@ -490,10 +490,10 @@ function artifactFiles(result, rejectedPlanBytes, phaseDecisionBytes) {
490
490
  files.set(relativePath, jsonBytes(result.inputs[key]));
491
491
  }
492
492
  files.set('inputs/oracle-runtime-identity.json', jsonBytes(result.runtime_identity));
493
- files.set('inputs/codegraph-identity.json', jsonBytes(result.codegraph_identity));
493
+ files.set('inputs/lattice-sensor-identity.json', jsonBytes(result.sensor_identity));
494
494
  files.set('identity/boundary-compiler.mjs', Buffer.from(result.identity_sources.compiler));
495
495
  files.set('identity/black-box-oracle.mjs', Buffer.from(result.identity_sources.oracle_executor));
496
- files.set('identity/codegraph-executable', Buffer.from(result.identity_sources.codegraph_executable));
496
+ files.set('identity/lattice-sensor-executable', Buffer.from(result.identity_sources.sensor_executable));
497
497
  for (const bundle of result.evidence_bundles) {
498
498
  files.set(`evidence/${bundle.run_id}.json`, jsonBytes(bundle));
499
499
  }
@@ -262,17 +262,19 @@ function validSourceSnapshot(value) {
262
262
  return value.files.every(({ path }, index) => index === 0 || value.files[index - 1].path < path);
263
263
  }
264
264
 
265
- function validCodegraphIdentity(value) {
265
+ function validLatticeSensorIdentity(value) {
266
266
  return exactRecord(value, [
267
267
  'schema',
268
268
  'version',
269
269
  'executable_ref',
270
270
  'executable_digest',
271
271
  ])
272
- && value.schema === 'lattice.rc1.codegraph_identity.v1'
272
+ && value.schema === 'lattice.rc1.sensor_identity.v1'
273
273
  && typeof value.version === 'string'
274
274
  && /^\d+\.\d+\.\d+(?:[-+][A-Za-z0-9.-]+)?$/.test(value.version)
275
- && value.executable_ref === 'codegraph'
275
+ // `sensor` is accepted only as an immutable pre-cutover artifact value.
276
+ // New captures always emit `lattice-sensor`.
277
+ && (value.executable_ref === 'lattice-sensor' || value.executable_ref === 'sensor')
276
278
  && SHA256.test(value.executable_digest);
277
279
  }
278
280
 
@@ -297,7 +299,7 @@ export function createRc1V6EvidenceBundleDescriptor(bundle) {
297
299
  }
298
300
 
299
301
  /**
300
- * v6 Codegraph runを、独立したsource/tool期待値と保存raw evidenceへcross-bindする。
302
+ * v6 LatticeSensor runを、独立したsource/tool期待値と保存raw evidenceへcross-bindする。
301
303
  */
302
304
  export function verifyRc1V6RunEvidence(options) {
303
305
  if (!exactRecord(options, ['run', 'bundle', 'expected'])) {
@@ -336,14 +338,14 @@ export function verifyRc1V6RunEvidence(options) {
336
338
  'base_sha',
337
339
  'patch_digest',
338
340
  'snapshot',
339
- 'codegraph_identity',
341
+ 'sensor_identity',
340
342
  'query_set_digest',
341
343
  ])
342
344
  && GIT_SHA1.test(expected.base_sha)
343
345
  && (expected.patch_digest === null
344
346
  || (typeof expected.patch_digest === 'string' && SHA256.test(expected.patch_digest)))
345
347
  && validSourceSnapshot(expected.snapshot)
346
- && validCodegraphIdentity(expected.codegraph_identity)
348
+ && validLatticeSensorIdentity(expected.sensor_identity)
347
349
  && SHA256.test(expected.query_set_digest);
348
350
  const measurement = bundleValid ? bundle.measurement : null;
349
351
  const measurementValid = exactRecord(measurement, [
@@ -352,19 +354,19 @@ export function verifyRc1V6RunEvidence(options) {
352
354
  'patch_digest',
353
355
  'snapshot',
354
356
  'snapshot_digest',
355
- 'codegraph_identity',
356
- 'codegraph_identity_digest',
357
+ 'sensor_identity',
358
+ 'sensor_identity_digest',
357
359
  'query_set_digest',
358
360
  'raw_evidence_digest',
359
361
  ])
360
- && measurement.schema === 'lattice.rc1.codegraph_measurement.v1'
362
+ && measurement.schema === 'lattice.rc1.sensor_measurement.v1'
361
363
  && GIT_SHA1.test(measurement.base_sha)
362
364
  && (measurement.patch_digest === null
363
365
  || (typeof measurement.patch_digest === 'string' && SHA256.test(measurement.patch_digest)))
364
366
  && validSourceSnapshot(measurement.snapshot)
365
367
  && SHA256.test(measurement.snapshot_digest)
366
- && validCodegraphIdentity(measurement.codegraph_identity)
367
- && SHA256.test(measurement.codegraph_identity_digest)
368
+ && validLatticeSensorIdentity(measurement.sensor_identity)
369
+ && SHA256.test(measurement.sensor_identity_digest)
368
370
  && SHA256.test(measurement.query_set_digest)
369
371
  && SHA256.test(measurement.raw_evidence_digest);
370
372
 
@@ -394,10 +396,10 @@ export function verifyRc1V6RunEvidence(options) {
394
396
  && isDeepStrictEqual(measurement.snapshot, expected.snapshot),
395
397
  },
396
398
  {
397
- id: 'codegraph_identity',
399
+ id: 'sensor_identity',
398
400
  passed: measurementValid && expectedValid
399
- && measurement.codegraph_identity_digest === safeDigest(measurement.codegraph_identity)
400
- && isDeepStrictEqual(measurement.codegraph_identity, expected.codegraph_identity),
401
+ && measurement.sensor_identity_digest === safeDigest(measurement.sensor_identity)
402
+ && isDeepStrictEqual(measurement.sensor_identity, expected.sensor_identity),
401
403
  },
402
404
  {
403
405
  id: 'source_projection',