diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-04 18:48:25 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-04 18:48:25 -0500 |
| commit | f613bd63811d84816f88d26b33323e1b0f395793 (patch) | |
| tree | 8e9ec536f66ae426babdb1756cafc41a1bd46e0c /docs/specs | |
| parent | f407959b4c30fa809722b62266640711c916a772 (diff) | |
| download | dotemacs-f613bd63811d84816f88d26b33323e1b0f395793.tar.gz dotemacs-f613bd63811d84816f88d26b33323e1b0f395793.zip | |
The spec's package-scope premise is false against the generator. It assumes the non-org bespoke packages keep their curated dupre seeds, but apply_default_face_seeds overwrites every bespoke face with the Emacs-default snapshot whenever emacs-default-faces.json is present, so org opens empty and the rest open on light-theme hexes. "Keep the curated defaults" and "the seeded page reads as a coherent dupre" then contradict, and the dupre-revised.json emitter can't be pure-Node because the non-org colors live in Python.
Phase 1 stands. I paused Phase 2 pending a spec revision that picks the direction: reseed the non-org packages from the curated dupre dicts, or keep the snapshot hexes.
Diffstat (limited to 'docs/specs')
| -rw-r--r-- | docs/specs/theme-studio-seeding-engine-spec.org | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/docs/specs/theme-studio-seeding-engine-spec.org b/docs/specs/theme-studio-seeding-engine-spec.org index 9e943b3b..25fab26c 100644 --- a/docs/specs/theme-studio-seeding-engine-spec.org +++ b/docs/specs/theme-studio-seeding-engine-spec.org @@ -356,3 +356,10 @@ response resolved; everything else was woven into the body as written. and reseed behavior, package preservation rules, artifact round-trip tests, and vNext boundaries. - *Artifacts:* No review file written; no blocking findings. + +** 2026-07-04 Sat @ 18:33:29 -0500 — Claude Code — implementation finding (Phase 2 blocked) +- *What changed or was recommended:* Phase 1 landed clean (commit f407959b). Starting Phase 2, tracing the actual generator surfaced that a load-bearing premise of this spec is false against the code. The spec's Package scope says the ~20 non-org bespoke packages "keep their curated =APPS= seed colors" as the state the engine preserves and reseed resets to. They don't: =apply_default_face_seeds= (=app_inventory.py:139=) unconditionally overwrites *every* bespoke package face with =defaults.seed(face, False)= — the Emacs-default snapshot color — whenever =emacs-default-faces.json= is present (it is). So in the built page the curated dupre =SEED= dicts in =face_data.py= (=ORG_SEED=, =MAGIT_SEED=, …) are shadowed and never live: org faces open empty, and magit/elfeed/mu4e/the rest open on light-theme snapshot hexes (e.g. =magit-section-heading= #8b6508 on #f2f2f2), not their dupre curated colors. +- *Why it blocks Phase 2:* Two acceptance criteria then contradict under the real data. "Non-org packages keep their curated =APPS= defaults" and "a Chrome eyeball confirms a coherent dupre" cannot both hold — seeding syntax/UI/org to dark dupre while the package tiers stay on light snapshot hexes reads incoherent. A second wrinkle: =seed()= (JS) emits only org among packages by design, but the non-org dupre colors live in =face_data.py= (Python, name-resolved), so the =dupre-revised.json= emitter cannot be pure-Node — it needs a Python contribution or a different source for the non-org package colors. +- *The fork (Craig to decide before the spec is revised):* (1) reseed the non-org packages from the curated dupre =SEED= dicts in =face_data.py=, resolved against a dupre palette — coherent, honors "curated," but the seeded build must stop =apply_default_face_seeds= from shadowing them and the emitter needs a Python side; or (2) keep the Emacs-default snapshot hexes — literally "keep current defaults," but the theme reads incoherent and the coherence gate fails. +- *Disposition:* Craig chose to pause Phase 2 and revise the spec first (its "curated seeds are live" premise needs correcting). Spec kept =DOING=; Phase-2 and test-surface build tasks marked =:blocked:= in =todo.org= with a =VERIFY= capturing the direction decision. Phase 1 (=seed()= + =#seedtest=) stands. +- *Artifacts:* the =todo.org= seeding-engine subtree (Phase-2 subtask + VERIFY). |
