# Silo Development Status **Last Updated:** 2026-03-01 --- ## Implementation Status ### Core Systems | Component | Status | Notes | |-----------|--------|-------| | PostgreSQL schema | Complete | 23 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 | ~140 REST endpoints via chi/v5 | | CLI tool (`silo`) | Complete | Item registration and management | | Filesystem file storage | Complete | Upload, download, 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 | | ODS import/export | Complete | Items, BOMs, project sheets, templates | | Multi-level BOM | Complete | Recursive expansion, where-used, CSV/ODS export/import | | Authentication | Complete | Local (bcrypt), LDAP/FreeIPA, OIDC/Keycloak | | Role-based access control | Complete | admin > editor > viewer hierarchy | | API token management | Complete | SHA-256 hashed, bearer auth | | Session management | Complete | PostgreSQL-backed (pgxstore), 24h lifetime | | Audit logging | Complete | audit_log table, completeness scoring | | CSRF protection | Complete | nosurf on web forms | | Fuzzy search | Complete | sahilm/fuzzy library | | Web UI | Complete | React SPA (Vite + TypeScript), 6 pages, Catppuccin Mocha theme | | File attachments | Complete | Direct uploads, item file association, thumbnails | | .kc extraction pipeline | Complete | Metadata, dependencies, macros indexed on commit | | .kc checkout packing | Complete | Manifest, metadata, history, dependencies repacked on download | | .kc metadata API | Complete | GET/PUT metadata, lifecycle transitions, tag management | | .kc dependency API | Complete | List raw deps, resolve UUIDs to part numbers + file availability | | .kc macro API | Complete | List macros, get source content by filename | | Approval workflows | Complete | YAML-configurable ECO workflows, multi-stage review gates, digital signatures | | Solver service | Complete | Server-side assembly constraint solving, result caching, job definitions | | Workstation registration | Complete | Device identity, heartbeat tracking, per-user workstation management | | Edit sessions | Complete | Acquire/release locks, hard interference detection, SSE notifications | | SSE targeted delivery | Complete | Per-item, per-user, per-workstation event filtering | | Odoo ERP integration | Partial | Config and sync-log CRUD functional; push/pull are stubs | | 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 | ### Client Integrations FreeCAD workbench and LibreOffice Calc extension are maintained in separate repositories ([silo-mod](https://git.kindred-systems.com/kindred/silo-mod), [silo-calc](https://git.kindred-systems.com/kindred/silo-calc)). The server provides the REST API and ODS endpoints consumed by those clients. ### 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 | 31 Go test files across api, db, modules, ods, partnum, schema packages | --- ## Infrastructure | Service | Host | Status | |---------|------|--------| | PostgreSQL | psql.example.internal:5432 | Running | | File Storage | /opt/silo/data (filesystem) | 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 170 category codes 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 | | 008_odoo_integration.sql | Odoo ERP integration tables (integrations, sync_log) | | 009_auth.sql | Authentication system (users, api_tokens, sessions, audit_log, user tracking columns) | | 010_item_extended_fields.sql | Extended item fields (sourcing_type, long_description) | | 011_item_files.sql | Item file attachments (item_files table, thumbnail_key column) | | 012_bom_source.sql | BOM entry source tracking | | 013_move_cost_sourcing_to_props.sql | Move sourcing_link and standard_cost from item columns to revision properties | | 014_settings.sql | Settings overrides and module state tables | | 015_jobs.sql | Job queue, runner, and job log tables | | 016_dag.sql | Dependency DAG nodes and edges | | 017_locations.sql | Location hierarchy and inventory tracking | | 018_kc_metadata.sql | .kc metadata tables (item_metadata, item_dependencies, item_macros, item_approvals, approval_signatures) | | 019_approval_workflow_name.sql | Approval workflow name column | | 020_storage_backend_filesystem_default.sql | Storage backend default to filesystem | | 021_solver_results.sql | Solver result caching table | | 022_workstations.sql | Workstation registration table | | 023_edit_sessions.sql | Edit session tracking table with hard interference unique index |