paperlint 2.0.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 (762) hide show
  1. package/.github/dependabot.yml +72 -0
  2. package/.github/workflows/ci.yml +297 -0
  3. package/.github/workflows/dependabot-automerge.yml +70 -0
  4. package/.github/workflows/pr-title.yml +59 -0
  5. package/.github/workflows/release.yml +54 -0
  6. package/CLAUDE.md +598 -0
  7. package/CONTRIBUTING.md +159 -0
  8. package/LICENSE +21 -0
  9. package/README.md +240 -0
  10. package/action.harness.mjs +287 -0
  11. package/action.mutations.mjs +162 -0
  12. package/action.yml +138 -0
  13. package/bin/rpp.mjs +43 -0
  14. package/dist/action-ref.d.ts +12 -0
  15. package/dist/action-ref.d.ts.map +1 -0
  16. package/dist/action-ref.js +16 -0
  17. package/dist/action-ref.js.map +1 -0
  18. package/dist/adapters/banal/failure.d.ts +73 -0
  19. package/dist/adapters/banal/failure.d.ts.map +1 -0
  20. package/dist/adapters/banal/failure.js +58 -0
  21. package/dist/adapters/banal/failure.js.map +1 -0
  22. package/dist/adapters/banal/index.d.ts +17 -0
  23. package/dist/adapters/banal/index.d.ts.map +1 -0
  24. package/dist/adapters/banal/index.js +56 -0
  25. package/dist/adapters/banal/index.js.map +1 -0
  26. package/dist/adapters/banal/install.d.ts +26 -0
  27. package/dist/adapters/banal/install.d.ts.map +1 -0
  28. package/dist/adapters/banal/install.js +15 -0
  29. package/dist/adapters/banal/install.js.map +1 -0
  30. package/dist/adapters/banal/invocation.d.ts +48 -0
  31. package/dist/adapters/banal/invocation.d.ts.map +1 -0
  32. package/dist/adapters/banal/invocation.js +43 -0
  33. package/dist/adapters/banal/invocation.js.map +1 -0
  34. package/dist/adapters/banal/locate.d.ts +50 -0
  35. package/dist/adapters/banal/locate.d.ts.map +1 -0
  36. package/dist/adapters/banal/locate.js +34 -0
  37. package/dist/adapters/banal/locate.js.map +1 -0
  38. package/dist/adapters/banal/output.d.ts +27 -0
  39. package/dist/adapters/banal/output.d.ts.map +1 -0
  40. package/dist/adapters/banal/output.js +112 -0
  41. package/dist/adapters/banal/output.js.map +1 -0
  42. package/dist/adapters/banal/pin.d.ts +19 -0
  43. package/dist/adapters/banal/pin.d.ts.map +1 -0
  44. package/dist/adapters/banal/pin.js +15 -0
  45. package/dist/adapters/banal/pin.js.map +1 -0
  46. package/dist/adapters/banal/probe.d.ts +12 -0
  47. package/dist/adapters/banal/probe.d.ts.map +1 -0
  48. package/dist/adapters/banal/probe.js +27 -0
  49. package/dist/adapters/banal/probe.js.map +1 -0
  50. package/dist/adapters/banal/run.d.ts +89 -0
  51. package/dist/adapters/banal/run.d.ts.map +1 -0
  52. package/dist/adapters/banal/run.js +104 -0
  53. package/dist/adapters/banal/run.js.map +1 -0
  54. package/dist/adapters/banal/settings.d.ts +18 -0
  55. package/dist/adapters/banal/settings.d.ts.map +1 -0
  56. package/dist/adapters/banal/settings.js +29 -0
  57. package/dist/adapters/banal/settings.js.map +1 -0
  58. package/dist/adapters/banal/xml.d.ts +48 -0
  59. package/dist/adapters/banal/xml.d.ts.map +1 -0
  60. package/dist/adapters/banal/xml.js +67 -0
  61. package/dist/adapters/banal/xml.js.map +1 -0
  62. package/dist/adapters/curl/download.io.d.ts +14 -0
  63. package/dist/adapters/curl/download.io.d.ts.map +1 -0
  64. package/dist/adapters/curl/download.io.js +69 -0
  65. package/dist/adapters/curl/download.io.js.map +1 -0
  66. package/dist/adapters/curl/index.d.ts +6 -0
  67. package/dist/adapters/curl/index.d.ts.map +1 -0
  68. package/dist/adapters/curl/index.js +6 -0
  69. package/dist/adapters/curl/index.js.map +1 -0
  70. package/dist/adapters/memory/index.d.ts +43 -0
  71. package/dist/adapters/memory/index.d.ts.map +1 -0
  72. package/dist/adapters/memory/index.js +79 -0
  73. package/dist/adapters/memory/index.js.map +1 -0
  74. package/dist/adapters/node/files.io.d.ts +3 -0
  75. package/dist/adapters/node/files.io.d.ts.map +1 -0
  76. package/dist/adapters/node/files.io.js +31 -0
  77. package/dist/adapters/node/files.io.js.map +1 -0
  78. package/dist/adapters/node/host.io.d.ts +3 -0
  79. package/dist/adapters/node/host.io.d.ts.map +1 -0
  80. package/dist/adapters/node/host.io.js +14 -0
  81. package/dist/adapters/node/host.io.js.map +1 -0
  82. package/dist/adapters/node/index.d.ts +25 -0
  83. package/dist/adapters/node/index.d.ts.map +1 -0
  84. package/dist/adapters/node/index.js +14 -0
  85. package/dist/adapters/node/index.js.map +1 -0
  86. package/dist/adapters/node/process.io.d.ts +14 -0
  87. package/dist/adapters/node/process.io.d.ts.map +1 -0
  88. package/dist/adapters/node/process.io.js +41 -0
  89. package/dist/adapters/node/process.io.js.map +1 -0
  90. package/dist/adapters/node/workspace.io.d.ts +4 -0
  91. package/dist/adapters/node/workspace.io.d.ts.map +1 -0
  92. package/dist/adapters/node/workspace.io.js +33 -0
  93. package/dist/adapters/node/workspace.io.js.map +1 -0
  94. package/dist/adapters/pdfjs/fill.d.ts +42 -0
  95. package/dist/adapters/pdfjs/fill.d.ts.map +1 -0
  96. package/dist/adapters/pdfjs/fill.js +91 -0
  97. package/dist/adapters/pdfjs/fill.js.map +1 -0
  98. package/dist/build-engine.d.ts +48 -0
  99. package/dist/build-engine.d.ts.map +1 -0
  100. package/dist/build-engine.js +148 -0
  101. package/dist/build-engine.js.map +1 -0
  102. package/dist/build.d.ts +163 -0
  103. package/dist/build.d.ts.map +1 -0
  104. package/dist/build.js +575 -0
  105. package/dist/build.js.map +1 -0
  106. package/dist/cli.d.ts +151 -0
  107. package/dist/cli.d.ts.map +1 -0
  108. package/dist/cli.js +951 -0
  109. package/dist/cli.js.map +1 -0
  110. package/dist/doctor.d.ts +42 -0
  111. package/dist/doctor.d.ts.map +1 -0
  112. package/dist/doctor.js +280 -0
  113. package/dist/doctor.js.map +1 -0
  114. package/dist/domain/geometry.d.ts +71 -0
  115. package/dist/domain/geometry.d.ts.map +1 -0
  116. package/dist/domain/geometry.js +35 -0
  117. package/dist/domain/geometry.js.map +1 -0
  118. package/dist/domain/host.d.ts +16 -0
  119. package/dist/domain/host.d.ts.map +1 -0
  120. package/dist/domain/host.js +8 -0
  121. package/dist/domain/host.js.map +1 -0
  122. package/dist/domain/page-layout.d.ts +34 -0
  123. package/dist/domain/page-layout.d.ts.map +1 -0
  124. package/dist/domain/page-layout.js +8 -0
  125. package/dist/domain/page-layout.js.map +1 -0
  126. package/dist/domain/paths.d.ts +5 -0
  127. package/dist/domain/paths.d.ts.map +1 -0
  128. package/dist/domain/paths.js +2 -0
  129. package/dist/domain/paths.js.map +1 -0
  130. package/dist/domain/result.d.ts +23 -0
  131. package/dist/domain/result.d.ts.map +1 -0
  132. package/dist/domain/result.js +10 -0
  133. package/dist/domain/result.js.map +1 -0
  134. package/dist/domain/sha256.d.ts +7 -0
  135. package/dist/domain/sha256.d.ts.map +1 -0
  136. package/dist/domain/sha256.js +14 -0
  137. package/dist/domain/sha256.js.map +1 -0
  138. package/dist/domain/text.d.ts +6 -0
  139. package/dist/domain/text.d.ts.map +1 -0
  140. package/dist/domain/text.js +7 -0
  141. package/dist/domain/text.js.map +1 -0
  142. package/dist/engine.d.ts +93 -0
  143. package/dist/engine.d.ts.map +1 -0
  144. package/dist/engine.js +119 -0
  145. package/dist/engine.js.map +1 -0
  146. package/dist/exit-code.d.ts +22 -0
  147. package/dist/exit-code.d.ts.map +1 -0
  148. package/dist/exit-code.js +10 -0
  149. package/dist/exit-code.js.map +1 -0
  150. package/dist/facts-file.d.ts +96 -0
  151. package/dist/facts-file.d.ts.map +1 -0
  152. package/dist/facts-file.js +134 -0
  153. package/dist/facts-file.js.map +1 -0
  154. package/dist/hooks-settings.d.ts +141 -0
  155. package/dist/hooks-settings.d.ts.map +1 -0
  156. package/dist/hooks-settings.js +306 -0
  157. package/dist/hooks-settings.js.map +1 -0
  158. package/dist/init.d.ts +201 -0
  159. package/dist/init.d.ts.map +1 -0
  160. package/dist/init.js +579 -0
  161. package/dist/init.js.map +1 -0
  162. package/dist/latex-log.d.ts +80 -0
  163. package/dist/latex-log.d.ts.map +1 -0
  164. package/dist/latex-log.js +187 -0
  165. package/dist/latex-log.js.map +1 -0
  166. package/dist/latex-loop.d.ts +129 -0
  167. package/dist/latex-loop.d.ts.map +1 -0
  168. package/dist/latex-loop.js +113 -0
  169. package/dist/latex-loop.js.map +1 -0
  170. package/dist/link-skills.d.ts +51 -0
  171. package/dist/link-skills.d.ts.map +1 -0
  172. package/dist/link-skills.js +199 -0
  173. package/dist/link-skills.js.map +1 -0
  174. package/dist/new-paper.d.ts +48 -0
  175. package/dist/new-paper.d.ts.map +1 -0
  176. package/dist/new-paper.js +110 -0
  177. package/dist/new-paper.js.map +1 -0
  178. package/dist/pdf-facts.d.ts +44 -0
  179. package/dist/pdf-facts.d.ts.map +1 -0
  180. package/dist/pdf-facts.js +239 -0
  181. package/dist/pdf-facts.js.map +1 -0
  182. package/dist/pdf-geometry.d.ts +170 -0
  183. package/dist/pdf-geometry.d.ts.map +1 -0
  184. package/dist/pdf-geometry.js +158 -0
  185. package/dist/pdf-geometry.js.map +1 -0
  186. package/dist/ports/download.d.ts +9 -0
  187. package/dist/ports/download.d.ts.map +1 -0
  188. package/dist/ports/download.js +2 -0
  189. package/dist/ports/download.js.map +1 -0
  190. package/dist/ports/files.d.ts +11 -0
  191. package/dist/ports/files.d.ts.map +1 -0
  192. package/dist/ports/files.js +2 -0
  193. package/dist/ports/files.js.map +1 -0
  194. package/dist/ports/measure-geometry.d.ts +8 -0
  195. package/dist/ports/measure-geometry.d.ts.map +1 -0
  196. package/dist/ports/measure-geometry.js +2 -0
  197. package/dist/ports/measure-geometry.js.map +1 -0
  198. package/dist/ports/process.d.ts +45 -0
  199. package/dist/ports/process.d.ts.map +1 -0
  200. package/dist/ports/process.js +2 -0
  201. package/dist/ports/process.js.map +1 -0
  202. package/dist/ports/tool-installer.d.ts +29 -0
  203. package/dist/ports/tool-installer.d.ts.map +1 -0
  204. package/dist/ports/tool-installer.js +2 -0
  205. package/dist/ports/tool-installer.js.map +1 -0
  206. package/dist/ports/workspace.d.ts +18 -0
  207. package/dist/ports/workspace.d.ts.map +1 -0
  208. package/dist/ports/workspace.js +2 -0
  209. package/dist/ports/workspace.js.map +1 -0
  210. package/dist/rules-config.d.ts +34 -0
  211. package/dist/rules-config.d.ts.map +1 -0
  212. package/dist/rules-config.js +132 -0
  213. package/dist/rules-config.js.map +1 -0
  214. package/dist/structure.d.ts +34 -0
  215. package/dist/structure.d.ts.map +1 -0
  216. package/dist/structure.js +149 -0
  217. package/dist/structure.js.map +1 -0
  218. package/dist/tex-requirements.d.ts +43 -0
  219. package/dist/tex-requirements.d.ts.map +1 -0
  220. package/dist/tex-requirements.js +127 -0
  221. package/dist/tex-requirements.js.map +1 -0
  222. package/dist/toolchain.d.ts +159 -0
  223. package/dist/toolchain.d.ts.map +1 -0
  224. package/dist/toolchain.js +542 -0
  225. package/dist/toolchain.js.map +1 -0
  226. package/dist/types.d.ts +110 -0
  227. package/dist/types.d.ts.map +1 -0
  228. package/dist/types.js +2 -0
  229. package/dist/types.js.map +1 -0
  230. package/docs/configuration.md +235 -0
  231. package/docs/e2e.md +152 -0
  232. package/docs/incidents.md +59 -0
  233. package/docs/install.md +170 -0
  234. package/docs/optional-rules.md +107 -0
  235. package/docs/package-shape-options.md +262 -0
  236. package/docs/prior-art/README.md +76 -0
  237. package/docs/prior-art/blocking-vs-advisory.md +83 -0
  238. package/docs/prior-art/content-delivery.md +124 -0
  239. package/docs/prior-art/multi-mode-tools.md +106 -0
  240. package/docs/prior-art/nondeterministic-checks.md +99 -0
  241. package/docs/prior-art/package-location.md +422 -0
  242. package/docs/prior-art/paper-folder-scaffolding.md +538 -0
  243. package/docs/prior-art/readme-structure.md +69 -0
  244. package/docs/prior-art/repro/README.md +92 -0
  245. package/docs/prior-art/repro/claim1-allowedtools.mjs +66 -0
  246. package/docs/prior-art/repro/claim1-at2.mjs +40 -0
  247. package/docs/prior-art/repro/claim1-crosschannel.mjs +54 -0
  248. package/docs/prior-art/repro/claim1-frontmatter.mjs +76 -0
  249. package/docs/prior-art/repro/claim1-hook-payload-reporter.mjs +10 -0
  250. package/docs/prior-art/repro/claim1-plugin-frontmatter.mjs +27 -0
  251. package/docs/prior-art/repro/claim1-plugin-skill.mjs +52 -0
  252. package/docs/prior-art/repro/claim1-project-skill.mjs +81 -0
  253. package/docs/prior-art/repro/claim2-marketplace-flat-asclaimed.json +1 -0
  254. package/docs/prior-art/repro/claim2-marketplace-negative-control.json +1 -0
  255. package/docs/prior-art/repro/claim2-marketplace-nested-exact.json +9 -0
  256. package/docs/prior-art/repro/claim2-marketplace-nested-noversion.json +9 -0
  257. package/docs/prior-art/repro/claim2-marketplace-nested-range.json +1 -0
  258. package/docs/prior-art/repro/claim3-imports.mjs +50 -0
  259. package/docs/prior-art/repro/claim4-find-package-json.mjs +8 -0
  260. package/docs/prior-art/repro/claim4-package-dir.mjs +39 -0
  261. package/docs/prior-art/repro/claim4-parent-arg.mjs +17 -0
  262. package/docs/prior-art/repro/claim4-resolve-apis.mjs +21 -0
  263. package/docs/prior-art/repro/claim4-setup-consumers.mjs +45 -0
  264. package/docs/prior-art/repro/claim4-yarn-pnp.mjs +70 -0
  265. package/docs/prior-art/repro/claim5-bin-launch.mjs +39 -0
  266. package/docs/prior-art/repro/claim5-exports-mutation.mjs +57 -0
  267. package/docs/prior-art/repro/claim5-resolved-location-and-bin.mjs +33 -0
  268. package/docs/prior-art/repro/claim6-candidate-ambiguity.mjs +17 -0
  269. package/docs/prior-art/repro/claim6-doc-path-candidates.mjs +27 -0
  270. package/docs/prior-art/test-tooling.md +131 -0
  271. package/docs/rules.md +58 -0
  272. package/docs/texlive-install-decision.md +230 -0
  273. package/docs/toolchain.md +152 -0
  274. package/eslint-rules/doc-fields.harness.mjs +336 -0
  275. package/eslint-rules/doc-fields.mjs +186 -0
  276. package/eslint-rules/doc-fields.mutations.mjs +96 -0
  277. package/eslint-rules/install-path-literals.harness.mjs +121 -0
  278. package/eslint-rules/install-path-literals.mjs +108 -0
  279. package/eslint-rules/install-path-literals.mutations.mjs +62 -0
  280. package/eslint-rules/latex-language.harness.mjs +599 -0
  281. package/eslint-rules/latex-language.mjs +591 -0
  282. package/eslint-rules/latex-language.mutations.mjs +196 -0
  283. package/eslint-rules/paper-research-question.harness.mjs +146 -0
  284. package/eslint-rules/paper-research-question.mjs +180 -0
  285. package/eslint-rules/paper-research-question.mutations.mjs +127 -0
  286. package/eslint-rules/paper-stages.harness.mjs +356 -0
  287. package/eslint-rules/paper-stages.mjs +455 -0
  288. package/eslint-rules/paper-stages.mutations.mjs +157 -0
  289. package/eslint-rules/paper-typography.harness.mjs +291 -0
  290. package/eslint-rules/paper-typography.mjs +313 -0
  291. package/eslint-rules/paper-typography.mutations.mjs +131 -0
  292. package/eslint-rules/papers.harness.mjs +259 -0
  293. package/eslint-rules/papers.mjs +166 -0
  294. package/eslint-rules/papers.mutations.mjs +186 -0
  295. package/eslint-rules/pdf-last-page-balance.harness.mjs +206 -0
  296. package/eslint-rules/pdf-last-page-balance.mjs +208 -0
  297. package/eslint-rules/review-findings-cause.harness.mjs +228 -0
  298. package/eslint-rules/review-findings-cause.mjs +135 -0
  299. package/eslint-rules/review-findings-cause.mutations.mjs +72 -0
  300. package/eslint-rules/temp-root-realpath.harness.mjs +176 -0
  301. package/eslint-rules/temp-root-realpath.mjs +129 -0
  302. package/eslint-rules/temp-root-realpath.mutations.mjs +99 -0
  303. package/eslint-rules/tex-build.harness.mjs +753 -0
  304. package/eslint-rules/tex-build.mjs +322 -0
  305. package/eslint-rules/tex-build.mutations.mjs +258 -0
  306. package/eslint.config.mjs +521 -0
  307. package/fixtures/build-e2e/acmart/PIPELINE-STATUS.md +3 -0
  308. package/fixtures/build-e2e/acmart/paper.tex +11 -0
  309. package/fixtures/build-e2e/acmart/venue.json +1 -0
  310. package/fixtures/build-e2e/broken/PIPELINE-STATUS.md +3 -0
  311. package/fixtures/build-e2e/broken/paper.tex +7 -0
  312. package/fixtures/build-e2e/cite/PIPELINE-STATUS.md +3 -0
  313. package/fixtures/build-e2e/cite/build.sh +5 -0
  314. package/fixtures/build-e2e/cite/paper.tex +10 -0
  315. package/fixtures/build-e2e/cite/refs.bib +9 -0
  316. package/fixtures/build-e2e/empty/PIPELINE-STATUS.md +3 -0
  317. package/fixtures/build-e2e/empty/paper.tex +6 -0
  318. package/fixtures/build-e2e/fallback/PIPELINE-STATUS.md +3 -0
  319. package/fixtures/build-e2e/fallback/paper.tex +11 -0
  320. package/fixtures/build-e2e/guards/PIPELINE-STATUS.md +3 -0
  321. package/fixtures/build-e2e/guards/paper.tex +10 -0
  322. package/fixtures/build-e2e/no-source/PIPELINE-STATUS.md +3 -0
  323. package/fixtures/build-e2e/unbalanced/PIPELINE-STATUS.md +3 -0
  324. package/fixtures/build-e2e/unbalanced/paper.tex +28 -0
  325. package/fixtures/build-e2e/unbalanced/refs.bib +269 -0
  326. package/fixtures/install-path-literals/clean.fixture.mjs +3 -0
  327. package/fixtures/install-path-literals/clean.md +15 -0
  328. package/fixtures/install-path-literals/defect.fixture.mjs +3 -0
  329. package/fixtures/install-path-literals/defect.md +14 -0
  330. package/fixtures/latex-language/clean.tex +50 -0
  331. package/fixtures/latex-language/defect.tex +52 -0
  332. package/fixtures/paper-research-question/comment-only/PIPELINE-STATUS.md +9 -0
  333. package/fixtures/paper-research-question/comment-only/paper.tex +7 -0
  334. package/fixtures/paper-research-question/declared-not-in-paper/PIPELINE-STATUS.md +10 -0
  335. package/fixtures/paper-research-question/declared-not-in-paper/paper.tex +6 -0
  336. package/fixtures/paper-research-question/draft/PIPELINE-STATUS.md +6 -0
  337. package/fixtures/paper-research-question/draft/paper.tex +2 -0
  338. package/fixtures/paper-research-question/markdown-no-rq/PIPELINE-STATUS.md +9 -0
  339. package/fixtures/paper-research-question/markdown-no-rq/paper.md +4 -0
  340. package/fixtures/paper-research-question/shipped-no-rq/PIPELINE-STATUS.md +12 -0
  341. package/fixtures/paper-research-question/shipped-no-rq/paper.tex +3 -0
  342. package/fixtures/paper-research-question/shipped-with-rq/PIPELINE-STATUS.md +10 -0
  343. package/fixtures/paper-research-question/shipped-with-rq/paper.tex +2 -0
  344. package/fixtures/paper-stages/authors-ran/PIPELINE-STATUS.md +16 -0
  345. package/fixtures/paper-stages/marker-in-prose/PIPELINE-STATUS.md +17 -0
  346. package/fixtures/paper-stages/nofile/PIPELINE-STATUS.md +8 -0
  347. package/fixtures/paper-stages/noheader/PIPELINE-STATUS.md +1 -0
  348. package/fixtures/paper-stages/noheader/versions/2026-07-22-submitted.pdf +0 -0
  349. package/fixtures/paper-stages/nothing/PIPELINE-STATUS.md +3 -0
  350. package/fixtures/paper-stages/ok/PIPELINE-STATUS.md +9 -0
  351. package/fixtures/paper-stages/ok/versions/2026-07-22-submitted.pdf +0 -0
  352. package/fixtures/paper-stages/stale/PIPELINE-STATUS.md +1 -0
  353. package/fixtures/paper-stages/stale/versions/2026-07-22-submitted.STALE-WRONG-FILE.pdf +0 -0
  354. package/fixtures/paper-stages/twice/PIPELINE-STATUS.md +14 -0
  355. package/fixtures/paper-stages/twice/versions/2026-08-06-submitted.pdf +0 -0
  356. package/fixtures/paper-stages/twice/versions/2026-10-24-submitted.pdf +0 -0
  357. package/fixtures/paper-stages/undeclared/PIPELINE-STATUS.md +8 -0
  358. package/fixtures/paper-stages/undeclared/versions/2026-07-22-submitted.pdf +0 -0
  359. package/fixtures/paper-stages/undeclared/versions/2026-08-29-camera-ready.pdf +0 -0
  360. package/fixtures/paper-stages/wrongsize/PIPELINE-STATUS.md +8 -0
  361. package/fixtures/paper-stages/wrongsize/versions/2026-07-22-submitted.pdf +0 -0
  362. package/fixtures/paper-typography/clean-paper/paper.tex +29 -0
  363. package/fixtures/paper-typography/messy-paper/paper.tex +27 -0
  364. package/fixtures/pdf-facts/README.md +22 -0
  365. package/fixtures/pdf-facts/corrupt-font.pdf +0 -0
  366. package/fixtures/pdf-facts/encrypted.pdf +0 -0
  367. package/fixtures/pdf-facts/hidden-text.pdf +0 -0
  368. package/fixtures/pdf-facts/hidden-text.tex +28 -0
  369. package/fixtures/pdf-facts/t3-all.pdf +0 -0
  370. package/fixtures/pdf-facts/t3-all.tex +8 -0
  371. package/fixtures/pdf-facts/t3-mixed.pdf +0 -0
  372. package/fixtures/pdf-facts/t3-mixed.tex +9 -0
  373. package/fixtures/pdf-facts/ttf.pdf +2240 -1
  374. package/fixtures/pdf-facts/ttf.tex +6 -0
  375. package/fixtures/real-markdown-paper/baseline.json +24 -0
  376. package/fixtures/real-markdown-paper/baseline.mjs +48 -0
  377. package/fixtures/render-paper/build-clean.sh +25 -0
  378. package/fixtures/render-paper/build-defect.sh +15 -0
  379. package/fixtures/review-findings-cause/clean.md +17 -0
  380. package/fixtures/review-findings-cause/defect.md +14 -0
  381. package/fixtures/review-findings-cause/old-debt.md +14 -0
  382. package/fixtures/review-findings-cause/quiet-in-fence.md +16 -0
  383. package/fixtures/tex-build/clean.tex +21 -0
  384. package/fixtures/tex-build/defect.tex +24 -0
  385. package/fixtures/tex-build/frontmatter-clean.tex +25 -0
  386. package/fixtures/tex-build/frontmatter-defect.tex +23 -0
  387. package/fixtures/toolchain-mirror/catalog.txt +5 -0
  388. package/fixtures/toolchain-mirror/install-tl +27 -0
  389. package/fixtures/toolchain-mirror/release-texlive.txt +3 -0
  390. package/fixtures/toolchain-mirror/release-year +1 -0
  391. package/fixtures/toolchain-mirror/stub-kpsewhich +8 -0
  392. package/fixtures/toolchain-mirror/stub-pdflatex +3 -0
  393. package/fixtures/toolchain-mirror/stub-tlmgr +44 -0
  394. package/hooks/hooks.harness.mjs +713 -0
  395. package/hooks/hooks.mutations.mjs +337 -0
  396. package/hooks/paper-edit-guard.hook.d.mts +13 -0
  397. package/hooks/paper-edit-guard.hook.mjs +457 -0
  398. package/hooks/paper-skills-nudge.hook.mjs +136 -0
  399. package/hooks/paper-status-gates.hook.mjs +156 -0
  400. package/hooks/paper-status-gates.sh +91 -0
  401. package/lib/agent-cli-version.harness.mjs +165 -0
  402. package/lib/agent-cli-version.mjs +106 -0
  403. package/lib/agent-cli-version.mutations.mjs +109 -0
  404. package/lib/markdown.mjs +386 -0
  405. package/lib/mutation-driver.harness.mjs +227 -0
  406. package/lib/mutation-driver.mjs +397 -0
  407. package/lib/mutation-driver.mutations.mjs +68 -0
  408. package/lib/paper-config.d.mts +34 -0
  409. package/lib/paper-config.harness.mjs +286 -0
  410. package/lib/paper-config.mjs +142 -0
  411. package/lib/paper-config.mutations.mjs +143 -0
  412. package/lib/skill-checks.mjs +701 -0
  413. package/lib/skill-corpus.mjs +403 -0
  414. package/lib/skill-eval-fixture.mjs +63 -0
  415. package/lib/skill-eval-kit.mjs +257 -0
  416. package/lib/skill-trigger-cases.harness.mjs +170 -0
  417. package/lib/skill-trigger-cases.mjs +446 -0
  418. package/lib/skill-trigger-cases.mutations.mjs +65 -0
  419. package/lib/trigger-ledger.mjs +215 -0
  420. package/package.json +97 -0
  421. package/plugin/.claude-plugin/plugin.json +8 -0
  422. package/plugin/hooks/hooks.json +30 -0
  423. package/scripts/check.harness.mjs +177 -0
  424. package/scripts/check.mjs +239 -0
  425. package/scripts/check.mutations.mjs +110 -0
  426. package/scripts/eslint-report-guard.mjs +82 -0
  427. package/scripts/exclusive.mjs +138 -0
  428. package/scripts/harness-api.frozen.json +76 -0
  429. package/scripts/harness-api.test.ts +175 -0
  430. package/scripts/layer-legacy-frozen.d.mts +28 -0
  431. package/scripts/layer-legacy-frozen.mjs +152 -0
  432. package/scripts/layer-legacy-frozen.test.ts +115 -0
  433. package/scripts/layer-legacy.frozen.json +50 -0
  434. package/scripts/mutation-batteries-frozen.harness.mjs +204 -0
  435. package/scripts/mutation-batteries-frozen.mjs +238 -0
  436. package/scripts/mutation-batteries.frozen.json +117 -0
  437. package/scripts/release-config.test.ts +90 -0
  438. package/scripts/rules-are-content-only.harness.mjs +113 -0
  439. package/scripts/rules-are-content-only.mjs +138 -0
  440. package/scripts/rules-are-content-only.mutations.mjs +81 -0
  441. package/scripts/rules-see-files.harness.mjs +115 -0
  442. package/scripts/rules-see-files.mjs +99 -0
  443. package/scripts/rules-see-files.mutations.mjs +131 -0
  444. package/scripts/run-mutations.mjs +100 -0
  445. package/scripts/semantic-release-plugins.d.ts +16 -0
  446. package/skills/README.md +15 -0
  447. package/skills/analyze-sibling-paper/SKILL.md +170 -0
  448. package/skills/analyze-sibling-paper/SKILL.md.spec.ts +186 -0
  449. package/skills/analyze-sibling-paper/analyze-sibling-paper.eval.mjs +19 -0
  450. package/skills/analyze-sibling-paper/analyze-sibling-paper.harness.mjs +23 -0
  451. package/skills/argument-arc/SKILL.md +177 -0
  452. package/skills/argument-arc/SKILL.md.spec.ts +192 -0
  453. package/skills/argument-arc/argument-arc.eval.mjs +19 -0
  454. package/skills/argument-arc/argument-arc.harness.mjs +23 -0
  455. package/skills/build-benchmark/SKILL.md +213 -0
  456. package/skills/build-benchmark/SKILL.md.spec.ts +220 -0
  457. package/skills/build-benchmark/build-benchmark.eval.mjs +19 -0
  458. package/skills/build-benchmark/build-benchmark.harness.mjs +23 -0
  459. package/skills/build-benchmark/references/adversarial-cold-repro.md +68 -0
  460. package/skills/camera-ready/SKILL.md +148 -0
  461. package/skills/camera-ready/SKILL.md.spec.ts +164 -0
  462. package/skills/camera-ready/camera-ready.eval.mjs +19 -0
  463. package/skills/camera-ready/camera-ready.harness.mjs +23 -0
  464. package/skills/cold-read-diff/SKILL.md +160 -0
  465. package/skills/cold-read-diff/SKILL.md.spec.ts +166 -0
  466. package/skills/cold-read-diff/cold-read-diff.eval.mjs +19 -0
  467. package/skills/cold-read-diff/cold-read-diff.harness.mjs +23 -0
  468. package/skills/draft-paper/SKILL.md +152 -0
  469. package/skills/draft-paper/SKILL.md.spec.ts +169 -0
  470. package/skills/draft-paper/draft-paper.eval.mjs +19 -0
  471. package/skills/draft-paper/draft-paper.harness.mjs +23 -0
  472. package/skills/extend-paper/SKILL.md +99 -0
  473. package/skills/extend-paper/SKILL.md.spec.ts +116 -0
  474. package/skills/extend-paper/extend-paper.eval.mjs +19 -0
  475. package/skills/extend-paper/extend-paper.harness.mjs +23 -0
  476. package/skills/find-venue/SKILL.md +128 -0
  477. package/skills/find-venue/SKILL.md.spec.ts +145 -0
  478. package/skills/find-venue/find-venue.eval.mjs +19 -0
  479. package/skills/find-venue/find-venue.harness.mjs +23 -0
  480. package/skills/grade-paper-writing/SKILL.md +436 -0
  481. package/skills/grade-paper-writing/SKILL.md.spec.ts +453 -0
  482. package/skills/grade-paper-writing/fixtures/control_gopen.txt +1 -0
  483. package/skills/grade-paper-writing/fixtures/control_human_paper.txt +1 -0
  484. package/skills/grade-paper-writing/fixtures/rewrite.txt +1 -0
  485. package/skills/grade-paper-writing/fixtures/specimen.txt +1 -0
  486. package/skills/grade-paper-writing/fixtures/structure-checks.md +22 -0
  487. package/skills/grade-paper-writing/grade-paper-writing.eval.mjs +19 -0
  488. package/skills/grade-paper-writing/grade-paper-writing.harness.mjs +23 -0
  489. package/skills/grade-paper-writing/prose-lint.mjs +713 -0
  490. package/skills/harden-paper/SKILL.md +318 -0
  491. package/skills/harden-paper/SKILL.md.spec.ts +336 -0
  492. package/skills/harden-paper/check-numbers.sh +33 -0
  493. package/skills/harden-paper/check-release-claims.sh +35 -0
  494. package/skills/harden-paper/fixtures/uncited-assertions-sample.md +43 -0
  495. package/skills/harden-paper/fixtures/uncited-assertions-sample.tex +77 -0
  496. package/skills/harden-paper/harden-paper.eval.mjs +19 -0
  497. package/skills/harden-paper/harden-paper.harness.mjs +23 -0
  498. package/skills/map-prior-work/SKILL.md +211 -0
  499. package/skills/map-prior-work/SKILL.md.spec.ts +227 -0
  500. package/skills/map-prior-work/map-prior-work.eval.mjs +19 -0
  501. package/skills/map-prior-work/map-prior-work.harness.mjs +23 -0
  502. package/skills/osf-artifact-upload/SKILL.md +52 -0
  503. package/skills/osf-artifact-upload/SKILL.md.spec.ts +59 -0
  504. package/skills/osf-artifact-upload/osf-artifact-upload.eval.mjs +22 -0
  505. package/skills/osf-artifact-upload/osf-artifact-upload.harness.mjs +103 -0
  506. package/skills/paper-adversarial-review/SKILL.md +126 -0
  507. package/skills/paper-adversarial-review/SKILL.md.spec.ts +142 -0
  508. package/skills/paper-adversarial-review/paper-adversarial-review.eval.mjs +19 -0
  509. package/skills/paper-adversarial-review/paper-adversarial-review.harness.mjs +23 -0
  510. package/skills/paper-pipeline/PIPELINE-MAP.md +371 -0
  511. package/skills/paper-pipeline/SKILL.md +499 -0
  512. package/skills/paper-pipeline/SKILL.md.spec.ts +517 -0
  513. package/skills/paper-pipeline/description-language.eval.mjs +347 -0
  514. package/skills/paper-pipeline/framing-vs-vocabulary.eval.mjs +891 -0
  515. package/skills/paper-pipeline/grade-paper-writing-ablation.eval.mjs +1254 -0
  516. package/skills/paper-pipeline/paper-pipeline.eval.mjs +22 -0
  517. package/skills/paper-pipeline/paper-pipeline.harness.mjs +143 -0
  518. package/skills/paper-pipeline/pipeline-firing.baseline.json +270 -0
  519. package/skills/paper-pipeline/pipeline-firing.eval.mjs +664 -0
  520. package/skills/paper-pipeline/pipeline-language.eval.mjs +672 -0
  521. package/skills/paper-pipeline/references/acceptance-gate.md +329 -0
  522. package/skills/paper-pipeline/references/acl-venue-rules.md +142 -0
  523. package/skills/paper-pipeline/references/anonymization.md +68 -0
  524. package/skills/paper-pipeline/references/artifact-checklist.md +93 -0
  525. package/skills/paper-pipeline/references/body-vs-appendix.md +97 -0
  526. package/skills/paper-pipeline/references/credit-criteria.md +69 -0
  527. package/skills/paper-pipeline/references/occupancy-2026-08-06-probe/README.md +35 -0
  528. package/skills/paper-pipeline/references/occupancy-2026-08-06-probe/run_retext.mjs +24 -0
  529. package/skills/paper-pipeline/references/occupancy-2026-08-06-probe/sentences.txt +11 -0
  530. package/skills/paper-pipeline/references/occupancy-2026-08-06-probe/test_sentences.py +25 -0
  531. package/skills/paper-pipeline/references/occupancy-2026-08-06-prose-checkers.md +538 -0
  532. package/skills/paper-pipeline/references/occupancy-2026-08-06-reproducible-tooling.md +431 -0
  533. package/skills/paper-pipeline/references/occupancy-2026-08-06-staleness-and-orchestration.md +592 -0
  534. package/skills/paper-pipeline/references/pipeline-status-template.md +162 -0
  535. package/skills/paper-pipeline/references/review-ratchet.md +36 -0
  536. package/skills/paper-pipeline/references/sweep-2026-08-09-ideal-pipeline.md +585 -0
  537. package/skills/paper-pipeline/references/writing-craft.md +448 -0
  538. package/skills/paper-pipeline/repro/2026-08-07-description-language-control.log +63 -0
  539. package/skills/paper-pipeline/repro/2026-08-07-fork-check.log +52 -0
  540. package/skills/paper-pipeline/repro/2026-08-07-fork-check2.log +33 -0
  541. package/skills/paper-pipeline/repro/2026-08-07-language-eval-pilot.log +33 -0
  542. package/skills/paper-pipeline/repro/2026-08-07-language-eval-raw.log +166 -0
  543. package/skills/paper-pipeline/repro/2026-08-08-framing-vs-vocabulary-oracle.json +338 -0
  544. package/skills/paper-pipeline/repro/2026-08-08-framing-vs-vocabulary-oracle.log +118 -0
  545. package/skills/paper-pipeline/repro/2026-08-08-framing-vs-vocabulary-raw.log +245 -0
  546. package/skills/paper-pipeline/repro/2026-08-08-framing-vs-vocabulary.json +776 -0
  547. package/skills/paper-pipeline/repro/2026-08-08-grade-paper-writing-ablation-A6-oracle.log +53 -0
  548. package/skills/paper-pipeline/repro/2026-08-08-grade-paper-writing-ablation-A6-raw.log +89 -0
  549. package/skills/paper-pipeline/repro/2026-08-08-grade-paper-writing-ablation-oracle.json +450 -0
  550. package/skills/paper-pipeline/repro/2026-08-08-grade-paper-writing-ablation-oracle.log +136 -0
  551. package/skills/paper-pipeline/repro/2026-08-08-grade-paper-writing-ablation-raw.log +242 -0
  552. package/skills/paper-pipeline/repro/2026-08-08-grade-paper-writing-ablation-setupdiff.log +59 -0
  553. package/skills/paper-pipeline/repro/2026-08-08-grade-paper-writing-ablation.json +1032 -0
  554. package/skills/paper-pipeline/repro/2026-08-08-parent-replication-gpw.json +139 -0
  555. package/skills/paper-pipeline/repro/2026-08-08-parent-replication-gpw.log +98 -0
  556. package/skills/paper-pipeline/repro/2026-08-08-parent-replication.mjs +92 -0
  557. package/skills/paper-pipeline/repro/README.md +129 -0
  558. package/skills/paper-pipeline/repro/analyze-language-eval.py +116 -0
  559. package/skills/paper-pipeline/scripts/README.md +344 -0
  560. package/skills/paper-pipeline/scripts/announce.mjs +67 -0
  561. package/skills/paper-pipeline/scripts/artifact-coverage.harness.mjs +496 -0
  562. package/skills/paper-pipeline/scripts/artifact-coverage.mjs +397 -0
  563. package/skills/paper-pipeline/scripts/artifact-coverage.mutations.mjs +218 -0
  564. package/skills/paper-pipeline/scripts/check-provenance.mjs +184 -0
  565. package/skills/paper-pipeline/scripts/consumer.d.mts +32 -0
  566. package/skills/paper-pipeline/scripts/consumer.harness.mjs +562 -0
  567. package/skills/paper-pipeline/scripts/consumer.mjs +535 -0
  568. package/skills/paper-pipeline/scripts/consumer.mutations.mjs +190 -0
  569. package/skills/paper-pipeline/scripts/extract-ref-facts.harness.mjs +457 -0
  570. package/skills/paper-pipeline/scripts/extract-ref-facts.mjs +656 -0
  571. package/skills/paper-pipeline/scripts/extract-ref-facts.mutations.mjs +54 -0
  572. package/skills/paper-pipeline/scripts/fixtures/clean/PIPELINE-STATUS.md +51 -0
  573. package/skills/paper-pipeline/scripts/fixtures/dirty/PIPELINE-STATUS.md +52 -0
  574. package/skills/paper-pipeline/scripts/fixtures/dirty/paper.md +6 -0
  575. package/skills/paper-pipeline/scripts/fixtures/real-bib/refs.bib +153 -0
  576. package/skills/paper-pipeline/scripts/generated-code.harness.mjs +466 -0
  577. package/skills/paper-pipeline/scripts/generated-code.mjs +338 -0
  578. package/skills/paper-pipeline/scripts/generated-code.mutations.mjs +254 -0
  579. package/skills/paper-pipeline/scripts/ledger.mjs +623 -0
  580. package/skills/paper-pipeline/scripts/ledger.selftest.mjs +286 -0
  581. package/skills/paper-pipeline/scripts/pipeline-check.harness.mjs +389 -0
  582. package/skills/paper-pipeline/scripts/pipeline-check.mjs +737 -0
  583. package/skills/paper-pipeline/scripts/pipeline-check.mutations.mjs +54 -0
  584. package/skills/paper-pipeline/scripts/pipeline-edges.mjs +169 -0
  585. package/skills/paper-pipeline/scripts/population-map.harness.mjs +178 -0
  586. package/skills/paper-pipeline/scripts/population-map.mjs +181 -0
  587. package/skills/paper-pipeline/scripts/population-map.mutations.mjs +65 -0
  588. package/skills/paper-pipeline/scripts/population-map.selftest.mjs +122 -0
  589. package/skills/paper-pipeline/scripts/provenance.harness.mjs +240 -0
  590. package/skills/paper-pipeline/scripts/provenance.mutations.mjs +59 -0
  591. package/skills/paper-pipeline/scripts/round-diff.harness.mjs +881 -0
  592. package/skills/paper-pipeline/scripts/round-diff.mjs +576 -0
  593. package/skills/paper-pipeline/scripts/round-diff.mutations.mjs +276 -0
  594. package/skills/paper-pipeline/scripts/run-mechanical.mjs +633 -0
  595. package/skills/paper-pipeline/scripts/status.mjs +295 -0
  596. package/skills/paper-status/SKILL.md +183 -0
  597. package/skills/paper-status/SKILL.md.spec.ts +190 -0
  598. package/skills/paper-status/paper-status.eval.mjs +22 -0
  599. package/skills/paper-status/paper-status.harness.mjs +25 -0
  600. package/skills/pc-panel-review/SKILL.md +263 -0
  601. package/skills/pc-panel-review/SKILL.md.spec.ts +280 -0
  602. package/skills/pc-panel-review/pc-panel-review.eval.mjs +19 -0
  603. package/skills/pc-panel-review/pc-panel-review.harness.mjs +23 -0
  604. package/skills/plan-paper-timeline/SKILL.md +182 -0
  605. package/skills/plan-paper-timeline/SKILL.md.spec.ts +200 -0
  606. package/skills/plan-paper-timeline/fixtures/fake-google-calendar.mjs +239 -0
  607. package/skills/plan-paper-timeline/plan-paper-timeline.effects.harness.mjs +431 -0
  608. package/skills/plan-paper-timeline/plan-paper-timeline.effects.mutations.mjs +65 -0
  609. package/skills/plan-paper-timeline/plan-paper-timeline.eval.mjs +19 -0
  610. package/skills/plan-paper-timeline/plan-paper-timeline.harness.mjs +23 -0
  611. package/skills/render-paper/SKILL.md +159 -0
  612. package/skills/render-paper/SKILL.md.spec.ts +166 -0
  613. package/skills/render-paper/check-render.sh +419 -0
  614. package/skills/render-paper/checkers-requirements.txt +55 -0
  615. package/skills/render-paper/ensure-checkers.sh +69 -0
  616. package/skills/render-paper/extract-pdf-facts.harness.mjs +166 -0
  617. package/skills/render-paper/extract-pdf-facts.mjs +144 -0
  618. package/skills/render-paper/render-paper.eval.mjs +19 -0
  619. package/skills/render-paper/render-paper.harness.mjs +339 -0
  620. package/skills/research-ideate/SKILL.md +136 -0
  621. package/skills/research-ideate/SKILL.md.spec.ts +152 -0
  622. package/skills/research-ideate/research-ideate.eval.mjs +19 -0
  623. package/skills/research-ideate/research-ideate.harness.mjs +23 -0
  624. package/skills/skill-contract.mutations.mjs +179 -0
  625. package/skills/study-accepted-papers/SKILL.md +206 -0
  626. package/skills/study-accepted-papers/SKILL.md.spec.ts +223 -0
  627. package/skills/study-accepted-papers/study-accepted-papers.eval.mjs +19 -0
  628. package/skills/study-accepted-papers/study-accepted-papers.harness.mjs +23 -0
  629. package/skills/submit-paper/SKILL.md +182 -0
  630. package/skills/submit-paper/SKILL.md.spec.ts +199 -0
  631. package/skills/submit-paper/check-deanon.sh +149 -0
  632. package/skills/submit-paper/references/publishers/acm.md +92 -0
  633. package/skills/submit-paper/references/venues/agenticdev.jsonc +108 -0
  634. package/skills/submit-paper/references/venues/agenticdev.md +139 -0
  635. package/skills/submit-paper/references/venues/agenticdev.tex +19 -0
  636. package/skills/submit-paper/references/venues/aisec.jsonc +101 -0
  637. package/skills/submit-paper/references/venues/aisec.md +105 -0
  638. package/skills/submit-paper/references/venues/paper-guards.tex +41 -0
  639. package/skills/submit-paper/references/venues/realm.jsonc +81 -0
  640. package/skills/submit-paper/references/venues/realm.md +155 -0
  641. package/skills/submit-paper/references/venues/tex-base.jsonc +50 -0
  642. package/skills/submit-paper/references/venues/venue-profile.schema.json +74 -0
  643. package/skills/submit-paper/submit-paper.eval.mjs +19 -0
  644. package/skills/submit-paper/submit-paper.harness.mjs +23 -0
  645. package/skills/sweep-design-space/SKILL.md +269 -0
  646. package/skills/sweep-design-space/SKILL.md.spec.ts +285 -0
  647. package/skills/sweep-design-space/sweep-design-space.eval.mjs +19 -0
  648. package/skills/sweep-design-space/sweep-design-space.harness.mjs +23 -0
  649. package/skills/tighten-paper/SKILL.md +368 -0
  650. package/skills/tighten-paper/SKILL.md.spec.ts +384 -0
  651. package/skills/tighten-paper/structure.mjs +371 -0
  652. package/skills/tighten-paper/tighten-paper.eval.mjs +19 -0
  653. package/skills/tighten-paper/tighten-paper.harness.mjs +23 -0
  654. package/skills/verify-citations/SKILL.md +328 -0
  655. package/skills/verify-citations/SKILL.md.spec.ts +345 -0
  656. package/skills/verify-citations/scripts/bib-authors.mjs +479 -0
  657. package/skills/verify-citations/scripts/bib-authors.test.mjs +175 -0
  658. package/skills/verify-citations/scripts/verify-cites.mjs +1108 -0
  659. package/skills/verify-citations/scripts/verify-cites.test.mjs +735 -0
  660. package/skills/verify-citations/verify-citations.eval.mjs +19 -0
  661. package/skills/verify-citations/verify-citations.harness.mjs +23 -0
  662. package/src/CLAUDE.md +51 -0
  663. package/src/action-ref.test.ts +26 -0
  664. package/src/action-ref.ts +15 -0
  665. package/src/adapters/banal/failure.test.ts +63 -0
  666. package/src/adapters/banal/failure.ts +118 -0
  667. package/src/adapters/banal/index.test.ts +119 -0
  668. package/src/adapters/banal/index.ts +100 -0
  669. package/src/adapters/banal/install.test.ts +20 -0
  670. package/src/adapters/banal/install.ts +41 -0
  671. package/src/adapters/banal/invocation.test.ts +74 -0
  672. package/src/adapters/banal/invocation.ts +95 -0
  673. package/src/adapters/banal/locate.test.ts +52 -0
  674. package/src/adapters/banal/locate.ts +84 -0
  675. package/src/adapters/banal/output.test.ts +140 -0
  676. package/src/adapters/banal/output.ts +141 -0
  677. package/src/adapters/banal/pin.ts +30 -0
  678. package/src/adapters/banal/probe.ts +35 -0
  679. package/src/adapters/banal/run.test.ts +191 -0
  680. package/src/adapters/banal/run.ts +244 -0
  681. package/src/adapters/banal/settings.test.ts +31 -0
  682. package/src/adapters/banal/settings.ts +55 -0
  683. package/src/adapters/banal/xml.test.ts +111 -0
  684. package/src/adapters/banal/xml.ts +112 -0
  685. package/src/adapters/curl/download.io.ts +73 -0
  686. package/src/adapters/curl/download.test.ts +55 -0
  687. package/src/adapters/curl/index.ts +5 -0
  688. package/src/adapters/memory/index.ts +131 -0
  689. package/src/adapters/node/files.io.ts +39 -0
  690. package/src/adapters/node/files.test.ts +28 -0
  691. package/src/adapters/node/host.io.ts +15 -0
  692. package/src/adapters/node/index.ts +36 -0
  693. package/src/adapters/node/process.io.ts +49 -0
  694. package/src/adapters/node/process.test.ts +46 -0
  695. package/src/adapters/node/workspace.io.ts +40 -0
  696. package/src/adapters/node/workspace.test.ts +58 -0
  697. package/src/adapters/pdfjs/fill.test.ts +111 -0
  698. package/src/adapters/pdfjs/fill.ts +141 -0
  699. package/src/build-engine.harness.mjs +314 -0
  700. package/src/build-engine.ts +219 -0
  701. package/src/build.harness.mjs +631 -0
  702. package/src/build.mutations.mjs +195 -0
  703. package/src/build.ts +793 -0
  704. package/src/cli.harness.mjs +2007 -0
  705. package/src/cli.mutations.mjs +448 -0
  706. package/src/cli.ts +1189 -0
  707. package/src/doctor.harness.mjs +396 -0
  708. package/src/doctor.mutations.mjs +175 -0
  709. package/src/doctor.ts +356 -0
  710. package/src/domain/geometry.ts +108 -0
  711. package/src/domain/host.ts +23 -0
  712. package/src/domain/page-layout.ts +32 -0
  713. package/src/domain/paths.ts +5 -0
  714. package/src/domain/result.test.ts +26 -0
  715. package/src/domain/result.ts +29 -0
  716. package/src/domain/sha256.test.ts +12 -0
  717. package/src/domain/sha256.ts +21 -0
  718. package/src/domain/text.ts +11 -0
  719. package/src/engine.harness.mjs +252 -0
  720. package/src/engine.ts +176 -0
  721. package/src/exit-code.test.ts +21 -0
  722. package/src/exit-code.ts +38 -0
  723. package/src/facts-file.test.ts +240 -0
  724. package/src/facts-file.ts +241 -0
  725. package/src/hooks-settings.harness.mjs +386 -0
  726. package/src/hooks-settings.mutations.mjs +116 -0
  727. package/src/hooks-settings.ts +434 -0
  728. package/src/init.ts +900 -0
  729. package/src/latex-log.harness.mjs +226 -0
  730. package/src/latex-log.ts +234 -0
  731. package/src/latex-loop.harness.mjs +449 -0
  732. package/src/latex-loop.ts +211 -0
  733. package/src/link-skills.harness.mjs +273 -0
  734. package/src/link-skills.mutations.mjs +136 -0
  735. package/src/link-skills.ts +258 -0
  736. package/src/new-paper.harness.mjs +216 -0
  737. package/src/new-paper.mutations.mjs +79 -0
  738. package/src/new-paper.ts +158 -0
  739. package/src/pdf-facts.harness.mjs +188 -0
  740. package/src/pdf-facts.ts +327 -0
  741. package/src/pdf-geometry.harness.mjs +254 -0
  742. package/src/pdf-geometry.ts +300 -0
  743. package/src/ports/download.ts +10 -0
  744. package/src/ports/files.ts +11 -0
  745. package/src/ports/measure-geometry.ts +8 -0
  746. package/src/ports/process.ts +46 -0
  747. package/src/ports/tool-installer.ts +33 -0
  748. package/src/ports/workspace.ts +20 -0
  749. package/src/rules-config.harness.mjs +114 -0
  750. package/src/rules-config.ts +178 -0
  751. package/src/structure.harness.mjs +179 -0
  752. package/src/structure.mutations.mjs +83 -0
  753. package/src/structure.ts +166 -0
  754. package/src/tex-requirements.harness.mjs +238 -0
  755. package/src/tex-requirements.ts +181 -0
  756. package/src/toolchain.harness.mjs +651 -0
  757. package/src/toolchain.ts +755 -0
  758. package/src/types.ts +106 -0
  759. package/templates/paper/PIPELINE-STATUS.md +72 -0
  760. package/templates/paper/paper.md +4 -0
  761. package/templates/paper/paper.tex +8 -0
  762. package/tsconfig.json +23 -0
