@ttsc/unplugin 0.34.1 → 0.34.3

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 (262) hide show
  1. package/README.md +1 -0
  2. package/lib/api.js +4 -0
  3. package/lib/api.js.map +1 -1
  4. package/lib/api.mjs +2 -0
  5. package/lib/api.mjs.map +1 -1
  6. package/lib/core/bridge/TtscProjectRecord.d.cts +4 -1
  7. package/lib/core/bridge/TtscProjectRecord.d.mts +4 -1
  8. package/lib/core/bridge/TtscProjectRecord.d.ts +4 -1
  9. package/lib/core/bridge/projectRecordArgumentsMatch.d.cts +18 -0
  10. package/lib/core/bridge/projectRecordArgumentsMatch.d.mts +18 -0
  11. package/lib/core/bridge/projectRecordArgumentsMatch.d.ts +18 -0
  12. package/lib/core/bridge/projectRecordArgumentsMatch.js +36 -0
  13. package/lib/core/bridge/projectRecordArgumentsMatch.js.map +1 -0
  14. package/lib/core/bridge/projectRecordArgumentsMatch.mjs +34 -0
  15. package/lib/core/bridge/projectRecordArgumentsMatch.mjs.map +1 -0
  16. package/lib/core/bridge/projectRecordMoved.d.cts +14 -12
  17. package/lib/core/bridge/projectRecordMoved.d.mts +14 -12
  18. package/lib/core/bridge/projectRecordMoved.d.ts +14 -12
  19. package/lib/core/bridge/projectRecordMoved.js +17 -12
  20. package/lib/core/bridge/projectRecordMoved.js.map +1 -1
  21. package/lib/core/bridge/projectRecordMoved.mjs +17 -12
  22. package/lib/core/bridge/projectRecordMoved.mjs.map +1 -1
  23. package/lib/core/bridge/readProjectRecordFile.d.cts +4 -3
  24. package/lib/core/bridge/readProjectRecordFile.d.mts +4 -3
  25. package/lib/core/bridge/readProjectRecordFile.d.ts +4 -3
  26. package/lib/core/bridge/readProjectRecordFile.js +26 -3
  27. package/lib/core/bridge/readProjectRecordFile.js.map +1 -1
  28. package/lib/core/bridge/readProjectRecordFile.mjs +26 -3
  29. package/lib/core/bridge/readProjectRecordFile.mjs.map +1 -1
  30. package/lib/core/bridge/refreshProjectRecordFile.d.cts +3 -2
  31. package/lib/core/bridge/refreshProjectRecordFile.d.mts +3 -2
  32. package/lib/core/bridge/refreshProjectRecordFile.d.ts +3 -2
  33. package/lib/core/bridge/refreshProjectRecordFile.js +9 -3
  34. package/lib/core/bridge/refreshProjectRecordFile.js.map +1 -1
  35. package/lib/core/bridge/refreshProjectRecordFile.mjs +9 -3
  36. package/lib/core/bridge/refreshProjectRecordFile.mjs.map +1 -1
  37. package/lib/core/bridge/refreshProjectRecordFiles.d.cts +1 -1
  38. package/lib/core/bridge/refreshProjectRecordFiles.d.mts +1 -1
  39. package/lib/core/bridge/refreshProjectRecordFiles.d.ts +1 -1
  40. package/lib/core/bridge/refreshProjectRecordFiles.js +2 -2
  41. package/lib/core/bridge/refreshProjectRecordFiles.js.map +1 -1
  42. package/lib/core/bridge/refreshProjectRecordFiles.mjs +2 -2
  43. package/lib/core/bridge/refreshProjectRecordFiles.mjs.map +1 -1
  44. package/lib/core/index.d.cts +2 -0
  45. package/lib/core/index.d.mts +2 -0
  46. package/lib/core/index.d.ts +2 -0
  47. package/lib/core/index.js +4 -0
  48. package/lib/core/index.js.map +1 -1
  49. package/lib/core/index.mjs +2 -0
  50. package/lib/core/index.mjs.map +1 -1
  51. package/lib/core/next/next.js +5 -2
  52. package/lib/core/next/next.js.map +1 -1
  53. package/lib/core/next/next.mjs +5 -2
  54. package/lib/core/next/next.mjs.map +1 -1
  55. package/lib/core/options/ResolvedTtscUnpluginOptions.d.cts +2 -0
  56. package/lib/core/options/ResolvedTtscUnpluginOptions.d.mts +2 -0
  57. package/lib/core/options/ResolvedTtscUnpluginOptions.d.ts +2 -0
  58. package/lib/core/options/TtscUnpluginOptions.d.cts +8 -0
  59. package/lib/core/options/TtscUnpluginOptions.d.mts +8 -0
  60. package/lib/core/options/TtscUnpluginOptions.d.ts +8 -0
  61. package/lib/core/options/resolveOptions.d.cts +4 -3
  62. package/lib/core/options/resolveOptions.d.mts +4 -3
  63. package/lib/core/options/resolveOptions.d.ts +4 -3
  64. package/lib/core/options/resolveOptions.js +5 -3
  65. package/lib/core/options/resolveOptions.js.map +1 -1
  66. package/lib/core/options/resolveOptions.mjs +5 -3
  67. package/lib/core/options/resolveOptions.mjs.map +1 -1
  68. package/lib/core/rollup/rollupDeliveryOptions.d.cts +6 -6
  69. package/lib/core/rollup/rollupDeliveryOptions.d.mts +6 -6
  70. package/lib/core/rollup/rollupDeliveryOptions.d.ts +6 -6
  71. package/lib/core/rollup/rollupDeliveryOptions.js +9 -6
  72. package/lib/core/rollup/rollupDeliveryOptions.js.map +1 -1
  73. package/lib/core/rollup/rollupDeliveryOptions.mjs +9 -6
  74. package/lib/core/rollup/rollupDeliveryOptions.mjs.map +1 -1
  75. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.d.cts +10 -0
  76. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.d.mts +10 -0
  77. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.d.ts +10 -0
  78. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.js +13 -0
  79. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.js.map +1 -0
  80. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.mjs +11 -0
  81. package/lib/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.mjs.map +1 -0
  82. package/lib/core/transform/cache/TtscCachedProjectTransform.d.cts +6 -0
  83. package/lib/core/transform/cache/TtscCachedProjectTransform.d.mts +6 -0
  84. package/lib/core/transform/cache/TtscCachedProjectTransform.d.ts +6 -0
  85. package/lib/core/transform/cache/createTransformCacheKey.d.cts +11 -8
  86. package/lib/core/transform/cache/createTransformCacheKey.d.mts +11 -8
  87. package/lib/core/transform/cache/createTransformCacheKey.d.ts +11 -8
  88. package/lib/core/transform/cache/createTransformCacheKey.js +11 -8
  89. package/lib/core/transform/cache/createTransformCacheKey.js.map +1 -1
  90. package/lib/core/transform/cache/createTransformCacheKey.mjs +11 -8
  91. package/lib/core/transform/cache/createTransformCacheKey.mjs.map +1 -1
  92. package/lib/core/transform/generation/TtscCompilerMembershipHint.d.cts +20 -0
  93. package/lib/core/transform/generation/TtscCompilerMembershipHint.d.mts +20 -0
  94. package/lib/core/transform/generation/TtscCompilerMembershipHint.d.ts +20 -0
  95. package/lib/core/transform/generation/applyCompilerMembership.d.cts +15 -0
  96. package/lib/core/transform/generation/applyCompilerMembership.d.mts +15 -0
  97. package/lib/core/transform/generation/applyCompilerMembership.d.ts +15 -0
  98. package/lib/core/transform/generation/applyCompilerMembership.js +41 -0
  99. package/lib/core/transform/generation/applyCompilerMembership.js.map +1 -0
  100. package/lib/core/transform/generation/applyCompilerMembership.mjs +39 -0
  101. package/lib/core/transform/generation/applyCompilerMembership.mjs.map +1 -0
  102. package/lib/core/transform/generation/captureTransformGeneration.d.cts +7 -0
  103. package/lib/core/transform/generation/captureTransformGeneration.d.mts +7 -0
  104. package/lib/core/transform/generation/captureTransformGeneration.d.ts +7 -0
  105. package/lib/core/transform/generation/captureTransformGeneration.js +20 -7
  106. package/lib/core/transform/generation/captureTransformGeneration.js.map +1 -1
  107. package/lib/core/transform/generation/captureTransformGeneration.mjs +20 -7
  108. package/lib/core/transform/generation/captureTransformGeneration.mjs.map +1 -1
  109. package/lib/core/transform/generation/onlyLearnedCompileFacts.d.cts +5 -5
  110. package/lib/core/transform/generation/onlyLearnedCompileFacts.d.mts +5 -5
  111. package/lib/core/transform/generation/onlyLearnedCompileFacts.d.ts +5 -5
  112. package/lib/core/transform/generation/onlyLearnedCompileFacts.js +7 -5
  113. package/lib/core/transform/generation/onlyLearnedCompileFacts.js.map +1 -1
  114. package/lib/core/transform/generation/onlyLearnedCompileFacts.mjs +7 -5
  115. package/lib/core/transform/generation/onlyLearnedCompileFacts.mjs.map +1 -1
  116. package/lib/core/transform/generation/primeCompilerMembership.d.cts +22 -0
  117. package/lib/core/transform/generation/primeCompilerMembership.d.mts +22 -0
  118. package/lib/core/transform/generation/primeCompilerMembership.d.ts +22 -0
  119. package/lib/core/transform/generation/primeCompilerMembership.js +32 -0
  120. package/lib/core/transform/generation/primeCompilerMembership.js.map +1 -0
  121. package/lib/core/transform/generation/primeCompilerMembership.mjs +30 -0
  122. package/lib/core/transform/generation/primeCompilerMembership.mjs.map +1 -0
  123. package/lib/core/transform/generation/selectReportedMembershipPolicy.d.cts +7 -7
  124. package/lib/core/transform/generation/selectReportedMembershipPolicy.d.mts +7 -7
  125. package/lib/core/transform/generation/selectReportedMembershipPolicy.d.ts +7 -7
  126. package/lib/core/transform/generation/selectReportedMembershipPolicy.js +43 -9
  127. package/lib/core/transform/generation/selectReportedMembershipPolicy.js.map +1 -1
  128. package/lib/core/transform/generation/selectReportedMembershipPolicy.mjs +43 -9
  129. package/lib/core/transform/generation/selectReportedMembershipPolicy.mjs.map +1 -1
  130. package/lib/core/transform/generation/transformProject.d.cts +7 -0
  131. package/lib/core/transform/generation/transformProject.d.mts +7 -0
  132. package/lib/core/transform/generation/transformProject.d.ts +7 -0
  133. package/lib/core/transform/generation/transformProject.js +3 -0
  134. package/lib/core/transform/generation/transformProject.js.map +1 -1
  135. package/lib/core/transform/generation/transformProject.mjs +3 -0
  136. package/lib/core/transform/generation/transformProject.mjs.map +1 -1
  137. package/lib/core/transform/project/isPossibleProgramFileName.d.cts +13 -11
  138. package/lib/core/transform/project/isPossibleProgramFileName.d.mts +13 -11
  139. package/lib/core/transform/project/isPossibleProgramFileName.d.ts +13 -11
  140. package/lib/core/transform/project/isPossibleProgramFileName.js +21 -13
  141. package/lib/core/transform/project/isPossibleProgramFileName.js.map +1 -1
  142. package/lib/core/transform/project/isPossibleProgramFileName.mjs +21 -13
  143. package/lib/core/transform/project/isPossibleProgramFileName.mjs.map +1 -1
  144. package/lib/core/transform/session/sharedCompileIdentity.d.cts +8 -5
  145. package/lib/core/transform/session/sharedCompileIdentity.d.mts +8 -5
  146. package/lib/core/transform/session/sharedCompileIdentity.d.ts +8 -5
  147. package/lib/core/transform/session/sharedCompileIdentity.js +8 -5
  148. package/lib/core/transform/session/sharedCompileIdentity.js.map +1 -1
  149. package/lib/core/transform/session/sharedCompileIdentity.mjs +8 -5
  150. package/lib/core/transform/session/sharedCompileIdentity.mjs.map +1 -1
  151. package/lib/core/transform/transformTtsc.js +18 -0
  152. package/lib/core/transform/transformTtsc.js.map +1 -1
  153. package/lib/core/transform/transformTtsc.mjs +18 -0
  154. package/lib/core/transform/transformTtsc.mjs.map +1 -1
  155. package/lib/core/transform/tsconfig/TtscCompilerArgumentsWitness.d.cts +19 -0
  156. package/lib/core/transform/tsconfig/TtscCompilerArgumentsWitness.d.mts +19 -0
  157. package/lib/core/transform/tsconfig/TtscCompilerArgumentsWitness.d.ts +19 -0
  158. package/lib/core/transform/tsconfig/captureCompilerArguments.d.cts +14 -0
  159. package/lib/core/transform/tsconfig/captureCompilerArguments.d.mts +14 -0
  160. package/lib/core/transform/tsconfig/captureCompilerArguments.d.ts +14 -0
  161. package/lib/core/transform/tsconfig/captureCompilerArguments.js +26 -0
  162. package/lib/core/transform/tsconfig/captureCompilerArguments.js.map +1 -0
  163. package/lib/core/transform/tsconfig/captureCompilerArguments.mjs +24 -0
  164. package/lib/core/transform/tsconfig/captureCompilerArguments.mjs.map +1 -0
  165. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.d.cts +13 -0
  166. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.d.mts +13 -0
  167. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.d.ts +13 -0
  168. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.js +23 -0
  169. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.js.map +1 -0
  170. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.mjs +21 -0
  171. package/lib/core/transform/tsconfig/compilerEnvironmentIdentity.mjs.map +1 -0
  172. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.d.cts +17 -0
  173. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.d.mts +17 -0
  174. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.d.ts +17 -0
  175. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.js +57 -0
  176. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.js.map +1 -0
  177. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.mjs +55 -0
  178. package/lib/core/transform/tsconfig/resolveCompilerEnvironment.mjs.map +1 -0
  179. package/lib/core/transform/tsconfig/transformScratchEnvironment.d.cts +6 -6
  180. package/lib/core/transform/tsconfig/transformScratchEnvironment.d.mts +6 -6
  181. package/lib/core/transform/tsconfig/transformScratchEnvironment.d.ts +6 -6
  182. package/lib/core/transform/tsconfig/transformScratchEnvironment.js +7 -7
  183. package/lib/core/transform/tsconfig/transformScratchEnvironment.js.map +1 -1
  184. package/lib/core/transform/tsconfig/transformScratchEnvironment.mjs +7 -7
  185. package/lib/core/transform/tsconfig/transformScratchEnvironment.mjs.map +1 -1
  186. package/lib/core/transform/watch/notifyProjectRecord.js +3 -0
  187. package/lib/core/transform/watch/notifyProjectRecord.js.map +1 -1
  188. package/lib/core/transform/watch/notifyProjectRecord.mjs +3 -0
  189. package/lib/core/transform/watch/notifyProjectRecord.mjs.map +1 -1
  190. package/lib/core/tsconfig/ITtscProjectMembershipPolicy.d.cts +14 -1
  191. package/lib/core/tsconfig/ITtscProjectMembershipPolicy.d.mts +14 -1
  192. package/lib/core/tsconfig/ITtscProjectMembershipPolicy.d.ts +14 -1
  193. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.d.cts +4 -3
  194. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.d.mts +4 -3
  195. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.d.ts +4 -3
  196. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.js +36 -6
  197. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.js.map +1 -1
  198. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.mjs +36 -6
  199. package/lib/core/tsconfig/mergeMembershipPolicyOverlay.mjs.map +1 -1
  200. package/lib/core/tsconfig/readProjectMembershipPolicy.d.cts +3 -2
  201. package/lib/core/tsconfig/readProjectMembershipPolicy.d.mts +3 -2
  202. package/lib/core/tsconfig/readProjectMembershipPolicy.d.ts +3 -2
  203. package/lib/core/tsconfig/readProjectMembershipPolicy.js +49 -15
  204. package/lib/core/tsconfig/readProjectMembershipPolicy.js.map +1 -1
  205. package/lib/core/tsconfig/readProjectMembershipPolicy.mjs +49 -15
  206. package/lib/core/tsconfig/readProjectMembershipPolicy.mjs.map +1 -1
  207. package/lib/core/tsconfig/resolveMembershipInputExtensions.d.cts +16 -0
  208. package/lib/core/tsconfig/resolveMembershipInputExtensions.d.mts +16 -0
  209. package/lib/core/tsconfig/resolveMembershipInputExtensions.d.ts +16 -0
  210. package/lib/core/tsconfig/resolveMembershipInputExtensions.js +45 -0
  211. package/lib/core/tsconfig/resolveMembershipInputExtensions.js.map +1 -0
  212. package/lib/core/tsconfig/resolveMembershipInputExtensions.mjs +43 -0
  213. package/lib/core/tsconfig/resolveMembershipInputExtensions.mjs.map +1 -0
  214. package/lib/core/turbopack/turbopack.d.cts +2 -2
  215. package/lib/core/turbopack/turbopack.d.mts +2 -2
  216. package/lib/core/turbopack/turbopack.d.ts +2 -2
  217. package/lib/core/turbopack/turbopack.js +15 -7
  218. package/lib/core/turbopack/turbopack.js.map +1 -1
  219. package/lib/core/turbopack/turbopack.mjs +15 -7
  220. package/lib/core/turbopack/turbopack.mjs.map +1 -1
  221. package/lib/core/unplugin.js +21 -8
  222. package/lib/core/unplugin.js.map +1 -1
  223. package/lib/core/unplugin.mjs +21 -8
  224. package/lib/core/unplugin.mjs.map +1 -1
  225. package/package.json +3 -3
  226. package/src/core/bridge/TtscProjectRecord.ts +4 -1
  227. package/src/core/bridge/projectRecordArgumentsMatch.ts +37 -0
  228. package/src/core/bridge/projectRecordMoved.ts +17 -11
  229. package/src/core/bridge/readProjectRecordFile.ts +39 -3
  230. package/src/core/bridge/refreshProjectRecordFile.ts +9 -2
  231. package/src/core/bridge/refreshProjectRecordFiles.ts +7 -1
  232. package/src/core/index.ts +2 -0
  233. package/src/core/next/next.ts +18 -2
  234. package/src/core/options/ResolvedTtscUnpluginOptions.ts +3 -0
  235. package/src/core/options/TtscUnpluginOptions.ts +9 -0
  236. package/src/core/options/resolveOptions.ts +5 -3
  237. package/src/core/rollup/rollupDeliveryOptions.ts +9 -5
  238. package/src/core/transform/cache/TRANSFORM_CACHE_MEMBERSHIP_POLICIES.ts +14 -0
  239. package/src/core/transform/cache/TtscCachedProjectTransform.ts +7 -0
  240. package/src/core/transform/cache/createTransformCacheKey.ts +13 -8
  241. package/src/core/transform/generation/TtscCompilerMembershipHint.ts +24 -0
  242. package/src/core/transform/generation/applyCompilerMembership.ts +44 -0
  243. package/src/core/transform/generation/captureTransformGeneration.ts +43 -10
  244. package/src/core/transform/generation/onlyLearnedCompileFacts.ts +7 -5
  245. package/src/core/transform/generation/primeCompilerMembership.ts +39 -0
  246. package/src/core/transform/generation/selectReportedMembershipPolicy.ts +59 -13
  247. package/src/core/transform/generation/transformProject.ts +12 -0
  248. package/src/core/transform/project/isPossibleProgramFileName.ts +28 -15
  249. package/src/core/transform/session/sharedCompileIdentity.ts +10 -5
  250. package/src/core/transform/transformTtsc.ts +21 -0
  251. package/src/core/transform/tsconfig/TtscCompilerArgumentsWitness.ts +19 -0
  252. package/src/core/transform/tsconfig/captureCompilerArguments.ts +25 -0
  253. package/src/core/transform/tsconfig/compilerEnvironmentIdentity.ts +20 -0
  254. package/src/core/transform/tsconfig/resolveCompilerEnvironment.ts +61 -0
  255. package/src/core/transform/tsconfig/transformScratchEnvironment.ts +7 -6
  256. package/src/core/transform/watch/notifyProjectRecord.ts +3 -0
  257. package/src/core/tsconfig/ITtscProjectMembershipPolicy.ts +15 -1
  258. package/src/core/tsconfig/mergeMembershipPolicyOverlay.ts +31 -6
  259. package/src/core/tsconfig/readProjectMembershipPolicy.ts +61 -17
  260. package/src/core/tsconfig/resolveMembershipInputExtensions.ts +45 -0
  261. package/src/core/turbopack/turbopack.ts +27 -7
  262. package/src/core/unplugin.ts +34 -9
