@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,74 @@
1
+ ---
2
+ name: validate-galaxy-workflow
3
+ description: "Run terminal gxwf validation on an assembled Galaxy workflow and classify workflow-level failures."
4
+ ---
5
+
6
+ # validate-galaxy-workflow
7
+
8
+ Follow the procedure below and use the artifact/reference sections as the runtime contract.
9
+
10
+ ## When To Use
11
+
12
+ - Run terminal gxwf validation on an assembled Galaxy workflow and classify workflow-level failures.
13
+
14
+ ## Inputs
15
+
16
+ - No upstream artifact inputs declared. See the procedure for user-supplied runtime inputs.
17
+
18
+ ## Outputs
19
+
20
+ - Write artifact `galaxy-workflow-validation-result` as `galaxy-workflow-validation-result.json`. Format: `json`. Terminal gxwf validation handoff: the exact command run, a pass/fail/not-run status, the classified workflow-level diagnostics, and the residual runtime risks static validation cannot settle.
21
+
22
+ ## Required Tools
23
+
24
+ - **`gxwf`** (gxwf). `npm install -g '@galaxy-tool-util/cli@^1.8.1'`.
25
+ Ephemeral run: `npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf`.
26
+ Check: `gxwf --help | grep -q draft-validate`.
27
+ Docs: https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli
28
+
29
+ ## Load Upfront
30
+
31
+ - None declared.
32
+
33
+ ## Load On Demand
34
+
35
+ - `references/cli/validate.json`: CLI command reference packaged as a sidecar. Validate the assembled gxformat2 workflow before runtime testing. Use when: after all Galaxy steps and workflow tests have been assembled.
36
+ - `references/notes/galaxy-workflow-invocation-failure-reference.md`: Research note copied verbatim into the bundle. Keep static workflow validation findings distinct from Galaxy invocation/runtime failure surfaces. Use when: a workflow passes gxwf validation but still has likely runtime risks around invocation scheduling, outputs, conditionals, or collection population.
37
+ - `references/notes/galaxy-workflow-testability-design.md`: Research note copied verbatim into the bundle. Classify validation or pre-test findings that indicate missing labels, omitted workflow outputs, or untestable checkpoint structure. Use when: terminal validation passes but workflow-level outputs, labels, or collection shapes look likely to break future workflow tests.
38
+
39
+ ## Validation
40
+
41
+ - None declared.
42
+
43
+ ## Procedure
44
+
45
+ Validate the assembled Galaxy workflow before runtime testing. The skill owns the terminal validation pass: run gxwf validate, classify workflow-level diagnostics, and route failures back to the responsible authoring phase when possible.
46
+
47
+ This is separate from advance-galaxy-draft-step (which runs `gxwf draft-validate --concrete` inside the per-step loop) because terminal validation no longer has only one fresh step in scope and should reason over cross-step workflow structure.
48
+
49
+ ### Emit the result
50
+
51
+ Write `galaxy-workflow-validation-result.json` on every run — clean or failing — so a downstream reviewer can cite what was actually checked rather than re-deriving it:
52
+
53
+ - `command` — the exact gxwf validate invocation, including flags (prefer `--json`);
54
+ - `workflow_path` — the file validated;
55
+ - `status` — `pass`, `fail`, or `not-run`, with a `not_run_reason` whenever validation could not execute;
56
+ - `diagnostics[]` — one entry per finding: severity, message, the step or field it addresses, and the authoring phase it routes back to;
57
+ - `residual_runtime_risks[]` — for a clean run, the risks static validation cannot settle and the runtime artifact that would prove or disprove each.
58
+
59
+ A `not-run` status is never reported as a pass.
60
+
61
+ ## Feedback Mode
62
+
63
+ - Feedback mode is off unless the caller explicitly enables `--feedback` or supplies a feedback-ledger path.
64
+ - When enabled, read `_feedback.md` before doing the work and use its registered `foundry-feedback.ledger.yml` protocol.
65
+ - Preserve harness-owned run and phase state. Append only concrete observations about a canonical Foundry source asset or a related project that this run showed to be at fault; do not put ordinary workflow requirements in this ledger.
66
+ - Before reporting completion, make one explicit pass over the work you just did. Do not ask yourself whether anything was unclear — recall what happened: where you guessed at something the instructions should have settled, needed information this bundle does not carry, hit an instruction that contradicted another or contradicted the artifacts in front of you, used a packaged reference that did not cover your case, or did something the procedure never describes.
67
+ - Append an entry for each such event that clears the protocol's bar. If none do, append nothing and report `no feedback` explicitly. Silence and a clean pass are not the same thing, and nothing downstream can tell them apart unless you say which one it was.
68
+ - Pass the same ledger path to any subagent used for this work, and merge updates serially so one writer cannot overwrite another.
69
+
70
+ ## Runtime Notes
71
+
72
+ - Do not read Foundry source files at runtime; use only files packaged in this skill bundle and user-supplied artifacts.
73
+ - Preserve declared artifact filenames unless the user or harness supplies explicit paths.
74
+ - Carry unresolved assumptions into the output artifact instead of silently inventing missing source evidence.
@@ -0,0 +1,71 @@
1
+ {
2
+ "provenance_schema_version": 4,
3
+ "cast_target": "claude",
4
+ "mold": {
5
+ "name": "validate-galaxy-workflow",
6
+ "path": "content/molds/validate-galaxy-workflow/index.md",
7
+ "revision": 5,
8
+ "content_hash": "74e3743fc376f33c1eb37832ab4869c327d48f87e015c7a38597cf4c4ca939cd",
9
+ "commit": "79bf5c3ab98eec3a67948d8bdebb9dba7d8a2359"
10
+ },
11
+ "cast_at": "2026-09-12T19:19:47.237Z",
12
+ "refs": [
13
+ {
14
+ "kind": "cli-command",
15
+ "mode": "sidecar",
16
+ "ref": "[[gxwf validate]]",
17
+ "src": "content/cli/gxwf/validate.md",
18
+ "dst": "references/cli/validate.json",
19
+ "used_at": "runtime",
20
+ "load": "on-demand",
21
+ "evidence": "hypothesis",
22
+ "purpose": "Validate the assembled gxformat2 workflow before runtime testing.",
23
+ "trigger": "After all Galaxy steps and workflow tests have been assembled.",
24
+ "verification": "Run the cast skill on a complete IWC-derived workflow and confirm terminal validation findings are separated from runtime test failures.",
25
+ "src_hash": "1bf4b4c50e9987f63e65ad36f6deefe6e399fe009280d4bee8533d6c451acf1e",
26
+ "dst_hash": "ff10c49819b0f7af13f247ea03e4dd24ba2e5144da3beaa6b1ab96698c7e03b7",
27
+ "source": "deterministic"
28
+ },
29
+ {
30
+ "kind": "research",
31
+ "mode": "verbatim",
32
+ "ref": "[[galaxy-workflow-invocation-failure-reference]]",
33
+ "src": "content/research/galaxy-workflow-invocation-failure-reference/index.md",
34
+ "dst": "references/notes/galaxy-workflow-invocation-failure-reference.md",
35
+ "used_at": "runtime",
36
+ "load": "on-demand",
37
+ "evidence": "corpus-observed",
38
+ "purpose": "Keep static workflow validation findings distinct from Galaxy invocation/runtime failure surfaces.",
39
+ "trigger": "When a workflow passes gxwf validation but still has likely runtime risks around invocation scheduling, outputs, conditionals, or collection population.",
40
+ "src_hash": "e8115df6ddca447d47d77cb33becda847cdd19b2cbe9924782bfc180b94bb451",
41
+ "dst_hash": "e8115df6ddca447d47d77cb33becda847cdd19b2cbe9924782bfc180b94bb451",
42
+ "source": "deterministic"
43
+ },
44
+ {
45
+ "kind": "research",
46
+ "mode": "verbatim",
47
+ "ref": "[[galaxy-workflow-testability-design]]",
48
+ "src": "content/research/galaxy-workflow-testability-design/index.md",
49
+ "dst": "references/notes/galaxy-workflow-testability-design.md",
50
+ "used_at": "runtime",
51
+ "load": "on-demand",
52
+ "evidence": "corpus-observed",
53
+ "purpose": "Classify validation or pre-test findings that indicate missing labels, omitted workflow outputs, or untestable checkpoint structure.",
54
+ "trigger": "When terminal validation passes but workflow-level outputs, labels, or collection shapes look likely to break future workflow tests.",
55
+ "src_hash": "81b01801ec3d14810d570dd2d7815da2bb11e41a562af9182c29fd2974f4b855",
56
+ "dst_hash": "81b01801ec3d14810d570dd2d7815da2bb11e41a562af9182c29fd2974f4b855",
57
+ "source": "deterministic"
58
+ }
59
+ ],
60
+ "artifacts": {
61
+ "produces": [
62
+ {
63
+ "id": "galaxy-workflow-validation-result",
64
+ "kind": "json",
65
+ "default_filename": "galaxy-workflow-validation-result.json",
66
+ "description": "Terminal gxwf validation handoff: the exact command run, a pass/fail/not-run status, the classified workflow-level diagnostics, and the residual runtime risks static validation cannot settle."
67
+ }
68
+ ],
69
+ "consumes": []
70
+ }
71
+ }
@@ -0,0 +1,16 @@
1
+ [
2
+ {
3
+ "tool": "gxwf",
4
+ "origin": "npm",
5
+ "package": "@galaxy-tool-util/cli",
6
+ "package_version": "^1.8.1",
7
+ "invoke": "gxwf",
8
+ "invoke_fallback": "npx --yes --package @galaxy-tool-util/cli@1.8.1 gxwf",
9
+ "availability_check": "gxwf --help | grep -q draft-validate",
10
+ "docs_url": "https://github.com/jmchilton/galaxy-tool-util-ts/tree/main/packages/cli",
11
+ "source": "implied",
12
+ "implied_by": [
13
+ "gxwf validate"
14
+ ]
15
+ }
16
+ ]
@@ -0,0 +1,4 @@
1
+ {
2
+ "verify_schema_version": 1,
3
+ "entries": []
4
+ }
@@ -0,0 +1,142 @@
1
+ {
2
+ "type": "cli-command",
3
+ "tool": "gxwf",
4
+ "command": "validate",
5
+ "summary": "Validate Galaxy workflow structure, tool state, and optional connection compatibility before runtime execution.",
6
+ "source_path": "content/cli/gxwf/validate.md",
7
+ "source_revision": 3,
8
+ "package": "@galaxy-tool-util/cli",
9
+ "description": "Validate Galaxy workflow files (structure + optional tool state)",
10
+ "synopsis": "gxwf validate [options] <file>",
11
+ "args": [
12
+ {
13
+ "raw": "file",
14
+ "name": "file",
15
+ "required": true,
16
+ "variadic": false,
17
+ "description": "Workflow file (.ga, .gxwf.yml)"
18
+ }
19
+ ],
20
+ "options": [
21
+ {
22
+ "flags": "--format <fmt>",
23
+ "name": "format",
24
+ "description": "Force format: native or format2 (auto-detected by default)",
25
+ "takesArgument": true,
26
+ "argumentPlaceholder": "<fmt>",
27
+ "optionalArgument": false,
28
+ "negatable": false
29
+ },
30
+ {
31
+ "flags": "--no-tool-state",
32
+ "name": "toolState",
33
+ "description": "Skip tool state validation",
34
+ "takesArgument": false,
35
+ "optionalArgument": false,
36
+ "negatable": true
37
+ },
38
+ {
39
+ "flags": "--cache-dir <dir>",
40
+ "name": "cacheDir",
41
+ "description": "Tool cache directory",
42
+ "takesArgument": true,
43
+ "argumentPlaceholder": "<dir>",
44
+ "optionalArgument": false,
45
+ "negatable": false
46
+ },
47
+ {
48
+ "flags": "--offline",
49
+ "name": "offline",
50
+ "description": "Do not fetch uncached tools; read only the local cache (uncached tools are skipped)",
51
+ "takesArgument": false,
52
+ "optionalArgument": false,
53
+ "negatable": false
54
+ },
55
+ {
56
+ "flags": "--galaxy-url <url>",
57
+ "name": "galaxyUrl",
58
+ "description": "Galaxy instance to try as a tool source after the ToolShed when fetching uncached tools",
59
+ "takesArgument": true,
60
+ "argumentPlaceholder": "<url>",
61
+ "optionalArgument": false,
62
+ "negatable": false
63
+ },
64
+ {
65
+ "flags": "--mode <mode>",
66
+ "name": "mode",
67
+ "description": "Validation backend: effect (default) or json-schema",
68
+ "takesArgument": true,
69
+ "argumentPlaceholder": "<mode>",
70
+ "optionalArgument": false,
71
+ "negatable": false,
72
+ "defaultValue": "effect"
73
+ },
74
+ {
75
+ "flags": "--tool-schema-dir <dir>",
76
+ "name": "toolSchemaDir",
77
+ "description": "Directory of pre-exported per-tool JSON Schemas (for offline json-schema mode)",
78
+ "takesArgument": true,
79
+ "argumentPlaceholder": "<dir>",
80
+ "optionalArgument": false,
81
+ "negatable": false
82
+ },
83
+ {
84
+ "flags": "--json",
85
+ "name": "json",
86
+ "description": "Output structured JSON report",
87
+ "takesArgument": false,
88
+ "optionalArgument": false,
89
+ "negatable": false
90
+ },
91
+ {
92
+ "flags": "--report-html [file]",
93
+ "name": "reportHtml",
94
+ "description": "Write HTML report to file (or stdout if omitted)",
95
+ "takesArgument": true,
96
+ "argumentPlaceholder": "[file]",
97
+ "optionalArgument": true,
98
+ "negatable": false
99
+ },
100
+ {
101
+ "flags": "--connections",
102
+ "name": "connections",
103
+ "description": "Validate connection-type compatibility (collection algebra, map-over)",
104
+ "takesArgument": false,
105
+ "optionalArgument": false,
106
+ "negatable": false
107
+ },
108
+ {
109
+ "flags": "--strict",
110
+ "name": "strict",
111
+ "description": "Shorthand for --strict-structure --strict-encoding --strict-state",
112
+ "takesArgument": false,
113
+ "optionalArgument": false,
114
+ "negatable": false
115
+ },
116
+ {
117
+ "flags": "--strict-structure",
118
+ "name": "strictStructure",
119
+ "description": "Reject unknown keys at envelope/step level",
120
+ "takesArgument": false,
121
+ "optionalArgument": false,
122
+ "negatable": false
123
+ },
124
+ {
125
+ "flags": "--strict-encoding",
126
+ "name": "strictEncoding",
127
+ "description": "Reject JSON-string tool_state and format2 field misuse",
128
+ "takesArgument": false,
129
+ "optionalArgument": false,
130
+ "negatable": false
131
+ },
132
+ {
133
+ "flags": "--strict-state",
134
+ "name": "strictState",
135
+ "description": "Require every tool step to validate; no skips allowed",
136
+ "takesArgument": false,
137
+ "optionalArgument": false,
138
+ "negatable": false
139
+ }
140
+ ],
141
+ "body": "# `gxwf validate`\n\nValidate a Galaxy workflow source file before attempting runtime execution. Use this as the design-time guardrail after step implementation and again after final workflow assembly.\n\n## Output\n\nDefault output is human-readable diagnostics. JSON output should be treated as the preferred cast-skill interface; free-text diagnostics are a fallback for humans.\n\n## Examples\n\n```bash\ngxwf validate workflow.ga\ngxwf validate workflow.gxwf.yml --json\ngxwf validate workflow.gxwf.yml --json --connections --strict\ngxwf validate workflow.ga --mode json-schema --tool-schema-dir ./tool-schemas --json\n```\n\n## Gotchas\n\n- Validation is design-time structure checking. It does not prove that a workflow test will pass under Planemo.\n- Run after each generated Galaxy step when the harness can still attribute failures to the fresh step.\n- Run again after assembly to catch cross-step or workflow-level issues before runtime testing.\n- Prefer `--json` whenever a cast skill or harness needs to classify diagnostics.\n- Use `--connections` when tool cache metadata is available and data-shape compatibility matters, especially around collections and map-over.\n- `--no-tool-state` weakens validation. If used, record why tool metadata was unavailable and rerun without it before final runtime testing."
142
+ }
@@ -0,0 +1,138 @@
1
+ ---
2
+ type: research
3
+ title: "Galaxy workflow invocation failure reference"
4
+ tags:
5
+ - target/galaxy
6
+ status: draft
7
+ created: 2026-05-02
8
+ revised: 2026-05-02
9
+ revision: 1
10
+ related_notes:
11
+ - "galaxy-tool-job-failure-reference"
12
+ - "planemo-workflow-test-architecture"
13
+ - "galaxy-collection-semantics"
14
+ related_molds:
15
+ - "run-workflow-test"
16
+ - "debug-galaxy-workflow-output"
17
+ - "validate-galaxy-workflow"
18
+ sources:
19
+ - "https://github.com/galaxyproject/galaxy/blob/dev/lib/galaxy/schema/invocation.py"
20
+ - "https://github.com/galaxyproject/galaxy/blob/dev/lib/galaxy/workflow/run.py"
21
+ - "https://github.com/galaxyproject/galaxy/blob/dev/lib/galaxy/workflow/modules.py"
22
+ - "https://github.com/galaxyproject/galaxy/blob/dev/lib/galaxy/webapps/galaxy/api/workflows.py"
23
+ summary: "Reference for Galaxy workflow invocation states, messages, failure reasons, and invocation API surfaces."
24
+ ---
25
+
26
+ # Galaxy Workflow Invocation Failure Reference
27
+
28
+ This note describes workflow-level failure surfaces in Galaxy. It is separate from galaxy-tool-job-failure-reference because invocation state answers whether Galaxy could schedule and drive the workflow, while job state answers whether individual tool jobs succeeded.
29
+
30
+ ## Invocation Versus Job Failure
31
+
32
+ Important distinction:
33
+
34
+ - Invocation state says whether Galaxy scheduled, cancelled, failed, or completed the workflow invocation.
35
+ - Job state says whether jobs produced by invocation steps succeeded or failed.
36
+ - Invocation messages explain scheduler/evaluation/cancellation problems.
37
+ - Step states usually describe scheduling progress, not actual job success, unless a legacy serialization mode substitutes job state.
38
+
39
+ A robust workflow test reference should inspect both invocation APIs and job APIs.
40
+
41
+ ## Invocation States
42
+
43
+ Galaxy invocation states are defined in `https://github.com/galaxyproject/galaxy/blob/dev/lib/galaxy/schema/invocation.py` and related model code.
44
+
45
+ | State | Meaning |
46
+ |---|---|
47
+ | `new` | Newly created invocation. |
48
+ | `requires_materialization` | Deferred or undeferred inputs must materialize before scheduling can continue. |
49
+ | `ready` | Ready for another scheduler iteration. |
50
+ | `scheduled` | Workflow has been scheduled. Older clients may treat this as successful terminal state. |
51
+ | `cancelling` | Scheduler will cancel jobs and subworkflow invocations. |
52
+ | `cancelled` | Cancellation terminal state. |
53
+ | `failed` | Scheduler/evaluation/materialization failure terminal state. |
54
+ | `completed` | Newer completion state after all jobs reach terminal states. |
55
+
56
+ Version caveat: `completed` may not be uniformly available across all Galaxy/Planemo combinations. Planemo accounts for both `scheduled` and `completed` as success-like invocation states.
57
+
58
+ ## Invocation Message Reasons
59
+
60
+ Structured invocation messages are the main durable surface for workflow-level failures.
61
+
62
+ | Reason | Typical meaning |
63
+ |---|---|
64
+ | `dataset_failed` | Dataset input or upstream dataset was failed/unusable. |
65
+ | `collection_failed` | Collection was failed, incompletely populated, or unusable. |
66
+ | `job_failed` | Upstream dependent job failed. |
67
+ | `output_not_found` | Expected step/subworkflow output could not be resolved. |
68
+ | `expression_evaluation_failed` | Workflow expression or condition evaluation failed. |
69
+ | `when_not_boolean` | Conditional `when` expression did not return a boolean. |
70
+ | `unexpected_failure` | Scheduler or evaluation failure without a more specific safe reason. |
71
+ | `workflow_parameter_invalid` | Workflow parameter validation failed. |
72
+ | `step_input_deleted` | Step input dataset/collection was deleted. |
73
+ | `history_deleted` | Invocation history was deleted, causing cancellation. |
74
+ | `user_request` | User/API cancellation. |
75
+ | `cancelled_on_review` | Pause/review step rejected continuation. |
76
+ | `workflow_output_not_found` | Warning: declared workflow output was not found. |
77
+
78
+ Message records can include affected workflow step id, dependent step id, job id, HDA/HDCA ids, output name, and nested workflow step index path. These fields matter more than free-text messages for reference-quality diagnosis.
79
+
80
+ ## Common Workflow-Level Failure Surfaces
81
+
82
+ | Surface | Reference signal |
83
+ |---|---|
84
+ | Request-time validation | API returns an error before useful invocation state exists. |
85
+ | Input materialization | Invocation enters `requires_materialization`, then may fail with `dataset_failed`. |
86
+ | Conditional evaluation | Invocation messages include `expression_evaluation_failed` or `when_not_boolean`. |
87
+ | Missing output graph edge | Invocation messages include `output_not_found`. |
88
+ | Deleted/purged inputs | Invocation messages include `step_input_deleted` or `dataset_failed`. |
89
+ | Upstream job failure | Invocation messages or summaries point to `job_failed`; job API has details. |
90
+ | Collection population failure | Invocation messages include `collection_failed`; inspect HDCA and mapped jobs. |
91
+ | Pause/review rejection | Cancellation reason `cancelled_on_review`. |
92
+ | User/history cancellation | Cancellation messages `user_request` or `history_deleted`. |
93
+ | Warning-only missing output | `workflow_output_not_found` warning; may later become Planemo assertion failure. |
94
+
95
+ ## API Surfaces
96
+
97
+ Useful invocation APIs from `https://github.com/galaxyproject/galaxy/blob/dev/lib/galaxy/webapps/galaxy/api/workflows.py`:
98
+
99
+ | API | Use |
100
+ |---|---|
101
+ | `GET /api/invocations/{invocation_id}` | Invocation state, messages, inputs, outputs, and steps. |
102
+ | `GET /api/invocations/{invocation_id}?step_details=true` | Richer step detail, jobs, outputs, and output collections. |
103
+ | `GET /api/invocations/steps/{step_id}` | Detail for one invocation step. |
104
+ | `GET /api/invocations/{invocation_id}/steps/{step_id}` | Step detail scoped to invocation. |
105
+ | `GET /api/invocations/{invocation_id}/jobs_summary` | Job state summary across the invocation. |
106
+ | `GET /api/invocations/{invocation_id}/step_jobs_summary` | Job state summary per workflow invocation step. |
107
+ | `GET /api/invocations/{invocation_id}/completion` | Completion record, if available. |
108
+ | `DELETE /api/invocations/{invocation_id}` | Cancel invocation. |
109
+ | `PUT /api/invocations/{invocation_id}/steps/{step_id}` | Continue or cancel pause/review step. |
110
+ | `GET /api/invocations/{invocation_id}/report` | Invocation report surface. |
111
+
112
+ Workflow aliases under `/api/workflows/{workflow_id}/invocations/...` also exist.
113
+
114
+ ## Planemo Caveats
115
+
116
+ Planemo polls invocation and job state, but its user-facing output may not expose all structured invocation messages. Treat Planemo terminal output as a summary; use raw invocation and job APIs when the failure class matters.
117
+
118
+ Likely noisy boundaries:
119
+
120
+ - Planemo may show failed job details but omit structured invocation messages.
121
+ - `step_jobs_summary` is useful in Galaxy but not necessarily surfaced directly by Planemo output.
122
+ - Subworkflow paths can be represented in Galaxy message fields but may not be displayed by Planemo.
123
+ - A workflow can be `completed` or `scheduled` while one or more jobs failed; job summaries must still be inspected.
124
+
125
+ ## Durable Reference Use
126
+
127
+ Use this note when a workflow run fails before or around job scheduling, when outputs are missing without an obvious tool stderr cause, or when Planemo only reports a generic invocation failure.
128
+
129
+ The goal is not to prescribe a single repair loop. The goal is to preserve which Galaxy API surface proves the failure mode so later Molds can decide whether the defect belongs to data-flow, template, concrete step implementation, workflow test assertions, or runtime environment.
130
+
131
+ ## Verification Gaps
132
+
133
+ Actual runs should verify:
134
+
135
+ - Whether Planemo surfaces invocation `messages` for each reason.
136
+ - Whether `completed` and `/completion` are populated in the target Galaxy used by tests.
137
+ - How mapped collections and subworkflow failures appear in `step_jobs_summary`.
138
+ - How warning-only `workflow_output_not_found` interacts with Planemo assertions.
@@ -0,0 +1,136 @@
1
+ ---
2
+ type: research
3
+ tags:
4
+ - target/galaxy
5
+ status: draft
6
+ created: 2026-05-03
7
+ revised: 2026-05-06
8
+ revision: 2
9
+ related_notes:
10
+ - "iwc-workflow-testability-survey"
11
+ - "iwc-test-data-conventions"
12
+ - "planemo-asserts-idioms"
13
+ - "iwc-shortcuts-anti-patterns"
14
+ - "planemo-workflow-test-architecture"
15
+ - "implement-galaxy-workflow-test"
16
+ - "gxformat2-schema"
17
+ - "gxformat2-workflow-inputs"
18
+ - "galaxy-datatypes-conf"
19
+ summary: "Design guidance for Galaxy workflow inputs, outputs, and checkpoints that make IWC-style workflow tests possible."
20
+ ---
21
+
22
+ # Galaxy workflow testability design
23
+
24
+ Use this note when authoring or translating a Galaxy workflow **before** the `-tests.yml` file exists. It covers workflow structure choices that make later IWC-style tests meaningful: labels, promoted checkpoints, collection identifiers, and fixture-compatible inputs.
25
+
26
+ This is not a `content/patterns/` page. It is cross-cutting design guidance for Molds that need testable Galaxy workflows. Assertion syntax lives in planemo-asserts-idioms. Test YAML fixture shapes live in iwc-test-data-conventions. Accepted shortcut vs smell calls live in iwc-shortcuts-anti-patterns. Corpus evidence trail lives in iwc-workflow-testability-survey.
27
+
28
+ ## 1. Treat labels as API
29
+
30
+ Workflow input and output labels are not cosmetic. Planemo and IWC tests address workflow inputs and outputs by label, and the survey found exact label matches for every asserted output across 114 matched workflow/test pairs. A generated workflow should therefore pick stable, descriptive labels before test authoring starts.
31
+
32
+ Rules:
33
+
34
+ - Label every output that may need a test assertion.
35
+ - Treat input/output renames as breaking changes requiring sibling `-tests.yml` updates.
36
+ - Prefer stable domain names over tool-step defaults or positional names.
37
+ - Do not rely on unlabeled or positional outputs for tests.
38
+
39
+ Evidence:
40
+
41
+ - Scanpy exposes outputs such as `Initial Anndata General Info`, `UMAP of louvain`, `Ranked genes with Wilcoxon test`, and `Dotplot of top genes on clusters` (`$IWC_FORMAT2/scRNAseq/scanpy-clustering/Preprocessing-and-Clustering-of-single-cell-RNA-seq-data-with-Scanpy.gxwf.yml:105-147`). The sibling test keys assertions by those exact labels (`$IWC/workflows/scRNAseq/scanpy-clustering/Preprocessing-and-Clustering-of-single-cell-RNA-seq-data-with-Scanpy-tests.yml:27-205`).
42
+ - VGP scaffolding uses punctuation-heavy labels such as `Hi-C duplication stats on scaffolds: Raw`, `Hi-C duplication stats on scaffolds: MultiQc`, and `Merged Alignment stats` (`$IWC_FORMAT2/VGP-assembly-v2/Scaffolding-HiC-VGP8/Scaffolding-HiC-VGP8.gxwf.yml:170-196`). The test asserts those exact labels (`$IWC/workflows/VGP-assembly-v2/Scaffolding-HiC-VGP8/Scaffolding-HiC-VGP8-tests.yml:218-245`).
43
+
44
+ ## 2. Promote assertable checkpoints
45
+
46
+ IWC workflow tests assert workflow-level outputs. Intermediate step results are invisible unless promoted to top-level workflow outputs. When final reports are weakly assertable, expose intermediate checkpoints that carry deterministic content or structure.
47
+
48
+ Rules:
49
+
50
+ - Promote intermediate outputs when they are the best deterministic or structural checkpoint.
51
+ - Prefer a checkpoint table/text/HDF5 object that can prove content over a final plot/report that can only prove existence.
52
+ - Accept some output-list clutter when it buys meaningful tests.
53
+ - Do not promote every intermediate by default; expose checkpoints that map to concrete assertion intent.
54
+
55
+ Evidence:
56
+
57
+ - Scanpy exposes 21 workflow outputs and the sibling test asserts all 21. These include initial AnnData summaries, intermediate plots, ranked-gene tables, final AnnData, cluster-count tables, and final plots (`$IWC_FORMAT2/scRNAseq/scanpy-clustering/Preprocessing-and-Clustering-of-single-cell-RNA-seq-data-with-Scanpy.gxwf.yml:105-147`; `$IWC/workflows/scRNAseq/scanpy-clustering/Preprocessing-and-Clustering-of-single-cell-RNA-seq-data-with-Scanpy-tests.yml:27-205`).
58
+ - RNA-seq paired-end exposes mapped reads, stranded/unstranded coverage, abundance estimates, expression tables, counts tables, and MultiQC reports (`$IWC_FORMAT2/transcriptomics/rnaseq-pe/rnaseq-pe.gxwf.yml:90-112`). The sibling test asserts sizes for coverage/read outputs and stronger regex/line checks for expression/count outputs (`$IWC/workflows/transcriptomics/rnaseq-pe/rnaseq-pe-tests.yml:48-97`).
59
+ - MGnify complete exposes 83 workflow outputs; 38 are asserted in the sibling test, including MultiQC reports, FASTA collections, taxonomic classifications, OTU tables, and HDF5/JSON outputs (`$IWC_FORMAT2/amplicon/amplicon-mgnify/mgnify-amplicon-pipeline-v5-complete/mgnify-amplicon-pipeline-v5-complete.gxwf.yml:163-329`; `$IWC/workflows/amplicon/amplicon-mgnify/mgnify-amplicon-pipeline-v5-complete/mgnify-amplicon-pipeline-v5-complete-tests.yml:15-120`).
60
+
61
+ ## 3. Stabilize collection output identifiers
62
+
63
+ Collection tests key assertions by element identifier. If a workflow emits collections with unstable or opaque identifiers, the test cannot target elements cleanly.
64
+
65
+ Rules:
66
+
67
+ - Preserve biologically or sample-meaningful identifiers through map-over and collection reshaping.
68
+ - When generating or relabeling collections, make the identifier derivation deterministic and visible in workflow structure.
69
+ - For nested collections, ensure each axis has predictable identifiers.
70
+ - Quote special identifiers in tests when YAML requires it, but do not simplify identifiers merely for YAML convenience.
71
+
72
+ Evidence:
73
+
74
+ - 59 of 115 IWC test files use `element_tests:`, with 227 `element_tests:` blocks in the corpus survey.
75
+ - 10x CellPlex tests nested collection outputs by `subsample`, then inner `matrix`, `barcodes`, and `genes` elements (`$IWC/workflows/scRNAseq/fastq-to-matrix-10x/scrna-seq-fastq-to-matrix-10x-cellplex-tests.yml:82-128`). The workflow exposes the corresponding collection outputs (`$IWC_FORMAT2/scRNAseq/fastq-to-matrix-10x/scrna-seq-fastq-to-matrix-10x-cellplex.gxwf.yml:73-91`).
76
+ - HyPhy collection outputs are tested by generated gene identifiers such as `NC_001477.1|capsid_protein_C|95-394_DENV1` (`$IWC/workflows/comparative_genomics/hyphy/hyphy-core-tests.yml:31-71`). The workflow exposes collection outputs for MEME, PRIME, BUSTED, and FEL (`$IWC_FORMAT2/comparative_genomics/hyphy/hyphy-core.gxwf.yml:26-38`).
77
+
78
+ ## 4. Choose checkpoints by assertion strength
79
+
80
+ Assertion choice is not only a test-file decision. It should feed back into workflow output design. If the only exposed output is a stochastic plot or binary file, the best possible test may be a weak size check. Exposing a sibling table, report, HDF5 structure, or summary line can make the same workflow much more testable.
81
+
82
+ Rules:
83
+
84
+ - For image-heavy workflows, expose data or summary outputs behind the plot when possible.
85
+ - For stochastic statistical outputs, expose structural checkpoints and stable summary tokens.
86
+ - For binary outputs, expose a text/table report or stats file when the tool can produce one.
87
+ - Use planemo-asserts-idioms to select the assertion family after choosing the checkpoint.
88
+
89
+ Evidence:
90
+
91
+ - Scanpy image outputs are mostly smoke-tested with `has_size`, `has_image_width`, and `has_image_height`, but the same workflow also exposes AnnData HDF5 keys and cluster-count table checks (`$IWC/workflows/scRNAseq/scanpy-clustering/Preprocessing-and-Clustering-of-single-cell-RNA-seq-data-with-Scanpy-tests.yml:33-205`).
92
+ - RNA-seq paired-end pairs coarse size checks for coverage/mapped-read outputs with stronger regex and exact-line checks for expression/count tables (`$IWC/workflows/transcriptomics/rnaseq-pe/rnaseq-pe-tests.yml:48-97`).
93
+ - VGP scaffolding tests combine stable text checks for scaffold/report stats with size checks for map/alignment artifacts (`$IWC/workflows/VGP-assembly-v2/Scaffolding-HiC-VGP8/Scaffolding-HiC-VGP8-tests.yml:173-245`).
94
+
95
+ ## 5. Design inputs with fixtures in mind
96
+
97
+ Workflow input labels and types constrain the eventual `job:` block. Fixture planning is not only a test-file activity: it should influence whether the workflow exposes a file input, a collection input, a string data-table input, or a typed parameter.
98
+
99
+ Rules:
100
+
101
+ - Choose input labels that will be readable as test `job:` keys.
102
+ - Match workflow input collection types to realistic fixture shapes.
103
+ - Decide early whether reference data should be a portable remote file or a CVMFS/data-table string.
104
+ - Keep typed parameters explicit when tests need to set them (`int`, `boolean`, `string`) rather than burying them in step defaults.
105
+
106
+ Evidence:
107
+
108
+ - 10x CellPlex job inputs include `fastq PE collection GEX`, `reference genome`, `gtf`, `cellranger_barcodes_3M-february-2018.txt`, `fastq PE collection CMO`, `sample name and CMO sequence collection`, and `Number of expected cells` (`$IWC/workflows/scRNAseq/fastq-to-matrix-10x/scrna-seq-fastq-to-matrix-10x-cellplex-tests.yml:2-75`). The workflow declares matching collection, data, string, boolean, and int inputs (`$IWC_FORMAT2/scRNAseq/fastq-to-matrix-10x/scrna-seq-fastq-to-matrix-10x-cellplex.gxwf.yml:4-72`).
109
+ - HyPhy accepts a `list` collection of unaligned sequences and preserves accession-like fixture identifiers through to output element assertions (`$IWC/workflows/comparative_genomics/hyphy/hyphy-core-tests.yml:7-30`; `$IWC_FORMAT2/comparative_genomics/hyphy/hyphy-core.gxwf.yml:14-25`).
110
+
111
+ ## 6. Know what a gxformat2 output entry contains
112
+
113
+ Top-level gxformat2 `outputs:` is the public workflow-output surface. It is separate from per-step `out:` declarations and from step post-job actions such as `change_datatype` or `rename`.
114
+
115
+ Authoring rules:
116
+
117
+ - Use `label` as the stable public name tests and users will address.
118
+ - Use `outputSource` to point at the producing step output; do not rely on positional output order.
119
+ - Use `doc` for short user-facing context when the label is not self-explanatory.
120
+ - Keep `type` aligned with the exposed value (`data`, `collection`, or scalar vocabulary from gxformat2-workflow-inputs) when the schema needs it.
121
+ - Apply `change_datatype` at the producing step output when Galaxy needs a stronger datatype than the tool reports; choose values from galaxy-datatypes-conf.
122
+ - Use `rename` only for generated dataset names inside Galaxy histories. It is not a substitute for stable workflow-output `label`.
123
+ - Treat `add_tags` and `remove_tags` as metadata helpers, not as the test API. IWC tests key by labels and collection element identifiers, not tags.
124
+ - Avoid `hide` or `delete_intermediate_datasets` on outputs that are promoted as test checkpoints.
125
+
126
+ Design inference: a workflow-output promotion decision should pick both the public `outputs:` entry and any producer-side post-job action needed to make that output useful. For example, a synthesized BED checkpoint needs a stable output `label` plus a producer-side `change_datatype: bed`; one without the other is incomplete for a testable workflow.
127
+
128
+ ## Cross-references
129
+
130
+ - iwc-workflow-testability-survey — corpus survey and distribution rationale.
131
+ - iwc-test-data-conventions — job/input YAML shapes, remote fixtures, hashes, collection fixture syntax.
132
+ - planemo-asserts-idioms — assertion-family choice after an output is exposed.
133
+ - iwc-shortcuts-anti-patterns — accepted shortcut vs smell calls for weak assertions and label coupling.
134
+ - planemo-workflow-test-architecture — Planemo execution, output-problem ambiguity, and structured artifacts.
135
+ - gxformat2-schema — structural vocabulary for top-level workflow outputs and step post-job actions.
136
+ - galaxy-datatypes-conf — valid Galaxy datatype extensions for `format` and `change_datatype` choices.