@galaxyproject/orbit 0.0.0 → 0.9.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 (451) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/LICENSE +21 -0
  3. package/README.md +760 -5
  4. package/bin/legacy-mcp-config.js +363 -0
  5. package/bin/orbit.js +810 -0
  6. package/bin/pi-extension-path.d.ts +4 -0
  7. package/bin/pi-extension-path.js +44 -0
  8. package/bin/provider-auth.d.ts +22 -0
  9. package/bin/provider-auth.js +77 -0
  10. package/bin/thinking-pref.js +38 -0
  11. package/bin/update-check.d.ts +15 -0
  12. package/bin/update-check.js +137 -0
  13. package/extensions/cli-update/index.ts +32 -0
  14. package/extensions/orbit/activity-hooks.ts +141 -0
  15. package/extensions/orbit/activity.ts +116 -0
  16. package/extensions/orbit/agent-dir.ts +11 -0
  17. package/extensions/orbit/auto-resume.ts +352 -0
  18. package/extensions/orbit/config.ts +3 -0
  19. package/extensions/orbit/confusables.ts +1 -0
  20. package/extensions/orbit/context.ts +957 -0
  21. package/extensions/orbit/dashboard-commands.ts +191 -0
  22. package/extensions/orbit/dashboard-store.ts +473 -0
  23. package/extensions/orbit/dashboard-tools.ts +1185 -0
  24. package/extensions/orbit/empty-completion.ts +99 -0
  25. package/extensions/orbit/evidence-gate.ts +1276 -0
  26. package/extensions/orbit/evidence-override-command.ts +294 -0
  27. package/extensions/orbit/exec-guard/bash-risk.ts +1408 -0
  28. package/extensions/orbit/exec-guard/gate.ts +181 -0
  29. package/extensions/orbit/exec-guard/guardian-config.ts +54 -0
  30. package/extensions/orbit/exec-guard/index.ts +1 -0
  31. package/extensions/orbit/exec-guard/model-tier.ts +36 -0
  32. package/extensions/orbit/exec-guard/path-jail.ts +54 -0
  33. package/extensions/orbit/exec-guard/policy.ts +342 -0
  34. package/extensions/orbit/exec-guard/runtime-state.ts +15 -0
  35. package/extensions/orbit/exec-guard/sensitive-read.ts +525 -0
  36. package/extensions/orbit/exec-guard/types.ts +42 -0
  37. package/extensions/orbit/execution-commands.ts +134 -0
  38. package/extensions/orbit/feedback-command.ts +81 -0
  39. package/extensions/orbit/feedback.ts +96 -0
  40. package/extensions/orbit/galaxy-api.test.ts +122 -0
  41. package/extensions/orbit/galaxy-api.ts +606 -0
  42. package/extensions/orbit/galaxy-artifact-link-guidance.ts +5 -0
  43. package/extensions/orbit/galaxy-destructive-gate.ts +113 -0
  44. package/extensions/orbit/galaxy-enrich.ts +1108 -0
  45. package/extensions/orbit/galaxy-failure.ts +101 -0
  46. package/extensions/orbit/galaxy-fixture.ts +126 -0
  47. package/extensions/orbit/galaxy-history-guard.ts +233 -0
  48. package/extensions/orbit/galaxy-job-block.ts +347 -0
  49. package/extensions/orbit/galaxy-job-ops.ts +288 -0
  50. package/extensions/orbit/galaxy-live-source.ts +929 -0
  51. package/extensions/orbit/galaxy-markdown-adapter.ts +248 -0
  52. package/extensions/orbit/galaxy-op-policy.ts +332 -0
  53. package/extensions/orbit/galaxy-ops-tools.ts +326 -0
  54. package/extensions/orbit/galaxy-output-store.ts +80 -0
  55. package/extensions/orbit/galaxy-output.ts +346 -0
  56. package/extensions/orbit/galaxy-page-binding.ts +222 -0
  57. package/extensions/orbit/galaxy-page-markdown-guidance.ts +15 -0
  58. package/extensions/orbit/galaxy-page-ops.ts +159 -0
  59. package/extensions/orbit/galaxy-page-sync.test.ts +417 -0
  60. package/extensions/orbit/galaxy-page-sync.ts +318 -0
  61. package/extensions/orbit/galaxy-pages-api.ts +203 -0
  62. package/extensions/orbit/galaxy-pages-sync.ts +409 -0
  63. package/extensions/orbit/galaxy-poll-guard.ts +189 -0
  64. package/extensions/orbit/galaxy-poller.ts +706 -0
  65. package/extensions/orbit/galaxy-provenance.ts +623 -0
  66. package/extensions/orbit/galaxy-reconcile.ts +956 -0
  67. package/extensions/orbit/galaxy-recovery.ts +176 -0
  68. package/extensions/orbit/galaxy-repeat-guard.ts +55 -0
  69. package/extensions/orbit/galaxy-submission-capture.ts +707 -0
  70. package/extensions/orbit/galaxy-submission.ts +502 -0
  71. package/extensions/orbit/galaxy-tool-source.ts +78 -0
  72. package/extensions/orbit/galaxy-tool-wrap.ts +234 -0
  73. package/extensions/orbit/galaxy-udt-block.ts +127 -0
  74. package/extensions/orbit/galaxy-upload-tus.ts +334 -0
  75. package/extensions/orbit/galaxy-upload.ts +300 -0
  76. package/extensions/orbit/galaxy-version-capture.ts +65 -0
  77. package/extensions/orbit/git.ts +173 -0
  78. package/extensions/orbit/harness-block-fields.ts +597 -0
  79. package/extensions/orbit/index.ts +593 -0
  80. package/extensions/orbit/init-gate.ts +284 -0
  81. package/extensions/orbit/instructions-command.ts +136 -0
  82. package/extensions/orbit/invocation-failure-hint.ts +57 -0
  83. package/extensions/orbit/iwc-plan-check.ts +94 -0
  84. package/extensions/orbit/lesson-command.ts +303 -0
  85. package/extensions/orbit/lesson-hint.ts +245 -0
  86. package/extensions/orbit/lesson-nudge.ts +106 -0
  87. package/extensions/orbit/lessons/compose.ts +177 -0
  88. package/extensions/orbit/lessons/counters.ts +120 -0
  89. package/extensions/orbit/lessons/enabled.ts +116 -0
  90. package/extensions/orbit/lessons/matcher.ts +346 -0
  91. package/extensions/orbit/lessons/paths.ts +286 -0
  92. package/extensions/orbit/lessons/pi-event-contract.ts +105 -0
  93. package/extensions/orbit/lessons/propose-replay.ts +103 -0
  94. package/extensions/orbit/lessons/propose-tool.ts +222 -0
  95. package/extensions/orbit/lessons/propose.ts +502 -0
  96. package/extensions/orbit/lessons/replay.ts +89 -0
  97. package/extensions/orbit/lessons/reproduction-index.ts +83 -0
  98. package/extensions/orbit/lessons/search-tool.ts +99 -0
  99. package/extensions/orbit/lessons/search.ts +136 -0
  100. package/extensions/orbit/lessons/store.ts +415 -0
  101. package/extensions/orbit/lessons/text.ts +36 -0
  102. package/extensions/orbit/lessons/types.ts +69 -0
  103. package/extensions/orbit/lessons/user-dir.ts +24 -0
  104. package/extensions/orbit/lessons/user-lesson.ts +88 -0
  105. package/extensions/orbit/lessons/wrapper.ts +61 -0
  106. package/extensions/orbit/lessons-command.ts +147 -0
  107. package/extensions/orbit/local-exec.ts +39 -0
  108. package/extensions/orbit/mcp-output.ts +179 -0
  109. package/extensions/orbit/mcp-servers.test.ts +24 -0
  110. package/extensions/orbit/mcp-servers.ts +25 -0
  111. package/extensions/orbit/model-script.ts +351 -0
  112. package/extensions/orbit/notebook-anchors.ts +342 -0
  113. package/extensions/orbit/notebook-writer.ts +863 -0
  114. package/extensions/orbit/observation-allowlists.ts +1109 -0
  115. package/extensions/orbit/observation-replay.ts +148 -0
  116. package/extensions/orbit/observation-triggers.ts +563 -0
  117. package/extensions/orbit/observation-ui.ts +175 -0
  118. package/extensions/orbit/observations-command.ts +421 -0
  119. package/extensions/orbit/observations-config.ts +200 -0
  120. package/extensions/orbit/observations.ts +1381 -0
  121. package/extensions/orbit/profiles.ts +270 -0
  122. package/extensions/orbit/progress-updates.ts +95 -0
  123. package/extensions/orbit/proposal-commands.ts +882 -0
  124. package/extensions/orbit/provenance-fs-file.ts +59 -0
  125. package/extensions/orbit/provenance-fs.ts +32 -0
  126. package/extensions/orbit/provenance-memory-fs.ts +59 -0
  127. package/extensions/orbit/record-store-file.ts +177 -0
  128. package/extensions/orbit/record-store-page.ts +77 -0
  129. package/extensions/orbit/record-store-seam.ts +47 -0
  130. package/extensions/orbit/record-store.ts +149 -0
  131. package/extensions/orbit/registry-carrier.ts +107 -0
  132. package/extensions/orbit/registry-eligibility.ts +95 -0
  133. package/extensions/orbit/registry-evaluation.ts +403 -0
  134. package/extensions/orbit/registry-evaluator.ts +519 -0
  135. package/extensions/orbit/registry-import.ts +91 -0
  136. package/extensions/orbit/registry-lock.ts +221 -0
  137. package/extensions/orbit/registry-memory-fs.ts +42 -0
  138. package/extensions/orbit/registry-page-carrier.ts +103 -0
  139. package/extensions/orbit/registry-proposal.ts +1348 -0
  140. package/extensions/orbit/registry-runtime.ts +234 -0
  141. package/extensions/orbit/registry-schema.ts +735 -0
  142. package/extensions/orbit/registry-submitter.ts +59 -0
  143. package/extensions/orbit/registry-templates.ts +346 -0
  144. package/extensions/orbit/registry.ts +476 -0
  145. package/extensions/orbit/sandbox/index.ts +120 -0
  146. package/extensions/orbit/sandbox/sandbox-bash.ts +93 -0
  147. package/extensions/orbit/sandbox/sandbox-config.ts +87 -0
  148. package/extensions/orbit/sandbox/sandbox-init-message.ts +28 -0
  149. package/extensions/orbit/secret-redaction.ts +247 -0
  150. package/extensions/orbit/session-index/cwd.ts +18 -0
  151. package/extensions/orbit/session-index/db.ts +56 -0
  152. package/extensions/orbit/session-index/indexer.ts +154 -0
  153. package/extensions/orbit/session-index/is-enabled.ts +17 -0
  154. package/extensions/orbit/session-index/parse.ts +254 -0
  155. package/extensions/orbit/session-index/query.ts +209 -0
  156. package/extensions/orbit/session-index/schema.ts +72 -0
  157. package/extensions/orbit/session-index/tools.ts +152 -0
  158. package/extensions/orbit/session-lifecycle.ts +321 -0
  159. package/extensions/orbit/skill-triggers.ts +159 -0
  160. package/extensions/orbit/skills-command.ts +48 -0
  161. package/extensions/orbit/skills-discovery.ts +435 -0
  162. package/extensions/orbit/skills.ts +84 -0
  163. package/extensions/orbit/sra-import-gate.ts +77 -0
  164. package/extensions/orbit/state.ts +265 -0
  165. package/extensions/orbit/submission-replay.ts +147 -0
  166. package/extensions/orbit/sync-command.ts +157 -0
  167. package/extensions/orbit/teams/critic-parser.ts +93 -0
  168. package/extensions/orbit/teams/dispatcher.ts +210 -0
  169. package/extensions/orbit/teams/is-enabled.ts +22 -0
  170. package/extensions/orbit/teams/tool.ts +187 -0
  171. package/extensions/orbit/teams/types.ts +57 -0
  172. package/extensions/orbit/teams/validate.ts +42 -0
  173. package/extensions/orbit/tester-id-command.ts +133 -0
  174. package/extensions/orbit/tools-sync.ts +279 -0
  175. package/extensions/orbit/tools.ts +1300 -0
  176. package/extensions/orbit/types.ts +41 -0
  177. package/extensions/orbit/ui-bridge.ts +55 -0
  178. package/extensions/orbit/ulid.ts +60 -0
  179. package/extensions/orbit/user-instructions.ts +388 -0
  180. package/extensions/orbit/vendor/skills/_catalog.json +68 -0
  181. package/extensions/orbit/vendor/skills/_manifest.json +1106 -0
  182. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/SKILL.md +112 -0
  183. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_provenance.json +218 -0
  184. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_required_tools.json +33 -0
  185. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/_verify.json +4 -0
  186. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/add.json +50 -0
  187. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-extract.json +51 -0
  188. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-next-step.json +42 -0
  189. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/draft-validate.json +140 -0
  190. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/cli/list.json +32 -0
  191. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/notes/galaxy-tool-job-failure-reference.md +137 -0
  192. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/notes/open-requirements-ledger.md +173 -0
  193. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/schemas/galaxy-tool-summary.schema.json +175 -0
  194. package/extensions/orbit/vendor/skills/advance-galaxy-draft-step/references/schemas/galaxy-workflow-draft.schema.json +2727 -0
  195. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/SKILL.md +82 -0
  196. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_provenance.json +133 -0
  197. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_required_tools.json +16 -0
  198. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/_verify.json +4 -0
  199. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/cli/draft-validate.json +140 -0
  200. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/notes/galaxy-workflow-draft-format.md +135 -0
  201. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/notes/open-requirements-ledger.md +173 -0
  202. package/extensions/orbit/vendor/skills/apply-galaxy-workflow-changeset/references/schemas/galaxy-workflow-draft.schema.json +2727 -0
  203. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/SKILL.md +84 -0
  204. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/_provenance.json +166 -0
  205. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/_verify.json +29 -0
  206. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/galaxy-workflow-testability-design.md +136 -0
  207. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
  208. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/iwc-test-data-conventions.md +308 -0
  209. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/planemo-asserts-idioms.md +246 -0
  210. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/notes/planemo-workflow-test-architecture.md +151 -0
  211. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/galaxy-workflow-test-plan.schema.json +552 -0
  212. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/summary-galaxy-workflow.schema.json +687 -0
  213. package/extensions/orbit/vendor/skills/changeset-to-galaxy-test-plan/references/schemas/tests-format.schema.json +7328 -0
  214. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/SKILL.md +127 -0
  215. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_provenance.json +198 -0
  216. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_required_tools.json +16 -0
  217. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/_verify.json +4 -0
  218. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/cli/convert.json +123 -0
  219. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/galaxy-data-flow-draft-contract.md +129 -0
  220. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
  221. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/iwc-test-data-conventions.md +308 -0
  222. package/extensions/orbit/vendor/skills/compare-against-iwc-exemplar/references/notes/open-requirements-ledger.md +173 -0
  223. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/SKILL.md +73 -0
  224. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/_provenance.json +160 -0
  225. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/_verify.json +4 -0
  226. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-collection-semantics.md +43 -0
  227. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-collection-semantics.yml +1250 -0
  228. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-tool-job-failure-reference.md +137 -0
  229. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
  230. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
  231. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/nextflow-operators-to-galaxy-collection-recipes.md +98 -0
  232. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/planemo-asserts-idioms.md +246 -0
  233. package/extensions/orbit/vendor/skills/debug-galaxy-workflow-output/references/notes/planemo-workflow-test-architecture.md +151 -0
  234. package/extensions/orbit/vendor/skills/discover-shed-tool/SKILL.md +174 -0
  235. package/extensions/orbit/vendor/skills/discover-shed-tool/_provenance.json +130 -0
  236. package/extensions/orbit/vendor/skills/discover-shed-tool/_required_tools.json +18 -0
  237. package/extensions/orbit/vendor/skills/discover-shed-tool/_verify.json +17 -0
  238. package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-revisions.json +48 -0
  239. package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-search.json +95 -0
  240. package/extensions/orbit/vendor/skills/discover-shed-tool/references/cli/tool-versions.json +39 -0
  241. package/extensions/orbit/vendor/skills/discover-shed-tool/references/notes/component-tool-shed-search.md +230 -0
  242. package/extensions/orbit/vendor/skills/discover-shed-tool/references/schemas/galaxy-tool-discovery.schema.json +231 -0
  243. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/SKILL.md +93 -0
  244. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_provenance.json +201 -0
  245. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_required_tools.json +28 -0
  246. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/_verify.json +17 -0
  247. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/cli/planemo.md +44 -0
  248. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/cli/validate-tests.json +40 -0
  249. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/galaxy-workflow-testability-design.md +136 -0
  250. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/iwc-shortcuts-anti-patterns.md +357 -0
  251. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/iwc-test-data-conventions.md +308 -0
  252. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/planemo-asserts-idioms.md +246 -0
  253. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/notes/planemo-workflow-test-architecture.md +151 -0
  254. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/schemas/galaxy-workflow-test-plan.schema.json +552 -0
  255. package/extensions/orbit/vendor/skills/implement-galaxy-workflow-test/references/schemas/tests-format.schema.json +7328 -0
  256. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/SKILL.md +81 -0
  257. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/_provenance.json +93 -0
  258. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/_verify.json +17 -0
  259. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/references/notes/open-requirements-ledger.md +173 -0
  260. package/extensions/orbit/vendor/skills/interview-to-galaxy-workflow-changeset/references/schemas/summary-galaxy-workflow.schema.json +687 -0
  261. package/extensions/orbit/vendor/skills/pipeline-update-interview-to-galaxy/SKILL.md +81 -0
  262. package/extensions/orbit/vendor/skills/pipeline-update-interview-to-galaxy/_assembly.json +23 -0
  263. package/extensions/orbit/vendor/skills/run-workflow-test/SKILL.md +79 -0
  264. package/extensions/orbit/vendor/skills/run-workflow-test/_provenance.json +125 -0
  265. package/extensions/orbit/vendor/skills/run-workflow-test/_required_tools.json +28 -0
  266. package/extensions/orbit/vendor/skills/run-workflow-test/_verify.json +4 -0
  267. package/extensions/orbit/vendor/skills/run-workflow-test/references/cli/planemo.md +44 -0
  268. package/extensions/orbit/vendor/skills/run-workflow-test/references/cli/validate-tests.json +40 -0
  269. package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
  270. package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/planemo-asserts-idioms.md +246 -0
  271. package/extensions/orbit/vendor/skills/run-workflow-test/references/notes/planemo-workflow-test-architecture.md +151 -0
  272. package/extensions/orbit/vendor/skills/run-workflow-test/references/schemas/tests-format.schema.json +7328 -0
  273. package/extensions/orbit/vendor/skills/skills/LICENSE +21 -0
  274. package/extensions/orbit/vendor/skills/skills/collection-manipulation/README.md +39 -0
  275. package/extensions/orbit/vendor/skills/skills/collection-manipulation/SKILL.md +892 -0
  276. package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/api-patterns.md +927 -0
  277. package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/apply-rules.md +1482 -0
  278. package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/test-patterns.md +996 -0
  279. package/extensions/orbit/vendor/skills/skills/collection-manipulation/references/tools.md +609 -0
  280. package/extensions/orbit/vendor/skills/skills/galaxy-data-libraries/SKILL.md +170 -0
  281. package/extensions/orbit/vendor/skills/skills/galaxy-integration/README.md +162 -0
  282. package/extensions/orbit/vendor/skills/skills/galaxy-integration/SKILL.md +99 -0
  283. package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/README.md +119 -0
  284. package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/tool-checking.md +419 -0
  285. package/extensions/orbit/vendor/skills/skills/galaxy-integration/examples/workflow-testing.md +617 -0
  286. package/extensions/orbit/vendor/skills/skills/galaxy-integration/galaxy-integration.md +614 -0
  287. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/SKILL.md +144 -0
  288. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/average_col3.ipynb +68 -0
  289. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/extract_sample_metadata.ipynb +190 -0
  290. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/variant_annotation.ipynb +816 -0
  291. package/extensions/orbit/vendor/skills/skills/galaxy-integration/jupyterlite/examples/vcp_variant_map.ipynb +443 -0
  292. package/extensions/orbit/vendor/skills/skills/galaxy-integration/scripts/README.md +165 -0
  293. package/extensions/orbit/vendor/skills/skills/galaxy-integration/scripts/galaxy_tool_checker.py +521 -0
  294. package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/SKILL.md +128 -0
  295. package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/gotchas.md +135 -0
  296. package/extensions/orbit/vendor/skills/skills/galaxy-mcp-reference/history-access.md +132 -0
  297. package/extensions/orbit/vendor/skills/skills/reproduciblify/SKILL.md +146 -0
  298. package/extensions/orbit/vendor/skills/skills/reproduciblify/references/directives.yml +496 -0
  299. package/extensions/orbit/vendor/skills/skills/udt-authoring/SKILL.md +245 -0
  300. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/01-minimal-echo.yml +27 -0
  301. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/02-single-data-in-out.yml +27 -0
  302. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/03-multiple-data-js.yml +28 -0
  303. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/04-select-integer-boolean.yml +41 -0
  304. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/05-resource-requirements.yml +25 -0
  305. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/06-biocontainer-tool.yml +38 -0
  306. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/07-inline-python-script.yml +56 -0
  307. package/extensions/orbit/vendor/skills/skills/udt-authoring/examples/08-configfile-script.yml +74 -0
  308. package/extensions/orbit/vendor/skills/skills/udt-authoring/references/common-mistakes.md +76 -0
  309. package/extensions/orbit/vendor/skills/skills/udt-authoring/references/schema-reference.md +155 -0
  310. package/extensions/orbit/vendor/skills/skills/udt-authoring/references/templating.md +196 -0
  311. package/extensions/orbit/vendor/skills/skills/udt-authoring/scripts/validate.py +109 -0
  312. package/extensions/orbit/vendor/skills/skills/workflow-reports/README.md +71 -0
  313. package/extensions/orbit/vendor/skills/skills/workflow-reports/SKILL.md +190 -0
  314. package/extensions/orbit/vendor/skills/skills/workflow-reports/examples/histology-staining.md +145 -0
  315. package/extensions/orbit/vendor/skills/skills/workflow-reports/examples/tissue-microarray-analysis.md +176 -0
  316. package/extensions/orbit/vendor/skills/skills/workflow-reports/references/directives.md +415 -0
  317. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/SKILL.md +98 -0
  318. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_provenance.json +93 -0
  319. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_required_tools.json +28 -0
  320. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/_verify.json +17 -0
  321. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/convert.json +123 -0
  322. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/foundry.md +25 -0
  323. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/cli/validate.json +142 -0
  324. package/extensions/orbit/vendor/skills/summarize-galaxy-workflow/references/schemas/summary-galaxy-workflow.schema.json +687 -0
  325. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/SKILL.md +74 -0
  326. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_provenance.json +71 -0
  327. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_required_tools.json +16 -0
  328. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/_verify.json +4 -0
  329. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/cli/validate.json +142 -0
  330. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/notes/galaxy-workflow-invocation-failure-reference.md +138 -0
  331. package/extensions/orbit/vendor/skills/validate-galaxy-workflow/references/notes/galaxy-workflow-testability-design.md +136 -0
  332. package/extensions/orbit/vendor-skills.ts +283 -0
  333. package/extensions/orbit/workspace-state-dir.ts +46 -0
  334. package/extensions/orbit-handoff/index.ts +73 -0
  335. package/extensions/orbit-handoff/orbit-launcher.ts +142 -0
  336. package/extensions/whats-new/index.ts +98 -0
  337. package/lessons/LICENSE +17 -0
  338. package/lessons/README.md +117 -0
  339. package/lessons/SCHEMA.md +187 -0
  340. package/lessons/build-snapshot.mjs +311 -0
  341. package/lessons/data/downloaded-file-is-not-what-its-extension-says.md +61 -0
  342. package/lessons/galaxy-api/403-history-is-a-hard-stop.md +57 -0
  343. package/lessons/galaxy-api/collection-into-single-dataset-input.md +61 -0
  344. package/lessons/galaxy-api/connectedvalue-in-command-line.md +62 -0
  345. package/lessons/galaxy-api/hid-is-not-an-id.md +59 -0
  346. package/lessons/galaxy-api/invoke-workflow-inputs-not-params.md +60 -0
  347. package/lessons/galaxy-api/repeat-param-pipe-keys.md +63 -0
  348. package/lessons/galaxy-api/run-tool-returns-on-submit.md +61 -0
  349. package/lessons/galaxy-tools/reference-index-not-on-server.md +62 -0
  350. package/lessons/log.md +42 -0
  351. package/lessons/reproduction/input-population-mismatch.md +59 -0
  352. package/lessons/reproduction/methods-text-vs-executed-parameters.md +62 -0
  353. package/lessons/snapshot.json +1004 -0
  354. package/lessons/stats/de-contrast-direction-and-sample-labels.md +63 -0
  355. package/lessons/stats/na-coerced-to-zero-in-filters.md +59 -0
  356. package/lessons/validate.mjs +1219 -0
  357. package/package.json +103 -5
  358. package/shared/agent-prompt.d.ts +8 -0
  359. package/shared/agent-prompt.js +15 -0
  360. package/shared/approval-prompt.d.ts +4 -0
  361. package/shared/approval-prompt.js +61 -0
  362. package/shared/brain-env.d.ts +14 -0
  363. package/shared/brain-env.js +108 -0
  364. package/shared/brain-exit.d.ts +20 -0
  365. package/shared/brain-exit.js +149 -0
  366. package/shared/capability-profile.d.ts +16 -0
  367. package/shared/capability-profile.js +75 -0
  368. package/shared/config-source.d.ts +13 -0
  369. package/shared/config-source.js +17 -0
  370. package/shared/confusables.d.ts +3 -0
  371. package/shared/confusables.js +93 -0
  372. package/shared/custom-provider.d.ts +45 -0
  373. package/shared/custom-provider.js +169 -0
  374. package/shared/dashboard-contract.d.ts +123 -0
  375. package/shared/dashboard-contract.js +560 -0
  376. package/shared/dashboard-layout-store.d.ts +44 -0
  377. package/shared/dashboard-layout-store.js +281 -0
  378. package/shared/feedback-contract.d.ts +61 -0
  379. package/shared/feedback-contract.js +146 -0
  380. package/shared/galaxy-artifact-links.d.ts +30 -0
  381. package/shared/galaxy-artifact-links.js +166 -0
  382. package/shared/galaxy-credentials.d.ts +26 -0
  383. package/shared/galaxy-credentials.js +71 -0
  384. package/shared/galaxy-destructive.d.ts +21 -0
  385. package/shared/galaxy-destructive.js +269 -0
  386. package/shared/galaxy-guidance.d.ts +2 -0
  387. package/shared/galaxy-guidance.js +53 -0
  388. package/shared/galaxy-live-contract.d.ts +92 -0
  389. package/shared/galaxy-live-contract.js +180 -0
  390. package/shared/galaxy-page-cells.d.ts +2 -0
  391. package/shared/galaxy-page-cells.js +22 -0
  392. package/shared/galaxy-tool-family.d.ts +5 -0
  393. package/shared/galaxy-tool-family.js +27 -0
  394. package/shared/galaxy-url.d.ts +1 -0
  395. package/shared/galaxy-url.js +48 -0
  396. package/shared/gtn.d.ts +31 -0
  397. package/shared/gtn.js +253 -0
  398. package/shared/handled-prompt.d.ts +3 -0
  399. package/shared/handled-prompt.js +26 -0
  400. package/shared/known-provider.d.ts +11 -0
  401. package/shared/known-provider.js +89 -0
  402. package/shared/lesson-hint-marker.d.ts +7 -0
  403. package/shared/lesson-hint-marker.js +32 -0
  404. package/shared/lesson-rules.d.ts +150 -0
  405. package/shared/lesson-rules.js +203 -0
  406. package/shared/malformed-object-ids.d.ts +1 -0
  407. package/shared/malformed-object-ids.js +37 -0
  408. package/shared/markdown-sections.d.ts +10 -0
  409. package/shared/markdown-sections.js +118 -0
  410. package/shared/notebook-fences.d.ts +12 -0
  411. package/shared/notebook-fences.js +53 -0
  412. package/shared/observation-contract.d.ts +91 -0
  413. package/shared/observation-contract.js +544 -0
  414. package/shared/orbit-config.d.ts +226 -0
  415. package/shared/orbit-config.js +189 -0
  416. package/shared/orbit-env.d.ts +13 -0
  417. package/shared/orbit-env.js +124 -0
  418. package/shared/orbit-shell-contract.d.ts +74 -0
  419. package/shared/orbit-shell-contract.js +30 -0
  420. package/shared/page-content-hash.d.ts +1 -0
  421. package/shared/page-content-hash.js +13 -0
  422. package/shared/pi-default-model.d.ts +7 -0
  423. package/shared/pi-default-model.js +41 -0
  424. package/shared/prompt-blocks.d.ts +87 -0
  425. package/shared/prompt-blocks.js +898 -0
  426. package/shared/provider-auth-caps.d.ts +22 -0
  427. package/shared/provider-auth-caps.js +57 -0
  428. package/shared/random.d.ts +2 -0
  429. package/shared/random.js +15 -0
  430. package/shared/record-excerpt.d.ts +4 -0
  431. package/shared/record-excerpt.js +16 -0
  432. package/shared/redirect-guard.d.ts +36 -0
  433. package/shared/redirect-guard.js +235 -0
  434. package/shared/skills-pin.d.ts +8 -0
  435. package/shared/skills-pin.js +9 -0
  436. package/shared/skills-router.d.ts +17 -0
  437. package/shared/skills-router.js +63 -0
  438. package/shared/sra-import.d.ts +34 -0
  439. package/shared/sra-import.js +206 -0
  440. package/shared/state-dir.d.ts +21 -0
  441. package/shared/state-dir.js +240 -0
  442. package/shared/team-dispatch-contract.d.ts +28 -0
  443. package/shared/team-dispatch-contract.js +1 -0
  444. package/shared/truncate-middle.d.ts +11 -0
  445. package/shared/truncate-middle.js +68 -0
  446. package/shared/version-compare.d.ts +10 -0
  447. package/shared/version-compare.js +74 -0
  448. package/shared/whats-new.d.ts +31 -0
  449. package/shared/whats-new.js +83 -0
  450. package/shared/wsl.d.ts +10 -0
  451. package/shared/wsl.js +24 -0
