You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/docs/next-features.md

9.1 KiB

title type audience authority status created
Next features — initiative registry registry human + agent backlog of user-decided future initiatives — records scope, sequencing and dependencies; it does NOT record verdicts (those live in the RFCs / changelog / book-deviations when executed) living — items enter by explicit user decision during audits and sessions; remove an item when it ships (and link where it landed) 2026-07-06

Next features — initiative registry

Rules of this file: one entry per initiative, dated, with its origin (which audit/session raised it), its scope in one paragraph, and its dependencies. Entries are registered, not started — starting one is a session decision. Detail lives in the linked doc, never copied here.

1. Tonal-ramp contrast parity (measure, then construct) — 2026-07-06

Origin: A.7 follow-up (theming audit F). The on-solid pair is now computed at generation with a single criterion (rfcs/rfc-color-engine.md §8, eidos/lib/on-solid.ts). M3 still guarantees more: contrast by construction across its whole tonal ramp (container/on-container pairs at fixed tone deltas — ΔT 40 ≈ 3:1, ΔT 50 ≈ 4.5:1). Our equivalent promises (text-11 on bg-2/element-3, border-7 vs bg-2 at the 3:1 non-text floor, text over composited soft surfaces a2/a3) rest on Radix-style curation, unmeasured.

Stage 1 — pair-contract verification (the A.7 pattern generalized): a canonical table of slot pairs + floors (a user-decided doctrine session), a measurement pass over pairs × 33 scales × 2 modes at generation (on-solid.ts generalizes; the compositing math exists in $color), and the resulting drift list goes to user verdicts (retune vs annotated exception). Infrastructure is small; the fallout is the unknown.

