From c101ca1380e50bf37857d51c294aea8803b500a5 Mon Sep 17 00:00:00 2001 From: Georg Bauer Date: Wed, 29 Jul 2026 19:29:00 +0200 Subject: [PATCH] chore: removed old plan document --- REFACTOR.md | 91 ----------------------------------------------------- 1 file changed, 91 deletions(-) delete mode 100644 REFACTOR.md diff --git a/REFACTOR.md b/REFACTOR.md deleted file mode 100644 index 5524708..0000000 --- a/REFACTOR.md +++ /dev/null @@ -1,91 +0,0 @@ -# Refactoring review - -This is the remaining refactoring backlog after PR #61. Completed work is -intentionally omitted. Any implementation must preserve DS4 behavior, -especially model execution, token processing, context accounting, and KV-cache -handling. - -## Current assessment - -The codebase remains deliberate, concrete Rust. Database message invariants, -runtime submission, checkpoint/source modeling, preference dispatch, and the -pure A2UI evaluation and validation boundaries are now concentrated in clear -locations. - -The remaining concentration is mostly in `App::update` and the Metal execution -path. Neither justifies a broad framework: keep extracting only boundaries that -already exist in the domain, and treat Metal changes as high-risk DS4 parity -work. - -## Remaining work - -### 1. Continue reducing `App::update` at owned domain boundaries - -Priority: medium - -Preference messages now dispatch through `src/app/preferences.rs`, but -`App::update` still spans roughly 890 lines and handles window lifecycle, -projects, generation, A2UI, Git, model management, cache management, and native -integration. - -Move another coherent message family only when its existing `src/app/*` module -can own the complete handling flow. Keep the single public Iced update entry -point. Avoid controller objects and generic dispatch infrastructure; with the -current flat `Message` enum, extra pass-through matchers also weaken exhaustive -matching and should earn that cost. - -### 2. Concentrate repeated Metal FFI invariants incrementally - -Priority: medium, high risk - -`src/engine/metal.rs` and `src/engine/metal/glm.rs` still contain many direct -unsafe calls inside high-level execution logic. `src/engine/metal/gpu.rs` -already proves that small wrappers can own repeated tensor, command, and -lifecycle invariants, but coverage is incomplete. - -Add safe wrappers only for repeated, proven operations. Do not introduce a -general GPU framework or reorganize execution merely to reduce unsafe-block -count. Every change here requires DS4 parity coverage and the relevant real -model/Metal fixtures. - -### 3. Replace argument-count suppressions only for existing records - -Priority: low - -Most remaining suppressions mirror explicit tensor/kernel operands or recursive -A2UI traversal state and should stay. The clearest remaining candidate is -metrics publication: `Metrics::ssd_stats` accepts nineteen fields that already -travel together as execution statistics, and its call is duplicated in -`src/engine.rs`. - -Reuse or introduce one concrete statistics record only if it removes that -duplication without coupling metrics to the Metal executor. Do not create -one-use parameter objects for `Generator::generate`, `Generator::compact`, -Metal kernels, or A2UI rendering solely to satisfy Clippy. - -## Leave alone - -### Generated hotlist data - -`src/engine/metal/hotlist.rs` is mechanically generated. Deterministic embedded -data with its import script is preferable to runtime machinery added only to -reduce source size. - -### Preference-to-engine conversion - -The preference types and effective engine-setting types in `src/settings.rs` -form a useful normalization boundary: optional user input is validated and -converted into concrete DS4-compatible runtime values. - -### Concrete model descriptions - -The model `Shape` constants in `src/engine.rs` reuse common values with struct -update syntax while keeping model differences explicit. - -## Suggested order - -1. Extract one more naturally owned `App::update` message family. -2. Consolidate SSD metrics publication if a single concrete record keeps the - boundary simpler. -3. Tighten repeated Metal FFI operations only alongside dedicated DS4 parity - tests and real fixture runs.