Cleanup + performance release. Honors the --tool both deprecation from v0.6.0 and delivers a measured 3× speedup on doctor and pilot warm calls via cached hardware probing.
Highlights
Removed (breaking)
--tool bothremoved. The CLI exits with the standard three-line error block when it's used. Replace with--tool opencode,openclaude. See Upgrading._normalize_persisted_intakeback-fill helper removed. Aproject.jsonwritten by 0.5.x that was never updated through 0.6.x silently ignores its legacytool/agentkeys and falls back toDEFAULT_TOOLS(opencode). Re-runcoding-scaffold setup runto regenerate.IntakeAnswers.agentproperty removed. UseIntakeAnswers.tools[0].- Stale
"both"-handling branches ininstallers.build_install_plansandcli._maybe_setup_knowledgecleaned up.
Changed
-
probe_hardware()is now cached at$XDG_CACHE_HOME/coding-scaffold/hardware.json(default~/.cache/coding-scaffold/hardware.json). 1-hour TTL keyed on OS / arch / Python version so it self-invalidates when any change.Surface Cold Warm Speedup doctor243ms 78ms 3.1× pilot235ms 79ms 3.0× New
--no-probe-cacheflag ondoctor/pilot/probeforces a fresh probe — use after installing a new local runtime likeollama. -
CODING_TOOLS/VALID_TOOLSconsolidated into one source of truth inintake.py. The drift-detection test that policed the previous duplication is replaced with a one-line derivation invariant.
Tests
- pytest-xdist enabled. Test suite ~22s sequential → ~3s parallel (
-n auto). 637 tests passing.
Upgrading from 0.6.x
uv tool upgrade coding-scaffold # or: pipx upgrade coding-scaffold
coding-scaffold setup update --target .If any of your scripts still call --tool both, replace with --tool opencode,openclaude. If you have a project.json written by 0.5.x that was never updated through 0.6.x, run setup run to regenerate it in the modern shape. See the Upgrading guide for the full breaking-change story.
What's not here
Release-cycle discipline matters: this release honors only the deprecation promise from v0.6.0 and delivers one real perf optimization. No new features.