Stage 2 — by-construction generator: generateScale solves each step's luminance to satisfy Stage 1's pair table for ANY seed (given bg-2's Y, solve text-11's minimum Y; invert to OKLCH at the step's chroma/hue). Only protects seed-generated themes — covering the BASE theme requires the base→seeds migration already planned in rfcs/rfc-color-engine.md §9, which is the expensive, visually-sensitive part and this stage's gate.

Sequence: Stage 1 first (it is the spec for Stage 2). No M3-style on-* vocabulary expansion — our slots already encode the pairs; the table formalizes them without inflating the namespace.

2. Per-theme palette-contrast cascade emission — 2026-07-06

Origin: A.7 execution. The per-instance palette-contrast cascade lives in the STATIC foundation — one polarity for all themes. Today polarity is computed per configured theme and unanimous (33/33 scales agree across base-light/base-dark); on disagreement the *-light theme wins (computeLightSolidScales, documented in rfcs/rfc-color-engine.md §8). Trigger: the day a real configured theme disagrees on a scale's polarity, emit the cascade per-theme instead of statically. Not before — no speculative machinery.

3. Component audit (post-system) — 2026-07-06

Origin: user decision during the theming audit — "de momento no tocamos los componentes, merecen una auditoría adicional una vez que se haya resuelto estas". Gate: the system-level audit (F/G) closes first. Registered items so far, to seed its scope:

  • Named-styles adoption by controls (from A.3): controls/recipes that hand-declare typography instead of consuming --style-* / size-bundle typography — likely by error, to be confirmed per component.
  • Letter-spacing bundle adoption: ~34 recipes consume font-size / line-height from the size bundle but not letter-spacing; plus ~7 raw letter-spacing literals in component CSS.
  • Tier-A data-depth stamping coverage: overlays that should stamp their plane (dialog / drawer / tooltip / menubar / combobox) per rfcs/rfc-depth.md §5.
  • Calendar family → shared layer/archetype (user design verdict, 2026-07-07): the calendar-grid vocabulary (accent set, day geometry, the holiday/event marks fixed in audit B.2) becomes a FIRST-CLASS shared layer — today the family borrows it informally (measured: range-calendar consumes 79 --calendar-* tokens, month-grid 65, year-grid 65, date-range-picker 38, date-picker 4 — ~250 cross-component borrows), and chronos will draw from it too when its track lands. Materialization to decide at execution: a morfo part-archetype for the day cell (the 26-set grows) and/or a calendar-surface shared recipe à la list-surface (--list-item-* precedent). This supersedes "per-component composition repairs" for the B.2 borrowers: the marks reach the whole family through the shared layer instead.
  • Field family composition — segments under [data-field] (user design verdict, 2026-07-07, audit B.1): segment height derives from the SIZE axis at the FIELD family level — field recipe declares segment-height with size-scoped declarations (calc(var(--field-control-height-{k}) - var(--space-2)); the TSC size: scope axis exists, unused so far), and the per-component copies die (each x-field today re-declares the whole height-{xs..xl} family the field recipe already has). MANDATED by the B.1-(i) verdict: date/time/color-field MUST incorporate the Field wrapper (segments under [data-field][data-size] — probed live: today they don't) as part of the component audit; the three broken per-component segment-height tokens and their consumers were removed (they had computed auto since birth — zero visual change).
  • Whatever F/G registers as "component-level adoption gap" in docs/audit/theming-audit.md when that report lands (deliverable G of the 2026-07 theming audit).

4. architecture/sema.md hold-sync — 2026-07-06

Origin: A.4/A.5 execution (holds single-source). SEMA_HOLDS_BY_INTENT (src/uix/sema/holds.ts) is now THE only hold table (resolver + visual channel consume it; sema-map.ts's per-family hold column died). The chapter architecture/sema.md still narrates per-family holds in ~34 places. Blocked: the file is the author's WIP (uncommitted edits) — sync it when the author's pass lands, not before.

6. THM-2 rollout — per-instance palette to the remaining surfaces — 2026-07-13

Origin: clean-room THM-2 (docs/process/continue-cleanroom-fixes-2026-07.md §THM-2 tracker). The universal --palette-* shared layer + presence-guarded forward shipped 2026-07-12 (0e75890f, 5/17 surfaces: button/toggle/checkbox/ radio-group/switch). The remaining 12/17 each need their recipe to expose a palette-* (public) or _palette-* (private) indirection with canonical slots (track·element·border·solid·solid-hover·text·contrast) so the forward routes them to the shared 33-scale cascade.

Census (2026-07-13) of the "forward-ready privates" subgroup revealed it splits by slot vocabulary, not by "public vs private":

  • Clean rename (_accent-*→_palette-*, canonical slots): tags-input (track/border/text), stepper (solid/track/border/text). Rename the token key in recipes/base.ts + the --_{c}-accent-* consumers in the .css; the forward then auto-emits. (Both executed 2026-07-13 — see the plan's media-player/THM-2 blocks and the changelog when committed.)
  • Needs mini-design (non-canonical vocabulary): tag-group — its _selected-* palette is variant-aware (soft-bg=surface, soft-bg-hover= surface-hover), tones the canonical 7 palette slots don't carry, so the soft variant can't route through the shared layer without a slot-mapping decision. toggle-group — has no private palette at all; it drives color via cross-recipe composition into Toggle's PUBLIC --toggle-palette-* (only 4 roles hardcoded today), so per-instance color=teal needs the composition to read the shared --palette-* on the group and route it to the items — a composition change, not a forward.
  • Rol-directo, mini-diseño (from the plan): badge, card, avatar, avatar-badge, editable, file-upload, select-trigger, select-content — map chrome→slot, add the indirection, route CSS. badge/card = best first pair.

Sequence: clean renames first (cheap, behavior-preserving for roles + additive for the 33 scales); tag-group/toggle-group + the rol-directo set are per-component dossiers (lote estilo S4, live color=teal + nesting check). Detail + running tracker: the plan's §THM-2. Remove this entry when 17/17 ship.

5. Book editorial note — "el hold es suelo, no tijera" — 2026-07-06

Origin: A.4/A.5 verdict. The mechanism (hold = floor for the expression, never a scissor; expression waits animation-finish after the hold, capped by an absolute MAX_EXPRESSION_WAIT_MS, never derived from the hold) is recorded in decisions/book-deviations.md D.12 as a candidate editorial appendix for the book (Diseñando lo que ocurre, HOMOGENEIZADO edition) — the book gives qualitative regions and this is the materialization doctrine worth feeding back to the source.

Powered by TurnKey Linux.