@svenroth-ai/shipwright 0.24.7-next.0 → 0.26.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 (239) hide show
  1. package/client/dist/assets/{EmbeddedTerminal-D2BLGWdW.js → EmbeddedTerminal-D3wpPNZP.js} +20 -20
  2. package/client/dist/assets/{abnfDiagram-VRR7QNED-C-W_2Jd4.js → abnfDiagram-VRR7QNED-BkLIltB3.js} +1 -1
  3. package/client/dist/assets/{arc-CpqwESP5.js → arc-Sw-Gh0nI.js} +1 -1
  4. package/client/dist/assets/{architectureDiagram-ZJ3FMSHR-DZVZ895V.js → architectureDiagram-ZJ3FMSHR-rdxUi9Ks.js} +1 -1
  5. package/client/dist/assets/{blockDiagram-677ZJIJ3-CCCZiAA7.js → blockDiagram-677ZJIJ3-Ch_9dj8a.js} +1 -1
  6. package/client/dist/assets/{c4Diagram-LMCZKHZV-Bg1beZAE.js → c4Diagram-LMCZKHZV-CkFlO65x.js} +1 -1
  7. package/client/dist/assets/channel-BYPbLjRl.js +1 -0
  8. package/client/dist/assets/{chunk-2Q5K7J3B-CoaXSarh.js → chunk-2Q5K7J3B-CypX83xu.js} +1 -1
  9. package/client/dist/assets/{chunk-32BRIVSS-CeFXS-CM.js → chunk-32BRIVSS-DxVLYGdl.js} +1 -1
  10. package/client/dist/assets/{chunk-5VM5RSS4-QyJMVe0m.js → chunk-5VM5RSS4-Cxk1evhx.js} +1 -1
  11. package/client/dist/assets/{chunk-EX3LRPZG-BIOtWVF8.js → chunk-EX3LRPZG-n9q5S4yJ.js} +1 -1
  12. package/client/dist/assets/{chunk-JWPE2WC7-Dcq-lWyX.js → chunk-JWPE2WC7-jeL4xvir.js} +1 -1
  13. package/client/dist/assets/{chunk-MOJQB5TN-C95323ja.js → chunk-MOJQB5TN-DDSHN0cj.js} +1 -1
  14. package/client/dist/assets/{chunk-RYQCIY6F-C0HPwpWy.js → chunk-RYQCIY6F-C0bo383g.js} +1 -1
  15. package/client/dist/assets/{chunk-V7JOEXUC-BPrTbZqA.js → chunk-V7JOEXUC-C0jDXXAU.js} +1 -1
  16. package/client/dist/assets/{chunk-VR4S4FIN--BCnNoqt.js → chunk-VR4S4FIN-h-Rr4Pn2.js} +1 -1
  17. package/client/dist/assets/{chunk-XXDRQBXY-Dj8vtcXf.js → chunk-XXDRQBXY-BexSo0-s.js} +1 -1
  18. package/client/dist/assets/classDiagram-OUVF2IWQ-CsFIeTju.js +1 -0
  19. package/client/dist/assets/classDiagram-v2-EOCWNBFH-CsFIeTju.js +1 -0
  20. package/client/dist/assets/{cose-bilkent-JH36ORCC-y51otZKz.js → cose-bilkent-JH36ORCC-BQXzaioj.js} +1 -1
  21. package/client/dist/assets/{cynefin-VYW2F7L2-BRfS3cHo.js → cynefin-VYW2F7L2-BJIofhfe.js} +1 -1
  22. package/client/dist/assets/{cynefinDiagram-TSTJHNR4-Dpg2RtfL.js → cynefinDiagram-TSTJHNR4-DmPqTM1T.js} +1 -1
  23. package/client/dist/assets/{dagre-VKFMJZFB-BdZtXgKZ.js → dagre-VKFMJZFB-1xljvw6X.js} +1 -1
  24. package/client/dist/assets/{diagram-FQU43EPY-K-RCwWxW.js → diagram-FQU43EPY-iyL9muCG.js} +1 -1
  25. package/client/dist/assets/{diagram-G47NLZAW-CHNn7F2-.js → diagram-G47NLZAW-DREp2Th6.js} +1 -1
  26. package/client/dist/assets/{diagram-NH7WQ7WH-B3zu6xib.js → diagram-NH7WQ7WH-h0X3Is2S.js} +1 -1
  27. package/client/dist/assets/{diagram-OA4YK3LP-Wp5ju7L7.js → diagram-OA4YK3LP-Bj8YZRFJ.js} +1 -1
  28. package/client/dist/assets/{diagram-WEI45ONY-C94GpsRk.js → diagram-WEI45ONY-BZOf805d.js} +1 -1
  29. package/client/dist/assets/{ebnfDiagram-CCIWWBDH-DXrTPOrP.js → ebnfDiagram-CCIWWBDH-DO5JnXda.js} +1 -1
  30. package/client/dist/assets/{erDiagram-Q63AITRT-CGejnW0f.js → erDiagram-Q63AITRT-DRgcqg1T.js} +1 -1
  31. package/client/dist/assets/{flowDiagram-23GEKE2U-CFJMM637.js → flowDiagram-23GEKE2U-C3J9QmrW.js} +1 -1
  32. package/client/dist/assets/{ganttDiagram-NO4QXBWP-DnaH94Su.js → ganttDiagram-NO4QXBWP-BIEl3Tkm.js} +1 -1
  33. package/client/dist/assets/{gitGraphDiagram-IHSO6WYX-DT-D0gbn.js → gitGraphDiagram-IHSO6WYX-BNF0tFWC.js} +1 -1
  34. package/client/dist/assets/index-BnTOrFHb.js +829 -0
  35. package/client/dist/assets/index-CYPc6qxw.css +1 -0
  36. package/client/dist/assets/{infoDiagram-FWYZ7A6U-DW3Ps00w.js → infoDiagram-FWYZ7A6U-DEyFxiyY.js} +1 -1
  37. package/client/dist/assets/{ishikawaDiagram-FXEZZL3T-DjxjIT3n.js → ishikawaDiagram-FXEZZL3T-B_ehlg3I.js} +1 -1
  38. package/client/dist/assets/{journeyDiagram-5HDEW3XC-DTQRI93Y.js → journeyDiagram-5HDEW3XC-Dp00FyJS.js} +1 -1
  39. package/client/dist/assets/{kanban-definition-HUTT4EX6-BeDvbiEs.js → kanban-definition-HUTT4EX6-CTAf16q8.js} +1 -1
  40. package/client/dist/assets/{linear-B4foxDlh.js → linear-9vNUgmYd.js} +1 -1
  41. package/client/dist/assets/{mermaid.core-c-L4qgSB.js → mermaid.core-A6tjaEVD.js} +4 -4
  42. package/client/dist/assets/{mindmap-definition-LN4V7U3C-dh8v0J8T.js → mindmap-definition-LN4V7U3C-DRW3bmCY.js} +1 -1
  43. package/client/dist/assets/{pegDiagram-2B236MQR-D5vNrtFh.js → pegDiagram-2B236MQR-DJFCjHp2.js} +1 -1
  44. package/client/dist/assets/{pieDiagram-ENE6RG2P-CIjg_6lR.js → pieDiagram-ENE6RG2P-KRd-sGvC.js} +1 -1
  45. package/client/dist/assets/{quadrantDiagram-ABIIQ3AL-CF37qWQD.js → quadrantDiagram-ABIIQ3AL-9TLZE3Hu.js} +1 -1
  46. package/client/dist/assets/{railroadDiagram-RFXS5EU6-x0Hn30Kj.js → railroadDiagram-RFXS5EU6-y4tLtjXg.js} +1 -1
  47. package/client/dist/assets/{requirementDiagram-TGXJPOKE-BE2QnVbN.js → requirementDiagram-TGXJPOKE-B9EOQDQM.js} +1 -1
  48. package/client/dist/assets/{sankeyDiagram-HTMAVEWB-CUv6cIlV.js → sankeyDiagram-HTMAVEWB-zfwiDzkT.js} +1 -1
  49. package/client/dist/assets/{sequenceDiagram-DBY2YBRQ-C3ACj5LS.js → sequenceDiagram-DBY2YBRQ-DW1LWepL.js} +1 -1
  50. package/client/dist/assets/{sizeCapture-X5ZJPWSS-DTMIb5gX.js → sizeCapture-X5ZJPWSS-BM81Mik0.js} +1 -1
  51. package/client/dist/assets/{stateDiagram-2N3HPSRC-DI1Z8P74.js → stateDiagram-2N3HPSRC-D0EMIw1w.js} +1 -1
  52. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-B3E4_xxT.js +1 -0
  53. package/client/dist/assets/{swimlanes-5IMT3BWC-CLSr9w29.js → swimlanes-5IMT3BWC-CKXNCX6M.js} +2 -2
  54. package/client/dist/assets/swimlanesDiagram-G3AALYLV-BegQBqnC.js +8 -0
  55. package/client/dist/assets/{timeline-definition-FHXFAJF6-BTWmUhDh.js → timeline-definition-FHXFAJF6-ByzIfvL5.js} +1 -1
  56. package/client/dist/assets/{vennDiagram-L72KCM5P-Ce1dlLCM.js → vennDiagram-L72KCM5P-Xep38xBH.js} +1 -1
  57. package/client/dist/assets/{wardleyDiagram-EHGQE667-ClOE-aae.js → wardleyDiagram-EHGQE667-DKWDpx6g.js} +1 -1
  58. package/client/dist/assets/{xychartDiagram-FW5EYKEG-Fa2pqWKw.js → xychartDiagram-FW5EYKEG-BGcwZTnu.js} +1 -1
  59. package/client/dist/index.html +27 -27
  60. package/lib/claude-cli.mjs +173 -173
  61. package/lib/preflight.mjs +252 -252
  62. package/lib/probe-path.mjs +84 -84
  63. package/lib/server.mjs +369 -369
  64. package/lib/util.mjs +157 -157
  65. package/lib/win32-spawn.mjs +253 -253
  66. package/package.json +1 -1
  67. package/scripts/deploy-procs.mjs +208 -208
  68. package/scripts/deploy-swap.mjs +276 -276
  69. package/scripts/kill-targets.js +140 -140
  70. package/scripts/repair-claude-json.mjs +295 -295
  71. package/server/dist/config/default-actions.json +90 -90
  72. package/server/dist/core/grade-runner.d.ts +4 -4
  73. package/server/dist/core/grade-runner.d.ts.map +1 -1
  74. package/server/dist/core/grade-runner.js +51 -26
  75. package/server/dist/core/grade-runner.js.map +1 -1
  76. package/server/dist/core/grade-target.d.ts +8 -0
  77. package/server/dist/core/grade-target.d.ts.map +1 -1
  78. package/server/dist/core/grade-target.js +10 -0
  79. package/server/dist/core/grade-target.js.map +1 -1
  80. package/server/dist/core/mission-context/association.d.ts +46 -0
  81. package/server/dist/core/mission-context/association.d.ts.map +1 -1
  82. package/server/dist/core/mission-context/association.js +69 -0
  83. package/server/dist/core/mission-context/association.js.map +1 -1
  84. package/server/dist/core/mission-context/resolver-iterate.d.ts +6 -0
  85. package/server/dist/core/mission-context/resolver-iterate.d.ts.map +1 -0
  86. package/server/dist/core/mission-context/resolver-iterate.js +202 -0
  87. package/server/dist/core/mission-context/resolver-iterate.js.map +1 -0
  88. package/server/dist/core/mission-context/resolver-parts.d.ts +20 -0
  89. package/server/dist/core/mission-context/resolver-parts.d.ts.map +1 -1
  90. package/server/dist/core/mission-context/resolver-parts.js +92 -0
  91. package/server/dist/core/mission-context/resolver-parts.js.map +1 -1
  92. package/server/dist/core/mission-context/resolver.d.ts +1 -1
  93. package/server/dist/core/mission-context/resolver.d.ts.map +1 -1
  94. package/server/dist/core/mission-context/resolver.js +17 -199
  95. package/server/dist/core/mission-context/resolver.js.map +1 -1
  96. package/server/dist/core/mission-context/run-id-recovery.d.ts +21 -5
  97. package/server/dist/core/mission-context/run-id-recovery.d.ts.map +1 -1
  98. package/server/dist/core/mission-context/run-id-recovery.js +32 -5
  99. package/server/dist/core/mission-context/run-id-recovery.js.map +1 -1
  100. package/server/dist/core/mission-context/scenario.d.ts +18 -11
  101. package/server/dist/core/mission-context/scenario.d.ts.map +1 -1
  102. package/server/dist/core/mission-context/scenario.js +40 -3
  103. package/server/dist/core/mission-context/scenario.js.map +1 -1
  104. package/server/dist/core/path-guard.d.ts +1 -1
  105. package/server/dist/core/path-guard.d.ts.map +1 -1
  106. package/server/dist/core/path-guard.js +9 -2
  107. package/server/dist/core/path-guard.js.map +1 -1
  108. package/server/dist/core/shipslog-docs-reader.d.ts +4 -0
  109. package/server/dist/core/shipslog-docs-reader.d.ts.map +1 -0
  110. package/server/dist/core/shipslog-docs-reader.js +181 -0
  111. package/server/dist/core/shipslog-docs-reader.js.map +1 -0
  112. package/server/dist/core/shipslog-docs-types.d.ts +15 -0
  113. package/server/dist/core/shipslog-docs-types.d.ts.map +1 -0
  114. package/server/dist/core/shipslog-docs-types.js +14 -0
  115. package/server/dist/core/shipslog-docs-types.js.map +1 -0
  116. package/server/dist/core/triage-cli-runner.d.ts.map +1 -1
  117. package/server/dist/core/triage-cli-runner.js +29 -10
  118. package/server/dist/core/triage-cli-runner.js.map +1 -1
  119. package/server/dist/core/uv-runner.d.ts +23 -0
  120. package/server/dist/core/uv-runner.d.ts.map +1 -0
  121. package/server/dist/core/uv-runner.js +39 -0
  122. package/server/dist/core/uv-runner.js.map +1 -0
  123. package/server/dist/external/design-review/serve.js +27 -27
  124. package/server/dist/external/file/exists-routes.d.ts +7 -0
  125. package/server/dist/external/file/exists-routes.d.ts.map +1 -0
  126. package/server/dist/external/file/exists-routes.js +91 -0
  127. package/server/dist/external/file/exists-routes.js.map +1 -0
  128. package/server/dist/external/mission-context/association-write.d.ts +22 -0
  129. package/server/dist/external/mission-context/association-write.d.ts.map +1 -0
  130. package/server/dist/external/mission-context/association-write.js +90 -0
  131. package/server/dist/external/mission-context/association-write.js.map +1 -0
  132. package/server/dist/external/mission-context/routes.d.ts.map +1 -1
  133. package/server/dist/external/mission-context/routes.js +18 -31
  134. package/server/dist/external/mission-context/routes.js.map +1 -1
  135. package/server/dist/external/org/audit-log.d.ts +27 -0
  136. package/server/dist/external/org/audit-log.d.ts.map +1 -0
  137. package/server/dist/external/org/audit-log.js +92 -0
  138. package/server/dist/external/org/audit-log.js.map +1 -0
  139. package/server/dist/external/org/beat-register.d.ts +15 -22
  140. package/server/dist/external/org/beat-register.d.ts.map +1 -1
  141. package/server/dist/external/org/beat-register.js +37 -32
  142. package/server/dist/external/org/beat-register.js.map +1 -1
  143. package/server/dist/external/org/file-read.d.ts +16 -0
  144. package/server/dist/external/org/file-read.d.ts.map +1 -1
  145. package/server/dist/external/org/file-read.js +86 -46
  146. package/server/dist/external/org/file-read.js.map +1 -1
  147. package/server/dist/external/org/file-write-core.d.ts +18 -0
  148. package/server/dist/external/org/file-write-core.d.ts.map +1 -0
  149. package/server/dist/external/org/file-write-core.js +97 -0
  150. package/server/dist/external/org/file-write-core.js.map +1 -0
  151. package/server/dist/external/org/file-write.d.ts +25 -0
  152. package/server/dist/external/org/file-write.d.ts.map +1 -1
  153. package/server/dist/external/org/file-write.js +82 -132
  154. package/server/dist/external/org/file-write.js.map +1 -1
  155. package/server/dist/external/org/last-run.d.ts +25 -16
  156. package/server/dist/external/org/last-run.d.ts.map +1 -1
  157. package/server/dist/external/org/last-run.js +78 -64
  158. package/server/dist/external/org/last-run.js.map +1 -1
  159. package/server/dist/external/org/lead-doc-read.d.ts +21 -0
  160. package/server/dist/external/org/lead-doc-read.d.ts.map +1 -0
  161. package/server/dist/external/org/lead-doc-read.js +84 -0
  162. package/server/dist/external/org/lead-doc-read.js.map +1 -0
  163. package/server/dist/external/org/mount.d.ts +12 -0
  164. package/server/dist/external/org/mount.d.ts.map +1 -0
  165. package/server/dist/external/org/mount.js +34 -0
  166. package/server/dist/external/org/mount.js.map +1 -0
  167. package/server/dist/external/org/org-chart-lookup.d.ts +13 -0
  168. package/server/dist/external/org/org-chart-lookup.d.ts.map +1 -1
  169. package/server/dist/external/org/org-chart-lookup.js +40 -5
  170. package/server/dist/external/org/org-chart-lookup.js.map +1 -1
  171. package/server/dist/external/org/org-chart.d.ts +21 -12
  172. package/server/dist/external/org/org-chart.d.ts.map +1 -1
  173. package/server/dist/external/org/org-chart.js +50 -32
  174. package/server/dist/external/org/org-chart.js.map +1 -1
  175. package/server/dist/external/org/role-extract.d.ts +8 -0
  176. package/server/dist/external/org/role-extract.d.ts.map +1 -0
  177. package/server/dist/external/org/role-extract.js +72 -0
  178. package/server/dist/external/org/role-extract.js.map +1 -0
  179. package/server/dist/external/org/usage.d.ts +15 -11
  180. package/server/dist/external/org/usage.d.ts.map +1 -1
  181. package/server/dist/external/org/usage.js +64 -54
  182. package/server/dist/external/org/usage.js.map +1 -1
  183. package/server/dist/external/routes.d.ts +1 -1
  184. package/server/dist/external/routes.d.ts.map +1 -1
  185. package/server/dist/external/routes.js +19 -17
  186. package/server/dist/external/routes.js.map +1 -1
  187. package/server/dist/external/shipslog-docs/routes.d.ts +10 -0
  188. package/server/dist/external/shipslog-docs/routes.d.ts.map +1 -0
  189. package/server/dist/external/shipslog-docs/routes.js +41 -0
  190. package/server/dist/external/shipslog-docs/routes.js.map +1 -0
  191. package/server/dist/routes/grade.d.ts.map +1 -1
  192. package/server/dist/routes/grade.js +3 -2
  193. package/server/dist/routes/grade.js.map +1 -1
  194. package/server/dist/routes/org-leads-composite.d.ts +21 -0
  195. package/server/dist/routes/org-leads-composite.d.ts.map +1 -0
  196. package/server/dist/routes/org-leads-composite.js +95 -0
  197. package/server/dist/routes/org-leads-composite.js.map +1 -0
  198. package/server/dist/routes/org.d.ts +15 -0
  199. package/server/dist/routes/org.d.ts.map +1 -0
  200. package/server/dist/routes/org.js +198 -0
  201. package/server/dist/routes/org.js.map +1 -0
  202. package/server/dist/terminal/pty-manager.d.ts +9 -0
  203. package/server/dist/terminal/pty-manager.d.ts.map +1 -1
  204. package/server/dist/terminal/pty-manager.js +15 -0
  205. package/server/dist/terminal/pty-manager.js.map +1 -1
  206. package/server/dist/terminal/replay-snapshot.d.ts +10 -1
  207. package/server/dist/terminal/replay-snapshot.d.ts.map +1 -1
  208. package/server/dist/terminal/replay-snapshot.js +36 -1
  209. package/server/dist/terminal/replay-snapshot.js.map +1 -1
  210. package/server/dist/terminal/ws-upgrade-handler.d.ts +17 -1
  211. package/server/dist/terminal/ws-upgrade-handler.d.ts.map +1 -1
  212. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts +1 -0
  213. package/server/dist/terminal/ws-upgrade-handler.fixtures.d.ts.map +1 -1
  214. package/server/dist/terminal/ws-upgrade-handler.fixtures.js +3 -2
  215. package/server/dist/terminal/ws-upgrade-handler.fixtures.js.map +1 -1
  216. package/server/dist/terminal/ws-upgrade-handler.js +45 -4
  217. package/server/dist/terminal/ws-upgrade-handler.js.map +1 -1
  218. package/server/dist/test/python-spawn-guard-util.d.ts +14 -0
  219. package/server/dist/test/python-spawn-guard-util.d.ts.map +1 -0
  220. package/server/dist/test/python-spawn-guard-util.js +124 -0
  221. package/server/dist/test/python-spawn-guard-util.js.map +1 -0
  222. package/server/dist/types/org.d.ts +115 -0
  223. package/server/dist/types/org.d.ts.map +1 -0
  224. package/server/dist/types/org.js +16 -0
  225. package/server/dist/types/org.js.map +1 -0
  226. package/server/package.json +1 -1
  227. package/server/profiles/PROFILE_SCHEMA_VERSION +1 -1
  228. package/server/profiles/README.md +27 -27
  229. package/server/profiles/python-plugin-monorepo.json +35 -35
  230. package/server/profiles/supabase-nextjs.json +253 -253
  231. package/server/profiles/vite-hono.json +92 -92
  232. package/client/dist/assets/MarkdownEditorModal-CP5yG9OU.js +0 -212
  233. package/client/dist/assets/channel-BNXbCvDS.js +0 -1
  234. package/client/dist/assets/classDiagram-OUVF2IWQ-w-wCtLx3.js +0 -1
  235. package/client/dist/assets/classDiagram-v2-EOCWNBFH-w-wCtLx3.js +0 -1
  236. package/client/dist/assets/index-CU2QJgvx.js +0 -609
  237. package/client/dist/assets/index-ftvVcUT8.css +0 -1
  238. package/client/dist/assets/stateDiagram-v2-6OUMAXLB-DvwiHlJv.js +0 -1
  239. package/client/dist/assets/swimlanesDiagram-G3AALYLV-JTQZTlZ3.js +0 -8
