R9 · Prior art and landscape¶
Done 2026-10-26 · 17 findings: 0 blockers, 6 majors, 11 minors · 0 dropped · 2 cited, not repeated · 7 questions for Thomas · 9 spikes proposed
What changed¶
- New review file:
docs/reviews/R9-landscape.md. It holds:- the 17 findings
FC-038toFC-054, each with its evidence, a proposal andStatus: open. The IDs continue the FC sequence of R2, which usedFC-001toFC-037; - a findings table ranked by severity, then by the number of documents touched, with each reviewer's original IDs;
- a cited, not repeated section: two reviewer findings that restate open findings of R1 and R4, with their new evidence, plus evidence for three other open findings (UX-103, DEP-T-012, UX-110);
- 7 questions for Thomas;
- 9 proposed spikes, from 15 minutes to half a day each.
- the 17 findings
- New research note:
docs/research/landscape-2026-10-26.md. It holds the landscape itself:- one entry per tool, with licence, activity, overlap with Spectio and what is worth reusing (Nextflow tools, Snakemake monitors, WES servers, general orchestrators, TES backends, provenance exporters);
- GA4GH standards and Spectio;
- a summary table and a draft neutral comparison;
- corrections to earlier documents and a list of what was not checked.
- No spec was edited. This is a review round (see the review rules in
docs/reviews/README.md). The spec changes wait for TRIAGE1 and APPLY1. - Both files were committed on
autopilot/integrationinad6bc9b, together with the other W1 review files, the nav entries andmap.md.
Why¶
The positioning in synthesis.md is dated 2026-10-23 and was revised on 2026-10-26. Tools next to Spectio move fast. Before any code, the claims "the niche is open" and "no exporter exists" had to be checked against the current state of each tool.
Prompt: next-phase.md · R9. It asks fact-checker and constraints-hunter, in parallel, to re-scan the landscape: licence, activity, overlap and reuse for each tool. It asks for a dated research note and for the spec changes as findings. The round runs as an autopilot step: decision log, 2026-10-26, autopilot. The decisions the findings test are decision 0001 (coexistence with the user's existing tools, FC-039 and FC-051) and the MVP scope entry, whose "GA4GH: no change" item the research note refines.
Evidence¶
How the round ran (from the round's header in the review file):
| Item | Value |
|---|---|
| Commit read | autopilot/integration at 3b209d3; line numbers in the file refer to it |
| Reviewers | fact-checker (Seqera and nf-tower, nf-shard, Sapporo and other WES servers, GA4GH WES / TES / TRS / DRS, WRROC, nf-prov) and constraints-hunter (panoptes, snkmt, FlowO, Galaxy, Arvados, Flyte, Prefect, Dagster), in parallel. Both returned output; none failed. |
| External code | read from shallow clones under /tmp/w1-scratch/ (not kept), for example snakemake 1c67a66, nf-prov 8aa8280, snakemake-report-plugin-rocrate 1989c5b, WES schemas c3fb9fb, Galaxy fd43a3c; FlowO from its 2.2.0 sdist. Release dates from the PyPI JSON API. |
| Limits | the GitHub REST API was blocked (no star counts or archive flags), and the FlowO repository did not answer anonymously. These items are listed as not checked in the note's §13. |
| Raw output | fact-checker: 13 findings (0 blockers, 2 majors, 11 minors). constraints-hunter: 10 findings (0 blockers, 5 majors, 5 minors). |
| Merge | 4 pairs describing the same problem merged (FC-042, FC-046, FC-047, FC-053). 2 findings that restate open R1 and R4 findings (engine-bridge transport, rules for copying third-party code) moved to "cited, not repeated" and not counted. 23 − 4 − 2 = 17. |
| Merger's check | every quoted spec passage of every major was opened at 3b209d3, and the external evidence of every major was re-read in the clones or on PyPI. For example, FC-039: --logger is nargs="+" (cli.py:1623-1628); FC-041: nf-prov declares wfrun 0.1 (WrrocRenderer.groovy:590-611). All reproduced, so 0 findings were dropped. |
| Disagreements settled | Galaxy's WES version: both reviewers were right. api/wes.py:64-151 serves every WES 1.1 route, and services/wes.py:412 declares supported_wes_versions=["1.0.0"]. Release dates: PyPI gives 2026-10-21 for Prefect 3.9.0 and for flyte 2.12.1. |
Counts, checked against the file's headings and findings table:
$ for s in blocker major minor; do printf "%s " $s; grep -c "^### FC-[0-9]* · $s ·" docs/reviews/R9-landscape.md; done
blocker 0
major 6
minor 11
$ grep -cE '^\| FC-[0-9]+ \| (blocker|major|minor) \|' docs/reviews/R9-landscape.md
17
These match the summary table in the file (0 blockers, 6 majors, 11 minors, total 17, 2 cited, 0 dropped) and the merge summary returned by the step's workers (0 blockers, 6 majors, 11 minors, 0 dropped).
Exit criterion. R9 is done when its review file exists, so that TRIAGE1 can read it. The research note the prompt asked for exists too:
$ ls docs/reviews/R9-landscape.md docs/research/landscape-2026-10-26.md
docs/research/landscape-2026-10-26.md
docs/reviews/R9-landscape.md
Figures and media¶
None required (review step).
Findings and open questions¶
What the round says. The niche is still open, but it is narrower than the specs say. FlowO and panoptes (MIT) already monitor Snakemake, and FlowO has a catalogue with MCP access. Flyte 2 started running Nextflow pipelines with pause-until-signal this month. Nobody offers steering (stop at a stage, review evidence, resume) for Snakemake and Nextflow on shared-file-system HPC under the user's own account.
The findings that matter most (as ranked in the review file's summary):
- FC-039 · major: a plain
--logger spectiowould replace the user's own Snakemake loggers (panoptes, snkmt, FlowO).--loggertakes a list (cli.py:1623-1628), and the API path only uses the handlers Spectio passes (logging.py:648). The adapter must addspectioto the effective loggers. - FC-038 · major: a Snakemake RO-Crate exporter exists.
snakemake-report-plugin-rocrate(1989c5b, MIT, 0.1.0) writes a WRROC 0.5 Provenance Run Crate. It is not on PyPI yet, so it is a dependency to watch, not to rely on. - FC-041 · major: api §10 pins no RO-Crate or WRROC version. nf-prov declares WRROC 0.1, Sapporo and the Snakemake plugin 0.5, all on RO-Crate 1.1. WRROC 0.6 needs RO-Crate 1.3 and is not backward compatible. Proposal: pin RO-Crate 1.1 + WRROC 0.5 for 0.x and validate exports in CI.
- FC-043 and FC-042 · majors: "no project found targets exactly this" and "no incumbent" for Snakemake are now false. The adoption note cites a 2021 docs build. The verdict holds only when restated as four differentiators: shared POSIX file systems, the user's own account, Snakemake, item-level QC gates.
- FC-040 · major:
DefaultFilterchanged signature three times within Snakemake 9.x, and the logger interface addedneeds_rulegraphin 2.1.0, yet dev-env tests only 9.27.1. Proposal: a stated supported range, two tested versions and the interface's own tests. It conflicts with R4 CH-009 on supporting one interface major or two.
Questions for Thomas. The full wording is in the review file. In short:
| # | Topic | Question |
|---|---|---|
| 1 | Positioning (FC-043, FC-042) | Restate the verdict as four differentiators? May Spectio contact the FlowO maintainers, and offer the Snakemake docs a PR for the stale monitoring page? |
| 2 | Snakemake provenance (FC-038) | Make snakemake-report-plugin-rocrate the primary exporter once it is on PyPI, with Spectio's own builder as fallback? Or keep Spectio's builder primary? |
| 3 | Export versions (FC-041) | Pin RO-Crate 1.1 + WRROC 0.5 for 0.x and move to 0.6 later? Or target RO-Crate 1.3 + WRROC 0.6 now and rewrite engine crates on merge? |
| 4 | WES dialect (FC-044) | Strict WES 1.1.0, with Sapporo 2.x compatibility as a non-goal? This goes with the stage choice in R1 SR-010. |
| 5 | Snakemake support range (FC-040 vs CH-009) | One logger-interface major per release, or interfaces 1.x and 2.x both supported? |
| 6 | Seqera API compatibility (FC-051) | Drop synthesis §7bis item 6 as contrary to decision 0001? An earlier log entry still says "later, after a legal check". |
| 7 | Migrations (FC-052) | One Alembic tree with dialect branches inside revisions, or two trees as Prefect does? |
Next. TRIAGE1 sorts these findings with the triage policy, together with the related R1, R4, R8b and R12 findings. It moves the questions it cannot settle to the inbox. APPLY1 then changes the specs and adds the decision-log entries. The proposed spikes (logger coexistence, Snakemake version matrix, Snakemake run crate, and others) are candidates for later spike steps; none is scheduled yet.