@remnic/core 9.69.50 → 9.69.51

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 (271) hide show
  1. package/dist/access-admin-ops-surface.js +30 -30
  2. package/dist/access-audit.d.ts +1 -0
  3. package/dist/access-audit.js +2 -2
  4. package/dist/access-authorization-probe.js +31 -31
  5. package/dist/access-boundary.js +30 -30
  6. package/dist/access-cli.js +84 -83
  7. package/dist/access-cli.js.map +1 -1
  8. package/dist/access-extraction-force-flush.js +30 -30
  9. package/dist/access-http-briefing.js +31 -31
  10. package/dist/access-http-query.js +32 -32
  11. package/dist/access-http.js +50 -50
  12. package/dist/access-identity-continuity-surface.js +30 -30
  13. package/dist/access-lcm-surface.js +30 -30
  14. package/dist/access-mcp-output-schemas.js +1 -1
  15. package/dist/access-mcp.js +41 -41
  16. package/dist/access-namespace-preflight.js +30 -30
  17. package/dist/access-observe-write-category.js +5 -5
  18. package/dist/access-observe-write-surface.js +30 -30
  19. package/dist/access-operations-batch.js +32 -32
  20. package/dist/access-operations.js +39 -39
  21. package/dist/access-recall-concurrency.js +30 -30
  22. package/dist/access-recall-response.js +30 -30
  23. package/dist/access-recall-surface.d.ts +1 -1
  24. package/dist/access-recall-surface.js +30 -30
  25. package/dist/access-schema.js +4 -4
  26. package/dist/access-service.js +30 -30
  27. package/dist/access-surface-catalog.js +32 -32
  28. package/dist/active-recall.js +2 -2
  29. package/dist/briefing.js +5 -5
  30. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  31. package/dist/causal-consolidation.js +6 -6
  32. package/dist/{chunk-BHI5ILU5.js → chunk-25HSEIEM.js} +2 -2
  33. package/dist/{chunk-3RZB7TYL.js → chunk-2EICZYIG.js} +2 -2
  34. package/dist/{chunk-2IVHOQRY.js → chunk-2ERLN25A.js} +2 -2
  35. package/dist/{chunk-OQZYHCWM.js → chunk-2G2CVN2T.js} +27 -26
  36. package/dist/{chunk-OQZYHCWM.js.map → chunk-2G2CVN2T.js.map} +1 -1
  37. package/dist/{chunk-PPNFKQ6D.js → chunk-2SZBCM2S.js} +2 -2
  38. package/dist/{chunk-E73SVGJA.js → chunk-33SX6K3N.js} +2 -2
  39. package/dist/{chunk-D6WX5FEF.js → chunk-3QZRSEAM.js} +2 -2
  40. package/dist/{chunk-LBLXEFWK.js → chunk-4MN27537.js} +1 -1
  41. package/dist/chunk-4MN27537.js.map +1 -0
  42. package/dist/{chunk-LR7KUQ2W.js → chunk-6HCJWCA4.js} +5 -5
  43. package/dist/chunk-6VITOSPL.js +69 -0
  44. package/dist/chunk-6VITOSPL.js.map +1 -0
  45. package/dist/{chunk-EZV43XBD.js → chunk-6Z4OLQUO.js} +2 -2
  46. package/dist/{chunk-JTPAXDSX.js → chunk-6ZMIASYT.js} +2 -2
  47. package/dist/{chunk-UD6W67JM.js → chunk-72AV2H3R.js} +76 -25
  48. package/dist/chunk-72AV2H3R.js.map +1 -0
  49. package/dist/{chunk-DNO6QWCB.js → chunk-7TTOX6NW.js} +2 -2
  50. package/dist/{chunk-OP5IBPHP.js → chunk-A33DLYNY.js} +2 -2
  51. package/dist/{chunk-3MIZ2EKQ.js → chunk-AH3OIMS7.js} +2 -2
  52. package/dist/{chunk-TZ44E732.js → chunk-AIVRD66I.js} +2 -2
  53. package/dist/{chunk-IST6MBYC.js → chunk-BMAYH7F4.js} +473 -329
  54. package/dist/chunk-BMAYH7F4.js.map +1 -0
  55. package/dist/{chunk-XTMABIFW.js → chunk-BULK6DGB.js} +2 -2
  56. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  57. package/dist/{chunk-PMLFPVYJ.js → chunk-CKBA2MWS.js} +2 -2
  58. package/dist/{chunk-TVVEYCNW.js → chunk-DAOMWGO2.js} +2 -2
  59. package/dist/{chunk-E64HBW7M.js → chunk-DLXBMXIB.js} +2 -2
  60. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  61. package/dist/{chunk-MQMZO23A.js → chunk-DQSVGTKB.js} +2 -2
  62. package/dist/{chunk-X6B2QWXW.js → chunk-DX63RFDJ.js} +2 -2
  63. package/dist/{chunk-OLJYDGGP.js → chunk-EBJL6HGR.js} +4 -4
  64. package/dist/{chunk-KOEDSRF5.js → chunk-ETNC6TT6.js} +2 -2
  65. package/dist/{chunk-SRMBMMTK.js → chunk-HEKWNWNL.js} +3 -3
  66. package/dist/{chunk-UI6R2YUB.js → chunk-IGDEKECC.js} +1 -1
  67. package/dist/{chunk-MECKA6G2.js → chunk-ISA5U5AP.js} +2 -2
  68. package/dist/{chunk-ZUNYFDI4.js → chunk-JGPG5UHM.js} +2 -2
  69. package/dist/{chunk-C3PKRFZ4.js → chunk-JXSOB3SA.js} +2 -2
  70. package/dist/{chunk-56C7OO3N.js → chunk-KAPYPTPS.js} +15 -15
  71. package/dist/{chunk-W6V7JN2E.js → chunk-KBHDV7P3.js} +3 -3
  72. package/dist/{chunk-F5V7KRQS.js → chunk-LIAKZGOY.js} +2 -2
  73. package/dist/{chunk-A7GQBJP5.js → chunk-LVFI5LG7.js} +7 -7
  74. package/dist/{chunk-QSP4Y73Q.js → chunk-LX7KIJQF.js} +2 -2
  75. package/dist/{chunk-ECLY4NZA.js → chunk-LZI6FWZW.js} +7 -1
  76. package/dist/chunk-LZI6FWZW.js.map +1 -0
  77. package/dist/{chunk-4PXFLDMJ.js → chunk-MNF6PTNL.js} +2 -2
  78. package/dist/{chunk-BOTSR5S3.js → chunk-MYDA2GA2.js} +2 -2
  79. package/dist/{chunk-4SDO74N2.js → chunk-NROI5XMG.js} +2 -2
  80. package/dist/{chunk-IYHHCSF6.js → chunk-NVW5ISEJ.js} +32 -32
  81. package/dist/{chunk-AL7OLBL7.js → chunk-NXSNFPYI.js} +2 -2
  82. package/dist/{chunk-D7QX26FF.js → chunk-O4JFBEUL.js} +2 -2
  83. package/dist/{chunk-PA5EOTRR.js → chunk-OIK3YL2P.js} +3 -3
  84. package/dist/{chunk-JOP7W24J.js → chunk-PLJ2MQFT.js} +4 -4
  85. package/dist/{chunk-HRCWDO6S.js → chunk-PYTSGD5M.js} +2 -2
  86. package/dist/{chunk-VBRS7Z3O.js → chunk-Q6OC4UUT.js} +2 -2
  87. package/dist/{chunk-4FWNMN5R.js → chunk-QRSC37NC.js} +5 -5
  88. package/dist/{chunk-D2XUSZ24.js → chunk-RIP2AOZW.js} +2 -2
  89. package/dist/{chunk-ZBAQMSEY.js → chunk-SCM4VYJW.js} +2 -2
  90. package/dist/{chunk-6525YIYL.js → chunk-SMI2G3MA.js} +3 -3
  91. package/dist/{chunk-DH536WT2.js → chunk-ST7FDKZT.js} +12 -2
  92. package/dist/chunk-ST7FDKZT.js.map +1 -0
  93. package/dist/{chunk-AYGWJ2UK.js → chunk-SZ75IB2T.js} +2 -2
  94. package/dist/{chunk-42BV46XS.js → chunk-T73ZC7C5.js} +2 -2
  95. package/dist/{chunk-3SI3FFTW.js → chunk-TNFDWJRS.js} +2 -2
  96. package/dist/{chunk-3UQIS2GC.js → chunk-TTFJQ5B5.js} +2 -2
  97. package/dist/{chunk-QZDUNK6V.js → chunk-UP3226JC.js} +6 -6
  98. package/dist/{chunk-IPLYGWQF.js → chunk-VDX2J7OX.js} +6 -6
  99. package/dist/{chunk-QXQCPNKA.js → chunk-VLR4S5GF.js} +7 -7
  100. package/dist/{chunk-ZHXSOMYH.js → chunk-VVX5PZFS.js} +2 -2
  101. package/dist/{chunk-HS75MCQF.js → chunk-WUUGE7QC.js} +4 -4
  102. package/dist/{chunk-MVMNEU65.js → chunk-X25NTN3W.js} +2 -2
  103. package/dist/{chunk-IC3PM3YO.js → chunk-XFXVIXDI.js} +2 -2
  104. package/dist/{chunk-ML5FW2RO.js → chunk-XHDQQ2TT.js} +2 -2
  105. package/dist/{chunk-XUKUMBP3.js → chunk-XRUOO7OT.js} +2 -2
  106. package/dist/{chunk-WVI43D54.js → chunk-YEIKOBOW.js} +15 -2
  107. package/dist/chunk-YEIKOBOW.js.map +1 -0
  108. package/dist/{chunk-AYP2FZFA.js → chunk-YIIW2OH2.js} +2 -2
  109. package/dist/{chunk-FO6IK4IF.js → chunk-YJJMJH6J.js} +8 -8
  110. package/dist/cli.js +68 -68
  111. package/dist/coding/export-okf-codegraph.js +4 -4
  112. package/dist/compounding/engine.js +5 -5
  113. package/dist/config.js +2 -2
  114. package/dist/connectors/codex-materialize-runner.js +5 -5
  115. package/dist/connectors/index.js +5 -5
  116. package/dist/convergence-refresh.js +7 -7
  117. package/dist/corpus-watermark.js +7 -7
  118. package/dist/deep-recall-http-glue.js +5 -5
  119. package/dist/deep-recall.js +2 -2
  120. package/dist/directory-sidecars.d.ts +28 -2
  121. package/dist/directory-sidecars.js +9 -1
  122. package/dist/entity-retrieval.js +5 -5
  123. package/dist/external-wiki-access.js +31 -31
  124. package/dist/extraction.js +5 -5
  125. package/dist/harmonic-retrieval.js +1 -1
  126. package/dist/index.d.ts +2 -0
  127. package/dist/index.js +98 -88
  128. package/dist/lcm/engine.js +3 -3
  129. package/dist/lcm/index.js +8 -8
  130. package/dist/location/index.js +7 -7
  131. package/dist/maintenance/memory-governance.js +5 -5
  132. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +5 -5
  133. package/dist/maintenance/rebuild-memory-projection.js +6 -6
  134. package/dist/memory-browse-operations.js +31 -31
  135. package/dist/memory-browse.js +3 -3
  136. package/dist/namespaces/migrate.js +6 -6
  137. package/dist/namespaces/search.js +3 -3
  138. package/dist/namespaces/storage.js +5 -5
  139. package/dist/operator-doctor-corpus.js +8 -8
  140. package/dist/operator-toolkit.js +15 -15
  141. package/dist/orchestration/maintenance.js +13 -13
  142. package/dist/orchestrator.js +84 -83
  143. package/dist/recall-audit-anomaly.d.ts +1 -0
  144. package/dist/recall-audit.d.ts +4 -0
  145. package/dist/recall-audit.js +1 -1
  146. package/dist/recall-composition-decision.d.ts +41 -0
  147. package/dist/recall-composition-decision.js +17 -0
  148. package/dist/recall-composition-decision.js.map +1 -0
  149. package/dist/recall-explain-renderer.d.ts +1 -0
  150. package/dist/recall-explain-renderer.js +2 -2
  151. package/dist/recall-navigation-operations.js +31 -31
  152. package/dist/recall-navigation-renderer.d.ts +1 -0
  153. package/dist/recall-navigation.d.ts +1 -0
  154. package/dist/recall-navigation.js +30 -30
  155. package/dist/recall-state-view-admission.js +3 -3
  156. package/dist/recall-tag-filter.d.ts +1 -0
  157. package/dist/recall-xray-cli.d.ts +1 -0
  158. package/dist/recall-xray-cli.js +3 -3
  159. package/dist/recall-xray-renderer.d.ts +1 -0
  160. package/dist/recall-xray-renderer.js +2 -2
  161. package/dist/recall-xray.d.ts +9 -0
  162. package/dist/recall-xray.js +1 -1
  163. package/dist/resume-bundles.js +3 -3
  164. package/dist/search/factory.js +2 -2
  165. package/dist/search/index.js +4 -4
  166. package/dist/semantic-consolidation.js +6 -6
  167. package/dist/semantic-rule-promotion.js +5 -5
  168. package/dist/semantic-rule-verifier.js +5 -5
  169. package/dist/source-agent-qualifier.js +5 -5
  170. package/dist/standup/build.js +5 -5
  171. package/dist/storage.js +4 -4
  172. package/dist/support-passport/index.js +33 -33
  173. package/dist/transfer/autodetect.js +1 -1
  174. package/dist/transfer/backup.js +2 -2
  175. package/dist/transfer/capsule-export.js +3 -3
  176. package/dist/transfer/capsule-import.js +2 -2
  177. package/dist/transfer/export-okf.js +5 -5
  178. package/dist/verified-recall.js +5 -5
  179. package/dist/who-knows-cli.js +6 -6
  180. package/dist/who-knows.js +5 -5
  181. package/package.json +2 -2
  182. package/src/access-mcp-output-schemas.ts +14 -1
  183. package/src/access-recall-response.ts +3 -0
  184. package/src/directory-sidecars.test.ts +119 -0
  185. package/src/directory-sidecars.ts +110 -25
  186. package/src/experience/session-experience-recall.test.ts +228 -0
  187. package/src/experience/session-experience-recall.ts +60 -0
  188. package/src/index.ts +1 -0
  189. package/src/orchestration/recall-entry.ts +16 -2
  190. package/src/orchestration/recall-internal.ts +21 -18
  191. package/src/orchestration/recall-recognition-search.test.ts +290 -0
  192. package/src/orchestration/recall-recognition-search.ts +160 -0
  193. package/src/procedural/procedure-recall.ts +14 -3
  194. package/src/recall-audit.test.ts +34 -0
  195. package/src/recall-audit.ts +4 -0
  196. package/src/recall-composition-decision.test.ts +134 -0
  197. package/src/recall-composition-decision.ts +113 -0
  198. package/src/recall-xray-renderer.test.ts +17 -0
  199. package/src/recall-xray-renderer.ts +10 -0
  200. package/src/recall-xray.test.ts +28 -0
  201. package/src/recall-xray.ts +15 -0
  202. package/src/testing/subjects/recall-recognition-tier.test.ts +106 -0
  203. package/dist/chunk-DH536WT2.js.map +0 -1
  204. package/dist/chunk-ECLY4NZA.js.map +0 -1
  205. package/dist/chunk-IST6MBYC.js.map +0 -1
  206. package/dist/chunk-LBLXEFWK.js.map +0 -1
  207. package/dist/chunk-UD6W67JM.js.map +0 -1
  208. package/dist/chunk-WVI43D54.js.map +0 -1
  209. /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
  210. /package/dist/{chunk-BHI5ILU5.js.map → chunk-25HSEIEM.js.map} +0 -0
  211. /package/dist/{chunk-3RZB7TYL.js.map → chunk-2EICZYIG.js.map} +0 -0
  212. /package/dist/{chunk-2IVHOQRY.js.map → chunk-2ERLN25A.js.map} +0 -0
  213. /package/dist/{chunk-PPNFKQ6D.js.map → chunk-2SZBCM2S.js.map} +0 -0
  214. /package/dist/{chunk-E73SVGJA.js.map → chunk-33SX6K3N.js.map} +0 -0
  215. /package/dist/{chunk-D6WX5FEF.js.map → chunk-3QZRSEAM.js.map} +0 -0
  216. /package/dist/{chunk-LR7KUQ2W.js.map → chunk-6HCJWCA4.js.map} +0 -0
  217. /package/dist/{chunk-EZV43XBD.js.map → chunk-6Z4OLQUO.js.map} +0 -0
  218. /package/dist/{chunk-JTPAXDSX.js.map → chunk-6ZMIASYT.js.map} +0 -0
  219. /package/dist/{chunk-DNO6QWCB.js.map → chunk-7TTOX6NW.js.map} +0 -0
  220. /package/dist/{chunk-OP5IBPHP.js.map → chunk-A33DLYNY.js.map} +0 -0
  221. /package/dist/{chunk-3MIZ2EKQ.js.map → chunk-AH3OIMS7.js.map} +0 -0
  222. /package/dist/{chunk-TZ44E732.js.map → chunk-AIVRD66I.js.map} +0 -0
  223. /package/dist/{chunk-XTMABIFW.js.map → chunk-BULK6DGB.js.map} +0 -0
  224. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  225. /package/dist/{chunk-PMLFPVYJ.js.map → chunk-CKBA2MWS.js.map} +0 -0
  226. /package/dist/{chunk-TVVEYCNW.js.map → chunk-DAOMWGO2.js.map} +0 -0
  227. /package/dist/{chunk-E64HBW7M.js.map → chunk-DLXBMXIB.js.map} +0 -0
  228. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  229. /package/dist/{chunk-MQMZO23A.js.map → chunk-DQSVGTKB.js.map} +0 -0
  230. /package/dist/{chunk-X6B2QWXW.js.map → chunk-DX63RFDJ.js.map} +0 -0
  231. /package/dist/{chunk-OLJYDGGP.js.map → chunk-EBJL6HGR.js.map} +0 -0
  232. /package/dist/{chunk-KOEDSRF5.js.map → chunk-ETNC6TT6.js.map} +0 -0
  233. /package/dist/{chunk-SRMBMMTK.js.map → chunk-HEKWNWNL.js.map} +0 -0
  234. /package/dist/{chunk-UI6R2YUB.js.map → chunk-IGDEKECC.js.map} +0 -0
  235. /package/dist/{chunk-MECKA6G2.js.map → chunk-ISA5U5AP.js.map} +0 -0
  236. /package/dist/{chunk-ZUNYFDI4.js.map → chunk-JGPG5UHM.js.map} +0 -0
  237. /package/dist/{chunk-C3PKRFZ4.js.map → chunk-JXSOB3SA.js.map} +0 -0
  238. /package/dist/{chunk-56C7OO3N.js.map → chunk-KAPYPTPS.js.map} +0 -0
  239. /package/dist/{chunk-W6V7JN2E.js.map → chunk-KBHDV7P3.js.map} +0 -0
  240. /package/dist/{chunk-F5V7KRQS.js.map → chunk-LIAKZGOY.js.map} +0 -0
  241. /package/dist/{chunk-A7GQBJP5.js.map → chunk-LVFI5LG7.js.map} +0 -0
  242. /package/dist/{chunk-QSP4Y73Q.js.map → chunk-LX7KIJQF.js.map} +0 -0
  243. /package/dist/{chunk-4PXFLDMJ.js.map → chunk-MNF6PTNL.js.map} +0 -0
  244. /package/dist/{chunk-BOTSR5S3.js.map → chunk-MYDA2GA2.js.map} +0 -0
  245. /package/dist/{chunk-4SDO74N2.js.map → chunk-NROI5XMG.js.map} +0 -0
  246. /package/dist/{chunk-IYHHCSF6.js.map → chunk-NVW5ISEJ.js.map} +0 -0
  247. /package/dist/{chunk-AL7OLBL7.js.map → chunk-NXSNFPYI.js.map} +0 -0
  248. /package/dist/{chunk-D7QX26FF.js.map → chunk-O4JFBEUL.js.map} +0 -0
  249. /package/dist/{chunk-PA5EOTRR.js.map → chunk-OIK3YL2P.js.map} +0 -0
  250. /package/dist/{chunk-JOP7W24J.js.map → chunk-PLJ2MQFT.js.map} +0 -0
  251. /package/dist/{chunk-HRCWDO6S.js.map → chunk-PYTSGD5M.js.map} +0 -0
  252. /package/dist/{chunk-VBRS7Z3O.js.map → chunk-Q6OC4UUT.js.map} +0 -0
  253. /package/dist/{chunk-4FWNMN5R.js.map → chunk-QRSC37NC.js.map} +0 -0
  254. /package/dist/{chunk-D2XUSZ24.js.map → chunk-RIP2AOZW.js.map} +0 -0
  255. /package/dist/{chunk-ZBAQMSEY.js.map → chunk-SCM4VYJW.js.map} +0 -0
  256. /package/dist/{chunk-6525YIYL.js.map → chunk-SMI2G3MA.js.map} +0 -0
  257. /package/dist/{chunk-AYGWJ2UK.js.map → chunk-SZ75IB2T.js.map} +0 -0
  258. /package/dist/{chunk-42BV46XS.js.map → chunk-T73ZC7C5.js.map} +0 -0
  259. /package/dist/{chunk-3SI3FFTW.js.map → chunk-TNFDWJRS.js.map} +0 -0
  260. /package/dist/{chunk-3UQIS2GC.js.map → chunk-TTFJQ5B5.js.map} +0 -0
  261. /package/dist/{chunk-QZDUNK6V.js.map → chunk-UP3226JC.js.map} +0 -0
  262. /package/dist/{chunk-IPLYGWQF.js.map → chunk-VDX2J7OX.js.map} +0 -0
  263. /package/dist/{chunk-QXQCPNKA.js.map → chunk-VLR4S5GF.js.map} +0 -0
  264. /package/dist/{chunk-ZHXSOMYH.js.map → chunk-VVX5PZFS.js.map} +0 -0
  265. /package/dist/{chunk-HS75MCQF.js.map → chunk-WUUGE7QC.js.map} +0 -0
  266. /package/dist/{chunk-MVMNEU65.js.map → chunk-X25NTN3W.js.map} +0 -0
  267. /package/dist/{chunk-IC3PM3YO.js.map → chunk-XFXVIXDI.js.map} +0 -0
  268. /package/dist/{chunk-ML5FW2RO.js.map → chunk-XHDQQ2TT.js.map} +0 -0
  269. /package/dist/{chunk-XUKUMBP3.js.map → chunk-XRUOO7OT.js.map} +0 -0
  270. /package/dist/{chunk-AYP2FZFA.js.map → chunk-YIIW2OH2.js.map} +0 -0
  271. /package/dist/{chunk-FO6IK4IF.js.map → chunk-YJJMJH6J.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  SUPPORT_PASSPORT_MODEL_RESULT_PATH,
5
5
  SupportPassportModelBridge,
6
6
  parseSupportPassportModelJob
7
- } from "../chunk-4PXFLDMJ.js";
7
+ } from "../chunk-MNF6PTNL.js";
8
8
  import {
9
9
  DEFAULT_SUPPORT_PASSPORT_CONFIG,
10
10
  parseSupportPassportConfig
@@ -14,8 +14,8 @@ import {
14
14
  buildSupportPassportPublicRequestHandler,
15
15
  composeSupportPassportExternalRequestHandlers,
16
16
  normalizeSupportPassportNetworkAddress
17
- } from "../chunk-X6B2QWXW.js";
18
- import "../chunk-3RZB7TYL.js";
17
+ } from "../chunk-DX63RFDJ.js";
18
+ import "../chunk-2EICZYIG.js";
19
19
  import {
20
20
  SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
21
21
  SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES,
@@ -56,19 +56,19 @@ import {
56
56
  notifySupportPassportCommitted,
57
57
  resolveSupportPassportModelRoutePlan,
58
58
  syncDirectoryForDurability
59
- } from "../chunk-OQZYHCWM.js";
59
+ } from "../chunk-2G2CVN2T.js";
60
60
  import "../chunk-W4F3C7N7.js";
