feat(engram): add DataDirRef type, location suggestions, and presenter helpers#484
Closed
tonyblu331 wants to merge 2 commits into
Closed
feat(engram): add DataDirRef type, location suggestions, and presenter helpers#484tonyblu331 wants to merge 2 commits into
tonyblu331 wants to merge 2 commits into
Conversation
This was referenced May 9, 2026
Contributor
Author
|
👋 Maintainer request: could you please add the `type:feature` label? Also a note on the size check: this PR is part of a 7-PR chain (
Each PR's check will turn green as soon as its predecessor merges. All seven are independently within the 400-line budget. |
Adds internal/storage package with: - FormatBytes: human-readable sizes using 1024-based units (B/KiB/MiB/GiB) - AvailableBytes: platform-gated disk space check (syscall.Statfs on Unix, GetDiskFreeSpaceExW on Windows) No Engram coupling. Used by the upcoming data-directory domain layer.
…r helpers Introduces the foundational types and location-discovery layer for Engram data-directory management (issue Gentleman-Programming#346, PR B1 of B1+B2+B3): - DataDirRef: future-proof path type with Resolve(homeDir), DefaultDir, DBPath helpers - SuggestLocations: ordered candidate list with deduplication and free-space labels - Platform-specific volume discovery (Statfs on Unix, GetDiskFreeSpaceEx on Windows) - FormatDirLine / FormatSpaceWarning presenter helpers (no Bubbletea dep) 10 unit tests cover all location and label behaviours. Depends on PR A (feat/storage-utils).
3dce34c to
14f8e4c
Compare
Contributor
Author
|
Superseded by the ≤400 LOC chain (no \size:exception).
This draft exceeded the 400-line review budget vs \main. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary Introduces the foundational types and location-discovery layer for Engram data-directory management (issue #346, PR B1 of B1+B2+B3): -
DataDirRef— future-proof path type withResolve(homeDir), plusDefaultDirandDBPathhelpers -SuggestLocations— ordered, deduplicated candidate list with free-space labels; returns[]LocationwithIsCurrentflag - Platform-specific volume discovery —Statfson Unix,GetDiskFreeSpaceExon Windows viasyscall.NewLazyDLL-FormatDirLine/FormatSpaceWarning— presenter helpers for TUI display (no Bubbletea dep) Bug fixed:IsCurrentwas incorrectly set on the default location when a custom dir was active. ## Changes | File | Type | Lines | |------|------|-------| |internal/components/engram/env.go+env_test.go| New | +76 | |internal/components/engram/locations.go+ test + platform files | New | +239 | |internal/components/engram/presenter.go| New | +25 | | Total | | +340 / budget: 400 ✅ | ## Test plan - [x]go test ./internal/components/engram/... -run "TestDataDirRef|TestDefault|TestDBPath|TestSuggest|TestBuildLabel"— 10 tests, all pass - [x]go build ./...— clean build - [x] Full repogo test ./...— ✅ Pass (CI) - [x] E2Ecd e2e && ./docker-test.sh(ubuntu / arch / fedora) — ✅ Pass (CI) ## PR Chain — Closes #346 | # | PR | Lines | |---|----|-------| | A | #465 | 152 ✅ | | B1 | this PR | 340 ✅ | | B2 | #485 | 171 ✅ | | B3 | #486 | 370 ✅ | | C | #487 | 33 ✅ | | D1 | #488 | 282 ✅ | | D2 | #489 | 340 ✅ | --- ## CI status (GitHub Actions) Checks: https://github.com/Gentleman-Programming/gentle-ai/pull/484/checks | Gate | Status | |------|--------| | Unit Tests (go test ./...) | ✅ Pass | | E2E Tests (ubuntu / arch / fedora) | ✅ Pass | | Issue reference (Closes #346) +status:approved| ✅ Pass | | PR cognitive load vsmain| ⚠️ May fail while #465 is unmerged — GitHub diffs the full stack vsmain; this PR’s own diff is ≤400 lines ✅ | | Exactly onetype:*label | ⚠️ Maintainer applies |bash go test ./... cd e2e && ./docker-test.sh🤖 Generated with Claude CodeChain Context (SDD - stacked PRs targeting main)
The Summary / Changes tables above describe the scoped review unit for this numbered PR. GitHub diff vs main is cumulative while every PR still targets main, so totals grow down-chain even though each PR narrative stays slice-focused.
Merge-order diagram
main -> PR #465 -> [THIS] PR #484 -> PR #485 -> PR #486 -> PR #487 -> PR #488 -> PR #489Autonomy