@cleocode/core 2026.10.17 → 2026.10.18-rc.ci.688

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 (188) hide show
  1. package/dist/audit-prune.d.ts +37 -8
  2. package/dist/audit-prune.d.ts.map +1 -1
  3. package/dist/audit-prune.js +46 -12
  4. package/dist/audit-prune.js.map +1 -1
  5. package/dist/build-provenance.json +2 -2
  6. package/dist/cloud/manifest-check.d.ts +21 -0
  7. package/dist/cloud/manifest-check.d.ts.map +1 -1
  8. package/dist/cloud/manifest-check.js +46 -1
  9. package/dist/cloud/manifest-check.js.map +1 -1
  10. package/dist/cloud/nexus-vault.d.ts +19 -0
  11. package/dist/cloud/nexus-vault.d.ts.map +1 -1
  12. package/dist/cloud/nexus-vault.js +134 -23
  13. package/dist/cloud/nexus-vault.js.map +1 -1
  14. package/dist/cloud/signing.d.ts.map +1 -1
  15. package/dist/cloud/signing.js +4 -0
  16. package/dist/cloud/signing.js.map +1 -1
  17. package/dist/doctor/row-identity.d.ts.map +1 -1
  18. package/dist/doctor/row-identity.js +2 -1
  19. package/dist/doctor/row-identity.js.map +1 -1
  20. package/dist/git/work-tree.d.ts +17 -0
  21. package/dist/git/work-tree.d.ts.map +1 -1
  22. package/dist/git/work-tree.js +30 -0
  23. package/dist/git/work-tree.js.map +1 -1
  24. package/dist/goal/close.d.ts +95 -0
  25. package/dist/goal/close.d.ts.map +1 -0
  26. package/dist/goal/close.js +497 -0
  27. package/dist/goal/close.js.map +1 -0
  28. package/dist/goal/draft.d.ts +81 -0
  29. package/dist/goal/draft.d.ts.map +1 -0
  30. package/dist/goal/draft.js +331 -0
  31. package/dist/goal/draft.js.map +1 -0
  32. package/dist/hooks/release-gate.d.ts +3 -0
  33. package/dist/hooks/release-gate.d.ts.map +1 -1
  34. package/dist/hooks/release-gate.js +4 -1
  35. package/dist/hooks/release-gate.js.map +1 -1
  36. package/dist/orchestration/lean-gain.d.ts +26 -0
  37. package/dist/orchestration/lean-gain.d.ts.map +1 -0
  38. package/dist/orchestration/lean-gain.js +61 -0
  39. package/dist/orchestration/lean-gain.js.map +1 -0
  40. package/dist/release/backfill.d.ts.map +1 -1
  41. package/dist/release/backfill.js +15 -5
  42. package/dist/release/backfill.js.map +1 -1
  43. package/dist/release/ci-evidence.d.ts +90 -5
  44. package/dist/release/ci-evidence.d.ts.map +1 -1
  45. package/dist/release/ci-evidence.js +277 -4
  46. package/dist/release/ci-evidence.js.map +1 -1
  47. package/dist/release/plan.d.ts +4 -1
  48. package/dist/release/plan.d.ts.map +1 -1
  49. package/dist/release/plan.js +10 -2
  50. package/dist/release/plan.js.map +1 -1
  51. package/dist/release/reconcile.d.ts +10 -0
  52. package/dist/release/reconcile.d.ts.map +1 -1
  53. package/dist/release/reconcile.js +42 -19
  54. package/dist/release/reconcile.js.map +1 -1
  55. package/dist/release/release-manifest.d.ts +2 -1
  56. package/dist/release/release-manifest.d.ts.map +1 -1
  57. package/dist/release/release-manifest.js +15 -1
  58. package/dist/release/release-manifest.js.map +1 -1
  59. package/dist/resources/admission-ledger.d.ts +21 -4
  60. package/dist/resources/admission-ledger.d.ts.map +1 -1
  61. package/dist/resources/admission-ledger.js +102 -19
  62. package/dist/resources/admission-ledger.js.map +1 -1
  63. package/dist/resources/run-class.d.ts +22 -0
  64. package/dist/resources/run-class.d.ts.map +1 -1
  65. package/dist/resources/run-class.js +81 -0
  66. package/dist/resources/run-class.js.map +1 -1
  67. package/dist/sessions/handoff.d.ts +2 -2
  68. package/dist/sessions/handoff.js +2 -2
  69. package/dist/store/audit-log-schema.d.ts +106 -39
  70. package/dist/store/audit-log-schema.d.ts.map +1 -1
  71. package/dist/store/audit-log-schema.js +6 -3
  72. package/dist/store/audit-log-schema.js.map +1 -1
  73. package/dist/store/row-identity-registry.d.ts +42 -6
  74. package/dist/store/row-identity-registry.d.ts.map +1 -1
  75. package/dist/store/row-identity-registry.js +256 -34
  76. package/dist/store/row-identity-registry.js.map +1 -1
  77. package/dist/store/row-identity.d.ts.map +1 -1
  78. package/dist/store/row-identity.js +16 -4
  79. package/dist/store/row-identity.js.map +1 -1
  80. package/dist/store/schema/cleo-global/nexus.d.ts +16 -0
  81. package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
  82. package/dist/store/schema/cleo-global/nexus.js +4 -1
  83. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  84. package/dist/store/schema/cleo-project/audit.d.ts +48 -0
  85. package/dist/store/schema/cleo-project/audit.d.ts.map +1 -1
  86. package/dist/store/schema/cleo-project/audit.js +15 -1
  87. package/dist/store/schema/cleo-project/audit.js.map +1 -1
  88. package/dist/store/schema/cleo-project/lifecycle.d.ts +112 -0
  89. package/dist/store/schema/cleo-project/lifecycle.d.ts.map +1 -1
  90. package/dist/store/schema/cleo-project/lifecycle.js +36 -4
  91. package/dist/store/schema/cleo-project/lifecycle.js.map +1 -1
  92. package/dist/store/schema/cleo-project/provenance-commits.d.ts +48 -0
  93. package/dist/store/schema/cleo-project/provenance-commits.d.ts.map +1 -1
  94. package/dist/store/schema/cleo-project/provenance-commits.js +10 -1
  95. package/dist/store/schema/cleo-project/provenance-commits.js.map +1 -1
  96. package/dist/store/schema/cleo-project/provenance-rest.d.ts +128 -0
  97. package/dist/store/schema/cleo-project/provenance-rest.d.ts.map +1 -1
  98. package/dist/store/schema/cleo-project/provenance-rest.js +25 -1
  99. package/dist/store/schema/cleo-project/provenance-rest.js.map +1 -1
  100. package/dist/store/schema/cleo-project/tasks-core.d.ts +16 -0
  101. package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
  102. package/dist/store/schema/cleo-project/tasks-core.js +6 -1
  103. package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
  104. package/dist/store/session-store.d.ts +5 -4
  105. package/dist/store/session-store.d.ts.map +1 -1
  106. package/dist/store/session-store.js +19 -5
  107. package/dist/store/session-store.js.map +1 -1
  108. package/dist/store/sync/apply/parent-delete.d.ts.map +1 -1
  109. package/dist/store/sync/apply/parent-delete.js +8 -0
  110. package/dist/store/sync/apply/parent-delete.js.map +1 -1
  111. package/dist/store/sync/apply/write-api.d.ts +3 -2
  112. package/dist/store/sync/apply/write-api.d.ts.map +1 -1
  113. package/dist/store/sync/apply/write-api.js +19 -0
  114. package/dist/store/sync/apply/write-api.js.map +1 -1
  115. package/dist/store/sync/capture.d.ts +11 -0
  116. package/dist/store/sync/capture.d.ts.map +1 -1
  117. package/dist/store/sync/capture.js +13 -3
  118. package/dist/store/sync/capture.js.map +1 -1
  119. package/dist/store/sync/flags.d.ts +10 -0
  120. package/dist/store/sync/flags.d.ts.map +1 -1
  121. package/dist/store/sync/flags.js +43 -5
  122. package/dist/store/sync/flags.js.map +1 -1
  123. package/dist/store/sync/timestamp-canon.d.ts.map +1 -1
  124. package/dist/store/sync/timestamp-canon.js +37 -0
  125. package/dist/store/sync/timestamp-canon.js.map +1 -1
  126. package/dist/store/tasks-schema.d.ts +1 -1
  127. package/dist/store/tasks-schema.d.ts.map +1 -1
  128. package/dist/store/tasks-schema.js +5 -1
  129. package/dist/store/tasks-schema.js.map +1 -1
  130. package/dist/store/twin-collapse.d.ts +2 -1
  131. package/dist/store/twin-collapse.d.ts.map +1 -1
  132. package/dist/store/twin-collapse.js +128 -104
  133. package/dist/store/twin-collapse.js.map +1 -1
  134. package/dist/store/validation-schemas.d.ts +390 -38
  135. package/dist/store/validation-schemas.d.ts.map +1 -1
  136. package/dist/store/vault-manifest.d.ts +9 -2
  137. package/dist/store/vault-manifest.d.ts.map +1 -1
  138. package/dist/store/vault-manifest.js +25 -4
  139. package/dist/store/vault-manifest.js.map +1 -1
  140. package/dist/system/health.d.ts.map +1 -1
  141. package/dist/system/health.js +3 -2
  142. package/dist/system/health.js.map +1 -1
  143. package/dist/tasks/affected-packages.d.ts +21 -2
  144. package/dist/tasks/affected-packages.d.ts.map +1 -1
  145. package/dist/tasks/affected-packages.js +96 -8
  146. package/dist/tasks/affected-packages.js.map +1 -1
  147. package/dist/tasks/affected-scope.d.ts +7 -2
  148. package/dist/tasks/affected-scope.d.ts.map +1 -1
  149. package/dist/tasks/affected-scope.js +158 -14
  150. package/dist/tasks/affected-scope.js.map +1 -1
  151. package/dist/tasks/change-set.d.ts +10 -0
  152. package/dist/tasks/change-set.d.ts.map +1 -1
  153. package/dist/tasks/change-set.js +70 -3
  154. package/dist/tasks/change-set.js.map +1 -1
  155. package/dist/tasks/done-plan.d.ts +11 -5
  156. package/dist/tasks/done-plan.d.ts.map +1 -1
  157. package/dist/tasks/done-plan.js +54 -10
  158. package/dist/tasks/done-plan.js.map +1 -1
  159. package/dist/tasks/done-record.d.ts.map +1 -1
  160. package/dist/tasks/done-record.js +25 -0
  161. package/dist/tasks/done-record.js.map +1 -1
  162. package/dist/tasks/evidence.d.ts.map +1 -1
  163. package/dist/tasks/evidence.js +22 -2
  164. package/dist/tasks/evidence.js.map +1 -1
  165. package/dist/tasks/gate-result-cache.d.ts.map +1 -1
  166. package/dist/tasks/gate-result-cache.js +24 -3
  167. package/dist/tasks/gate-result-cache.js.map +1 -1
  168. package/dist/tasks/gate-runner.d.ts +27 -3
  169. package/dist/tasks/gate-runner.d.ts.map +1 -1
  170. package/dist/tasks/gate-runner.js +77 -29
  171. package/dist/tasks/gate-runner.js.map +1 -1
  172. package/dist/tasks/qa-run-binding.d.ts +22 -3
  173. package/dist/tasks/qa-run-binding.d.ts.map +1 -1
  174. package/dist/tasks/qa-run-binding.js +46 -4
  175. package/dist/tasks/qa-run-binding.js.map +1 -1
  176. package/dist/tasks/test-run-binding.d.ts +21 -3
  177. package/dist/tasks/test-run-binding.d.ts.map +1 -1
  178. package/dist/tasks/test-run-binding.js +60 -14
  179. package/dist/tasks/test-run-binding.js.map +1 -1
  180. package/dist/tasks/tool-cache.d.ts.map +1 -1
  181. package/dist/tasks/tool-cache.js +24 -12
  182. package/dist/tasks/tool-cache.js.map +1 -1
  183. package/migrations/drizzle-cleo-global/20261016130000_t13777-nexus-audit-row-uids/migration.sql +18 -0
  184. package/migrations/drizzle-cleo-project/20261015100000_t12914-lifecycle-release-row-uids/migration.sql +88 -0
  185. package/migrations/drizzle-cleo-project/20261016130000_t13777-log-row-uids/migration.sql +42 -0
  186. package/migrations/drizzle-cleo-project/20261016140000_t13777-audit-collapse/migration.sql +31 -0
  187. package/package.json +18 -18
  188. package/templates/CLEO-REFERENCE.md +1 -1
@@ -41,7 +41,7 @@
41
41
  * @task T12621
42
42
  */
43
43
  import { createHash, createHmac, timingSafeEqual } from 'node:crypto';
44
- import { existsSync, readdirSync, readFileSync, realpathSync } from 'node:fs';
44
+ import { existsSync, readdirSync, readFileSync, realpathSync, statSync } from 'node:fs';
45
45
  import { join, resolve } from 'node:path';
46
46
  import { acceptanceGateResultSchema } from '@cleocode/contracts/acceptance-gate-schema.js';
47
47
  import { getCleoHome } from '../paths.js';
@@ -162,6 +162,10 @@ export function buildGateCacheEntryBody(gate, state, inputsHash, result, inputs)
162
162
  ...(inputs ? { inputs } : {}),
163
163
  };
164
164
  }
165
+ /** Cache entries a miss diagnostic reads at most, newest first (#2240 review). */
166
+ const MISS_SCAN_ENTRIES = 50;
167
+ /** Changed input files a miss diagnostic names before "and N more" (#2240 review). */
168
+ const MISS_LISTED_FILES = 10;
165
169
  /**
166
170
  * Why a gate has no cached pass: which key parts differ from the newest stored
167
171
  * pass of the same gate definition (T13693). A refusal that only said "no
@@ -187,7 +191,21 @@ export function describeGateCacheMiss(projectRoot, gate, state, inputsHash, inpu
187
191
  const dir = join(projectRoot, '.cleo', 'cache', 'evidence');
188
192
  let names;
189
193
  try {
190
- names = readdirSync(dir).filter((n) => n.startsWith('gate-') && n.endsWith('.json'));
194
+ // Only the newest entries are parsed, so the cost does not grow with an
195
+ // unpruned cache; the pass that explains a miss is a recent one.
196
+ names = readdirSync(dir)
197
+ .filter((n) => n.startsWith('gate-') && n.endsWith('.json'))
198
+ .map((n) => {
199
+ try {
200
+ return { n, at: statSync(join(dir, n)).mtimeMs };
201
+ }
202
+ catch {
203
+ return { n, at: 0 };
204
+ }
205
+ })
206
+ .sort((a, b) => b.at - a.at)
207
+ .slice(0, MISS_SCAN_ENTRIES)
208
+ .map(({ n }) => n);
191
209
  }
192
210
  catch {
193
211
  return null;
@@ -227,8 +245,11 @@ export function describeGateCacheMiss(projectRoot, gate, state, inputsHash, inpu
227
245
  for (const path of new Set([...before.keys(), ...after.keys()]))
228
246
  if (before.get(path) !== after.get(path))
229
247
  changed.push(path);
248
+ const listed = changed.length > MISS_LISTED_FILES
249
+ ? `${changed.slice(0, MISS_LISTED_FILES).join(', ')} and ${changed.length - MISS_LISTED_FILES} more`
250
+ : changed.join(', ');
230
251
  parts.push(changed.length > 0
231
- ? `inputs: ${changed.join(', ')}`
252
+ ? `inputs: ${listed}`
232
253
  : 'inputs (the invocation: command, arguments or working directory)');
233
254
  }
234
255
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"gate-result-cache.js","sourceRoot":"","sources":["../../src/tasks/gate-result-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEvE,qFAAqF;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAE3C,iEAAiE;AACjE,MAAM,oBAAoB,GAAwC,IAAI,GAAG,CAAC;IACxE,MAAM;IACN,SAAS;IACT,MAAM;CACP,CAAC,CAAC;AAsDH;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,IAAoB;IAClD,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,WAAmB;IAC7D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACpE,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,QAAQ,CAAC,IAAoB;IACpC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,YAAY,CAAC,IAAoB,EAAE,KAAqB,EAAE,UAAkB;IACnF,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CACL,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAC5F;SACA,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,IAAoB,EACpB,KAAqB,EACrB,UAAkB;IAElB,OAAO,IAAI,CACT,WAAW,EACX,OAAO,EACP,OAAO,EACP,UAAU,EACV,QAAQ,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CACrD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAoB,EACpB,KAAqB,EACrB,UAAkB,EAClB,MAA4B,EAC5B,MAAkC;IAElC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpE,MAAM,EACJ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,SAAS,EACnB,GAAG,QAAQ,EACZ,GAAG,MAAM,CAAC;IACX,OAAO;QACL,aAAa,EAAE,yBAAyB;QACxC,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;QAC1C,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,UAAU;QACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,QAAQ;QAChB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,IAAoB,EACpB,KAAqB,EACrB,UAAkB,EAClB,MAAkC;IAElC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC5D,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,MAAM,GAAuC,IAAI,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CACR,CAAC;YACjC,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;gBAAE,SAAS;YAC/E,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;gBAAE,MAAM,GAAG,KAAK,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IACD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,IAAI,MAAM,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;QACpD,KAAK,CAAC,IAAI,CACR,yFAAyF,CAC1F,CAAC;IACJ,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACxF,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACrB,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe;gBAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACvF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvE,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC7D,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CACR,OAAO,CAAC,MAAM,GAAG,CAAC;gBAChB,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACjC,CAAC,CAAC,kEAAkE,CACvE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;QACrB,CAAC,CAAC,wDAAwD,MAAM,CAAC,SAAS,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACtG,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAwB;IAC/D,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,GAAG;QACR,IAAI,CAAC,QAAQ;QACb,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,gBAAgB;QACrB,IAAI,CAAC,GAAG;QACR,IAAI,CAAC,UAAU;QACf,IAAI,CAAC,SAAS;QACd,IAAI,CAAC,MAAM;KACZ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,KAAK,CAAC,IAAwB,EAAE,GAAW;IAClD,OAAO,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAwB,EAAE,GAAW;IACtE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,IAAoB,EACpB,KAAqB,EACrB,UAAkB,EAClB,GAAW;IAEX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACtD,MAAM,IAAI,GAAG,kBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjD,IAAI,KAA8B,CAAC;IACnC,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAA4B,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IACrE,CAAC;IACD,IACE,KAAK,CAAC,aAAa,KAAK,yBAAyB;QACjD,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;QACnD,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC;QACjC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QACzB,KAAK,CAAC,gBAAgB,KAAK,KAAK,CAAC,gBAAgB;QACjD,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;QACvB,KAAK,CAAC,UAAU,KAAK,UAAU;QAC/B,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,CAAC,KAAK,CAAC,MAAM;QACb,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;QAE7B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,qDAAqD,EAAE,CAAC;IAC9F,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAA2B,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC;QACzE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,kDAAkD,EAAE,CAAC;IAC3F,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/E,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;YAClF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;QAC5E,MAAM,EACJ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,SAAS,EACnB,GAAG,WAAW,EACf,GAAG,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAChC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,sBAAsB,CAAC,EAAE,OAAO,CAAC,CAC1E,CAAC;QACF,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACxF,MAAM,QAAQ,GAAI,MAAiC,CAAC,QAAQ,CAAC;QAC7D,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9F,OAAQ,QAA2C,CAAC,gBAAgB,KAAK,KAAK,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"gate-result-cache.js","sourceRoot":"","sources":["../../src/tasks/gate-result-cache.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,8 @@
24
24
  * @epic T760
25
25
  * @task T781
26
26
  */
