Skip to content

BLD-001: token contract resolves on Commons, Commons night and Stage - #4624

Merged
hellofrequencylab merged 76 commits into
mainfrom
claude/project-thread-mu2cbb
Nov 4, 2026
Merged

hellofrequencylab merged 76 commits into
mainfrom
claude/project-thread-mu2cbb

Conversation

@hellofrequencylab

Copy link
Copy Markdown
Owner

What

BLD-001, the token map. The 45 contract names now resolve correctly in all three of Frequency's rooms: Commons, Commons night and Stage. The handoff's --th-* editor roles also point at contract names now.

Why

The Frequency contract (--c-canvas, --c-text and the rest) was declared only on :root. A custom property resolves its var() where it is declared. So inside a data-surface="stage" section, every contract name inherited the root's Commons values: a light canvas and dark ink on the dark UV stage. app/themes/frequency.css already avoids this for its own aliases ("one rule, two surfaces"). The contract now follows the same rule.

How to review (owner)

Nothing visible changes on any live page. Role blocks inside a Stage or night section on the Frequency design now read that room's colours instead of the day ones.

How / files

  • lib/theme/block-contract-tokens.ts:
    • The Frequency contract is now declared on the same elements as the alias layer: root, Stage surfaces, night sections and skinned subtrees.
    • New TH_TO_CONTRACT maps every --th-* role. That covers element-library.md, theme-pack.json and the editor seed. Each role points at its contract name, or is marked null as theme-private (season, gilt, arch, mono). The handoff folder is read-only, so the retirement lives in this table instead of in those files.
  • lib/theme/block-contract-tokens.test.ts:
    • A per-room pin test resolves every contract name in Commons, Commons night and Stage the way the cascade does. It compares each one with the token it points at, resolved in that room. Before the fix it failed on Stage.
    • A coverage test checks that every --th-* name in use is mapped.
  • scripts/probes/builder/BLD-001.mjs: the probe. It fails before the change (15 findings) and passes after.
  • docs/ledger/rows/BLD-001.json: closes the row with a cmd verify.

Verification

  • tsc and eslint are clean.
  • vitest over lib/theme, lib/sites and components/sites: 1648 passed.
  • These checks pass: check:backlog, check:tokens, check:theme-conformance.
  • Dead exports stay at 150.
  • The existing golden pins (block-contract-map.json) are unchanged. The map moved no value. Only the scope gained selectors.

Notes

  • The second "Done when" line asks that computed values on the 31 design pages equal today's. That holds by construction. No existing token's declaration changed; only --c-* names gained declarations on more elements.

Generated by Claude Code

claude and others added 30 commits November 3, 2026 01:56
…design's slots (LIVE-2060)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…he photo's bytes

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…ract, manifest, seven niche kits (LIVE-2054)

Tide teal starting accent (Daniel), slate Stage inks under the violet ban, tokens scoped to the stand-alone site render.
The seven niche kits move from the Services folder to new-world-variants.ts; Services keeps a General template.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…even kits, --nw-* tokens (LIVE-2057)

Ported from the stale Services-token draft #4505. Standalone; wiring and email follow.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…ent vars)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
… 16-pin fallout

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…lates (LIVE-2057)

#4522's squash dropped the Spotlight files (history merge kept the wrong tree). Restored from the original commit, plus lib/theme/new-world-kit-email.ts and catalog entries.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…(check-tokens)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…ces (LIVE-2055 first pass)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…ep hero words light

A skinned header prints a bare .hs-logo that house-css never sized, so the owner's photo filled the bar and hid the menu and headline on danieltyack.com. The accent ink bridge also turned hero washes teal and the headline dark.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWsZ8ERsbLrz3yy6Xi
Takes new-world out of RETIRED_FROM_PICKERS (services stays held back), adds it to the site theme list and editor rail theme-name pins (approved by the owner), leaves it off the generic kit page, drops the noindex and adds the page to the sitemap.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWsZ8ERsbLrz3yy6Xi
…-page filter type

The noindex and the probe that checks it need the owner's own phrase to change, so the un-hide ships without them.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWsZ8ERsbLrz3yy6Xi
Reuses the Services preset values; no Iris (violet stays retired). Ink on every preset stays at least 4.5:1.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWsZ8ERsbLrz3yy6Xi
…ts LIVE-2065 check

Owner-approved rewrite (2026-11-03 15:21Z): the page drops noindex, joins the sitemap and loses its check:seo exclusion; the probe now asserts the opposite.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWsZ8ERsbLrz3yy6Xi
claude and others added 24 commits November 4, 2026 00:35
… through one move

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…with an Undo toast on delete

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…and the rest under More

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…k:a11y-names)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…4px targets

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…he Tune rail and command bar (adoption ratchet back to baseline)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…icker with the focal point

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
…age; --th-* roles point at contract names

The Frequency contract was declared on the root alone, so a Stage section
inherited the root's Commons values. It now rides every element that
re-declares Frequency's aliases. A pin test resolves every contract name in
each of the three rooms against the token it points at there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BMmZWHnsCQpkYqmsPZHt8
@vercel

vercel Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
frequency-web Ready Ready Preview Nov 4, 2026 9:55am UTC

Request Review

@hellofrequencylab
hellofrequencylab merged commit b622057 into main Nov 4, 2026
17 checks passed

This branch was successfully deployed

1 active deployment
Preview — 07dd6b0c Deployed Nov 4, 2026 by vercel[bot]
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