@cleocode/core 2026.9.22 → 2026.9.23

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 (316) hide show
  1. package/dist/build-provenance.json +6 -0
  2. package/dist/decide/audit.d.ts +7 -1
  3. package/dist/decide/audit.d.ts.map +1 -1
  4. package/dist/decide/audit.js.map +1 -1
  5. package/dist/decide/client.d.ts +46 -4
  6. package/dist/decide/client.d.ts.map +1 -1
  7. package/dist/decide/client.js +328 -33
  8. package/dist/decide/client.js.map +1 -1
  9. package/dist/decide/credentials.d.ts +28 -4
  10. package/dist/decide/credentials.d.ts.map +1 -1
  11. package/dist/decide/credentials.js +50 -12
  12. package/dist/decide/credentials.js.map +1 -1
  13. package/dist/decide/index.d.ts +10 -4
  14. package/dist/decide/index.d.ts.map +1 -1
  15. package/dist/decide/index.js +10 -4
  16. package/dist/decide/index.js.map +1 -1
  17. package/dist/decide/jev-wire.d.ts +100 -8
  18. package/dist/decide/jev-wire.d.ts.map +1 -1
  19. package/dist/decide/jev-wire.js +402 -55
  20. package/dist/decide/jev-wire.js.map +1 -1
  21. package/dist/decide/operations.d.ts +97 -20
  22. package/dist/decide/operations.d.ts.map +1 -1
  23. package/dist/decide/operations.js +180 -28
  24. package/dist/decide/operations.js.map +1 -1
  25. package/dist/decide/provider-state.d.ts +89 -0
  26. package/dist/decide/provider-state.d.ts.map +1 -0
  27. package/dist/decide/provider-state.js +134 -0
  28. package/dist/decide/provider-state.js.map +1 -0
  29. package/dist/decide/provider.d.ts +26 -5
  30. package/dist/decide/provider.d.ts.map +1 -1
  31. package/dist/decide/provider.js.map +1 -1
  32. package/dist/decide/providers.d.ts +58 -0
  33. package/dist/decide/providers.d.ts.map +1 -0
  34. package/dist/decide/providers.js +69 -0
  35. package/dist/decide/providers.js.map +1 -0
  36. package/dist/decide/site.d.ts +2 -2
  37. package/dist/decide/site.d.ts.map +1 -1
  38. package/dist/decide/site.js +2 -0
  39. package/dist/decide/site.js.map +1 -1
  40. package/dist/decide/sites/list.d.ts +46 -0
  41. package/dist/decide/sites/list.d.ts.map +1 -0
  42. package/dist/decide/sites/list.js +206 -0
  43. package/dist/decide/sites/list.js.map +1 -0
  44. package/dist/decide/sites/registry.d.ts +130 -0
  45. package/dist/decide/sites/registry.d.ts.map +1 -0
  46. package/dist/decide/sites/registry.js +375 -0
  47. package/dist/decide/sites/registry.js.map +1 -0
  48. package/dist/decide/spend.d.ts +196 -0
  49. package/dist/decide/spend.d.ts.map +1 -0
  50. package/dist/decide/spend.js +387 -0
  51. package/dist/decide/spend.js.map +1 -0
  52. package/dist/decide/wizard.d.ts +53 -0
  53. package/dist/decide/wizard.d.ts.map +1 -0
  54. package/dist/decide/wizard.js +144 -0
  55. package/dist/decide/wizard.js.map +1 -0
  56. package/dist/docs/docs-audit.d.ts.map +1 -1
  57. package/dist/docs/docs-audit.js +1 -2
  58. package/dist/docs/docs-audit.js.map +1 -1
  59. package/dist/docs/export-document.js +775 -415
  60. package/dist/docs/export-document.js.map +3 -3
  61. package/dist/index.d.ts +2 -2
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +1 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/init/scaffold-workflows.d.ts.map +1 -1
  66. package/dist/init/scaffold-workflows.js +6 -3
  67. package/dist/init/scaffold-workflows.js.map +1 -1
  68. package/dist/init/upgrade-workflows.d.ts.map +1 -1
  69. package/dist/init/upgrade-workflows.js +6 -3
  70. package/dist/init/upgrade-workflows.js.map +1 -1
  71. package/dist/internal.d.ts +1 -1
  72. package/dist/internal.d.ts.map +1 -1
  73. package/dist/internal.js +1 -1
  74. package/dist/internal.js.map +1 -1
  75. package/dist/llm/plugin-facade.js +886 -526
  76. package/dist/llm/plugin-facade.js.map +3 -3
  77. package/dist/memory/decision-contradiction.d.ts +3 -3
  78. package/dist/memory/decision-contradiction.d.ts.map +1 -1
  79. package/dist/memory/decision-contradiction.js +4 -3
  80. package/dist/memory/decision-contradiction.js.map +1 -1
  81. package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
  82. package/dist/memory/graph-memory-bridge.js +2 -0
  83. package/dist/memory/graph-memory-bridge.js.map +1 -1
  84. package/dist/memory/observation-type-decision.d.ts +2 -2
  85. package/dist/memory/observation-type-decision.d.ts.map +1 -1
  86. package/dist/memory/observation-type-decision.js +3 -2
  87. package/dist/memory/observation-type-decision.js.map +1 -1
  88. package/dist/memory/pipeline-manifest-sqlite.d.ts +111 -0
  89. package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
  90. package/dist/memory/pipeline-manifest-sqlite.js +230 -2
  91. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
  92. package/dist/nexus/migrations/M-split-graph.d.ts.map +1 -1
  93. package/dist/nexus/migrations/M-split-graph.js +4 -0
  94. package/dist/nexus/migrations/M-split-graph.js.map +1 -1
  95. package/dist/nexus/store.d.ts.map +1 -1
  96. package/dist/nexus/store.js +2 -0
  97. package/dist/nexus/store.js.map +1 -1
  98. package/dist/orchestrate/pivot.d.ts.map +1 -1
  99. package/dist/orchestrate/pivot.js +13 -8
  100. package/dist/orchestrate/pivot.js.map +1 -1
  101. package/dist/orchestrate/plan.d.ts.map +1 -1
  102. package/dist/orchestrate/plan.js +3 -0
  103. package/dist/orchestrate/plan.js.map +1 -1
  104. package/dist/orchestration/lead-rollup.js +14 -2
  105. package/dist/orchestration/lead-rollup.js.map +1 -1
  106. package/dist/orchestration/owner-decision-readiness.d.ts +2 -2
  107. package/dist/orchestration/owner-decision-readiness.d.ts.map +1 -1
  108. package/dist/orchestration/owner-decision-readiness.js +3 -2
  109. package/dist/orchestration/owner-decision-readiness.js.map +1 -1
  110. package/dist/orchestration/validate-spawn.d.ts.map +1 -1
  111. package/dist/orchestration/validate-spawn.js +2 -0
  112. package/dist/orchestration/validate-spawn.js.map +1 -1
  113. package/dist/project-scope.d.ts +16 -0
  114. package/dist/project-scope.d.ts.map +1 -1
  115. package/dist/project-scope.js +38 -2
  116. package/dist/project-scope.js.map +1 -1
  117. package/dist/release/github-pr.d.ts.map +1 -1
  118. package/dist/release/github-pr.js +2 -1
  119. package/dist/release/github-pr.js.map +1 -1
  120. package/dist/routing/capability-matrix.d.ts.map +1 -1
  121. package/dist/routing/capability-matrix.js +7 -0
  122. package/dist/routing/capability-matrix.js.map +1 -1
  123. package/dist/selfimprove/fix-gen.js +895 -535
  124. package/dist/selfimprove/fix-gen.js.map +3 -3
  125. package/dist/sessions/briefing.d.ts.map +1 -1
  126. package/dist/sessions/briefing.js +23 -62
  127. package/dist/sessions/briefing.js.map +1 -1
  128. package/dist/sessions/focus-state-store.d.ts +6 -1
  129. package/dist/sessions/focus-state-store.d.ts.map +1 -1
  130. package/dist/sessions/focus-state-store.js +5 -2
  131. package/dist/sessions/focus-state-store.js.map +1 -1
  132. package/dist/setup/config-json-merge.d.ts +28 -0
  133. package/dist/setup/config-json-merge.d.ts.map +1 -1
  134. package/dist/setup/config-json-merge.js +51 -0
  135. package/dist/setup/config-json-merge.js.map +1 -1
  136. package/dist/setup/index.d.ts +13 -10
  137. package/dist/setup/index.d.ts.map +1 -1
  138. package/dist/setup/index.js +15 -10
  139. package/dist/setup/index.js.map +1 -1
  140. package/dist/setup/sections/llm.js +1 -1
  141. package/dist/setup/sections/llm.js.map +1 -1
  142. package/dist/setup/sections/system-one.d.ts +28 -0
  143. package/dist/setup/sections/system-one.d.ts.map +1 -0
  144. package/dist/setup/sections/system-one.js +53 -0
  145. package/dist/setup/sections/system-one.js.map +1 -0
  146. package/dist/setup/wizard.d.ts +15 -1
  147. package/dist/setup/wizard.d.ts.map +1 -1
  148. package/dist/setup/wizard.js +15 -0
  149. package/dist/setup/wizard.js.map +1 -1
  150. package/dist/skills/prune-bundled.d.ts +40 -1
  151. package/dist/skills/prune-bundled.d.ts.map +1 -1
  152. package/dist/skills/prune-bundled.js +117 -1
  153. package/dist/skills/prune-bundled.js.map +1 -1
  154. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  155. package/dist/store/agent-registry-accessor.js +2 -0
  156. package/dist/store/agent-registry-accessor.js.map +1 -1
  157. package/dist/store/backup-pack.js +1 -1
  158. package/dist/store/backup-pack.js.map +1 -1
  159. package/dist/store/backup.d.ts +15 -1
  160. package/dist/store/backup.d.ts.map +1 -1
  161. package/dist/store/backup.js +18 -2
  162. package/dist/store/backup.js.map +1 -1
  163. package/dist/store/conduit-sqlite.d.ts.map +1 -1
  164. package/dist/store/conduit-sqlite.js +3 -0
  165. package/dist/store/conduit-sqlite.js.map +1 -1
  166. package/dist/store/credential-transfer.d.ts.map +1 -1
  167. package/dist/store/credential-transfer.js +2 -0
  168. package/dist/store/credential-transfer.js.map +1 -1
  169. package/dist/store/cross-db-cleanup.d.ts.map +1 -1
  170. package/dist/store/cross-db-cleanup.js +2 -0
  171. package/dist/store/cross-db-cleanup.js.map +1 -1
  172. package/dist/store/dual-scope-db.d.ts.map +1 -1
  173. package/dist/store/dual-scope-db.js +13 -2
  174. package/dist/store/dual-scope-db.js.map +1 -1
  175. package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -1
  176. package/dist/store/migrate-signaldock-to-conduit.js +3 -0
  177. package/dist/store/migrate-signaldock-to-conduit.js.map +1 -1
  178. package/dist/store/migration-manager.d.ts.map +1 -1
  179. package/dist/store/migration-manager.js +37 -3
  180. package/dist/store/migration-manager.js.map +1 -1
  181. package/dist/store/migration-sqlite.d.ts.map +1 -1
  182. package/dist/store/migration-sqlite.js +2 -0
  183. package/dist/store/migration-sqlite.js.map +1 -1
  184. package/dist/store/nexus-sqlite.d.ts.map +1 -1
  185. package/dist/store/nexus-sqlite.js +3 -0
  186. package/dist/store/nexus-sqlite.js.map +1 -1
  187. package/dist/store/open-cleo-db.d.ts.map +1 -1
  188. package/dist/store/open-cleo-db.js +3 -0
  189. package/dist/store/open-cleo-db.js.map +1 -1
  190. package/dist/store/portable-bundle-import.d.ts.map +1 -1
  191. package/dist/store/portable-bundle-import.js +2 -0
  192. package/dist/store/portable-bundle-import.js.map +1 -1
  193. package/dist/store/portable-bundle-relocate.d.ts.map +1 -1
  194. package/dist/store/portable-bundle-relocate.js +2 -0
  195. package/dist/store/portable-bundle-relocate.js.map +1 -1
  196. package/dist/store/portable-bundle-scan.js +1 -1
  197. package/dist/store/portable-bundle-scan.js.map +1 -1
  198. package/dist/store/ports/domain-binding.d.ts.map +1 -1
  199. package/dist/store/ports/domain-binding.js +5 -0
  200. package/dist/store/ports/domain-binding.js.map +1 -1
  201. package/dist/store/split-brain-import.d.ts.map +1 -1
  202. package/dist/store/split-brain-import.js +2 -0
  203. package/dist/store/split-brain-import.js.map +1 -1
  204. package/dist/store/sqlite-data-accessor.js +7 -0
  205. package/dist/store/sqlite-data-accessor.js.map +1 -1
  206. package/dist/store/sqlite-native.d.ts.map +1 -1
  207. package/dist/store/sqlite-native.js +1 -0
  208. package/dist/store/sqlite-native.js.map +1 -1
  209. package/dist/store/sqlite.d.ts.map +1 -1
  210. package/dist/store/sqlite.js +5 -0
  211. package/dist/store/sqlite.js.map +1 -1
  212. package/dist/store/worktree-build-guard.d.ts +191 -0
  213. package/dist/store/worktree-build-guard.d.ts.map +1 -0
  214. package/dist/store/worktree-build-guard.js +486 -0
  215. package/dist/store/worktree-build-guard.js.map +1 -0
  216. package/dist/store/worktree-isolation-guard.d.ts +27 -0
  217. package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
  218. package/dist/store/worktree-isolation-guard.js +67 -1
  219. package/dist/store/worktree-isolation-guard.js.map +1 -1
  220. package/dist/store/writer-lease.d.ts.map +1 -1
  221. package/dist/store/writer-lease.js +2 -0
  222. package/dist/store/writer-lease.js.map +1 -1
  223. package/dist/system/backup.d.ts +6 -2
  224. package/dist/system/backup.d.ts.map +1 -1
  225. package/dist/system/backup.js +6 -3
  226. package/dist/system/backup.js.map +1 -1
  227. package/dist/task-tools/index.d.ts +4 -2
  228. package/dist/task-tools/index.d.ts.map +1 -1
  229. package/dist/task-tools/index.js +3 -2
  230. package/dist/task-tools/index.js.map +1 -1
  231. package/dist/task-tools/score-task-priority.d.ts +93 -18
  232. package/dist/task-tools/score-task-priority.d.ts.map +1 -1
  233. package/dist/task-tools/score-task-priority.js +193 -81
  234. package/dist/task-tools/score-task-priority.js.map +1 -1
  235. package/dist/tasks/affected-packages.d.ts +5 -1
  236. package/dist/tasks/affected-packages.d.ts.map +1 -1
  237. package/dist/tasks/affected-packages.js +21 -3
  238. package/dist/tasks/affected-packages.js.map +1 -1
  239. package/dist/tasks/analyze.d.ts +29 -1
  240. package/dist/tasks/analyze.d.ts.map +1 -1
  241. package/dist/tasks/analyze.js +45 -34
  242. package/dist/tasks/analyze.js.map +1 -1
  243. package/dist/tasks/backfill-child-projections.d.ts.map +1 -1
  244. package/dist/tasks/backfill-child-projections.js +4 -1
  245. package/dist/tasks/backfill-child-projections.js.map +1 -1
  246. package/dist/tasks/change-set.d.ts.map +1 -1
  247. package/dist/tasks/change-set.js +16 -3
  248. package/dist/tasks/change-set.js.map +1 -1
  249. package/dist/tasks/command-line.d.ts +54 -0
  250. package/dist/tasks/command-line.d.ts.map +1 -0
  251. package/dist/tasks/command-line.js +151 -0
  252. package/dist/tasks/command-line.js.map +1 -0
  253. package/dist/tasks/component-pr.d.ts.map +1 -1
  254. package/dist/tasks/component-pr.js +97 -12
  255. package/dist/tasks/component-pr.js.map +1 -1
  256. package/dist/tasks/delete.d.ts.map +1 -1
  257. package/dist/tasks/delete.js +20 -0
  258. package/dist/tasks/delete.js.map +1 -1
  259. package/dist/tasks/duplicate-detector.d.ts +3 -3
  260. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  261. package/dist/tasks/duplicate-detector.js +4 -3
  262. package/dist/tasks/duplicate-detector.js.map +1 -1
  263. package/dist/tasks/engine-wrap-ops.d.ts +29 -0
  264. package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
  265. package/dist/tasks/engine-wrap-ops.js +40 -0
  266. package/dist/tasks/engine-wrap-ops.js.map +1 -1
  267. package/dist/tasks/engine-wrap.d.ts +1 -1
  268. package/dist/tasks/engine-wrap.d.ts.map +1 -1
  269. package/dist/tasks/engine-wrap.js +1 -1
  270. package/dist/tasks/engine-wrap.js.map +1 -1
  271. package/dist/tasks/evidence.d.ts +2 -0
  272. package/dist/tasks/evidence.d.ts.map +1 -1
  273. package/dist/tasks/evidence.js +30 -4
  274. package/dist/tasks/evidence.js.map +1 -1
  275. package/dist/tasks/gate-runner.d.ts.map +1 -1
  276. package/dist/tasks/gate-runner.js +48 -12
  277. package/dist/tasks/gate-runner.js.map +1 -1
  278. package/dist/tasks/index.d.ts +1 -1
  279. package/dist/tasks/index.d.ts.map +1 -1
  280. package/dist/tasks/index.js +1 -1
  281. package/dist/tasks/index.js.map +1 -1
  282. package/dist/tasks/ops.d.ts +1 -0
  283. package/dist/tasks/ops.d.ts.map +1 -1
  284. package/dist/tasks/ranking-audit.d.ts +122 -0
  285. package/dist/tasks/ranking-audit.d.ts.map +1 -0
  286. package/dist/tasks/ranking-audit.js +193 -0
  287. package/dist/tasks/ranking-audit.js.map +1 -0
  288. package/dist/tasks/task-analyze.d.ts.map +1 -1
  289. package/dist/tasks/task-analyze.js +19 -32
  290. package/dist/tasks/task-analyze.js.map +1 -1
  291. package/dist/tasks/task-next.d.ts +44 -2
  292. package/dist/tasks/task-next.d.ts.map +1 -1
  293. package/dist/tasks/task-next.js +80 -102
  294. package/dist/tasks/task-next.js.map +1 -1
  295. package/dist/tasks/task-ops.d.ts +1 -1
  296. package/dist/tasks/task-ops.d.ts.map +1 -1
  297. package/dist/tasks/task-ops.js +1 -1
  298. package/dist/tasks/task-ops.js.map +1 -1
  299. package/dist/tasks/tool-resolver.d.ts +7 -1
  300. package/dist/tasks/tool-resolver.d.ts.map +1 -1
  301. package/dist/tasks/tool-resolver.js +24 -10
  302. package/dist/tasks/tool-resolver.js.map +1 -1
  303. package/dist/tasks/update.d.ts +8 -2
  304. package/dist/tasks/update.d.ts.map +1 -1
  305. package/dist/tasks/update.js +28 -1
  306. package/dist/tasks/update.js.map +1 -1
  307. package/dist/telemetry/sqlite.d.ts.map +1 -1
  308. package/dist/telemetry/sqlite.js +2 -0
  309. package/dist/telemetry/sqlite.js.map +1 -1
  310. package/dist/validation/doctor/checks.d.ts.map +1 -1
  311. package/dist/validation/doctor/checks.js +2 -2
  312. package/dist/validation/doctor/checks.js.map +1 -1
  313. package/package.json +14 -14
  314. package/schemas/config.schema.json +13 -0
  315. package/templates/CLEO-INJECTION.md +1 -1
  316. package/templates/CLEO-REFERENCE.md +5 -1
