@quickchatai/pi-quickreview 0.0.0-stage → 1.1.0

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 (689) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +75 -2
  3. package/assets/agents/pass-abstraction.md +64 -0
  4. package/assets/agents/pass-ask-human.md +134 -0
  5. package/assets/agents/pass-backcompat.md +67 -0
  6. package/assets/agents/pass-baseline.md +61 -0
  7. package/assets/agents/pass-behaviour-delta.md +64 -0
  8. package/assets/agents/pass-bounds.md +36 -0
  9. package/assets/agents/pass-claims.md +31 -0
  10. package/assets/agents/pass-concurrency.md +168 -0
  11. package/assets/agents/pass-consistency.md +57 -0
  12. package/assets/agents/pass-contracts.md +30 -0
  13. package/assets/agents/pass-data-safety.md +54 -0
  14. package/assets/agents/pass-deferred.md +35 -0
  15. package/assets/agents/pass-delivery.md +37 -0
  16. package/assets/agents/pass-duplication.md +60 -0
  17. package/assets/agents/pass-intent.md +63 -0
  18. package/assets/agents/pass-lint-conformance.md +46 -0
  19. package/assets/agents/pass-maintainability.md +67 -0
  20. package/assets/agents/pass-placement.md +68 -0
  21. package/assets/agents/pass-prod-risk.md +24 -0
  22. package/assets/agents/pass-rollout.md +32 -0
  23. package/assets/agents/pass-roundtrip.md +46 -0
  24. package/assets/agents/pass-security.md +31 -0
  25. package/assets/agents/pass-simplicity.md +68 -0
  26. package/assets/agents/pass-statelessness.md +27 -0
  27. package/assets/agents/pass-style.md +37 -0
  28. package/assets/agents/pass-sweep.md +57 -0
  29. package/assets/agents/pass-tests.md +58 -0
  30. package/assets/agents/pass-ui.md +23 -0
  31. package/assets/agents/pass-validate.md +50 -0
  32. package/assets/agents/pass-widened.md +46 -0
  33. package/assets/agents/scan/pass-scan.md +86 -0
  34. package/assets/config.example.toml +1067 -0
  35. package/assets/deploy/reviewer/AGENTS.override.md +12 -0
  36. package/assets/profiles/default/README.md +21 -0
  37. package/assets/profiles/default/addenda/.gitkeep +0 -0
  38. package/assets/profiles/default/profile.toml +17 -0
  39. package/assets/profiles/example-django/README.md +21 -0
  40. package/assets/profiles/example-django/addenda/10-migration-discipline.md +13 -0
  41. package/assets/profiles/example-django/addenda/20-new-column-nullability.md +12 -0
  42. package/assets/profiles/example-django/addenda/30-test-doctrine.md +12 -0
  43. package/assets/profiles/example-django/addenda/40-orm-usage.md +19 -0
  44. package/assets/profiles/example-django/addenda/50-declared-shape.md +10 -0
  45. package/assets/profiles/example-django/addenda/60-config-placement.md +14 -0
  46. package/assets/profiles/example-django/heuristics.toml +24 -0
  47. package/assets/profiles/example-django/profile.toml +9 -0
  48. package/assets/profiles/fast/README.md +24 -0
  49. package/assets/profiles/fast/profile.toml +59 -0
  50. package/assets/profiles/minimal/README.md +17 -0
  51. package/assets/profiles/minimal/addenda/.gitkeep +0 -0
  52. package/assets/profiles/minimal/profile.toml +8 -0
  53. package/assets/profiles/snappy/README.md +24 -0
  54. package/assets/profiles/snappy/addenda/10-race-as-question.md +6 -0
  55. package/assets/profiles/snappy/profile.toml +46 -0
  56. package/assets/prompts/companion-day-open.md +46 -0
  57. package/assets/prompts/companion-first-run.md +104 -0
  58. package/assets/prompts/companion.md +821 -0
  59. package/assets/prompts/conversation-system.md +117 -0
  60. package/assets/prompts/eod-sweep.md +120 -0
  61. package/assets/prompts/onboarding.md +74 -0
  62. package/assets/prompts/pass-common.md +52 -0
  63. package/assets/prompts/pass-quality-common.md +22 -0
  64. package/assets/prompts/round-first.md +874 -0
  65. package/assets/prompts/round-follow-up.md +991 -0
  66. package/assets/prompts/round-re-review.md +889 -0
  67. package/assets/prompts/round-recheck.md +196 -0
  68. package/assets/prompts/round-staleness.md +856 -0
  69. package/assets/schemas/review-result.v1.json +391 -0
  70. package/assets/schemas/scan-result.v1.json +421 -0
  71. package/assets/schemas/version.v1.json +57 -0
  72. package/assets/seed-manifest.json +19 -0
  73. package/assets/seeds/agents/pass-baseline.md +61 -0
  74. package/assets/seeds/agents/pass-contracts.md +30 -0
  75. package/assets/seeds/agents/pass-data-safety.md +54 -0
  76. package/assets/seeds/agents/pass-delivery.md +37 -0
  77. package/assets/seeds/agents/pass-prod-risk.md +24 -0
  78. package/assets/seeds/agents/pass-security.md +31 -0
  79. package/assets/seeds/agents/pass-statelessness.md +27 -0
  80. package/assets/seeds/agents/pass-ui.md +23 -0
  81. package/assets/seeds/agents/pass-validate.md +50 -0
  82. package/assets/seeds/prompts/conversation-system.md +117 -0
  83. package/assets/seeds/prompts/eod-sweep.md +120 -0
  84. package/assets/seeds/prompts/pass-common.md +52 -0
  85. package/dist/extensions/bash-guard.d.ts +467 -0
  86. package/dist/extensions/bash-guard.d.ts.map +1 -0
  87. package/dist/extensions/bash-guard.js +3058 -0
  88. package/dist/extensions/bash-guard.js.map +1 -0
  89. package/dist/extensions/finding-clusters.d.ts +33 -0
  90. package/dist/extensions/finding-clusters.d.ts.map +1 -0
  91. package/dist/extensions/finding-clusters.js +218 -0
  92. package/dist/extensions/finding-clusters.js.map +1 -0
  93. package/dist/extensions/ledger-pin.d.ts +76 -0
  94. package/dist/extensions/ledger-pin.d.ts.map +1 -0
  95. package/dist/extensions/ledger-pin.js +331 -0
  96. package/dist/extensions/ledger-pin.js.map +1 -0
  97. package/dist/extensions/lens.d.ts +43 -0
  98. package/dist/extensions/lens.d.ts.map +1 -0
  99. package/dist/extensions/lens.js +150 -0
  100. package/dist/extensions/lens.js.map +1 -0
  101. package/dist/extensions/pi-tool.d.ts +22 -0
  102. package/dist/extensions/pi-tool.d.ts.map +1 -0
  103. package/dist/extensions/pi-tool.js +20 -0
  104. package/dist/extensions/pi-tool.js.map +1 -0
  105. package/dist/extensions/quickreview.d.ts +21 -0
  106. package/dist/extensions/quickreview.d.ts.map +1 -0
  107. package/dist/extensions/quickreview.js +132 -0
  108. package/dist/extensions/quickreview.js.map +1 -0
  109. package/dist/src/anchors.d.ts +54 -0
  110. package/dist/src/anchors.d.ts.map +1 -0
  111. package/dist/src/anchors.js +127 -0
  112. package/dist/src/anchors.js.map +1 -0
  113. package/dist/src/assetroot.d.ts +16 -0
  114. package/dist/src/assetroot.d.ts.map +1 -0
  115. package/dist/src/assetroot.js +77 -0
  116. package/dist/src/assetroot.js.map +1 -0
  117. package/dist/src/authwatch.d.ts +61 -0
  118. package/dist/src/authwatch.d.ts.map +1 -0
  119. package/dist/src/authwatch.js +210 -0
  120. package/dist/src/authwatch.js.map +1 -0
  121. package/dist/src/budget.d.ts +15 -0
  122. package/dist/src/budget.d.ts.map +1 -0
  123. package/dist/src/budget.js +32 -0
  124. package/dist/src/budget.js.map +1 -0
  125. package/dist/src/casebudget.d.ts +3 -0
  126. package/dist/src/casebudget.d.ts.map +1 -0
  127. package/dist/src/casebudget.js +3 -0
  128. package/dist/src/casebudget.js.map +1 -0
  129. package/dist/src/cigate.d.ts +116 -0
  130. package/dist/src/cigate.d.ts.map +1 -0
  131. package/dist/src/cigate.js +176 -0
  132. package/dist/src/cigate.js.map +1 -0
  133. package/dist/src/codespan.d.ts +46 -0
  134. package/dist/src/codespan.d.ts.map +1 -0
  135. package/dist/src/codespan.js +75 -0
  136. package/dist/src/codespan.js.map +1 -0
  137. package/dist/src/contextpack.d.ts +56 -0
  138. package/dist/src/contextpack.d.ts.map +1 -0
  139. package/dist/src/contextpack.js +195 -0
  140. package/dist/src/contextpack.js.map +1 -0
  141. package/dist/src/contract.d.ts +8 -0
  142. package/dist/src/contract.d.ts.map +1 -0
  143. package/dist/src/contract.js +21 -0
  144. package/dist/src/contract.js.map +1 -0
  145. package/dist/src/coverage.d.ts +32 -0
  146. package/dist/src/coverage.d.ts.map +1 -0
  147. package/dist/src/coverage.js +85 -0
  148. package/dist/src/coverage.js.map +1 -0
  149. package/dist/src/datafence.d.ts +19 -0
  150. package/dist/src/datafence.d.ts.map +1 -0
  151. package/dist/src/datafence.js +60 -0
  152. package/dist/src/datafence.js.map +1 -0
  153. package/dist/src/dedup.d.ts +65 -0
  154. package/dist/src/dedup.d.ts.map +1 -0
  155. package/dist/src/dedup.js +459 -0
  156. package/dist/src/dedup.js.map +1 -0
  157. package/dist/src/depsources.d.ts +304 -0
  158. package/dist/src/depsources.d.ts.map +1 -0
  159. package/dist/src/depsources.js +3367 -0
  160. package/dist/src/depsources.js.map +1 -0
  161. package/dist/src/diffinput.d.ts +10 -0
  162. package/dist/src/diffinput.d.ts.map +1 -0
  163. package/dist/src/diffinput.js +172 -0
  164. package/dist/src/diffinput.js.map +1 -0
  165. package/dist/src/doubtwords.d.ts +10 -0
  166. package/dist/src/doubtwords.d.ts.map +1 -0
  167. package/dist/src/doubtwords.js +13 -0
  168. package/dist/src/doubtwords.js.map +1 -0
  169. package/dist/src/ecosystem.d.ts +148 -0
  170. package/dist/src/ecosystem.d.ts.map +1 -0
  171. package/dist/src/ecosystem.js +338 -0
  172. package/dist/src/ecosystem.js.map +1 -0
  173. package/dist/src/engine/agentdir.d.ts +5 -0
  174. package/dist/src/engine/agentdir.d.ts.map +1 -0
  175. package/dist/src/engine/agentdir.js +21 -0
  176. package/dist/src/engine/agentdir.js.map +1 -0
  177. package/dist/src/engine/auth.d.ts +214 -0
  178. package/dist/src/engine/auth.d.ts.map +1 -0
  179. package/dist/src/engine/auth.js +374 -0
  180. package/dist/src/engine/auth.js.map +1 -0
  181. package/dist/src/engine/budget.d.ts +60 -0
  182. package/dist/src/engine/budget.d.ts.map +1 -0
  183. package/dist/src/engine/budget.js +113 -0
  184. package/dist/src/engine/budget.js.map +1 -0
  185. package/dist/src/engine/capfd.d.ts +6 -0
  186. package/dist/src/engine/capfd.d.ts.map +1 -0
  187. package/dist/src/engine/capfd.js +21 -0
  188. package/dist/src/engine/capfd.js.map +1 -0
  189. package/dist/src/engine/caseout.d.ts +66 -0
  190. package/dist/src/engine/caseout.d.ts.map +1 -0
  191. package/dist/src/engine/caseout.js +107 -0
  192. package/dist/src/engine/caseout.js.map +1 -0
  193. package/dist/src/engine/context.d.ts +57 -0
  194. package/dist/src/engine/context.d.ts.map +1 -0
  195. package/dist/src/engine/context.js +212 -0
  196. package/dist/src/engine/context.js.map +1 -0
  197. package/dist/src/engine/envmap.d.ts +13 -0
  198. package/dist/src/engine/envmap.d.ts.map +1 -0
  199. package/dist/src/engine/envmap.js +372 -0
  200. package/dist/src/engine/envmap.js.map +1 -0
  201. package/dist/src/engine/extfiles.d.ts +7 -0
  202. package/dist/src/engine/extfiles.d.ts.map +1 -0
  203. package/dist/src/engine/extfiles.js +23 -0
  204. package/dist/src/engine/extfiles.js.map +1 -0
  205. package/dist/src/engine/keyroute.d.ts +21 -0
  206. package/dist/src/engine/keyroute.d.ts.map +1 -0
  207. package/dist/src/engine/keyroute.js +58 -0
  208. package/dist/src/engine/keyroute.js.map +1 -0
  209. package/dist/src/engine/lens/cache-group.d.ts +20 -0
  210. package/dist/src/engine/lens/cache-group.d.ts.map +1 -0
  211. package/dist/src/engine/lens/cache-group.js +31 -0
  212. package/dist/src/engine/lens/cache-group.js.map +1 -0
  213. package/dist/src/engine/lens/cache-run.d.ts +65 -0
  214. package/dist/src/engine/lens/cache-run.d.ts.map +1 -0
  215. package/dist/src/engine/lens/cache-run.js +159 -0
  216. package/dist/src/engine/lens/cache-run.js.map +1 -0
  217. package/dist/src/engine/lens/deadline.d.ts +54 -0
  218. package/dist/src/engine/lens/deadline.d.ts.map +1 -0
  219. package/dist/src/engine/lens/deadline.js +111 -0
  220. package/dist/src/engine/lens/deadline.js.map +1 -0
  221. package/dist/src/engine/lens/engine-tools.d.ts +13 -0
  222. package/dist/src/engine/lens/engine-tools.d.ts.map +1 -0
  223. package/dist/src/engine/lens/engine-tools.js +37 -0
  224. package/dist/src/engine/lens/engine-tools.js.map +1 -0
  225. package/dist/src/engine/lens/env.d.ts +23 -0
  226. package/dist/src/engine/lens/env.d.ts.map +1 -0
  227. package/dist/src/engine/lens/env.js +42 -0
  228. package/dist/src/engine/lens/env.js.map +1 -0
  229. package/dist/src/engine/lens/launch-plan.d.ts +63 -0
  230. package/dist/src/engine/lens/launch-plan.d.ts.map +1 -0
  231. package/dist/src/engine/lens/launch-plan.js +203 -0
  232. package/dist/src/engine/lens/launch-plan.js.map +1 -0
  233. package/dist/src/engine/lens/leaf-cache.d.ts +22 -0
  234. package/dist/src/engine/lens/leaf-cache.d.ts.map +1 -0
  235. package/dist/src/engine/lens/leaf-cache.js +115 -0
  236. package/dist/src/engine/lens/leaf-cache.js.map +1 -0
  237. package/dist/src/engine/lens/permits.d.ts +14 -0
  238. package/dist/src/engine/lens/permits.d.ts.map +1 -0
  239. package/dist/src/engine/lens/permits.js +18 -0
  240. package/dist/src/engine/lens/permits.js.map +1 -0
  241. package/dist/src/engine/lens/registry.d.ts +55 -0
  242. package/dist/src/engine/lens/registry.d.ts.map +1 -0
  243. package/dist/src/engine/lens/registry.js +140 -0
  244. package/dist/src/engine/lens/registry.js.map +1 -0
  245. package/dist/src/engine/lens/round-lens.d.ts +16 -0
  246. package/dist/src/engine/lens/round-lens.d.ts.map +1 -0
  247. package/dist/src/engine/lens/round-lens.js +46 -0
  248. package/dist/src/engine/lens/round-lens.js.map +1 -0
  249. package/dist/src/engine/lens/runlens.d.ts +103 -0
  250. package/dist/src/engine/lens/runlens.d.ts.map +1 -0
  251. package/dist/src/engine/lens/runlens.js +538 -0
  252. package/dist/src/engine/lens/runlens.js.map +1 -0
  253. package/dist/src/engine/lens/section.d.ts +19 -0
  254. package/dist/src/engine/lens/section.d.ts.map +1 -0
  255. package/dist/src/engine/lens/section.js +40 -0
  256. package/dist/src/engine/lens/section.js.map +1 -0
  257. package/dist/src/engine/lens/semaphore.d.ts +13 -0
  258. package/dist/src/engine/lens/semaphore.d.ts.map +1 -0
  259. package/dist/src/engine/lens/semaphore.js +44 -0
  260. package/dist/src/engine/lens/semaphore.js.map +1 -0
  261. package/dist/src/engine/lens/tool.d.ts +34 -0
  262. package/dist/src/engine/lens/tool.d.ts.map +1 -0
  263. package/dist/src/engine/lens/tool.js +345 -0
  264. package/dist/src/engine/lens/tool.js.map +1 -0
  265. package/dist/src/engine/lens/wave.d.ts +63 -0
  266. package/dist/src/engine/lens/wave.d.ts.map +1 -0
  267. package/dist/src/engine/lens/wave.js +95 -0
  268. package/dist/src/engine/lens/wave.js.map +1 -0
  269. package/dist/src/engine/livesessions.d.ts +21 -0
  270. package/dist/src/engine/livesessions.d.ts.map +1 -0
  271. package/dist/src/engine/livesessions.js +57 -0
  272. package/dist/src/engine/livesessions.js.map +1 -0
  273. package/dist/src/engine/livewire.d.ts +18 -0
  274. package/dist/src/engine/livewire.d.ts.map +1 -0
  275. package/dist/src/engine/livewire.js +31 -0
  276. package/dist/src/engine/livewire.js.map +1 -0
  277. package/dist/src/engine/openable.d.ts +37 -0
  278. package/dist/src/engine/openable.d.ts.map +1 -0
  279. package/dist/src/engine/openable.js +120 -0
  280. package/dist/src/engine/openable.js.map +1 -0
  281. package/dist/src/engine/pisdk.d.ts +226 -0
  282. package/dist/src/engine/pisdk.d.ts.map +1 -0
  283. package/dist/src/engine/pisdk.js +552 -0
  284. package/dist/src/engine/pisdk.js.map +1 -0
  285. package/dist/src/engine/port.d.ts +144 -0
  286. package/dist/src/engine/port.d.ts.map +1 -0
  287. package/dist/src/engine/port.js +16 -0
  288. package/dist/src/engine/port.js.map +1 -0
  289. package/dist/src/engine/prompts.d.ts +159 -0
  290. package/dist/src/engine/prompts.d.ts.map +1 -0
  291. package/dist/src/engine/prompts.js +339 -0
  292. package/dist/src/engine/prompts.js.map +1 -0
  293. package/dist/src/engine/render.d.ts +10 -0
  294. package/dist/src/engine/render.d.ts.map +1 -0
  295. package/dist/src/engine/render.js +23 -0
  296. package/dist/src/engine/render.js.map +1 -0
  297. package/dist/src/engine/reviewruntime.d.ts +13 -0
  298. package/dist/src/engine/reviewruntime.d.ts.map +1 -0
  299. package/dist/src/engine/reviewruntime.js +35 -0
  300. package/dist/src/engine/reviewruntime.js.map +1 -0
  301. package/dist/src/engine/reviewsdk.d.ts +75 -0
  302. package/dist/src/engine/reviewsdk.d.ts.map +1 -0
  303. package/dist/src/engine/reviewsdk.js +180 -0
  304. package/dist/src/engine/reviewsdk.js.map +1 -0
  305. package/dist/src/engine/round.d.ts +166 -0
  306. package/dist/src/engine/round.d.ts.map +1 -0
  307. package/dist/src/engine/round.js +543 -0
  308. package/dist/src/engine/round.js.map +1 -0
  309. package/dist/src/engine/roundagents.d.ts +17 -0
  310. package/dist/src/engine/roundagents.d.ts.map +1 -0
  311. package/dist/src/engine/roundagents.js +49 -0
  312. package/dist/src/engine/roundagents.js.map +1 -0
  313. package/dist/src/engine/roundevents.d.ts +110 -0
  314. package/dist/src/engine/roundevents.d.ts.map +1 -0
  315. package/dist/src/engine/roundevents.js +276 -0
  316. package/dist/src/engine/roundevents.js.map +1 -0
  317. package/dist/src/engine/roundsdk.d.ts +33 -0
  318. package/dist/src/engine/roundsdk.d.ts.map +1 -0
  319. package/dist/src/engine/roundsdk.js +76 -0
  320. package/dist/src/engine/roundsdk.js.map +1 -0
  321. package/dist/src/engine/sdkruntime.d.ts +23 -0
  322. package/dist/src/engine/sdkruntime.d.ts.map +1 -0
  323. package/dist/src/engine/sdkruntime.js +340 -0
  324. package/dist/src/engine/sdkruntime.js.map +1 -0
  325. package/dist/src/engine/select.d.ts +16 -0
  326. package/dist/src/engine/select.d.ts.map +1 -0
  327. package/dist/src/engine/select.js +32 -0
  328. package/dist/src/engine/select.js.map +1 -0
  329. package/dist/src/engine/sessionwrap.d.ts +4 -0
  330. package/dist/src/engine/sessionwrap.d.ts.map +1 -0
  331. package/dist/src/engine/sessionwrap.js +31 -0
  332. package/dist/src/engine/sessionwrap.js.map +1 -0
  333. package/dist/src/engine/toolfence.d.ts +90 -0
  334. package/dist/src/engine/toolfence.d.ts.map +1 -0
  335. package/dist/src/engine/toolfence.js +378 -0
  336. package/dist/src/engine/toolfence.js.map +1 -0
  337. package/dist/src/engine/tooluid.d.ts +128 -0
  338. package/dist/src/engine/tooluid.d.ts.map +1 -0
  339. package/dist/src/engine/tooluid.js +401 -0
  340. package/dist/src/engine/tooluid.js.map +1 -0
  341. package/dist/src/envstrip.d.ts +10 -0
  342. package/dist/src/envstrip.d.ts.map +1 -0
  343. package/dist/src/envstrip.js +15 -0
  344. package/dist/src/envstrip.js.map +1 -0
  345. package/dist/src/escalationprompt.d.ts +22 -0
  346. package/dist/src/escalationprompt.d.ts.map +1 -0
  347. package/dist/src/escalationprompt.js +54 -0
  348. package/dist/src/escalationprompt.js.map +1 -0
  349. package/dist/src/execfn.d.ts +29 -0
  350. package/dist/src/execfn.d.ts.map +1 -0
  351. package/dist/src/execfn.js +55 -0
  352. package/dist/src/execfn.js.map +1 -0
  353. package/dist/src/finding-chain.d.ts +40 -0
  354. package/dist/src/finding-chain.d.ts.map +1 -0
  355. package/dist/src/finding-chain.js +76 -0
  356. package/dist/src/finding-chain.js.map +1 -0
  357. package/dist/src/finding-row.d.ts +24 -0
  358. package/dist/src/finding-row.d.ts.map +1 -0
  359. package/dist/src/finding-row.js +26 -0
  360. package/dist/src/finding-row.js.map +1 -0
  361. package/dist/src/findingkey.d.ts +99 -0
  362. package/dist/src/findingkey.d.ts.map +1 -0
  363. package/dist/src/findingkey.js +210 -0
  364. package/dist/src/findingkey.js.map +1 -0
  365. package/dist/src/findingsrecord.d.ts +175 -0
  366. package/dist/src/findingsrecord.d.ts.map +1 -0
  367. package/dist/src/findingsrecord.js +410 -0
  368. package/dist/src/findingsrecord.js.map +1 -0
  369. package/dist/src/followup-mode.d.ts +4 -0
  370. package/dist/src/followup-mode.d.ts.map +1 -0
  371. package/dist/src/followup-mode.js +6 -0
  372. package/dist/src/followup-mode.js.map +1 -0
  373. package/dist/src/gate.d.ts +199 -0
  374. package/dist/src/gate.d.ts.map +1 -0
  375. package/dist/src/gate.js +315 -0
  376. package/dist/src/gate.js.map +1 -0
  377. package/dist/src/ghcred.d.ts +58 -0
  378. package/dist/src/ghcred.d.ts.map +1 -0
  379. package/dist/src/ghcred.js +139 -0
  380. package/dist/src/ghcred.js.map +1 -0
  381. package/dist/src/githubAuth.d.ts +32 -0
  382. package/dist/src/githubAuth.d.ts.map +1 -0
  383. package/dist/src/githubAuth.js +116 -0
  384. package/dist/src/githubAuth.js.map +1 -0
  385. package/dist/src/githubcore.d.ts +20 -0
  386. package/dist/src/githubcore.d.ts.map +1 -0
  387. package/dist/src/githubcore.js +20 -0
  388. package/dist/src/githubcore.js.map +1 -0
  389. package/dist/src/glob.d.ts +11 -0
  390. package/dist/src/glob.d.ts.map +1 -0
  391. package/dist/src/glob.js +69 -0
  392. package/dist/src/glob.js.map +1 -0
  393. package/dist/src/guards.d.ts +93 -0
  394. package/dist/src/guards.d.ts.map +1 -0
  395. package/dist/src/guards.js +306 -0
  396. package/dist/src/guards.js.map +1 -0
  397. package/dist/src/heartbeat.d.ts +29 -0
  398. package/dist/src/heartbeat.d.ts.map +1 -0
  399. package/dist/src/heartbeat.js +87 -0
  400. package/dist/src/heartbeat.js.map +1 -0
  401. package/dist/src/heuristics.d.ts +247 -0
  402. package/dist/src/heuristics.d.ts.map +1 -0
  403. package/dist/src/heuristics.js +927 -0
  404. package/dist/src/heuristics.js.map +1 -0
  405. package/dist/src/homes.d.ts +181 -0
  406. package/dist/src/homes.d.ts.map +1 -0
  407. package/dist/src/homes.js +242 -0
  408. package/dist/src/homes.js.map +1 -0
  409. package/dist/src/hunkheader.d.ts +11 -0
  410. package/dist/src/hunkheader.d.ts.map +1 -0
  411. package/dist/src/hunkheader.js +18 -0
  412. package/dist/src/hunkheader.js.map +1 -0
  413. package/dist/src/include.d.ts +435 -0
  414. package/dist/src/include.d.ts.map +1 -0
  415. package/dist/src/include.js +1692 -0
  416. package/dist/src/include.js.map +1 -0
  417. package/dist/src/launchvocab.d.ts +36 -0
  418. package/dist/src/launchvocab.d.ts.map +1 -0
  419. package/dist/src/launchvocab.js +59 -0
  420. package/dist/src/launchvocab.js.map +1 -0
  421. package/dist/src/ledgercarry.d.ts +24 -0
  422. package/dist/src/ledgercarry.d.ts.map +1 -0
  423. package/dist/src/ledgercarry.js +109 -0
  424. package/dist/src/ledgercarry.js.map +1 -0
  425. package/dist/src/lensids.d.ts +7 -0
  426. package/dist/src/lensids.d.ts.map +1 -0
  427. package/dist/src/lensids.js +53 -0
  428. package/dist/src/lensids.js.map +1 -0
  429. package/dist/src/lensplanning.d.ts +8 -0
  430. package/dist/src/lensplanning.d.ts.map +1 -0
  431. package/dist/src/lensplanning.js +126 -0
  432. package/dist/src/lensplanning.js.map +1 -0
  433. package/dist/src/lensresult.d.ts +94 -0
  434. package/dist/src/lensresult.d.ts.map +1 -0
  435. package/dist/src/lensresult.js +162 -0
  436. package/dist/src/lensresult.js.map +1 -0
  437. package/dist/src/lenstuning.d.ts +97 -0
  438. package/dist/src/lenstuning.d.ts.map +1 -0
  439. package/dist/src/lenstuning.js +326 -0
  440. package/dist/src/lenstuning.js.map +1 -0
  441. package/dist/src/lintconfig.d.ts +31 -0
  442. package/dist/src/lintconfig.d.ts.map +1 -0
  443. package/dist/src/lintconfig.js +543 -0
  444. package/dist/src/lintconfig.js.map +1 -0
  445. package/dist/src/live/events.d.ts +188 -0
  446. package/dist/src/live/events.d.ts.map +1 -0
  447. package/dist/src/live/events.js +136 -0
  448. package/dist/src/live/events.js.map +1 -0
  449. package/dist/src/live/writer.d.ts +54 -0
  450. package/dist/src/live/writer.d.ts.map +1 -0
  451. package/dist/src/live/writer.js +516 -0
  452. package/dist/src/live/writer.js.map +1 -0
  453. package/dist/src/localreview.d.ts +128 -0
  454. package/dist/src/localreview.d.ts.map +1 -0
  455. package/dist/src/localreview.js +426 -0
  456. package/dist/src/localreview.js.map +1 -0
  457. package/dist/src/loosenedtests.d.ts +13 -0
  458. package/dist/src/loosenedtests.d.ts.map +1 -0
  459. package/dist/src/loosenedtests.js +188 -0
  460. package/dist/src/loosenedtests.js.map +1 -0
  461. package/dist/src/memoryport.d.ts +264 -0
  462. package/dist/src/memoryport.d.ts.map +1 -0
  463. package/dist/src/memoryport.js +445 -0
  464. package/dist/src/memoryport.js.map +1 -0
  465. package/dist/src/migrations.d.ts +106 -0
  466. package/dist/src/migrations.d.ts.map +1 -0
  467. package/dist/src/migrations.js +373 -0
  468. package/dist/src/migrations.js.map +1 -0
  469. package/dist/src/oneshot.d.ts +12 -0
  470. package/dist/src/oneshot.d.ts.map +1 -0
  471. package/dist/src/oneshot.js +8 -0
  472. package/dist/src/oneshot.js.map +1 -0
  473. package/dist/src/packing.d.ts +11 -0
  474. package/dist/src/packing.d.ts.map +1 -0
  475. package/dist/src/packing.js +31 -0
  476. package/dist/src/packing.js.map +1 -0
  477. package/dist/src/passes.d.ts +16 -0
  478. package/dist/src/passes.d.ts.map +1 -0
  479. package/dist/src/passes.js +104 -0
  480. package/dist/src/passes.js.map +1 -0
  481. package/dist/src/passtasks.d.ts +68 -0
  482. package/dist/src/passtasks.d.ts.map +1 -0
  483. package/dist/src/passtasks.js +360 -0
  484. package/dist/src/passtasks.js.map +1 -0
  485. package/dist/src/pathinside.d.ts +5 -0
  486. package/dist/src/pathinside.d.ts.map +1 -0
  487. package/dist/src/pathinside.js +9 -0
  488. package/dist/src/pathinside.js.map +1 -0
  489. package/dist/src/pibuiltins.d.ts +36 -0
  490. package/dist/src/pibuiltins.d.ts.map +1 -0
  491. package/dist/src/pibuiltins.js +83 -0
  492. package/dist/src/pibuiltins.js.map +1 -0
  493. package/dist/src/plankey.d.ts +4 -0
  494. package/dist/src/plankey.d.ts.map +1 -0
  495. package/dist/src/plankey.js +10 -0
  496. package/dist/src/plankey.js.map +1 -0
  497. package/dist/src/planner.d.ts +375 -0
  498. package/dist/src/planner.d.ts.map +1 -0
  499. package/dist/src/planner.js +722 -0
  500. package/dist/src/planner.js.map +1 -0
  501. package/dist/src/plugin/args.d.ts +19 -0
  502. package/dist/src/plugin/args.d.ts.map +1 -0
  503. package/dist/src/plugin/args.js +107 -0
  504. package/dist/src/plugin/args.js.map +1 -0
  505. package/dist/src/plugin/index.d.ts +3 -0
  506. package/dist/src/plugin/index.d.ts.map +1 -0
  507. package/dist/src/plugin/index.js +14 -0
  508. package/dist/src/plugin/index.js.map +1 -0
  509. package/dist/src/plugin/login.d.ts +39 -0
  510. package/dist/src/plugin/login.d.ts.map +1 -0
  511. package/dist/src/plugin/login.js +73 -0
  512. package/dist/src/plugin/login.js.map +1 -0
  513. package/dist/src/plugin/review.d.ts +27 -0
  514. package/dist/src/plugin/review.d.ts.map +1 -0
  515. package/dist/src/plugin/review.js +298 -0
  516. package/dist/src/plugin/review.js.map +1 -0
  517. package/dist/src/plugin/runner.d.ts +6 -0
  518. package/dist/src/plugin/runner.d.ts.map +1 -0
  519. package/dist/src/plugin/runner.js +65 -0
  520. package/dist/src/plugin/runner.js.map +1 -0
  521. package/dist/src/plugin/scan.d.ts +79 -0
  522. package/dist/src/plugin/scan.d.ts.map +1 -0
  523. package/dist/src/plugin/scan.js +348 -0
  524. package/dist/src/plugin/scan.js.map +1 -0
  525. package/dist/src/plugin/session.d.ts +56 -0
  526. package/dist/src/plugin/session.d.ts.map +1 -0
  527. package/dist/src/plugin/session.js +2 -0
  528. package/dist/src/plugin/session.js.map +1 -0
  529. package/dist/src/plugin/setup.d.ts +19 -0
  530. package/dist/src/plugin/setup.d.ts.map +1 -0
  531. package/dist/src/plugin/setup.js +142 -0
  532. package/dist/src/plugin/setup.js.map +1 -0
  533. package/dist/src/plugin/versiongate.d.ts +26 -0
  534. package/dist/src/plugin/versiongate.d.ts.map +1 -0
  535. package/dist/src/plugin/versiongate.js +83 -0
  536. package/dist/src/plugin/versiongate.js.map +1 -0
  537. package/dist/src/postingkey.d.ts +8 -0
  538. package/dist/src/postingkey.d.ts.map +1 -0
  539. package/dist/src/postingkey.js +25 -0
  540. package/dist/src/postingkey.js.map +1 -0
  541. package/dist/src/postingpolicy.d.ts +108 -0
  542. package/dist/src/postingpolicy.d.ts.map +1 -0
  543. package/dist/src/postingpolicy.js +341 -0
  544. package/dist/src/postingpolicy.js.map +1 -0
  545. package/dist/src/pr-identity.d.ts +3 -0
  546. package/dist/src/pr-identity.d.ts.map +1 -0
  547. package/dist/src/pr-identity.js +9 -0
  548. package/dist/src/pr-identity.js.map +1 -0
  549. package/dist/src/prdelta.d.ts +181 -0
  550. package/dist/src/prdelta.d.ts.map +1 -0
  551. package/dist/src/prdelta.js +501 -0
  552. package/dist/src/prdelta.js.map +1 -0
  553. package/dist/src/pricing.d.ts +94 -0
  554. package/dist/src/pricing.d.ts.map +1 -0
  555. package/dist/src/pricing.js +209 -0
  556. package/dist/src/pricing.js.map +1 -0
  557. package/dist/src/priorfindings.d.ts +167 -0
  558. package/dist/src/priorfindings.d.ts.map +1 -0
  559. package/dist/src/priorfindings.js +445 -0
  560. package/dist/src/priorfindings.js.map +1 -0
  561. package/dist/src/priortasks.d.ts +31 -0
  562. package/dist/src/priortasks.d.ts.map +1 -0
  563. package/dist/src/priortasks.js +119 -0
  564. package/dist/src/priortasks.js.map +1 -0
  565. package/dist/src/profilelookup.d.ts +59 -0
  566. package/dist/src/profilelookup.d.ts.map +1 -0
  567. package/dist/src/profilelookup.js +98 -0
  568. package/dist/src/profilelookup.js.map +1 -0
  569. package/dist/src/profileoverrides.d.ts +91 -0
  570. package/dist/src/profileoverrides.d.ts.map +1 -0
  571. package/dist/src/profileoverrides.js +313 -0
  572. package/dist/src/profileoverrides.js.map +1 -0
  573. package/dist/src/profiles.d.ts +144 -0
  574. package/dist/src/profiles.d.ts.map +1 -0
  575. package/dist/src/profiles.js +604 -0
  576. package/dist/src/profiles.js.map +1 -0
  577. package/dist/src/promptdoc.d.ts +3 -0
  578. package/dist/src/promptdoc.d.ts.map +1 -0
  579. package/dist/src/promptdoc.js +18 -0
  580. package/dist/src/promptdoc.js.map +1 -0
  581. package/dist/src/prtarget.d.ts +70 -0
  582. package/dist/src/prtarget.d.ts.map +1 -0
  583. package/dist/src/prtarget.js +181 -0
  584. package/dist/src/prtarget.js.map +1 -0
  585. package/dist/src/recheckorder.d.ts +32 -0
  586. package/dist/src/recheckorder.d.ts.map +1 -0
  587. package/dist/src/recheckorder.js +5 -0
  588. package/dist/src/recheckorder.js.map +1 -0
  589. package/dist/src/reviewapi.d.ts +207 -0
  590. package/dist/src/reviewapi.d.ts.map +1 -0
  591. package/dist/src/reviewapi.js +939 -0
  592. package/dist/src/reviewapi.js.map +1 -0
  593. package/dist/src/reviewbotfindings.d.ts +33 -0
  594. package/dist/src/reviewbotfindings.d.ts.map +1 -0
  595. package/dist/src/reviewbotfindings.js +80 -0
  596. package/dist/src/reviewbotfindings.js.map +1 -0
  597. package/dist/src/reviewconfig.d.ts +741 -0
  598. package/dist/src/reviewconfig.d.ts.map +1 -0
  599. package/dist/src/reviewconfig.js +797 -0
  600. package/dist/src/reviewconfig.js.map +1 -0
  601. package/dist/src/reviewdelta.d.ts +51 -0
  602. package/dist/src/reviewdelta.d.ts.map +1 -0
  603. package/dist/src/reviewdelta.js +119 -0
  604. package/dist/src/reviewdelta.js.map +1 -0
  605. package/dist/src/reviewdest.d.ts +86 -0
  606. package/dist/src/reviewdest.d.ts.map +1 -0
  607. package/dist/src/reviewdest.js +142 -0
  608. package/dist/src/reviewdest.js.map +1 -0
  609. package/dist/src/reviewerstub.d.ts +12 -0
  610. package/dist/src/reviewerstub.d.ts.map +1 -0
  611. package/dist/src/reviewerstub.js +28 -0
  612. package/dist/src/reviewerstub.js.map +1 -0
  613. package/dist/src/reviewhost.d.ts +58 -0
  614. package/dist/src/reviewhost.d.ts.map +1 -0
  615. package/dist/src/reviewhost.js +135 -0
  616. package/dist/src/reviewhost.js.map +1 -0
  617. package/dist/src/reviewpost.d.ts +79 -0
  618. package/dist/src/reviewpost.d.ts.map +1 -0
  619. package/dist/src/reviewpost.js +233 -0
  620. package/dist/src/reviewpost.js.map +1 -0
  621. package/dist/src/reviewrender.d.ts +154 -0
  622. package/dist/src/reviewrender.d.ts.map +1 -0
  623. package/dist/src/reviewrender.js +480 -0
  624. package/dist/src/reviewrender.js.map +1 -0
  625. package/dist/src/reviewstate.d.ts +62 -0
  626. package/dist/src/reviewstate.d.ts.map +1 -0
  627. package/dist/src/reviewstate.js +167 -0
  628. package/dist/src/reviewstate.js.map +1 -0
  629. package/dist/src/reviewstore.d.ts +17 -0
  630. package/dist/src/reviewstore.d.ts.map +1 -0
  631. package/dist/src/reviewstore.js +105 -0
  632. package/dist/src/reviewstore.js.map +1 -0
  633. package/dist/src/round-progress.d.ts +120 -0
  634. package/dist/src/round-progress.d.ts.map +1 -0
  635. package/dist/src/round-progress.js +172 -0
  636. package/dist/src/round-progress.js.map +1 -0
  637. package/dist/src/round-stage-deadlines.d.ts +12 -0
  638. package/dist/src/round-stage-deadlines.d.ts.map +1 -0
  639. package/dist/src/round-stage-deadlines.js +10 -0
  640. package/dist/src/round-stage-deadlines.js.map +1 -0
  641. package/dist/src/session-command.d.ts +19 -0
  642. package/dist/src/session-command.d.ts.map +1 -0
  643. package/dist/src/session-command.js +20 -0
  644. package/dist/src/session-command.js.map +1 -0
  645. package/dist/src/settledread.d.ts +61 -0
  646. package/dist/src/settledread.d.ts.map +1 -0
  647. package/dist/src/settledread.js +135 -0
  648. package/dist/src/settledread.js.map +1 -0
  649. package/dist/src/severity.d.ts +167 -0
  650. package/dist/src/severity.d.ts.map +1 -0
  651. package/dist/src/severity.js +364 -0
  652. package/dist/src/severity.js.map +1 -0
  653. package/dist/src/severityrank.d.ts +8 -0
  654. package/dist/src/severityrank.d.ts.map +1 -0
  655. package/dist/src/severityrank.js +16 -0
  656. package/dist/src/severityrank.js.map +1 -0
  657. package/dist/src/standing-review.d.ts +45 -0
  658. package/dist/src/standing-review.d.ts.map +1 -0
  659. package/dist/src/standing-review.js +43 -0
  660. package/dist/src/standing-review.js.map +1 -0
  661. package/dist/src/storerows.d.ts +225 -0
  662. package/dist/src/storerows.d.ts.map +1 -0
  663. package/dist/src/storerows.js +7 -0
  664. package/dist/src/storerows.js.map +1 -0
  665. package/dist/src/styleguide.d.ts +25 -0
  666. package/dist/src/styleguide.d.ts.map +1 -0
  667. package/dist/src/styleguide.js +272 -0
  668. package/dist/src/styleguide.js.map +1 -0
  669. package/dist/src/sweepstatus.d.ts +42 -0
  670. package/dist/src/sweepstatus.d.ts.map +1 -0
  671. package/dist/src/sweepstatus.js +97 -0
  672. package/dist/src/sweepstatus.js.map +1 -0
  673. package/dist/src/templates.d.ts +243 -0
  674. package/dist/src/templates.d.ts.map +1 -0
  675. package/dist/src/templates.js +847 -0
  676. package/dist/src/templates.js.map +1 -0
  677. package/dist/src/types.d.ts +639 -0
  678. package/dist/src/types.d.ts.map +1 -0
  679. package/dist/src/types.js +90 -0
  680. package/dist/src/types.js.map +1 -0
  681. package/dist/src/unifieddiff.d.ts +22 -0
  682. package/dist/src/unifieddiff.d.ts.map +1 -0
  683. package/dist/src/unifieddiff.js +176 -0
  684. package/dist/src/unifieddiff.js.map +1 -0
  685. package/dist/src/yieldloop.d.ts +2 -0
  686. package/dist/src/yieldloop.d.ts.map +1 -0
  687. package/dist/src/yieldloop.js +14 -0
  688. package/dist/src/yieldloop.js.map +1 -0
  689. package/package.json +60 -4