27
- import type { AcceptanceGate, AcceptanceGateResult, AcRow, DataAccessor, Task } from '@cleocode/contracts';
28
- import type { AcceptanceGateCacheInputs, AcceptanceGateRunOptions, AcceptanceGateVerificationReceipt } from '@cleocode/contracts/acceptance-gate';
27
+ import type { AcceptanceGate, AcceptanceGateResult, AcRow, DataAccessor, LintGate, Task } from '@cleocode/contracts';
28
+ import type { AcceptanceGateCacheInputs, AcceptanceGateInvocation, AcceptanceGateRunOptions, AcceptanceGateVerificationReceipt } from '@cleocode/contracts/acceptance-gate';
29
29
  import type { OperationExecutionContext } from '@cleocode/contracts/jobs';
30
30
  /**
31
31
  * Shared budget for the bookkeeping around typed gates: task and criterion
@@ -287,11 +287,24 @@ export declare function revalidateTaskGateResults(task: Task, criteria: readonly
287
287
  export declare function validateTaskGateCompletion(task: Task, criteria: readonly AcRow[], options: RunGatesOptions, accessor: Pick<DataAccessor, 'queryAuditLog'>, policy?: {
288
288
  allowCachedGates?: boolean;
289
289
  }): Promise<void>;
290
+ /**
291
+ * Resolve the actual executable inputs once using the same rules as process
292
+ * launch. Exported so `cleo goal draft` spells a gate's command exactly as it
293
+ * runs (T13793).
294
+ *
295
+ * @param gate - The gate.
296
+ * @param root - Project root its `cwd` resolves against.
297
+ * @param env - Environment the gate's `env` overlays.
298
+ * @returns The invocation, or undefined for a gate that runs no process.
299
+ */
300
+ export declare function executableInvocation(gate: AcceptanceGate, root: string, env: NodeJS.ProcessEnv): AcceptanceGateInvocation | undefined;
290
301
  /**
291
302
  * Whether a test command's output reports a failure, for `expect: 'pass'`:
292
303
  * a `FAIL`, `failing` or `Error:` token, after removing summaries that report
293
304
  * zero failures (T13511 — `node --test` prints `ℹ fail 0` on success, which
294
- * the bare pattern read as a failure). A non-zero count still matches.
305
+ * the bare pattern read as a failure) and passing-test lines, whose test names
306
+ * routinely say "failure" (T13752). A non-zero count still matches.
307
+ * Only consulted when the run emitted no structured report.
295
308
  *
296
309
  * @param stdout - The command's captured stdout.
297
310
  * @returns True when the output reports a failure.
@@ -301,8 +314,19 @@ export declare function validateTaskGateCompletion(task: Task, criteria: readonl
301
314
  * outputReportsFailure('ℹ pass 2\nℹ fail 1'); // true
302
315
  * ```
303
316
  * @task T13511
317
+ * @task T13752
304
318
  */