@@ -1,118 +1,230 @@
1
1
  /**
2
- * scoreTask — pure-functional task priority scorer.
2
+ * scoreTask — THE task ranker (T12661, tiered per council verdict D11161 / T12691).
3
3
  *
4
- * Computes a numeric score for a task given its attributes and project context.
5
4
  * Pure functional — no I/O, no DB access, no async.
6
5
  *
6
+ * `cleo next`, the briefing's `nextTasks` and both `cleo analyze` paths rank
7
+ * through this module. The order is LEXICOGRAPHIC, never an additive sum:
8
+ *
9
+ * 1. **Priority band** — the owner's priority: critical > high > medium > low.
10
+ * 2. **Severity** — attested severity: P0 > P1 > P2 > P3 > unknown. An unset
11
+ * severity is `unknown`; nothing is imputed (not even for a bug).
12
+ * 3. **Bounded tiebreak** — computed graph facts: dependencies ready (+10),
13
+ * phase alignment (+20), leverage (+5 per open dependent, capped at +20),
14
+ * anti-starvation age (+1 per week after the first, capped at +10).
15
+ * 4. **createdAt** — older first (parsed and normalised to UTC).
16
+ * 5. **id**.
17
+ *
18
+ * Computed signals therefore never cross a band: a plain ready critical task
19
+ * always outranks a low-priority P0 bug carrying every bonus. The additive
20
+ * scorer this replaces let that bug win 115 to 110. BRAIN success/failure
21
+ * patterns are informational factors only; they are not part of the order.
22
+ *
7
23
  * @arch SDK Tool (Category B) — pure, no side effects, contracts-typed
8
24
  * @task T10068
25
+ * @task T12661
26
+ * @task T12691
9
27
  * @epic T9835
10
28
  */
