# Progress Tracks implementation progress against the phases in `PROJECT_PLAN.md`. ## Phase 1: Foundation — COMPLETE **Deliverables:** - [x] Go module (`go.mod`) at `git.wntrmute.dev/kyle/exo` - [x] `core` package: `Header`, `Metadata`, `Value`, `ObjectType`, `NewUUID`, `MapFromList`/`ListFromMap` - [x] SQLite migration framework with embedded SQL files (`db/migrations/`) - [x] Initial schema migration (`001_initial.sql`): 13 tables covering shared infrastructure, bibliographic, and artifact repository - [x] Database access layer: `Open` (with WAL, foreign keys, busy timeout), `StartTX`/`EndTX`, `ToDBTime`/`FromDBTime` - [x] `config` package: `Config` struct with paths for database, blob store, Minio endpoint, gRPC listen address - [x] `.golangci.yaml` — strict linting (errcheck, govet, gosec, staticcheck, revive, errorlint) - [x] `Makefile` — vet, lint, test, build targets - [x] Full test coverage for all packages (core, db, config) **Files created:** - `go.mod`, `go.sum` - `core/core.go`, `core/core_test.go` - `db/db.go`, `db/db_test.go`, `db/migrations/001_initial.sql` - `config/config.go`, `config/config_test.go` - `.golangci.yaml`, `Makefile` ## Phase 2: Artifact Repository — COMPLETE **Deliverables:** - [x] `artifacts` package: `Artifact`, `Snapshot`, `BlobRef`, `Citation`, `Publisher` types with `Get`/`Store` methods - [x] `MIME` type alias for clarity - [x] Tag and category management: `CreateTag`/`GetTag`/`GetAllTags`, `CreateCategory`/`GetCategory`/`GetAllCategories`, `GetArtifactIDsForTag` - [x] Metadata store/retrieve operations (`StoreMetadata`/`GetMetadata`) - [x] `blob` package: Content-addressable blob store (SHA256 hashing, hierarchical directory layout, read/write/exists) - [x] YAML import: `ArtifactYAML`, `SnapshotYAML`, `CitationYAML` with `ToStd()` conversions and `LoadArtifactFromYAML` - [x] Protobuf message definitions for all artifact types (`proto/exo/v1/common.proto`, `proto/exo/v1/artifacts.proto`) - [x] gRPC service: `ArtifactService` with create/get artifacts, store/retrieve blobs, manage tags/categories, search by tag - [x] `server` package: Full gRPC service implementation with proto-domain conversion helpers - [x] buf.yaml for proto linting, buf.gen.yaml for code generation - [x] Full test coverage for all packages (artifacts, blob, server) **Files created:** - `blob/blob.go`, `blob/blob_test.go` - `artifacts/artifact.go`, `artifacts/citation.go`, `artifacts/publisher.go`, `artifacts/snapshot.go` - `artifacts/metadata.go`, `artifacts/tagcat.go`, `artifacts/yaml.go`, `artifacts/artifacts_test.go` - `proto/exo/v1/common.proto`, `proto/exo/v1/artifacts.proto` - `proto/buf.yaml`, `proto/buf.gen.yaml` - `proto/exo/v1/*.pb.go` (generated) - `server/server.go`, `server/server_test.go` ## Phase 3: CLI Tools — NOT STARTED ## Phase 4: Knowledge Graph — NOT STARTED ## Phase 5: Desktop Application — NOT STARTED (Kotlin, out of scope for Go backend) ## Phase 6: Remote Access & Backup — NOT STARTED