Skip to content

v5.0.0: one name per config key (output_basename everywhere); refuse RNEAT_ read names (#879) - #880

Open
joshfactorial wants to merge 4 commits into
developfrom
feat/v5_remove_aliases
Open

joshfactorial wants to merge 4 commits into
developfrom
feat/v5_remove_aliases

Conversation

@joshfactorial

@joshfactorial joshfactorial commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #879 (close by hand on merge to develop).

MAJOR change, for v5.0.0. Config keys and their meaning are public API under docs-site/src/reference/versioning.md.

Change

  • Both subcommands: the output name key is output_basename. "Prefix" reads as path-plus-prefix in samtools, bwa and STAR; this key is a file name only, joined to output_dir. output_prefix (gen-cancer-reads, and NEAT's name) is refused with `output_prefix` (renamed `output_basename` in v5.0.0).
  • Path separators refused: a value containing / or \ is an error naming output_dir. Before, an absolute path silently replaced output_dir and sub/run failed with a bare I/O error.
  • gen-reads: output_filename is refused with `output_filename` (removed in v5.0.0; use `output_basename`).
  • gen-cancer-reads: its second names are removed, each refused with a message naming the replacement:
    • output_filename → output_basename;
    • coverage → total_coverage;
    • rng_seed_root → rng_seed.
  • filter-reads: a read named with the pre-v3.0.0 prefix @RNEAT_generated_ is now an error, where it used to be read with a warning. The error names the prefix and gives the sed command that renames it. It must not fall through as an ordinary line: filter_fastq would then drop every read and still exit 0.
  • Everything in the repo uses output_basename: Rust tests, templates, README, docs-site, scripts/delta, tools.
  • New docs page: Upgrading from 4.x lists each removal, the shuffle default from Shuffle gen-reads FASTQ output by default (shuffle_fastq, #870) #875, and the commands to update configs. The 2.0.0 upgrade page no longer says filter-reads reads the old prefix.

The internal RunConfiguration field is renamed to match. That is not public API.

Evidence

  • New tests in config_errors_exit_cleanly.rs: each removed gen-reads and gen-cancer-reads key, and a FASTQ with an RNEAT_generated_ read. Each requires exit 1, no panic, and the replacement named on stderr.

  • Mutation checks, each confirmed applied and then restored with cmp:

    mutant result
    output_filename back in gen-reads' accepted keys the gen-reads test fails
    separator check disabled in gen-reads output_basename_with_a_path_separator_is_refused fails
    separator check disabled in gen-cancer-reads the same test fails
    coverage back in gen-cancer-reads' accepted keys the cancer test fails
    RNEAT check disabled the filter-reads test fails
  • Unit test: the filter_lib test now requires the RetiredPrefix error.

  • Rename tests: output_prefix is refused naming output_basename in both subcommands; sub/run, /abs/run and a\b are each refused in both.

  • Must not fire: the whole existing suite now writes output_basename and passes.

  • The workspace suite passes: 63 test binaries pass on the last run. Earlier in the branch invoked_name failed once at its copy-and-exec step and passed 3 of 3 on its own and on rerun. Clippy -D warnings and fmt pass.

Not verified

  • The scripts/delta and tools edits were checked with bash -n only, not run. Each is a one-word key rename inside a heredoc or printf.
  • Windows paths: the check rejects \\ on every platform, so a file name containing a literal backslash is refused on Linux too.
  • Configs outside this repo break by design, and gen-cancer-reads configs now break too (output_prefix was its key since before 4.x). The upgrade page has a one-line sed for them.

🤖 Generated with Claude Code

…d names (#879)

MAJOR, for v5.0.0. Config keys and their meaning are public API
(docs-site/src/reference/versioning.md).

- gen-reads: `output_filename` becomes `output_prefix`, the name
  gen-cancer-reads already used. The old name is refused with
  "removed in v5.0.0; use `output_prefix`".
- gen-cancer-reads: drops its second names `output_filename`, `coverage`
  and `rng_seed_root`, each refused naming `output_prefix`,
  `total_coverage` or `rng_seed`.
- filter-reads: a `@RNEAT_generated_` read is an error naming the
  prefix and the sed fix. It was read with a warning. It must not fall
  through as an ordinary line, which would drop every read at exit 0.
- Every repo config, template, test, doc and script uses output_prefix.
  New page: Upgrading from 4.x.

Tests: config_errors_exit_cleanly gains three (each removed gen-reads
and cancer key, and an RNEAT FASTQ), each failing under its mutant
(the alias re-added; the RNEAT check disabled). The filter_lib unit test
now requires the RetiredPrefix error. The existing suite exercises
output_prefix throughout, which is the must-not-fire side.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@joshfactorial joshfactorial added this to the v5.0.0 milestone Nov 10, 2026
joshfactorial and others added 3 commits November 10, 2026 01:45
…rce config (#879)

The 21x simulation config already on Delta scratch carries output_filename,
which v5 refuses, so it is stripped along with output_prefix before the
benchmark appends its own. output_prefix is read by every release since the
rename, so the script still runs against the develop binary.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
#879)

'prefix' reads as path-plus-prefix in samtools, bwa and STAR. The key holds a file
name only, joined to output_dir. Both subcommands now refuse output_prefix with a
rename hint, and refuse a value containing / or \ (an absolute path silently
replaced output_dir; a relative subdirectory failed with a bare I/O error).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@joshfactorial joshfactorial changed the title v5.0.0: one name per config key (output_prefix everywhere); refuse RNEAT_ read names (#879) v5.0.0: one name per config key (output_basename everywhere); refuse RNEAT_ read names (#879) Nov 10, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant