Skip to content

Port scripts/lib/roadmap_fragments.py (and roadmap_diff/roadmap_merge) to Rust #5902

Open

Description

@noahgift

Operator never-rule: no new Python. roadmap_fragments.py predates the rule and #5901 only adds a fragment-ids subcommand to it (no new .py file, no inline python3 -c). Port the aggregate/changed/adopt/fragment-ids commands to a Rust bin (pv or apr xtask) and retire the .py. Refs #5897.

🤖 Generated with Claude Code

Scope widened (quorum condition 2, #5901 @66719fd864; receipt handoff/triage-quorum-5901-python-growth.md)

The port retires ALL Python that #5901 grows, not only the .py:

  • scripts/lib/roadmap_fragments.py +56/-8 (+48 net): --base-file mode, _emit_generated, fragment-ids subcommand.
  • scripts/ci/fat_driver.py +8: the setup_workspace subprocess.run(["python3", roadmap_fragments.py, "aggregate", ...]) call.
  • 4 new python3 call sites in the .sh guards: check_roadmap_diff_additive.sh (aggregate, +1), check_roadmap_fragment_required.sh (fragment-ids and aggregate --check, +2), plus the Makefile roadmap-aggregate(-check) targets (existing calls, --base-file added).
  • ~11 lines added inside the pre-existing embedded Python heredoc of check_roadmap_completion_is_cited.sh.
    Done when: no python3 reference to roadmap_fragments.py remains in scripts/, Makefile or ci.yml, and the .py is deleted.
    Until it lands: no further python3 -c, new heredoc or new .py on this path (quorum condition 3).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions