Skip to content

blog: Colors Are Coordinates - #170

Open
bdelanghe wants to merge 3 commits into
mainfrom
feat/blog-colors-are-coordinates-clean
Open

blog: Colors Are Coordinates#170
bdelanghe wants to merge 3 commits into
mainfrom
feat/blog-colors-are-coordinates-clean

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

A new blog post — the perceptual color model as an essay — plus its content-catalog entry.

Files (2): blog/colors-are-coordinates.md (the post) + data/audit/catalog.json (regenerated by emit-catalog so the prose-catalog gate stays current). Nothing else.

The essay: the whole color arc as narrative — perception has a resolution (the JND) so the color space is finite; the OKLCh axes (L spent on contrast, C gamut-capped, H free); the CSS named-color collapse (maroon is red, aliceblue lies about its hue); one-axis-multiply derivation; AAA mutes color by gamut geometry, not taste; the 8,149-color pinned grid; and construct-valid, don't validate — proven in Lean.

Rendered by the site's own generator (scripts/gen-blog.mjs), plain markdown (no tables), one external GitHub link.

PR checklist

  • Independent PR — one post + its catalog entry; no build/script/token/nav changes. Based on main (clean).
  • Verified locallygen-blog, emit-catalog --check, check-reader, check-seo, check-jargon, check-emphasis, check-outline, check-copy-coverage all pass; renders to dist/blog/colors-are-coordinates.html and lists in the blog index.
  • No duplication / no unrelated changes.

Merge + the hermetic Nix → Cloudflare deploy remain gated behind CI + human approval.

🤖 Generated with Claude Code

https://claude.ai/code/session_01V6j1N17T8exXeF8S6r99EM

New post (blog/colors-are-coordinates.md) rendered by gen-blog.mjs; content catalog
(data/audit/catalog.json) regenerated via emit-catalog to include its prose. The essay: the
color arc as narrative — JND makes the space finite; OKLCh axes (L=contrast, C=gamut, H=free);
named-color collapse (maroon IS red, aliceblue lies); one-axis-multiply derivation; AAA mutes
color by geometry; the pinned grid; construct-valid-not-validate, proven in Lean.

Verified locally: gen-blog/emit-catalog/check-reader/check-seo/check-jargon/check-emphasis/
check-outline/check-copy-coverage all PASS. Plain markdown, one github link.

Independent PR — one blog post + its catalog entry; no build/script/token/nav changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V6j1N17T8exXeF8S6r99EM
New section "A palette is a Sudoku" before the close — the palette isn't picked, it's forced:
board (color space), cells (color uses), forces (JND quantizes, gamut bounds, contrast couples
into bands + a moat, so accessibility mutes color as a consequence). The givens are the hues
(the one free axis); everything else is a forced completion (16 choices + 26 forced). Colors
don't fill the constraints; the constraints fill them.

Catalog regenerated (453 prose blocks). Verified: gen-blog, emit-catalog --check, check-reader/
seo/jargon/emphasis/outline all pass. Plain markdown (prose + a list), no tables.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V6j1N17T8exXeF8S6r99EM
@bdelanghe

Copy link
Copy Markdown
Contributor Author

Status + the one remaining step (needs the Nix toolchain)

Content-complete and green on everything runnable outside the hermetic build: the post + the "A palette is a Sudoku" section render via gen-blog.mjs and pass check-reader, check-seo, check-jargon, check-emphasis, check-outline, emit-catalog --check, plus semantic, axe, conformance, contracts, and site/site. The catalog (data/audit/catalog.json) is regenerated and committed (453 prose blocks).

One gate still red — structure-audit: the new blog page makes the site 11 pages, so integrity/structure-audit/structure.json is stale and needs regenerating. That regen needs the site's pinned toolchain (the vendored audit.mjs imports linkedom and expects the Nix/CI Node), so it can't run in a plain sandbox. To finish, from a Nix dev shell (or after npm ci):

npm run build
STRUCTURE_BASELINE=integrity/structure-audit/structure.json \
  node vendor/conformance-kit/integrity/structure-audit/audit.mjs dist
git add integrity/structure-audit/structure.json && git commit -m "chore: regenerate structure.json for the new blog page"

Then CI goes green and it's ready to merge → hermetic Nix / Cloudflare deploy (gated, human-approved).

(Also fixed vs the earlier #169: branched clean off main — this PR is exactly the post + its catalog entry, no stray flake.nix.)

…robust)

CVD attacks hue, leaves lightness intact → the contrast L-band is also the color-blindness
defense (legible by construction). Never carry meaning by hue alone. The post's warm/cool
palette rides the yellow-blue axis red-green CVD keeps, so it's robust. Catalog regenerated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V6j1N17T8exXeF8S6r99EM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

1 participant