61
61
  import "../chunk-MPC7TYTZ.js";
62
- import "../chunk-ZHXSOMYH.js";
62
+ import "../chunk-VVX5PZFS.js";
63
63
  import "../chunk-IFBSZGW3.js";
64
64
  import "../chunk-QKCXRS5A.js";
65
65
  import "../chunk-C3QXITIP.js";
66
66
  import "../chunk-VQ7B2Q6M.js";
67
- import "../chunk-KOEDSRF5.js";
67
+ import "../chunk-ETNC6TT6.js";
68
68
  import "../chunk-PJSK6OJM.js";
69
+ import "../chunk-ROBHL3GL.js";
69
70
  import "../chunk-GNVZQ5JN.js";
70
71
  import "../chunk-YN2UN7N3.js";
71
- import "../chunk-ROBHL3GL.js";
72
72
  import "../chunk-BXOPUJ3W.js";
73
73
  import "../chunk-6DNMUYEE.js";
74
74
  import "../chunk-P5FPO2BR.js";
@@ -82,21 +82,21 @@ import "../chunk-VYDGHJIN.js";
82
82
  import "../chunk-UVEBBXB5.js";
83
83
  import "../chunk-7O5EW7KX.js";
84
84
  import "../chunk-H7XKCNR6.js";
85
- import "../chunk-DH536WT2.js";
85
+ import "../chunk-ST7FDKZT.js";
86
86
  import "../chunk-SOBJ6NEY.js";