@@ -0,0 +1,373 @@
1
+ // Django migration-number collision pre-check. Pure functions: the
2
+ // caller supplies the PR's changed files and the migration paths that exist on
3
+ // the base branch at the round's `base_sha`; this module decides whether the PR
4
+ // occupies a number the base already took, and writes the remedy.
5
+ //
6
+ // Why it lives daemon-side rather than in a lens: a leaf-node collision with
7
+ // the base branch is deterministic, machine-checkable without an LLM, has
8
+ // exactly one remedy (renumber + repoint `dependencies`) and carries no design
9
+ // content. Raised as a blocker it would consume the merge gate and cost the
10
+ // author a full re-review round for a mechanical rename. Nothing
11
+ // else in the pipeline catches it (GitHub reports MERGEABLE because the
12
+ // filenames differ, and CI is green), so the check does not get quieter here:
13
+ // it runs every round, deterministically, and is delivered as a COMMENT.
14
+ //
15
+ // This is not a trivial-delta classifier (src/recheck.ts owns that) —
16
+ // detection and comment text only.
17
+ import { codePath, flatControls } from "./codespan.js";
18
+ const MIGRATION_PATH = /^(?:(.*)\/)?migrations\/(\d{2,})_([^/]+)\.py$/;
19
+ /** Parse `…/<app>/migrations/NNNN_name.py`; undefined for anything else
20
+ * (including `__init__.py`, which carries no number). */
21
+ export function parseMigrationPath(path) {
22
+ const m = MIGRATION_PATH.exec(path);
23
+ if (!m)
24
+ return undefined;
25
+ const app = m[1] ?? "";
26
+ const digits = m[2];
27
+ return {
28
+ path,
29
+ app,
30
+ app_label: app.split("/").filter(Boolean).pop() ?? "",
31
+ number: Number(digits),
32
+ digits,
33
+ name: m[3],
34
+ };
35
+ }
36
+ function migrationName(ref) {
37
+ return `${ref.digits}_${ref.name}`;
38
+ }
39
+ export function dependencyTuple(label, name) {
40
+ return `(${label ? JSON.stringify(label) : "<existing app label>"}, ${JSON.stringify(name)})`;
41
+ }
42
+ /** Re-number a ref onto `n`, keeping the on-disk zero-padding width. */
43
+ function renamedTo(ref, n) {
44
+ const digits = String(n).padStart(ref.digits.length, "0");
45
+ const name = `${digits}_${ref.name}`;
46
+ return { name, path: `${ref.app ? `${ref.app}/` : ""}migrations/${name}.py` };
47
+ }
48
+ function escapeRe(s) {
49
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
50
+ }
51
+ /** Whitespace inside a tuple, where a line break in a unified diff carries
52
+ * the next line's `+` prefix. */
53
+ const DIFF_GAP = "(?:[^\\S\\n]|\\n\\+?)*";
54
+ /** The patch as the file reads after the change: its removed lines dropped,
55
+ * so a dependency the PR deletes is never read as one it still holds. */
56
+ function postChange(patch) {
57
+ return patch
58
+ .split("\n")
59
+ .filter((l) => !l.startsWith("-"))
60
+ .join("\n");
61
+ }
62
+ /** Does this file's diff name `(app_label, name)` as a `dependencies` tuple?
63
+ * A cross-app reference must carry the label — a bare `"0001_initial"` in
64
+ * another app is that app's own migration. The tuple may be split across
65
+ * added diff lines and carry a trailing comma. */
66
+ function referencesAppMigration(patch, appLabel, name) {
67
+ if (!patch || !name || !appLabel)
68
+ return false;
69
+ const g = DIFF_GAP;
70
+ return new RegExp(`\\(${g}["']${escapeRe(appLabel)}["']${g},${g}["']${escapeRe(name)}["']${g}(?:,${g})?\\)`).test(postChange(patch));
71
+ }
72
+ /** Same-app follow-up match. A same-app dependency is an `(app_label, name)`
73
+ * tuple, but the label is inferred from the directory and Django's label can
74
+ * differ, and a tuple split across diff lines carries a `+` between its halves
75
+ * — so a bare quoted `name` still counts (the check must never get quieter
76
+ * than a name-only match), except an occurrence that is the second
77
+ * half of a tuple naming another app this PR or the base branch holds: that
78
+ * one is that app's identically named migration. */
79
+ function ownDependencyLabel(patch, ownLabel, name, knownLabels) {
80
+ if (!patch || !name)
81
+ return null;
82
+ if (referencesAppMigration(patch, ownLabel, name))
83
+ return ownLabel;
84
+ const post = postChange(patch);
85
+ const re = new RegExp(`["']${escapeRe(name)}["']`, "g");
86
+ // The tuple's first half, which may sit on an earlier added line.
87
+ const tupleHead = new RegExp(`\\(${DIFF_GAP}["']([^"'\\n]*)["']${DIFF_GAP},${DIFF_GAP}$`);
88
+ for (let m = re.exec(post); m !== null; m = re.exec(post)) {
89
+ const head = tupleHead.exec(post.slice(Math.max(0, m.index - 200), m.index));
90
+ if (head && head[1] !== ownLabel && knownLabels.has(head[1]))
91
+ continue;
92
+ return head?.[1] ?? ownLabel;
93
+ }
94
+ return null;
95
+ }
96
+ /**
97
+ * Migration numbers this PR claims that the base branch already occupies.
98
+ *
99
+ * A collision is "same app, same number, different file" — a PR file that
100
+ * merely edits a migration already on the base (same path) is not one. Deleted
101
+ * PR files are ignored. Collisions are returned in path order per app, and the
102
+ * assigned target numbers form a chain: the first renumbered migration in an
103
+ * app depends on the base branch's leaf, each later one on its predecessor.
104
+ */
105
+ export function detectMigrationCollisions(input) {
106
+ const baseByApp = new Map();
107
+ // Every base migration path. Django names a migration by app + full name, so
108
+ // a merged graph can legitimately hold 0042_a and 0042_b; a PR editing
109
+ // either one edits an existing file and collides with nothing.
110
+ const basePaths = new Set();
111
+ for (const path of input.baseFiles) {
112
+ const ref = parseMigrationPath(path);
113
+ if (!ref)
114
+ continue;
115
+ basePaths.add(ref.path);
116
+ const byNumber = baseByApp.get(ref.app) ?? new Map();
117
+ // Two base migrations on one number (branched history + a merge
118
+ // migration): the higher path is the occupant a new file is told about.
119
+ const prev = byNumber.get(ref.number);
120
+ if (!prev || prev.path < ref.path)
121
+ byNumber.set(ref.number, ref);
122
+ baseByApp.set(ref.app, byNumber);
123
+ }
124
+ const prByApp = new Map();
125
+ for (const f of input.files) {
126
+ if (f.status === "removed")
127
+ continue;
128
+ const ref = parseMigrationPath(f.filename);
129
+ if (!ref)
130
+ continue;
131
+ prByApp.set(ref.app, [
132
+ ...(prByApp.get(ref.app) ?? []),
133
+ { ref, ...(f.patch !== undefined ? { patch: f.patch } : {}) },
134
+ ]);
135
+ }
136
+ // The one deterministic order both passes walk: apps by name, each app's
137
+ // migrations by number then path (the remedy's order, and its fingerprint's).
138
+ const orderedByApp = [...prByApp]
139
+ .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))
140
+ .map(([app, entries]) => [
141
+ app,
142
+ [...entries].sort((a, b) => a.ref.number - b.ref.number || (a.ref.path < b.ref.path ? -1 : 1)),
143
+ ]);
144
+ // Every app label either side holds — what tells a same-app bare-name match
145
+ // apart from another app's identically named migration.
146
+ const knownLabels = new Set();
147
+ for (const path of basePaths)
148
+ knownLabels.add(parseMigrationPath(path).app_label);
149
+ for (const entries of prByApp.values())
150
+ for (const { ref } of entries)
151
+ knownLabels.add(ref.app_label);
152
+ knownLabels.delete("");
153
+ // Infer custom labels only from tuples naming migrations this app owns.
154
+ // Multiple incompatible labels remain unresolved rather than choosing one.
155
+ const labelsByApp = new Map();
156
+ for (const [app, ordered] of orderedByApp) {
157
+ const ownNames = new Set([
158
+ ...[...(baseByApp.get(app)?.values() ?? [])].map(migrationName),
159
+ ...ordered.map(({ ref }) => migrationName(ref)),
160
+ ]);
161
+ const labels = new Set();
162
+ for (const { ref, patch } of ordered)
163
+ for (const name of ownNames) {
164
+ const label = ownDependencyLabel(patch, ref.app_label, name, knownLabels);
165
+ if (label !== null && label !== ref.app_label)
166
+ labels.add(label);
167
+ }
168
+ labelsByApp.set(app, labels.size === 1 ? [...labels][0] : ordered[0].ref.app_label);
169
+ }
170
+ const out = [];
171
+ // Every rename the remedy prescribes, per app, for the cross-app follow-up
172
+ // pass below.
173
+ const renamedByApp = new Map();
174
+ for (const [app, ordered] of orderedByApp) {
175
+ const base = baseByApp.get(app) ?? new Map();
176
+ const colliding = ordered.filter(({ ref: r }) => {
177
+ const occupant = base.get(r.number);
178
+ return occupant !== undefined && !basePaths.has(r.path);
179
+ });
180
+ if (colliding.length === 0)
181
+ continue;
182
+ // Free numbers start above everything either side already uses, so the
183
+ // remedy never collides with a sibling migration in the same PR.
184
+ const used = [...base.keys(), ...ordered.map(({ ref: r }) => r.number)];
185
+ let next = Math.max(...used) + 1;
186
+ // The chain root is the base branch's leaf — the highest number the base
187
+ // holds for this app, which is what the renumbered migration must depend on.
188
+ const baseLeaf = [...base.values()].sort((a, b) => a.number - b.number).pop();
189
+ let dependencyName = baseLeaf ? migrationName(baseLeaf) : "";
190
+ const renamed = new Map();
191
+ const collidingPaths = new Set(colliding.map(({ ref }) => ref.path));
192
+ // Include every follow-up before allocating numbers, then process parents
193
+ // before dependants. Numbers usually follow dependency order, but Django
194
+ // permits a lower-numbered migration to depend on a later-numbered one.
195
+ const affected = new Set(colliding.map(({ ref }) => migrationName(ref)));
196
+ let grew = true;
197
+ while (grew) {
198
+ grew = false;
199
+ for (const { ref, patch } of ordered) {
200
+ const name = migrationName(ref);
201
+ if (affected.has(name))
202
+ continue;
203
+ if ([...affected].some((old) => ownDependencyLabel(patch, ref.app_label, old, knownLabels) !== null)) {
204
+ affected.add(name);
205
+ grew = true;
206
+ }
207
+ }
208
+ }
209
+ const remaining = ordered.filter(({ ref }) => affected.has(migrationName(ref)));
210
+ const remedyOrder = [];
211
+ while (remaining.length > 0) {
212
+ const index = remaining.findIndex(({ ref, patch }) => remaining.every(({ ref: other }) => other.path === ref.path ||
213
+ ownDependencyLabel(patch, ref.app_label, migrationName(other), knownLabels) === null));
214
+ // An already-cyclic input has no dependency order; keep its stable path
215
+ // order rather than letting advice generation hang.
216
+ remedyOrder.push(remaining.splice(index < 0 ? 0 : index, 1)[0]);
217
+ }
218
+ for (const { ref, patch } of remedyOrder) {
219
+ const stales = [...renamed.keys()].flatMap((old) => {
220
+ const label = ownDependencyLabel(patch, ref.app_label, old, knownLabels);
221
+ return label === null ? [] : [{ old, label, dep: renamed.get(old) }];
222
+ });
223
+ const collides = collidingPaths.has(ref.path);
224
+ if (!collides && stales.length === 0)
225
+ continue;
226
+ const mustRenumber = collides || stales.some(({ dep }) => ref.number <= dep.number);
227
+ const targetNumber = mustRenumber ? next++ : ref.number;
228
+ const target = mustRenumber
229
+ ? renamedTo(ref, targetNumber)
230
+ : { name: migrationName(ref), path: ref.path };
231
+ if (collides) {
232
+ const label = stales[0]?.label ?? labelsByApp.get(app) ?? ref.app_label;
233
+ out.push({
234
+ app,
235
+ app_label: ref.app_label,
236
+ pr_path: ref.path,
237
+ number: ref.number,
238
+ base_path: base.get(ref.number).path,
239
+ target_number: targetNumber,
240
+ target_path: target.path,
241
+ dependency_name: dependencyName,
242
+ dependency: dependencyTuple(label, dependencyName),
243
+ ...(label !== ref.app_label ? { dependency_app_label: label } : {}),
244
+ kind: "base-collision",
245
+ });
246
+ }
247
+ // A colliding file still owns every original dependency edge. Adding
248
+ // the collision chain edge must not replace its branch dependencies.
249
+ stales.forEach(({ old, label, dep }, i) => {
250
+ out.push({
251
+ app,
252
+ app_label: ref.app_label,
253
+ pr_path: ref.path,
254
+ number: ref.number,
255
+ base_path: "",
256
+ target_number: targetNumber,
257
+ target_path: target.path,
258
+ dependency_name: dep.name,
259
+ dependency: dependencyTuple(label, dep.name),
260
+ dependency_app_label: label,
261
+ kind: "renamed-dependency",
262
+ stale_dependency: old,
263
+ renumber: !collides && mustRenumber && i === 0,
264
+ });
265
+ });
266
+ if (mustRenumber)
267
+ renamed.set(migrationName(ref), { name: target.name, number: targetNumber });
268
+ if (collides)
269
+ dependencyName = target.name;
270
+ }
271
+ renamedByApp.set(app, {
272
+ app_label: labelsByApp.get(app) ?? colliding[0].ref.app_label,
273
+ renamed,
274
+ });
275
+ }
276
+ // Cross-app follow-ups: a PR migration in another app whose `dependencies`
277
+ // name a migration the remedy renames. Numbers are per app, so it never
278
+ // renumbers — only its dependency tuple moves.
279
+ if (renamedByApp.size > 0) {
280
+ for (const [app, ordered] of orderedByApp) {
281
+ // Every PR file, including one the same-app pass already remedied: its
282
+ // own-app entry moving says nothing about a stale tuple naming another
283
+ // app. One entry per stale tuple, across every renamed app.
284
+ for (const { ref, patch } of ordered) {
285
+ for (const [otherApp, { app_label, renamed }] of renamedByApp) {
286
+ if (otherApp === app)
287
+ continue;
288
+ for (const [stale, dep] of renamed) {
289
+ if (!referencesAppMigration(patch, app_label, stale))
290
+ continue;
291
+ out.push({
292
+ app,
293
+ app_label: ref.app_label,
294
+ pr_path: ref.path,
295
+ number: ref.number,
296
+ base_path: "",
297
+ target_number: ref.number,
298
+ target_path: ref.path,
299
+ dependency_name: dep.name,
300
+ dependency: dependencyTuple(app_label, dep.name),
301
+ kind: "renamed-dependency",
302
+ stale_dependency: stale,
303
+ renumber: false,
304
+ dependency_app_label: app_label,
305
+ });
306
+ }
307
+ }
308
+ }
309
+ }
310
+ }
311
+ return out;
312
+ }
313
+ /** The renamed-dependency edit both renderers quote: the stale dependency
314
+ * tuple replaced by the renumbered one. */
315
+ export function renamedDependencyReplacement(c) {
316
+ const stale = c.stale_dependency ?? "";
317
+ return `replace ${codePath(dependencyTuple(c.dependency_app_label ?? c.app_label, stale))} with ${codePath(c.dependency)}`;
318
+ }
319
+ /** A serialization edge is additive: a partial diff cannot enumerate all
320
+ * original parents, and no original edge may be discarded by the remedy. */
321
+ export function collisionDependencyAdvice(c) {
322
+ const unknown = c.dependency_app_label || c.app_label
323
+ ? ""
324
+ : " (use its existing app label; the root path does not establish it)";
325
+ return `in its \`dependencies\`, also include ${codePath(c.dependency)} for the collision chain${unknown} — keep every existing entry, applying the renamed-dependency replacements below where listed`;
326
+ }
327
+ /** Stable identity of a detection result — used to post the comment once per
328
+ * (head sha, collision set) rather than on every round at the same head. */
329
+ export function collisionFingerprint(headSha, collisions) {
330
+ return [headSha, ...collisions.map((c) => `${c.pr_path}→${c.target_path}@${c.dependency}`)].join("|");
331
+ }
332
+ /** The collision comment's heading line; `cliops` recognises the comment by it. */
333
+ export const MIGRATION_COMMENT_HEADING = "### Migration numbering — renumber needed (mechanics, not a blocker)";
334
+ /** The collision comment's closing sentence opener; `cliops` recognises the comment by it. */
335
+ export const MIGRATION_COMMENT_CLOSING = "This is posted as a comment on purpose:";
336
+ /**
337
+ * The comment body. It states the exact target number and the exact
338
+ * `dependencies` value, and says in plain words that this is mechanics — no
339
+ * blocker, no verdict consumed, no re-review round owed. Filename-derived
340
+ * fields are the PR author's and render through `codePath` (see
341
+ * `renderMigrationCollisionsNote`).
342
+ */
343
+ export function renderMigrationCollisionComment(input) {
344
+ const branch = input.base_ref || "the base branch";
345
+ const at = input.base_sha ? ` (\`${input.base_sha.slice(0, 12)}\`)` : "";
346
+ const subject = input.collisions.length === 1
347
+ ? "the migration number this PR claims"
348
+ : "migration numbers this PR claims";
349
+ const lines = [
350
+ MIGRATION_COMMENT_HEADING,
351
+ "",
352
+ `\`${branch}\`${at} already occupies ${subject}. GitHub still reports the PR mergeable ` +
353
+ "(the filenames differ) and CI is green, so nothing else catches this — but the " +
354
+ "migration graph would break on merge.",
355
+ "",
356
+ ];
357
+ for (const c of input.collisions) {
358
+ const targetNumber = String(c.target_number).padStart(4, "0");
359
+ if (c.kind === "renamed-dependency") {
360
+ const stale = c.stale_dependency ?? "";
361
+ lines.push(`- ${codePath(c.pr_path)} — its \`dependencies\` reference ${codePath(`"${stale}"`)}, which the renumber above moves to ${codePath(c.dependency_name)}.`, ` - in its \`dependencies\`, ${renamedDependencyReplacement(c)} — keep every other entry`);
362
+ if (c.renumber)
363
+ lines.push(` - and rename it to ${codePath(c.target_path)} (number **${targetNumber}**) — its current number would sit below its renumbered dependency`);
364
+ continue;
365
+ }
366
+ lines.push(`- ${codePath(c.pr_path)} collides with ${codePath(c.base_path)} on ${flatControls(branch)}.`, ` - rename it to ${codePath(c.target_path)} (number **${targetNumber}**)`, ` - ${collisionDependencyAdvice(c)}`);
367
+ }
368
+ lines.push("", `${MIGRATION_COMMENT_CLOSING} the fix is mechanical, it consumes no ` +
369
+ "review verdict and it does not block the merge gate. Nothing else in this " +
370
+ "round's review depends on it.");
371
+ return lines.join("\n");
372
+ }
373
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/migrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Runtime } from "./engine/port.js";
2
+ import { type RoundResult, type RoundSpec } from "./engine/round.js";
3
+ export { jsonProblem, missingOutputs, PI_RUN_FILES, readJson, unparseableOutputs, } from "./engine/round.js";
4
+ export type { PiRun } from "./engine/port.js";
5
+ export interface OneShotInput extends RoundSpec {
6
+ /** Hosts the pi session: the SDK runtime of the route. */
7
+ runtime: Runtime;
8
+ }
9
+ export type OneShotResult = RoundResult;
10
+ /** Run the review: `runRound` on `runtime`. */
11
+ export declare function runOneShot(i: OneShotInput): Promise<OneShotResult>;
12
+ //# sourceMappingURL=oneshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oneshot.d.ts","sourceRoot":"","sources":["../../src/oneshot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAY,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC;AAExC,+CAA+C;AAC/C,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAGlE"}
@@ -0,0 +1,8 @@
1
+ import { runRound } from "./engine/round.js";
2
+ export { jsonProblem, missingOutputs, PI_RUN_FILES, readJson, unparseableOutputs, } from "./engine/round.js";
3
+ /** Run the review: `runRound` on `runtime`. */
4
+ export function runOneShot(i) {
5
+ const { runtime, ...spec } = i;
6
+ return runRound(spec, runtime);
7
+ }
8
+ //# sourceMappingURL=oneshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oneshot.js","sourceRoot":"","sources":["../../src/oneshot.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAoC,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAU3B,+CAA+C;AAC/C,MAAM,UAAU,UAAU,CAAC,CAAe;IACxC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Greedy file groups in input order. An oversized file keeps its own group;
2
+ * files beyond the group cap are returned in left, never discarded. */
3
+ export declare function packByBudget<T>(files: readonly T[], limits: {
4
+ maxGroups: number;
5
+ maxLines: number;
6
+ maxFiles?: number;
7
+ }, pathOf: (file: T) => string, sizeOf: (file: T) => number): {
8
+ groups: string[][];
9
+ left: string[];
10
+ };
11
+ //# sourceMappingURL=packing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packing.d.ts","sourceRoot":"","sources":["../../src/packing.ts"],"names":[],"mappings":"AAAA;uEACuE;AACvE,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAClE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAC1B;IAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CA2BxC"}
@@ -0,0 +1,31 @@
1
+ /** Greedy file groups in input order. An oversized file keeps its own group;
2
+ * files beyond the group cap are returned in left, never discarded. */
3
+ export function packByBudget(files, limits, pathOf, sizeOf) {
4
+ const groups = [];
5
+ const left = [];
6
+ let current = [];
7
+ let lines = 0;
8
+ for (const file of files) {
9
+ const size = sizeOf(file);
10
+ if (current.length > 0 &&
11
+ (current.length >= (limits.maxFiles ?? Infinity) || lines + size > limits.maxLines)) {
12
+ groups.push(current);
13
+ current = [];
14
+ lines = 0;
15
+ }
16
+ if (groups.length >= limits.maxGroups) {
17
+ left.push(pathOf(file));
18
+ continue;
19
+ }
20
+ current.push(pathOf(file));
21
+ lines += size;
22
+ }
23
+ if (current.length > 0) {
24
+ if (groups.length < limits.maxGroups)
25
+ groups.push(current);
26
+ else
27
+ left.push(...current);
28
+ }
29
+ return { groups, left };
30
+ }
31
+ //# sourceMappingURL=packing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packing.js","sourceRoot":"","sources":["../../src/packing.ts"],"names":[],"mappings":"AAAA;uEACuE;AACvE,MAAM,UAAU,YAAY,CAC1B,KAAmB,EACnB,MAAkE,EAClE,MAA2B,EAC3B,MAA2B;IAE3B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,IACE,OAAO,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EACnF,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,KAAK,IAAI,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS;YAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;YACtD,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,16 @@
1
+ /** Every pass the system knows: the lenses selectLenses can emit plus the
2
+ * always-appended validator. addable_lenses derives from this set (∪ the
3
+ * configured risk passes, which today are a subset of it). */
4
+ export declare const ALL_PASSES: readonly string[];
5
+ /** Lenses the whole-repo scan never runs: each needs a diff, a PR body or a
6
+ * mid-round session to mean anything — plus the validator, which is not a
7
+ * lens. Everything else in `ALL_PASSES` is a deep lens a scan may run. */
8
+ export declare const DIFF_ONLY_LENSES: readonly string[];
9
+ /** The deep lenses a scan may run: stage 1 may name them in a suggestion,
10
+ * stage 2 may run them on a row. */
11
+ export declare const SCAN_DEEP_LENSES: readonly string[];
12
+ /** The deep scan's floor lenses by default (`[scan] deep_lenses`): the ones
13
+ * that compare code with its siblings and follow a delivery through its
14
+ * exits — what a first look over one unit never reaches. */
15
+ export declare const SCAN_DEEP_FLOOR_LENSES: readonly string[];
16
+ //# sourceMappingURL=passes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passes.d.ts","sourceRoot":"","sources":["../../src/passes.ts"],"names":[],"mappings":"AAMA;;8DAE8D;AAC9D,eAAO,MAAM,UAAU,EAAE,SAAS,MAAM,EAqEvC,CAAC;AAEF;;0EAE0E;AAC1E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAS7C,CAAC;AAEF;oCACoC;AACpC,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAE7C,CAAC;AAEF;;4DAE4D;AAC5D,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAKnD,CAAC"}
@@ -0,0 +1,104 @@
1
+ // The pass vocabulary — every pass the system knows, in plan order, and which
2
+ // of them a whole-repo scan may run. Its own module (no imports) so config
3
+ // parsing can validate pass-name knobs (`[review] skip_lenses`,
4
+ // `[models.pass_tiers]`, `[scan] deep_lenses`) against it without an import
5
+ // cycle through dispatch.ts, which re-exports it.
6
+ /** Every pass the system knows: the lenses selectLenses can emit plus the
7
+ * always-appended validator. addable_lenses derives from this set (∪ the
8
+ * configured risk passes, which today are a subset of it). */
9
+ export const ALL_PASSES = [
10
+ "pass-baseline",
11
+ "pass-ui",
12
+ "pass-contracts",
13
+ "pass-data-safety",
14
+ "pass-security",
15
+ "pass-statelessness",
16
+ "pass-prod-risk",
17
+ "pass-delivery",
18
+ "pass-intent",
19
+ "pass-placement",
20
+ "pass-simplicity",
21
+ "pass-backcompat",
22
+ // No PATH predicate, deliberately. `selectLenses` never emits
23
+ // pass-concurrency — a read-modify-write race has no filename (the corpus
24
+ // findings span unrelated modules), so no path predicate finds the set. It
25
+ // reaches a round through the add protocol, when the session names the
26
+ // read-then-write it suspects — or as a content-triggered sub-lens, when the diff touches synchronisation or the
27
+ // PR text says race/lock/thread-safe (heuristics.ts SUBLENS_TRIGGERS; it
28
+ // sits here, ahead of the other sub-lenses, in registry order).
29
+ "pass-concurrency",
30
+ // Addable-only for the same reason and one more. No path predicate
31
+ // finds "code whose intent is written down nowhere", and the deciding fact —
32
+ // whether the answer is in the repo at all — is only visible after the diff
33
+ // has been read, which is exactly when the session runs the add protocol.
34
+ // (pass-intent's substance bar is the precedent for what daemon-side
35
+ // selection must be: cheap AND honest. The one body-shaped signal here — "the
36
+ // PR text never says why" — is true of most PRs, so planning on it would
37
+ // dispatch the lens nearly always: the pure-spend case that bar exists to
38
+ // prevent, on a lens whose failure mode is volume.)
39
+ "pass-ask-human",
40
+ // Content-triggered sub-lenses (heuristics.ts SUBLENS_TRIGGERS — this list
41
+ // is held equal to SUBLENS_PASSES by tests/review-levers.test.ts): planned
42
+ // when their trigger fires, addable otherwise — the max-effort benchmark
43
+ // runs added a lens on 6 of 10 PRs, and the added lens found defects no
44
+ // planned one did.
45
+ "pass-widened",
46
+ "pass-roundtrip",
47
+ "pass-deferred",
48
+ "pass-bounds",
49
+ "pass-claims",
50
+ "pass-rollout",
51
+ // Base versus head on every modifying change —
52
+ // planned as one row per group of modifying files when `[review]
53
+ // behaviour_delta` is on; addable otherwise.
54
+ "pass-behaviour-delta",
55
+ // The per-file sweep: planned as one row per file group when `[review]
56
+ // sweep` is on; otherwise addable, so a session can sweep a file it
57
+ // suspects.
58
+ "pass-sweep",
59
+ // The tests lens — planned on every PR that changes code when
60
+ // `[review] tests_lens` is on; addable otherwise.
61
+ "pass-tests",
62
+ // The code-quality lenses — planned when `[review] quality_lenses` is on and
63
+ // the change adds enough code; addable otherwise.
64
+ "pass-maintainability",
65
+ "pass-duplication",
66
+ "pass-abstraction",
67
+ "pass-consistency",
68
+ // The style lens — planned only when the repo has a written style guide
69
+ // (packages/pi-plugin/src/styleguide.ts) or the profile points it at one; addable
70
+ // otherwise, but it judges only against a guide, so without one it answers
71
+ // NONE.
72
+ "pass-style",
73
+ // Lint and format conformance — planned only
74
+ // when a CI job runs a linter whose rules cover a changed file
75
+ // (packages/pi-plugin/src/lintconfig.ts); addable otherwise.
76
+ "pass-lint-conformance",
77
+ "pass-validate",
78
+ ];
79
+ /** Lenses the whole-repo scan never runs: each needs a diff, a PR body or a
80
+ * mid-round session to mean anything — plus the validator, which is not a
81
+ * lens. Everything else in `ALL_PASSES` is a deep lens a scan may run. */
82
+ export const DIFF_ONLY_LENSES = [
83
+ "pass-intent",
84
+ "pass-claims",
85
+ "pass-backcompat",
86
+ "pass-rollout",
87
+ "pass-widened",
88
+ "pass-sweep",
89
+ "pass-ask-human",
90
+ "pass-validate",
91
+ ];
92
+ /** The deep lenses a scan may run: stage 1 may name them in a suggestion,
93
+ * stage 2 may run them on a row. */
94
+ export const SCAN_DEEP_LENSES = ALL_PASSES.filter((p) => !DIFF_ONLY_LENSES.includes(p));
95
+ /** The deep scan's floor lenses by default (`[scan] deep_lenses`): the ones
96
+ * that compare code with its siblings and follow a delivery through its
97
+ * exits — what a first look over one unit never reaches. */
98
+ export const SCAN_DEEP_FLOOR_LENSES = [
99
+ "pass-consistency",
100
+ "pass-delivery",
101
+ "pass-duplication",
102
+ "pass-maintainability",
103
+ ];
104
+ //# sourceMappingURL=passes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passes.js","sourceRoot":"","sources":["../../src/passes.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,2EAA2E;AAC3E,gEAAgE;AAChE,4EAA4E;AAC5E,kDAAkD;AAElD;;8DAE8D;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAsB;IAC3C,eAAe;IACf,SAAS;IACT,gBAAgB;IAChB,kBAAkB;IAClB,eAAe;IACf,oBAAoB;IACpB,gBAAgB;IAChB,eAAe;IACf,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,8DAA8D;IAC9D,0EAA0E;IAC1E,2EAA2E;IAC3E,uEAAuE;IACvE,iHAAiH;IACjH,yEAAyE;IACzE,gEAAgE;IAChE,kBAAkB;IAClB,mEAAmE;IACnE,6EAA6E;IAC7E,4EAA4E;IAC5E,0EAA0E;IAC1E,qEAAqE;IACrE,8EAA8E;IAC9E,yEAAyE;IACzE,0EAA0E;IAC1E,oDAAoD;IACpD,gBAAgB;IAChB,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,wEAAwE;IACxE,mBAAmB;IACnB,cAAc;IACd,gBAAgB;IAChB,eAAe;IACf,aAAa;IACb,aAAa;IACb,cAAc;IACd,+CAA+C;IAC/C,iEAAiE;IACjE,6CAA6C;IAC7C,sBAAsB;IACtB,uEAAuE;IACvE,oEAAoE;IACpE,YAAY;IACZ,YAAY;IACZ,8DAA8D;IAC9D,kDAAkD;IAClD,YAAY;IACZ,6EAA6E;IAC7E,kDAAkD;IAClD,sBAAsB;IACtB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,wEAAwE;IACxE,kFAAkF;IAClF,2EAA2E;IAC3E,QAAQ;IACR,YAAY;IACZ,6CAA6C;IAC7C,+DAA+D;IAC/D,6DAA6D;IAC7D,uBAAuB;IACvB,eAAe;CAChB,CAAC;AAEF;;0EAE0E;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAsB;IACjD,aAAa;IACb,aAAa;IACb,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,YAAY;IACZ,gBAAgB;IAChB,eAAe;CAChB,CAAC;AAEF;oCACoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAsB,UAAU,CAAC,MAAM,CAClE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACrC,CAAC;AAEF;;4DAE4D;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,kBAAkB;IAClB,eAAe;IACf,kBAAkB;IAClB,sBAAsB;CACvB,CAAC"}