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.
36 lines
3.1 KiB
36 lines
3.1 KiB
# Audit: time-range-field
|
|
audit-version: 1
|
|
audited-at: 2026-06-26
|
|
scope: (SCOPE-DRIFT → SYS-1)
|
|
method: adversarially-verified workflow (analyze → refute); HIGH/CRITICAL lead-verified. Clean-check pseudo-findings dropped. B4 ground-truth: segmented date/time/color-field register inputId via $effect (SYS-A30-EFFECT, no loop); number-field is the direct-assignment reference.
|
|
provider: G:\dev\svelte\vicen\src\uix\soma\components\time-range-field\time-range-field-provider.svelte.ts
|
|
|
|
## Summary
|
|
Counts (post-verification): CRITICAL 0 · HIGH 0 · MEDIUM 1 · LOW 0.
|
|
|
|
## Findings
|
|
### MEDIUM: SYS-1: scope-drift — eidos recipe dir exists but morfo 'scope' omits 'eidos' — time-range-field-001 <!-- id: time-range-field-001 -->
|
|
- dimension: A Contract
|
|
- rule: SYS-1: scope-drift — eidos recipe dir exists but morfo 'scope' omits 'eidos'
|
|
- location: src/uix/morfo/components/time-range-field.ts:7
|
|
- evidence: Morfo declares `scope: ['soma']` but directory src/uix/eidos/components/time-range-field/ exists with time-range-field.svelte, types.ts, time-range-field.css, time-range-field-input.svelte, time-range-field-label.svelte.
|
|
- impact: Contract validator will not enforce eidos presence rules; consumers may ignore eidos-layer variants/size/color constraints.
|
|
- proposed-fix: Add 'eidos' to morfo scope: `scope: ['soma', 'eidos']`
|
|
- verify: [confirmed] CONFIRMED. src/uix/morfo/components/time-range-field.ts:7 reads `scope: ['soma'],` — 'eidos' is absent. The eidos directory src/uix/eidos/components/time-range-field/ genuinely exists with 6 files (time-range-field.svelte, time-range-field.css, types.ts, index.ts, time-range-field-input.svelte, time-range-field-label.svelte) per Glob. This is textbook SYS-1 scope-drift. The omission is real (not intentional): the sibling component using the IDENTICAL overlay trick — date-range-field, explicitly named in this recipe's header comment ('Same trick DateRangeField uses') — declares `scope: ['soma', 'eidos']` (src/uix/morfo/components/date-range-field.ts:10). So time-range-field's `['soma']` diverges from its own established sibling precedent. MEDIUM is correct per the SYS-1 baseline.
|
|
- fix-status: open
|
|
|
|
## No-findings dimensions
|
|
B Behavior, C DOM-selector, D Frontier, E-bis Theming (roles/aliases/spacing/radius/z-index/opacity naming), F Tests, G Redundancy
|
|
|
|
## Theming facts (E-bis)
|
|
- magic z-index: none
|
|
- magic literals: 0.9em (line 84 time-range-field.css) — separator font-size should be tokenized
|
|
- undeclared parts: none
|
|
- roles clean: true · variants clean: true
|
|
- label-font (one step below input?): CLEAN — label uses var(--time-field-label-font-size, var(--font-size-sm)) = 0.875rem (14px), input uses var(--_time-field-font-size) defaulting to var(--time-field-font-size-md) = var(--font-size-md) = 1rem (16px). One typographic step below.
|
|
|
|
## Tests (F)
|
|
- exists: true · env: jsdom
|
|
- covers: validation (endpoint ordering, min/max bounds, custom validation); label click focus behavior (first start segment); custom validation preference over built-in rules
|
|
- untested: readonly segment propagation (startReadonlySegments / endReadonlySegments behavior); readonly-without-value warning scenario
|