87
- import "../chunk-ECLY4NZA.js";
88
- import "../chunk-PMLFPVYJ.js";
87
+ import "../chunk-LZI6FWZW.js";
88
+ import "../chunk-CKBA2MWS.js";
89
89
  import "../chunk-CVILPI77.js";
90
90
  import "../chunk-6WHJ2EAB.js";
91
91
  import "../chunk-AQEJKOKI.js";
92
92
  import "../chunk-HM7RHKS4.js";
93
93
  import "../chunk-UD7UNYRD.js";
94
94
  import "../chunk-IISBCCWR.js";
95
- import "../chunk-E64HBW7M.js";
96
- import "../chunk-2IVHOQRY.js";
95
+ import "../chunk-DLXBMXIB.js";
96
+ import "../chunk-2ERLN25A.js";
97
97
  import "../chunk-2YA5N2BY.js";
98
98
  import "../chunk-HWLIMQE2.js";
99
- import "../chunk-UI6R2YUB.js";
99
+ import "../chunk-IGDEKECC.js";
100
100
  import "../chunk-EI6V5UXY.js";
101
101
  import "../chunk-CEO4DONG.js";
102
102
  import "../chunk-SGUDMW2K.js";
@@ -110,21 +110,21 @@ import "../chunk-LTHVM4XN.js";
110
110
  import "../chunk-C37ZRXX7.js";
111
111
  import "../chunk-B4EGAHHS.js";
112
112
  import "../chunk-IHOXK2I6.js";
113
- import "../chunk-UD6W67JM.js";
113
+ import "../chunk-72AV2H3R.js";
114
114
  import "../chunk-NAFPHFDM.js";
115
115
  import "../chunk-RF2SMMPP.js";
116
116
  import "../chunk-AJBWVDRV.js";
117
- import "../chunk-HS75MCQF.js";
117
+ import "../chunk-WUUGE7QC.js";
118
+ import "../chunk-HRATODNO.js";
118
119
  import "../chunk-WTWQA7BB.js";
119
120
  import "../chunk-VZIAVM72.js";
120
- import "../chunk-HRATODNO.js";
121
- import "../chunk-D7QX26FF.js";
122
- import "../chunk-ZUNYFDI4.js";
123
- import "../chunk-6525YIYL.js";
124
- import "../chunk-42BV46XS.js";
121
+ import "../chunk-O4JFBEUL.js";
122
+ import "../chunk-JGPG5UHM.js";
123
+ import "../chunk-SMI2G3MA.js";
124
+ import "../chunk-T73ZC7C5.js";
125
125
  import "../chunk-UFGFMWAD.js";
126
126
  import "../chunk-BMWN7B3Y.js";
