# Silo Development Status **Last Updated:** 2026-01-29 --- ## Implementation Status ### Core Systems | Component | Status | Notes | |-----------|--------|-------| | PostgreSQL schema | Complete | 7 migrations applied | | YAML schema parser | Complete | Supports enum, serial, constant, string segments | | Part number generator | Complete | Scoped sequences, category-based format | | API server (`silod`) | Complete | 35+ REST endpoints via chi/v5 | | CLI tool (`silo`) | Complete | Item registration and management | | MinIO file storage | Complete | Upload, download, versioning, checksums | | Revision control | Complete | Append-only history, rollback, comparison, status/labels | | Project management | Complete | CRUD, many-to-many item tagging | | CSV import/export | Complete | Dry-run validation, template generation | | Web UI | Complete | Items and schemas pages (htmx) | | Docker Compose | Complete | Dev and production configurations | | Deployment scripts | Complete | setup-host, deploy, init-db, setup-ipa-nginx | | systemd service | Complete | Unit file and environment template | ### FreeCAD Workbench | Command | Status | Notes | |---------|--------|-------| | Silo_Save | Implemented | Auto-save + upload to MinIO | | Silo_Commit | Implemented | Save with revision comment | | Silo_Pull | Implemented | Download / create items | | Silo_Push | Implemented | Batch upload modified files | | Silo_Info | Implemented | View revision history | | Silo_Register | Implemented | Generate part number for document | | Silo_Open | Implemented | Open item by part number | | Silo_Browse | Implemented | Browse items in list dialog | Workbench needs end-to-end testing with a running Silo instance. ### Not Yet Implemented | Feature | Notes | |---------|-------| | Location API endpoints | Database tables exist (`locations`, `inventory`), no REST handlers | | Inventory API endpoints | Database tables exist, no REST handlers | | Date segment type | Schema parser placeholder only | | Part number format validation | API accepts but does not validate format on creation | | Unit tests | No test coverage | --- ## Infrastructure | Service | Host | Status | |---------|------|--------| | PostgreSQL | psql.kindred.internal:5432 | Running | | MinIO | localhost:9000 (API) / :9001 (console) | Configured | | Silo API | localhost:8080 | Builds successfully | --- ## Schema Status The part numbering schema (`kindred-rd`) is at **version 3** using the `{category}-{sequence}` format (e.g., `F01-0001`). This replaced the earlier `{project}-{type}-{sequence}` format. Projects are now managed as many-to-many tags rather than being embedded in part numbers. The schema defines 70+ categories across 10 groups: - F01-F18: Fasteners - C01-C17: Fluid Fittings - R01-R44: Motion Components - S01-S17: Structural Materials - E01-E27: Electrical Components - M01-M18: Mechanical Components - T01-T08: Tooling and Fixtures - A01-A07: Assemblies - P01-P05: Purchased/Off-the-Shelf - X01-X08: Custom Fabricated Parts --- ## Database Migrations | Migration | Description | |-----------|-------------| | 001_initial.sql | Core schema (items, revisions, relationships, locations, inventory, sequences) | | 002_sequence_by_name.sql | Sequence naming changes | | 003_remove_material.sql | Schema cleanup | | 004_cad_sync_state.sql | CAD synchronization state | | 005_property_schema_version.sql | Property versioning framework | | 006_project_tags.sql | Many-to-many project-item relationships | | 007_revision_status.sql | Revision status and labels |