@@ -0,0 +1,53 @@
1
+
2
+ 37 skills installed → 36 competitors per run
3
+
4
+ ARMS — description length, word-set delta vs A0, mean prompt overlap
5
+ arm label chars words − + ovAH ovSH
6
+ A0 baseline (verbatim) 1174 94 0 0 0.85 0.78
7
+ A1 short (sentences 1-2 only) 528 46 48 0 0.71 0.78
8
+ A2 no-subordination 992 85 9 0 0.85 0.78
9
+ A3 no-negation 965 81 13 0 0.85 0.78
10
+ A4 no-machinery 598 44 50 0 0.44 0.35
11
+ A5 renamed (description identical) 1174 94 0 0 0.85 0.78
12
+ A6 persona-only (A1's mirror) 225 22 72 0 0.19 0.35
13
+
14
+ ⚠ ovAH/ovSH FALL AS TEXT IS DELETED — caveat 2 in the header, quantified. The deletion arms carry
15
+ a vocabulary handicap against the parent's dominant factor. A rising deletion arm rose DESPITE it;
16
+ a flat one may be a real gain cancelled by it, and this design cannot tell. A5 is the only arm
17
+ with zero handicap (identical word set).
18
+
19
+ oracle: 1 arm(s) x 8 closed-book picks over 37 descriptions
20
+
21
+ === A6 persona-only (A1's mirror)
22
+ Ignoring 24 permissions.allow entries from .claude/settings.json and .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/home/user/mine"].hasTrustDialogAccepted: true in /root/.claude.json.
23
+ AH HIT grade-paper-writing grade the writing craft in this draft and name the offendi
24
+ Ignoring 24 permissions.allow entries from .claude/settings.json and .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/home/user/mine"].hasTrustDialogAccepted: true in /root/.claude.json.
25
+ AH HIT grade-paper-writing run the blind multi-grader panel over the prose clarity an
26
+ Ignoring 24 permissions.allow entries from .claude/settings.json and .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/home/user/mine"].hasTrustDialogAccepted: true in /root/.claude.json.
27
+ AH HIT grade-paper-writing score the title, the abstract and the intro architecture o
28
+ Ignoring 24 permissions.allow entries from .claude/settings.json and .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/home/user/mine"].hasTrustDialogAccepted: true in /root/.claude.json.
29
+ AH HIT grade-paper-writing grade how well this reads, hedge stacking included, and gi
30
+ Ignoring 24 permissions.allow entries from .claude/settings.json and .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/home/user/mine"].hasTrustDialogAccepted: true in /root/.claude.json.
31
+ SH HIT grade-paper-writing the abstract reads like a wall of jargon
32
+ Ignoring 24 permissions.allow entries from .claude/settings.json and .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/home/user/mine"].hasTrustDialogAccepted: true in /root/.claude.json.
33
+ SH HIT grade-paper-writing the intro architecture is fine but the prose clarity is no
34
+ Ignoring 24 permissions.allow entries from .claude/settings.json and .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/home/user/mine"].hasTrustDialogAccepted: true in /root/.claude.json.
35
+ SH HIT grade-paper-writing there is hedge stacking everywhere and the point never lan
36
+ Ignoring 24 permissions.allow entries from .claude/settings.json and .claude/settings.local.json: this workspace has not been trusted. Run Claude Code interactively here once and accept the trust dialog, or set projects["/home/user/mine"].hasTrustDialogAccepted: true in /root/.claude.json.
37
+ SH HIT grade-paper-writing the writing does not read well even though the draft is fi
38
+
39
+ ORACLE ACCURACY BY ARM (closed book, 37 descriptions in context, 1 pick each)
40
+ arm label hit AH SH none wrong
41
+ A0 baseline (verbatim) 7/8 4/4 3/4 0 1
42
+ A1 short (sentences 1-2 only) 7/8 4/4 3/4 0 1
43
+ A2 no-subordination 8/8 4/4 4/4 0 0
44
+ A3 no-negation 7/8 4/4 3/4 0 1
45
+ A4 no-machinery 8/8 4/4 4/4 0 0
46
+ A5 renamed (description identical) 0/8 0/4 0/4 0 8
47
+ A6 persona-only (A1's mirror) 8/8 4/4 4/4 0 0
48
+
49
+ rows → repro/2026-08-08-grade-paper-writing-ablation-oracle.json
50
+
51
+ READ AS AN UPPER BOUND, NOT A HUMAN, and read it AGAINST the harness arms: an arm where the
52
+ oracle moves WITH the harness changed what is recoverable from the text; an arm where the oracle
53
+ is flat and the harness moves changed what the harness DOES with the same recoverable text.
@@ -0,0 +1,89 @@
1
+
2
+ 37 skills installed → 36 competitors per run
3
+
4
+ ARMS — description length, word-set delta vs A0, mean prompt overlap
5
+ arm label chars words − + ovAH ovSH
6
+ A0 baseline (verbatim) 1174 94 0 0 0.85 0.78
7
+ A1 short (sentences 1-2 only) 528 46 48 0 0.71 0.78
8
+ A2 no-subordination 992 85 9 0 0.85 0.78
9
+ A3 no-negation 965 81 13 0 0.85 0.78
10
+ A4 no-machinery 598 44 50 0 0.44 0.35
11
+ A5 renamed (description identical) 1174 94 0 0 0.85 0.78
12
+ A6 persona-only (A1's mirror) 225 22 72 0 0.19 0.35
13
+
14
+ ⚠ ovAH/ovSH FALL AS TEXT IS DELETED — caveat 2 in the header, quantified. The deletion arms carry
15
+ a vocabulary handicap against the parent's dominant factor. A rising deletion arm rose DESPITE it;
16
+ a flat one may be a real gain cancelled by it, and this design cannot tell. A5 is the only arm
17
+ with zero handicap (identical word set).
18
+
19
+ mode=main 1 arm(s) x 8 prompts x 3 trials = 24 runs
20
+
21
+ ==============================================================================
22
+ === A6 persona-only (A1's mirror) (225 chars, id vigiles-loose-skills:grade-paper-writing)
23
+ Spent: 224,224 tokens (10 in · 891 out · 179.4k cache) · ~$0.33 API-equivalent
24
+ Billed to: your Claude subscription — $0 metered ✅
25
+ AH 0.33 T1 O0 S2 ov=0.25 grade the writing craft in this draft and name the offen
26
+ Spent: 314,086 tokens (12 in · 1.2k out · 268.1k cache) · ~$0.37 API-equivalent
27
+ Billed to: your Claude subscription — $0 metered ✅
28
+ Session so far: 538,310 tokens · ~$0.70 API-equivalent
29
+ AH 1.00 T3 O0 S0 ov=0.22 run the blind multi-grader panel over the prose clarity
30
+ AH 0.00 T0 O0 S3 ov=0.00 score the title, the abstract and the intro architecture
31
+ AH 0.00 T0 O0 S3 ov=0.29 grade how well this reads, hedge stacking included, and
32
+ Spent: 406,626 tokens (18 in · 1.8k out · 359.0k cache) · ~$0.41 API-equivalent
33
+ Billed to: your Claude subscription — $0 metered ✅
34
+ Session so far: 944,936 tokens · ~$1.11 API-equivalent
35
+ SH 1.00 T3 O0 S0 ov=0.75 the abstract reads like a wall of jargon
36
+ Spent: 275,164 tokens (12 in · 3.5k out · 225.3k cache) · ~$0.40 API-equivalent
37
+ Billed to: your Claude subscription — $0 metered ✅
38
+ Session so far: 1,220,100 tokens · ~$1.51 API-equivalent
39
+ SH 0.00 T0 O0 S3 ov=0.00 the intro architecture is fine but the prose clarity is
40
+ Spent: 269,497 tokens (9 in · 1.6k out · 223.1k cache) · ~$0.36 API-equivalent
41
+ Billed to: your Claude subscription — $0 metered ✅
42
+ Session so far: 1,489,597 tokens · ~$1.87 API-equivalent
43
+ SH 0.00 T0 O3 S0 ov=0.00 there is hedge stacking everywhere and the point never l
44
+ instead: tighten-paper
45
+ Spent: 450,483 tokens (19 in · 1.9k out · 403.3k cache) · ~$0.42 API-equivalent
46
+ Billed to: your Claude subscription — $0 metered ✅
47
+ Session so far: 1,940,080 tokens · ~$2.29 API-equivalent
48
+ SH 1.00 T3 O0 S0 ov=0.67 the writing does not read well even though the draft is
49
+
50
+ ==============================================================================
51
+ THE ABLATION — target trigger rate by arm
52
+
53
+ arm label chars fired AH SH Δ vs A0
54
+ A0 baseline (verbatim) 1174 54% (13/24) 58% 50% —
55
+ A1 short (sentences 1-2 only) 528 50% (12/24) 50% 50% -4pp
56
+ A2 no-subordination 992 50% (12/24) 58% 42% -4pp
57
+ A3 no-negation 965 54% (13/24) 58% 50% 0pp
58
+ A4 no-machinery 598 46% (11/24) 50% 42% -8pp
59
+ A5 renamed (description identical) 1174 25% (6/24) 33% 17% -29pp
60
+ A6 persona-only (A1's mirror) 225 42% (10/24) 33% 50% -12pp
61
+
62
+ ==============================================================================
63
+ TARGET / OTHER / SILENT — the parent's discriminator
64
+
65
+ arm label target other silent
66
+ A0 baseline (verbatim) 54% 0% 46%
67
+ A1 short (sentences 1-2 only) 50% 4% 46%
68
+ A2 no-subordination 50% 8% 42%
69
+ A3 no-negation 54% 0% 46%
70
+ A4 no-machinery 46% 13% 42%
71
+ A5 renamed (description identical) 25% 4% 71%
72
+ A6 persona-only (A1's mirror) 42% 13% 46%
73
+
74
+ OTHER = a competitor was selected and the target was not. The parent saw ONE in 144 runs.
75
+ SILENT = nothing resolved. 42 of this skill's 48 parent runs were SILENT; that is the number
76
+ an arm has to move. See caveat 4: a run that simply answered is also SILENT.
77
+
78
+ WHICH competitors took the runs (all arms):
79
+ 7 tighten-paper
80
+ 3 cold-read-diff
81
+
82
+ 🔴 n = 24 PER ARM. At ~20% baseline the 95% interval is roughly ±16pp. A factor of two is
83
+ readable; fifteen points is not. If every arm lands within noise of A0, the finding is that the
84
+ cause is NOT IN THE DESCRIPTION TEXT — report that, do not pick the largest number.
85
+
86
+ per-run rows → repro/2026-08-08-grade-paper-writing-ablation.json
87
+
88
+ Run --mode oracle before reading any arm as a mechanism: a harness move with a matching oracle
89
+ move is a change in what the TEXT supports, not in what the harness does with it.
@@ -0,0 +1,450 @@
1
+ [
2
+ {
3
+ "arm": "A0",
4
+ "label": "baseline (verbatim)",
5
+ "cell": "AH",
6
+ "prompt": "grade the writing craft in this draft and name the offending sentence in each dimension",
7
+ "pick": "grade-paper-writing",
8
+ "ok": true
9
+ },
10
+ {
11
+ "arm": "A0",
12
+ "label": "baseline (verbatim)",
13
+ "cell": "AH",
14
+ "prompt": "run the blind multi-grader panel over the prose clarity and jargon discipline",
15
+ "pick": "grade-paper-writing",
16
+ "ok": true
17
+ },
18
+ {
19
+ "arm": "A0",
20
+ "label": "baseline (verbatim)",
21
+ "cell": "AH",
22
+ "prompt": "score the title, the abstract and the intro architecture one to five",
23
+ "pick": "grade-paper-writing",
24
+ "ok": true
25
+ },
26
+ {
27
+ "arm": "A0",
28
+ "label": "baseline (verbatim)",
29
+ "cell": "AH",
30
+ "prompt": "grade how well this reads, hedge stacking included, and give me the fix for each",
31
+ "pick": "grade-paper-writing",
32
+ "ok": true
33
+ },
34
+ {
35
+ "arm": "A0",
36
+ "label": "baseline (verbatim)",
37
+ "cell": "SH",
38
+ "prompt": "the abstract reads like a wall of jargon",
39
+ "pick": "grade-paper-writing",
40
+ "ok": true
41
+ },
42
+ {
43
+ "arm": "A0",
44
+ "label": "baseline (verbatim)",
45
+ "cell": "SH",
46
+ "prompt": "the intro architecture is fine but the prose clarity is not",
47
+ "pick": "grade-paper-writing",
48
+ "ok": true
49
+ },
50
+ {
51
+ "arm": "A0",
52
+ "label": "baseline (verbatim)",
53
+ "cell": "SH",
54
+ "prompt": "there is hedge stacking everywhere and the point never lands",
55
+ "pick": "tighten-paper",
56
+ "ok": false
57
+ },
58
+ {
59
+ "arm": "A0",
60
+ "label": "baseline (verbatim)",
61
+ "cell": "SH",
62
+ "prompt": "the writing does not read well even though the draft is finished",
63
+ "pick": "grade-paper-writing",
64
+ "ok": true
65
+ },
66
+ {
67
+ "arm": "A1",
68
+ "label": "short (sentences 1-2 only)",
69
+ "cell": "AH",
70
+ "prompt": "grade the writing craft in this draft and name the offending sentence in each dimension",
71
+ "pick": "grade-paper-writing",
72
+ "ok": true
73
+ },
74
+ {
75
+ "arm": "A1",
76
+ "label": "short (sentences 1-2 only)",
77
+ "cell": "AH",
78
+ "prompt": "run the blind multi-grader panel over the prose clarity and jargon discipline",
79
+ "pick": "grade-paper-writing",
80
+ "ok": true
81
+ },
82
+ {
83
+ "arm": "A1",
84
+ "label": "short (sentences 1-2 only)",
85
+ "cell": "AH",
86
+ "prompt": "score the title, the abstract and the intro architecture one to five",
87
+ "pick": "grade-paper-writing",
88
+ "ok": true
89
+ },
90
+ {
91
+ "arm": "A1",
92
+ "label": "short (sentences 1-2 only)",
93
+ "cell": "AH",
94
+ "prompt": "grade how well this reads, hedge stacking included, and give me the fix for each",
95
+ "pick": "grade-paper-writing",
96
+ "ok": true
97
+ },
98
+ {
99
+ "arm": "A1",
100
+ "label": "short (sentences 1-2 only)",
101
+ "cell": "SH",
102
+ "prompt": "the abstract reads like a wall of jargon",
103
+ "pick": "grade-paper-writing",
104
+ "ok": true
105
+ },
106
+ {
107
+ "arm": "A1",
108
+ "label": "short (sentences 1-2 only)",
109
+ "cell": "SH",
110
+ "prompt": "the intro architecture is fine but the prose clarity is not",
111
+ "pick": "grade-paper-writing",
112
+ "ok": true
113
+ },
114
+ {
115
+ "arm": "A1",
116
+ "label": "short (sentences 1-2 only)",
117
+ "cell": "SH",
118
+ "prompt": "there is hedge stacking everywhere and the point never lands",
119
+ "pick": "tighten-paper",
120
+ "ok": false
121
+ },
122
+ {
123
+ "arm": "A1",
124
+ "label": "short (sentences 1-2 only)",
125
+ "cell": "SH",
126
+ "prompt": "the writing does not read well even though the draft is finished",
127
+ "pick": "grade-paper-writing",
128
+ "ok": true
129
+ },
130
+ {
131
+ "arm": "A2",
132
+ "label": "no-subordination",
133
+ "cell": "AH",
134
+ "prompt": "grade the writing craft in this draft and name the offending sentence in each dimension",
135
+ "pick": "grade-paper-writing",
136
+ "ok": true
137
+ },
138
+ {
139
+ "arm": "A2",
140
+ "label": "no-subordination",
141
+ "cell": "AH",
142
+ "prompt": "run the blind multi-grader panel over the prose clarity and jargon discipline",
143
+ "pick": "grade-paper-writing",
144
+ "ok": true
145
+ },
146
+ {
147
+ "arm": "A2",
148
+ "label": "no-subordination",
149
+ "cell": "AH",
150
+ "prompt": "score the title, the abstract and the intro architecture one to five",
151
+ "pick": "grade-paper-writing",
152
+ "ok": true
153
+ },
154
+ {
155
+ "arm": "A2",
156
+ "label": "no-subordination",
157
+ "cell": "AH",
158
+ "prompt": "grade how well this reads, hedge stacking included, and give me the fix for each",
159
+ "pick": "grade-paper-writing",
160
+ "ok": true
161
+ },
162
+ {
163
+ "arm": "A2",
164
+ "label": "no-subordination",
165
+ "cell": "SH",
166
+ "prompt": "the abstract reads like a wall of jargon",
167
+ "pick": "grade-paper-writing",
168
+ "ok": true
169
+ },
170
+ {
171
+ "arm": "A2",
172
+ "label": "no-subordination",
173
+ "cell": "SH",
174
+ "prompt": "the intro architecture is fine but the prose clarity is not",
175
+ "pick": "grade-paper-writing",
176
+ "ok": true
177
+ },
178
+ {
179
+ "arm": "A2",
180
+ "label": "no-subordination",
181
+ "cell": "SH",
182
+ "prompt": "there is hedge stacking everywhere and the point never lands",
183
+ "pick": "grade-paper-writing",
184
+ "ok": true
185
+ },
186
+ {
187
+ "arm": "A2",
188
+ "label": "no-subordination",
189
+ "cell": "SH",
190
+ "prompt": "the writing does not read well even though the draft is finished",
191
+ "pick": "grade-paper-writing",
192
+ "ok": true
193
+ },
194
+ {
195
+ "arm": "A3",
196
+ "label": "no-negation",
197
+ "cell": "AH",
198
+ "prompt": "grade the writing craft in this draft and name the offending sentence in each dimension",
199
+ "pick": "grade-paper-writing",
200
+ "ok": true
201
+ },
202
+ {
203
+ "arm": "A3",
204
+ "label": "no-negation",
205
+ "cell": "AH",
206
+ "prompt": "run the blind multi-grader panel over the prose clarity and jargon discipline",
207
+ "pick": "grade-paper-writing",
208
+ "ok": true
209
+ },
210
+ {
211
+ "arm": "A3",
212
+ "label": "no-negation",
213
+ "cell": "AH",
214
+ "prompt": "score the title, the abstract and the intro architecture one to five",
215
+ "pick": "grade-paper-writing",
216
+ "ok": true
217
+ },
218
+ {
219
+ "arm": "A3",
220
+ "label": "no-negation",
221
+ "cell": "AH",
222
+ "prompt": "grade how well this reads, hedge stacking included, and give me the fix for each",
223
+ "pick": "grade-paper-writing",
224
+ "ok": true
225
+ },
226
+ {
227
+ "arm": "A3",
228
+ "label": "no-negation",
229
+ "cell": "SH",
230
+ "prompt": "the abstract reads like a wall of jargon",
231
+ "pick": "grade-paper-writing",
232
+ "ok": true
233
+ },
234
+ {
235
+ "arm": "A3",
236
+ "label": "no-negation",
237
+ "cell": "SH",
238
+ "prompt": "the intro architecture is fine but the prose clarity is not",
239
+ "pick": "grade-paper-writing",
240
+ "ok": true
241
+ },
242
+ {
243
+ "arm": "A3",
244
+ "label": "no-negation",
245
+ "cell": "SH",
246
+ "prompt": "there is hedge stacking everywhere and the point never lands",
247
+ "pick": "cold-read-diff",
248
+ "ok": false
249
+ },
250
+ {
251
+ "arm": "A3",
252
+ "label": "no-negation",
253
+ "cell": "SH",
254
+ "prompt": "the writing does not read well even though the draft is finished",
255
+ "pick": "grade-paper-writing",
256
+ "ok": true
257
+ },
258
+ {
259
+ "arm": "A4",
260
+ "label": "no-machinery",
261
+ "cell": "AH",
262
+ "prompt": "grade the writing craft in this draft and name the offending sentence in each dimension",
263
+ "pick": "grade-paper-writing",
264
+ "ok": true
265
+ },
266
+ {
267
+ "arm": "A4",
268
+ "label": "no-machinery",
269
+ "cell": "AH",
270
+ "prompt": "run the blind multi-grader panel over the prose clarity and jargon discipline",
271
+ "pick": "grade-paper-writing",
272
+ "ok": true
273
+ },
274
+ {
275
+ "arm": "A4",
276
+ "label": "no-machinery",
277
+ "cell": "AH",
278
+ "prompt": "score the title, the abstract and the intro architecture one to five",
279
+ "pick": "grade-paper-writing",
280
+ "ok": true
281
+ },
282
+ {
283
+ "arm": "A4",
284
+ "label": "no-machinery",
285
+ "cell": "AH",
286
+ "prompt": "grade how well this reads, hedge stacking included, and give me the fix for each",
287
+ "pick": "grade-paper-writing",
288
+ "ok": true
289
+ },
290
+ {
291
+ "arm": "A4",
292
+ "label": "no-machinery",
293
+ "cell": "SH",
294
+ "prompt": "the abstract reads like a wall of jargon",
295
+ "pick": "grade-paper-writing",
296
+ "ok": true
297
+ },
298
+ {
299
+ "arm": "A4",
300
+ "label": "no-machinery",
301
+ "cell": "SH",
302
+ "prompt": "the intro architecture is fine but the prose clarity is not",
303
+ "pick": "grade-paper-writing",
304
+ "ok": true
305
+ },
306
+ {
307
+ "arm": "A4",
308
+ "label": "no-machinery",
309
+ "cell": "SH",
310
+ "prompt": "there is hedge stacking everywhere and the point never lands",
311
+ "pick": "grade-paper-writing",
312
+ "ok": true
313
+ },
314
+ {
315
+ "arm": "A4",
316
+ "label": "no-machinery",
317
+ "cell": "SH",
318
+ "prompt": "the writing does not read well even though the draft is finished",
319
+ "pick": "grade-paper-writing",
320
+ "ok": true
321
+ },
322
+ {
323
+ "arm": "A5",
324
+ "label": "renamed (description identical)",
325
+ "cell": "AH",
326
+ "prompt": "grade the writing craft in this draft and name the offending sentence in each dimension",
327
+ "pick": "?grade-paper-writing",
328
+ "ok": false
329
+ },
330
+ {
331
+ "arm": "A5",
332
+ "label": "renamed (description identical)",
333
+ "cell": "AH",
334
+ "prompt": "run the blind multi-grader panel over the prose clarity and jargon discipline",
335
+ "pick": "?grade-paper-writing",
336
+ "ok": false
337
+ },
338
+ {
339
+ "arm": "A5",
340
+ "label": "renamed (description identical)",
341
+ "cell": "AH",
342
+ "prompt": "score the title, the abstract and the intro architecture one to five",
343
+ "pick": "?grade-paper-writing",
344
+ "ok": false
345
+ },
346
+ {
347
+ "arm": "A5",
348
+ "label": "renamed (description identical)",
349
+ "cell": "AH",
350
+ "prompt": "grade how well this reads, hedge stacking included, and give me the fix for each",
351
+ "pick": "?grade-paper-writing",
352
+ "ok": false
353
+ },
354
+ {
355
+ "arm": "A5",
356
+ "label": "renamed (description identical)",
357
+ "cell": "SH",
358
+ "prompt": "the abstract reads like a wall of jargon",
359
+ "pick": "?grade-paper-writing",
360
+ "ok": false
361
+ },
362
+ {
363
+ "arm": "A5",
364
+ "label": "renamed (description identical)",
365
+ "cell": "SH",
366
+ "prompt": "the intro architecture is fine but the prose clarity is not",
367
+ "pick": "?grade-paper-writing",
368
+ "ok": false
369
+ },
370
+ {
371
+ "arm": "A5",
372
+ "label": "renamed (description identical)",
373
+ "cell": "SH",
374
+ "prompt": "there is hedge stacking everywhere and the point never lands",
375
+ "pick": "tighten-paper",
376
+ "ok": false
377
+ },
378
+ {
379
+ "arm": "A5",
380
+ "label": "renamed (description identical)",
381
+ "cell": "SH",
382
+ "prompt": "the writing does not read well even though the draft is finished",
383
+ "pick": "?grade-paper-writing",
384
+ "ok": false
385
+ },
386
+ {
387
+ "arm": "A6",
388
+ "label": "persona-only (A1's mirror)",
389
+ "cell": "AH",
390
+ "prompt": "grade the writing craft in this draft and name the offending sentence in each dimension",
391
+ "pick": "grade-paper-writing",
392
+ "ok": true
393
+ },
394
+ {
395
+ "arm": "A6",
396
+ "label": "persona-only (A1's mirror)",
397
+ "cell": "AH",
398
+ "prompt": "run the blind multi-grader panel over the prose clarity and jargon discipline",
399
+ "pick": "grade-paper-writing",
400
+ "ok": true
401
+ },
402
+ {
403
+ "arm": "A6",
404
+ "label": "persona-only (A1's mirror)",
405
+ "cell": "AH",
406
+ "prompt": "score the title, the abstract and the intro architecture one to five",
407
+ "pick": "grade-paper-writing",
408
+ "ok": true
409
+ },
410
+ {
411
+ "arm": "A6",
412
+ "label": "persona-only (A1's mirror)",
413
+ "cell": "AH",
414
+ "prompt": "grade how well this reads, hedge stacking included, and give me the fix for each",
415
+ "pick": "grade-paper-writing",
416
+ "ok": true
417
+ },
418
+ {
419
+ "arm": "A6",
420
+ "label": "persona-only (A1's mirror)",
421
+ "cell": "SH",
422
+ "prompt": "the abstract reads like a wall of jargon",
423
+ "pick": "grade-paper-writing",
424
+ "ok": true
425
+ },
426
+ {
427
+ "arm": "A6",
428
+ "label": "persona-only (A1's mirror)",
429
+ "cell": "SH",
430
+ "prompt": "the intro architecture is fine but the prose clarity is not",
431
+ "pick": "grade-paper-writing",
432
+ "ok": true
433
+ },
434
+ {
435
+ "arm": "A6",
436
+ "label": "persona-only (A1's mirror)",
437
+ "cell": "SH",
438
+ "prompt": "there is hedge stacking everywhere and the point never lands",
439
+ "pick": "grade-paper-writing",
440
+ "ok": true
441
+ },
442
+ {
443
+ "arm": "A6",
444
+ "label": "persona-only (A1's mirror)",
445
+ "cell": "SH",
446
+ "prompt": "the writing does not read well even though the draft is finished",
447
+ "pick": "grade-paper-writing",
448
+ "ok": true
449
+ }
450
+ ]