127
- import "../chunk-MECKA6G2.js";
127
+ import "../chunk-ISA5U5AP.js";
128
128
  import "../chunk-3UXOZBHV.js";
129
129
  import "../chunk-PIWFNPQT.js";
130
130
  import "../chunk-5FAGCOZD.js";
@@ -140,19 +140,19 @@ import "../chunk-K2XUWZBM.js";
140
140
  import "../chunk-OD4FM2U7.js";
141
141
  import "../chunk-ZY2MNJR6.js";
142
142
  import "../chunk-TBBDFYXW.js";
143
- import "../chunk-XUKUMBP3.js";
144
- import "../chunk-D2XUSZ24.js";
143
+ import "../chunk-XRUOO7OT.js";
144
+ import "../chunk-RIP2AOZW.js";
145
145
  import "../chunk-UHVXE24Y.js";
146
146
  import "../chunk-46WM6JX2.js";
147
147
  import "../chunk-D5F7TKMH.js";
148
- import "../chunk-TZ44E732.js";
149
- import "../chunk-JOP7W24J.js";
148
+ import "../chunk-AIVRD66I.js";
149
+ import "../chunk-PLJ2MQFT.js";
150
+ import "../chunk-KVO2BTA4.js";
150
151
  import "../chunk-CYEPCZN5.js";
151
152
  import "../chunk-G6NQ3L4T.js";
152
153
  import "../chunk-WPGR3RW4.js";
153
154
  import "../chunk-6KTXE6A3.js";
154
155
  import "../chunk-D7MAYFQP.js";
155
- import "../chunk-KVO2BTA4.js";
156
156
  import "../chunk-4O6WRBGE.js";
157
157
  import "../chunk-GUMZC2BO.js";
158
158
  import "../chunk-TFA6HPOA.js";
@@ -224,17 +224,17 @@ import "../chunk-RGMVMVMF.js";
224
224
  import "../chunk-3QL24R5Y.js";
225
225
  import "../chunk-SYOIVK7K.js";
226
226
  import "../chunk-PQVCH2AE.js";
227
- import "../chunk-F5V7KRQS.js";
227
+ import "../chunk-LIAKZGOY.js";
228
228
  import "../chunk-UDAUULK2.js";
229
229
  import "../chunk-GDYU6VF4.js";
230
230
  import "../chunk-BT7NVCML.js";
231
231
  import "../chunk-353C5UNV.js";
232
232
  import "../chunk-VYCOJKSX.js";
233
- import "../chunk-AYP2FZFA.js";
234
- import "../chunk-IPLYGWQF.js";
235
- import "../chunk-J4EB7DNW.js";
233
+ import "../chunk-YIIW2OH2.js";
234
+ import "../chunk-VDX2J7OX.js";
236
235
  import "../chunk-WEHSQBFR.js";
