@ttsc/unplugin 0.31.0 → 0.31.1

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 (218) hide show
  1. package/lib/core/bun/bun.d.cts +3 -2
  2. package/lib/core/bun/bun.d.mts +3 -2
  3. package/lib/core/bun/bun.d.ts +3 -2
  4. package/lib/core/bun/bun.js +8 -4
  5. package/lib/core/bun/bun.js.map +1 -1
  6. package/lib/core/bun/bun.mjs +8 -4
  7. package/lib/core/bun/bun.mjs.map +1 -1
  8. package/lib/core/observer/createInputObserver.js +6 -5
  9. package/lib/core/observer/createInputObserver.js.map +1 -1
  10. package/lib/core/observer/createInputObserver.mjs +6 -5
  11. package/lib/core/observer/createInputObserver.mjs.map +1 -1
  12. package/lib/core/observer/openIsolatedRecursiveWatch.d.cts +11 -12
  13. package/lib/core/observer/openIsolatedRecursiveWatch.d.mts +11 -12
  14. package/lib/core/observer/openIsolatedRecursiveWatch.d.ts +11 -12
  15. package/lib/core/observer/openIsolatedRecursiveWatch.js +11 -12
  16. package/lib/core/observer/openIsolatedRecursiveWatch.js.map +1 -1
  17. package/lib/core/observer/openIsolatedRecursiveWatch.mjs +11 -12
  18. package/lib/core/observer/openIsolatedRecursiveWatch.mjs.map +1 -1
  19. package/lib/core/transform/cache/TtscCachedProjectTransform.d.cts +12 -3
  20. package/lib/core/transform/cache/TtscCachedProjectTransform.d.mts +12 -3
  21. package/lib/core/transform/cache/TtscCachedProjectTransform.d.ts +12 -3
  22. package/lib/core/transform/cache/selectCachedGenerationAction.d.cts +2 -0
  23. package/lib/core/transform/cache/selectCachedGenerationAction.d.mts +2 -0
  24. package/lib/core/transform/cache/selectCachedGenerationAction.d.ts +2 -0
  25. package/lib/core/transform/cache/selectCachedGenerationAction.js +1 -1
  26. package/lib/core/transform/cache/selectCachedGenerationAction.js.map +1 -1
  27. package/lib/core/transform/cache/selectCachedGenerationAction.mjs +1 -1
  28. package/lib/core/transform/cache/selectCachedGenerationAction.mjs.map +1 -1
  29. package/lib/core/transform/deliverCachedTransform.d.cts +36 -0
  30. package/lib/core/transform/deliverCachedTransform.d.mts +36 -0
  31. package/lib/core/transform/deliverCachedTransform.d.ts +36 -0
  32. package/lib/core/transform/deliverCachedTransform.js +73 -0
  33. package/lib/core/transform/deliverCachedTransform.js.map +1 -0
  34. package/lib/core/transform/deliverCachedTransform.mjs +71 -0
  35. package/lib/core/transform/deliverCachedTransform.mjs.map +1 -0
  36. package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.d.cts +2 -2
  37. package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.d.mts +2 -2
  38. package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.d.ts +2 -2
  39. package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.js +6 -2
  40. package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.js.map +1 -1
  41. package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.mjs +6 -2
  42. package/lib/core/transform/envelope/selectDeclaredProjectInputKeys.mjs.map +1 -1
  43. package/lib/core/transform/envelope/selectExternalInputPaths.d.cts +3 -5
  44. package/lib/core/transform/envelope/selectExternalInputPaths.d.mts +3 -5
  45. package/lib/core/transform/envelope/selectExternalInputPaths.d.ts +3 -5
  46. package/lib/core/transform/envelope/selectExternalInputPaths.js +8 -7
  47. package/lib/core/transform/envelope/selectExternalInputPaths.js.map +1 -1
  48. package/lib/core/transform/envelope/selectExternalInputPaths.mjs +8 -7
  49. package/lib/core/transform/envelope/selectExternalInputPaths.mjs.map +1 -1
  50. package/lib/core/transform/filesystem/TtscTransformFilesystemOperations.d.cts +15 -12
  51. package/lib/core/transform/filesystem/TtscTransformFilesystemOperations.d.mts +15 -12
  52. package/lib/core/transform/filesystem/TtscTransformFilesystemOperations.d.ts +15 -12
  53. package/lib/core/transform/generation/selectTransformAttemptDisposition.d.cts +3 -1
  54. package/lib/core/transform/generation/selectTransformAttemptDisposition.d.mts +3 -1
  55. package/lib/core/transform/generation/selectTransformAttemptDisposition.d.ts +3 -1
  56. package/lib/core/transform/generation/selectTransformAttemptDisposition.js +3 -1
  57. package/lib/core/transform/generation/selectTransformAttemptDisposition.js.map +1 -1
  58. package/lib/core/transform/generation/selectTransformAttemptDisposition.mjs +3 -1
  59. package/lib/core/transform/generation/selectTransformAttemptDisposition.mjs.map +1 -1
  60. package/lib/core/transform/generation/transformProject.d.cts +9 -7
  61. package/lib/core/transform/generation/transformProject.d.mts +9 -7
  62. package/lib/core/transform/generation/transformProject.d.ts +9 -7
  63. package/lib/core/transform/generation/transformProject.js +14 -9
  64. package/lib/core/transform/generation/transformProject.js.map +1 -1
  65. package/lib/core/transform/generation/transformProject.mjs +14 -9
  66. package/lib/core/transform/generation/transformProject.mjs.map +1 -1
  67. package/lib/core/transform/inputs/preparePluginBuildEnvironments.d.cts +11 -4
  68. package/lib/core/transform/inputs/preparePluginBuildEnvironments.d.mts +11 -4
  69. package/lib/core/transform/inputs/preparePluginBuildEnvironments.d.ts +11 -4
  70. package/lib/core/transform/inputs/preparePluginBuildEnvironments.js +44 -7
  71. package/lib/core/transform/inputs/preparePluginBuildEnvironments.js.map +1 -1
  72. package/lib/core/transform/inputs/preparePluginBuildEnvironments.mjs +44 -7
  73. package/lib/core/transform/inputs/preparePluginBuildEnvironments.mjs.map +1 -1
  74. package/lib/core/transform/tracker/broker/WatchBroker.d.cts +14 -4
  75. package/lib/core/transform/tracker/broker/WatchBroker.d.mts +14 -4
  76. package/lib/core/transform/tracker/broker/WatchBroker.d.ts +14 -4
  77. package/lib/core/transform/tracker/broker/WatchBrokerTransport.d.cts +63 -0
  78. package/lib/core/transform/tracker/broker/WatchBrokerTransport.d.mts +63 -0
  79. package/lib/core/transform/tracker/broker/WatchBrokerTransport.d.ts +63 -0
  80. package/lib/core/transform/tracker/broker/WatchBrokerTransport.js +89 -0
  81. package/lib/core/transform/tracker/broker/WatchBrokerTransport.js.map +1 -0
  82. package/lib/core/transform/tracker/broker/WatchBrokerTransport.mjs +89 -0
  83. package/lib/core/transform/tracker/broker/WatchBrokerTransport.mjs.map +1 -0
  84. package/lib/core/transform/tracker/broker/drainWatchBroker.d.cts +8 -8
  85. package/lib/core/transform/tracker/broker/drainWatchBroker.d.mts +8 -8
  86. package/lib/core/transform/tracker/broker/drainWatchBroker.d.ts +8 -8
  87. package/lib/core/transform/tracker/broker/drainWatchBroker.js +12 -13
  88. package/lib/core/transform/tracker/broker/drainWatchBroker.js.map +1 -1
  89. package/lib/core/transform/tracker/broker/drainWatchBroker.mjs +12 -13
  90. package/lib/core/transform/tracker/broker/drainWatchBroker.mjs.map +1 -1
  91. package/lib/core/transform/tracker/broker/getWatchBroker.d.cts +18 -15
  92. package/lib/core/transform/tracker/broker/getWatchBroker.d.mts +18 -15
  93. package/lib/core/transform/tracker/broker/getWatchBroker.d.ts +18 -15
  94. package/lib/core/transform/tracker/broker/getWatchBroker.js +87 -17
  95. package/lib/core/transform/tracker/broker/getWatchBroker.js.map +1 -1
  96. package/lib/core/transform/tracker/broker/getWatchBroker.mjs +87 -17
  97. package/lib/core/transform/tracker/broker/getWatchBroker.mjs.map +1 -1
  98. package/lib/core/transform/tracker/broker/openBrokeredWatch.d.cts +5 -5
  99. package/lib/core/transform/tracker/broker/openBrokeredWatch.d.mts +5 -5
  100. package/lib/core/transform/tracker/broker/openBrokeredWatch.d.ts +5 -5
  101. package/lib/core/transform/tracker/broker/openBrokeredWatch.js +11 -14
  102. package/lib/core/transform/tracker/broker/openBrokeredWatch.js.map +1 -1
  103. package/lib/core/transform/tracker/broker/openBrokeredWatch.mjs +11 -14
  104. package/lib/core/transform/tracker/broker/openBrokeredWatch.mjs.map +1 -1
  105. package/lib/core/transform/tracker/broker/usesWatchBroker.d.cts +7 -7
  106. package/lib/core/transform/tracker/broker/usesWatchBroker.d.mts +7 -7
  107. package/lib/core/transform/tracker/broker/usesWatchBroker.d.ts +7 -7
  108. package/lib/core/transform/tracker/broker/usesWatchBroker.js +7 -7
  109. package/lib/core/transform/tracker/broker/usesWatchBroker.mjs +7 -7
  110. package/lib/core/transform/tracker/broker/watchBrokerSource.d.cts +9 -10
  111. package/lib/core/transform/tracker/broker/watchBrokerSource.d.mts +9 -10
  112. package/lib/core/transform/tracker/broker/watchBrokerSource.d.ts +9 -10
  113. package/lib/core/transform/tracker/broker/watchBrokerSource.js +10 -11
  114. package/lib/core/transform/tracker/broker/watchBrokerSource.js.map +1 -1
  115. package/lib/core/transform/tracker/broker/watchBrokerSource.mjs +10 -11
  116. package/lib/core/transform/tracker/broker/watchBrokerSource.mjs.map +1 -1
  117. package/lib/core/transform/transformTtsc.d.cts +7 -4
  118. package/lib/core/transform/transformTtsc.d.mts +7 -4
  119. package/lib/core/transform/transformTtsc.d.ts +7 -4
  120. package/lib/core/transform/transformTtsc.js +37 -92
  121. package/lib/core/transform/transformTtsc.js.map +1 -1
  122. package/lib/core/transform/transformTtsc.mjs +37 -92
  123. package/lib/core/transform/transformTtsc.mjs.map +1 -1
  124. package/lib/core/transform/validation/TtscGenerationProof.d.cts +105 -0
  125. package/lib/core/transform/validation/TtscGenerationProof.d.mts +105 -0
  126. package/lib/core/transform/validation/TtscGenerationProof.d.ts +105 -0
  127. package/lib/core/transform/validation/TtscGenerationProof.js +149 -0
  128. package/lib/core/transform/validation/TtscGenerationProof.js.map +1 -0
  129. package/lib/core/transform/validation/TtscGenerationProof.mjs +149 -0
  130. package/lib/core/transform/validation/TtscGenerationProof.mjs.map +1 -0
  131. package/lib/core/transform/validation/matchesCachedSource.d.cts +18 -15
  132. package/lib/core/transform/validation/matchesCachedSource.d.mts +18 -15
  133. package/lib/core/transform/validation/matchesCachedSource.d.ts +18 -15
  134. package/lib/core/transform/validation/matchesCachedSource.js +28 -22
  135. package/lib/core/transform/validation/matchesCachedSource.js.map +1 -1
  136. package/lib/core/transform/validation/matchesCachedSource.mjs +28 -22
  137. package/lib/core/transform/validation/matchesCachedSource.mjs.map +1 -1
  138. package/lib/core/transform/validation/matchesCompleteInputSnapshot.d.cts +3 -2
  139. package/lib/core/transform/validation/matchesCompleteInputSnapshot.d.mts +3 -2
  140. package/lib/core/transform/validation/matchesCompleteInputSnapshot.d.ts +3 -2
  141. package/lib/core/transform/validation/matchesCompleteInputSnapshot.js +4 -4
  142. package/lib/core/transform/validation/matchesCompleteInputSnapshot.js.map +1 -1
  143. package/lib/core/transform/validation/matchesCompleteInputSnapshot.mjs +4 -4
  144. package/lib/core/transform/validation/matchesCompleteInputSnapshot.mjs.map +1 -1
  145. package/lib/core/transform/validation/matchesNarrowPersistentInputs.d.cts +2 -1
  146. package/lib/core/transform/validation/matchesNarrowPersistentInputs.d.mts +2 -1
  147. package/lib/core/transform/validation/matchesNarrowPersistentInputs.d.ts +2 -1
  148. package/lib/core/transform/validation/matchesNarrowPersistentInputs.js +2 -2
  149. package/lib/core/transform/validation/matchesNarrowPersistentInputs.js.map +1 -1
  150. package/lib/core/transform/validation/matchesNarrowPersistentInputs.mjs +2 -2
  151. package/lib/core/transform/validation/matchesNarrowPersistentInputs.mjs.map +1 -1
  152. package/lib/core/transform/validation/matchesUniversalHostInputTrees.d.cts +3 -2
  153. package/lib/core/transform/validation/matchesUniversalHostInputTrees.d.mts +3 -2
  154. package/lib/core/transform/validation/matchesUniversalHostInputTrees.d.ts +3 -2
  155. package/lib/core/transform/validation/matchesUniversalHostInputTrees.js +5 -3
  156. package/lib/core/transform/validation/matchesUniversalHostInputTrees.js.map +1 -1
  157. package/lib/core/transform/validation/matchesUniversalHostInputTrees.mjs +5 -3
  158. package/lib/core/transform/validation/matchesUniversalHostInputTrees.mjs.map +1 -1
  159. package/lib/core/transform/validation/matchesUniversalHostInputs.d.cts +3 -2
  160. package/lib/core/transform/validation/matchesUniversalHostInputs.d.mts +3 -2
  161. package/lib/core/transform/validation/matchesUniversalHostInputs.d.ts +3 -2
  162. package/lib/core/transform/validation/matchesUniversalHostInputs.js +5 -5
  163. package/lib/core/transform/validation/matchesUniversalHostInputs.js.map +1 -1
  164. package/lib/core/transform/validation/matchesUniversalHostInputs.mjs +5 -5
  165. package/lib/core/transform/validation/matchesUniversalHostInputs.mjs.map +1 -1
  166. package/lib/core/transform/validation/nativeInputPredicatesHold.d.cts +5 -4
  167. package/lib/core/transform/validation/nativeInputPredicatesHold.d.mts +5 -4
  168. package/lib/core/transform/validation/nativeInputPredicatesHold.d.ts +5 -4
  169. package/lib/core/transform/validation/nativeInputPredicatesHold.js +31 -12
  170. package/lib/core/transform/validation/nativeInputPredicatesHold.js.map +1 -1
  171. package/lib/core/transform/validation/nativeInputPredicatesHold.mjs +31 -12
  172. package/lib/core/transform/validation/nativeInputPredicatesHold.mjs.map +1 -1
  173. package/lib/core/transform/validation/notificationsProveProgramUnchanged.d.cts +2 -1
  174. package/lib/core/transform/validation/notificationsProveProgramUnchanged.d.mts +2 -1
  175. package/lib/core/transform/validation/notificationsProveProgramUnchanged.d.ts +2 -1
  176. package/lib/core/transform/validation/notificationsProveProgramUnchanged.js +2 -2
  177. package/lib/core/transform/validation/notificationsProveProgramUnchanged.js.map +1 -1
  178. package/lib/core/transform/validation/notificationsProveProgramUnchanged.mjs +2 -2
  179. package/lib/core/transform/validation/notificationsProveProgramUnchanged.mjs.map +1 -1
  180. package/lib/core/transform/watch/notifyWatchInputs.js +3 -0
  181. package/lib/core/transform/watch/notifyWatchInputs.js.map +1 -1
  182. package/lib/core/transform/watch/notifyWatchInputs.mjs +3 -0
  183. package/lib/core/transform/watch/notifyWatchInputs.mjs.map +1 -1
  184. package/lib/core/turbopack/turbopack.js +2 -1
  185. package/lib/core/turbopack/turbopack.js.map +1 -1
  186. package/lib/core/turbopack/turbopack.mjs +2 -1
  187. package/lib/core/turbopack/turbopack.mjs.map +1 -1
  188. package/package.json +3 -3
  189. package/src/core/bun/bun.ts +8 -4
  190. package/src/core/observer/createInputObserver.ts +6 -5
  191. package/src/core/observer/openIsolatedRecursiveWatch.ts +11 -12
  192. package/src/core/transform/cache/TtscCachedProjectTransform.ts +13 -3
  193. package/src/core/transform/cache/selectCachedGenerationAction.ts +9 -1
  194. package/src/core/transform/deliverCachedTransform.ts +97 -0
  195. package/src/core/transform/envelope/selectDeclaredProjectInputKeys.ts +5 -2
  196. package/src/core/transform/envelope/selectExternalInputPaths.ts +7 -7
  197. package/src/core/transform/filesystem/TtscTransformFilesystemOperations.ts +15 -12
  198. package/src/core/transform/generation/selectTransformAttemptDisposition.ts +3 -1
  199. package/src/core/transform/generation/transformProject.ts +13 -9
  200. package/src/core/transform/inputs/preparePluginBuildEnvironments.ts +41 -7
  201. package/src/core/transform/tracker/broker/WatchBroker.ts +15 -4
  202. package/src/core/transform/tracker/broker/WatchBrokerTransport.ts +82 -0
  203. package/src/core/transform/tracker/broker/drainWatchBroker.ts +12 -13
  204. package/src/core/transform/tracker/broker/getWatchBroker.ts +89 -18
  205. package/src/core/transform/tracker/broker/openBrokeredWatch.ts +11 -14
  206. package/src/core/transform/tracker/broker/usesWatchBroker.ts +7 -7
  207. package/src/core/transform/tracker/broker/watchBrokerSource.ts +10 -11
  208. package/src/core/transform/transformTtsc.ts +36 -92
  209. package/src/core/transform/validation/TtscGenerationProof.ts +201 -0
  210. package/src/core/transform/validation/matchesCachedSource.ts +27 -21
  211. package/src/core/transform/validation/matchesCompleteInputSnapshot.ts +5 -3
  212. package/src/core/transform/validation/matchesNarrowPersistentInputs.ts +3 -1
  213. package/src/core/transform/validation/matchesUniversalHostInputTrees.ts +6 -2
  214. package/src/core/transform/validation/matchesUniversalHostInputs.ts +6 -4
  215. package/src/core/transform/validation/nativeInputPredicatesHold.ts +36 -14
  216. package/src/core/transform/validation/notificationsProveProgramUnchanged.ts +3 -1
  217. package/src/core/transform/watch/notifyWatchInputs.ts +3 -0
  218. package/src/core/turbopack/turbopack.ts +2 -1
@@ -2,18 +2,17 @@
2
2
  * Open one recursive observer inside the transform core's isolated watch broker
3
3
  * instead of the host process.
4
4
  *
5
- * On Windows, Node's fs-event backend can abort the process that owns a watch,
6
- * for instance with `Assertion failed: !_wcsnicmp(filename, dir, dirlen)` in
7
- * `src\win\fs-event.c` (samchon/ttsc#1411). On macOS, libuv serves every
8
- * directory watch of a loop through one FSEventStream and re-creates it
9
- * whenever any watch opens or closes, losing the events in between
10
- * (samchon/ttsc#1418), where the broker opens one stream per watch. The
11
- * observer's scopes get the isolation the transform core's trackers have,
12
- * through the same registration (`openBrokeredWatch`) with a sink of their own
13
- * that forwards events (samchon/ttsc#1485). Attributed events reach `listener`
14
- * with a joined caller-directory path; unattributed events use null. A failed
15
- * registration reaches `onError`, which hands the scope's entries to the
16
- * bounded poll.
5
+ * On Windows, ttsc's direct native helper excludes access-only notifications
6
+ * and reports actual mutation, loss and failure through the same broker sink.
7
+ * On macOS, libuv serves every directory watch of a loop through one
8
+ * FSEventStream and re-creates it whenever any watch opens or closes, losing
9
+ * the events in between (samchon/ttsc#1418), where the broker opens one stream
10
+ * per watch. The observer's scopes get the isolation the transform core's
11
+ * trackers have, through the same registration (`openBrokeredWatch`) with a
12
+ * sink of their own that forwards events (samchon/ttsc#1485). Attributed events
13
+ * reach `listener` with a joined caller-directory path; unattributed events use
14
+ * null. A failed registration reaches `onError`, which hands the scope's
15
+ * entries to the bounded poll.
17
16
  *
18
17
  * Registration completes asynchronously, and FSEvents can later drop events
19
18
  * (samchon/ttsc#1425). Until the broker confirms the watch, and whenever it
@@ -8,18 +8,17 @@ var openBrokeredWatch = require('../transform/tracker/broker/openBrokeredWatch.j
8
8
  * Open one recursive observer inside the transform core's isolated watch broker
9
9
  * instead of the host process.
10
10
  *
11
- * On Windows, Node's fs-event backend can abort the process that owns a watch,
12
- * for instance with `Assertion failed: !_wcsnicmp(filename, dir, dirlen)` in
13
- * `src\win\fs-event.c` (samchon/ttsc#1411). On macOS, libuv serves every
14
- * directory watch of a loop through one FSEventStream and re-creates it
15
- * whenever any watch opens or closes, losing the events in between
16
- * (samchon/ttsc#1418), where the broker opens one stream per watch. The
17
- * observer's scopes get the isolation the transform core's trackers have,
18
- * through the same registration (`openBrokeredWatch`) with a sink of their own
19
- * that forwards events (samchon/ttsc#1485). Attributed events reach `listener`
20
- * with a joined caller-directory path; unattributed events use null. A failed
21
- * registration reaches `onError`, which hands the scope's entries to the
22
- * bounded poll.
11
+ * On Windows, ttsc's direct native helper excludes access-only notifications
12
+ * and reports actual mutation, loss and failure through the same broker sink.
13
+ * On macOS, libuv serves every directory watch of a loop through one
14
+ * FSEventStream and re-creates it whenever any watch opens or closes, losing
15
+ * the events in between (samchon/ttsc#1418), where the broker opens one stream
16
+ * per watch. The observer's scopes get the isolation the transform core's
17
+ * trackers have, through the same registration (`openBrokeredWatch`) with a
18
+ * sink of their own that forwards events (samchon/ttsc#1485). Attributed events
19
+ * reach `listener` with a joined caller-directory path; unattributed events use
20
+ * null. A failed registration reaches `onError`, which hands the scope's
21
+ * entries to the bounded poll.
23
22
  *
24
23
  * Registration completes asynchronously, and FSEvents can later drop events
25
24
  * (samchon/ttsc#1425). Until the broker confirms the watch, and whenever it
@@ -1 +1 @@
1
- {"version":3,"file":"openIsolatedRecursiveWatch.js","sources":["../../../src/core/observer/openIsolatedRecursiveWatch.ts"],"sourcesContent":[null],"names":["openBrokeredWatch","DEFAULT_FILESYSTEM_OPERATIONS"],"mappings":";;;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;AACG,SAAU,0BAA0B,CACxC,IAAY,EACZ,QAA0D,EAC1D,OAAmB,EACnB,MAAuC,EACvC,SAAkB,EAAA;IAElB,IAAI,MAAM,GAAG,KAAK;IAClB,IAAI,MAAM,GAAG,KAAK;IAClB,MAAM,OAAO,GAAG,MAAW;AACzB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAAE,YAAA,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;AAClD,IAAA,CAAC;AACD,IAAA,MAAM,KAAK,GAAGA,mCAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;AACtE,QAAA,SAAS,EAAE,IAAI;;;AAGf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,UAAU,EAAEC,2DAA6B;AACzC,QAAA,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACjD,QAAA,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,KAAI;gBACxC,IAAI,CAAC,MAAM,EAAE;oBACX,QAAQ,CACN,SAAS,EACT,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAC1D;gBACH;YACF,CAAC;YACD,MAAM,EAAE,MAAK;gBACX,IAAI,MAAM,IAAI,MAAM;oBAAE;gBACtB,MAAM,GAAG,IAAI;AACb,gBAAA,OAAO,EAAE;YACX,CAAC;AACD,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,QAAQ,EAAE,MAAM,SAAS;AAC1B,SAAA;AACF,KAAA,CAAC;IACF,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9B,OAAO;QACL,KAAK,EAAE,MAAK;YACV,MAAM,GAAG,IAAI;YACb,KAAK,CAAC,KAAK,EAAE;QACf,CAAC;KACF;AACH;;;;"}
1
+ {"version":3,"file":"openIsolatedRecursiveWatch.js","sources":["../../../src/core/observer/openIsolatedRecursiveWatch.ts"],"sourcesContent":[null],"names":["openBrokeredWatch","DEFAULT_FILESYSTEM_OPERATIONS"],"mappings":";;;;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACG,SAAU,0BAA0B,CACxC,IAAY,EACZ,QAA0D,EAC1D,OAAmB,EACnB,MAAuC,EACvC,SAAkB,EAAA;IAElB,IAAI,MAAM,GAAG,KAAK;IAClB,IAAI,MAAM,GAAG,KAAK;IAClB,MAAM,OAAO,GAAG,MAAW;AACzB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAAE,YAAA,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;AAClD,IAAA,CAAC;AACD,IAAA,MAAM,KAAK,GAAGA,mCAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;AACtE,QAAA,SAAS,EAAE,IAAI;;;AAGf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,UAAU,EAAEC,2DAA6B;AACzC,QAAA,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACjD,QAAA,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,KAAI;gBACxC,IAAI,CAAC,MAAM,EAAE;oBACX,QAAQ,CACN,SAAS,EACT,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAC1D;gBACH;YACF,CAAC;YACD,MAAM,EAAE,MAAK;gBACX,IAAI,MAAM,IAAI,MAAM;oBAAE;gBACtB,MAAM,GAAG,IAAI;AACb,gBAAA,OAAO,EAAE;YACX,CAAC;AACD,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,QAAQ,EAAE,MAAM,SAAS;AAC1B,SAAA;AACF,KAAA,CAAC;IACF,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9B,OAAO;QACL,KAAK,EAAE,MAAK;YACV,MAAM,GAAG,IAAI;YACb,KAAK,CAAC,KAAK,EAAE;QACf,CAAC;KACF;AACH;;;;"}
@@ -6,18 +6,17 @@ import { openBrokeredWatch } from '../transform/tracker/broker/openBrokeredWatch
6
6
  * Open one recursive observer inside the transform core's isolated watch broker
7
7
  * instead of the host process.
8
8
  *
9
- * On Windows, Node's fs-event backend can abort the process that owns a watch,
10
- * for instance with `Assertion failed: !_wcsnicmp(filename, dir, dirlen)` in
11
- * `src\win\fs-event.c` (samchon/ttsc#1411). On macOS, libuv serves every
12
- * directory watch of a loop through one FSEventStream and re-creates it
13
- * whenever any watch opens or closes, losing the events in between
14
- * (samchon/ttsc#1418), where the broker opens one stream per watch. The
15
- * observer's scopes get the isolation the transform core's trackers have,
16
- * through the same registration (`openBrokeredWatch`) with a sink of their own
17
- * that forwards events (samchon/ttsc#1485). Attributed events reach `listener`
18
- * with a joined caller-directory path; unattributed events use null. A failed
19
- * registration reaches `onError`, which hands the scope's entries to the
20
- * bounded poll.
9
+ * On Windows, ttsc's direct native helper excludes access-only notifications
10
+ * and reports actual mutation, loss and failure through the same broker sink.
11
+ * On macOS, libuv serves every directory watch of a loop through one
12
+ * FSEventStream and re-creates it whenever any watch opens or closes, losing
13
+ * the events in between (samchon/ttsc#1418), where the broker opens one stream
14
+ * per watch. The observer's scopes get the isolation the transform core's
15
+ * trackers have, through the same registration (`openBrokeredWatch`) with a
16
+ * sink of their own that forwards events (samchon/ttsc#1485). Attributed events
17
+ * reach `listener` with a joined caller-directory path; unattributed events use
18
+ * null. A failed registration reaches `onError`, which hands the scope's
19
+ * entries to the bounded poll.
21
20
  *
22
21
  * Registration completes asynchronously, and FSEvents can later drop events
23
22
  * (samchon/ttsc#1425). Until the broker confirms the watch, and whenever it
@@ -1 +1 @@
1
- {"version":3,"file":"openIsolatedRecursiveWatch.mjs","sources":["../../../src/core/observer/openIsolatedRecursiveWatch.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;AACG,SAAU,0BAA0B,CACxC,IAAY,EACZ,QAA0D,EAC1D,OAAmB,EACnB,MAAuC,EACvC,SAAkB,EAAA;IAElB,IAAI,MAAM,GAAG,KAAK;IAClB,IAAI,MAAM,GAAG,KAAK;IAClB,MAAM,OAAO,GAAG,MAAW;AACzB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAAE,YAAA,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;AAClD,IAAA,CAAC;AACD,IAAA,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;AACtE,QAAA,SAAS,EAAE,IAAI;;;AAGf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,UAAU,EAAE,6BAA6B;AACzC,QAAA,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACjD,QAAA,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,KAAI;gBACxC,IAAI,CAAC,MAAM,EAAE;oBACX,QAAQ,CACN,SAAS,EACT,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAC1D;gBACH;YACF,CAAC;YACD,MAAM,EAAE,MAAK;gBACX,IAAI,MAAM,IAAI,MAAM;oBAAE;gBACtB,MAAM,GAAG,IAAI;AACb,gBAAA,OAAO,EAAE;YACX,CAAC;AACD,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,QAAQ,EAAE,MAAM,SAAS;AAC1B,SAAA;AACF,KAAA,CAAC;IACF,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9B,OAAO;QACL,KAAK,EAAE,MAAK;YACV,MAAM,GAAG,IAAI;YACb,KAAK,CAAC,KAAK,EAAE;QACf,CAAC;KACF;AACH;;;;"}
1
+ {"version":3,"file":"openIsolatedRecursiveWatch.mjs","sources":["../../../src/core/observer/openIsolatedRecursiveWatch.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCG;AACG,SAAU,0BAA0B,CACxC,IAAY,EACZ,QAA0D,EAC1D,OAAmB,EACnB,MAAuC,EACvC,SAAkB,EAAA;IAElB,IAAI,MAAM,GAAG,KAAK;IAClB,IAAI,MAAM,GAAG,KAAK;IAClB,MAAM,OAAO,GAAG,MAAW;AACzB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;AAAE,YAAA,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;AAClD,IAAA,CAAC;AACD,IAAA,MAAM,KAAK,GAAG,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;AACtE,QAAA,SAAS,EAAE,IAAI;;;AAGf,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,UAAU,EAAE,6BAA6B;AACzC,QAAA,IAAI,SAAS,KAAK,SAAS,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AACjD,QAAA,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,KAAI;gBACxC,IAAI,CAAC,MAAM,EAAE;oBACX,QAAQ,CACN,SAAS,EACT,QAAQ,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAC1D;gBACH;YACF,CAAC;YACD,MAAM,EAAE,MAAK;gBACX,IAAI,MAAM,IAAI,MAAM;oBAAE;gBACtB,MAAM,GAAG,IAAI;AACb,gBAAA,OAAO,EAAE;YACX,CAAC;AACD,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,YAAY,EAAE,OAAO;AACrB,YAAA,QAAQ,EAAE,MAAM,SAAS;AAC1B,SAAA;AACF,KAAA,CAAC;IACF,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IAC9B,OAAO;QACL,KAAK,EAAE,MAAK;YACV,MAAM,GAAG,IAAI;YACb,KAAK,CAAC,KAAK,EAAE;QACf,CAAC;KACF;AACH;;;;"}
@@ -205,11 +205,20 @@ export interface TtscCachedProjectTransform {
205
205
  projectSnapshotComplete?: boolean;
206
206
  /**
207
207
  * A locally admitted answer with incomplete host observations cannot be
208
- * retained for resident, shared or persistent reuse. Successful answers need
209
- * only explicit unavailable observations; diagnostic admission keeps its
210
- * existing current-verdict policy. This flag never grants admission itself.
208
+ * retained for shared or persistent reuse. A separately admitted coherent
209
+ * local success may share first deliveries only in its explicit nonwatching
210
+ * pass (passDeliveryOnly). Successful answers need only explicit unavailable
211
+ * observations; diagnostic admission keeps its existing current-verdict
212
+ * policy. This flag never grants admission itself.
211
213
  */
212
214
  freshDeliveryOnly?: boolean;
215
+ /**
216
+ * Coherent local success whose only missing authority is host observation.
217
+ * WARNING (#1713): this grants neither persistent nor pooled reuse. The
218
+ * common proof owner requires an explicit nonwatching pass, a recorded
219
+ * source, first delivery and actual host-cache withdrawal on every delivery.
220
+ */
221
+ passDeliveryOnly?: boolean;
213
222
  /** Absolute path to the directory that owns the tsconfig. */
214
223
  projectRoot: string;
215
224
  /**
@@ -205,11 +205,20 @@ export interface TtscCachedProjectTransform {
205
205
  projectSnapshotComplete?: boolean;
206
206
  /**
207
207
  * A locally admitted answer with incomplete host observations cannot be
208
- * retained for resident, shared or persistent reuse. Successful answers need
209
- * only explicit unavailable observations; diagnostic admission keeps its
210
- * existing current-verdict policy. This flag never grants admission itself.
208
+ * retained for shared or persistent reuse. A separately admitted coherent
209
+ * local success may share first deliveries only in its explicit nonwatching
210
+ * pass (passDeliveryOnly). Successful answers need only explicit unavailable
211
+ * observations; diagnostic admission keeps its existing current-verdict
212
+ * policy. This flag never grants admission itself.
211
213
  */
212
214
  freshDeliveryOnly?: boolean;
215
+ /**
216
+ * Coherent local success whose only missing authority is host observation.
217
+ * WARNING (#1713): this grants neither persistent nor pooled reuse. The
218
+ * common proof owner requires an explicit nonwatching pass, a recorded
219
+ * source, first delivery and actual host-cache withdrawal on every delivery.
220
+ */
221
+ passDeliveryOnly?: boolean;
213
222
  /** Absolute path to the directory that owns the tsconfig. */
214
223
  projectRoot: string;
215
224
  /**
@@ -205,11 +205,20 @@ export interface TtscCachedProjectTransform {
205
205
  projectSnapshotComplete?: boolean;
206
206
  /**
207
207
  * A locally admitted answer with incomplete host observations cannot be
208
- * retained for resident, shared or persistent reuse. Successful answers need
209
- * only explicit unavailable observations; diagnostic admission keeps its
210
- * existing current-verdict policy. This flag never grants admission itself.
208
+ * retained for shared or persistent reuse. A separately admitted coherent
209
+ * local success may share first deliveries only in its explicit nonwatching
210
+ * pass (passDeliveryOnly). Successful answers need only explicit unavailable
211
+ * observations; diagnostic admission keeps its existing current-verdict
212
+ * policy. This flag never grants admission itself.
211
213
  */
212
214
  freshDeliveryOnly?: boolean;
215
+ /**
216
+ * Coherent local success whose only missing authority is host observation.
217
+ * WARNING (#1713): this grants neither persistent nor pooled reuse. The
218
+ * common proof owner requires an explicit nonwatching pass, a recorded
219
+ * source, first delivery and actual host-cache withdrawal on every delivery.
220
+ */
221
+ passDeliveryOnly?: boolean;
213
222
  /** Absolute path to the directory that owns the tsconfig. */
214
223
  projectRoot: string;
215
224
  /**
@@ -1,3 +1,4 @@
1
+ import type { TtscGenerationProof } from "../validation/TtscGenerationProof.cjs";
1
2
  import type { TtscCachedProjectTransform } from "./TtscCachedProjectTransform.cjs";
2
3
  import type { TtscTransformCache } from "./TtscTransformCache.cjs";
3
4
  /**
@@ -37,4 +38,5 @@ export declare function selectCachedGenerationAction(props: {
37
38
  generation: Promise<TtscCachedProjectTransform>;
38
39
  key: string;
39
40
  source: string;
41
+ proof?: TtscGenerationProof.Transaction;
40
42
  }): "serve" | "retry" | "capture";
@@ -1,3 +1,4 @@
1
+ import type { TtscGenerationProof } from "../validation/TtscGenerationProof.mjs";
1
2
  import type { TtscCachedProjectTransform } from "./TtscCachedProjectTransform.mjs";
2
3
  import type { TtscTransformCache } from "./TtscTransformCache.mjs";
3
4
  /**
@@ -37,4 +38,5 @@ export declare function selectCachedGenerationAction(props: {
37
38
  generation: Promise<TtscCachedProjectTransform>;
38
39
  key: string;
39
40
  source: string;
41
+ proof?: TtscGenerationProof.Transaction;
40
42
  }): "serve" | "retry" | "capture";
@@ -1,3 +1,4 @@
1
+ import type { TtscGenerationProof } from "../validation/TtscGenerationProof";
1
2
  import type { TtscCachedProjectTransform } from "./TtscCachedProjectTransform";
2
3
  import type { TtscTransformCache } from "./TtscTransformCache";
3
4
  /**
@@ -37,4 +38,5 @@ export declare function selectCachedGenerationAction(props: {
37
38
  generation: Promise<TtscCachedProjectTransform>;
38
39
  key: string;
39
40
  source: string;
41
+ proof?: TtscGenerationProof.Transaction;
40
42
  }): "serve" | "retry" | "capture";
@@ -40,7 +40,7 @@ function selectCachedGenerationAction(props) {
40
40
  projectRoot: props.cached.projectRoot,
41
41
  result: props.cached.result,
42
42
  }) &&
43
- matchesCachedSource.matchesCachedSource(props.cached, props.file, props.source, props.epoch)) {
43
+ matchesCachedSource.matchesCachedSource(props.cached, props.file, props.source, props.epoch, props.proof)) {
44
44
  return "serve";
45
45
  }
46
46
  evictGeneration.evictGeneration(props.cache, props.key, props.generation);
@@ -1 +1 @@
1
- {"version":3,"file":"selectCachedGenerationAction.js","sources":["../../../../src/core/transform/cache/selectCachedGenerationAction.ts"],"sourcesContent":[null],"names":["isVolatileFile","envelopeDerivation","matchesCachedSource","evictGeneration"],"mappings":";;;;;;;AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,4BAA4B,CAAC,KAQ5C,EAAA;IACC,IACE,CAACA,6BAAc,CAACC,qCAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;AACrC,QAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;KAC5B,CAAC;AACF,QAAAC,uCAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,EACxE;AACA,QAAA,OAAO,OAAO;IAChB;AACA,IAAAC,+BAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC;IACzD,OAAO,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,OAAO,GAAG,SAAS;AACxE;;;;"}
1
+ {"version":3,"file":"selectCachedGenerationAction.js","sources":["../../../../src/core/transform/cache/selectCachedGenerationAction.ts"],"sourcesContent":[null],"names":["isVolatileFile","envelopeDerivation","matchesCachedSource","evictGeneration"],"mappings":";;;;;;;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,4BAA4B,CAAC,KAS5C,EAAA;IACC,IACE,CAACA,6BAAc,CAACC,qCAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;AACrC,QAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;KAC5B,CAAC;QACFC,uCAAmB,CACjB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,CACZ,EACD;AACA,QAAA,OAAO,OAAO;IAChB;AACA,IAAAC,+BAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC;IACzD,OAAO,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,OAAO,GAAG,SAAS;AACxE;;;;"}
@@ -38,7 +38,7 @@ function selectCachedGenerationAction(props) {
38
38
  projectRoot: props.cached.projectRoot,
39
39
  result: props.cached.result,
40
40
  }) &&
41
- matchesCachedSource(props.cached, props.file, props.source, props.epoch)) {
41
+ matchesCachedSource(props.cached, props.file, props.source, props.epoch, props.proof)) {
42
42
  return "serve";
43
43
  }
44
44
  evictGeneration(props.cache, props.key, props.generation);
@@ -1 +1 @@
1
- {"version":3,"file":"selectCachedGenerationAction.mjs","sources":["../../../../src/core/transform/cache/selectCachedGenerationAction.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,4BAA4B,CAAC,KAQ5C,EAAA;IACC,IACE,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;AACrC,QAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;KAC5B,CAAC;AACF,QAAA,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,EACxE;AACA,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC;IACzD,OAAO,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,OAAO,GAAG,SAAS;AACxE;;;;"}
1
+ {"version":3,"file":"selectCachedGenerationAction.mjs","sources":["../../../../src/core/transform/cache/selectCachedGenerationAction.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACG,SAAU,4BAA4B,CAAC,KAS5C,EAAA;IACC,IACE,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAChD,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;AACrC,QAAA,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;KAC5B,CAAC;QACF,mBAAmB,CACjB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,KAAK,CACZ,EACD;AACA,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC;IACzD,OAAO,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,OAAO,GAAG,SAAS;AACxE;;;;"}
@@ -0,0 +1,36 @@
1
+ import type { TtscCachedProjectTransform } from "./cache/TtscCachedProjectTransform.cjs";
2
+ import type { TtscTransformCache } from "./cache/TtscTransformCache.cjs";
3
+ import type { TtscTransformHooks } from "./watch/TtscTransformHooks.cjs";
4
+ import type { TtscWatchSelection } from "./watch/TtscWatchSelection.cjs";
5
+ /**
6
+ * Deliver both captured and reused generations through one failure boundary.
7
+ *
8
+ * WARNING (#1713): host capabilities and callbacks apply to every delivery,
9
+ * including cache hits. Incomplete local results must never survive a failed
10
+ * handoff or acquire a persistent record. Stable ordinary generations retain
11
+ * their existing callback-failure recovery policy.
12
+ *
13
+ * A missing program output is an admitted absence: notify the same selection
14
+ * inputs and return control to the host. Compile failure retains its existing
15
+ * terminal policy through selectOrEvict and reports repair inputs.
16
+ *
17
+ * @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
18
+ * @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
19
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
20
+ * @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
21
+ * @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
22
+ * @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
23
+ * @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
24
+ * @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
25
+ */
26
+ export declare function deliverCachedTransform(props: {
27
+ cache: TtscTransformCache | undefined;
28
+ cached: TtscCachedProjectTransform;
29
+ generation: Promise<TtscCachedProjectTransform>;
30
+ key: string;
31
+ epoch: number | undefined;
32
+ file: string;
33
+ source: string;
34
+ hooks: TtscTransformHooks | undefined;
35
+ selection: TtscWatchSelection;
36
+ }): import("./TtscTransformResult.cjs").TtscTransformResult | undefined;
@@ -0,0 +1,36 @@
1
+ import type { TtscCachedProjectTransform } from "./cache/TtscCachedProjectTransform.mjs";
2
+ import type { TtscTransformCache } from "./cache/TtscTransformCache.mjs";
3
+ import type { TtscTransformHooks } from "./watch/TtscTransformHooks.mjs";
4
+ import type { TtscWatchSelection } from "./watch/TtscWatchSelection.mjs";
5
+ /**
6
+ * Deliver both captured and reused generations through one failure boundary.
7
+ *
8
+ * WARNING (#1713): host capabilities and callbacks apply to every delivery,
9
+ * including cache hits. Incomplete local results must never survive a failed
10
+ * handoff or acquire a persistent record. Stable ordinary generations retain
11
+ * their existing callback-failure recovery policy.
12
+ *
13
+ * A missing program output is an admitted absence: notify the same selection
14
+ * inputs and return control to the host. Compile failure retains its existing
15
+ * terminal policy through selectOrEvict and reports repair inputs.
16
+ *
17
+ * @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
18
+ * @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
19
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
20
+ * @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
21
+ * @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
22
+ * @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
23
+ * @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
24
+ * @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
25
+ */
26
+ export declare function deliverCachedTransform(props: {
27
+ cache: TtscTransformCache | undefined;
28
+ cached: TtscCachedProjectTransform;
29
+ generation: Promise<TtscCachedProjectTransform>;
30
+ key: string;
31
+ epoch: number | undefined;
32
+ file: string;
33
+ source: string;
34
+ hooks: TtscTransformHooks | undefined;
35
+ selection: TtscWatchSelection;
36
+ }): import("./TtscTransformResult.mjs").TtscTransformResult | undefined;
@@ -0,0 +1,36 @@
1
+ import type { TtscCachedProjectTransform } from "./cache/TtscCachedProjectTransform";
2
+ import type { TtscTransformCache } from "./cache/TtscTransformCache";
3
+ import type { TtscTransformHooks } from "./watch/TtscTransformHooks";
4
+ import type { TtscWatchSelection } from "./watch/TtscWatchSelection";
5
+ /**
6
+ * Deliver both captured and reused generations through one failure boundary.
7
+ *
8
+ * WARNING (#1713): host capabilities and callbacks apply to every delivery,
9
+ * including cache hits. Incomplete local results must never survive a failed
10
+ * handoff or acquire a persistent record. Stable ordinary generations retain
11
+ * their existing callback-failure recovery policy.
12
+ *
13
+ * A missing program output is an admitted absence: notify the same selection
14
+ * inputs and return control to the host. Compile failure retains its existing
15
+ * terminal policy through selectOrEvict and reports repair inputs.
16
+ *
17
+ * @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
18
+ * @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
19
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
20
+ * @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
21
+ * @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
22
+ * @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
23
+ * @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
24
+ * @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
25
+ */
26
+ export declare function deliverCachedTransform(props: {
27
+ cache: TtscTransformCache | undefined;
28
+ cached: TtscCachedProjectTransform;
29
+ generation: Promise<TtscCachedProjectTransform>;
30
+ key: string;
31
+ epoch: number | undefined;
32
+ file: string;
33
+ source: string;
34
+ hooks: TtscTransformHooks | undefined;
35
+ selection: TtscWatchSelection;
36
+ }): import("./TtscTransformResult").TtscTransformResult | undefined;
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var evictGeneration = require('./cache/evictGeneration.js');
4
+ var selectOrEvict = require('./cache/selectOrEvict.js');
5
+ var reportMissingProgramOutput = require('./diagnostics/reportMissingProgramOutput.js');
6
+ var reportSuccessDiagnostics = require('./diagnostics/reportSuccessDiagnostics.js');
7
+ var TtscMissingProgramOutputError = require('./errors/TtscMissingProgramOutputError.js');
8
+ var createTransformResult = require('./utils/createTransformResult.js');
9
+ var TtscGenerationProof = require('./validation/TtscGenerationProof.js');
10
+ var markCachedSourceServed = require('./validation/markCachedSourceServed.js');
11
+ var notifyFailedGenerationInputs = require('./watch/notifyFailedGenerationInputs.js');
12
+ var notifyVolatileDelivery = require('./watch/notifyVolatileDelivery.js');
13
+ var notifyWatchInputs = require('./watch/notifyWatchInputs.js');
14
+
15
+ /**
16
+ * Deliver both captured and reused generations through one failure boundary.
17
+ *
18
+ * WARNING (#1713): host capabilities and callbacks apply to every delivery,
19
+ * including cache hits. Incomplete local results must never survive a failed
20
+ * handoff or acquire a persistent record. Stable ordinary generations retain
21
+ * their existing callback-failure recovery policy.
22
+ *
23
+ * A missing program output is an admitted absence: notify the same selection
24
+ * inputs and return control to the host. Compile failure retains its existing
25
+ * terminal policy through selectOrEvict and reports repair inputs.
26
+ *
27
+ * @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
28
+ * @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
29
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
30
+ * @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
31
+ * @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
32
+ * @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
33
+ * @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
34
+ * @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
35
+ */
36
+ function deliverCachedTransform(props) {
37
+ const { cache, cached, generation, key, epoch, file, source, hooks, selection, } = props;
38
+ try {
39
+ TtscGenerationProof.TtscGenerationProof.admitFreshOnly(cached, cache, key, generation, epoch, hooks);
40
+ reportSuccessDiagnostics.reportSuccessDiagnostics(cached, epoch);
41
+ let output;
42
+ try {
43
+ output = selectOrEvict.selectOrEvict(cache, key, generation, epoch, {
44
+ file,
45
+ projectRoot: cached.projectRoot,
46
+ result: cached.result,
47
+ tsconfig: cached.tsconfig,
48
+ });
49
+ }
50
+ catch (error) {
51
+ if (!(error instanceof TtscMissingProgramOutputError.TtscMissingProgramOutputError)) {
52
+ notifyFailedGenerationInputs.notifyFailedGenerationInputs(hooks, cached, file, selection);
53
+ throw error;
54
+ }
55
+ reportMissingProgramOutput.reportMissingProgramOutput(cached, error, epoch);
56
+ notifyWatchInputs.notifyWatchInputs(hooks, cached, file, selection);
57
+ markCachedSourceServed.markCachedSourceServed(cached, file);
58
+ return undefined;
59
+ }
60
+ notifyWatchInputs.notifyWatchInputs(hooks, cached, file, selection);
61
+ markCachedSourceServed.markCachedSourceServed(cached, file);
62
+ notifyVolatileDelivery.notifyVolatileDelivery(hooks, cached, file);
63
+ return createTransformResult.createTransformResult(file, source, output);
64
+ }
65
+ catch (error) {
66
+ if (cached.freshDeliveryOnly === true)
67
+ evictGeneration.evictGeneration(cache, key, generation);
68
+ throw error;
69
+ }
70
+ }
71
+
72
+ exports.deliverCachedTransform = deliverCachedTransform;
73
+ //# sourceMappingURL=deliverCachedTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliverCachedTransform.js","sources":["../../../src/core/transform/deliverCachedTransform.ts"],"sourcesContent":[null],"names":["TtscGenerationProof","reportSuccessDiagnostics","selectOrEvict","TtscMissingProgramOutputError","notifyFailedGenerationInputs","reportMissingProgramOutput","notifyWatchInputs","markCachedSourceServed","notifyVolatileDelivery","createTransformResult","evictGeneration"],"mappings":";;;;;;;;;;;;;;AAgBA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAU,sBAAsB,CAAC,KAUtC,EAAA;IACC,MAAM,EACJ,KAAK,EACL,MAAM,EACN,UAAU,EACV,GAAG,EACH,KAAK,EACL,IAAI,EACJ,MAAM,EACN,KAAK,EACL,SAAS,GACV,GAAG,KAAK;AACT,IAAA,IAAI;AACF,QAAAA,uCAAmB,CAAC,cAAc,CAChC,MAAM,EACN,KAAK,EACL,GAAG,EACH,UAAU,EACV,KAAK,EACL,KAAK,CACN;AACD,QAAAC,iDAAwB,CAAC,MAAM,EAAE,KAAK,CAAC;AACvC,QAAA,IAAI,MAAM;AACV,QAAA,IAAI;YACF,MAAM,GAAGC,2BAAa,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE;gBACpD,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,EAAE,KAAK,YAAYC,2DAA6B,CAAC,EAAE;gBACrDC,yDAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AAC5D,gBAAA,MAAM,KAAK;YACb;AACA,YAAAC,qDAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;YAChDC,mCAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AACjD,YAAAC,6CAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;AACpC,YAAA,OAAO,SAAS;QAClB;QACAD,mCAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AACjD,QAAAC,6CAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;AACpC,QAAAC,6CAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;QAC3C,OAAOC,2CAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACpD;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI;AACnC,YAAAC,+BAAe,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;AACzC,QAAA,MAAM,KAAK;IACb;AACF;;;;"}
@@ -0,0 +1,71 @@
1
+ import { evictGeneration } from './cache/evictGeneration.mjs';
2
+ import { selectOrEvict } from './cache/selectOrEvict.mjs';
3
+ import { reportMissingProgramOutput } from './diagnostics/reportMissingProgramOutput.mjs';
4
+ import { reportSuccessDiagnostics } from './diagnostics/reportSuccessDiagnostics.mjs';
5
+ import { TtscMissingProgramOutputError } from './errors/TtscMissingProgramOutputError.mjs';
6
+ import { createTransformResult } from './utils/createTransformResult.mjs';
7
+ import { TtscGenerationProof } from './validation/TtscGenerationProof.mjs';
8
+ import { markCachedSourceServed } from './validation/markCachedSourceServed.mjs';
9
+ import { notifyFailedGenerationInputs } from './watch/notifyFailedGenerationInputs.mjs';
10
+ import { notifyVolatileDelivery } from './watch/notifyVolatileDelivery.mjs';
11
+ import { notifyWatchInputs } from './watch/notifyWatchInputs.mjs';
12
+
13
+ /**
14
+ * Deliver both captured and reused generations through one failure boundary.
15
+ *
16
+ * WARNING (#1713): host capabilities and callbacks apply to every delivery,
17
+ * including cache hits. Incomplete local results must never survive a failed
18
+ * handoff or acquire a persistent record. Stable ordinary generations retain
19
+ * their existing callback-failure recovery policy.
20
+ *
21
+ * A missing program output is an admitted absence: notify the same selection
22
+ * inputs and return control to the host. Compile failure retains its existing
23
+ * terminal policy through selectOrEvict and reports repair inputs.
24
+ *
25
+ * @evidence contracts/common.md#principled-implementation Captured and reused results share lifecycle admission, output selection, diagnostics and host handoff; incomplete ownership is evicted on any failed delivery effect, while missing output remains a host fallthrough.
26
+ * @evidence contracts/common.md#clear-and-simple-design One synchronous boundary removes duplicate initial/cache-hit delivery paths and their divergent callback and cleanup rules.
27
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts Missing outputs never manufacture transformed bytes or reusable observation authority; incomplete handoff failure cannot leave an owner for a sibling.
28
+ * @evidence contracts/common.md#meaningful-documentation Native prose states per-delivery capability, callback failure, missing-output and compile-failure responsibilities.
29
+ * @evidence contracts/portability.md#os-neutral-implementation Native identities and host spellings remain delegated to the generation's existing output/watch owners.
30
+ * @evidence contracts/performance.md#efficient-algorithms Selection uses generation indexes; diagnostics, output/map work and current host callbacks remain necessary per delivery. Watch input and record derivation retain their owning population costs.
31
+ * @evidence contracts/performance.md#reuse-equivalent-work Initial and reused answers share the exact same operation, while generation-owned indexes and the pass-qualified compiled result retain their separate validity premises.
32
+ * @evidence contracts/performance.md#bound-retention-and-release-resources Fresh-only admission releases capture resources; failed incomplete delivery evicts only its exact Promise. Ordinary selection/terminal and host lifecycle owners retain their established resource policy.
33
+ */
34
+ function deliverCachedTransform(props) {
35
+ const { cache, cached, generation, key, epoch, file, source, hooks, selection, } = props;
36
+ try {
37
+ TtscGenerationProof.admitFreshOnly(cached, cache, key, generation, epoch, hooks);
38
+ reportSuccessDiagnostics(cached, epoch);
39
+ let output;
40
+ try {
41
+ output = selectOrEvict(cache, key, generation, epoch, {
42
+ file,
43
+ projectRoot: cached.projectRoot,
44
+ result: cached.result,
45
+ tsconfig: cached.tsconfig,
46
+ });
47
+ }
48
+ catch (error) {
49
+ if (!(error instanceof TtscMissingProgramOutputError)) {
50
+ notifyFailedGenerationInputs(hooks, cached, file, selection);
51
+ throw error;
52
+ }
53
+ reportMissingProgramOutput(cached, error, epoch);
54
+ notifyWatchInputs(hooks, cached, file, selection);
55
+ markCachedSourceServed(cached, file);
56
+ return undefined;
57
+ }
58
+ notifyWatchInputs(hooks, cached, file, selection);
59
+ markCachedSourceServed(cached, file);
60
+ notifyVolatileDelivery(hooks, cached, file);
61
+ return createTransformResult(file, source, output);
62
+ }
63
+ catch (error) {
64
+ if (cached.freshDeliveryOnly === true)
65
+ evictGeneration(cache, key, generation);
66
+ throw error;
67
+ }
68
+ }
69
+
70
+ export { deliverCachedTransform };
71
+ //# sourceMappingURL=deliverCachedTransform.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliverCachedTransform.mjs","sources":["../../../src/core/transform/deliverCachedTransform.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;AAgBA;;;;;;;;;;;;;;;;;;;;AAoBG;AACG,SAAU,sBAAsB,CAAC,KAUtC,EAAA;IACC,MAAM,EACJ,KAAK,EACL,MAAM,EACN,UAAU,EACV,GAAG,EACH,KAAK,EACL,IAAI,EACJ,MAAM,EACN,KAAK,EACL,SAAS,GACV,GAAG,KAAK;AACT,IAAA,IAAI;AACF,QAAA,mBAAmB,CAAC,cAAc,CAChC,MAAM,EACN,KAAK,EACL,GAAG,EACH,UAAU,EACV,KAAK,EACL,KAAK,CACN;AACD,QAAA,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC;AACvC,QAAA,IAAI,MAAM;AACV,QAAA,IAAI;YACF,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE;gBACpD,IAAI;gBACJ,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AAC1B,aAAA,CAAC;QACJ;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,EAAE,KAAK,YAAY,6BAA6B,CAAC,EAAE;gBACrD,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AAC5D,gBAAA,MAAM,KAAK;YACb;AACA,YAAA,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;YAChD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AACjD,YAAA,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;AACpC,YAAA,OAAO,SAAS;QAClB;QACA,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;AACjD,QAAA,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;AACpC,QAAA,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;QAC3C,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;IACpD;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI;AACnC,YAAA,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC;AACzC,QAAA,MAAM,KAAK;IACb;AACF;;;;"}
@@ -21,8 +21,8 @@ import type { FilesystemPathIdentityContext } from "ttsc/path-identity";
21
21
  * Visits each reported occurrence in graph endpoints/globals/configs,
22
22
  * candidates, host inputs and dependency arrays. Native resolve, scratch
23
23
  * checks, project-key identity/ancestor/case observations and text hashing
24
- * precede each own-key membership test; duplicate declarations still pay
25
- * those queries, with native answers shared by the supplied context. Entry
24
+ * precede each own-key membership test after lexical deduplication; repeated
25
+ * declarations pay resolution but no repeated native classification. Entry
26
26
  * arrays from Object.entries/Object.values follow producer populations,
27
27
  * while the returned set cannot exceed keys present in the project snapshot.
28
28
  * @evidenceExclude contracts/performance.md#reuse-equivalent-work
@@ -21,8 +21,8 @@ import type { FilesystemPathIdentityContext } from "ttsc/path-identity";
21
21
  * Visits each reported occurrence in graph endpoints/globals/configs,
22
22
  * candidates, host inputs and dependency arrays. Native resolve, scratch
23
23
  * checks, project-key identity/ancestor/case observations and text hashing
24
- * precede each own-key membership test; duplicate declarations still pay
25
- * those queries, with native answers shared by the supplied context. Entry
24
+ * precede each own-key membership test after lexical deduplication; repeated
25
+ * declarations pay resolution but no repeated native classification. Entry
26
26
  * arrays from Object.entries/Object.values follow producer populations,
27
27
  * while the returned set cannot exceed keys present in the project snapshot.
28
28
  * @evidenceExclude contracts/performance.md#reuse-equivalent-work
@@ -21,8 +21,8 @@ import type { FilesystemPathIdentityContext } from "ttsc/path-identity";
21
21
  * Visits each reported occurrence in graph endpoints/globals/configs,
22
22
  * candidates, host inputs and dependency arrays. Native resolve, scratch
23
23
  * checks, project-key identity/ancestor/case observations and text hashing
24
- * precede each own-key membership test; duplicate declarations still pay
25
- * those queries, with native answers shared by the supplied context. Entry
24
+ * precede each own-key membership test after lexical deduplication; repeated
25
+ * declarations pay resolution but no repeated native classification. Entry
26
26
  * arrays from Object.entries/Object.values follow producer populations,
27
27
  * while the returned set cannot exceed keys present in the project snapshot.
28
28
  * @evidenceExclude contracts/performance.md#reuse-equivalent-work
@@ -25,8 +25,8 @@ var isTransformScratchInput = require('../tsconfig/isTransformScratchInput.js');
25
25
  * Visits each reported occurrence in graph endpoints/globals/configs,
26
26
  * candidates, host inputs and dependency arrays. Native resolve, scratch
27
27
  * checks, project-key identity/ancestor/case observations and text hashing
28
- * precede each own-key membership test; duplicate declarations still pay
29
- * those queries, with native answers shared by the supplied context. Entry
28
+ * precede each own-key membership test after lexical deduplication; repeated
29
+ * declarations pay resolution but no repeated native classification. Entry
30
30
  * arrays from Object.entries/Object.values follow producer populations,
31
31
  * while the returned set cannot exceed keys present in the project snapshot.
32
32
  * @evidenceExclude contracts/performance.md#reuse-equivalent-work
@@ -42,10 +42,14 @@ function selectDeclaredProjectInputKeys(props) {
42
42
  }
43
43
  const graph = props.result.graph;
44
44
  const keys = new Set();
45
+ const seen = new Set();
45
46
  const add = (entry) => {
46
47
  if (typeof entry !== "string" || entry.length === 0)
47
48
  return;
48
49
  const absolute = path.resolve(props.projectRoot, entry);
50
+ if (seen.has(absolute))
51
+ return;
52
+ seen.add(absolute);
49
53
  if (isTransformScratchInput.isTransformScratchInput(absolute, props.scratchDirectory))
50
54
  return;
51
55
  const key = toProjectKey.toProjectKey(props.projectRoot, absolute, props.identities);