11
- const PRIORITY_SCORE = {
12
- critical: 100,
13
- high: 75,
14
- medium: 50,
15
- low: 25,
29
+ import { isReadinessDependencySatisfied } from '../tasks/dependency-check.js';
30
+ /** Tier 1 — owner priority band rank (higher first). */
31
+ export const PRIORITY_BAND = {
32
+ critical: 4,
33
+ high: 3,
34
+ medium: 2,
35
+ low: 1,
16
36
  };
17
- const SATISFIED_STATUSES = new Set(['done', 'cancelled']);
37
+ /** Tier 2 — attested severity rank (higher first); `unknown` is 0. */
38
+ export const SEVERITY_RANK = {
39
+ P0: 4,
40
+ P1: 3,
41
+ P2: 2,
42
+ P3: 1,
43
+ };
44
+ /** Tier 3 — bonus when every dependency is satisfied. */
45
+ export const DEPS_READY_SCORE = 10;
46
+ /** Tier 3 — bonus when the task's phase matches the current phase. */
47
+ export const PHASE_ALIGNMENT_SCORE = 20;
48
+ /** Tier 3 — bonus per open task this task unblocks. */
49
+ export const LEVERAGE_PER_DEPENDENT = 5;
50
+ /** Tier 3 — cap on the leverage bonus. */
51
+ export const MAX_LEVERAGE_SCORE = 20;
52
+ /** Tier 3 — cap on the anti-starvation age bonus (+1 per week after the first). */
53
+ export const MAX_AGE_SCORE = 10;
54
+ /** Weights that fold the key into one sortable number (tiebreak stays below 1000). */
55
+ const BAND_WEIGHT = 10000;
56
+ const SEVERITY_WEIGHT = 1000;
57
+ /**
58
+ * Parse a task timestamp to epoch milliseconds, normalised to UTC.
59
+ *
60
+ * Stores hold both ISO-8601 with a zone (`2026-09-01T10:00:00Z`) and SQLite's
61
+ * zone-less `YYYY-MM-DD HH:MM:SS`. `Date.parse` reads the zone-less form as
62
+ * LOCAL time, so the same instant scored and sorted differently by machine
63
+ * (T12661 review). A timestamp without a zone is taken as UTC.
64
+ *
65
+ * @param value - Timestamp text.
66
+ * @returns Epoch milliseconds, or `NaN` when unparseable.
67
+ */
68
+ export function parseTimestampMs(value) {
69
+ if (!value)
70
+ return Number.NaN;
71
+ const text = value.trim();
72
+ const hasZone = /(?:[zZ]|[+-]\d{2}:?\d{2})$/.test(text);
73
+ if (hasZone || !/\d{2}:\d{2}/.test(text))
74
+ return Date.parse(text);
75
+ return Date.parse(`${text.replace(' ', 'T')}Z`);
76
+ }
77
+ /**
78
+ * Whether every dependency of a task is satisfied, under the same readiness
79
+ * policy as `depsReady` (cancelled work still blocks).
80
+ */
18
81
  function areDepsReady(depends, taskStatuses) {
19
82
  if (!depends?.length)
20
83
  return true;
21
84
  if (!taskStatuses)
22
85
  return false;
23
- return depends.every((depId) => {
24
- const status = taskStatuses.get(depId);
25
- return status !== undefined && SATISFIED_STATUSES.has(status);
26
- });
86
+ return depends.every((depId) => isReadinessDependencySatisfied(taskStatuses.get(depId)));
27
87
  }
28
88
  /**
29
- * Compute a priority score for a single task.
30
- *
31
- * Scoring formula:
32
- * - **Priority** (+25/+50/+75/+100 depending on level)
33
- * - **Phase alignment** (+20 when task phase matches `ctx.currentPhase`)
34
- * - **Dependency readiness** (+10 when all deps are done/cancelled)
35
- * - **Age bonus** (+1 per week over 7 days, capped at +15)
36
- * - **Brain success pattern** (+10 for first matching success pattern)
37
- * - **Brain failure pattern** (-5 for first matching failure pattern)
89
+ * Score a single task: its lexicographic key, every factor tagged with its
90
+ * comparator tier, and the key folded into one number that sorts identically.
38
91
  *
39
92
  * @param task - Task to score
40
- * @param ctx - Scoring context (phase, dep statuses, patterns)
41
- * @returns Score and individual factors
93
+ * @param ctx - Scoring context (phase, dep statuses, leverage, `nowMs`, patterns)
94
+ * @returns Score, key and factors
42
95
  *
43
96
  * @example
44
97
  * ```typescript
45
- * const result = scoreTask(
46
- * { id: 'T1', title: 'Auth', priority: 'high', phase: 'v2', depends: ['T0'] },
47
- * { currentPhase: 'v2', taskStatuses: new Map([['T0', 'done']]) },
48
- * );
49
- * // result.score === 75 (priority) + 20 (phase) + 10 (deps) = 105
98
+ * scoreTask({ id: 'T1', title: 'Auth', priority: 'high', kind: 'bug' }, {}).key;
99
+ * // { band: 3, severity: 0, tiebreak: 10 } — severity unknown, deps ready
50
100
  * ```
51
101
  */
52
102
  export function scoreTask(task, ctx) {
53
103
  const factors = [];
54
- let score = 0;
55
- // Priority
56
- const priorityDelta = PRIORITY_SCORE[task.priority] ?? 50;
57
- score += priorityDelta;
58
- factors.push({ name: 'priority', delta: priorityDelta, detail: `${task.priority}` });
59
- // Phase alignment
104
+ const priority = task.priority ?? 'medium';
105
+ // Own-property lookups only: an unvalidated value such as `toString` must
106
+ // fall back, never yield a prototype member (which would fold to NaN).
107
+ const band = Object.hasOwn(PRIORITY_BAND, priority)
108
+ ? PRIORITY_BAND[priority]
109
+ : PRIORITY_BAND['medium'];
110
+ factors.push({
111
+ name: 'band',
112
+ delta: band * BAND_WEIGHT,
113
+ detail: `priority ${priority}`,
114
+ tier: 1,
115
+ });
116
+ const severity = task.severity && Object.hasOwn(SEVERITY_RANK, task.severity) ? SEVERITY_RANK[task.severity] : 0;
117
+ factors.push({
118
+ name: 'severity',
119
+ delta: severity * SEVERITY_WEIGHT,
120
+ detail: task.severity ?? 'unknown (not set)',
121
+ tier: 2,
122
+ });
123
+ let tiebreak = 0;
124
+ const bonus = (name, delta, detail) => {
125
+ tiebreak += delta;
126
+ factors.push({ name, delta, detail, tier: 3 });
127
+ };
128
+ if (areDepsReady(task.depends, ctx.taskStatuses)) {
129
+ bonus('depsReady', DEPS_READY_SCORE, 'all dependencies satisfied');
130
+ }
60
131
  if (ctx.currentPhase && task.phase === ctx.currentPhase) {
61
- score += 20;
62
- factors.push({
63
- name: 'phaseAlignment',
64
- delta: 20,
65
- detail: `matches current phase "${ctx.currentPhase}"`,
66
- });
132
+ bonus('phaseAlignment', PHASE_ALIGNMENT_SCORE, `matches current phase "${ctx.currentPhase}"`);
67
133
  }
68
- // Dependency readiness
69
- if (areDepsReady(task.depends, ctx.taskStatuses)) {
70
- score += 10;
71
- factors.push({ name: 'depsReady', delta: 10, detail: 'all dependencies satisfied' });
134
+ const dependents = ctx.leverage?.get(task.id) ?? 0;
135
+ if (dependents > 0) {
136
+ bonus('leverage', Math.min(MAX_LEVERAGE_SCORE, dependents * LEVERAGE_PER_DEPENDENT), `unblocks ${dependents} open task(s) (capped at +${MAX_LEVERAGE_SCORE})`);
72
137
  }
73
- // Age bonus
74
138
  if (task.createdAt) {
75
139
  const nowMs = ctx.nowMs ?? Date.now();
76
- const ageMs = nowMs - new Date(task.createdAt).getTime();
77
- const ageDays = ageMs / (1000 * 60 * 60 * 24);
140
+ const ageDays = (nowMs - parseTimestampMs(task.createdAt)) / (1000 * 60 * 60 * 24);
78
141
  if (ageDays > 7) {
79
- const ageBonus = Math.min(15, Math.floor(ageDays / 7));
80
- score += ageBonus;
81
- factors.push({
82
- name: 'age',
83
- delta: ageBonus,
84
- detail: `${Math.floor(ageDays)} days old`,
85
- });
142
+ bonus('age', Math.min(MAX_AGE_SCORE, Math.floor(ageDays / 7)), `anti-starvation: ${Math.floor(ageDays)} days old (capped at +${MAX_AGE_SCORE})`);
86
143
  }
87
144
  }
88
- // Brain pattern scoring
145
+ // BRAIN patterns: informational only — not part of the order (D11161).
89
146
  if (ctx.successPatterns?.length || ctx.failurePatterns?.length) {
90
- const titleLower = task.title.toLowerCase();
91
- const labels = (task.labels ?? []).map((l) => l.toLowerCase());
92
- const matchText = [titleLower, ...labels].join(' ');
93
- for (const sp of ctx.successPatterns ?? []) {
94
- if (matchText.includes(sp.pattern.toLowerCase())) {
95
- score += 10;
96
- factors.push({
97
- name: 'brainSuccess',
98
- delta: 10,
99
- detail: `success pattern "${sp.pattern}"`,
100
- });
101
- break;
102
- }
103
- }
104
- for (const fp of ctx.failurePatterns ?? []) {
105
- if (matchText.includes(fp.pattern.toLowerCase())) {
106
- score -= 5;
107
- factors.push({
108
- name: 'brainFailure',
109
- delta: -5,
110
- detail: `failure pattern "${fp.pattern}"`,
111
- });
112
- break;
113
- }
114
- }
147
+ const matchText = [task.title, ...(task.labels ?? [])].join(' ').toLowerCase();
148
+ const success = ctx.successPatterns?.find((p) => matchText.includes(p.pattern.toLowerCase()));
149
+ if (success)
150
+ factors.push({
151
+ name: 'brainSuccess',
152
+ delta: 0,
153
+ detail: `success pattern "${success.pattern}"`,
154
+ tier: null,
155
+ });
156
+ const failure = ctx.failurePatterns?.find((p) => matchText.includes(p.pattern.toLowerCase()));
157
+ if (failure)
158
+ factors.push({
159
+ name: 'brainFailure',
160
+ delta: 0,
161
+ detail: `failure pattern "${failure.pattern}"`,
162
+ tier: null,
163
+ });
115
164
  }
116
- return { score, factors };
165
+ const key = { band, severity, tiebreak };
166
+ return { score: band * BAND_WEIGHT + severity * SEVERITY_WEIGHT + tiebreak, factors, key };
167
+ }
168
+ /**
169
+ * Render one factor as an `--explain` line naming its comparator tier.
170
+ *
171
+ * @param factor - Scored factor.
172
+ * @returns e.g. `tier 1 band: priority high`, `tier 3 depsReady: all dependencies satisfied (+10)`,
173
+ * or `info brainSuccess: … (not in the order)`.
174
+ */
175
+ export function formatScoreFactor(factor) {
176
+ if (factor.tier === null)
177
+ return `info ${factor.name}: ${factor.detail} (not in the order)`;
178
+ if (factor.tier === 1 || factor.tier === 2)
179
+ return `tier ${factor.tier} ${factor.name}: ${factor.detail}`;
180
+ const sign = factor.delta >= 0 ? '+' : '';
181
+ return `tier 3 ${factor.name}: ${factor.detail} (${sign}${factor.delta})`;
182
+ }
183
+ /**
184
+ * Count, for every task id, the OPEN tasks that depend on it — the leverage
185
+ * input of {@link scoreTask}. Done, archived and cancelled dependents are not
186
+ * work this task unblocks.
187
+ *
188
+ * @param tasks - Tasks with `depends` and `status`.
189
+ * @returns Map of task id to number of open dependents.
190
+ */
191
+ export function computeLeverage(tasks) {
192
+ const leverage = new Map();
193
+ for (const task of tasks) {
194
+ if (isReadinessDependencySatisfied(task.status) || task.status === 'cancelled')
195
+ continue;
196
+ for (const dep of task.depends ?? [])
197
+ leverage.set(dep, (leverage.get(dep) ?? 0) + 1);
198
+ }
199
+ return leverage;
200
+ }
201
+ /**
202
+ * Order tasks by the tiered key: band, severity, tiebreak (all higher first),
203
+ * then older `createdAt` (parsed, UTC), then id — deterministic, so every
204
+ * ranker returns the same order for the same input.
205
+ *
206
+ * @param tasks - Candidate tasks.
207
+ * @param ctx - Shared scoring context.
208
+ * @returns Ranked tasks.
209
+ */
210
+ export function rankTasks(tasks, ctx) {
211
+ // Missing or unparseable timestamps sort after every dated task.
212
+ const created = (task) => {
213
+ const ms = parseTimestampMs(task.createdAt);
214
+ return Number.isNaN(ms) ? Number.POSITIVE_INFINITY : ms;
215
+ };
216
+ const zero = { band: 0, severity: 0, tiebreak: 0 };
217
+ return tasks
218
+ .map((task) => ({ task, ...scoreTask(task, ctx), createdMs: created(task) }))
219
+ .sort((a, b) => {
220
+ const ka = a.key ?? zero;
221
+ const kb = b.key ?? zero;
222
+ return (kb.band - ka.band ||
223
+ kb.severity - ka.severity ||
224
+ kb.tiebreak - ka.tiebreak ||
225
+ (a.createdMs === b.createdMs ? 0 : a.createdMs < b.createdMs ? -1 : 1) ||
226
+ a.task.id.localeCompare(b.task.id));
227
+ })
228
+ .map(({ createdMs: _createdMs, ...rest }) => rest);
117
229
  }
118
230
  //# sourceMappingURL=score-task-priority.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"score-task-priority.js","sourceRoot":"","sources":["../../src/task-tools/score-task-priority.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"score-task-priority.js","sourceRoot":"","sources":["../../src/task-tools/score-task-priority.ts"],"names":[],"mappings":"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"}
@@ -159,11 +159,15 @@ export declare function scriptTestTargets(root: string, packages: readonly strin
159
159
  * Expand a `testing.affectedCommand` template into a spawnable command.
160
160
  * `{projects}` → `--project <name>` per package, `{filters}` → `--filter
161
161
  * <name>` per package, `{packages}` → the names. Each expands to separate
162
- * arguments; the template is split on whitespace (no shell).
162
+ * arguments. The template is split with POSIX `sh` quoting and run without a
163
+ * shell, so shell syntax (`&&`, `|`, `$`, …) is refused rather than passed to
164
+ * the target as literal words, which could run a different program and
165
+ * false-PASS (T12718).
163
166
  *
164
167
  * @param template - e.g. `pnpm exec vitest run {projects}`.
165
168
  * @param packages - Affected package names.
166
169
  * @returns The executable and its arguments.
170
+ * @throws When the template uses shell syntax or has an unterminated quote.
167
171
  * @task T12635
168
172
  */
169
173
  export declare function buildAffectedTestCommand(template: string, packages: readonly string[], projects?: readonly string[]): {
@@ -1 +1 @@
1
- {"version":3,"file":"affected-packages.d.ts","sourceRoot":"","sources":["../../src/tasks/affected-packages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAW5E,6BAA6B;AAC7B,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,2EAA2E;IAC3E,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GACrB;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GAC3D;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAiDtC;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAiCtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,aAAa,CA2Bf;AAED,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,uGAAuG;IACvG,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;CACb;AAKD,qEAAqE;AACrE,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAA;CAAE,GACvC;IACE,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,CAAC;AAEN,iFAAiF;AACjF,eAAO,MAAM,cAAc,kCAAkC,CAAC;AAE9D,8CAA8C;AAC9C,MAAM,WAAW,yBAAyB;IACxC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA2BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,yBAA8B,GACnC,OAAO,CAAC,oBAAoB,CAAC,CAkB/B;AAoDD,wEAAwE;AACxE,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,GACpD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAsB,GAC5E,OAAO,CAAC,mBAAmB,CAAC,CA8B9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,mBAAmB,CAarB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,GAAE,SAAS,MAAM,EAAa,GACrC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CASjC;AAcD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAkBtE;AAED,wEAAwE;AACxE,MAAM,MAAM,eAAe,GACvB;IACE,EAAE,EAAE,IAAI,CAAC;IACT,8EAA8E;IAC9E,OAAO,EAAE,mBAAmB,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,uFAAuF;IACvF,QAAQ,EAAE,6BAA6B,GAAG,yBAAyB,CAAC;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB,CAAC;AAEN;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5B,OAAO,CAAC,eAAe,CAAC,CAoE1B"}
1
+ {"version":3,"file":"affected-packages.d.ts","sourceRoot":"","sources":["../../src/tasks/affected-packages.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
27
27
  import { join, relative } from 'node:path';
28
28
  import { promisify } from 'node:util';
29
29
  import { isCiDocumentPath } from '../release/ci-evidence.js';
30
+ import { splitCommandLine } from './command-line.js';
30
31
  import { acquireGlobalSlot } from './tool-semaphore.js';
31
32
  /**
32
33
  * A path with `/` separators. `path.relative` and Windows callers produce `\`,
@@ -357,15 +358,19 @@ export function scriptTestTargets(root, packages, direct) {
357
358
  * Expand a `testing.affectedCommand` template into a spawnable command.
358
359
  * `{projects}` → `--project <name>` per package, `{filters}` → `--filter
359
360
  * <name>` per package, `{packages}` → the names. Each expands to separate
360
- * arguments; the template is split on whitespace (no shell).
361
+ * arguments. The template is split with POSIX `sh` quoting and run without a
362
+ * shell, so shell syntax (`&&`, `|`, `$`, …) is refused rather than passed to
363
+ * the target as literal words, which could run a different program and
364
+ * false-PASS (T12718).
361
365
  *
362
366
  * @param template - e.g. `pnpm exec vitest run {projects}`.
363
367
  * @param packages - Affected package names.
364
368
  * @returns The executable and its arguments.
369
+ * @throws When the template uses shell syntax or has an unterminated quote.
365
370
  * @task T12635
366
371
  */
367
372
  export function buildAffectedTestCommand(template, packages, projects = packages) {
368
- const words = template.trim().split(/\s+/).filter(Boolean);
373
+ const words = splitCommandLine(template, 'testing.affectedCommand');
369
374
  const expanded = words.flatMap((word) => {
370
375
  if (word === '{projects}')
371
376
  return projects.flatMap((p) => ['--project', p]);
@@ -442,6 +447,19 @@ export async function planAffectedTestRun(storeRoot, root, opts = {}) {
442
447
  '"pnpm exec vitest run {projects}" ({projects}/{filters}/{packages} expand per package).',
443
448
  };
444
449
  }
450
+ // T12718: a template the runner cannot split without a shell is a config
451
+ // error, refused before anything runs — never a pass for a truncated argv.
452
+ let templateWords;
453
+ try {
454
+ templateWords = splitCommandLine(template, 'testing.affectedCommand');
455
+ }
456
+ catch (error) {
457
+ return {
458
+ ok: false,
459
+ codeName: 'E_EVIDENCE_TOOL_UNAVAILABLE',
460
+ reason: `${error instanceof Error ? error.message : String(error)} (.cleo/project-context.json)`,
461
+ };
462
+ }
445
463
  const changed = changedPathsSinceDefault(root);
446
464
  if (changed === null) {
447
465
  return {
@@ -465,7 +483,7 @@ export async function planAffectedTestRun(storeRoot, root, opts = {}) {
465
483
  reason: 'The change touches no workspace package, so there is nothing to test by scope; use tool:test.',
466
484
  };
467
485
  }
468
- const targets = template.split(/\s+/).includes('{projects}')
486
+ const targets = templateWords.includes('{projects}')
469
487
  ? await affectedTestTargets(root, scope.packages, scope.direct, (r) => listVitestProjects(r, { wait: opts.wait === true }))
470
488
  : scriptTestTargets(root, scope.packages, scope.direct);
471
489
  if (!targets.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"affected-packages.js","sourceRoot":"","sources":["../../src/tasks/affected-packages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"affected-packages.js","sourceRoot":"","sources":["../../src/tasks/affected-packages.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,39 @@
3
3
  * @task T4538
4
4
  * @epic T4454
5
5
  */
6
- import type { TaskAnalysisResult } from '@cleocode/contracts';
6
+ import type { Task, TaskAnalysisResult } from '@cleocode/contracts';
7
7
  import type { DataAccessor } from '../store/data-accessor.js';
8
8
  export interface AnalysisResult extends TaskAnalysisResult {
9
9
  autoStarted?: boolean;
10
10
  }
11
+ /** One ranked task as the analyze tiers report it. */
12
+ export interface AnalysisRankedTask {
13
+ id: string;
14
+ title: string;
15
+ /** Open tasks this task unblocks (the scorer's leverage input). */
16
+ leverage: number;
17
+ priority: Task['priority'];
18
+ score: number;
19
+ }
20
+ /**
21
+ * Rank tasks for `cleo analyze` exactly as `cleo next` and the briefing do —
22
+ * {@link rankReadyTasks} with {@link resolveRankingPhase} and BRAIN patterns —
23
+ * so all three recommend the same task in the same order (T12661).
24
+ *
25
+ * @param accessor - Task data accessor.
26
+ * @param allTasks - The active task population.
27
+ * @param opts - Project root (for BRAIN patterns), an optional id scope, and
28
+ * `nowMs` (defaults to now) for the age tiebreak.
29
+ * @returns Ranked ready tasks with their open-dependent leverage.
30
+ * @task T12661
31
+ */
32
+ export declare function rankForAnalysis(accessor: DataAccessor, allTasks: readonly Task[], opts?: {
33
+ projectRoot?: string;
34
+ scopeTaskIds?: ReadonlySet<string>;
35
+ nowMs?: number;
36
+ }): Promise<{
37
+ ranked: AnalysisRankedTask[];
38
+ }>;
11
39
  /** Analyze task priority with leverage scoring. */
12
40
  export declare function analyzeTaskPriority(opts: {
13
41
  autoStart?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/tasks/analyze.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,mDAAmD;AACnD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE;IACJ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,EACD,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,cAAc,CAAC,CA2FzB"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/tasks/analyze.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAIpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,MAAM,WAAW,cAAe,SAAQ,kBAAkB;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,sDAAsD;AACtD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,SAAS,IAAI,EAAE,EACzB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACtF,OAAO,CAAC;IAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAAC,CAe3C;AAED,mDAAmD;AACnD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE;IACJ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,EACD,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,cAAc,CAAC,CAsEzB"}