@ttsc/unplugin 0.35.0 → 0.36.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 (127) hide show
  1. package/lib/core/transform/cache/TtscCachedProjectTransform.d.cts +22 -0
  2. package/lib/core/transform/cache/TtscCachedProjectTransform.d.mts +22 -0
  3. package/lib/core/transform/cache/TtscCachedProjectTransform.d.ts +22 -0
  4. package/lib/core/transform/deliverCachedTransform.js +4 -1
  5. package/lib/core/transform/deliverCachedTransform.js.map +1 -1
  6. package/lib/core/transform/deliverCachedTransform.mjs +4 -1
  7. package/lib/core/transform/deliverCachedTransform.mjs.map +1 -1
  8. package/lib/core/transform/filesystem/matchesNativeCompilerSnapshotFilesystem.d.cts +16 -0
  9. package/lib/core/transform/filesystem/matchesNativeCompilerSnapshotFilesystem.d.mts +16 -0
  10. package/lib/core/transform/filesystem/matchesNativeCompilerSnapshotFilesystem.d.ts +16 -0
  11. package/lib/core/transform/filesystem/matchesNativeCompilerSnapshotFilesystem.js +28 -0
  12. package/lib/core/transform/filesystem/matchesNativeCompilerSnapshotFilesystem.js.map +1 -0
  13. package/lib/core/transform/filesystem/matchesNativeCompilerSnapshotFilesystem.mjs +26 -0
  14. package/lib/core/transform/filesystem/matchesNativeCompilerSnapshotFilesystem.mjs.map +1 -0
  15. package/lib/core/transform/generation/TtscGenerationProofFailures.d.cts +19 -0
  16. package/lib/core/transform/generation/TtscGenerationProofFailures.d.mts +19 -0
  17. package/lib/core/transform/generation/TtscGenerationProofFailures.d.ts +19 -0
  18. package/lib/core/transform/generation/canDeliverCompilerSnapshot.d.cts +25 -0
  19. package/lib/core/transform/generation/canDeliverCompilerSnapshot.d.mts +25 -0
  20. package/lib/core/transform/generation/canDeliverCompilerSnapshot.d.ts +25 -0
  21. package/lib/core/transform/generation/canDeliverCompilerSnapshot.js +42 -0
  22. package/lib/core/transform/generation/canDeliverCompilerSnapshot.js.map +1 -0
  23. package/lib/core/transform/generation/canDeliverCompilerSnapshot.mjs +40 -0
  24. package/lib/core/transform/generation/canDeliverCompilerSnapshot.mjs.map +1 -0
  25. package/lib/core/transform/generation/captureTransformGeneration.js +35 -11
  26. package/lib/core/transform/generation/captureTransformGeneration.js.map +1 -1
  27. package/lib/core/transform/generation/captureTransformGeneration.mjs +35 -11
  28. package/lib/core/transform/generation/captureTransformGeneration.mjs.map +1 -1
  29. package/lib/core/transform/generation/captureTransformSourceHashes.d.cts +8 -6
  30. package/lib/core/transform/generation/captureTransformSourceHashes.d.mts +8 -6
  31. package/lib/core/transform/generation/captureTransformSourceHashes.d.ts +8 -6
  32. package/lib/core/transform/generation/captureTransformSourceHashes.js +16 -8
  33. package/lib/core/transform/generation/captureTransformSourceHashes.js.map +1 -1
  34. package/lib/core/transform/generation/captureTransformSourceHashes.mjs +16 -8
  35. package/lib/core/transform/generation/captureTransformSourceHashes.mjs.map +1 -1
  36. package/lib/core/transform/generation/compilerSnapshotFailureClassifier.d.cts +18 -0
  37. package/lib/core/transform/generation/compilerSnapshotFailureClassifier.d.mts +18 -0
  38. package/lib/core/transform/generation/compilerSnapshotFailureClassifier.d.ts +18 -0
  39. package/lib/core/transform/generation/compilerSnapshotFailureClassifier.js +75 -0
  40. package/lib/core/transform/generation/compilerSnapshotFailureClassifier.js.map +1 -0
  41. package/lib/core/transform/generation/compilerSnapshotFailureClassifier.mjs +73 -0
  42. package/lib/core/transform/generation/compilerSnapshotFailureClassifier.mjs.map +1 -0
  43. package/lib/core/transform/generation/createGenerationProofFailures.d.cts +3 -3
  44. package/lib/core/transform/generation/createGenerationProofFailures.d.mts +3 -3
  45. package/lib/core/transform/generation/createGenerationProofFailures.d.ts +3 -3
  46. package/lib/core/transform/generation/createGenerationProofFailures.js +11 -4
  47. package/lib/core/transform/generation/createGenerationProofFailures.js.map +1 -1
  48. package/lib/core/transform/generation/createGenerationProofFailures.mjs +11 -4
  49. package/lib/core/transform/generation/createGenerationProofFailures.mjs.map +1 -1
  50. package/lib/core/transform/generation/mergeGenerationProofFailures.d.cts +4 -4
  51. package/lib/core/transform/generation/mergeGenerationProofFailures.d.mts +4 -4
  52. package/lib/core/transform/generation/mergeGenerationProofFailures.d.ts +4 -4
  53. package/lib/core/transform/generation/mergeGenerationProofFailures.js +11 -4
  54. package/lib/core/transform/generation/mergeGenerationProofFailures.js.map +1 -1
  55. package/lib/core/transform/generation/mergeGenerationProofFailures.mjs +11 -4
  56. package/lib/core/transform/generation/mergeGenerationProofFailures.mjs.map +1 -1
  57. package/lib/core/transform/generation/recordGenerationProofFailure.d.cts +4 -4
  58. package/lib/core/transform/generation/recordGenerationProofFailure.d.mts +4 -4
  59. package/lib/core/transform/generation/recordGenerationProofFailure.d.ts +4 -4
  60. package/lib/core/transform/generation/recordGenerationProofFailure.js +8 -4
  61. package/lib/core/transform/generation/recordGenerationProofFailure.js.map +1 -1
  62. package/lib/core/transform/generation/recordGenerationProofFailure.mjs +8 -4
  63. package/lib/core/transform/generation/recordGenerationProofFailure.mjs.map +1 -1
  64. package/lib/core/transform/generation/selectTransformAttemptDisposition.d.cts +11 -7
  65. package/lib/core/transform/generation/selectTransformAttemptDisposition.d.mts +11 -7
  66. package/lib/core/transform/generation/selectTransformAttemptDisposition.d.ts +11 -7
  67. package/lib/core/transform/generation/selectTransformAttemptDisposition.js +11 -7
  68. package/lib/core/transform/generation/selectTransformAttemptDisposition.js.map +1 -1
  69. package/lib/core/transform/generation/selectTransformAttemptDisposition.mjs +11 -7
  70. package/lib/core/transform/generation/selectTransformAttemptDisposition.mjs.map +1 -1
  71. package/lib/core/transform/generation/transformProject.js +1 -0
  72. package/lib/core/transform/generation/transformProject.js.map +1 -1
  73. package/lib/core/transform/generation/transformProject.mjs +1 -0
  74. package/lib/core/transform/generation/transformProject.mjs.map +1 -1
  75. package/lib/core/transform/validation/TtscGenerationProof.d.cts +4 -1
  76. package/lib/core/transform/validation/TtscGenerationProof.d.mts +4 -1
  77. package/lib/core/transform/validation/TtscGenerationProof.d.ts +4 -1
  78. package/lib/core/transform/validation/TtscGenerationProof.js +4 -1
  79. package/lib/core/transform/validation/TtscGenerationProof.js.map +1 -1
  80. package/lib/core/transform/validation/TtscGenerationProof.mjs +4 -1
  81. package/lib/core/transform/validation/TtscGenerationProof.mjs.map +1 -1
  82. package/lib/core/transform/validation/captureExternalInputSnapshot.js +1 -1
  83. package/lib/core/transform/validation/captureExternalInputSnapshot.js.map +1 -1
  84. package/lib/core/transform/validation/captureExternalInputSnapshot.mjs +1 -1
  85. package/lib/core/transform/validation/captureExternalInputSnapshot.mjs.map +1 -1
  86. package/lib/core/transform/validation/captureUniversalHostInputValidation.js +1 -1
  87. package/lib/core/transform/validation/captureUniversalHostInputValidation.js.map +1 -1
  88. package/lib/core/transform/validation/captureUniversalHostInputValidation.mjs +1 -1
  89. package/lib/core/transform/validation/captureUniversalHostInputValidation.mjs.map +1 -1
  90. package/lib/core/transform/validation/compilerGraphInputProofFailures.js +1 -1
  91. package/lib/core/transform/validation/compilerGraphInputProofFailures.js.map +1 -1
  92. package/lib/core/transform/validation/compilerGraphInputProofFailures.mjs +1 -1
  93. package/lib/core/transform/validation/compilerGraphInputProofFailures.mjs.map +1 -1
  94. package/lib/core/transform/validation/matchesCachedSource.d.cts +4 -2
  95. package/lib/core/transform/validation/matchesCachedSource.d.mts +4 -2
  96. package/lib/core/transform/validation/matchesCachedSource.d.ts +4 -2
  97. package/lib/core/transform/validation/matchesCachedSource.js +6 -2
  98. package/lib/core/transform/validation/matchesCachedSource.js.map +1 -1
  99. package/lib/core/transform/validation/matchesCachedSource.mjs +6 -2
  100. package/lib/core/transform/validation/matchesCachedSource.mjs.map +1 -1
  101. package/lib/core/transform/watch/evidencedWatchInput.d.cts +1 -1
  102. package/lib/core/transform/watch/evidencedWatchInput.d.mts +1 -1
  103. package/lib/core/transform/watch/evidencedWatchInput.d.ts +1 -1
  104. package/lib/core/transform/watch/evidencedWatchInput.js +6 -2
  105. package/lib/core/transform/watch/evidencedWatchInput.js.map +1 -1
  106. package/lib/core/transform/watch/evidencedWatchInput.mjs +6 -2
  107. package/lib/core/transform/watch/evidencedWatchInput.mjs.map +1 -1
  108. package/package.json +3 -3
  109. package/src/core/transform/cache/TtscCachedProjectTransform.ts +24 -0
  110. package/src/core/transform/deliverCachedTransform.ts +5 -1
  111. package/src/core/transform/filesystem/matchesNativeCompilerSnapshotFilesystem.ts +31 -0
  112. package/src/core/transform/generation/TtscGenerationProofFailures.ts +21 -0
  113. package/src/core/transform/generation/canDeliverCompilerSnapshot.ts +50 -0
  114. package/src/core/transform/generation/captureTransformGeneration.ts +50 -13
  115. package/src/core/transform/generation/captureTransformSourceHashes.ts +19 -8
  116. package/src/core/transform/generation/compilerSnapshotFailureClassifier.ts +80 -0
  117. package/src/core/transform/generation/createGenerationProofFailures.ts +13 -4
  118. package/src/core/transform/generation/mergeGenerationProofFailures.ts +13 -4
  119. package/src/core/transform/generation/recordGenerationProofFailure.ts +8 -4
  120. package/src/core/transform/generation/selectTransformAttemptDisposition.ts +14 -7
  121. package/src/core/transform/generation/transformProject.ts +1 -0
  122. package/src/core/transform/validation/TtscGenerationProof.ts +4 -1
  123. package/src/core/transform/validation/captureExternalInputSnapshot.ts +3 -1
  124. package/src/core/transform/validation/captureUniversalHostInputValidation.ts +3 -1
  125. package/src/core/transform/validation/compilerGraphInputProofFailures.ts +3 -1
  126. package/src/core/transform/validation/matchesCachedSource.ts +7 -2
  127. package/src/core/transform/watch/evidencedWatchInput.ts +7 -2
