Todo list¶
Every pending item this project tracks, collected from the {todo} admonitions left in the documentation pages and in the docstrings autodoc renders. Each entry links back to where it is written, which is next to the code or the prose it acts on.
Most wait on an upstream release: the ticket named in an item is what closes it.
Todo
Delete the ccache.conf base_dir write once Nuitka#3996 ships. Check then whether the install into the project virtualenv can go too. It can only if the fix keeps Nuitka’s install path out of the hashed compiler arguments. The two other shims have no deadline. Nuitka#3909 shipped in 4.2 and retired nothing, because the fix reaches --project builds only. On Nuitka#3997 the maintainer has not declined the request: he asked how digests could stay current across architectures without breaking older releases whose downloads move, and said tooling for it would be welcome, so the unconditional macOS --disable-ccache stays until someone writes that.
(The original entry is located in /home/runner/work/repomatic/repomatic/docs/nuitka.md, line 129.)
Todo
Delete this module once mdformat-toc can express the exclusion in the ToC
marker itself, through
hukkin/mdformat-toc#17 or
hukkin/mdformat-toc#20.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/awesome_toc.py:docstring of repomatic.awesome_toc, line 19.)
Todo
Delete this pruning pass once uv prunes stale exclude-newer-package
entries natively:
uv#18792.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/deps/uv.py:docstring of repomatic.deps.uv.prune_stale_exclude_newer_packages, line 3.)
Todo
Drop the py-walk dependency and parse .gitignore with wcmatch, already
imported here for globbing, once it reads gitignore files natively:
facelessuser/wcmatch#226.
Pick another parser first if
pacha/py-walk#11 ends with
py-walk retired: sly, its only dependency, already is.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/file_inventory.py:docstring of repomatic.file_inventory, line 15.)
Todo
Go back to get_parser_from_file in FileInventory.gitignore_parser,
and raise the py-walk floor to the release that carries the fix, once
pacha/py-walk#10 ships.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/file_inventory.py:docstring of repomatic.file_inventory, line 25.)
Todo
Stop excluding Zsh once shfmt formats those constructs:
mvdan/sh#1203.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/file_inventory.py:docstring of repomatic.file_inventory.FileInventory.shfmt_files, line 17.)
Todo
Swap the two reusable-workflow lanes in release.yaml to GitHub’s $/
self-repository syntax, and drop their suppression, once actionlint accepts
the form: it rejects $/ as a malformed ref today, per
rhysd/actionlint#711 and
rhysd/actionlint#732. The
publish-pypi step keeps ./ either way, since $/ resolves against the
workflow’s own commit rather than the release commit it checks out.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/github/workflow_sync.py:docstring of repomatic.github.workflow_sync, line 26.)
Todo
Switch this parser back to whenever, the prior implementation, once it grows a humanizer: whenever#277.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/humanize.py:docstring of repomatic.humanize.parse_iso_datetime, line 16.)
Todo
Widen the JSON branch beyond an iterable of dict[str, str] and a flat
dict[str, str], the two shapes it asserts on today, when a metadata
key needs a richer one.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/metadata/core.py:docstring of repomatic.metadata.core.Metadata.format_github_value, line 21.)
Todo
Carry the creation day as a non-accruing attribute beside commit and
release, so no star reading can collide with it, and let
repomatic.metric_chart.render_chart() read a by-age origin from it.
This is a store schema change: it adds a metric value that every consumer’s
own store-shape test enumerates, so it lands with a note to downstream
repositories rather than silently.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/metrics.py:docstring of repomatic.metrics.SOURCE_RANK, line 22.)
Todo
Declare the exemption once, instead of splicing it onto every frozen command
line, as soon as uv grows a configuration or environment knob for
--exclude-newer-package:
uv#20995. Glob exemptions
(astral-sh/uv#20788) and
pin-based bypasses
(astral-sh/uv#19864,
astral-sh/uv#18921) could settle it too.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/release/prepare_release.py:docstring of repomatic.release.prepare_release.SELF_PIN_COOLDOWN_EXEMPTION, line 27.)
Todo
Drop the YAML-block fixup in the mdformat post-process callback once
executablebooks/mdformat-myst#49
merges upstream. See _DIRECTIVE_YAML_OPTIONS_RE for the shape it repairs.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/tooling/tool_registry.py:docstring of repomatic.tooling.tool_registry, line 20.)
Todo
Drop the colon-fence fixup in the same callback once mdformat-myst ships
colon-fence support, via either
executablebooks/mdformat-myst#36
or
executablebooks/mdformat-myst#48.
See _ESCAPED_COLON_FENCE_RE for the shape it repairs.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/tooling/tool_registry.py:docstring of repomatic.tooling.tool_registry, line 27.)
Todo
Once lychee ships 0.25.0, the release expected to carry
lycheeverse/lychee#2250,
run the {#id} reproduction from
lycheeverse/lychee#2249
through repomatic run lychee, and report the result there, as that comment
commits to. The file:// docs-fragment entry in [tool.lychee] stays either
way: lychee reads the Markdown source, which holds neither MyST (target)=
labels nor the anchors directives generate at build time.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/tooling/tool_registry.py:docstring of repomatic.tooling.tool_registry, line 37.)
Todo
Move those integrity checks to __post_init__ if the registry ever becomes
user-configurable: a test only covers the specs shipped here.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/tooling/tool_registry.py:docstring of repomatic.tooling.tool_registry.BinarySpec, line 16.)
Todo
Move those integrity checks to __post_init__ if the registry ever becomes
user-configurable: a test only covers the specs shipped here.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/tooling/tool_registry.py:docstring of repomatic.tooling.tool_registry.ToolSpec, line 10.)
Todo
Give the mdformat entry a config_flag="--config" once mdformat accepts an
explicit config path, so it stops relying on discovery from the working
directory:
hukkin/mdformat#432 and
hukkin/mdformat#562.
(The original entry is located in /home/runner/work/repomatic/repomatic/repomatic/tooling/tool_registry.py:docstring of repomatic.tooling.tool_registry.TOOL_REGISTRY, line 7.)
Todo
Drop the [tool.X] translation layer for each tool that grows native pyproject.toml support, as lychee already has. The standing upstream requests, all still unshipped:
actionlint#623,
biome#9239,
gitleaks#2066,
zizmor#322.
The same request for shfmt (sh#1268) was declined.
Nuitka#3909 shipped in 4.2, but only for --project builds, which take their entry points from the project configuration. repomatic names one entry point per build on the command line, so the nuitka bridge stays.
(The original entry is located in /home/runner/work/repomatic/repomatic/docs/tool-runner.md, line 13.)
Todo
When sync-workflow-pins moves the uv pin of the setup-uv steps to 0.13.0 or later:
Delete the
Force native ARM64 Python on Windows ARM64step oftests.yaml, and theUV_PYTHONfallback in theInstall Pythonstep after it.Rewrite the
validate-archcomment oftests.yamlthat says uv prefers an x86_64 interpreter on aarch64.Build the two Windows binaries with
--managed-pythonin a canary run of_release-engine.yaml. If both passverify-binaryand the self-tests, pass the flag on every platform.Delete this entry, and the example that names the step in the
repomatic-auditskill.
When a Python version has no native build, uv 0.13.0 falls back to x86_64 with no error. The explicit request of the step fails there. Python 3.10 has none, and the test matrix already excludes it on windows-11-arm.
(The original entry is located in /home/runner/work/repomatic/repomatic/docs/upstream.md, line 194.)
Todo
When a markdown-it-py release carries the fix for executablebooks/markdown-it-py#445, run the reproducer from hukkin/mdformat#599 through repomatic run mdformat. Then update this entry and A known mdformat defect to match the result.
(The original entry is located in /home/runner/work/repomatic/repomatic/docs/upstream.md, line 263.)
Todo
When sync-tool-versions moves the mdformat-web pin past 0.2.0, run the reproducer from hukkin/mdformat-web#8 through repomatic run mdformat. Then update this entry to match the result.
(The original entry is located in /home/runner/work/repomatic/repomatic/docs/upstream.md, line 271.)
Todo
When a Nuitka release carries the fix for Nuitka/Nuitka#4087, add it to the matrix of the ccache-type-description.yaml workflow in kdeldycke/nuitka-test, and run it. Then update this entry and Compile caching to match the result.
(The original entry is located in /home/runner/work/repomatic/repomatic/docs/upstream.md, line 281.)
Todo
Collapse the job’s two Ruff steps, check then format, into one invocation once Ruff unifies linting and formatting behind a single command: astral-sh/ruff#8232. The autopep8 step goes the same way once Ruff wraps long comments: astral-sh/ruff#7414.
(The original entry is located in /home/runner/work/repomatic/repomatic/docs/workflows.md, line 119.)