diff --git a/docs/architecture-audit-2026-10.md b/docs/architecture-audit-2026-10.md index 77a2752..63358c2 100644 --- a/docs/architecture-audit-2026-10.md +++ b/docs/architecture-audit-2026-10.md @@ -166,13 +166,19 @@ round-семантика `clampByte` и trunc-семантика `clampInt` со `$bindable`, пропс `ontogglealign` удалён; `SchemaToolView` передаёт `bind:aligned`. -### L4. Непроверяемые `as`-касты схемы +### L4. Непроверяемые `as`-касты схемы — СДЕЛАНО (2026-10) -`SchemaToolView.svelte:97,211` -(`tool.schema as ToolSchema>`) и паттерн `spec as XSpec` -в 14+ field-компонентах (`CheckboxControl.svelte:13`, `ColorControl.svelte:14`, -`GradientControl.svelte:16` и др.); двойной каст `as unknown as WorkerLike` в -`executor/executor.ts:35`. Касты отключают проверку соответствия spec kind'у. +- 14 field-контролов: `spec: FieldSpec` + `spec as XSpec` → точный тип спеки в + пропсах (`spec: ColorSpec` и т.д.); каст собран в одном месте — типизированный + хелпер `controlFor()` в `SchemaFields.svelte` (ключ kind в `FIELDS` + гарантирует подтип спеки по `fieldSpecs`). +- `SchemaToolView`/`toolSchemaOf`: касты + `as ToolSchema>` удалены — дефолт дженерика + `Tool

>` уже даёт нужный тип; `undefined` + обрабатывается гардами (`{#if stepSchema}` в разметке, `dims && stepSchema` в + `setStepValue`). +- `executor.ts` `as unknown as WorkerLike` оставлен намеренно: несовместимость + `onerror` (ErrorEvent vs Event) в типах lib.dom; добавлен комментарий-причина. ### L5. Хардкод slug-ов вне registry diff --git a/web/src/lib/components/fields/schema/CheckboxControl.svelte b/web/src/lib/components/fields/schema/CheckboxControl.svelte index 1e4f99a..b42ffa2 100644 --- a/web/src/lib/components/fields/schema/CheckboxControl.svelte +++ b/web/src/lib/components/fields/schema/CheckboxControl.svelte @@ -1,16 +1,16 @@ diff --git a/web/src/lib/components/fields/schema/ColorPairControl.svelte b/web/src/lib/components/fields/schema/ColorPairControl.svelte index 43ae765..9ae9b8c 100644 --- a/web/src/lib/components/fields/schema/ColorPairControl.svelte +++ b/web/src/lib/components/fields/schema/ColorPairControl.svelte @@ -1,22 +1,18 @@ diff --git a/web/src/lib/components/schema/SchemaFields.svelte b/web/src/lib/components/schema/SchemaFields.svelte index f1f5316..93cd3e7 100644 --- a/web/src/lib/components/schema/SchemaFields.svelte +++ b/web/src/lib/components/schema/SchemaFields.svelte @@ -1,8 +1,23 @@