38 lines
2.2 KiB
Markdown
38 lines
2.2 KiB
Markdown
# Phase 0 Research: Remove Command with Sequential Multi-Pattern Support
|
||
|
||
## Decision: Sequential removal executed in-memory before filesystem writes
|
||
- **Rationale**: Computing the full rename plan in memory guarantees deterministic previews,
|
||
simplifies conflict detection, and avoids partial renames that could increase IO load or leave the
|
||
filesystem inconsistent.
|
||
- **Alternatives considered**:
|
||
- *Apply-and-check per token*: rejected due to repeated filesystem mutations and difficulty keeping
|
||
undo history coherent.
|
||
- *Streaming rename per file*: rejected because conflicts can only be detected after all tokens
|
||
apply.
|
||
|
||
## Decision: Dedicated `internal/remove` package mirroring replace architecture
|
||
- **Rationale**: Keeps responsibilities separated (parser, engine, summary) and allows reuse of
|
||
traversal/history helpers. Aligns with Composable Rule Engine principle.
|
||
- **Alternatives considered**:
|
||
- *Extending replace package*: rejected to avoid coupling distinct behaviors and tests.
|
||
- *Embedding logic directly in command*: rejected for testability and maintainability reasons.
|
||
|
||
## Decision: Empty-result handling warns and skips rename
|
||
- **Rationale**: Removing multiple tokens could produce empty basenames; skipping prevents creating
|
||
invalid filenames while still informing the user.
|
||
- **Alternatives considered**:
|
||
- *Allow empty names*: rejected as unsafe and difficult to undo cleanly on certain filesystems.
|
||
- *Hard fail entire batch*: rejected because unaffected files should still be processed.
|
||
|
||
## Decision: Ledger metadata records ordered tokens and counts
|
||
- **Rationale**: Automation and undo workflows need insight into which tokens were removed and how
|
||
often, mirroring replace’s metadata for consistency.
|
||
- **Alternatives considered**:
|
||
- *Only store operations*: insufficient for auditing complex removals.
|
||
|
||
## Decision: CLI help & quickstart emphasize ordering semantics
|
||
- **Rationale**: Sequential behavior is the primary mental model difference from other commands; clear
|
||
documentation reduces support load and user confusion.
|
||
- **Alternatives considered**:
|
||
- *Rely on examples alone*: risk of users assuming parallel removal and encountering surprises.
|