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/audit/00_WORKLIST.md

260 lines
17 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# UIX Component Audit — Worklist (resumable index)
worklist-version: 1
generated-at: 2026-06-26
total-names: 127 (82 soma-backed + 45 eidos-only)
status: **AUDIT COMPLETE — 124/124 audited** (words, palabras, chronos excluded per user directive) across 8 batches.
result: 0 CRITICAL · 18 HIGH · 129 MEDIUM · 60 LOW. See SUMMARY.md for the verdict + systemic findings.
mode: per-component reports in audit/components/{kebab}.md; roll-ups in audit/{SUMMARY,SHARED_EXTRACTION,THEMING_COHERENCE,VALIDATOR_GAPS}.md
> This is the resumable index. Each row's `status` flips `pending → audited` as its
> `audit/components/{kebab}.md` is written. Re-runs (`MODE=reeval`) read this to know
> what exists and what was covered.
## Legend
| Col | Meaning |
| --- | --- |
| **scope** | `morfo.scope` declared layers (the authored contract) |
| **morfo** | `Y` = `morfo/components/{n}.ts`; `INT` = `morfo/internal/{n}.ts`; `-` = none |
| **prov** | `Y` = `soma/components/{n}/{n}-provider.svelte.ts`; `dir*` = soma dir exists but **no standard provider file**; `-` = no soma dir |
| **eidos** | `Y` = `eidos/components/{n}/` dir; `(co)` = rendered inside a sibling's eidos dir; `-` = none |
| **demo** | `Y` = `web/routes/uix/components/{n}/`; `-` = none |
| **test** | `Y` = `{n}-provider.svelte.test.ts`; `-` = none |
| **#0** | cross-reference flag worth confirming during that component's audit |
---
## Cross-reference anomalies (candidate finding-#0, to confirm in per-component audit)
These are recorded now so the audit doesn't "discover" them as surprises; each must be
confirmed (or dismissed) inside the owning component's report.
| Component | Anomaly | Status to confirm |
| --- | --- | --- |
| `menu-dial` | scope `['soma','sema','eidos']` but soma dir holds only `index.ts` — no `menu-dial-provider.svelte.ts` | **RESOLVED (Batch 2):** compositional API; the headless runtime + nav helpers live in `soma/components/menu-dial/` (non-standard filenames), the eidos root composes them. Benign by design (matches the compositional-not-data-driven doctrine). |
| `onion-menu` | same as menu-dial | **RESOLVED (Batch 2):** runtime in `soma/components/onion-menu/onion-menu.svelte.ts` + `onion-menu-nav.ts`; eidos `<OnionMenu>` root composes it via `createOnionMenuRuntime`. The agent's CRITICAL "eidos imports soma = frontier violation" was a FALSE POSITIVE (eidos→soma is the normal direction) — refuted in verification. |
| `metrics` | scope `['sema','eidos']` yet has a soma dir with only `index.ts` | **RESOLVED (Batch 7):** the soma logic lives in `soma/components/metrics/metrics.svelte.ts` (non-standard filename, not `-provider.svelte.ts`); it's a sema+eidos display component with a small soma helper. Legitimately structured, not dead. |
| `picker-shell` | `INTERNAL` morfo, soma dir = `index.ts` only, no demo | **RESOLVED (Batch 3):** internal-by-design. The shell logic lives in `soma/components/picker-shell/picker-shell-handle.svelte.ts` + `exports.ts` (re-exported by the 5 pickers); Clear/Cancel/Close compose `<Button>`, Footer/Header/Body are layout zones. Not an orphan. |
| `avatar-group` | morfo `Y`, no own eidos dir — rendered by `eidos/components/avatar/avatar-group.svelte` | Confirmed co-located (not orphan); audit theming under `avatar` |
| `cascade`, `motion` | eidos morfos with **no demo** | Confirm they are infra contracts (not user-facing components) — expected |
| `words` | full stack present | **EXCLUDED from audit** — active separate dev track (`words`/`palabras`), per `docs/README.md` note + project rule + user directive 2026-06-26. |
| `palabras` | eidos for `words` | **EXCLUDED from audit** — user directive 2026-06-26. |
| `chronos` | full stack present | **EXCLUDED from audit** — user directive 2026-06-26 (active track). |
| `button` | scope `['soma','sema','eidos']`, **no provider test** | Test-coverage gap (dimension F) |
| `chronos`,`textarea`,`password-field`,`month-grid`,`year-grid` | interactive, **no provider test** | Test-coverage gaps (dimension F) |
Components lacking a `*-provider.svelte.test.ts` (dimension-F gaps to record per row):
`button, chronos, menu-dial, metrics, month-grid, onion-menu, password-field, picker-shell, textarea, year-grid` — plus every eidos-only primitive (expected: no provider).
---
## Group 1 — Overlays · portal + floating + dismissal + focus (hardest / most systemic)
| Component | scope | morfo | prov | eidos | demo | test | #0 | status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| select | soma,sema | Y | Y | Y | Y | Y | | **audited** (4H/5M/2L) |
| combobox | soma,sema | Y | Y | Y | Y | Y | | **audited** (2H/3M) |
| dialog | soma,sema | Y | Y | Y | Y | Y | | **audited** (2H/2M/2L) |
| popover | soma,sema | Y | Y | Y | Y | Y | | **audited** (3M) |
| dropdown-menu | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (4M/1L) |
| context-menu | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (3M/1L) |
| menubar | soma,sema | Y | Y | Y | Y | Y | | **audited** (3M/4L) |
| navigation-menu | soma,sema | Y | Y | Y | Y | Y | | **audited** (1H/3M) |
| tooltip | soma,eidos,sema | Y | Y | Y | Y | Y | | **audited** (1M/1L) |
| drawer | soma,sema | Y | Y | Y | Y | Y | | **audited** (5M) |
| alert-dialog | soma,eidos | Y | Y | Y | Y | Y | | **audited** (1H) |
| command | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M/5L) |
| link-preview | soma | Y | Y | Y | Y | Y | | **audited** (1M) |
| float-panel | soma,sema | Y | Y | Y | Y | Y | | **audited** (2M) |
| onion-menu | soma,sema,eidos | Y | dir* | Y | Y | - | #0 RESOLVED | **audited** (1M/3L) |
| menu-dial | soma,sema,eidos | Y | dir* | Y | Y | - | #0 RESOLVED | **audited** (3M/3L) |
## Group 2 — Pickers + calendar family (portal + composite + grid nav)
| Component | scope | morfo | prov | eidos | demo | test | #0 | status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| date-picker | soma,sema | Y | Y | Y | Y | Y | | **audited** (4M) |
| date-range-picker | soma,sema | Y | Y | Y | Y | Y | | **audited** (2M) |
| time-picker | soma,sema | Y | Y | Y | Y | Y | | **audited** (3M) |
| time-range-picker | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M/2L) |
| color-picker | soma,sema | Y | Y | Y | Y | Y | | **audited** (2M/2L) |
| calendar | soma,sema | Y | Y | Y | Y | Y | | **audited** (4M/2L · MID-REFACTOR) |
| range-calendar | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (2M/2L · MID-REFACTOR) |
| month-grid | soma,sema | Y | Y | Y | Y | - | F | **audited** (1M/1L) |
| year-grid | soma,sema | Y | Y | Y | Y | - | F | **audited** (1M/1L) |
| picker-shell | INT | INT | dir* | Y | - | - | #0 RESOLVED | **audited** (1M/1L) |
## Group 3 — Fields (input + composition + masking)
| Component | scope | morfo | prov | eidos | demo | test | #0 | status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| field | soma | Y | Y | Y | Y | Y | | **audited** (2M) |
| date-field | soma,sema | Y | Y | Y | Y | Y | | **audited** (3M · A30-effect) |
| date-range-field | soma,eidos | Y | Y | Y | Y | Y | | **audited** (2M/3L) |
| time-field | soma,sema | Y | Y | Y | Y | Y | | **audited** (2M/1L · A30-effect) |
| time-range-field | soma | Y | Y | Y | Y | Y | | **audited** (1M) |
| color-field | soma,sema | Y | Y | Y | Y | Y | | **audited** (3M · A30-effect) |
| css-field | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
| number-field | soma,sema | Y | Y | Y | Y | Y | | **audited** (1L · clean REFERENCE) |
| search-field | soma,sema | Y | Y | Y | Y | Y | | **audited** (2M) |
| password-field | soma,sema | Y | Y | Y | Y | - | F | **audited** (1M) |
| pin-input | soma,eidos | Y | Y | Y | Y | Y | | **audited** (1M) |
| textarea | soma,sema | Y | Y | Y | Y | - | F | **audited** (2M) |
| tags-input | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
| editable | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
## Group 4 — Collections + data (keyboard nav + virtualization + selection)
| Component | scope | morfo | prov | eidos | demo | test | #0 | status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| listbox | soma,sema | Y | Y | Y | Y | Y | | **audited** (1H/1M · A31) |
| grid-list | soma,sema | Y | Y | Y | Y | Y | | **audited** (2H/1M · A31) |
| tree-view | soma,sema | Y | Y | Y | Y | Y | | **audited** (1H/3M · A31) |
| tree-grid | soma,sema | Y | Y | Y | Y | Y | | **audited** (1H · A31) |
| table | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M · engine-backed, A31 refuted) |
| virtual-list | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M · A33 SvelteMap clean) |
| virtual-grid | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
| carousel | soma,sema | Y | Y | Y | Y | Y | | **audited** (2M/1L) |
| feed | soma,sema | Y | Y | Y | Y | Y | | **audited** (clean · A31 refuted) |
| pagination | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
| tag-group | soma,sema | Y | Y | Y | Y | Y | | **audited** (1H/2M/1L · A31) |
| rating-group | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
## Group 5 — Disclosure + selection controls (stateful)
| Component | scope | morfo | prov | eidos | demo | test | #0 | status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| accordion | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (CLEAN) |
| collapsible | soma,sema | Y | Y | Y | Y | Y | | **audited** (1H/1M · seq-lag) |
| tabs | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (CLEAN) |
| stepper | soma,sema | Y | Y | Y | Y | Y | | **audited** (2M/3L) |
| toggle | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M · seq post OK) |
| toggle-group | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (1M · A31) |
| switch | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M · seq post OK) |
| checkbox | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (1M/1L · A31 group, seq post OK) |
| radio-group | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (1M · A31 clean) |
| slider | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M · no A6 leak) |
| splitter | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (1M/1L) |
| scroll-area | soma | Y | Y | Y | Y | Y | | **audited** (1M) |
## Group 6 — Actions + feedback + misc behavior
| Component | scope | morfo | prov | eidos | demo | test | #0 | status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| button | soma,sema,eidos | Y | Y | Y | Y | - | F | **audited** (CLEAN · ref impl) |
| toast | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
| announce | soma,sema | Y | Y | Y | Y | Y | | **audited** (2M) |
| clipboard | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M/2L) |
| drag-drop | soma,sema | Y | Y | Y | Y | Y | | **audited** (3M) |
| form | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M · A36 fix held) |
| file-upload | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
| toolbar | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M · A35 fix held) |
| breadcrumb | soma | Y | Y | Y | Y | Y | | **audited** (1H · archetype-item) |
| meter | soma | Y | Y | Y | Y | Y | | **audited** (1M) |
| progress | soma | Y | Y | Y | Y | Y | | **audited** (1M) |
| timeline | soma,sema,eidos | Y | Y | Y | Y | Y | | **audited** (1M · archetype clean) |
| image-adjustments | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
| image-picker | soma,sema | Y | Y | Y | Y | Y | | **audited** (1M) |
| cropper | soma,sema | Y | Y | Y | Y | Y | | **audited** (2M/1L) |
| chronos | soma,sema | Y | Y | Y | Y | - | EXCL | excluded |
| metrics | sema,eidos | Y | dir* | Y | Y | - | #0 RESOLVED | **audited** (1M) |
| words | soma,sema | Y | Y | Y | Y | Y | EXCL | excluded |
## Group 7 — Eidos-only · layout primitives (theming-heavy; A/B/C/D light)
| Component | scope | morfo | prov | eidos | demo | test | status |
| --- | --- | --- | --- | --- | --- | --- | --- |
| box | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| flex | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| grid | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| stack | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| group | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| wrap | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| container | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| section | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| aspect-ratio | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| auto-grid | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| float | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
## Group 8 — Eidos-only · typography + text
| Component | scope | morfo | prov | eidos | demo | test | status |
| --- | --- | --- | --- | --- | --- | --- | --- |
| text | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| heading | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| display | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| code | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| code-block | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| kbd | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| mark | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| highlight | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| link | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| s-text | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| s-text-virtual-list | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
## Group 9 — Eidos-only · visual elements + composite-eidos + service
| Component | scope | morfo | prov | eidos | demo | test | status |
| --- | --- | --- | --- | --- | --- | --- | --- |
| badge | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| card | sema,eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| avatar | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| avatar-group | eidos | Y | - | (co) | Y | - | **audited** (B8 theming) |
| image | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| separator | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| skeleton | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| spinner | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| qr-code | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| icon | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| banner | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| chart | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| button-group | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| split-button | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| fab | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| radio-cards | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| format-date | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| format-number | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| relative-time | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| trans | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
| cascade | eidos | Y | - | Y | - | - | **audited** (B8 theming) |
| motion | eidos | Y | - | Y | - | - | **audited** (B8 theming) |
| scroll-frames | eidos | Y | - | Y | Y | - | **audited** (B8 theming) |
---
## Proposed audit order (batches)
Rationale (from §1.4): the hardest, most-coupled components are audited first because
they expose **systemic** issues (dismissal-trigger-exclusion, focus return, floating-gap
canon, virtual-vs-roving keyboard divergence, scope-vs-eidos-dir drift, TSC eager
substitution) that then recur in the simpler ones — finding them early makes every later
audit faster and lets the roll-ups (`SUMMARY`, `SHARED_EXTRACTION`, `THEMING_COHERENCE`,
`VALIDATOR_GAPS`) accrete real systemic findings.
- **Batch 1 (first, on approval) — the 5 canonical overlays:**
`select`, `dialog`, `popover`, `combobox`, `dropdown-menu`.
These are exactly the protocol's named hard set; portal + floating + dismissal + focus
+ (select/combobox) typeahead + virtual-vs-roving focus. Systemic patterns surface here.
- **Batch 2 — remaining overlays + menus:** `context-menu`, `menubar`,
`navigation-menu`, `tooltip`, `drawer`, `alert-dialog`, `command`, `link-preview`,
`float-panel`, `onion-menu`, `menu-dial` (+ confirm the two #0 provider anomalies).
- **Batch 3 — pickers + calendar family:** the 5 pickers, `calendar`, `range-calendar`,
`month-grid`, `year-grid`, `picker-shell`.
- **Batch 4 — fields:** Group 3 (14).
- **Batch 5 — collections + data:** Group 4 (12).
- **Batch 6 — disclosure + selection controls:** Group 5 (12).
- **Batch 7 — actions + feedback + misc:** Group 6 (17; `words` excluded).
- **Batch 8 — eidos-only primitives:** Groups 7–9 (44). Dimensions A/B/C/D are light
(no provider behavior); focus is **E / E-bis (theming coherence)** + the `THEMING_COHERENCE`
roll-up, where these contribute the most distinct hardcoded-value / token-naming data.
After each batch: write the per-component `audit/components/{kebab}.md` files, regenerate
the roll-ups (`00_WORKLIST` statuses, `SUMMARY`, `SHARED_EXTRACTION`, `THEMING_COHERENCE`,
`VALIDATOR_GAPS`), then stop and report before the next batch.
> Path note: the protocol fixes the output root at `audit/` (repo root) so `MODE=reeval`
> can find `audit/components/{kebab}.md`. The repo's own convention parks audits under
> `docs/process/`; I followed the protocol's literal path. Say the word if you want it
> relocated under `docs/process/audit/` instead.

Powered by TurnKey Linux.