Forbes 5f144878d6 feat(api): solver service Phase 3b — server endpoints, job definitions, and result cache
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).
2026-02-20 12:08:34 -06:00
2026-01-29 13:10:12 -06:00
2026-01-29 13:10:12 -06:00

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:

  • Kindred Create / FreeCAD workbench -- silo-mod
  • LibreOffice Calc extension -- silo-calc

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.

Description
No description provided
Readme MIT 3.6 MiB
Languages
Go 68.5%
TypeScript 25.5%
Shell 2.7%
PLpgSQL 2.4%
Makefile 0.5%
Other 0.3%