@@ -0,0 +1,6 @@
1
+ import type { ReadPointerResult } from "./pointer.js";
2
+ import type { ScenarioDecision } from "./scenario.js";
3
+ import type { ResolveDeps, ResolveRequest, ResolveResult } from "./resolver-io.js";
4
+ /** `decision.runId` resolved and non-null — caller has already checked. */
5
+ export declare function resolveIterateContext(req: ResolveRequest, deps: ResolveDeps, decision: ScenarioDecision, runId: string, pointer: ReadPointerResult, baseRevPaths: string[]): Promise<ResolveResult>;
6
+ //# sourceMappingURL=resolver-iterate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-iterate.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-iterate.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAItD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAanF,2EAA2E;AAC3E,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,aAAa,CAAC,CA0MxB"}
@@ -0,0 +1,202 @@
1
+ /*
2
+ * core/mission-context/resolver-iterate.ts — the ITERATE-scenario branch of
3
+ * `resolveMissionContext`, split out of resolver.ts (2026-08-31,
4
+ * iterate-2026-08-31-mission-feed-gaps) to stay under the 300-line file-size
5
+ * limit. Pure continuation of the same function body: `resolver.ts` handles
6
+ * scenario detection and the non-iterate early returns, then hands off here
7
+ * once `decision.scenario === "iterate"` with a resolved `runId`. Contract
8
+ * and architecture notes live in resolver.ts's header.
9
+ */
10
+ import { cache, CACHE_CAP, computeSourceRev, docFingerprint, readBounded, } from "./resolver-parts.js";
11
+ import { loadFoldMap, SPEC_REL_PARTS, specPath } from "./fold-map.js";
12
+ import { checkSquashMerged, extractPrMarker, readOriginSlug } from "./merge-check.js";
13
+ import { refreshMerge } from "./merge-refresh.js";
14
+ import { mintDocId } from "./doc-ids.js";
15
+ import { buildRequirementArtifact, buildSpecArtifact } from "./artifacts.js";
16
+ import { buildCommitArtifact } from "./artifacts-commit.js";
17
+ import { buildSlice2Artifacts, slice2RevPaths } from "./slice2-sources.js";
18
+ import { iterateDocPath, readIterateDoc } from "./iterate-record.js";
19
+ import { resolveWorkCompleted } from "./merged-events.js";
20
+ import { campaignSpecCandidates, specCandidates, specHintCandidate } from "./spec-candidates.js";
21
+ import { toMissionTests } from "./artifacts-tests.js";
22
+ import { chooseRoot, readAllowedRootsCached, resolveFirstDoc } from "./worktree-roots.js";
23
+ import { MISSION_CONTEXT_SCHEMA_VERSION, } from "./types.js";
24
+ /** `decision.runId` resolved and non-null — caller has already checked. */
25
+ export async function resolveIterateContext(req, deps, decision, runId, pointer, baseRevPaths) {
26
+ const { projectRoot, sessionUuid } = req;
27
+ const slug = pointer.status === "ok" ? pointer.pointer.slug : null;
28
+ const worktreePath = pointer.status === "ok" ? pointer.pointer.worktreePath : null;
29
+ const roots = await readAllowedRootsCached(projectRoot, { git: deps.git });
30
+ // A worktree git does not know is simply NOT USED as a read root — that is
31
+ // `chooseRoot`'s contract, and it is the normal post-Finalize state, not an
32
+ // integrity failure. MEASURED 2026-07-21: git registered 0 of this project's
33
+ // 20 live pointers' worktrees (removed at Finalize, directory left behind),
34
+ // and the earlier hard failure here erased all six artifacts for every one of
35
+ // them although every run had its record in the main root. See ADR.
36
+ const chosen = chooseRoot(roots, worktreePath);
37
+ // --- Records (the spec candidates below are built from them). The event
38
+ // lookup is (mtime,size)-indexed: ahead of the cache check it is a Map hit.
39
+ const iterateDoc = readIterateDoc(projectRoot, runId);
40
+ // Working tree first, then — for a FINISHED run whose worktree is gone
41
+ // (`!isWorktree`) and whose row is not local — the default remote ref where
42
+ // the squash landed it. This is the "merged but not pulled" case that
43
+ // otherwise leaves only Decisions on the rail (merged-events.ts).
44
+ const { events, mergedRefMiss } = await resolveWorkCompleted(projectRoot, runId, chosen.isWorktree, { git: deps.git });
45
+ const run = events.status === "found" ? events.run : null;
46
+ // --- Spec: known layout, agent-doc hint, then that same campaign path rebuilt
47
+ // from the never-evicted event log — APPENDED, so preference order is
48
+ // unchanged and it only adds reach once the doc evicts (trg-92c0c36b).
49
+ const hint = specHintCandidate(iterateDoc?.specHint);
50
+ const candidates = [
51
+ ...specCandidates(runId, slug),
52
+ ...(hint ? [hint] : []),
53
+ ...campaignSpecCandidates(chosen.root, run?.campaign, run?.subIterateId),
54
+ ];
55
+ const doc = resolveFirstDoc(chosen.root, candidates);
56
+ // The rev covers EVERY source used, incl. the iterate + agent docs AND the
57
+ // Slice-2 sources. An input missing from here is an input FROZEN by the cache.
58
+ const rev = computeSourceRev([
59
+ ...baseRevPaths,
60
+ iterateDocPath(projectRoot, runId),
61
+ ...slice2RevPaths(projectRoot, runId),
62
+ ...(doc.ok ? [doc.absolute] : []),
63
+ ], [runId, chosen.root, req.taskId]);
64
+ // Task terminal state is server-owned input, not a filesystem revision. It
65
+ // must participate in the cache identity so a completed task cannot reuse a
66
+ // previously-live context while its worktree and event log are unchanged.
67
+ const cacheKey = `${projectRoot}::${sessionUuid}::${runId}::${req.taskTerminal ? "terminal" : "active"}`;
68
+ // Report the id + source the route should persist — a LIVE pointer (rule
69
+ // 2), a first association from a corroborated footer (rule 5), or a
70
+ // confirmed supersession of a stale one (rule 2b, association.ts
71
+ // `supersedeMissionContext`). Read back off the WINNING rule so the id and
72
+ // its provenance cannot disagree; an id that already came from the store
73
+ // (an unchanged association) is reported but the route's guard makes that
74
+ // report a no-op write.
75
+ const associate = decision.runIdSource === "pointer" || decision.runIdSource === "transcript" ? runId : null;
76
+ const associateSource = decision.runIdSource === "transcript" ? "transcript_run_id" : "iterate_active_pointer";
77
+ const hit = cache.get(cacheKey);
78
+ if (hit && hit.rev === rev) {
79
+ // NOT returned verbatim — merge is the one time-varying field and must be
80
+ // re-derived, or it freezes at "pending" forever. See merge-refresh.ts.
81
+ return {
82
+ context: await refreshMerge(hit.context, projectRoot, req.transcript, deps),
83
+ associateRunId: associate,
84
+ associateSource,
85
+ };
86
+ }
87
+ let documentId = null, title = null, specText = null;
88
+ if (doc.ok) {
89
+ // BY INDEX — a suffix-compare against the realpath misses on a leaf-casing
90
+ // normalisation and silently pairs candidates[0] with the OTHER file's
91
+ // fingerprint (see resolveFirstDoc).
92
+ // BY INDEX — what resolveFirstDoc returns it for. See
93
+ // resolver.candidate-pairing.test.ts for why re-deriving it is a trap.
94
+ const rel = candidates[doc.index].join("/");
95
+ title = rel.slice(rel.lastIndexOf("/") + 1);
96
+ documentId = mintDocId({
97
+ t: req.taskId,
98
+ s: sessionUuid,
99
+ p: projectRoot,
100
+ r: runId,
101
+ root: chosen.root,
102
+ rel,
103
+ rev,
104
+ f: docFingerprint(doc.absolute),
105
+ });
106
+ specText = readBounded(doc.absolute);
107
+ }
108
+ const foldMap = loadFoldMap(projectRoot);
109
+ const requirementsDocument = mintDocId({
110
+ t: req.taskId,
111
+ s: sessionUuid,
112
+ p: projectRoot,
113
+ r: runId,
114
+ root: projectRoot,
115
+ rel: SPEC_REL_PARTS.join("/"),
116
+ rev,
117
+ f: docFingerprint(specPath(projectRoot)),
118
+ });
119
+ // --- Commit + merge -------------------------------------------------------
120
+ // The marker must belong to THIS project's own origin repo (a sibling repo's
121
+ // PR number would grep our origin/main), and merge is only checked once the
122
+ // run completed — a per-poll git call mid-run is waste (§5.3).
123
+ const marker = extractPrMarker(req.transcript, await readOriginSlug(projectRoot, deps.git));
124
+ const merge = run && marker
125
+ ? await checkSquashMerged(projectRoot, marker.number, { git: deps.git, ...deps.merge })
126
+ : "unknown";
127
+ const slice2 = await buildSlice2Artifacts({
128
+ projectRoot,
129
+ runId,
130
+ events,
131
+ commit: run?.commit?.trim() || null,
132
+ git: deps.git,
133
+ });
134
+ // `runLive` retains its visual worktree meaning. Requirement planning has a
135
+ // separate authority: the server-owned task state, which can mark a run
136
+ // terminal while a worktree lingers (or active while root selection fell back).
137
+ const runLive = chosen.isWorktree && !req.taskTerminal && events.status !== "found";
138
+ const requirementLive = !req.taskTerminal && events.status !== "found";
139
+ // CONTRACT §6 order: Spec · Requirement · Tests · Review · Decisions · Commit.
140
+ const artifacts = [
141
+ buildSpecArtifact({
142
+ documentId,
143
+ title,
144
+ denied: !doc.ok && doc.reason === "denied",
145
+ fromWorktree: chosen.isWorktree,
146
+ intent: run?.intent ?? null,
147
+ }),
148
+ buildRequirementArtifact({
149
+ foldMap,
150
+ doc: iterateDoc,
151
+ events,
152
+ specText,
153
+ runLive: requirementLive,
154
+ sourceDocument: {
155
+ documentId: requirementsDocument,
156
+ title: "Requirements specification",
157
+ },
158
+ }),
159
+ ...slice2.artifacts,
160
+ buildCommitArtifact({ events, prNumber: marker?.number ?? null, prUrl: marker?.url ?? null, merge }),
161
+ ];
162
+ const requirement = artifacts[1];
163
+ const servesFrId = requirement.kind === "requirement" && requirement.detail?.rows.length
164
+ ? requirement.detail.rows[0].displayFrId
165
+ : null;
166
+ const context = {
167
+ schemaVersion: MISSION_CONTEXT_SCHEMA_VERSION,
168
+ scenario: "iterate",
169
+ missionTabVisible: true,
170
+ runId,
171
+ // IN FLIGHT = git still registers the pointer's worktree AND the run has not
172
+ // recorded completion. The worktree alone is a filesystem PROXY (external
173
+ // plan review, openai MEDIUM): an abandoned or already-finished run can
174
+ // leave a registered worktree behind, and "pending" for a run that is over
175
+ // is the same lie in the other direction. A `work_completed` record is a
176
+ // terminal fact, so it ends live-ness. Both inputs participate in `rev`
177
+ // (`chosen.root` + the event log's mtime), so neither can freeze in cache.
178
+ runLive,
179
+ artifacts,
180
+ // Shares artifacts-tests.ts's constructor so this never diverges from
181
+ // the Tests artifact's own `detail.results` on the `{0,0}` edge case.
182
+ tests: run ? toMissionTests(run.tests, run.ts) : null,
183
+ servesFrId,
184
+ sourceRev: rev,
185
+ };
186
+ // A TRANSIENT git failure is not cached: git's answer is not a statted file,
187
+ // so it cannot participate in `rev`, and caching it would pin Tests at
188
+ // "currently unavailable" until an unrelated source file changed. A merged-ref
189
+ // MISS is excluded for the same reason — the run may land on the ref after a
190
+ // later fetch, which `rev` would not see; re-resolving is cheap (the ref blob
191
+ // is TTL-cached in merged-events). A merged-ref HIT is stable and caches.
192
+ if (slice2.cacheable && !mergedRefMiss) {
193
+ if (cache.size >= CACHE_CAP)
194
+ cache.clear();
195
+ cache.set(cacheKey, { rev, context });
196
+ }
197
+ // `associate` comes from EVIDENCE — a validated pointer or a corroborated
198
+ // footer — never from the task's `state`, which decays to `idle` on a parked
199
+ // design gate. See association.ts.
200
+ return { context, associateRunId: associate, associateSource };
201
+ }
202
+ //# sourceMappingURL=resolver-iterate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver-iterate.js","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-iterate.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,26 @@ export declare const cache: Map<string, CacheEntry>;
27
27
  export declare const CACHE_CAP = 256;
