# _dsa-tokens — local design-system-ASK mirror

Local, pinned mirror of design-system-ASK Tier 1 + Tier 2 foundations for the
diagram bundle in this directory. There is **no runtime fetch** from the
design-system-ASK repo and **no Google Fonts CDN dependency** — the diagram
renders entirely from these local files.

**Synced from:** [`apexSolarKiss/design-system-ASK`](https://github.com/apexSolarKiss/design-system-ASK)
**Pinned commit:** per-file (see table). `colors_and_type.css` re-synced to `067691a2fb6ca979cb6a5b0c9ca1d97790134b3f` (2026-09-17, pin at DS #155; the **value-bearing** Caption-tracking rebind landed at **#154** `31e283ed`, and the file is byte-identical from that commit through this pin; it carries the #138 `2bbab417` generation underneath — whose own **value-bearing** root-only browser / under-page edge landed at **#129** `85181c1`, with **#136** `b8d1f56` rebinding the light edge to lavender and **#137** `6b513cf` a comment-only generation above it, and beneath that the #104 `28e9318` registered-use contract, the #103 `8fbb0c01` `--fg-on-card` theme-invariance, the #93 `410b3980`, #88 `3d8b113` and #56 `1231d03` comment-only generations and the #52 `b5d158e` foreground conformance); `spectral-state.css` remains at `1231d03040c74eb4eedf7be2e3214da9766e63f7` (2026-06-26, DS #56 comment-only cleanup); fonts remain at `b3b32a5` (core tokens first synced at `1c565e2`).
**Synced:** 2026-06-05 (re-synced `spectral-state.css` to **v1.1** at `b3b32a5` — `proposed` moved off the health ramp to an orthogonal magenta category, with `structural` 90°→60° and `partial` 60°→30°; eight roles + names unchanged, recolor consumed by reference, no node-data change. `colors_and_type.css` byte-identical at `b3b32a5` — unchanged — and fonts unchanged. First synced 2026-06-04 from `e30c101`; shared by the architecture-tree, ontology-tree, inheritance-spine, and ia-state-spine diagrams; only the ia-state-spine loads `spectral-state.css`)
**Re-synced:** 2026-06-26 — re-vendored `colors_and_type.css` at `b5d158e` (DS #52/#53 foreground conformance): `--fg-1` now references `--ask-fg-light` (`#6A637F`, unchanged value); `--ask-white` is wordmark-only (not body text); `--fg-high-contrast` (`#201D26`) added as a reserved opt-in backup reached by no default surface. **Render-neutral for AP** — the diagram text role `--fg-1` still resolves `#6A637F` in light and the lavender ramp in dark; light + dark sanity-rendered. The sibling `diagrams.css` (one level up) was re-vendored in the same pass at `b5d158e` (#53: diagram text roles `--diagram-ink/-muted/-faint` now alias `--fg-1/-2/-3` rather than hardcode them). Diagram `render-vN` stamps **held** (render-neutral, no re-export); frozen reviewed rasters not regenerated.
**Re-synced:** 2026-06-26 (later, DS #56) — **comment-only** re-vendor of `colors_and_type.css` (header "five-color core" → "a core identity set"; block label "Core 5 — backgrounds + text" → "Core set — backgrounds, wordmark, dark-mode text") and `spectral-state.css` ("each mapped to a neon hue" → "eight roles: seven sparse neon state signals plus a neutral role that resolves to the theme foreground"; `--state-neutral` = `var(--fg-1)`) at `1231d03`. **No token value, role name, selector, or theme behavior change** — verified non-comment content byte-identical; render-neutral, byte-verify only (no raster). `render-vN` stamps held.
**Added:** 2026-07-10 (DS #62, `44c6074`) — `fonts-embedded.js`, the **no-fetch embedded-font carrier** that lets a `file://` page export correct PNGs offline (base64 fonts inlined; the exporter prefers it, falls back to the http woff2 fetch, and fails closed if neither fully embeds). Generated deterministically from the DS fonts by `tools/gen-embedded-fonts.js`; the fonts themselves are unchanged (`b3b32a5`). Loaded before `export-png.js` in every diagram HTML.
**Added:** 2026-07-13 (DS #67, `8fb82b7`) — `three-functions.css`, the design-system-ASK **Three Functions** semantic function-color primitive (`--function-legislative` / `-executive` / `-judicial`), vendored **byte-identical**. Consumed only by the bounded-generativity figure (legislative = the creative brief, executive = the realization chamber, judicial = selection + closure), which also drives the shared `export-png.js` bump to `5512b5d` (DS #70) for semantic-legend fidelity. Load *after* `colors_and_type.css` — the `--function-*` tokens reference the base palette (`--ask-emphasis-magenta/-cyan`, `--ask-white`, `--ask-lavender-ask`) defined there. Not loaded by the static architecture diagrams.
**Re-vendor:** 2026-07-13 (DS #72, `5674b46`) — `export-png.js` **direct-`<defs>` carry fix**, re-vendored **byte-identical** (md5 `a91d9548`). The shared static exporter cloned only the live SVG's `<g>` content layers into the raster, never its direct `<defs>` — so this figure's executive-chamber `userSpaceOnUse` negative-cutout mask exported as a **dangling `url(#…)` reference** and the candidate marks rasterized **filled** instead of cut-through (the live render was correct). **NOT render-neutral** — all four rasters regenerated so the cutouts render as holes; the figure stamp bumps **`render-v1 → render-v2`** (source held `source-v1`, geometry unchanged). `export-png.js` is not a token-mirror file; its pin is tracked in the operator consumer-ledger.

**Re-sync:** 2026-09-17 (pin DS #155, `067691a2`) — re-vendor of `colors_and_type.css` for the **value-bearing** Caption-tracking event, carried **atomically** with its companion outside this mirror. **#154 SL3** (`31e283ed`) adds `--tracking-caption: 0.14em` and rebinds the foundation `.caption` from `var(--tracking-wide)` (0.08em) to it; in the same owner change the DS interactive-spine pattern gains an explicit `letter-spacing: var(--tracking-wide)` on its own caption band, because that band is the pattern's own 10px chrome rather than the foundation's 14px Caption role. The two are **one unit for any consumer that vendors the spine**, and this repo does: `interactive/diagrams-interactive-spine.css` is re-vendored in the same commit (`9178d8d0` → `7e43a98d`). Taking the token alone would have moved the IA-state-spine caption band 0.08em → 0.14em. **No other token value, role name, selector, `@font-face` or theme behavior changes** — `--tracking-wide` keeps 0.08em, and the diff against the previous pin is exactly the new token plus the one `.caption` binding.

**Render-neutral across every committed page, by two different mechanisms — measured, not inferred.** Headless Chrome (153.0.8010.48, 1440×900, `file://`, both color schemes) read the computed `letter-spacing` of the live `.caption` element on all **8** tracked HTML pages before and after. The **six static diagram pages** (atlas, architecture-tree, bounded-generativity, inheritance-spine, ontology-tree, visual-payload-architecture) hold at **0.6px** on a 10px caption: each loads `diagrams.css` *after* the foundation, and its local `.caption { letter-spacing: 0.06em }` — equal specificity, later in source order — already owned the property, so the foundation rebind never reached them. The **IA-state-spine page** holds at **0.8px** with its caption band unchanged at **476.14px** wide, because the companion re-pins `--tracking-wide` on the spine's own rule. `index.html` carries no `.caption` element (n=0). **The measurement discriminates:** vendoring the token with the companion **withheld** was run as a control and moved the spine band to **1.4px / 516.94px** while the six static pages stayed at 0.6px — the exact regression SL3 exists to prevent, reproduced and then closed. `--tracking-caption` is newly defined but read by nothing in this repo; `--tracking-wide` is read by `_dsa-surface/surface-shell.css` and is unchanged.

**Every `render-vN` and `source-vN` stamp HELD; no raster regenerated.** No figure source, data or engine file is touched, so no `source-vN` binding moves; caption tracking is byte-for-byte identical before and after on every stamped page, so no renderer realization moves. The two committed rasters — `asset-pipeline-ASK_bounded-generativity-dark.png` and `asset-pipeline-ASK_visual-payload-architecture.png` — derive from two of the six static pages that do not change, and independently of that the shared static exporter re-draws the caption card in poster grammar at a fixed `letter-spacing="3.9"` rather than from the live computed style, so the foundation binding could not have reached them in any case. `spectral-state.css`, `three-functions.css`, the fonts and `fonts-embedded.js` are **unchanged** and were deliberately not re-synced; only the `colors_and_type.css` pin and sha256 in the table change (`fd8207bf…` → `4fed9d79…`, 15,463 → 15,496 B). The spine carrier is vendored **by reference** (see `../README.md`) and holds no pin row here; the `_dsa-surface` carriers re-vendored in the same commit for DS **#154 SL4** and **#155 SL7** keep no per-file pin, MANIFEST or VERSION record in this repo.

**Re-sync:** 2026-09-14 (DS #147 `85981a7`, clarified by #149 `a7c5530`) — **comment-only** re-vendor of `three-functions.css`; the owner's **semantic** generation is not neutral for the consuming figure's source, so that figure advances. #147 moves the primitive **v0.1 → v0.2**: it changes **which elements qualify** for `legislative`, not how the role renders once assigned — the source-of-intent / normative-apex role is the **constitutive** legislative source, a brief that carries the governing standard into operative scope is **delegated** legislative apparatus, and the aperture the brief grants takes no function color. #149 clarifies `three-functions.md` alone. **No token value, role name, selector, or declaration changed:** comment-stripped, the file is byte-identical at 440 B (`714dad02…`) to the `f298678` copy it replaces. The figure's binding does change: `asset-pipeline-ASK_bounded-generativity.figure.js` now emits `node-box fn-leg` for a source-of-intent role box as well as for the creative brief, the authored HTML key names both, and the figure stamp advances **`source-v1 → source-v2`** with **`render-v2` held** (the renderer realization is unchanged); the committed dark raster is re-exported from the new source. The doctrine the figure depicts, `docs/creative-discretion-doctrine-v1.md`, is revised to the same classification in the same change, which is the figure's refresh trigger under `AGENTS.md` §Diagram Surface Refresh Cadence. Per-file pin only: `three-functions.css` advances `f298678` → `a7c5530`; every other row is untouched.

**Re-sync:** 2026-09-06 (DS #142, `f298678`) — **comment-only** re-vendor of `three-functions.css`. The owner replaced the primitive's forward-looking STATUS block (*awaiting first-consumer proving*; method-ASK *will be* the first consumer; asset-pipeline-ASK *the intended second consumer*) with a landed-record framing pointing at `CONSUMERS.md` and the worked example in `three-functions.md`, adding that a landed consumption record is not, by itself, a portability, usability or generality verdict. The forward-looking consumption claims were already stale here — this repo is a landed consumer; retiring the *awaiting-proving* wording is the owner's release-posture revision and asserts no completed proving event. **No token value, role name, selector, or declaration changed:** comment-stripped, the file is byte-identical at 440 B (`714dad02…`). The dependency is unchanged rather than absent — `asset-pipeline-ASK_bounded-generativity.figure.js` emits `node-box fn-leg`, `fn-exe-wash`, `flow-group fn-exe-chamber` and the other `fn-*` classes, and the figure's `<style>` block maps them to `var(--function-*)`; consumption runs through those classes, and it is the unchanged declarations together with the unchanged consuming code that make this re-vendor neutral. Under §Diagram Surface Refresh Cadence the bounded-generativity figure is coupled to `docs/creative-discretion-doctrine-v1.md`, which has not changed; that coupling together with the measurably unchanged renderer realization holds **`source-v1 // render-v2`**, and the committed raster is not re-exported. Per-file pin only: `three-functions.css` advances `8fb82b7` → `f298678`; every other row is untouched.

**Re-sync:** 2026-09-03 (pin DS #138, `2bbab417`) — re-vendor of `colors_and_type.css` across **three** carrier-changing owner events, all of them the browser / under-page edge. **#129** (`85181c1`, 2026-08-30) — the **value-bearing** event: a Tier-1 semantic role `--bg-edge` is added and bound **root-only** to existing palette values (`--ask-white` light, `--ask-ink-dark` dark), `color-scheme` is declared on `:root` for all three theme paths, the `html, body` `background` shorthand becomes the `background-image` longhand so it stops resetting `background-color` to transparent, and two rules paint the solid on `html` (`background-color: var(--bg-edge)`) while holding `body` at `transparent`. **#136** (`b8d1f56`, 2026-09-02) — rebinds the light edge `var(--ask-white)` → `var(--ask-lavender-light)` (`#E2D3F0`) and annotates that palette entry. **#137** (`6b513cf`, 2026-09-02) — comment-only wording inside the same block. **No palette value, role name, selector value, `@font-face`, type role or gradient stop changes** — `--ask-lavender-light` keeps `#E2D3F0` and `--ask-ink-dark` keeps `#0A090C`. **In-page render-neutral, canvas-edge-bearing**: the gradient still covers the viewport unchanged (`background-image` and `background-attachment: fixed` verified identical in both themes), and what the change reaches is the browser's over-scroll pocket and its scrollbar / form-control rendering — no diagram canvas, no committed HTML, no raster. Verified headless (Chrome, 1440×900, both schemes) on `diagrams/index.html` and `diagrams/asset-pipeline-ASK_architecture-tree.html`: computed `html` background-color `rgb(226, 211, 240)` = `#E2D3F0` light and `rgb(10, 9, 12)` = `#0A090C` dark, `--bg-edge` resolving to the same, `body` background-color `rgba(0, 0, 0, 0)`, `color-scheme` `light` / `dark`, zero console errors; the pre-change carrier **fails** that same check (`html` transparent, `--bg-edge` empty, `color-scheme` `normal`), so the measurement discriminates. `spectral-state.css`, `three-functions.css`, the fonts and `fonts-embedded.js` are **unchanged** — only the `colors_and_type.css` sha256 in the table changes (`acd76409…` → `fd8207bf…`, 13,375 → 15,463 B). **No raster regenerated and no diagram `render-vN` stamp advanced by this token re-sync.**

**Re-sync:** 2026-08-14 (pin DS #104, `28e9318`) — re-vendor of `colors_and_type.css` across **three** carrier-changing owner events. **#93** (`410b3980`) — comment/contract only: `--fg-high-contrast` moves from a *reserved* value with no approved surface to its **first approved bounded use** (the Class B message-archive ramp); no token value changed. **#103** (`8fbb0c01`) — the **value-bearing** event: `--fg-on-card` is rebound `var(--fg-1)` → `var(--fg-high-contrast)` (`#201D26`) and **both** dark-mode `--fg-on-card: var(--ask-lavender-dark)` overrides (the `[data-theme="dark"]` block and the `prefers-color-scheme` auto-bridge) are **removed**, so the role stops flipping with theme against the fixed `--surface-solid` fill it exists to sit on. **#104** (`28e93188`) — comment/contract only, and the **final vendoring pin**: it retains #103's value unchanged and replaces the bounded-use prose with the central **registered-use and admission-gate contract** for `--fg-high-contrast`. Opt in only once registered; it is never the default foreground and never selected by font size. **Render-neutral for AP by non-use** — nothing in this repo reads `var(--fg-on-card)` (verified: its only occurrences are the declarations inside this vendored carrier, which never consumes the token itself), so the change reaches no diagram, no committed HTML and no raster. `spectral-state.css`, `three-functions.css`, the fonts, `fonts-embedded.js`, `diagrams.css`, the engines, the fit helper and `export-png.js` are **unchanged** — every other vendored file is byte-identical between `3d8b113` and `28e9318`; only the `colors_and_type.css` sha256 in the table changes (`246aae65…` → `acd76409…`, 13,022 → 13,375 B). **Render-neutral — every diagram `render-vN` stamp HELD, no re-export, frozen reviewed rasters not regenerated.**

**Re-sync:** 2026-07-23 (DS #88, `3d8b113`) — **comment-only** re-vendor of `colors_and_type.css`: the tier-model header comment is corrected so the `--ask-*` variable prefix reads as the canonical **Tier-2 implementation namespace** (it travels with Tier 2 by reference and does not itself create Tier 3 identity) rather than as Tier 3; **Tier 3** is now stated as the ASK name + `logo-ASK` wordmark; and the file header is identified as the **owner-carrier provenance** record, not child-instance identity — so a vendored mirror like this one does not inherit ASK's Tier 3 by carrying the header. **No token value, role name, selector, `@font-face`, or theme-behavior change** — non-comment content byte-identical; only the `colors_and_type.css` sha256 in the table changes (`bcd11e0e…` → `246aae65…`). `spectral-state.css`, `three-functions.css`, the fonts, `fonts-embedded.js`, `diagrams.css`, the engines, the fit helper and `export-png.js` are **unchanged**; the mirror is now at mixed pins by design. The stylesheet is `<link>`ed, never inlined, so the changed comment enters **no committed HTML or raster**. **Render-neutral — every diagram `render-vN` stamp HELD, no re-export, frozen reviewed rasters not regenerated.**

Per-file pins (sha256 over file contents):

| File | Upstream source | sha256 | Role |
|---|---|---|---|
| `colors_and_type.css` | `/colors_and_type.css` @ `067691a` | `4fed9d796a0d51072802f430b9528459a5cbb9c709fa1964bf5b13f18464122a` | Tier 1 + Tier 2 tokens + `@font-face` (light default · `[data-theme="dark"]` · `prefers-color-scheme` auto-bridge); **DS #52 foreground conformance** — `--fg-1` → `--ask-fg-light` (`#6A637F`), `--ask-white` = wordmark only, `--fg-high-contrast` (`#201D26`) reserved opt-in; **#56 comment-only** cleanup; **#88 comment-only** tier-model header correction (`--ask-*` = Tier-2 implementation namespace; header = owner-carrier provenance); **#93 comment-only** — `--fg-high-contrast` gains its first approved bounded use; **#103 VALUE-BEARING** — `--fg-on-card` → `--fg-high-contrast` (`#201D26`, fixed) and both dark-mode overrides removed; **#104 comment-only** — `--fg-high-contrast` restated under the central registered-use / admission-gate contract; **#129 VALUE-BEARING** — root-only `--bg-edge` + `color-scheme`, `background` shorthand → `background-image` longhand, `html` paints the solid browser edge and `body` stays transparent; **#136** — light edge rebound `--ask-white` → `--ask-lavender-light` (`#E2D3F0`); **#137 comment-only**; **#154 SL3 VALUE-BEARING** — `--tracking-caption` (0.14em) added and the foundation `.caption` rebound to it from `--tracking-wide`; atomic with the interactive-spine caption re-pin |
| `spectral-state.css` | `/spectral-state.css` @ `1231d03` | `dd30fdc0b7b9174801129f0d01f45e22da5bbd92ff47e58d7aabaeea64f0d05b` | opt-in Spectral State **v1.1** — eight `--state-*` role tokens (`proposed` orthogonal magenta 300°; health ramp earned 120° / structural 60° / partial 30° / deflated 0°; `--state-neutral` = `var(--fg-1)`); load *after* `colors_and_type.css`; used only by the interactive IA state spine; **#56 comment-only** cleanup |
| `three-functions.css` | `/three-functions.css` @ `a7c5530` | `6c8d9dc539a27b0fecd48767d5f7314b5f43f2b173aab8db1fd16b153523b7d2` | DS **Three Functions** primitive (PR #67; **v0.2** semantic generation #147, owner clarification #149) — three `--function-legislative/-executive/-judicial` role tokens (30% fills; light default · `[data-theme="dark"]` · `prefers-color-scheme` bridge); load *after* `colors_and_type.css`; used only by the bounded-generativity figure |
| `fonts/InterVariable.woff2` | `/fonts/` | — | display family |
| `fonts/InterVariable-Italic.woff2` | `/fonts/` | — | display italic |
| `fonts/JetBrainsMono.woff2` | `/fonts/` | — | mono family |
| `fonts/JetBrainsMono-Italic.woff2` | `/fonts/` | — | mono italic |
| `fonts/Inter-OFL.txt`, `fonts/JetBrainsMono-OFL.txt` | `/fonts/` | — | SIL OFL license texts |
| `fonts-embedded.js` | generated by `tools/gen-embedded-fonts.js` from `/colors_and_type.css` `@font-face` + `/fonts/*.woff2` @ `44c6074` | `b7b318c2ba323b555227d2a095f678716d7a35a34f8121f5e3861d6172212ecc` | **DS #62 no-fetch embedded-font carrier** — sets `window.DSA_EMBEDDED_FONTS` (+ integrity manifest `window.DSA_EMBEDDED_FONTS_META`); loaded before `export-png.js` so a `file://` page exports offline (no server); DS md5 `ffb61b1e` |

Re-sync this mirror (bump the relevant pin and re-verify the per-file sha256) when the
upstream tokens, the Spectral State module, or the fonts change. Advance the consuming
diagram's `render-vN` stamp only when the re-sync changes the renderer realization. A
re-sync that changes what the figure's source binds advances its `source-vN` instead and
re-exports any committed raster; a render-neutral re-sync holds both stamps. The static
scaffolds do not load `spectral-state.css`.