@@ -0,0 +1,1004 @@
1
+ {
2
+ "schema": 1,
3
+ "built_at": "2026-10-28T19:26:12.783Z",
4
+ "source": {
5
+ "repo": "galaxyproject/orbit",
6
+ "commit": "ef233af63f27e2951c94598dd466520bc32c6612"
7
+ },
8
+ "licence": "CC-BY-4.0",
9
+ "lessons": [
10
+ {
11
+ "id": "data/downloaded-file-is-not-what-its-extension-says",
12
+ "type": "Lesson",
13
+ "title": "A supplementary-file download can return an HTML page saved under the expected filename",
14
+ "description": "A landing page, consent interstitial or bot-block answers with 200 and the client saves it as the requested name, so the parse failure surfaces several steps later.",
15
+ "tags": [
16
+ "download",
17
+ "supplementary-data",
18
+ "file-type",
19
+ "landing-page",
20
+ "data-acquisition",
21
+ "xlsx",
22
+ "gz",
23
+ "tsv",
24
+ "csv"
25
+ ],
26
+ "status": "draft",
27
+ "generated": {
28
+ "by": "human:loom-maintainers",
29
+ "at": "2026-09-30"
30
+ },
31
+ "stale_after": "2027-03-31",
32
+ "sources": [
33
+ {
34
+ "id": "loom#356"
35
+ },
36
+ {
37
+ "id": "loom#282"
38
+ }
39
+ ],
40
+ "kind": "source-quirk",
41
+ "stage": [
42
+ "data-acquisition"
43
+ ],
44
+ "trigger": {
45
+ "signatures": [],
46
+ "tools": [],
47
+ "mcp_tools": [],
48
+ "formats": [
49
+ "xlsx",
50
+ "gz",
51
+ "tsv",
52
+ "csv"
53
+ ],
54
+ "hosts": [
55
+ "doi.org",
56
+ "zenodo.org",
57
+ "figshare.com",
58
+ "static-content.springer.com",
59
+ "journals.plos.org",
60
+ "www.ncbi.nlm.nih.gov"
61
+ ],
62
+ "extensions": [
63
+ ".xlsx",
64
+ ".tsv.gz",
65
+ ".tsv",
66
+ ".csv",
67
+ ".gz"
68
+ ],
69
+ "step_keywords": [
70
+ "download",
71
+ "supplementary",
72
+ "fetch",
73
+ "wget",
74
+ "curl",
75
+ "doi",
76
+ "landing page"
77
+ ]
78
+ },
79
+ "cues": "Fetching a supplementary or data file from a journal, a repository landing page, or a DOI link.",
80
+ "applies_to": {
81
+ "versions": "n/a",
82
+ "tested": "local download of journal supplementary files"
83
+ },
84
+ "evidence": {
85
+ "symptom": "verified",
86
+ "cause": "hypothesized",
87
+ "outcome": "unvalidated",
88
+ "method": "the file was later found to be HTML or XML"
89
+ },
90
+ "graduated_to": [],
91
+ "upstream": [],
92
+ "supersedes": [],
93
+ "sections": {
94
+ "symptom": "An `.xlsx` or `.tsv.gz` will not parse, or parses into nonsense, several steps after it was\nfetched.",
95
+ "cause": "Likely: the URL was a landing page, a login or consent interstitial, or a bot-block response, and\nthe client saved the body under the requested name with a 200.",
96
+ "check_first": "Right after any download: file size, leading bytes (zip or gzip magic versus `<`), and\ncontent-type if available.",
97
+ "intervention": "Find the direct file URL, or have Galaxy fetch it server-side; if access is gated, tell the user\nrather than working around it.",
98
+ "validate": "The file opens as its claimed type and has the expected shape: sheets, columns, row count.",
99
+ "not_when": "The file is genuinely the right type and the parse error is about its contents."
100
+ }
101
+ },
102
+ {
103
+ "id": "galaxy-api/403-history-is-a-hard-stop",
104
+ "type": "Lesson",
105
+ "title": "\"History is not accessible by user\" means there is no data to reason from",
106
+ "description": "A 403 on the bound history means nothing about the job was ever read, so any explanation of the failure after that point is invented.",
107
+ "tags": [
108
+ "permissions",
109
+ "history",
110
+ "fabrication",
111
+ "galaxy-api",
112
+ "job-execution",
113
+ "result-interpretation"
114
+ ],
115
+ "status": "stable",
116
+ "generated": {
117
+ "by": "human:loom-maintainers",
118
+ "at": "2026-09-30"
119
+ },
120
+ "stale_after": "2027-03-31",
121
+ "sources": [
122
+ {
123
+ "id": "loom#367"
124
+ }
125
+ ],
126
+ "kind": "expectation",
127
+ "stage": [
128
+ "job-execution",
129
+ "result-interpretation"
130
+ ],
131
+ "trigger": {
132
+ "signatures": [
133
+ "History is not accessible by user"
134
+ ],
135
+ "tools": [],
136
+ "mcp_tools": [
137
+ "galaxy_get_history_contents"
138
+ ],
139
+ "formats": [],
140
+ "hosts": [],
141
+ "extensions": [],
142
+ "step_keywords": [
143
+ "history",
144
+ "why did it fail",
145
+ "job failure"
146
+ ]
147
+ },
148
+ "cues": "A resumed notebook is bound to a history that the current credentials do not own.",
149
+ "applies_to": {
150
+ "versions": "any",
151
+ "tested": "resumed notebook bound to a history owned by another account"
152
+ },
153
+ "evidence": {
154
+ "symptom": "verified",
155
+ "cause": "verified",
156
+ "outcome": "unvalidated",
157
+ "method": "transcript: a 403 followed by a fabricated explanation of a job failure"
158
+ },
159
+ "graduated_to": [
160
+ "loom system prompt no-fabrication rule plus evals"
161
+ ],
162
+ "upstream": [],
163
+ "supersedes": [],
164
+ "sections": {
165
+ "symptom": "Asked why a job failed, the agent gets a 403 on the history and answers anyway.",
166
+ "cause": "The notebook's bound history belongs to a different account or server than the current\ncredentials. Nothing about the job was ever read.",
167
+ "check_first": "Which account are the current credentials for? Is the bound history in that account's list?",
168
+ "intervention": "Report the access failure. Offer to look in the user's own recent histories instead.",
169
+ "validate": "Any explanation of a failure cites a job or dataset that was actually retrieved.",
170
+ "not_when": "Never; a 403 is always a hard stop for reasoning about that history."
171
+ }
172
+ },
173
+ {
174
+ "id": "galaxy-api/collection-into-single-dataset-input",
175
+ "type": "Lesson",
176
+ "title": "A collection handed to a single-dataset input is rejected; the answer is map-over, not \"the API cannot\"",
177
+ "description": "A 400 at submit when an hdca meets a single-dataset parameter means map-over was not requested, and the wrong conclusion is that collections cannot be used through the API.",
178
+ "tags": [
179
+ "collections",
180
+ "map-over",
181
+ "batch",
182
+ "galaxy-api",
183
+ "tool-parameterization"
184
+ ],
185
+ "status": "stable",
186
+ "generated": {
187
+ "by": "human:loom-maintainers",
188
+ "at": "2026-09-30"
189
+ },
190
+ "stale_after": "2027-03-31",
191
+ "sources": [
192
+ {
193
+ "id": "loom#208"
194
+ }
195
+ ],
196
+ "kind": "choice",
197
+ "stage": [
198
+ "tool-parameterization"
199
+ ],
200
+ "trigger": {
201
+ "signatures": [
202
+ "supplied to single input dataset parameter"
203
+ ],
204
+ "tools": [],
205
+ "mcp_tools": [
206
+ "galaxy_run_tool"
207
+ ],
208
+ "formats": [],
209
+ "hosts": [],
210
+ "extensions": [],
211
+ "step_keywords": [
212
+ "collection",
213
+ "map over",
214
+ "batch",
215
+ "per sample"
216
+ ]
217
+ },
218
+ "cues": "A collection is being passed where the tool's input template says one dataset.",
219
+ "applies_to": {
220
+ "versions": "any",
221
+ "tested": "featureCounts, Filter1 via galaxy-mcp run_tool"
222
+ },
223
+ "evidence": {
224
+ "symptom": "verified",
225
+ "cause": "verified",
226
+ "outcome": "validated",
227
+ "method": "the batch wrapper form was accepted by Galaxy and produced a mapped-over output collection"
228
+ },
229
+ "graduated_to": [
230
+ "loom context.ts Galaxy block map-over hint"
231
+ ],
232
+ "upstream": [
233
+ "galaxy-mcp actionable-error issue"
234
+ ],
235
+ "supersedes": [],
236
+ "sections": {
237
+ "symptom": "400 at submit when an `hdca` is passed where the tool expects one dataset. Observed follow-on: the\nagent concludes collections cannot be built or used through the API, which is false.",
238
+ "cause": "The input is a single-dataset parameter. Galaxy runs such a tool over a collection only when asked\nto map over it.",
239
+ "check_first": "Is the input really single-dataset per the tool's input template, and is the thing being passed a\ncollection? If the collection is `list:paired` and the tool wants one sample, map-over is still the\nanswer but the element type must match.",
240
+ "intervention": "Submit the input in batch form: `{batch: true, values: [{src: \"hdca\", id: <collection id>}]}`.",
241
+ "validate": "The result is a collection with one element per input element, and element identifiers are\npreserved.",
242
+ "not_when": "The tool has a genuine multi-dataset or collection input -- pass the collection directly there."
243
+ }
244
+ },
245
+ {
246
+ "id": "galaxy-api/connectedvalue-in-command-line",
247
+ "type": "Lesson",
248
+ "title": "\"ConnectedValue object at 0x\" in a command line means an optional workflow parameter was left unset",
249
+ "description": "Older Galaxy serialized the placeholder object's repr into the command line when a connected optional parameter_input had no value, so the step can fail or silently succeed wrong.",
250
+ "tags": [
251
+ "workflows",
252
+ "parameter-input",
253
+ "command-line",
254
+ "galaxy-api",
255
+ "tool-parameterization",
256
+ "job-execution"
257
+ ],
258
+ "status": "stable",
259
+ "generated": {
260
+ "by": "human:loom-maintainers",
261
+ "at": "2026-09-30"
262
+ },
263
+ "stale_after": "2027-03-31",
264
+ "sources": [
265
+ {
266
+ "id": "loom#186"
267
+ },
268
+ {
269
+ "id": "galaxy#21994"
270
+ }
271
+ ],
272
+ "kind": "pitfall",
273
+ "stage": [
274
+ "tool-parameterization",
275
+ "job-execution"
276
+ ],
277
+ "trigger": {
278
+ "signatures": [
279
+ "workflow_utils.ConnectedValue object at 0x"
280
+ ],
281
+ "tools": [],
282
+ "mcp_tools": [
283
+ "galaxy_invoke_workflow"
284
+ ],
285
+ "formats": [],
286
+ "hosts": [],
287
+ "extensions": [],
288
+ "step_keywords": [
289
+ "workflow",
290
+ "parameter input",
291
+ "optional parameter",
292
+ "invoke"
293
+ ]
294
+ },
295
+ "cues": "A workflow with optional parameter inputs is invoked against a server older than the upstream fix.",
296
+ "applies_to": {
297
+ "versions": "Galaxy older than 25.1.2; fixed upstream",
298
+ "tested": "fastp inside an invoked workflow"
299
+ },
300
+ "evidence": {
301
+ "symptom": "verified",
302
+ "cause": "verified",
303
+ "outcome": "unvalidated",
304
+ "method": "the error string was quoted from the failing job and the upstream fix was identified"
305
+ },
306
+ "graduated_to": [
307
+ "galaxy-skills galaxy-mcp-reference gotchas note"
308
+ ],
309
+ "upstream": [
310
+ "galaxy#21994"
311
+ ],
312
+ "supersedes": [],
313
+ "sections": {
314
+ "symptom": "A workflow step fails, or worse succeeds, with a tool argument containing the text\n`...ConnectedValue object at 0x...`. With fastp it surfaced as an invalid adapter sequence.",
315
+ "cause": "An optional `parameter_input` workflow step was connected but given no value; older Galaxy\nserialized the placeholder object's repr into the command line.",
316
+ "check_first": "Does the workflow have optional parameter inputs, per the workflow details? Is the server older\nthan the fix? Inspect the failed job's command line for the signature.",
317
+ "intervention": "Pass an explicit empty value for every optional parameter input on invocation.",
318
+ "validate": "Re-inspect the command line of the rerun job: the signature is gone AND the argument is absent or\nempty, not replaced by some other junk.",
319
+ "not_when": "The server has the upstream fix. Keep the lesson and narrow the version range -- older installs\nstill need it."
320
+ }
321
+ },
322
+ {
323
+ "id": "galaxy-api/hid-is-not-an-id",
324
+ "type": "Lesson",
325
+ "title": "The number shown in the history panel is not a dataset id",
326
+ "description": "Users say \"dataset 28\", which is the hid; the API wants the encoded id, and run_tool reports the mismatch as a misleading missing-parameter error.",
327
+ "tags": [
328
+ "hid",
329
+ "encoded-id",
330
+ "history",
331
+ "galaxy-api",
332
+ "data-acquisition",
333
+ "tool-parameterization"
334
+ ],
335
+ "status": "stable",
336
+ "generated": {
337
+ "by": "human:loom-maintainers",
338
+ "at": "2026-09-30"
339
+ },
340
+ "stale_after": "2027-03-31",
341
+ "sources": [
342
+ {
343
+ "id": "loom#348"
344
+ },
345
+ {
346
+ "id": "loom#375"
347
+ }
348
+ ],
349
+ "kind": "pitfall",
350
+ "stage": [
351
+ "data-acquisition",
352
+ "tool-parameterization"
353
+ ],
354
+ "trigger": {
355
+ "signatures": [
356
+ "Invalid id length, must be multiple of 16",
357
+ "Required parameter(s) kwd not provided"
358
+ ],
359
+ "tools": [],
360
+ "mcp_tools": [
361
+ "galaxy_get_dataset_details",
362
+ "galaxy_run_tool"
363
+ ],
364
+ "formats": [],
365
+ "hosts": [],
366
+ "extensions": [],
367
+ "step_keywords": [
368
+ "dataset number",
369
+ "hid",
370
+ "dataset id"
371
+ ]
372
+ },
373
+ "cues": "A short numeric identifier taken from what the user said is being passed where the API wants an encoded id.",
374
+ "applies_to": {
375
+ "versions": "any",
376
+ "tested": "galaxy-mcp get_dataset_details, run_tool with cat1"
377
+ },
378
+ "evidence": {
379
+ "symptom": "verified",
380
+ "cause": "verified",
381
+ "outcome": "validated",
382
+ "method": "reproduced; resolving the hid to the encoded id fixed it"
383
+ },
384
+ "graduated_to": [
385
+ "galaxy-skills galaxy-mcp-reference gotchas note"
386
+ ],
387
+ "upstream": [],
388
+ "supersedes": [],
389
+ "sections": {
390
+ "symptom": "An id-length error, or -- from run_tool -- a misleading required-parameter error that says nothing\nabout ids.",
391
+ "cause": "Users say \"dataset 28\"; that is the `hid`. The API wants the encoded `id`.",
392
+ "check_first": "Is the id being passed short and numeric?",
393
+ "intervention": "List the history contents and resolve the hid to an id. Confirm the name matches what the user\nmeant.",
394
+ "validate": "The call succeeds and the returned dataset's name and hid are the intended ones.",
395
+ "not_when": "The id is already a 16-hex-multiple string -- then the missing-parameter error has another cause."
396
+ }
397
+ },
398
+ {
399
+ "id": "galaxy-api/invoke-workflow-inputs-not-params",
400
+ "type": "Lesson",
401
+ "title": "Workflow input values, scalars included, go in `inputs`; `params` only overrides tool steps",
402
+ "description": "A validation error pointing into parameters means the value is in the wrong slot, not under the wrong key, and retrying key forms is the trap that follows.",
403
+ "tags": [
404
+ "workflows",
405
+ "invoke",
406
+ "inputs",
407
+ "galaxy-api",
408
+ "tool-parameterization"
409
+ ],
410
+ "status": "stable",
411
+ "generated": {
412
+ "by": "human:loom-maintainers",
413
+ "at": "2026-09-30"
414
+ },
415
+ "stale_after": "2027-03-31",
416
+ "sources": [
417
+ {
418
+ "id": "loom#392"
419
+ }
420
+ ],
421
+ "kind": "pitfall",
422
+ "stage": [
423
+ "tool-parameterization"
424
+ ],
425
+ "trigger": {
426
+ "signatures": [
427
+ "Input should be a valid dictionary"
428
+ ],
429
+ "tools": [],
430
+ "mcp_tools": [
431
+ "galaxy_invoke_workflow"
432
+ ],
433
+ "formats": [],
434
+ "hosts": [],
435
+ "extensions": [],
436
+ "step_keywords": [
437
+ "invoke",
438
+ "workflow",
439
+ "inputs",
440
+ "params",
441
+ "input template"
442
+ ]
443
+ },
444
+ "cues": "A workflow invocation is being retried with different key forms for the same value.",
445
+ "applies_to": {
446
+ "versions": "unknown",
447
+ "tested": "galaxy-mcp invoke_workflow against a multi-sample IWC workflow"
448
+ },
449
+ "evidence": {
450
+ "symptom": "verified",
451
+ "cause": "hypothesized",
452
+ "outcome": "validated",
453
+ "method": "the same values succeeded first try when moved to inputs per the input template"
454
+ },
455
+ "graduated_to": [
456
+ "galaxy-mcp get_workflow_input_template plus invoke_workflow preflight"
457
+ ],
458
+ "upstream": [
459
+ "galaxy-mcp#55"
460
+ ],
461
+ "supersedes": [],
462
+ "sections": {
463
+ "symptom": "Invocation rejected with a validation error pointing into `parameters`. Observed: a model retried\ntwo dozen times varying the key -- label, step index, uuid -- while the real problem was the slot.",
464
+ "cause": "Inferred, not checked against Galaxy source: every workflow input -- datasets, collections and\nscalar parameter inputs alike -- belongs in `inputs`. `params` overrides tool parameters on\nnon-input steps and its values are dicts.",
465
+ "check_first": "Was the workflow input template fetched? Does the failing payload put a scalar under `params`?",
466
+ "intervention": "Fetch the input template and fill it in as returned. Do not retry with a different key form; if the\nsecond attempt fails the same way, stop and re-read the template.",
467
+ "validate": "The invocation is accepted and its recorded inputs match what was intended.",
468
+ "not_when": "You really are overriding a tool step's parameter -- then `params` with a dict value is right."
469
+ }
470
+ },
471
+ {
472
+ "id": "galaxy-api/repeat-param-pipe-keys",
473
+ "type": "Lesson",
474
+ "title": "Repeat-group tool params written with underscores are accepted but silently mis-applied",
475
+ "description": "Galaxy's flat parameter form addresses repeat members with a pipe; an underscore key is ignored rather than rejected, so the repeat falls back to defaults and the job still reports ok.",
476
+ "tags": [
477
+ "repeat-params",
478
+ "tool-parameters",
479
+ "silent-failure",
480
+ "galaxy-api",
481
+ "tool-parameterization",
482
+ "result-interpretation"
483
+ ],
484
+ "status": "stable",
485
+ "generated": {
486
+ "by": "human:loom-maintainers",
487
+ "at": "2026-09-30"
488
+ },
489
+ "stale_after": "2027-03-31",
490
+ "sources": [
491
+ {
492
+ "id": "loom#285"
493
+ },
494
+ {
495
+ "id": "loom#295"
496
+ }
497
+ ],
498
+ "kind": "pitfall",
499
+ "stage": [
500
+ "tool-parameterization",
501
+ "result-interpretation"
502
+ ],
503
+ "trigger": {
504
+ "signatures": [],
505
+ "tools": [
506
+ "datamash_ops"
507
+ ],
508
+ "mcp_tools": [
509
+ "galaxy_run_tool"
510
+ ],
511
+ "formats": [],
512
+ "hosts": [],
513
+ "extensions": [],
514
+ "step_keywords": [
515
+ "repeat",
516
+ "operations",
517
+ "aggregate",
518
+ "group by"
519
+ ]
520
+ },
521
+ "cues": "Tool inputs contain keys shaped like name underscore number underscore field.",
522
+ "applies_to": {
523
+ "versions": "unknown",
524
+ "tested": "Datamash via galaxy-mcp run_tool"
525
+ },
526
+ "evidence": {
527
+ "symptom": "verified",
528
+ "cause": "hypothesized",
529
+ "outcome": "unvalidated",
530
+ "method": "a wrong aggregate was observed; the pipe-form keys produced the expected one"
531
+ },
532
+ "graduated_to": [
533
+ "loom docs repeat-parameter note",
534
+ "galaxy-mcp tool input template"
535
+ ],
536
+ "upstream": [
537
+ "galaxy-mcp#52"
538
+ ],
539
+ "supersedes": [],
540
+ "sections": {
541
+ "symptom": "A tool with a repeat block runs to `ok`, but the result reflects default or wrong repeat values --\na different operation or column than requested. No error anywhere.",
542
+ "cause": "Hypothesized: Galaxy's flat parameter form addresses repeat members as `block_0|field`. A key like\n`block_0_field` is not rejected; it is ignored, and the repeat falls back to defaults.",
543
+ "check_first": "Look at the inputs actually submitted. Any repeat member addressed with an underscore instead of a\npipe? Compare the job's recorded parameters with what was intended.",
544
+ "intervention": "Use the pipe form, for example `operations_0|op_name`, preferably taken verbatim from the tool's\ninput template rather than constructed by hand.",
545
+ "validate": "Read back the job's parameters and confirm the repeat values are the requested ones. Spot-check one\noutput value by hand.",
546
+ "not_when": "The tool errored at submit -- that is a different problem. Conditionals use the same pipe\naddressing but fail differently."
547
+ }
548
+ },
549
+ {
550
+ "id": "galaxy-api/run-tool-returns-on-submit",
551
+ "type": "Lesson",
552
+ "title": "A successful run_tool response means queued, not finished",
553
+ "description": "Single-tool submission returns at queue time and there is no invocation object to poll, so nothing prompts the second look before the result is reported.",
554
+ "tags": [
555
+ "job-states",
556
+ "polling",
557
+ "async",
558
+ "galaxy-api",
559
+ "job-execution"
560
+ ],
561
+ "status": "stable",
562
+ "generated": {
563
+ "by": "human:loom-maintainers",
564
+ "at": "2026-09-30"
565
+ },
566
+ "stale_after": "2027-03-31",
567
+ "sources": [
568
+ {
569
+ "id": "loom#210"
570
+ },
571
+ {
572
+ "id": "loom#281"
573
+ },
574
+ {
575
+ "id": "loom#293"
576
+ }
577
+ ],
578
+ "kind": "expectation",
579
+ "stage": [
580
+ "job-execution"
581
+ ],
582
+ "trigger": {
583
+ "signatures": [],
584
+ "tools": [],
585
+ "mcp_tools": [
586
+ "galaxy_run_tool",
587
+ "galaxy_run_user_tool"
588
+ ],
589
+ "formats": [],
590
+ "hosts": [],
591
+ "extensions": [],
592
+ "step_keywords": [
593
+ "run tool",
594
+ "submit",
595
+ "job",
596
+ "complete",
597
+ "done"
598
+ ]
599
+ },
600
+ "cues": "About to report a tool run as done.",
601
+ "applies_to": {
602
+ "versions": "any",
603
+ "tested": "galaxy-mcp"
604
+ },
605
+ "evidence": {
606
+ "symptom": "verified",
607
+ "cause": "verified",
608
+ "outcome": "validated",
609
+ "method": "the job was later found in an error state after the agent had reported success"
610
+ },
611
+ "graduated_to": [
612
+ "loom async job poller",
613
+ "loom job-status hint"
614
+ ],
615
+ "upstream": [],
616
+ "supersedes": [],
617
+ "sections": {
618
+ "symptom": "The agent reports an analysis step complete; the job is still running or has since errored.",
619
+ "cause": "Single-tool submission returns at queue time. Unlike a workflow invocation there is no invocation\nobject to poll, so nothing prompts a second look.",
620
+ "check_first": "Has the job reached a terminal state? `ok` is success; `error`, `failed` and `deleted` are not;\n`paused` and `waiting` are not terminal.",
621
+ "intervention": "Poll the job to a terminal state before building on its outputs or reporting it.",
622
+ "validate": "Terminal `ok`, and the expected outputs exist and are non-empty.",
623
+ "not_when": "Never. Caveat: reaching the job via an output dataset does not work for jobs with no outputs,\ncollection-only outputs, or map-over runs where one call makes many jobs."
624
+ }
625
+ },
626
+ {
627
+ "id": "galaxy-tools/reference-index-not-on-server",
628
+ "type": "Lesson",
629
+ "title": "A tool's built-in reference option is useless on a server that has no indexes for it",
630
+ "description": "The cached-reference branch of a tool offers nothing when the server's data table is empty, and through a workflow the invocation validates and every sample fails minutes later.",
631
+ "tags": [
632
+ "reference-genome",
633
+ "data-tables",
634
+ "server-dependent",
635
+ "star",
636
+ "tool-parameterization"
637
+ ],
638
+ "status": "draft",
639
+ "generated": {
640
+ "by": "human:loom-maintainers",
641
+ "at": "2026-09-30"
642
+ },
643
+ "stale_after": "2027-03-31",
644
+ "sources": [
645
+ {
646
+ "id": "loom#198"
647
+ },
648
+ {
649
+ "id": "galaxy-mcp#62"
650
+ }
651
+ ],
652
+ "kind": "choice",
653
+ "stage": [
654
+ "tool-parameterization"
655
+ ],
656
+ "trigger": {
657
+ "signatures": [
658
+ "requires a value, but no legal values defined"
659
+ ],
660
+ "tools": [
661
+ "rna_starsolo",
662
+ "rna_star"
663
+ ],
664
+ "mcp_tools": [],
665
+ "formats": [],
666
+ "hosts": [],
667
+ "extensions": [
668
+ ".fasta",
669
+ ".fa",
670
+ ".gtf"
671
+ ],
672
+ "step_keywords": [
673
+ "reference",
674
+ "genome",
675
+ "index",
676
+ "built-in",
677
+ "cached",
678
+ "genomedir"
679
+ ]
680
+ },
681
+ "cues": "The tool offers a choice between a cached or built-in reference and one from the history.",
682
+ "applies_to": {
683
+ "versions": "any; depends on the server's data tables",
684
+ "tested": "STARsolo on a server with no STAR indexes"
685
+ },
686
+ "evidence": {
687
+ "symptom": "verified",
688
+ "cause": "verified",
689
+ "outcome": "unvalidated",
690
+ "method": "the 400 at submit was quoted, and the server was confirmed to have zero indexes for the tool"
691
+ },
692
+ "graduated_to": [],
693
+ "upstream": [
694
+ "galaxy-mcp#62"
695
+ ],
696
+ "supersedes": [],
697
+ "sections": {
698
+ "symptom": "`Parameter 'genomeDir': requires a value, but no legal values defined` at submit. Through a\nworkflow it is worse: the invocation validates, and the failure shows up minutes later as a bare\ntool error on every sample.",
699
+ "cause": "The use-a-built-in-index branch of the tool was selected, and this server's data table for that\ntool is empty.",
700
+ "check_first": "Does the select parameter for the built-in reference have any options on this server?",
701
+ "intervention": "Switch to the history-reference branch and supply a FASTA, and an annotation where the tool needs\none, or run on a server that has the index.",
702
+ "validate": "The job reaches `ok`, and the mapping rate is plausible for the organism -- a wrong reference also\n\"works\".",
703
+ "not_when": "The select has options and the chosen value is not among them -- that is a wrong-value problem."
704
+ }
705
+ },
706
+ {
707
+ "id": "reproduction/input-population-mismatch",
708
+ "type": "Lesson",
709
+ "title": "A faithful rerun can still be wrong when a normalizing step was fed a pre-filtered subset",
710
+ "description": "A statistic normalized over its input is wrong if the input was hand-picked, and the rerun reproduces the error exactly, so provenance alone will never catch it.",
711
+ "tags": [
712
+ "reproduction",
713
+ "normalization",
714
+ "denominator",
715
+ "audit",
716
+ "data-acquisition",
717
+ "tool-parameterization",
718
+ "result-interpretation"
719
+ ],
720
+ "status": "draft",
721
+ "generated": {
722
+ "by": "human:loom-maintainers",
723
+ "at": "2026-09-30"
724
+ },
725
+ "stale_after": "2027-03-31",
726
+ "sources": [],
727
+ "kind": "reproduction",
728
+ "stage": [
729
+ "data-acquisition",
730
+ "tool-parameterization",
731
+ "result-interpretation"
732
+ ],
733
+ "trigger": {
734
+ "signatures": [],
735
+ "tools": [],
736
+ "mcp_tools": [],
737
+ "formats": [],
738
+ "hosts": [],
739
+ "extensions": [],
740
+ "step_keywords": [
741
+ "reproduce",
742
+ "reproducing",
743
+ "reproduction",
744
+ "posterior",
745
+ "fdr",
746
+ "enrichment",
747
+ "percentile",
748
+ "rank",
749
+ "normalize",
750
+ "credible set"
751
+ ]
752
+ },
753
+ "cues": "Reproducing a published analysis where a step computes a normalized quantity -- posterior, FDR, enrichment, rank, percentile.",
754
+ "applies_to": {
755
+ "versions": "n/a",
756
+ "tested": "one audited reproduction of a fine-mapping analysis"
757
+ },
758
+ "evidence": {
759
+ "symptom": "verified",
760
+ "cause": "verified",
761
+ "outcome": "unvalidated",
762
+ "method": "traced by reading the job's actual inputs; the denominator differed from the full set"
763
+ },
764
+ "graduated_to": [],
765
+ "upstream": [],
766
+ "supersedes": [],
767
+ "sections": {
768
+ "symptom": "Results are close to the paper's but not equal: a set has a few members more or fewer, and every\ndownstream value drifts by a few percent in the same direction.",
769
+ "cause": "A statistic normalized over its input, here posterior probabilities, was computed over a\nhand-picked subset. The tool ran correctly. Rerunning reproduces the error, so provenance alone\nwill not catch it.",
770
+ "check_first": "For every normalizing step: how many records went in, and how many does the method assume? Compare\nagainst the paper's stated N.",
771
+ "intervention": "Feed the step the full population; filter afterwards.",
772
+ "validate": "Input count matches the method's stated population, and the set membership matches the paper.",
773
+ "not_when": "The step's output for one record does not depend on the others."
774
+ }
775
+ },
776
+ {
777
+ "id": "reproduction/methods-text-vs-executed-parameters",
778
+ "type": "Lesson",
779
+ "title": "When a rerun cannot find what the paper reports, compare the Methods parameters to the executed ones",
780
+ "description": "A missing peak or row, or a uniform few-percent drift with ranks intact, is usually a window, threshold, top-N or version difference rather than a failed reproduction.",
781
+ "tags": [
782
+ "reproduction",
783
+ "parameters",
784
+ "versions",
785
+ "methods",
786
+ "metadata-reconciliation",
787
+ "result-interpretation"
788
+ ],
789
+ "status": "draft",
790
+ "generated": {
791
+ "by": "human:loom-maintainers",
792
+ "at": "2026-09-30"
793
+ },
794
+ "stale_after": "2027-03-31",
795
+ "sources": [],
796
+ "kind": "reproduction",
797
+ "stage": [
798
+ "metadata-reconciliation",
799
+ "result-interpretation"
800
+ ],
801
+ "trigger": {
802
+ "signatures": [],
803
+ "tools": [],
804
+ "mcp_tools": [],
805
+ "formats": [],
806
+ "hosts": [],
807
+ "extensions": [],
808
+ "step_keywords": [
809
+ "reproduce",
810
+ "reproducing",
811
+ "reproduction",
812
+ "methods",
813
+ "paper",
814
+ "missing",
815
+ "not found",
816
+ "threshold",
817
+ "window",
818
+ "top-n",
819
+ "version"
820
+ ]
821
+ },
822
+ "cues": "Reproducing a published analysis where a reported feature, row or peak is absent from the rerun.",
823
+ "applies_to": {
824
+ "versions": "n/a",
825
+ "tested": "one audited reproduction"
826
+ },
827
+ "evidence": {
828
+ "symptom": "verified",
829
+ "cause": "verified",
830
+ "outcome": "unvalidated",
831
+ "method": "each discrepancy traced to a specific parameter or version difference"
832
+ },
833
+ "graduated_to": [],
834
+ "upstream": [],
835
+ "supersedes": [],
836
+ "sections": {
837
+ "symptom": "A table row, peak or feature from the paper is not in the rerun's output at all; or scores are\nsystematically a few percent off with ranks preserved.",
838
+ "cause": "Four observed varieties: a window or range parameter narrower than the Methods describe, so the\nfeature lies outside what was scanned; a summary step's top-N or threshold dropping it; a tool\nrevision changing output columns; a model or tool version change shifting values uniformly.",
839
+ "check_first": "Tabulate Methods-stated versus executed values for windows, thresholds, top-N limits and versions.\nIs the missing item outside a range or below a cutoff? Is the drift uniform with ranks intact?",
840
+ "intervention": "Rerun with the Methods' parameters if they differ. If versions differ and cannot be matched, report\nthe drift as version drift, with its size, rather than as a failed reproduction.",
841
+ "validate": "The missing item appears under the Methods' parameters, or its absence is explained by a named\nparameter. Say which.",
842
+ "not_when": "Parameters and versions match and the result still differs -- that is a real discrepancy; report\nit."
843
+ }
844
+ },
845
+ {
846
+ "id": "stats/de-contrast-direction-and-sample-labels",
847
+ "type": "Lesson",
848
+ "title": "Fold-change signs read backwards and sample labels drift, with no error anywhere",
849
+ "description": "Factor-level order decides numerator and denominator, and upstream steps rewrite sample labels, so a DE result can be fully reversed or mis-assigned and still look clean.",
850
+ "tags": [
851
+ "differential-expression",
852
+ "design-table",
853
+ "contrast",
854
+ "deseq2",
855
+ "metadata-reconciliation",
856
+ "result-interpretation",
857
+ "tabular"
858
+ ],
859
+ "status": "draft",
860
+ "generated": {
861
+ "by": "human:loom-maintainers",
862
+ "at": "2026-09-30"
863
+ },
864
+ "stale_after": "2027-03-31",
865
+ "sources": [
866
+ {
867
+ "id": "loom#288"
868
+ },
869
+ {
870
+ "id": "loom#289"
871
+ },
872
+ {
873
+ "id": "loom#321"
874
+ }
875
+ ],
876
+ "kind": "pitfall",
877
+ "stage": [
878
+ "metadata-reconciliation",
879
+ "result-interpretation"
880
+ ],
881
+ "trigger": {
882
+ "signatures": [],
883
+ "tools": [
884
+ "deseq2",
885
+ "edger",
886
+ "limma_voom"
887
+ ],
888
+ "mcp_tools": [],
889
+ "formats": [
890
+ "tabular"
891
+ ],
892
+ "hosts": [],
893
+ "extensions": [],
894
+ "step_keywords": [
895
+ "design",
896
+ "factor",
897
+ "contrast",
898
+ "condition",
899
+ "log fold change",
900
+ "logfc",
901
+ "differential expression"
902
+ ]
903
+ },
904
+ "cues": "Building a design or factor table, and reporting log fold changes.",
905
+ "applies_to": {
906
+ "versions": "any",
907
+ "tested": "DESeq2"
908
+ },
909
+ "evidence": {
910
+ "symptom": "reported",
911
+ "cause": "verified",
912
+ "outcome": "unvalidated",
913
+ "method": "user reports across one analysis: duplicate labels, unstated sign convention, design that did not match the data"
914
+ },
915
+ "graduated_to": [],
916
+ "upstream": [],
917
+ "supersedes": [],
918
+ "sections": {
919
+ "symptom": "Fold-change signs read backwards; duplicate or dropped sample labels; a multi-sample design\napplied to data that was actually pooled.",
920
+ "cause": "Factor-level order decides numerator versus denominator and is easy to get implicitly. Sample\nlabels get rewritten by upstream steps. Nobody compared the design table to the data before\nrunning.",
921
+ "check_first": "Before running: one row per sample, labels unique, every sample in the design is in the data and\nvice versa, replicates per condition as the design claims.",
922
+ "intervention": "State the contrast in words -- treated relative to control, positive means up in treated -- in the\nplan and again next to the results.",
923
+ "validate": "Pick a gene with a known direction and check its sign.",
924
+ "not_when": "Never; it holds for any two-group comparison."
925
+ }
926
+ },
927
+ {
928
+ "id": "stats/na-coerced-to-zero-in-filters",
929
+ "type": "Lesson",
930
+ "title": "Numeric filters in awk and friends treat \"NA\" as 0, so missing p-values pass a significance cutoff",
931
+ "description": "DESeq2 writes NA for filtered genes; string-to-number coercion turns NA into 0, which is below any cutoff, so the significant count is inflated with no error.",
932
+ "tags": [
933
+ "awk",
934
+ "filtering",
935
+ "p-value",
936
+ "deseq2",
937
+ "result-interpretation",
938
+ "tabular"
939
+ ],
940
+ "status": "draft",
941
+ "generated": {
942
+ "by": "human:loom-maintainers",
943
+ "at": "2026-09-30"
944
+ },
945
+ "stale_after": "2027-03-31",
946
+ "sources": [
947
+ {
948
+ "id": "loom#355"
949
+ }
950
+ ],
951
+ "kind": "pitfall",
952
+ "stage": [
953
+ "result-interpretation"
954
+ ],
955
+ "trigger": {
956
+ "signatures": [],
957
+ "tools": [
958
+ "deseq2",
959
+ "Filter1"
960
+ ],
961
+ "mcp_tools": [],
962
+ "formats": [
963
+ "tabular"
964
+ ],
965
+ "hosts": [],
966
+ "extensions": [
967
+ ".tabular",
968
+ ".tsv"
969
+ ],
970
+ "step_keywords": [
971
+ "filter",
972
+ "significant",
973
+ "padj",
974
+ "p-value",
975
+ "fdr",
976
+ "threshold",
977
+ "awk"
978
+ ]
979
+ },
980
+ "cues": "Thresholding a p-value or padj column with awk, cut/sort, or a Galaxy filter expression.",
981
+ "applies_to": {
982
+ "versions": "any",
983
+ "tested": "awk on DESeq2 output"
984
+ },
985
+ "evidence": {
986
+ "symptom": "verified",
987
+ "cause": "verified",
988
+ "outcome": "validated",
989
+ "method": "deterministic: NA plus 0 is 0 in awk; the count dropped to the expected range once NA rows were excluded"
990
+ },
991
+ "graduated_to": [],
992
+ "upstream": [],
993
+ "supersedes": [],
994
+ "sections": {
995
+ "symptom": "Implausibly many significant genes -- several-fold more than expected. Nothing errors.",
996
+ "cause": "DESeq2 writes `NA` for genes removed by independent filtering or outlier detection.\nString-to-number coercion turns `NA` into 0, which is below any cutoff.",
997
+ "check_first": "Count rows where the tested column is literally `NA`. If that count is close to the excess, this\nis it.",
998
+ "intervention": "Exclude NA explicitly before comparing, or do the filter in a language with real missing-value\nsemantics.",
999
+ "validate": "Significant count equals rows passing the cutoff among non-NA rows. State both numbers.",
1000
+ "not_when": "The table has no missing values in that column."
1001
+ }
1002
+ }
1003
+ ]
1004
+ }