28
28
  /** Test-only: drop the module-level cache between cases. */
29
29
  export declare function _clearResolverCache(): void;
30
+ /**
31
+ * The memoized, CONFIRMED supersession for this (session, association,
32
+ * transcript-content) triple — `undefined` when none is cached (either this
33
+ * content was never checked, or it was checked and found nothing, which is
34
+ * deliberately never memoized here; a scan is owed either way).
35
+ */
36
+ export declare function supersessionMemoHit(sessionUuid: string, associationRunId: string, transcript: string): string | undefined;
37
+ /** Record this triple's CONFIRMED recovery, so the next unchanged poll reuses it instead of re-scanning. */
38
+ export declare function markSupersessionResult(sessionUuid: string, associationRunId: string, transcript: string, recovered: string): void;
39
+ /** Test-only: drop the supersession-check memo between cases. */
40
+ export declare function _clearSupersessionMemo(): void;
41
+ /**
42
+ * Builds the LAZY `recoverTranscriptRunId` thunk `detectScenario` calls for
43
+ * both rule 5 (no association) and rule 2b (supersession check) — wiring the
44
+ * throttle above around `recoverRunIdFromTranscript` in one place so the
45
+ * orchestrator (resolver.ts) stays a one-line call site. `memoHit` is read at
46
+ * BUILD time (this resolve's transcript/association snapshot), not
47
+ * re-evaluated inside the thunk, since neither changes within one call.
48
+ */
49
+ export declare function buildRecoveryThunk(projectRoot: string, sessionUuid: string, transcript: string, associationRunId: string | null): () => string | null;
30
50
  /**
31
51
  * Bounded read of a document body (mid-run planned impact + the detail
32
52
  * endpoint). Atomic: the size cap is enforced against the SAME descriptor the
@@ -1 +1 @@
1
- {"version":3,"file":"resolver-parts.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-parts.ts"],"names":[],"mappings":"AAeA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAYpF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOvD;AAoBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAavE;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,wFAAwF;AACxF,eAAO,MAAM,KAAK,yBAAgC,CAAC;AACnD,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,4DAA4D;AAC5D,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,iBAAiB,EAAE,OAAO,EAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,cAAc,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,wBAAwB,CAAA;CAAE,CAU9F;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,iBAAiB,EAAE,OAAO,EAC1B,SAAS,EAAE,MAAM,GAChB,cAAc,CAahB"}
1
+ {"version":3,"file":"resolver-parts.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-parts.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAYpF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOvD;AAoBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAavE;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,wFAAwF;AACxF,eAAO,MAAM,KAAK,yBAAgC,CAAC;AACnD,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,4DAA4D;AAC5D,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAgDD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAIpB;AAED,4GAA4G;AAC5G,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,IAAI,CAIN;AAED,iEAAiE;AACjE,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAC9B,MAAM,MAAM,GAAG,IAAI,CAerB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE3D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,iBAAiB,EAAE,OAAO,EAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,cAAc,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,wBAAwB,CAAA;CAAE,CAU9F;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,EACpC,iBAAiB,EAAE,OAAO,EAC1B,SAAS,EAAE,MAAM,GAChB,cAAc,CAahB"}
@@ -10,6 +10,7 @@ import { createHash } from "node:crypto";
10
10
  import { statSync } from "node:fs";
11
11
  import { readBoundedFile } from "./fs-read.js";
12
12
  import { MAX_DOC_BYTES } from "./worktree-roots.js";
13
+ import { recoverRunIdFromTranscript } from "./run-id-recovery.js";
13
14
  import { MISSION_CONTEXT_SCHEMA_VERSION, } from "./types.js";
14
15
  /**
15
16
  * mtime+size fingerprint of every source a response depends on.
@@ -86,6 +87,97 @@ export const CACHE_CAP = 256;
86
87
  export function _clearResolverCache() {
87
88
  cache.clear();
88
89
  }
90
+ /**
91
+ * Memoizes a CONFIRMED SUPERSESSION for THIS transcript content against THIS
92
+ * association (iterate-2026-08-31-mission-feed-gaps, scenario.ts rule 2b) —
93
+ * not merely "already checked". Content-fingerprinted, not time-based: a poll
94
+ * with no new transcript content is a guaranteed no-op, and the memo is
95
+ * naturally invalidated the moment the association itself changes (a
96
+ * different key) or the transcript grows (a different fingerprint).
97
+ *
98
+ * Caching the RESULT, not a checked/unchecked boolean, is load-bearing
99
+ * (external code review, openai HIGH): the route persists a confirmed
100
+ * supersession via `supersedeMissionContext` (association.ts) AFTER
101
+ * `resolveMissionContext` returns, so a poll can legitimately land again with
102
+ * the SAME stale `associationRunId` before that write lands (or if it fails
103
+ * outright). A boolean-only memo would then return `null` on that second
104
+ * poll — discarding an already-found answer and reverting the Mission
105
+ * context from the newly recovered run back to the stale one.
106
+ *
107
+ * ONLY a non-null (confirmed, corroborated, provably-newer) recovery is ever
108
+ * cached (external code review, openai MEDIUM): `recoverRunIdFromTranscript`
109
+ * returns `null` for two different reasons — "no marker in this text" (a
110
+ * purely textual fact, already covered by the SEPARATE negative-scan memo in
111
+ * run-id-recovery.ts) and "marker found but corroboration failed", which that
112
+ * module deliberately re-checks every poll because the project's own records
113
+ * can gain the run LATER. Caching a `null` here for the second reason would
114
+ * silently override that decision for the whole rule-2b class, so this memo
115
+ * never stores one. Mirrors the negative-scan memo, kept separate because
116
+ * this one also has to remember WHICH association it checked against, not
117
+ * just whether a marker existed at all.
118
+ */
119
+ const supersessionResult = new Map();
120
+ const SUPERSESSION_CAP = 512;
121
+ /**
122
+ * A full-content SHA-256, not length+suffix (external code review, openai
123
+ * MEDIUM): two distinct bounded transcript snapshots can share both length
124
+ * and final 256 characters while differing earlier in the tail — exactly
125
+ * where an EARLIER `Run-ID:` footer could sit. A suffix-only fingerprint
126
+ * would then replay a stale memoized answer for genuinely different content
127
+ * instead of re-scanning. Hashing costs one pass over a string already read
128
+ * into memory for the scan this memo exists to skip — cheap relative to what
129
+ * it replaces.
130
+ */
131
+ function supersessionFingerprint(transcript) {
132
+ return createHash("sha256").update(transcript).digest("hex");
133
+ }
134
+ /**
135
+ * The memoized, CONFIRMED supersession for this (session, association,
136
+ * transcript-content) triple — `undefined` when none is cached (either this
137
+ * content was never checked, or it was checked and found nothing, which is
138
+ * deliberately never memoized here; a scan is owed either way).
139
+ */
140
+ export function supersessionMemoHit(sessionUuid, associationRunId, transcript) {
141
+ const entry = supersessionResult.get(`${sessionUuid}::${associationRunId}`);
142
+ if (!entry || entry.fingerprint !== supersessionFingerprint(transcript))
143
+ return undefined;
144
+ return entry.recovered;
145
+ }
146
+ /** Record this triple's CONFIRMED recovery, so the next unchanged poll reuses it instead of re-scanning. */
147
+ export function markSupersessionResult(sessionUuid, associationRunId, transcript, recovered) {
148
+ const key = `${sessionUuid}::${associationRunId}`;
149
+ if (supersessionResult.size >= SUPERSESSION_CAP)
150
+ supersessionResult.clear();
151
+ supersessionResult.set(key, { fingerprint: supersessionFingerprint(transcript), recovered });
152
+ }
153
+ /** Test-only: drop the supersession-check memo between cases. */
154
+ export function _clearSupersessionMemo() {
155
+ supersessionResult.clear();
156
+ }
157
+ /**
158
+ * Builds the LAZY `recoverTranscriptRunId` thunk `detectScenario` calls for
159
+ * both rule 5 (no association) and rule 2b (supersession check) — wiring the
160
+ * throttle above around `recoverRunIdFromTranscript` in one place so the
161
+ * orchestrator (resolver.ts) stays a one-line call site. `memoHit` is read at
162
+ * BUILD time (this resolve's transcript/association snapshot), not
163
+ * re-evaluated inside the thunk, since neither changes within one call.
164
+ */
165
+ export function buildRecoveryThunk(projectRoot, sessionUuid, transcript, associationRunId) {
166
+ const memoHit = associationRunId !== null ? supersessionMemoHit(sessionUuid, associationRunId, transcript) : undefined;
167
+ return () => {
168
+ // A cache HIT is a CONFIRMED prior supersession for this exact content —
169
+ // returned as-is, never re-scanned. There is no cached-null case (see the
170
+ // memo's own doc comment): an unconfirmed result always re-scans, since
171
+ // corroboration can succeed later even when the text has not changed.
172
+ if (associationRunId !== null && memoHit !== undefined)
173
+ return memoHit;
174
+ const recovered = recoverRunIdFromTranscript(projectRoot, transcript, sessionUuid);
175
+ if (associationRunId !== null && recovered !== null) {
176
+ markSupersessionResult(sessionUuid, associationRunId, transcript, recovered);
177
+ }
178
+ return recovered;
179
+ };
180
+ }
89
181
  /**
90
182
  * Bounded read of a document body (mid-run planned impact + the detail
91
183
  * endpoint). Atomic: the size cap is enforced against the SAME descriptor the
@@ -1 +1 @@
1
- {"version":3,"file":"resolver-parts.js","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-parts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,8BAA8B,GAG/B,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe,EAAE,KAA0B;IAC1E,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAA0D;IAC/E,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7C,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IACzC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;CACpC,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,iBAAiB,CAAC,GAAG,CAC1B,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAClB,CAAC;QACC,IAAI;QACJ,KAAK;QACL,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,IAAI;QACJ,MAAM,EAAE,IAAI;KACb,CAAuB,CAC3B,CAAC;AACJ,CAAC;AAOD,wFAAwF;AACxF,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,4DAA4D;AAC5D,MAAM,UAAU,mBAAmB;IACjC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,eAAe,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAoC,EACpC,iBAA0B,EAC1B,GAAW,EACX,IAAY,EACZ,KAAoB;IAEpB,OAAO;QACL,OAAO,EAAE;YACP,GAAG,YAAY,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,CAAC;YACjD,KAAK;YACL,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC;SACtC;QACD,cAAc,EAAE,IAAI;QACpB,eAAe,EAAE,wBAAwB;KAC1C,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAC1B,QAAoC,EACpC,iBAA0B,EAC1B,SAAiB;IAEjB,OAAO;QACL,aAAa,EAAE,8BAA8B;QAC7C,QAAQ;QACR,iBAAiB;QACjB,KAAK,EAAE,IAAI;QACX,mEAAmE;QACnE,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;QAChB,SAAS;KACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"resolver-parts.js","sourceRoot":"","sources":["../../../src/core/mission-context/resolver-parts.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { _clearResolverCache } from "./resolver-parts.js";
1
+ export { _clearResolverCache, _clearSupersessionMemo } from "./resolver-parts.js";
2
2
  export { readDocumentBody } from "./document-read.js";
3
3
  import type { ResolveDeps, ResolveRequest, ResolveResult } from "./resolver-io.js";
4
4
  export type { ResolveDeps, ResolveRequest, ResolveResult, } from "./resolver-io.js";
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAWtD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAmBnF,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,cAAc,EACnB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,aAAa,CAAC,CAmQxB"}
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/core/mission-context/resolver.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOtD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGnF,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,cAAc,EACnB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,aAAa,CAAC,CAkExB"}