@@ -18,7 +18,9 @@ import { notificationsProveProgramUnchanged } from "./notificationsProveProgramU
18
18
 
19
19
  /**
20
20
  * Validate a cached project transform against the current on-disk project
21
- * state.
21
+ * state. A captured native snapshot instead permits only an unserved module in
22
+ * its original explicit pass, including a watching pass; it grants no later or
23
+ * persistent reuse.
22
24
  *
23
25
  * A module with a recorded source compares its delivered text with the
24
26
  * generation snapshot. An unrelated module outside an unchanged program needs
@@ -47,7 +49,7 @@ import { notificationsProveProgramUnchanged } from "./notificationsProveProgramU
47
49
  *
48
50
  * @evidence contracts/common.md#principled-implementation Delivered source, generation completeness, pass identity and notification authority choose between first-delivery proof, derived-input validation and complete snapshots; divergent editor text never substitutes for compiler disk inputs.
49
51
  * @evidence contracts/common.md#clear-and-simple-design This admission boundary chooses the required proof while dedicated validators own membership, universal inputs and content comparisons.
50
- * @evidence contracts/common.md#prohibited-implementation-shortcuts An incomplete generation cannot claim complete snapshot authority; only separately admitted coherent local success can share first deliveries of its exact nonwatching pass; inherited object members cannot invent a project baseline, and losing watcher proof falls back to recorded-state validation.
52
+ * @evidence contracts/common.md#prohibited-implementation-shortcuts An incomplete generation cannot claim complete snapshot authority; a captured native snapshot can share first deliveries only in its original pass, while observer-unavailable local success separately requires an exact nonwatching pass; inherited object members cannot invent a project baseline, and losing watcher proof falls back to recorded-state validation.
51
53
  * @evidence contracts/common.md#meaningful-documentation Separate native paragraphs explain disk-versus-delivered authority, epoch qualification, fallback and related maintainer guidance before tags.
52
54
  * @evidence contracts/portability.md#os-neutral-implementation Project membership and path identity use recorded compiler case policy and injected native operations; OS names do not certify case sensitivity or watcher capabilities.
53
55
  * @evidence contracts/performance.md#bound-retention-and-release-resources
@@ -81,6 +83,9 @@ export function matchesCachedSource(
81
83
  */
