chore: removed old plan document
This commit is contained in:
91
REFACTOR.md
91
REFACTOR.md
@@ -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.
|
||||
Reference in New Issue
Block a user