237
- import "../chunk-X7Y7WX73.js";
236
+ import "../chunk-DQEMWVMT.js";
237
+ import "../chunk-J4EB7DNW.js";
238
238
  import "../chunk-BJMBJZ2Y.js";
239
239
  import "../chunk-UKJAGEXH.js";
240
240
  import "../chunk-FP2373TW.js";
@@ -321,9 +321,9 @@ import "../chunk-46EST7JO.js";
321
321
  import "../chunk-G73MCJKL.js";
322
322
  import "../chunk-A2IYSXDQ.js";
323
323
  import "../chunk-B6O2YLUR.js";
324
- import "../chunk-TVVEYCNW.js";
324
+ import "../chunk-DAOMWGO2.js";
325
325
  import "../chunk-RFYAYKTD.js";
326
- import "../chunk-LBLXEFWK.js";
326
+ import "../chunk-4MN27537.js";
327
327
  import "../chunk-YRLHEEQT.js";
328
328
  import "../chunk-FF4KLI5W.js";
329
329
  import "../chunk-JN72EPOE.js";
@@ -4,8 +4,8 @@ import {
4
4
  import "../chunk-2DL3OFLD.js";
5
5
  import "../chunk-G4IAEX6D.js";
6
6
  import "../chunk-765K3SAT.js";
7
- import "../chunk-J4EB7DNW.js";
8
7
  import "../chunk-WEHSQBFR.js";
8
+ import "../chunk-J4EB7DNW.js";
9
9
  import "../chunk-UI3NYK34.js";
10
10
  import "../chunk-GCGJW34D.js";
11
11
  import "../chunk-PZ5AY32C.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  backupMemoryDir
3
- } from "../chunk-2NLLXCJG.js";
3
+ } from "../chunk-BXLOS5AJ.js";
4
4
  import "../chunk-765K3SAT.js";
5
+ import "../chunk-DQEMWVMT.js";
5
6
  import "../chunk-J4EB7DNW.js";
6
- import "../chunk-X7Y7WX73.js";
7
7
  import "../chunk-BJMBJZ2Y.js";
8
8
  import "../chunk-UKJAGEXH.js";
9
9
  import "../chunk-FP2373TW.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  exportCapsule,
3
3
  isValidCapsuleSince
4
- } from "../chunk-IPLYGWQF.js";
5
- import "../chunk-J4EB7DNW.js";
4
+ } from "../chunk-VDX2J7OX.js";
6
5
  import "../chunk-WEHSQBFR.js";
7
- import "../chunk-X7Y7WX73.js";
6
+ import "../chunk-DQEMWVMT.js";
7
+ import "../chunk-J4EB7DNW.js";
8
8
  import "../chunk-BJMBJZ2Y.js";
9
9
  import "../chunk-UKJAGEXH.js";
10
10
  import "../chunk-FP2373TW.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  importCapsule
3
- } from "../chunk-ZHXSOMYH.js";
3
+ } from "../chunk-VVX5PZFS.js";
4
4
  import "../chunk-JPKK466T.js";
5
5
  import "../chunk-XCB6QDL6.js";
6
6
  import "../chunk-RBOJCG4T.js";
@@ -10,7 +10,7 @@ import "../chunk-6CIAGZ6X.js";
10
10
  import "../chunk-C64XATK7.js";
11
11
  import "../chunk-42JKGUFJ.js";
12
12
  import "../chunk-WEHSQBFR.js";
13
- import "../chunk-X7Y7WX73.js";
13
+ import "../chunk-DQEMWVMT.js";
14
14
  import "../chunk-BJMBJZ2Y.js";
15
15
  import "../chunk-UKJAGEXH.js";
16
16
  import "../chunk-FP2373TW.js";
@@ -4,24 +4,24 @@ import {
4
4
  exportOkfBundle,
5
5
  firstHeading,
6
6
  parseIncludeStatus
7
- } from "../chunk-BHI5ILU5.js";
7
+ } from "../chunk-25HSEIEM.js";
8
8
  import {
9
9
  OKF_EXPORT_VERSION
10
10
  } from "../chunk-UJX4I26O.js";
11
11
  import "../chunk-D24OXEPB.js";
12
12
  import "../chunk-3UXOZBHV.js";
13
- import "../chunk-D2XUSZ24.js";
13
+ import "../chunk-RIP2AOZW.js";
14
14
  import "../chunk-UHVXE24Y.js";
15
15
  import "../chunk-46WM6JX2.js";
16
16
  import "../chunk-D5F7TKMH.js";
17
- import "../chunk-TZ44E732.js";
18
- import "../chunk-JOP7W24J.js";
17
+ import "../chunk-AIVRD66I.js";
18
+ import "../chunk-PLJ2MQFT.js";
19
+ import "../chunk-KVO2BTA4.js";
19
20
  import "../chunk-CYEPCZN5.js";
20
21
  import "../chunk-G6NQ3L4T.js";
21
22
  import "../chunk-WPGR3RW4.js";
22
23
  import "../chunk-6KTXE6A3.js";
23
24
  import "../chunk-D7MAYFQP.js";
24
- import "../chunk-KVO2BTA4.js";
25
25
  import "../chunk-4O6WRBGE.js";
26
26
  import "../chunk-GUMZC2BO.js";
27
27
  import "../chunk-TFA6HPOA.js";
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  compareVerifiedEpisodeResults,
3
3
  searchVerifiedEpisodes
4
- } from "./chunk-D6WX5FEF.js";
4
+ } from "./chunk-3QZRSEAM.js";
5
5
  import "./chunk-B7RWBZXW.js";
6
- import "./chunk-D2XUSZ24.js";
6
+ import "./chunk-RIP2AOZW.js";
7
7
  import "./chunk-UHVXE24Y.js";
8
8
  import "./chunk-46WM6JX2.js";
9
9
  import "./chunk-D5F7TKMH.js";
10
- import "./chunk-TZ44E732.js";
11
- import "./chunk-JOP7W24J.js";
10
+ import "./chunk-AIVRD66I.js";
11
+ import "./chunk-PLJ2MQFT.js";
12
+ import "./chunk-KVO2BTA4.js";
12
13
  import "./chunk-CYEPCZN5.js";
13
14
  import "./chunk-G6NQ3L4T.js";
14
15
  import "./chunk-WPGR3RW4.js";
