Skip to content

Conversation

@miguelramos
Copy link
Member

No description provided.

Implement the error module for workspace-fs crate as specified in
PRD §5.6 (FR-6.1.1 through FR-6.2.9):

Error variants implemented:
- NotFound { path } - path does not exist
- PermissionDenied { path } - insufficient permissions
- AlreadyExists { path } - path already exists
- NotAFile { path } - expected file but found directory
- NotADirectory { path } - expected directory but found file
- NotEmpty { path } - directory not empty
- InvalidUtf8 { path } - file content is not valid UTF-8
- Io { path, operation, source } - wrapped I/O error
- Timeout { path, operation, duration } - operation timed out

Features:
- Uses snafu 0.8.9 for derive and context selectors
- Result<T> type alias for convenience
- Implements std::error::Error with proper source chaining
- Static assertions ensure Error is Send + Sync
- Comprehensive documentation with examples
- 20 unit tests covering all variants and traits

Closes: workspace-node-tools-906.1
Implement AsRef<str> trait for Error enum to maintain consistency with
workspace-core error patterns. Returns qualified variant names as static
strings (e.g., "Error::NotFound") for:
- Error categorization in logging systems
- Metrics and telemetry
- Pattern matching on error types without accessing fields

Added 10 unit tests covering all variants and usage patterns.
Total test count: 30
@miguelramos miguelramos self-assigned this Jan 13, 2026
@miguelramos miguelramos added ♨️ ACTION: pull request Pull request ❤️‍🔥 TYPE: Feature New feature or request 🧨 BREAKING CHANGE No previous compatibility labels Jan 13, 2026
@miguelramos miguelramos merged commit 5d6f6ca into feat/next-evolution Jan 13, 2026
5 checks passed
@miguelramos miguelramos deleted the feature/workspace-node-tools-906-error-module branch January 13, 2026 17:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

♨️ ACTION: pull request Pull request 🧨 BREAKING CHANGE No previous compatibility ❤️‍🔥 TYPE: Feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants