[agent/claude:sonnet] DX audit: 1) Is CLAUDE.md helpful for a new developer? 2) Ru... #1
1 changed files with 43 additions and 0 deletions
43
REPORT.md
Normal file
43
REPORT.md
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
# DX Audit Report — go-cache
|
||||
|
||||
## 1. CLAUDE.md — helpful for a new developer?
|
||||
|
||||
**Overall: Yes.** Covers project purpose, commands, architecture, testing conventions, commit conventions, and environment. A new developer can orient quickly.
|
||||
|
||||
**Minor gaps:**
|
||||
|
||||
- `cache.go:1` package doc reads "file-based cache for GitHub API responses" — misleading; the package is general-purpose and the GitHub helpers are a small subset.
|
||||
- `GitHubReposKey` / `GitHubRepoKey` helpers are not mentioned in CLAUDE.md (only discoverable by reading the source).
|
||||
- `docs/architecture.md:182` shows a stale `fmt.Errorf` example in the path-traversal section; the code now uses `coreerr.E()`.
|
||||
|
||||
## 2. Test coverage
|
||||
|
||||
```
|
||||
forge.lthn.ai/core/go-cache coverage: 70.1% of statements
|
||||
|
||||
cache.go:New 83.3%
|
||||
cache.go:Path 70.0%
|
||||
cache.go:Get 75.0%
|
||||
cache.go:Set 66.7%
|
||||
cache.go:Delete 66.7%
|
||||
cache.go:Clear 66.7%
|
||||
cache.go:Age 70.0%
|
||||
cache.go:GitHubReposKey 0.0% ← untested
|
||||
cache.go:GitHubRepoKey 0.0% ← untested
|
||||
```
|
||||
|
||||
Uncovered paths: both GitHub key helpers, path-traversal rejection in `Path()`, and error injection branches in `Set`/`Delete`/`Clear` (e.g. `EnsureDir` failing, `Write` failing, `Delete` failing).
|
||||
|
||||
## 3. Error handling — `coreerr.E()` vs `fmt.Errorf`
|
||||
|
||||
**Clean.** No `fmt.Errorf` in source code. All errors use `coreerr.E()`.
|
||||
|
||||
One stale documentation example: `docs/architecture.md:182` shows `fmt.Errorf` in an inline code snippet — documentation only, not executed.
|
||||
|
||||
## 4. File I/O — `go-io` vs `os.ReadFile` / `os.WriteFile`
|
||||
|
||||
**Clean.** All storage operations delegated to `coreio.Medium`. The `os` package is imported only for:
|
||||
- `os.Getwd()` — to derive the default `baseDir` when none is provided (not a file read/write).
|
||||
- `os.ErrNotExist` — used as a sentinel to distinguish "file not found" from other read errors.
|
||||
|
||||
Neither `os.ReadFile` nor `os.WriteFile` appears anywhere in the codebase.
|
||||
Loading…
Add table
Reference in a new issue