Compare negatives now opens the concept's comparison (app.js a599-616,
style.css 1155-1179) as a section.surface right after the timeline panel:
h2 "Compare negative variants", p "Baseline compared with <name>. Choose
another red dot to change the comparison.", a .compare-grid of two
.compare-item negative blocks (baseline, selected), p.small "Added terms",
then span.diff-added "+ term" per added term or p.small "No added terms.".
Choosing another red dot updates the same section in place; pressing
Compare negatives again removes it.
D25: the baseline is the oldest active variant; with no selection the
selected side falls back to it, as the concept's v does. The pure
addedTerms(base, selected) in history-state.mjs is the concept's rule:
comma split, trim, drop empty terms, exact case-sensitive difference that
keeps the selected order and repeats.
D46 (new deviations):
- lanes are newest first, so the baseline is the lowest-id active variant,
not the first lane; while the variant page has more, the oldest is not
loaded and the section says "Load more negative variants to reach the
baseline." instead of guessing;
- the two blocks are named "Baseline" and "Selected" (regions and copy/send
actions), so no name repeats on the page;
- Compare negatives is disabled when there is no active variant.
Selector mapping: none changed; the section is new
(.library-history .timeline-panel + section.surface).
Tests: unit "added terms split, trim and exact-diff like the concept";
workspace-history "compare toggles, follows the selected dot and stacks at
390" and "compare waits for the page holding the oldest active negative"
(all failed before the change).