package/README.md CHANGED
@@ -346,6 +346,7 @@ const options: TtscUnpluginOptions = {
346
346
 
347
347
  - `project`: path to the `tsconfig.json` used by the bundler. When omitted, each file starts from its nearest `tsconfig.json`. A solution config that admits no files itself, one with `"files": []` and `references` such as the create-vite `react-ts` template's, is followed to the first referenced project that admits the file.
348
348
  - `compilerOptions`: temporary override layered on the selected project config.
349
+ - `runExternalCode`: invocation-scoped permission for TypeScript 7.1 content mappers; see the [bundler guide](https://ttsc.dev/docs/setup/unplugin/).
349
350
  - `plugins`: direct `ttsc` plugin list override, or `false` to disable plugins.
350
351
 
351
352
  #### Path Aliases
package/lib/api.js CHANGED
@@ -20,6 +20,8 @@ var collectProjectInputHashes = require('./core/transform/project/collectProject
20
20
  var collectProjectInputHashSnapshot = require('./core/transform/project/collectProjectInputHashSnapshot.js');
21
21
  var isProjectWalkPath = require('./core/transform/project/isProjectWalkPath.js');
22
22
  var transformTtsc = require('./core/transform/transformTtsc.js');
23
+ var compilerEnvironmentIdentity = require('./core/transform/tsconfig/compilerEnvironmentIdentity.js');
24
+ var resolveCompilerEnvironment = require('./core/transform/tsconfig/resolveCompilerEnvironment.js');
23
25
  var captureWatchInputBaseline = require('./core/transform/watch/captureWatchInputBaseline.js');
24
26
  var captureWatchInputFileBaseline = require('./core/transform/watch/captureWatchInputFileBaseline.js');
25
27
  var isWatchInputKeyBaseline = require('./core/transform/watch/isWatchInputKeyBaseline.js');
@@ -56,6 +58,8 @@ exports.collectProjectInputHashes = collectProjectInputHashes.collectProjectInpu
56
58
  exports.collectProjectInputHashSnapshot = collectProjectInputHashSnapshot.collectProjectInputHashSnapshot;
57
59
  exports.isProjectWalkPath = isProjectWalkPath.isProjectWalkPath;
58
60
  exports.transformTtsc = transformTtsc.transformTtsc;
61
+ exports.compilerEnvironmentIdentity = compilerEnvironmentIdentity.compilerEnvironmentIdentity;
62
+ exports.resolveCompilerEnvironment = resolveCompilerEnvironment.resolveCompilerEnvironment;
59
63
  exports.captureWatchInputBaseline = captureWatchInputBaseline.captureWatchInputBaseline;
60
64
  exports.captureWatchInputFileBaseline = captureWatchInputFileBaseline.captureWatchInputFileBaseline;
61
65
  exports.isWatchInputKeyBaseline = isWatchInputKeyBaseline.isWatchInputKeyBaseline;
package/lib/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"api.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/lib/api.mjs CHANGED
@@ -18,6 +18,8 @@ export { collectProjectInputHashes } from './core/transform/project/collectProje
18
18
  export { collectProjectInputHashSnapshot } from './core/transform/project/collectProjectInputHashSnapshot.mjs';
19
19
  export { isProjectWalkPath } from './core/transform/project/isProjectWalkPath.mjs';
20
20
  export { transformTtsc } from './core/transform/transformTtsc.mjs';
21
+ export { compilerEnvironmentIdentity } from './core/transform/tsconfig/compilerEnvironmentIdentity.mjs';
22
+ export { resolveCompilerEnvironment } from './core/transform/tsconfig/resolveCompilerEnvironment.mjs';
21
23
  export { captureWatchInputBaseline } from './core/transform/watch/captureWatchInputBaseline.mjs';
22
24
  export { captureWatchInputFileBaseline } from './core/transform/watch/captureWatchInputFileBaseline.mjs';
23
25
  export { isWatchInputKeyBaseline } from './core/transform/watch/isWatchInputKeyBaseline.mjs';
package/lib/api.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"api.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,3 +1,4 @@
1
+ import type { TtscCompilerArgumentsWitness } from "../transform/tsconfig/TtscCompilerArgumentsWitness.cjs";
1
2
  import type { TtscWatchInputEvidence } from "../transform/watch/TtscWatchInputEvidence.cjs";
2
3
  import type { ITtscProjectMembershipPolicy } from "../tsconfig/ITtscProjectMembershipPolicy.cjs";
3
4
  /**
@@ -19,7 +20,7 @@ import type { ITtscProjectMembershipPolicy } from "../tsconfig/ITtscProjectMembe
19
20
  * (`refreshProjectRecordFiles`).
20
21
  *
21
22
  * @evidence contracts/common.md#principled-implementation
22
- * Input evidence and separate membership policy express the generation's
23
+ * The optional captured invocation, input evidence and separate membership policy express the generation's
23
24
  * file/predicate and root-population dependencies; signal changes record bytes
24
25
  * without claiming that an observer already owns a new generation.
25
26
  * @evidence contracts/common.md#clear-and-simple-design
@@ -48,6 +49,8 @@ import type { ITtscProjectMembershipPolicy } from "../tsconfig/ITtscProjectMembe
48
49
  * and independently imposes no population or byte bound.
49
50
  */
50
51
  export interface TtscProjectRecord {
52
+ /** Captured invocation; older records without it require a fresh delivery. */
53
+ compilerArguments?: TtscCompilerArgumentsWitness;
51
54
  /**
52
55
  * The paths the generation's plugins reported as dependencies outside the
53
56
  * project walk (`TtscCachedProjectTransform.externalDependencyInputs`),
@@ -1,3 +1,4 @@
1
+ import type { TtscCompilerArgumentsWitness } from "../transform/tsconfig/TtscCompilerArgumentsWitness.mjs";
1
2
  import type { TtscWatchInputEvidence } from "../transform/watch/TtscWatchInputEvidence.mjs";
2
3
  import type { ITtscProjectMembershipPolicy } from "../tsconfig/ITtscProjectMembershipPolicy.mjs";
3
4
  /**
@@ -19,7 +20,7 @@ import type { ITtscProjectMembershipPolicy } from "../tsconfig/ITtscProjectMembe
19
20
  * (`refreshProjectRecordFiles`).
20
21
  *
21
22
  * @evidence contracts/common.md#principled-implementation
22
- * Input evidence and separate membership policy express the generation's
23
+ * The optional captured invocation, input evidence and separate membership policy express the generation's
23
24
  * file/predicate and root-population dependencies; signal changes record bytes
24
25
  * without claiming that an observer already owns a new generation.
25
26
  * @evidence contracts/common.md#clear-and-simple-design
@@ -48,6 +49,8 @@ import type { ITtscProjectMembershipPolicy } from "../tsconfig/ITtscProjectMembe
48
49
  * and independently imposes no population or byte bound.
49
50
  */
50
51
  export interface TtscProjectRecord {
52
+ /** Captured invocation; older records without it require a fresh delivery. */
53
+ compilerArguments?: TtscCompilerArgumentsWitness;
51
54
  /**
52
55
  * The paths the generation's plugins reported as dependencies outside the
53
56
  * project walk (`TtscCachedProjectTransform.externalDependencyInputs`),
@@ -1,3 +1,4 @@
1
+ import type { TtscCompilerArgumentsWitness } from "../transform/tsconfig/TtscCompilerArgumentsWitness";
1
2
  import type { TtscWatchInputEvidence } from "../transform/watch/TtscWatchInputEvidence";
2
3
  import type { ITtscProjectMembershipPolicy } from "../tsconfig/ITtscProjectMembershipPolicy";
3
4
  /**
@@ -19,7 +20,7 @@ import type { ITtscProjectMembershipPolicy } from "../tsconfig/ITtscProjectMembe
19
20
  * (`refreshProjectRecordFiles`).
20
21
  *
21
22
  * @evidence contracts/common.md#principled-implementation
22
- * Input evidence and separate membership policy express the generation's
23
+ * The optional captured invocation, input evidence and separate membership policy express the generation's
23
24
  * file/predicate and root-population dependencies; signal changes record bytes
24
25
  * without claiming that an observer already owns a new generation.
25
26
  * @evidence contracts/common.md#clear-and-simple-design
@@ -48,6 +49,8 @@ import type { ITtscProjectMembershipPolicy } from "../tsconfig/ITtscProjectMembe
48
49
  * and independently imposes no population or byte bound.
49
50
  */
50
51
  export interface TtscProjectRecord {
52
+ /** Captured invocation; older records without it require a fresh delivery. */
53
+ compilerArguments?: TtscCompilerArgumentsWitness;
51
54
  /**
52
55
  * The paths the generation's plugins reported as dependencies outside the
53
56
  * project walk (`TtscCachedProjectTransform.externalDependencyInputs`),
@@ -0,0 +1,18 @@
1
+ import type { TtscProjectRecord } from "./TtscProjectRecord.cjs";
2
+ /**
3
+ * Require a record's captured invocation to match the current host context.
4
+ *
5
+ * A supplied identity describes the active adapter's explicit override too.
6
+ * Generic detached readers instead replay the recorded override against current
7
+ * inheritance. Older records lack that authority and require a new delivery.
8
+ *
9
+ * @evidence contracts/common.md#principled-implementation Recorded effective arguments must match the active context or a current derivation using the recorded override; absent witnesses never certify unknown prior arguments.
10
+ * @evidence contracts/common.md#clear-and-simple-design One predicate serves detached proof and watching bridge admission before filesystem evidence can authorize host cache restoration.
11
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Malformed inherited transport declines reuse rather than restoring a result compiled under different permission.
12
+ * @evidence contracts/common.md#meaningful-documentation Native prose states active versus generic comparison and legacy migration.
13
+ * @evidence contracts/portability.md#os-neutral-implementation The shared environment owner applies native Windows name selection and preserves argv/cwd spelling without platform guesses.
14
+ * @evidence contracts/performance.md#efficient-algorithms An active digest requires scalar comparison; generic replay additionally snapshots environment keys and encodes/hashes argument bytes through existing owners.
15
+ * @evidenceExclude contracts/performance.md#reuse-equivalent-work Current inheritance is observed on each generic proof; no prior environment verdict is retained.
16
+ * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Only call-local environment/encoding data is allocated; the record owner retains the witness.
17
+ */
18
+ export declare function projectRecordArgumentsMatch(record: TtscProjectRecord, currentIdentity?: string): boolean;
@@ -0,0 +1,18 @@
1
+ import type { TtscProjectRecord } from "./TtscProjectRecord.mjs";
2
+ /**
3
+ * Require a record's captured invocation to match the current host context.
4
+ *
5
+ * A supplied identity describes the active adapter's explicit override too.
6
+ * Generic detached readers instead replay the recorded override against current
7
+ * inheritance. Older records lack that authority and require a new delivery.
8
+ *
9
+ * @evidence contracts/common.md#principled-implementation Recorded effective arguments must match the active context or a current derivation using the recorded override; absent witnesses never certify unknown prior arguments.
10
+ * @evidence contracts/common.md#clear-and-simple-design One predicate serves detached proof and watching bridge admission before filesystem evidence can authorize host cache restoration.
11
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Malformed inherited transport declines reuse rather than restoring a result compiled under different permission.
12
+ * @evidence contracts/common.md#meaningful-documentation Native prose states active versus generic comparison and legacy migration.
13
+ * @evidence contracts/portability.md#os-neutral-implementation The shared environment owner applies native Windows name selection and preserves argv/cwd spelling without platform guesses.
14
+ * @evidence contracts/performance.md#efficient-algorithms An active digest requires scalar comparison; generic replay additionally snapshots environment keys and encodes/hashes argument bytes through existing owners.
15
+ * @evidenceExclude contracts/performance.md#reuse-equivalent-work Current inheritance is observed on each generic proof; no prior environment verdict is retained.
16
+ * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Only call-local environment/encoding data is allocated; the record owner retains the witness.
17
+ */
18
+ export declare function projectRecordArgumentsMatch(record: TtscProjectRecord, currentIdentity?: string): boolean;
@@ -0,0 +1,18 @@
1
+ import type { TtscProjectRecord } from "./TtscProjectRecord";
2
+ /**
3
+ * Require a record's captured invocation to match the current host context.
4
+ *
5
+ * A supplied identity describes the active adapter's explicit override too.
6
+ * Generic detached readers instead replay the recorded override against current
7
+ * inheritance. Older records lack that authority and require a new delivery.
8
+ *
9
+ * @evidence contracts/common.md#principled-implementation Recorded effective arguments must match the active context or a current derivation using the recorded override; absent witnesses never certify unknown prior arguments.
10
+ * @evidence contracts/common.md#clear-and-simple-design One predicate serves detached proof and watching bridge admission before filesystem evidence can authorize host cache restoration.
11
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Malformed inherited transport declines reuse rather than restoring a result compiled under different permission.
12
+ * @evidence contracts/common.md#meaningful-documentation Native prose states active versus generic comparison and legacy migration.
13
+ * @evidence contracts/portability.md#os-neutral-implementation The shared environment owner applies native Windows name selection and preserves argv/cwd spelling without platform guesses.
14
+ * @evidence contracts/performance.md#efficient-algorithms An active digest requires scalar comparison; generic replay additionally snapshots environment keys and encodes/hashes argument bytes through existing owners.
15
+ * @evidenceExclude contracts/performance.md#reuse-equivalent-work Current inheritance is observed on each generic proof; no prior environment verdict is retained.
16
+ * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Only call-local environment/encoding data is allocated; the record owner retains the witness.
17
+ */
18
+ export declare function projectRecordArgumentsMatch(record: TtscProjectRecord, currentIdentity?: string): boolean;
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var captureCompilerArguments = require('../transform/tsconfig/captureCompilerArguments.js');
4
+ var resolveCompilerEnvironment = require('../transform/tsconfig/resolveCompilerEnvironment.js');
5
+
6
+ /**
7
+ * Require a record's captured invocation to match the current host context.
8
+ *
9
+ * A supplied identity describes the active adapter's explicit override too.
10
+ * Generic detached readers instead replay the recorded override against current
11
+ * inheritance. Older records lack that authority and require a new delivery.
12
+ *
13
+ * @evidence contracts/common.md#principled-implementation Recorded effective arguments must match the active context or a current derivation using the recorded override; absent witnesses never certify unknown prior arguments.
14
+ * @evidence contracts/common.md#clear-and-simple-design One predicate serves detached proof and watching bridge admission before filesystem evidence can authorize host cache restoration.
15
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Malformed inherited transport declines reuse rather than restoring a result compiled under different permission.
16
+ * @evidence contracts/common.md#meaningful-documentation Native prose states active versus generic comparison and legacy migration.
17
+ * @evidence contracts/portability.md#os-neutral-implementation The shared environment owner applies native Windows name selection and preserves argv/cwd spelling without platform guesses.
18
+ * @evidence contracts/performance.md#efficient-algorithms An active digest requires scalar comparison; generic replay additionally snapshots environment keys and encodes/hashes argument bytes through existing owners.
19
+ * @evidenceExclude contracts/performance.md#reuse-equivalent-work Current inheritance is observed on each generic proof; no prior environment verdict is retained.
20
+ * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Only call-local environment/encoding data is allocated; the record owner retains the witness.
21
+ */
22
+ function projectRecordArgumentsMatch(record, currentIdentity) {
23
+ if (record.compilerArguments === undefined)
24
+ return false;
25
+ try {
26
+ return (record.compilerArguments.identity ===
27
+ (currentIdentity ??
28
+ captureCompilerArguments.captureCompilerArguments(resolveCompilerEnvironment.resolveCompilerEnvironment(record.compilerArguments.runExternalCode)).identity));
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
34
+
35
+ exports.projectRecordArgumentsMatch = projectRecordArgumentsMatch;
36
+ //# sourceMappingURL=projectRecordArgumentsMatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectRecordArgumentsMatch.js","sources":["../../../src/core/bridge/projectRecordArgumentsMatch.ts"],"sourcesContent":[null],"names":["captureCompilerArguments","resolveCompilerEnvironment"],"mappings":";;;;;AAIA;;;;;;;;;;;;;;;AAeG;AACG,SAAU,2BAA2B,CACzC,MAAyB,EACzB,eAAwB,EAAA;AAExB,IAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;AACxD,IAAA,IAAI;AACF,QAAA,QACE,MAAM,CAAC,iBAAiB,CAAC,QAAQ;AACjC,aAAC,eAAe;AACd,gBAAAA,iDAAwB,CACtBC,qDAA0B,CAAC,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CACrE,CAAC,QAAQ,CAAC;IAEjB;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,KAAK;IACd;AACF;;;;"}
@@ -0,0 +1,34 @@
1
+ import { captureCompilerArguments } from '../transform/tsconfig/captureCompilerArguments.mjs';
2
+ import { resolveCompilerEnvironment } from '../transform/tsconfig/resolveCompilerEnvironment.mjs';
3
+
4
+ /**
5
+ * Require a record's captured invocation to match the current host context.
6
+ *
7
+ * A supplied identity describes the active adapter's explicit override too.
8
+ * Generic detached readers instead replay the recorded override against current
9
+ * inheritance. Older records lack that authority and require a new delivery.
10
+ *
11
+ * @evidence contracts/common.md#principled-implementation Recorded effective arguments must match the active context or a current derivation using the recorded override; absent witnesses never certify unknown prior arguments.
12
+ * @evidence contracts/common.md#clear-and-simple-design One predicate serves detached proof and watching bridge admission before filesystem evidence can authorize host cache restoration.
13
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Malformed inherited transport declines reuse rather than restoring a result compiled under different permission.
14
+ * @evidence contracts/common.md#meaningful-documentation Native prose states active versus generic comparison and legacy migration.
15
+ * @evidence contracts/portability.md#os-neutral-implementation The shared environment owner applies native Windows name selection and preserves argv/cwd spelling without platform guesses.
16
+ * @evidence contracts/performance.md#efficient-algorithms An active digest requires scalar comparison; generic replay additionally snapshots environment keys and encodes/hashes argument bytes through existing owners.
17
+ * @evidenceExclude contracts/performance.md#reuse-equivalent-work Current inheritance is observed on each generic proof; no prior environment verdict is retained.
18
+ * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources Only call-local environment/encoding data is allocated; the record owner retains the witness.
19
+ */
20
+ function projectRecordArgumentsMatch(record, currentIdentity) {
21
+ if (record.compilerArguments === undefined)
22
+ return false;
23
+ try {
24
+ return (record.compilerArguments.identity ===
25
+ (currentIdentity ??
26
+ captureCompilerArguments(resolveCompilerEnvironment(record.compilerArguments.runExternalCode)).identity));
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+
33
+ export { projectRecordArgumentsMatch };
34
+ //# sourceMappingURL=projectRecordArgumentsMatch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectRecordArgumentsMatch.mjs","sources":["../../../src/core/bridge/projectRecordArgumentsMatch.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAIA;;;;;;;;;;;;;;;AAeG;AACG,SAAU,2BAA2B,CACzC,MAAyB,EACzB,eAAwB,EAAA;AAExB,IAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;AACxD,IAAA,IAAI;AACF,QAAA,QACE,MAAM,CAAC,iBAAiB,CAAC,QAAQ;AACjC,aAAC,eAAe;AACd,gBAAA,wBAAwB,CACtB,0BAA0B,CAAC,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CACrE,CAAC,QAAQ,CAAC;IAEjB;AAAE,IAAA,MAAM;AACN,QAAA,OAAO,KAAK;IACd;AACF;;;;"}
@@ -1,24 +1,26 @@
1
1
  import type { TtscTransformFilesystemOperations } from "../transform/filesystem/TtscTransformFilesystemOperations.cjs";
2
2
  import type { TtscProjectRecord } from "./TtscProjectRecord.cjs";
3
3
  /**
4
- * The first recorded input or membership state that current replay cannot
5
- * establish as unchanged, or nothing when all recorded checks hold. This is the
6
- * proof a build start makes of a record (`refreshProjectRecordFiles`),
4
+ * The first invocation, recorded input or membership state that current replay
5
+ * cannot establish as unchanged, or nothing when all recorded checks hold. This
6
+ * is the proof a build start makes of a record (`refreshProjectRecordFiles`),
7
7
  * separable from the move it follows with, so a harness or a maintainer can ask
8
8
  * the same question of a record without moving it.
9
9
  *
10
- * Each recorded input is proven against the disk the way a delivery proves a
11
- * generation (`watchInputEvidenceMatchesDisk`), and the walk is run again under
12
- * the recorded policy and its digest compared (`membershipRecordDigest`). A
13
- * plugin source is proven by the metadata of its files where that metadata
14
- * holds (`pluginSourceFilesDigest`), which stands for their bytes only against
15
- * a clock reference minted since any rollback, so the proof mints one first, as
16
- * a delivery does. It holds no generation, so the reference is minted in the
10
+ * The captured invocation must match the active context before each recorded
11
+ * input is proven against the disk the way a delivery proves a generation
12
+ * (`watchInputEvidenceMatchesDisk`), and the walk is run again under the
13
+ * recorded policy and its digest compared (`membershipRecordDigest`). A plugin
14
+ * source is proven by the metadata of its files where that metadata holds
15
+ * (`pluginSourceFilesDigest`), which stands for their bytes only against a
16
+ * clock reference minted since any rollback, so the proof mints one first, as a
17
+ * delivery does. It holds no generation, so the reference is minted in the
17
18
  * probe directory this process keeps (`refreshProcessClockReference`).
18
19
  *
19
20
  * @returns The tsconfig when it is gone, which a build start answers by
20
21
  * removing the record rather than moving it, the first input whose state
21
- * moved, the project root when the root files did, or `undefined`.
22
+ * moved, the project root when invocation or root membership differs, or
23
+ * `undefined`.
22
24
  * @evidence contracts/common.md#principled-implementation
23
25
  * Each codec is re-proved against the same filesystem view and membership is
24
26
  * re-walked under the stored policy. A fresh process clock reference prevents
@@ -47,4 +49,4 @@ import type { TtscProjectRecord } from "./TtscProjectRecord.cjs";
47
49
  * than treating prior successful replay or watcher silence as present validity.
48
50
  * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The proof owns no independent cache or watcher; its returned mismatch is caller-owned and the process-clock service owns the native reference lifecycle.
49
51
  */
50
- export declare function projectRecordMoved(record: TtscProjectRecord, filesystem?: TtscTransformFilesystemOperations): string | undefined;
52
+ export declare function projectRecordMoved(record: TtscProjectRecord, filesystem?: TtscTransformFilesystemOperations, compilerArgumentsIdentity?: string): string | undefined;
@@ -1,24 +1,26 @@
1
1
  import type { TtscTransformFilesystemOperations } from "../transform/filesystem/TtscTransformFilesystemOperations.mjs";
2
2
  import type { TtscProjectRecord } from "./TtscProjectRecord.mjs";
3
3
  /**
4
- * The first recorded input or membership state that current replay cannot
5
- * establish as unchanged, or nothing when all recorded checks hold. This is the
6
- * proof a build start makes of a record (`refreshProjectRecordFiles`),
4
+ * The first invocation, recorded input or membership state that current replay
5
+ * cannot establish as unchanged, or nothing when all recorded checks hold. This
6
+ * is the proof a build start makes of a record (`refreshProjectRecordFiles`),
7
7
  * separable from the move it follows with, so a harness or a maintainer can ask
8
8
  * the same question of a record without moving it.
9
9
  *
10
- * Each recorded input is proven against the disk the way a delivery proves a
11
- * generation (`watchInputEvidenceMatchesDisk`), and the walk is run again under
12
- * the recorded policy and its digest compared (`membershipRecordDigest`). A
13
- * plugin source is proven by the metadata of its files where that metadata
14
- * holds (`pluginSourceFilesDigest`), which stands for their bytes only against
15
- * a clock reference minted since any rollback, so the proof mints one first, as
16
- * a delivery does. It holds no generation, so the reference is minted in the
10
+ * The captured invocation must match the active context before each recorded
11
+ * input is proven against the disk the way a delivery proves a generation
12
+ * (`watchInputEvidenceMatchesDisk`), and the walk is run again under the
13
+ * recorded policy and its digest compared (`membershipRecordDigest`). A plugin
14
+ * source is proven by the metadata of its files where that metadata holds
15
+ * (`pluginSourceFilesDigest`), which stands for their bytes only against a
16
+ * clock reference minted since any rollback, so the proof mints one first, as a
17
+ * delivery does. It holds no generation, so the reference is minted in the
17
18
  * probe directory this process keeps (`refreshProcessClockReference`).
18
19
  *
19
20
  * @returns The tsconfig when it is gone, which a build start answers by
20
21
  * removing the record rather than moving it, the first input whose state
21
- * moved, the project root when the root files did, or `undefined`.
22
+ * moved, the project root when invocation or root membership differs, or
23
+ * `undefined`.
22
24
  * @evidence contracts/common.md#principled-implementation
23
25
  * Each codec is re-proved against the same filesystem view and membership is
24
26
  * re-walked under the stored policy. A fresh process clock reference prevents
@@ -47,4 +49,4 @@ import type { TtscProjectRecord } from "./TtscProjectRecord.mjs";
47
49
  * than treating prior successful replay or watcher silence as present validity.
48
50
  * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The proof owns no independent cache or watcher; its returned mismatch is caller-owned and the process-clock service owns the native reference lifecycle.
49
51
  */
50
- export declare function projectRecordMoved(record: TtscProjectRecord, filesystem?: TtscTransformFilesystemOperations): string | undefined;
52
+ export declare function projectRecordMoved(record: TtscProjectRecord, filesystem?: TtscTransformFilesystemOperations, compilerArgumentsIdentity?: string): string | undefined;
@@ -1,24 +1,26 @@
1
1
  import type { TtscTransformFilesystemOperations } from "../transform/filesystem/TtscTransformFilesystemOperations";
2
2
  import type { TtscProjectRecord } from "./TtscProjectRecord";
3
3
  /**
4
- * The first recorded input or membership state that current replay cannot
5
- * establish as unchanged, or nothing when all recorded checks hold. This is the
6
- * proof a build start makes of a record (`refreshProjectRecordFiles`),
4
+ * The first invocation, recorded input or membership state that current replay
5
+ * cannot establish as unchanged, or nothing when all recorded checks hold. This
6
+ * is the proof a build start makes of a record (`refreshProjectRecordFiles`),
7
7
  * separable from the move it follows with, so a harness or a maintainer can ask
8
8
  * the same question of a record without moving it.
9
9
  *
10
- * Each recorded input is proven against the disk the way a delivery proves a
11
- * generation (`watchInputEvidenceMatchesDisk`), and the walk is run again under
12
- * the recorded policy and its digest compared (`membershipRecordDigest`). A
13
- * plugin source is proven by the metadata of its files where that metadata
14
- * holds (`pluginSourceFilesDigest`), which stands for their bytes only against
15
- * a clock reference minted since any rollback, so the proof mints one first, as
16
- * a delivery does. It holds no generation, so the reference is minted in the
10
+ * The captured invocation must match the active context before each recorded
11
+ * input is proven against the disk the way a delivery proves a generation
12
+ * (`watchInputEvidenceMatchesDisk`), and the walk is run again under the
13
+ * recorded policy and its digest compared (`membershipRecordDigest`). A plugin
14
+ * source is proven by the metadata of its files where that metadata holds
15
+ * (`pluginSourceFilesDigest`), which stands for their bytes only against a
16
+ * clock reference minted since any rollback, so the proof mints one first, as a
17
+ * delivery does. It holds no generation, so the reference is minted in the
17
18
  * probe directory this process keeps (`refreshProcessClockReference`).
18
19
  *
19
20
  * @returns The tsconfig when it is gone, which a build start answers by
20
21
  * removing the record rather than moving it, the first input whose state
21
- * moved, the project root when the root files did, or `undefined`.
22
+ * moved, the project root when invocation or root membership differs, or
23
+ * `undefined`.
22
24
  * @evidence contracts/common.md#principled-implementation
23
25
  * Each codec is re-proved against the same filesystem view and membership is
24
26
  * re-walked under the stored policy. A fresh process clock reference prevents
@@ -47,4 +49,4 @@ import type { TtscProjectRecord } from "./TtscProjectRecord";
47
49
  * than treating prior successful replay or watcher silence as present validity.
48
50
  * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The proof owns no independent cache or watcher; its returned mismatch is caller-owned and the process-clock service owns the native reference lifecycle.
49
51
  */
50
- export declare function projectRecordMoved(record: TtscProjectRecord, filesystem?: TtscTransformFilesystemOperations): string | undefined;
52
+ export declare function projectRecordMoved(record: TtscProjectRecord, filesystem?: TtscTransformFilesystemOperations, compilerArgumentsIdentity?: string): string | undefined;
@@ -5,26 +5,29 @@ var DEFAULT_FILESYSTEM_OPERATIONS = require('../transform/filesystem/DEFAULT_FIL
5
5
  var walkProjectInputs = require('../transform/project/walkProjectInputs.js');
6
6
  var watchInputEvidenceMatchesDisk = require('../transform/watch/watchInputEvidenceMatchesDisk.js');
7
7
  var membershipRecordDigest = require('./membershipRecordDigest.js');
8
+ var projectRecordArgumentsMatch = require('./projectRecordArgumentsMatch.js');
8
9
 
9
10
  /**
10
- * The first recorded input or membership state that current replay cannot
11
- * establish as unchanged, or nothing when all recorded checks hold. This is the
12
- * proof a build start makes of a record (`refreshProjectRecordFiles`),
11
+ * The first invocation, recorded input or membership state that current replay
12
+ * cannot establish as unchanged, or nothing when all recorded checks hold. This
13
+ * is the proof a build start makes of a record (`refreshProjectRecordFiles`),
13
14
  * separable from the move it follows with, so a harness or a maintainer can ask
14
15
  * the same question of a record without moving it.
15
16
  *
16
- * Each recorded input is proven against the disk the way a delivery proves a
17
- * generation (`watchInputEvidenceMatchesDisk`), and the walk is run again under
18
- * the recorded policy and its digest compared (`membershipRecordDigest`). A
19
- * plugin source is proven by the metadata of its files where that metadata
20
- * holds (`pluginSourceFilesDigest`), which stands for their bytes only against
21
- * a clock reference minted since any rollback, so the proof mints one first, as
22
- * a delivery does. It holds no generation, so the reference is minted in the
17
+ * The captured invocation must match the active context before each recorded
18
+ * input is proven against the disk the way a delivery proves a generation
19
+ * (`watchInputEvidenceMatchesDisk`), and the walk is run again under the
20
+ * recorded policy and its digest compared (`membershipRecordDigest`). A plugin
21
+ * source is proven by the metadata of its files where that metadata holds
22
+ * (`pluginSourceFilesDigest`), which stands for their bytes only against a
23
+ * clock reference minted since any rollback, so the proof mints one first, as a
24
+ * delivery does. It holds no generation, so the reference is minted in the
23
25
  * probe directory this process keeps (`refreshProcessClockReference`).
24
26
  *
25
27
  * @returns The tsconfig when it is gone, which a build start answers by
26
28
  * removing the record rather than moving it, the first input whose state
27
- * moved, the project root when the root files did, or `undefined`.
29
+ * moved, the project root when invocation or root membership differs, or
30
+ * `undefined`.
28
31
  * @evidence contracts/common.md#principled-implementation
29
32
  * Each codec is re-proved against the same filesystem view and membership is
30
33
  * re-walked under the stored policy. A fresh process clock reference prevents
@@ -53,9 +56,11 @@ var membershipRecordDigest = require('./membershipRecordDigest.js');
53
56
  * than treating prior successful replay or watcher silence as present validity.
54
57
  * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The proof owns no independent cache or watcher; its returned mismatch is caller-owned and the process-clock service owns the native reference lifecycle.
55
58
  */
56
- function projectRecordMoved(record, filesystem = DEFAULT_FILESYSTEM_OPERATIONS.DEFAULT_FILESYSTEM_OPERATIONS) {
59
+ function projectRecordMoved(record, filesystem = DEFAULT_FILESYSTEM_OPERATIONS.DEFAULT_FILESYSTEM_OPERATIONS, compilerArgumentsIdentity) {
57
60
  if (!filesystem.exists(record.tsconfig))
58
61
  return record.tsconfig;
62
+ if (!projectRecordArgumentsMatch.projectRecordArgumentsMatch(record, compilerArgumentsIdentity))
63
+ return record.root;
59
64
  refreshProcessClockReference.refreshProcessClockReference(record.root, filesystem);
60
65
  for (const [input, evidence] of Object.entries(record.inputs)) {
61
66
  if (evidence === null || typeof evidence !== "object")
@@ -1 +1 @@
1
- {"version":3,"file":"projectRecordMoved.js","sources":["../../../src/core/bridge/projectRecordMoved.ts"],"sourcesContent":[null],"names":["DEFAULT_FILESYSTEM_OPERATIONS","refreshProcessClockReference","watchInputEvidenceMatchesDisk","walkProjectInputs","membershipRecordDigest"],"mappings":";;;;;;;;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CG;SACa,kBAAkB,CAChC,MAAyB,EACzB,aAAgDA,2DAA6B,EAAA;IAE7E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC,QAAQ;AAC/D,IAAAC,yDAA4B,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;AACrD,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AACnE,QAAA,IACE,CAACC,2DAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC;AAExE,YAAA,OAAO,KAAK;IAChB;AACA,IAAA,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI;AAAE,QAAA,OAAO,SAAS;AAChD,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU;AACpC,IAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAGC,mCAAiB,CACjD,MAAM,CAAC,IAAI,EACX,UAAU,EACV,MAAM,CACP;AACD,IAAA,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI;AACjC,IAAA,OAAOC,6CAAsB,CAAC,MAAM,EAAE,WAAW,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC;AAClB,UAAE;AACF,UAAE,MAAM,CAAC,IAAI;AACjB;;;;"}
1
+ {"version":3,"file":"projectRecordMoved.js","sources":["../../../src/core/bridge/projectRecordMoved.ts"],"sourcesContent":[null],"names":["DEFAULT_FILESYSTEM_OPERATIONS","projectRecordArgumentsMatch","refreshProcessClockReference","watchInputEvidenceMatchesDisk","walkProjectInputs","membershipRecordDigest"],"mappings":";;;;;;;;;AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDG;AACG,SAAU,kBAAkB,CAChC,MAAyB,EACzB,UAAA,GAAgDA,2DAA6B,EAC7E,yBAAkC,EAAA;IAElC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC,QAAQ;AAC/D,IAAA,IAAI,CAACC,uDAA2B,CAAC,MAAM,EAAE,yBAAyB,CAAC;QACjE,OAAO,MAAM,CAAC,IAAI;AACpB,IAAAC,yDAA4B,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;AACrD,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AACnE,QAAA,IACE,CAACC,2DAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC;AAExE,YAAA,OAAO,KAAK;IAChB;AACA,IAAA,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI;AAAE,QAAA,OAAO,SAAS;AAChD,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU;AACpC,IAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAGC,mCAAiB,CACjD,MAAM,CAAC,IAAI,EACX,UAAU,EACV,MAAM,CACP;AACD,IAAA,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI;AACjC,IAAA,OAAOC,6CAAsB,CAAC,MAAM,EAAE,WAAW,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC;AAClB,UAAE;AACF,UAAE,MAAM,CAAC,IAAI;AACjB;;;;"}
@@ -3,26 +3,29 @@ import { DEFAULT_FILESYSTEM_OPERATIONS } from '../transform/filesystem/DEFAULT_F
3
3
  import { walkProjectInputs } from '../transform/project/walkProjectInputs.mjs';
4
4
  import { watchInputEvidenceMatchesDisk } from '../transform/watch/watchInputEvidenceMatchesDisk.mjs';
5
5
  import { membershipRecordDigest } from './membershipRecordDigest.mjs';
6
+ import { projectRecordArgumentsMatch } from './projectRecordArgumentsMatch.mjs';
6
7
 
7
8
  /**
8
- * The first recorded input or membership state that current replay cannot
9
- * establish as unchanged, or nothing when all recorded checks hold. This is the
10
- * proof a build start makes of a record (`refreshProjectRecordFiles`),
9
+ * The first invocation, recorded input or membership state that current replay
10
+ * cannot establish as unchanged, or nothing when all recorded checks hold. This
11
+ * is the proof a build start makes of a record (`refreshProjectRecordFiles`),
11
12
  * separable from the move it follows with, so a harness or a maintainer can ask
12
13
  * the same question of a record without moving it.
13
14
  *
14
- * Each recorded input is proven against the disk the way a delivery proves a
15
- * generation (`watchInputEvidenceMatchesDisk`), and the walk is run again under
16
- * the recorded policy and its digest compared (`membershipRecordDigest`). A
17
- * plugin source is proven by the metadata of its files where that metadata
18
- * holds (`pluginSourceFilesDigest`), which stands for their bytes only against
19
- * a clock reference minted since any rollback, so the proof mints one first, as
20
- * a delivery does. It holds no generation, so the reference is minted in the
15
+ * The captured invocation must match the active context before each recorded
16
+ * input is proven against the disk the way a delivery proves a generation
17
+ * (`watchInputEvidenceMatchesDisk`), and the walk is run again under the
18
+ * recorded policy and its digest compared (`membershipRecordDigest`). A plugin
19
+ * source is proven by the metadata of its files where that metadata holds
20
+ * (`pluginSourceFilesDigest`), which stands for their bytes only against a
21
+ * clock reference minted since any rollback, so the proof mints one first, as a
22
+ * delivery does. It holds no generation, so the reference is minted in the
21
23
  * probe directory this process keeps (`refreshProcessClockReference`).
22
24
  *
23
25
  * @returns The tsconfig when it is gone, which a build start answers by
24
26
  * removing the record rather than moving it, the first input whose state
25
- * moved, the project root when the root files did, or `undefined`.
27
+ * moved, the project root when invocation or root membership differs, or
28
+ * `undefined`.
26
29
  * @evidence contracts/common.md#principled-implementation
27
30
  * Each codec is re-proved against the same filesystem view and membership is
28
31
  * re-walked under the stored policy. A fresh process clock reference prevents
@@ -51,9 +54,11 @@ import { membershipRecordDigest } from './membershipRecordDigest.mjs';
51
54
  * than treating prior successful replay or watcher silence as present validity.
52
55
  * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources The proof owns no independent cache or watcher; its returned mismatch is caller-owned and the process-clock service owns the native reference lifecycle.
53
56
  */
54
- function projectRecordMoved(record, filesystem = DEFAULT_FILESYSTEM_OPERATIONS) {
57
+ function projectRecordMoved(record, filesystem = DEFAULT_FILESYSTEM_OPERATIONS, compilerArgumentsIdentity) {
55
58
  if (!filesystem.exists(record.tsconfig))
56
59
  return record.tsconfig;
60
+ if (!projectRecordArgumentsMatch(record, compilerArgumentsIdentity))
61
+ return record.root;
57
62
  refreshProcessClockReference(record.root, filesystem);
58
63
  for (const [input, evidence] of Object.entries(record.inputs)) {
59
64
  if (evidence === null || typeof evidence !== "object")
@@ -1 +1 @@
1
- {"version":3,"file":"projectRecordMoved.mjs","sources":["../../../src/core/bridge/projectRecordMoved.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CG;SACa,kBAAkB,CAChC,MAAyB,EACzB,aAAgD,6BAA6B,EAAA;IAE7E,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC,QAAQ;AAC/D,IAAA,4BAA4B,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;AACrD,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AACnE,QAAA,IACE,CAAC,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC;AAExE,YAAA,OAAO,KAAK;IAChB;AACA,IAAA,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI;AAAE,QAAA,OAAO,SAAS;AAChD,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU;AACpC,IAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,iBAAiB,CACjD,MAAM,CAAC,IAAI,EACX,UAAU,EACV,MAAM,CACP;AACD,IAAA,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI;AACjC,IAAA,OAAO,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC;AAClB,UAAE;AACF,UAAE,MAAM,CAAC,IAAI;AACjB;;;;"}
1
+ {"version":3,"file":"projectRecordMoved.mjs","sources":["../../../src/core/bridge/projectRecordMoved.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDG;AACG,SAAU,kBAAkB,CAChC,MAAyB,EACzB,UAAA,GAAgD,6BAA6B,EAC7E,yBAAkC,EAAA;IAElC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC,QAAQ;AAC/D,IAAA,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,yBAAyB,CAAC;QACjE,OAAO,MAAM,CAAC,IAAI;AACpB,IAAA,4BAA4B,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;AACrD,IAAA,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC7D,QAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ;AAAE,YAAA,OAAO,KAAK;AACnE,QAAA,IACE,CAAC,6BAA6B,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC;AAExE,YAAA,OAAO,KAAK;IAChB;AACA,IAAA,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI;AAAE,QAAA,OAAO,SAAS;AAChD,IAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU;AACpC,IAAA,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,iBAAiB,CACjD,MAAM,CAAC,IAAI,EACX,UAAU,EACV,MAAM,CACP;AACD,IAAA,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI;AACjC,IAAA,OAAO,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC;QAChD,MAAM,CAAC,UAAU,CAAC;AAClB,UAAE;AACF,UAAE,MAAM,CAAC,IAAI;AACjB;;;;"}
@@ -6,9 +6,10 @@ import type { TtscProjectRecord } from "./TtscProjectRecord.cjs";
6
6
  * run over it (`refreshProjectRecordFiles`), and the next generation's delivery
7
7
  * writes it whole.
8
8
  *
9
- * Validate consumed input codecs and membership policy before exposing the
10
- * parsed record. A JSON object header alone does not establish that observers
11
- * can safely interpret its nested evidence.
9
+ * Validate the optional invocation witness, consumed input codecs and
10
+ * membership policy before exposing the parsed record. A JSON object header
11
+ * alone does not establish that observers can safely interpret its nested
12
+ * evidence.
12
13
  *
13
14
  * @evidence contracts/common.md#principled-implementation Structural guards validate the record, every consumed input codec and membership policy; predicate proof uses the existing producer-schema normalizer rather than inventing missing observations.
14
15
  * @evidence contracts/common.md#clear-and-simple-design This disk boundary owns untrusted JSON parsing and small schema predicates; filesystem replay and state-change decisions remain with the existing record consumers.
@@ -6,9 +6,10 @@ import type { TtscProjectRecord } from "./TtscProjectRecord.mjs";
6
6
  * run over it (`refreshProjectRecordFiles`), and the next generation's delivery
7
7
  * writes it whole.
8
8
  *
9
- * Validate consumed input codecs and membership policy before exposing the
10
- * parsed record. A JSON object header alone does not establish that observers
11
- * can safely interpret its nested evidence.
9
+ * Validate the optional invocation witness, consumed input codecs and
10
+ * membership policy before exposing the parsed record. A JSON object header
11
+ * alone does not establish that observers can safely interpret its nested
12
+ * evidence.
12
13
  *
13
14
  * @evidence contracts/common.md#principled-implementation Structural guards validate the record, every consumed input codec and membership policy; predicate proof uses the existing producer-schema normalizer rather than inventing missing observations.
14
15
  * @evidence contracts/common.md#clear-and-simple-design This disk boundary owns untrusted JSON parsing and small schema predicates; filesystem replay and state-change decisions remain with the existing record consumers.
@@ -6,9 +6,10 @@ import type { TtscProjectRecord } from "./TtscProjectRecord";
6
6
  * run over it (`refreshProjectRecordFiles`), and the next generation's delivery
7
7
  * writes it whole.
8
8
  *
9
- * Validate consumed input codecs and membership policy before exposing the
10
- * parsed record. A JSON object header alone does not establish that observers
11
- * can safely interpret its nested evidence.
9
+ * Validate the optional invocation witness, consumed input codecs and
10
+ * membership policy before exposing the parsed record. A JSON object header
11
+ * alone does not establish that observers can safely interpret its nested
12
+ * evidence.
12
13
  *
13
14
  * @evidence contracts/common.md#principled-implementation Structural guards validate the record, every consumed input codec and membership policy; predicate proof uses the existing producer-schema normalizer rather than inventing missing observations.
14
15
  * @evidence contracts/common.md#clear-and-simple-design This disk boundary owns untrusted JSON parsing and small schema predicates; filesystem replay and state-change decisions remain with the existing record consumers.