Add server-side solver service module with REST API endpoints, database
schema, job definitions, and runner result caching.
New files:
- migrations/021_solver_results.sql: solver_results table with upsert constraint
- internal/db/solver_results.go: SolverResultRepository (Upsert, GetByItem, GetByItemRevision)
- internal/api/solver_handlers.go: solver API handlers and maybeCacheSolverResult hook
- jobdefs/assembly-solve.yaml: manual solve job definition
- jobdefs/assembly-validate.yaml: auto-validate on revision creation
- jobdefs/assembly-kinematic.yaml: manual kinematic simulation job
Modified:
- internal/config/config.go: SolverConfig struct with max_context_size_mb, default_timeout
- internal/modules/modules.go, loader.go: register solver module (depends on jobs)
- internal/db/jobs.go: ListSolverJobs helper with definition_name prefix filter
- internal/api/handlers.go: wire SolverResultRepository into Server
- internal/api/routes.go: /api/solver/* routes + /api/items/{partNumber}/solver/results
- internal/api/runner_handlers.go: async result cache hook on job completion
API endpoints:
- POST /api/solver/jobs — submit solver job (editor)
- GET /api/solver/jobs — list solver jobs with filters
- GET /api/solver/jobs/{id} — get solver job status
- POST /api/solver/jobs/{id}/cancel — cancel solver job (editor)
- GET /api/solver/solvers — registry of available solvers
- GET /api/items/{pn}/solver/results — cached results for item
Also fixes pre-existing test compilation errors (missing workflows param
in NewServer calls across 6 test files).
Kindred Silo
Item database and part management system.
Overview
Kindred Silo is an R&D-oriented item database with:
- Configurable part number generation via YAML schemas
- Revision tracking with append-only history, rollback, comparison, and status labels
- BOM management with multi-level expansion, flat BOM flattening, assembly costing, where-used queries, CSV/ODS export
- Authentication with local (bcrypt), LDAP/FreeIPA, and OIDC/Keycloak backends
- Role-based access control (admin > editor > viewer) with API tokens and sessions
- ODS import/export for items, BOMs, and project sheets
- Audit/completeness scoring with weighted per-category property validation
- Web UI — React SPA (Vite + TypeScript, Catppuccin Mocha theme) for item browsing, project management, schema editing, and audit
- CAD integration via REST API (silo-mod, silo-calc)
- Physical inventory tracking with hierarchical locations (schema ready)
Components
silo/
├── cmd/
│ ├── silo/ # CLI tool
│ └── silod/ # API server
├── internal/
│ ├── api/ # HTTP handlers and routes (78 endpoints)
│ ├── auth/ # Authentication (local, LDAP, OIDC)
│ ├── config/ # Configuration loading
│ ├── db/ # PostgreSQL repositories
│ ├── migration/ # Property migration utilities
│ ├── odoo/ # Odoo ERP integration
│ ├── ods/ # ODS spreadsheet library
│ ├── partnum/ # Part number generation
│ ├── schema/ # YAML schema parsing
│ ├── storage/ # Filesystem storage
│ └── testutil/ # Test helpers
├── web/ # React SPA (Vite + TypeScript)
│ └── src/
│ ├── api/ # API client and type definitions
│ ├── components/ # Reusable UI components
│ ├── context/ # Auth context provider
│ ├── hooks/ # Custom React hooks
│ ├── pages/ # Page components (Items, Projects, Schemas, Settings, Audit, Login)
│ └── styles/ # Catppuccin Mocha theme and global styles
├── migrations/ # Database migrations (11 files)
├── schemas/ # Part numbering schemas (YAML)
├── deployments/ # Docker Compose and systemd configs
├── scripts/ # Deployment and setup scripts
└── docs/ # Documentation
Quick Start
See the Installation Guide for complete setup instructions.
Docker Compose (quickest — includes PostgreSQL, OpenLDAP, and Silo):
./scripts/setup-docker.sh
docker compose -f deployments/docker-compose.allinone.yaml up -d
Development (local Go + Docker services):
make docker-up # Start PostgreSQL in Docker
make run # Run silo locally with Go
When auth is enabled, a default admin account is created on first startup using the credentials in config.yaml under auth.local.default_admin_username and auth.local.default_admin_password.
# CLI usage
go run ./cmd/silo register --schema kindred-rd --category F01
Configuration
See config.example.yaml for all options.
Authentication
Silo supports three authentication backends, configured in config.yaml:
| Backend | Description |
|---|---|
| Local | Built-in accounts with bcrypt passwords |
| LDAP | FreeIPA / Active Directory integration |
| OIDC | Keycloak / OpenID Connect providers |
Roles: admin (full access) > editor (create/modify items) > viewer (read-only).
API tokens provide programmatic access for scripts and CAD clients. Set auth.enabled: false for development without authentication.
See docs/AUTH.md for full details.
Client Integrations
CAD and spreadsheet integrations are maintained in separate repositories:
The server provides the REST API and ODS endpoints consumed by these clients.
Documentation
| Document | Description |
|---|---|
| docs/INSTALL.md | Installation guide (Docker Compose and daemon) |
| docs/SPECIFICATION.md | Full design specification and API reference |
| docs/STATUS.md | Implementation status |
| docs/DEPLOYMENT.md | Production deployment and operations guide |
| docs/CONFIGURATION.md | Configuration reference (all config.yaml options) |
| docs/AUTH.md | Authentication system design |
| docs/AUTH_USER_GUIDE.md | User guide for login, tokens, and roles |
| docs/GAP_ANALYSIS.md | Gap analysis and revision control roadmap |
| docs/COMPONENT_AUDIT.md | Component audit tool design |
| docs/ROADMAP.md | Platform roadmap, dependency tiers, and gap summary |
| frontend-spec.md | React SPA frontend specification |
License
MIT License - Copyright (c) 2026 Kindred Systems LLC
See LICENSE for details.