Skip to content

highway(operator-surface) wave 3: one source of visual truth — zero literal colour/font/size outside the token module (Core 4) - #84

Merged
Brian Krabach (bkrabach) merged 5 commits into
mainfrom
highway/os-wave-3
Sep 5, 2026
Merged

highway(operator-surface) wave 3: one source of visual truth — zero literal colour/font/size outside the token module (Core 4)#84
Brian Krabach (bkrabach) merged 5 commits into
mainfrom
highway/os-wave-3

Conversation

@bkrabach

Copy link
Copy Markdown
Collaborator

The visual-truth lane (item np3) of the hw-operator-surface highway, integrated onto wave-2 main.

What landed (Core 4 — one source of visual truth):

  • Inline style= sites carrying a LITERAL colour/font/size: 66 → 0. <style>-block literals outside the token module (webtrust's retired #0D0D0C/#F2EEE6/#D9A253 palette): 40 → 0 — webtrust and the PWA offline page now consume the token set. Repeated spacing/type literals became utility/component classes in webtheme.CSS rather than 66 one-line substitutions.
  • Exemption register of computed-geometry inline sites: 23 → 8 (state-bar flex ratio, two throughput bar widths, ruler/tick/age-bar geometry, two status-mix segment widths). 47 TOKEN-bucket inline attributes remain (permitted). Backlogged 2's trigger ("register reaches zero") did not fire.
  • One rendered behaviour change, recorded not folded in: the is-zero Blocked KPI icon can finally quiet itself (an inline alarm colour had outranked .kpi-card.is-blocked.is-zero .k .icon).

Integration (orchestrator): 14 union conflicts (the lane forked before core10 + wave-2 landed). Register RE-MEASURED on the union tree (webtheme sat +54 lines from the lane's base) and set in both the probe and OSV1-006's notes. LAST_RUN.json re-recorded (2 runs, every asserted field byte-identical) — which caught a specificity regression the lane's inline→class move introduced: .axis-label[data-…] (0,2,0) lost to .wt-observatory .svg-chart .axis-label (0,3,0) that inline had always outranked, silently reverting chart ink (979 vs 1,161 --watch px on dark L1) and dropping .val-label's fill to SVG-black. Scoped through .svg-chart; sweep reads 1,161 again; two guards added in test_chartsvg.py, each demonstrated failing pre-fix.

Ledger: OSV1-005 (Core 4) VIOLATION → CONFORMS; OSV1-025 (Conformance 6) GAP → CONFORMS (good half undeferred, passing); OSV1-032 (Freeze 6, register complete) GAP → CONFORMS; OSV1-031 (Freeze 5) re-pinned 4 red Core rows (003, 008, 010, 012 — all measured). Tally → 26 CONFORMS / 4 VIOLATION / 3 GAP / 3 N-A.

Verified on the union: pytest ledger/checks 60 · make ledger-mutate 63/63 · Tier-A 39 passed / 3 xfailed / 0 failed · Tier-B 52 passed / 35 xfailed / 0 failed · pyright 0 · ruff clean · unit+integration+cli 1421 passed. Two failures are not this change: the documented doctor live-sweep check, and a pre-existing CLI test-isolation defect (test_list_on_a_project_with_no_matching_items_exits_zero_with_empty_list reads a session-scoped project another module deferred items into — fails identically on main; filed separately).

🤖 Generated with Amplifier

Amplifier and others added 5 commits September 5, 2026 04:39
…size outside webtheme

Core 4 / OSV1-005 + OSV1-032 close.

- webtheme.py: split TOKENS_CSS out of CSS (CSS byte-identical, verified);
  add SINGLE_SOURCE_CSS (spacing utilities on the 4px scale, histogram,
  state fills, attn rows, page headings, textareas, chart fills) and
  TRUST_CSS + trust_style_tag().
- webtrust.py: ships no stylesheet and no style tag at all; emits the token
  module's own tag, which inlines the live tokens (still self-contained).
- webpwa.py: the offline body carries no colour/font/size; asks the UA via
  <meta name="color-scheme"> instead.
- webapp/webbrowse/widgets/chartsvg: 66 literal inline sites -> 0.
- exemption register 23 -> 8 (laundered literals and computed colours became
  classes/data attributes; only real computed lengths remain).
- ledger: OSV1-005 VIOLATION->CONFORMS, OSV1-032 GAP->CONFORMS, OSV1-006
  register rewritten; probes retargeted, mutations rewritten (57/57 proven).
- declared out-of-lane: OSV1-003 probe guards flipped sides, OSV1-024/-025
  re-derived from their passing pairs, OSV1-031 tally 9 -> 6, and the two
  leftover strict-xfail markers removed from the Tier-A kit.
…red, OSV1-031 re-counted, Tier-B run re-recorded

Union of lane/visual-truth (4 commits) onto wave-2 main (6c2e9fa).

RE-MEASURED ON THE UNION TREE, never transcribed from a lane's own base:
- OSV1-006's exemption register: webtheme.py's three computed sites sit at
  4197/4216/4223 here, not the lane's 4143/4162/4169 (core10 and the lane's
  own CSS both shifted the module). The probe's EXEMPTION_REGISTER and the
  row's notes table are both re-derived from the re-run census.
- OSV1-031 (Freeze 5): 4 red Core rows on the union (003, 008, 010, 012), not
  the lane's 6 -- it counted a base where OSV1-015/-016 were still red and the
  browser tier did not exist. Title, notes tally and probe pin moved 5 -> 4.
- Tier-B re-recorded on this tree (chromium 148.0.7778.0 / playwright 1.60.0)
  and run twice: 290 of 294 fields byte-identical, including every field any
  row asserts. OSV1-003's numbers are unchanged -- a calm L1 still paints 97
  `--blocked` pixels, and the three discrimination arms still read
  10 531 / 264 / 16 681.

CONFLICTS RESOLVED AS UNIONS, never pick-a-side: OSV1-003 keeps wave-2's
recorded-sweep assertions AND takes the lane's palette guards flipped to the
absent side; OSV1-003's mutation pair keeps both the calm-pixel counterfactual
and the returning-palette guard; OSV1-024 keeps both of its mutations.

ONE REGRESSION FOUND BY THE RE-RECORD, AND REPAIRED. The lane moved chartsvg's
ink out of inline `style=` into `.axis-label[data-watch]` / `[data-val]` /
`[data-today]` (specificity 0,2,0), which LOSES to the pre-existing
`.wt-observatory .svg-chart .axis-label{fill:var(--ink-tertiary)}` (0,3,0) that
an inline attribute had always outranked. The watch band's axis labels, the
histogram's value labels and the velocity chart's today tick therefore stopped
painting their own ink, and `.val-label` lost its default fill entirely (SVG
falls back to black -- invisible on the dark ground). Measured, not reasoned:
979 `--watch` px on a dark L1 against 1 161 before. Every chart-ink selector is
now scoped through `.svg-chart` (>= 0,3,0 and later in the cascade), and the
re-recorded sweep reads 1 161 again -- byte-identical to the pre-lane value.
Two new discriminating guards in tests/unit/test_chartsvg.py, each demonstrated
failing against the pre-fix stylesheet.
@bkrabach
Brian Krabach (bkrabach) merged commit 065da04 into main Sep 5, 2026
2 checks passed
@bkrabach
Brian Krabach (bkrabach) deleted the highway/os-wave-3 branch September 5, 2026 13:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants