I2747 — Every code block on every surface is highlighted by one engine with one palette
Highlight every code block majordomus ui and the executable's reports render with syntect, the engine Zola already uses for the site, emitting the same class vocabulary; generate one stylesheet for both themes from the design tokens and use it on the site, the UI and the handbook; remove highlight.js and any CDN highlighter; add a gate that refuses a second highlighter.
READY wave 0 · p1 · implementation profile · parallel safe
Ready. Every dependency is done, so majordomus plan start I2747 will be accepted.
Objective
Highlight every code block majordomus ui and the executable's reports render with syntect, the engine Zola already uses for the site, emitting the same class vocabulary; generate one stylesheet for both themes from the design tokens and use it on the site, the UI and the handbook; remove highlight.js and any CDN highlighter; add a gate that refuses a second highlighter.
Why
ADR 0166 decision 7. Code is highlighted by syntect (site), highlight.js 11.9 fetched from a CDN (share/ui/ui.js) and the handbook's own scripts, with three palettes.
Current state
site/config.toml highlights with ayu-light and ayu-dark classes; share/ui/ui.js loads highlight.js from cdnjs; the handbook has its own.
Desired state
One engine, one class vocabulary, one generated palette; scripts/ci/highlighter-check refuses hljs, highlight.js, prism or shiki on any surface.
Scope
- apps/majordomus-cli/Cargo.toml
- Cargo.lock
- apps/majordomus-cli/src/ui
- apps/majordomus-cli/src/web
- share/ui/ui.js
- share/ui/ui.css
- share/design
- site/config.toml
- scripts/site-build
- handbook
- scripts/ci/highlighter-check
- .ai/repo/automation/inventory.jsonl
- test/cases/3107_one_highlighter.sh
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- A code block rendered by majordomus ui carries the same classes as the same block on the site
- No surface loads highlight.js or a CDN highlighter, and the gate refuses one planted
- The executable's build time and size change are measured and stated in the pull request
Validation
- scripts/ci/highlighter-check
- bash test/run.sh 3107_one_highlighter
Evidence required
- one_highlighter_case
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I2747.yaml. Read it back with majordomus plan show I2747.