15
16
  import "./chunk-6KTXE6A3.js";
16
17
  import "./chunk-D7MAYFQP.js";
17
- import "./chunk-KVO2BTA4.js";
18
18
  import "./chunk-4O6WRBGE.js";
19
19
  import "./chunk-GUMZC2BO.js";
20
20
  import "./chunk-TFA6HPOA.js";
@@ -4,20 +4,20 @@ import {
4
4
  renderWhoKnows,
5
5
  renderWhoKnowsJson,
6
6
  renderWhoKnowsText
7
- } from "./chunk-DNO6QWCB.js";
8
- import "./chunk-KOEDSRF5.js";
9
- import "./chunk-D2XUSZ24.js";
7
+ } from "./chunk-7TTOX6NW.js";
8
+ import "./chunk-ETNC6TT6.js";
9
+ import "./chunk-RIP2AOZW.js";
10
10
  import "./chunk-UHVXE24Y.js";
11
11
  import "./chunk-46WM6JX2.js";
12
12
  import "./chunk-D5F7TKMH.js";
13
- import "./chunk-TZ44E732.js";
14
- import "./chunk-JOP7W24J.js";
13
+ import "./chunk-AIVRD66I.js";
14
+ import "./chunk-PLJ2MQFT.js";
15
+ import "./chunk-KVO2BTA4.js";
15
16
  import "./chunk-CYEPCZN5.js";
16
17
  import "./chunk-G6NQ3L4T.js";
17
18
  import "./chunk-WPGR3RW4.js";
18
19
  import "./chunk-6KTXE6A3.js";
19
20
  import "./chunk-D7MAYFQP.js";
20
- import "./chunk-KVO2BTA4.js";
21
21
  import "./chunk-4O6WRBGE.js";
22
22
  import "./chunk-GUMZC2BO.js";
23
23
  import "./chunk-TFA6HPOA.js";
package/dist/who-knows.js CHANGED
@@ -9,19 +9,19 @@ import {
9
9
  loadWhoKnowsEntities,
10
10
  tokenizeTopic,
11
11
  validateWhoKnowsInput
12
- } from "./chunk-KOEDSRF5.js";
13
- import "./chunk-D2XUSZ24.js";
12
+ } from "./chunk-ETNC6TT6.js";
13
+ import "./chunk-RIP2AOZW.js";
14
14
  import "./chunk-UHVXE24Y.js";
15
15
  import "./chunk-46WM6JX2.js";
16
16
  import "./chunk-D5F7TKMH.js";
17
- import "./chunk-TZ44E732.js";
18
- import "./chunk-JOP7W24J.js";
17
+ import "./chunk-AIVRD66I.js";
18
+ import "./chunk-PLJ2MQFT.js";
19
+ import "./chunk-KVO2BTA4.js";
19
20
  import "./chunk-CYEPCZN5.js";
20
21
  import "./chunk-G6NQ3L4T.js";
21
22
  import "./chunk-WPGR3RW4.js";
22
23
  import "./chunk-6KTXE6A3.js";
23
24
  import "./chunk-D7MAYFQP.js";
24
- import "./chunk-KVO2BTA4.js";
25
25
  import "./chunk-4O6WRBGE.js";
26
26
  import "./chunk-GUMZC2BO.js";
27
27
  import "./chunk-TFA6HPOA.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.69.50",
3
+ "version": "9.69.51",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -3307,7 +3307,7 @@
3307
3307
  "core"
3308
3308
  ],
3309
3309
  "peerDependencies": {
3310
- "@remnic/coding-graph": "^9.69.50"
3310
+ "@remnic/coding-graph": "^9.69.51"
3311
3311
  },
