WIP: bread-theme: remove ~/.cache/wal fallback after one release cycle #51
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/eco-35-retire-wal-fallback"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Merge gate: do not merge or release this preparation PR until both breadpaper and BOS have shipped the bread-owned palette cache path for at least one full release cycle. PAPER-5 and BOS-50 being marked done and ecosystem v0.8.0 existing do not establish that cycle. Record the actual consumer release evidence before clearing this gate.
load_palette now reads only the bread cache, then defaults, even when legacy wal data is present or the bread cache is invalid. Remove unused wal_cache_path and write_wal_cache APIs. Keep wal_cache_json because the bread-owned cache still uses it and deliberately supports third-party templates; preserve explicit wal-shaped JSON imports.
Verified all exact repository CI commands locally: pin lint, fmt, default/gtk/extract workspace clippy and tests separately, and extract workspace build. Cache regression coverage verifies ignored legacy data, valid bread data, and invalid bread data returning defaults. No actual user caches/configs, installed binaries, desktop sessions, or releases were changed.
Closes #35
Moved this PR card to REVIEW for independent code review. The release gate still applies: do not merge or release until breadpaper and BOS have each shipped the bread-owned cache path for at least one full release cycle, with release evidence recorded. Local tags show breadpaper v0.2.0 (2026-09-29) and BOS v0.6.2 (2026-09-19), which do not establish that the required cycle has completed.
Independent review of draft PR #51 at
28529410601f42177bab12a1876b6b7a19e6463dAcceptance interpretation: (1)
load_palettereads the bread-owned cache and defaults when it is absent or invalid, without consulting legacy~/.cache/wal/colors.json; (2) remove the obsolete path and write APIs; (3) preserve explicit wal-shaped JSON parsing and serialization for imports and templates; (4) tests assert the observable fallback behavior.bread-theme/src/palette.rs:72-80reads only the bread-owned path and defaults on missing or invalid content. The old path and write APIs are removed frompalette.rsand the public exports inlib.rs:18-20;wal_cache_jsonand the JSON parser remain. The regression inoutput.rs:519-548demonstrates that valid legacy data is ignored, the new cache is read, and invalid new-cache data returns defaults despite a valid legacy file. CI is green for this head.I found no implementation defect in the reviewed diff. The PR is intentionally draft; Forgejo's
mergeable=falsereflects draft state, not content conflicts. The explicit full release-cycle gate remains unsatisfied until both breadpaper and BOS ship the bread-owned path and the actual consumer releases are evidenced. Keep PR #51 draft and do not merge or release it before that gate. Bread-ecosystem is release-sensitive, so no merge attempted.Release-gate evidence for ECO-51 (recorded 2026-10-02)
Code review was already clean. This records the actual consumer release evidence the gate asks for. Conclusion: the gate is not satisfied, so PR #51 stays draft and unmerged and ECO-35 stays in REVIEW.
Code verification on head
2852941cargo fmt -p bread-theme -- --checkcleancargo clippy -p bread-theme --all-targets --locked -- -D warningscleancargo test -p bread-theme --locked122 passed, 0 failedcargo test -p bread-theme --locked --features extractgreenfrom_wal_jsonis still reached from non-test code (bread-theme/src/output.rs:110,120,122), so dropping the legacy fallback neither orphans it nor trips dead_code.wal_cache_pathandwrite_wal_cachefrom the public API is safe: no repository in the workspace (bos, breadbar, breadpaper, breadbox, breadpad, bos-settings, breadmon, breadcloud) references either symbol.Consumer release evidence
BOS (blocking):
v0.6.2.v0.2.0throughv0.6.2still shipsiso/airootfs/etc/skel/.cache/wal/colors.jsonandiso/airootfs/etc/skel/.cache/wal/wal.iso/airootfs/etc/skel/.cache/bread/palette.jsonexists onmainonly. It was added by3f37255("feat: drop python-pywal, move skel palette to bread-theme cache"), which is contained in no tag.breadpaper (partially satisfied):
v0.2.0-rc.1andv0.2.0(both 2026-09-29) contain04cf194(#6), which callsbread_theme::write_global_palettepinned to bread-ecosystemv0.8.0.v0.8.0:bread-theme/src/output.rs:266-273writes topalette_cache_path(), which resolves to$XDG_CACHE_HOME/bread/palette.json. breadpaper has shipped the bread-owned path.v0.2.0is the only such release and it is three days old, so no later cycle has run.What would clear the gate
3f37255.v0.2.0.Until both exist, do not merge PR #51 and do not release the removal. ECO-35 and ECO-51 remain in REVIEW.
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.