Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit a969d63a40cc004efb2bd6a9e67ca92651e32566
parent 0c68f82cd6512599cde6d96887fe6352f0377600
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Sun, 27 Sep 2026 14:58:32 -0400

plans: slice MC as shipped — the mark's dims at 3:1 (#6b5d47 3.09, #586977 3.06), lit ≥ 2:1 over them, the chart validated after the Violet/Blue swap (every adjacent pair passes); brand-and-themes' icon palettes updated with a dated note

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
Mplans/brand-and-themes.md | 15++++++++++++---
Mplans/release-10.md | 93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 105 insertions(+), 3 deletions(-)

diff --git a/plans/brand-and-themes.md b/plans/brand-and-themes.md @@ -49,10 +49,19 @@ Everything is in a 512 viewBox. The shapes, back to front: | line 4 | rect x112 y380 w152 h44 rx22 | dim | Icon palettes: -- **Child site:** ground `#0c0a08`, dim `#3b3327`, lit = the site accent's on-dark value. -- **Archilyzer** (homepage, hub, editor): ground `#151b20`, dim `#3f4c56`, lit `#e7edf1` +- **Child site:** ground `#0c0a08`, dim `#6b5d47`, lit = the site accent's on-dark value. +- **Archilyzer** (homepage, hub, editor): ground `#151b20`, dim `#586977`, lit `#e7edf1` (bone). The parent mark is achromatic. +The dims were raised on 2026-09-27 (release 10, slice MC; `release-10.md`), from `#3b3327` (1.59:1 +on ink) and `#3f4c56` (1.97:1 on slate), which the operator found too faint: on the dark base the +ink tile merges into the page and the mark read as one lit line. Two rules now hold every icon +palette (`brand.ts`, enforced in `brand.test.ts`): **a dim reaches 3:1 on its ground** (WCAG +1.4.11) and **every named lit value stands 2:1 above its dim**. The new dims keep the old hue and +saturation and sit just over 3:1 (3.09, 3.06), because the two rules multiply to lit-on-ground and +the darkest lit values leave little room: Vermilion is 2.28:1 over the child dim, and Signal on +the Media slate 2.05:1. + Icon variants: - `any`: `rx=112`. - `maskable`: full-bleed ground, the mark scaled 0.8 about (256,256). @@ -1271,7 +1280,7 @@ S4 ships after release 10's cut and is **not part of the site rollout**: it touc ### Decisions (operator, 2026-09-26) - **Mark M2 · Signal.** The parent mark's geometry, lit in Signal: ground `#151b20`, dim `#3f4c56`, - lit `#5fa8a0`. The avatar uses the maskable variant (scale 0.8 on full-bleed ground). + lit `#5fa8a0`. (Dim `#586977` since 2026-09-27, with the parent mark's; see "The design".) The avatar uses the maskable variant (scale 0.8 on full-bleed ground). - **Lockup "flush · caps matched".** The `Archi|lyzer` wordmark sits over `MEDIA`: - Both are Archivo at wdth 118. The wordmark is 720 / 380 at -0.01em; MEDIA is 700, in Signal. - MEDIA's size is **1.035×** the wordmark's, and it is letter-spaced to exactly the wordmark's diff --git a/plans/release-10.md b/plans/release-10.md @@ -1983,6 +1983,99 @@ one colour. its chart colour, as today. Rollout: every export site and the hub rebuilt for the hint; the homepage and the hub rebuilt after the accents are set. +### Slice MC, as shipped — mark contrast (2026-09-27) + +The operator's asks (2026-09-27): **"the line details inside have too little contrast with the +background"** — the Found-line mark's three dim lines were 1.59:1 on the child ink tile (`#3b3327` +on `#0c0a08`) and 1.97:1 on the Archilyzer slate (`#3f4c56` on `#151b20`); on the dark base the +header's ink tile merges into the ink page and the mark read as a lone lit line. And the accents +were swapped through the site form (the parent): **hasanalyzer = Violet, bonnellyzer = Blue**, so the +homepage chart is re-validated. Branch `r10/mark-contrast` off `main` `51c5b562`, worktree +`/home/user/Projects/r10-mark-contrast`, one Opus implementer. Scratch files `mc-*` in the job's +`tmp/brand`. + +**The values.** Each new dim keeps its old hue and saturation (warm ink h36 s20; slate h206 s15) and +sits just over 3:1, because the two rules below multiply to lit-on-ground: with the dim at 3:1 the +darkest lit values (Vermilion 7.03:1 on ink, Signal 6.28:1 on the slate — darker than Blue, 8.19) +cannot sit more than ~2.3 and ~2.1 above any dim. + +| palette | dim before → after | on its ground | tightest lit over the dim | +|---|---|---|---| +| child (ink `#0c0a08`) | `#3b3327` → **`#6b5d47`** | 1.59 → **3.09** | Vermilion 2.28, Signal 2.31, Blue 2.65, Violet 2.74, Sakura 2.81, Green 3.04, Brass 3.26 | +| Archilyzer (slate `#151b20`) | `#3f4c56` → **`#586977`** | 1.97 → **3.06** | bone 4.80; Signal (the Media mark) 2.05 | + +The rules, in `brand.ts` beside `ICON_PALETTES` and enforced on every icon palette: +`MIN_MARK_DIM_CONTRAST = 3` (WCAG 1.4.11, a graphic that must be seen) and +`MIN_MARK_LIT_OVER_DIM = 2` (the lit line at least double the dim's luminance: the most both +palettes can hold with the dim at 3:1). A custom accent is fitted only to the 4.5:1 ground rule, so +one at that floor sits ~1.5:1 over the dim (the e2e fixture's `#cc3366` → `#d14574`: 1.47:1); its +hue carries it. Rendered at 16, 32, 56 and 128 px on the ink and light pages before choosing +(`mc-sheet-{ink,light}.png`). + +**The chart after the swap: every adjacent pair passes** (`mc-palette.md`, `mc-layers.log`: Slice +AC's script with the new mapping, `siteChartColors` → each base's `--chart-N` → the dataviz +validator against `--chart-surface`): + +| order | layers | adjacent, light / sepia / dark | all pairs | +|---|---|---|---| +| today (Jer, Ani, Bon, Has, Rek) | amber · magenta · blue · violet · green | PASS; CVD 13.1 / 11.1 / 11.0, normal 17.7 / 15.3 / 16.7 | CVD WARN 6.2 / 6.1 / 6.9, normal ≥ 15.3 | +| Has and Rek swapped | amber · magenta · blue · green · violet | PASS; CVD 13.1 / 13.4 / 11.0, normal 19.6 / 19.7 / 21.7 | the same set | + +The all-pairs WARN is `--chart-1..5`'s own 6–8 floor band, the same pairs as AC's (Green–Amber, +Green–Magenta on dark). The tightest adjacent pair is Violet–Blue on sepia (normal 15.3), which AC +also had adjacent in the other order. No chart change is owed. + +**What shipped** +- `ICON_PALETTES` child dim `#6b5d47`, Archilyzer dim `#586977`; the two rules as exported constants. +- `MEDIA_PALETTE` takes ground and dim from `ICON_PALETTES.archilyzer` instead of a copy; the + banner's field (`#1e262d`) stays under the mark's dim (a test holds it). +- Regenerated from the code, not by hand: `editor/app/icon.svg` (`markSvg`, parity test green) and + umtool's `brands/archilyzer-media.json` (`brand-media.ts --video-kit`). The header `BrandMark`s, + the export/hub/homepage icon routes and the favicon read the palette, so nothing else changed. +- Tests: `brand.test.ts` holds both rules on all seven accents over the child dim and bone over the + slate, and pins every ratio; `brandMedia.test.ts` holds them on mark M2. The export, hub and + homepage `brand.spec`s pin the new computed fills (`rgb(107, 93, 71)`, `rgb(88, 105, 119)`). +- The YouTube channel assets are regenerated at `~/reports/archilyzer-media/brand/` (avatar, + watermark, banner, `INDEX.html`); the previous set is kept in `mc-media-before/` + (`mc-avatar-compare.png`, `mc-banner-compare.png`). + +| sha | what | +|---|---| +| `c05e6daf` | `common:` the dims, the two rules, `MEDIA_PALETTE` from `ICON_PALETTES`, 3 unit tests, `icon.svg` + the video kit regenerated, three e2e fills | +| `79d687c9` | `changelogs:` a new `[Unreleased]` above `[0.9.2]` in export and editor; a bullet in the homepage's | +| _this_ | `plans:` this record; `brand-and-themes.md`'s icon palettes, with a dated note | + +**Gates** (logs `mc-*.log`): +- **tsc** clean (65 s) on the code tree of `c05e6daf`; the later commits are Markdown only. +- **common 2,034/2,034** (2,031 + 3), editor unit **85/85**, `test:scripts` **174 + 1 skipped** (the + report-to-video tests among them), mcp **269/269**, homepage unit **2/2**. +- **They bite:** with the old dims, 9 of the 23 `brand`/`brandMedia` tests fail, both new rules among + them (`child: dim #3b3327 on #0c0a08 is 1.59:1`); with a too-bright child dim `#807055` the 2:1 + rule fails (`child · signal … 1.74:1`). +- **Builds:** editor ok (35 s; the built `icon.svg` carries `#586977`); export site ok (22 s; + `out/icons/icon.svg` 3× `#6b5d47`); export hub ok (24 s; 3× `#586977`, `out/ask` present); + homepage ok (14 s; 3× `#586977`). The primary's `export/public` byte-identical before and after + the builds and the e2e. +- **e2e** (no queue wait, nothing failed, so no re-runs): export `brand` + `pwa` + `site-branding` + **15 passed** (29 s); `e2e:hub` **25 passed** (1.0 min); homepage full **28 passed** (44 s); editor + `branding.spec` **3 passed** (23 s). +- **Visual** (`mc-header-compare.png`): the live Jeralyzer (Brass) and Bonnellyzer (reader accent Blue) + headers at 2× DPR on dark and light, as served and with only the dim set to `#6b5d47` — the value + the build now inlines; plus the favicon at 32 px (1:1 and 4×) and 16 px, before and after, for + Brass, Blue and the parent bone, rendered by `renderIconPng` (the "before" 32 px render is + byte-identical to live Jeralyzer's `/icons/icon-32.png`). After: four lines on both bases; the lit + line is still the found line. + +**Found and left** +- **On the dark base the ink tile still merges into the ink page** (both `#0c0a08`): the mark now reads + as four lines, but not as a tile. A hairline ring or a lifted tile on dark would fix it; not asked, + and it changes the mark's silhouette, so it is the operator's call. +- **The live sites carry none of this until rebuilt:** every export site and the hub (the site mark and + icons), the homepage (the parent mark), and the editor on its next restart (`icon.svg`, sidebar). + Bonnellyzer still serves Violet and Hasanalyzer Blue until they, the homepage and the hub are + rebuilt for the swap. The regenerated YouTube picture, watermark and banner are the operator's to + upload in Studio (`INDEX.html` has the steps). + ## Rollout Nothing is rolled out, except that **Jeralyzer is already on the brand, in Signal** (a build-deploy