82
84
  reportDivergence = true,
83
85
  ): boolean {
86
+ if (cached.snapshotDeliveryOnly === true)
87
+ return TtscGenerationProof.sharesPass(cached, file, epoch);
88
+
84
89
  if (!nativeInputPredicatesHold(cached, proof)) return false;
85
90
  const pass = TtscGenerationProof.sharesPass(cached, file, epoch);
86
91
  if (cached.freshDeliveryOnly === true && !pass) return false;
@@ -3,6 +3,7 @@ import path from "node:path";
3
3
  import type { TtscCachedProjectTransform } from "../cache/TtscCachedProjectTransform";
4
4
  import type { TtscEnvelopeDerivation } from "../envelope/TtscEnvelopeDerivation";
5
5
  import { derivationIdentity } from "../envelope/derivationIdentity";
6
+ import { envelopeGraphIndexes } from "../envelope/envelopeGraphIndexes";
6
7
  import { selectPluginSourceInputs } from "../envelope/selectPluginSourceInputs";
7
8
  import { toProjectKey } from "../project/toProjectKey";
8
9
  import { MISSING_INPUT_STATE } from "../validation/MISSING_INPUT_STATE";
@@ -31,7 +32,7 @@ import type { TtscWatchInputState } from "./TtscWatchInputState";
31
32
  * @evidence contracts/common.md#prohibited-implementation-shortcuts Unknown codec state stays absent; the missing marker is a supported observation value rather than a guessed content hash.
32
33
  * @evidence contracts/common.md#meaningful-documentation Native prose describes generation evidence and spelling ownership, followed by separated acknowledgment tags under documentation guidance.
33
34
  * @evidence contracts/portability.md#os-neutral-implementation Native path.resolve and the generation's identity context preserve actual filesystem identity separately from caller-selected lexical spelling.
34
- * @evidence contracts/performance.md#efficient-algorithms Each call allocates one carrier and performs lexical/identity queries plus a plugin-source lookup; a first plugin lookup may parse the full declared source record. Non-tree inputs also compute the project key before selecting the recorded codec. Cost includes key/path text, any cold native path/ancestor/case observations and one caller spelling callback, while recorded byte hashes are not reread. Shared context/plugin populations remain owner costs beyond this fixed carrier allocation.
35
+ * @evidence contracts/performance.md#efficient-algorithms Each call allocates one carrier and performs lexical/identity queries plus a plugin-source lookup; a first plugin lookup may parse the full declared source record. Non-tree inputs also compute the project key before selecting the recorded codec. Snapshot-only delivery initializes the shared graph index on first use. Cost includes key/path text, any cold native path/ancestor/case observations and one caller spelling callback, while recorded byte hashes are not reread. Shared context/plugin populations remain owner costs beyond this fixed carrier allocation.
35
36
  * @evidence contracts/performance.md#reuse-equivalent-work Recorded hashes/predicates and plugin state come from one immutable generation. Identity and project-key queries share its context under a still-valid native view and fixed root; this operation creates a fresh carrier rather than memoizing it, and cannot certify those premises independently.
36
37
  * @evidenceExclude contracts/performance.md#bound-retention-and-release-resources This mapping stores no new persistent cache or handle; retained generation facts belong to the generation owner.
37
38
  */
@@ -57,7 +58,11 @@ export function evidencedWatchInput(
57
58
  },
58
59
  };
59
60
  }
60
- const observation = cached.externalInputObservations?.[spelling];
61
+ const observation =
62
+ cached.snapshotDeliveryOnly === true
63
+ ? (envelopeGraphIndexes(state, cached).inputObservations.get(spelling) ??
64
+ cached.externalInputObservations?.[spelling])
65
+ : cached.externalInputObservations?.[spelling];
61
66
  const missing =
62
67
  observation?.fileExists === false ||
63
68
  state.graph?.inputProofs.get(spelling)?.hash === null ||