305
319
  export declare function outputReportsFailure(stdout: string): boolean;
320
+ /**
321
+ * Tool-specific executable, default arguments and failure pattern of a typed
322
+ * lint gate. A gate fails on a non-zero exit, and with `expect: 'clean'` also
323
+ * when the output matches `errorPattern`. Shared with `cleo goal draft` (T13793).
324
+ */
325
+ export declare const LINT_TOOL_DEFAULTS: Record<LintGate['tool'], {
326
+ cmd: string;
327
+ defaultArgs: string[];
328
+ errorPattern?: RegExp;
329
+ }>;
306
330
  /**
307
331
  * Filter a mixed acceptance array to only typed `AcceptanceGate` objects.
308
332
  * Free-text strings are silently dropped with their original index preserved
@@ -1 +1 @@
1
- {"version":3,"file":"gate-runner.d.ts","sourceRoot":"","sources":["../../src/tasks/gate-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAgBH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,KAAK,EAEL,YAAY,EAMZ,IAAI,EAEL,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAGV,yBAAyB,EAEzB,wBAAwB,EAExB,iCAAiC,EAClC,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAoC1E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAkB9C;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAEvD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CASR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAMR;AA8BD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,oCAAoC,CAAC;AAiE3E;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,yBAAyB,EACpC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,yBAAyB,EACpC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAQ9D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,MAAsB,EAAE,uDAAuD;AACpF,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAkBR;AAeD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAkJjC;AAkED;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAET,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAKzC;AA6GD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,SAAS,KAAK,EAAE,EAC1B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAuGjC;AA0CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,MAAM,EAAE,OAAO,GACd,iCAAiC,CAgCnC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EACtB,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC,EAC/B,KAAK,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAClD,cAAc,UAAO,GACpB,MAAM,GAAG,IAAI,CAoBf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,SAAS,KAAK,EAAE,EAC1B,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,OAAO,EAAE,eAAe,EACxB,cAAc,UAAO,GACpB,OAAO,CAAC,IAAI,CAAC,CAuEf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,SAAS,KAAK,EAAE,EAC1B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,EAC7C,MAAM,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,OAAO,CAAC,IAAI,CAAC,CAiCf;AA2lBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAM5D;AA6eD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE,GACjC,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAQxD"}
1
+ {"version":3,"file":"gate-runner.d.ts","sourceRoot":"","sources":["../../src/tasks/gate-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAgBH,OAAO,KAAK,EACV,cAAc,EACd,oBAAoB,EACpB,KAAK,EAEL,YAAY,EAIZ,QAAQ,EAER,IAAI,EAEL,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAGV,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EAExB,iCAAiC,EAClC,MAAM,qCAAqC,CAAC;AAO7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAoC1E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAkB9C;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,wBAAwB,CAAC;AAEvD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CASR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAMR;AA8BD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,oCAAoC,CAAC;AAiE3E;;;;;;;;;;;;GAYG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,yBAAyB,EACpC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,yBAAyB,EACpC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,yBAAyB,CAAA;CAAE,CAAC,CAQ9D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,MAAsB,EAAE,uDAAuD;AACpF,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAkBR;AAeD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAkJjC;AAwED;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAET,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;CAKzC;AA6GD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,SAAS,KAAK,EAAE,EAC1B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAuGjC;AA0CD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,MAAM,EAAE,OAAO,GACd,iCAAiC,CAgCnC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EACtB,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAAC,EAC/B,KAAK,CAAC,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAClD,cAAc,UAAO,GACpB,MAAM,GAAG,IAAI,CAoBf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,SAAS,KAAK,EAAE,EAC1B,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,OAAO,EAAE,eAAe,EACxB,cAAc,UAAO,GACpB,OAAO,CAAC,IAAI,CAAC,CAuEf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,SAAS,KAAK,EAAE,EAC1B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,EAC7C,MAAM,GAAE;IAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,OAAO,CAAC,IAAI,CAAC,CAiCf;AA+BD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,wBAAwB,GAAG,SAAS,CAqCtC;AAgjBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAM5D;AAiRD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CACrC,QAAQ,CAAC,MAAM,CAAC,EAChB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAY9D,CAAC;AAsMF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,CAAC,MAAM,GAAG,cAAc,CAAC,EAAE,GACjC,KAAK,CAAC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAQxD"}
@@ -30,8 +30,8 @@ import { constants, mkdirSync, readFileSync, realpathSync, renameSync, writeFile
30
30
  import { lstat, open, realpath, stat } from 'node:fs/promises';
31
31
  import { basename, dirname, isAbsolute, join, relative, resolve } from 'node:path';
32
32
  import { isDeepStrictEqual } from 'node:util';
33
- import { acceptanceGateResultSchema, acceptanceGateSchema, testCountReportSchema, } from '@cleocode/contracts/acceptance-gate-schema.js';
34
- import { gitToplevel, resolveDeclaredEvidenceGitRoot } from '../git/work-tree.js';
33
+ import { acceptanceGateResultSchema, acceptanceGateSchema, testCountReportSchema, testCountSummarySchema, } from '@cleocode/contracts/acceptance-gate-schema.js';
34
+ import { discoveryEnv, gitToplevel, resolveDeclaredEvidenceGitRoot } from '../git/work-tree.js';
35
35
  import { getProjectRoot } from '../paths.js';
36
36
  import { captureProjectScope, worktreeScope } from '../project-scope.js';
37
37
  import { truncateString } from '../render/helpers.js';
@@ -441,12 +441,18 @@ export async function runGates(gates, options = {}) {
441
441
  deregister();
442
442
  }
443
443
  }
444
- /** `git` read in `cwd`; `null` on a non-zero exit or when git is unavailable. */
444
+ /**
445
+ * `git` read in `cwd`; `null` on a non-zero exit or when git is unavailable.
446
+ * Ambient `GIT_DIR`/`GIT_WORK_TREE` are dropped (T13695): the tree is resolved
447
+ * explicitly ({@link resolveTypedGateRoot}), so an inherited repo pointer may
448
+ * only ever make it read another repository.
449
+ */
445
450
  function gitOut(cwd, args) {
446
451
  try {
447
452
  return execFileSync('git', args, {
448
453
  cwd,
449
454
  encoding: 'utf-8',
455
+ env: discoveryEnv(),
450
456
  stdio: ['ignore', 'pipe', 'ignore'],
451
457
  }).trim();
452
458
  }
@@ -953,8 +959,17 @@ function gateEnvironment(env, overlay) {
953
959
  const merged = { ...env, ...overlay };
954
960
  return { ...merged, ...heavyToolEnv('test', merged) };
955
961
  }
956
- /** Resolve the actual executable inputs once using the same rules as process launch. */
957
- function executableInvocation(gate, root, env) {
962
+ /**
963
+ * Resolve the actual executable inputs once using the same rules as process
964
+ * launch. Exported so `cleo goal draft` spells a gate's command exactly as it
965
+ * runs (T13793).
966
+ *
967
+ * @param gate - The gate.
968
+ * @param root - Project root its `cwd` resolves against.
969
+ * @param env - Environment the gate's `env` overlays.
970
+ * @returns The invocation, or undefined for a gate that runs no process.
971
+ */
972
+ export function executableInvocation(gate, root, env) {
958
973
  if (gate.kind !== 'test' && gate.kind !== 'command' && gate.kind !== 'lint')
959
974
  return undefined;
960
975
  // T12718: quoted words are honoured and shell syntax is refused. A plain
@@ -1299,7 +1314,12 @@ storeRoot = projectRoot) {
1299
1314
  */
1300
1315
  async function captureGateCommand(command, args, cwd, timeoutMs, cls, context, overlay) {
1301
1316
  const env = gateEnvironment(context.env ?? process.env, overlay);
1302
- const footprintBytes = planRunFootprint(cls, [command, ...args], env).footprintBytes ?? footprintForClass(cls);
1317
+ const plan = planRunFootprint(cls, [command, ...args], env);
1318
+ // The gate spawns with the whole heavy-run env (gateEnvironment), not the
1319
+ // plan's overlay, so a worker-pool plan is charged the whole heavy run (T13759).
1320
+ const footprintBytes = plan.resources !== null && plan.resources.workers > 1
1321
+ ? footprintForClass(cls)
1322
+ : (plan.footprintBytes ?? footprintForClass(cls));
1303
1323
  const release = await acquireGlobalSlot(cls === 'test-run' ? 'test' : 'lint', {
1304
1324
  label: `gate:${cls === 'test-run' ? 'test' : 'command'}`,
1305
1325
  footprintBytes,
@@ -1385,11 +1405,26 @@ function matchingBrace(text, start) {
1385
1405
  * a report file named by the task could have been produced by any run, of any
1386
1406
  * code, at any time. Only the bytes this invocation emitted are bound to it.
1387
1407
  *
1408
+ * A non-runner command (a wrapper script) may instead print a bare count
1409
+ * summary ({@link testCountSummarySchema}) as its last stdout line (T13753).
1410
+ *
1388
1411
  * @param captured - Result of running the gate command.
1389
1412
  * @returns Validated counts, or `null` when the run emitted no usable report.
1390
1413
  * @task T12308
1414
+ * @task T13753
1391
1415
  */
1392
1416
  function structuredTestCounts(captured) {
1417
+ const lastLine = captured.stdout.trimEnd().split('\n').at(-1)?.trim() ?? '';
1418
+ if (lastLine.startsWith('{')) {
1419
+ try {
1420
+ const summary = testCountSummarySchema.safeParse(JSON.parse(lastLine));
1421
+ if (summary.success)
1422
+ return summary.data;
1423
+ }
1424
+ catch {
1425
+ // Not JSON: fall through to the full-report search.
1426
+ }
1427
+ }
1393
1428
  const text = `${captured.stdout}\n${captured.stderr}`.trim();
1394
1429
  if (text.length === 0)
1395
1430
  return null;
@@ -1455,11 +1490,19 @@ function describeMissingTestCount(gate) {
1455
1490
  * are removed before the failure pattern looks at the output (T13511).
1456
1491
  */
1457
1492
  const ZERO_FAILURE_COUNT = /\b0\s+(?:fail(?:ed|ing|ures?)?)\b|\bfail(?:ed|ing|ures?)?\s*[:=]?\s*0(?![\d.])/gi;
1493
+ /**
1494
+ * A runner's line for one PASSING test (vitest/jest `✓`, mocha `✔`/`√`, TAP
1495
+ * `ok 3 - name`, jest `PASS file`): its text is a test name, never a verdict
1496
+ * (T13752). TAP `not ok` does not match.
1497
+ */
1498
+ const PASSING_TEST_LINE = /^\s*(?:[✓✔√]|ok\s+\d|PASS\s).*$/gmu;
1458
1499
  /**
1459
1500
  * Whether a test command's output reports a failure, for `expect: 'pass'`:
1460
1501
  * a `FAIL`, `failing` or `Error:` token, after removing summaries that report
1461
1502
  * zero failures (T13511 — `node --test` prints `ℹ fail 0` on success, which
1462
- * the bare pattern read as a failure). A non-zero count still matches.
1503
+ * the bare pattern read as a failure) and passing-test lines, whose test names
1504
+ * routinely say "failure" (T13752). A non-zero count still matches.
1505
+ * Only consulted when the run emitted no structured report.
1463
1506
  *
1464
1507
  * @param stdout - The command's captured stdout.
1465
1508
  * @returns True when the output reports a failure.
@@ -1469,36 +1512,37 @@ const ZERO_FAILURE_COUNT = /\b0\s+(?:fail(?:ed|ing|ures?)?)\b|\bfail(?:ed|ing|ur
1469
1512
  * outputReportsFailure('ℹ pass 2\nℹ fail 1'); // true
1470
1513
  * ```
1471
1514
  * @task T13511
1515
+ * @task T13752
1472
1516
  */
1473
1517
  export function outputReportsFailure(stdout) {
1474
1518
  // T13516: a non-zero count (`3 failed`, `1 failure`) is a failure too; the
1475
1519
  // FAIL token alone needs a word boundary, so `failed` never matched it.
1476
- return /\bFAIL\b|failing|Error:|\b[1-9]\d*\s+fail(?:ed|ures?)\b/i.test(stdout.replace(ZERO_FAILURE_COUNT, ''));
1520
+ return /\bFAIL\b|failing|Error:|\b[1-9]\d*\s+fail(?:ed|ures?)\b/i.test(stdout.replace(PASSING_TEST_LINE, '').replace(ZERO_FAILURE_COUNT, ''));
1477
1521
  }
1478
1522
  async function runTestGate(gate, index, projectRoot, timeoutMs, context) {
1479
1523
  const invocation = executableInvocation(gate, projectRoot, context.env ?? process.env);
1480
1524
  const captured = await captureGateCommand(invocation.command, invocation.args, invocation.cwd, timeoutMs, 'test-run', context, gate.env);
1481
- const exitOk = captured.exitCode === 0 && (gate.expect === 'exit0' || !outputReportsFailure(captured.stdout));
1482
- // T12308: `minCount` was declarable, storable and never satisfiable — the
1483
- // runner rejected any positive value outright, so a task could carry a gate
1484
- // that no amount of passing tests could turn green. The counts now come from
1485
- // this run's own validated report; only their ABSENCE is still an error,
1486
- // because inferring a count from exit zero is the thing that must not happen.
1525
+ // T13752: a structured report decides the verdict; the text heuristic only
1526
+ // runs without one, since report JSON and test names are full of "failure".
1527
+ const counts = structuredTestCounts(captured);
1528
+ // T12308: the counts come from this run's own validated report; only their
1529
+ // ABSENCE is an error, because inferring a count from exit zero is the thing
1530
+ // that must not happen. T13753: the error keeps the run's execution record.
1487
1531
  if (gate.minCount !== undefined && gate.minCount > 0) {
1488
- const report = structuredTestCounts(captured);
1489
- if (report === null)
1490
- throw new Error(describeMissingTestCount(gate));
1491
- if (report.numPassedTests < gate.minCount)
1492
- return processGateResult(index, gate, captured, 'fail', `Structured report counts ${report.numPassedTests} passing tests, below the required minimum of ${gate.minCount}`);
1493
- if (!exitOk)
1494
- return processGateResult(index, gate, captured, 'fail', captured.exitCode === 0
1495
- ? 'Failure pattern detected in output'
1496
- : `Exit code ${captured.exitCode}`);
1497
- return processGateResult(index, gate, captured, 'pass');
1532
+ if (counts === null)
1533
+ return processGateResult(index, gate, captured, 'error', describeMissingTestCount(gate));
1534
+ if (counts.numPassedTests < gate.minCount)
1535
+ return processGateResult(index, gate, captured, 'fail', `Structured report counts ${counts.numPassedTests} passing tests, below the required minimum of ${gate.minCount}`);
1536
+ }
1537
+ if (captured.exitCode !== 0)
1538
+ return processGateResult(index, gate, captured, 'fail', `Exit code ${captured.exitCode}`);
1539
+ if (gate.expect === 'pass') {
1540
+ if (counts !== null && ((counts.numFailedTests ?? 0) > 0 || counts.success === false))
1541
+ return processGateResult(index, gate, captured, 'fail', `Structured report counts ${counts.numFailedTests ?? 0} failing tests (success: ${counts.success ?? 'unreported'})`);
1542
+ if (counts === null && outputReportsFailure(captured.stdout))
1543
+ return processGateResult(index, gate, captured, 'fail', 'Failure pattern detected in output');
1498
1544
  }
1499
- return processGateResult(index, gate, captured, exitOk ? 'pass' : 'fail', captured.exitCode === 0
1500
- ? 'Failure pattern detected in output'
1501
- : `Exit code ${captured.exitCode}`);
1545
+ return processGateResult(index, gate, captured, 'pass');
1502
1546
  }
1503
1547
  // ─── File gate ────────────────────────────────────────────────────────────────
1504
1548
  async function runFileGate(gate, index, projectRoot, context, storeRoot = projectRoot) {
@@ -1663,8 +1707,12 @@ async function runCommandGate(gate, index, projectRoot, timeoutMs, context) {
1663
1707
  reason = 'stderr pattern did not match';
1664
1708
  return processGateResult(index, gate, captured, reason ? 'fail' : 'pass', reason);
1665
1709
  }
1666
- /** Tool-specific CLI arguments and failure patterns. */
1667
- const LINT_TOOL_DEFAULTS = {
1710
+ /**
1711
+ * Tool-specific executable, default arguments and failure pattern of a typed
1712
+ * lint gate. A gate fails on a non-zero exit, and with `expect: 'clean'` also
1713
+ * when the output matches `errorPattern`. Shared with `cleo goal draft` (T13793).
1714
+ */
1715
+ export const LINT_TOOL_DEFAULTS = {
1668
1716
  biome: { cmd: 'biome', defaultArgs: ['check', '.'] },
1669
1717
  eslint: { cmd: 'eslint', defaultArgs: ['.'] },
1670
1718
  tsc: { cmd: 'tsc', defaultArgs: ['--noEmit'] },