Remove: untrack files, remove manifest entries, save. 2 tests. Verify: check blobs against manifest hashes, report ok/mismatch/missing. 3 tests. List: return all tracked entries, CLI formats by type. 2 tests. Diff: compare stored blob vs current file, simple line diff. 3 tests. Each command in its own file (garden/<cmd>.go) for parallel development. Remove, verify, list implemented by parallel worktree agents; diff manual. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3.2 KiB
3.2 KiB
PROGRESS.md
Tracks implementation status. See PROJECT_PLAN.md for the full plan and ARCHITECTURE.md for design details.
If you are picking this up mid-implementation, read this file first.
Current Status
Phase: Steps 1–7 complete. Ready for Step 8 (Polish).
Last updated: 2026-03-23
Completed Steps
- Step 1: Project Scaffolding — removed old C++ files and
.trunk/config, initialized Go module, added cobra + yaml.v3 deps, created package dirs, set up cobra root command with--repoflag. - Step 2: Manifest Package —
ManifestandEntrystructs with YAML tags,New(),Load(path), andSave(path)with atomic write. 5 tests. - Step 3: Store Package — content-addressable blob store with SHA-256 keying.
New(),Write(),Read(),Exists(),Delete()with atomic writes, hash validation, and two-level directory layout. 11 tests. - Step 4: Garden Core — Init and Add —
Gardenstruct tying manifest + store,Init(),Open(),Add()handling files/dirs/symlinks,HashFile(), tilde path conversion, CLIinitandaddcommands. 8 tests. - Step 5: Checkpoint and Status —
Checkpoint()re-hashes all tracked files, stores changed blobs, updates timestamps.Status()reports ok/modified/missing per entry. CLIcheckpoint(with-mflag) andstatuscommands. 4 tests. - Step 6: Restore —
Restore()with selective paths, force mode, confirm callback, timestamp-based auto-restore, parent dir creation, symlink support, file permission restoration. CLIrestorewith--forceflag. 6 tests. - Step 7: Remaining Commands — Remove (2 tests), Verify (3 tests), List (2 tests), Diff (3 tests). Each in its own file to enable parallel development. All CLI commands wired up.
In Progress
(none)
Up Next
Step 8: Polish (golangci-lint, clock abstraction, e2e test, doc updates).
Known Issues / Decisions Deferred
- Blob durability: blobs are not stored in git. A strategy for backup or replication is deferred to a future phase.
- gRPC remote mode: Phase 2. Package structure is designed to accommodate it (garden core separates logic from CLI wiring).
- Clock abstraction: Inject a clock interface (e.g.
jonboulle/clockwork) into Garden instead of callingtime.Now()directly. Improves timestamp test determinism. Deferred to Step 8 (Polish).
Change Log
| Date | Step | Summary |
|---|---|---|
| 2026-03-23 | — | Design phase complete. ARCHITECTURE.md and PROJECT_PLAN.md written. |
| 2026-03-23 | 1 | Scaffolding complete. Old C++ removed, Go module initialized, cobra root command. |
| 2026-03-23 | 2 | Manifest package complete. Structs, Load/Save with atomic write, full test suite. |
| 2026-03-23 | 3 | Store package complete. Content-addressable blob store, 11 tests. |
| 2026-03-23 | 4 | Garden core complete. Init, Open, Add with file/dir/symlink support, CLI commands. 8 tests. |
| 2026-03-23 | 5 | Checkpoint and Status complete. Re-hash, store changed blobs, status reporting. 4 tests. |
| 2026-03-23 | 6 | Restore complete. Selective paths, force/confirm, timestamp logic, symlinks, permissions. 6 tests. |
| 2026-03-23 | 7 | Remaining commands complete. Remove, Verify, List, Diff — 10 tests across 4 parallel units. |