ReadonlyidReadonlynamespace이 축이 소유하는 토큰 이름공간(검증용).
Token namespace this axis owns (for validation).
この軸が所有するトークンの名前空間(検証用)。
这个轴所有的令牌命名空间(供校验使用)。
사용자 정의 프리셋 등록.
TokenAxis.define 과 달리 조용히 안 덮는다. 내장 5종(default·rule·quiet·band·pill)은
origin:'builtin' 으로 등록돼 있어 { override: true } 없이는 교체되지 않고, 거부 사유가
registration 으로 돌아온다(never-throw).
축 섞임(색·타이포그래피 토큰)은 상속받은 검사가 throw 한다 — 정책보다 먼저 걸린다. 순서가 중요하다: 오염된 델타는 애초에 등록 후보가 아니므로 정책 판정까지 갈 이유가 없다.
Registers a user-defined preset. Unlike TokenAxis.define, built-ins are not silently
replaced: without { override: true } the registration is rejected and the reason is
returned in registration (never throws). Axis pollution throws first, before policy runs.
ユーザー定義プリセットの登録。
TokenAxis.define と違い、黙って上書きしません。 組み込み5種
(default・rule・quiet・band・pill)は origin:'builtin' で登録されているため、
{ override: true } なしでは置き換わらず、拒否の理由が registration で返ります(never-throw)。
軸の混在(色・タイポグラフィのトークン)は継承した検査が throw します — ポリシーより先に 引っかかります。順序が大事です: 混ざったデルタはそもそも登録の候補ではないので、ポリシーの判定まで 進む理由がありません。
注册用户自定义预设。
与 TokenAxis.define 不同,不会静默覆盖。内置5种(default、rule、quiet、band、pill)
以 origin:'builtin' 注册,不带 { override: true } 就不会被替换,拒绝的理由通过 registration
返回(never-throw)。
轴混用(颜色、排版的令牌)由继承来的检查 throw — 比策略更先拦下。顺序很重要: 混了的增量本来 就不是注册的候选,没有理由走到策略判定。
프리셋 id
Preset id
プリセット id
预设 id
헤더 형태 토큰 델타
Header shape-token delta
ヘッダー形状トークンのデルタ
表头形状令牌增量
등록 정책 옵션(+ 프리셋 메타)
Registration policy options (plus preset meta)
登録ポリシーのオプション(+ プリセットのメタ情報)
注册策略选项(+ 预设元信息)
클램프 반영 델타 + 경고 + 등록 판정
Clamped delta, warnings, and the registration verdict
クランプを反映したデルタ + 警告 + 登録の判定
钳制后的增量 + 警告 + 注册判定
한 플러그인이 넣은 프리셋만 골라 해제한다 — 등록의 대칭.
형제 축들에는 이 대칭이 없다(생 Map 이라 누가 넣었는지 모른다). 해제 건수를 반환한다.
Disposes only the presets registered by one plugin — the symmetric counterpart to registration, which the sibling axes lack. Returns the number of entries removed.
あるプラグインが入れたプリセットだけを選んで解除します — 登録の対称です。
兄弟軸にはこの対称がありません(素の Map なので、誰が入れたか分かりません)。解除した件数を返します。
只挑出某一个插件注册的预设并解除 — 与注册对称。
兄弟轴没有这个对称(裸 Map,不知道是谁放进去的)。返回解除的数量。
해제할 플러그인 id
The plugin id to dispose
解除するプラグイン id
要解除的插件 id
해제된 건수
Number of entries removed
解除した件数
解除的数量
등록 기록(출처·플러그인·우선순위·SPI 버전). 진단·카탈로그용.
Registration records (origin, plugin, priority, SPI version) — for diagnostics and catalogs.
登録の記録(登録元・プラグイン・優先度・SPI バージョン)。診断とカタログ用。
注册记录(注册来源、插件、优先级、SPI 版本)。供诊断与目录使用。
등록 여부.
Whether registered.
登録されているか。
是否已注册。
등록된 값 id 목록(카탈로그·인스펙터용).
Registered value ids (for catalog/inspector).
登録された値 id の一覧(カタログ・インスペクター用)。
已注册的值 id 列表(供目录与检查器使用)。
등록 게이트에 축 섞임 검사를 선행시킨다(assertTypographyOnly 와 동형 배선).
登録ゲートの手前で軸の混在を検査します(assertTypographyOnly と同じ形の配線)。
在注册关卡之前先做轴混用检查(与 assertTypographyOnly 同形的接线)。
축값 → 해소(토큰·속성·relayout 플래그). 미등록/default → 빈 델타.
Value id → resolution; unknown/default → empty delta.
軸の値 → 解決(トークン・属性・relayout フラグ)。未登録/default → 空のデルタ。
轴的值 → 解析(令牌、属性、relayout 标志)。未注册/default → 空增量。
HeaderAxis — 헤더 제6축. 상속으로 SPI 를, 합성으로 등록 정책을 얻는다.
왜
extends TokenAxis인가(상속을 쓰는 자리).assertNamespace·resolve의 never-throw 폴백 ·default→ 빈 델타(byte-identical) ·attr생략 규칙 — 이 넷은 여섯 축이 똑같아야 하는 불변식이다. 베끼면 여섯 벌이 갈라진다. 상속이 정확한 도구다.왜
TypedRegistry를 상속하지 않고 안에 두는가(합성을 쓰는 자리).TypedRegistry<V>는 키→값 저장소고HeaderAxis는 축이다. is-a 가 아니다. 그리고TokenAxis를 고쳐 저장소를 갈아끼우면 기존 5축의 코드 경로가 바뀐다 — 「기본값 불변」 금지선에 직접 닿는다. 합성이면 헤더 축만 새 정책을 갖고 나머지 다섯은 한 바이트도 안 변한다(개방-폐쇄 원칙).이 축이 형제 축보다 더 갖는 것 — 기존 축들은 생
Map이라 아래가 전부 없다: 내장 보호(protect-builtin) · 출처(origin) · 플러그인 수명(disposePlugin) · SPI 버전 검증 ·og:*예약 대역 보호 · never-throw 등록 결과. 그래서 이 축에서는 사용자가define('rule', …)해도 내장 프리셋이 조용히 사라지지 않는다.HeaderAxis — the 6th (header) axis: SPI conformance by inheritance, registration policy by composition.
TokenAxissupplies the six-axis invariants; a composedTypedRegistrysupplies built-in protection, origin tracking, plugin lifecycle and SPI checks that the sibling axes lack. Composition (not inheritance) is used because a registry is not a kind of axis, and because swappingTokenAxis's store would change the code path of the five existing axes.HeaderAxis — ヘッダー第6軸。SPI は継承で、登録ポリシーはコンポジションで得ます。
なぜ
extends TokenAxisなのか(継承を使う場所)。assertNamespace・resolveの never-throw フォールバック・default→ 空デルタ(byte-identical)・attrの省略規則 — この4つは6つの軸が 同じでなければならない不変条件です。写し取れば6つに分かれてしまいます。ここは継承が正確な道具です。なぜ
TypedRegistryを継承せず中に持つのか(コンポジションを使う場所)。TypedRegistry<V>は キー→値の保管庫で、HeaderAxisは軸です。is-a ではありません。そしてTokenAxisを直して 保管庫を差し替えると、既存5軸のコード経路が変わります — 「既定値は変えない」という禁止線に直接 触れます。コンポジションならヘッダー軸だけが新しいポリシーを持ち、残りの5軸は1バイトも変わりません (開放閉鎖の原則)。この軸が兄弟軸より多く持つもの — 既存の軸は素の
Mapなので、以下がすべてありません: 組み込み保護(protect-builtin)・登録元(origin)・プラグインの寿命管理(disposePlugin)・ SPI バージョン検証・og:*予約領域の保護・never-throw の登録結果。 そのためこの軸では、利用者がdefine('rule', …)しても組み込みプリセットが黙って消えることは ありません。HeaderAxis — 表头第6轴。用继承拿到 SPI,用组合拿到注册策略。
为什么
extends TokenAxis(用继承的地方)。assertNamespace、resolve的 never-throw 回退、default→ 空增量(byte-identical)、attr的省略规则 — 这4条是6个轴必须一致的不变式。抄一遍 就会分成6份。这里继承才是准确的工具。为什么不继承
TypedRegistry而是放在里面(用组合的地方)。TypedRegistry<V>是键→值的存储, 而HeaderAxis是轴。不是 is-a。而且改TokenAxis去换掉存储,现有5个轴的代码路径就会变 — 直接碰到「默认值不变」这条禁止线。用组合的话,只有表头轴拿到新策略,其余5个轴一个字节也不变 (开闭原则)。这个轴比兄弟轴多出来的东西 — 现有的轴是裸
Map,所以下面这些一个都没有: 内置保护(protect-builtin)、注册来源(origin)、插件生命周期(disposePlugin)、SPI 版本校验、og:*保留区段的保护、never-throw 的注册结果。 因此在这个轴上,即使用户调用define('rule', …),内置预设也不会静默消失。Example