3312
3312
  "peerDependenciesMeta": {
3313
3313
  "@remnic/coding-graph": {
@@ -83,7 +83,20 @@ const TOOL_OUTPUT_SCHEMAS: Readonly<Record<string, Record<string, unknown>>> = {
83
83
  query: T_STRING,
84
84
  namespace: T_STRING,
85
85
  context: T_STRING,
86
- contextComposition: objectSchema({ context: T_STRING, footer: T_STRING }),
86
+ contextComposition: objectSchema({
87
+ context: T_STRING,
88
+ footer: T_STRING,
89
+ degradation: objectSchema({
90
+ state: T_STRING,
91
+ reason: T_STRING,
92
+ detail: T_STRING,
93
+ budget: objectSchema({
94
+ contextBudget: T_NUMBER,
95
+ fullChars: T_NUMBER,
96
+ deliveredChars: T_NUMBER,
97
+ }),
98
+ }),
99
+ }),
87
100
  count: T_NUMBER,
88
101
  memoryIds: T_ARRAY,
89
102
  results: T_ARRAY,
@@ -276,6 +276,9 @@ export async function assembleRecallResponse(
276
276
  plannerMode: snapshot?.plannerMode ?? mode,
277
277
  requestedMode: mode,
278
278
  fallbackUsed: snapshot?.fallbackUsed ?? false,
279
+ ...(effectiveComposition.degradation
280
+ ? { degradation: effectiveComposition.degradation }
281
+ : {}),
279
282
  };
280
283
  const auditResult = await deps.auditAdapter.record(
281
284
  resolvedAgentId || "__anonymous__",
@@ -10,6 +10,8 @@ import {
10
10
  DIRECTORY_SIDECAR_MARKER,
11
11
  findDirectorySidecarsForQuery,
12
12
  loadDirectorySidecar,
13
+ parseDirectorySidecarsEnabled,
14
+ refreshDirectorySidecarsAfterWrite,
13
15
  runDirectorySidecarMaintenance,
14
16
  } from "./directory-sidecars.js";
15
17
  import {
@@ -266,3 +268,120 @@ test("user-authored sidecar-named files are never clobbered or removed", async (
266
268
  rmSync(root, { recursive: true, force: true });
267
269
  }
268
270
  });
271
+
272
+ test("parseDirectorySidecarsEnabled defaults off and rejects nothing silently", () => {
273
+ assert.equal(parseDirectorySidecarsEnabled(undefined), false);
274
+ assert.equal(parseDirectorySidecarsEnabled(null), false);
275
+ assert.equal(parseDirectorySidecarsEnabled(false), false);
276
+ assert.equal(parseDirectorySidecarsEnabled("false"), false);
277
+ assert.equal(parseDirectorySidecarsEnabled(0), false);
278
+ assert.equal(parseDirectorySidecarsEnabled(true), true);
279
+ assert.equal(parseDirectorySidecarsEnabled("true"), true);
280
+ assert.equal(parseDirectorySidecarsEnabled(1), true);
281
+ });
282
+
283
+ test("write-path refresh is a zero-write no-op when disabled", async () => {
284
+ const root = store();
285
+ try {
286
+ const written = await writeMemory(
287
+ root,
288
+ "facts/2026-01-02/fact-1.md",
289
+ "North dome shutter cycle completed.",
290
+ );
291
+ const report = await refreshDirectorySidecarsAfterWrite(root, written, false);
292
+ assert.deepEqual(report.written, []);
293
+ assert.deepEqual(report.removed, []);
294
+ assert.equal(await exists(path.join(root, "facts", "2026-01-02", DIRECTORY_SIDECAR_BASENAME)), false);
295
+ assert.equal(await exists(path.join(root, "facts", DIRECTORY_SIDECAR_BASENAME)), false);
296
+ } finally {
297
+ rmSync(root, { recursive: true, force: true });
298
+ }
299
+ });
300
+
301
+ test("write-path refresh populates the day sidecar and the parent abstract", async () => {
302
+ const root = store();
303
+ try {
304
+ const written = await writeMemory(
305
+ root,
306
+ "facts/2026-01-02/fact-1.md",
307
+ "Telescope calibration log for the north dome.",
308
+ );
309
+ const report = await refreshDirectorySidecarsAfterWrite(root, written, true);
310
+ const daySidecar = path.join(root, "facts", "2026-01-02", DIRECTORY_SIDECAR_BASENAME);
311
+ const parentSidecar = path.join(root, "facts", DIRECTORY_SIDECAR_BASENAME);
312
+ assert.ok(report.written.includes(daySidecar), "day sidecar written on the write path");
313
+ assert.ok(report.written.includes(parentSidecar), "parent sidecar written after the child");
314
+ assert.ok(
315
+ report.written.indexOf(daySidecar) < report.written.indexOf(parentSidecar),
316
+ "child sidecar written before parent (bottom-up)",
317
+ );
318
+
319
+ const day = await loadDirectorySidecar(path.join(root, "facts", "2026-01-02"), { refresh: false });
320
+ assert.equal(day?.fresh, true, "write-path reuse of fingerprints leaves the sidecar fresh");
321
+ assert.match(day?.overview ?? "", /Telescope calibration/);
322
+
323
+ const parent = await readFile(parentSidecar, "utf8");
324
+ assert.match(parent, /2026-01-02/);
325
+ assert.ok(parent.startsWith(DIRECTORY_SIDECAR_MARKER));
326
+ } finally {
327
+ rmSync(root, { recursive: true, force: true });
328
+ }
329
+ });
330
+
331
+ test("write-path refresh after delete updates the parent and prunes an emptied directory", async () => {
332
+ const root = store();
333
+ try {
334
+ const fact1 = await writeMemory(root, "facts/2026-01-02/fact-1.md", "First observation run.");
335
+ await writeMemory(root, "facts/2026-01-02/fact-2.md", "Second observation run.");
336
+ await refreshDirectorySidecarsAfterWrite(root, fact1, true);
337
+
338
+ rmSync(fact1);
339
+ const report = await refreshDirectorySidecarsAfterWrite(root, fact1, true);
340
+ const dayDir = path.join(root, "facts", "2026-01-02");
341
+ const daySidecar = await readFile(path.join(dayDir, DIRECTORY_SIDECAR_BASENAME), "utf8");
342
+ assert.doesNotMatch(daySidecar, /First observation/, "deleted child leaves the sidecar");
343
+ assert.match(daySidecar, /Second observation/);
344
+ assert.ok(report.written.some((p) => p === path.join(dayDir, DIRECTORY_SIDECAR_BASENAME)));
345
+ assert.ok(report.written.some((p) => p === path.join(root, "facts", DIRECTORY_SIDECAR_BASENAME)));
346
+
347
+ rmSync(path.join(dayDir, "fact-2.md"));
348
+ const pruned = await refreshDirectorySidecarsAfterWrite(root, path.join(dayDir, "fact-2.md"), true);
349
+ assert.ok(pruned.removed.some((p) => p === path.join(dayDir, DIRECTORY_SIDECAR_BASENAME)));
350
+ assert.equal(await exists(path.join(dayDir, DIRECTORY_SIDECAR_BASENAME)), false);
351
+ } finally {
352
+ rmSync(root, { recursive: true, force: true });
353
+ }
354
+ });
355
+
356
+ test("write-path refresh stays inside the changed namespace and skips unrelated categories", async () => {
357
+ const root = store();
358
+ try {
359
+ const alpha = await writeMemory(
360
+ root,
361
+ "namespaces/alpha/facts/2026-05-01/a-1.md",
362
+ "Alpha wing telescope mirror audit.",
363
+ );
364
+ await writeMemory(root, "namespaces/beta/facts/2026-05-01/b-1.md", "Beta wing spectrograph dark frames.");
365
+ await writeMemory(root, "entities/obs-1.md", "The north dome observer rotation schedule.");
366
+
367
+ const report = await refreshDirectorySidecarsAfterWrite(root, alpha, true);
368
+ assert.ok(
369
+ report.written.every((p) => p.includes(`${path.sep}namespaces${path.sep}alpha${path.sep}`)),
370
+ "write-path only touches the changed namespace ancestry",
371
+ );
372
+ assert.equal(
373
+ await exists(path.join(root, "namespaces", "beta", "facts", "2026-05-01", DIRECTORY_SIDECAR_BASENAME)),
374
+ false,
375
+ );
376
+ assert.equal(await exists(path.join(root, "entities", DIRECTORY_SIDECAR_BASENAME)), false);
377
+
378
+ const scoped = await loadDirectorySidecar(
379
+ path.join(root, "namespaces", "alpha", "facts", "2026-05-01"),
380
+ { refresh: false },
381
+ );
382
+ assert.equal(scoped?.fresh, true);
383
+ assert.match(scoped?.overview ?? "", /telescope mirror/);
384
+ } finally {
385
+ rmSync(root, { recursive: true, force: true });
386
+ }
387
+ });