Files
sgard/PROGRESS.md
Kyle Isom b1313c1048 Update docs for v1.0.0.
ARCHITECTURE.md: update package structure to reflect actual file layout
(per-operation files, version command, flake, goreleaser), fix Garden
struct (clock field, Restore confirm callback, List method), add
.gitignore to repo layout, remove stale C++ note.

README.md: add NixOS installation instructions.
CLAUDE.md: add nix build command.
PROGRESS.md: add post-Step-8 release work to change log.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 22:38:53 -07:00

3.5 KiB
Raw Permalink Blame History

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: Phase 1 complete (Steps 18). All local commands implemented.

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 --repo flag.
  • Step 2: Manifest PackageManifest and Entry structs with YAML tags, New(), Load(path), and Save(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 AddGarden struct tying manifest + store, Init(), Open(), Add() handling files/dirs/symlinks, HashFile(), tilde path conversion, CLI init and add commands. 8 tests.
  • Step 5: Checkpoint and StatusCheckpoint() re-hashes all tracked files, stores changed blobs, updates timestamps. Status() reports ok/modified/missing per entry. CLI checkpoint (with -m flag) and status commands. 4 tests.
  • Step 6: RestoreRestore() with selective paths, force mode, confirm callback, timestamp-based auto-restore, parent dir creation, symlink support, file permission restoration. CLI restore with --force flag. 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.
  • Step 8: Polish — golangci-lint config, all lint issues fixed, clockwork clock abstraction injected into Garden, e2e lifecycle test, docs updated.

In Progress

(none)

Up Next

Phase 1 is complete. Future work: blob durability, gRPC remote mode.

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: Done — jonboulle/clockwork injected. E2e test uses fake clock for deterministic timestamps.

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.
2026-03-23 8 Polish complete. golangci-lint, clockwork, e2e test, doc updates.
2026-03-23 README, goreleaser config, version command, Nix flake, homebrew formula, release pipeline validated (v0.1.0v0.1.2).