Technical Debt
PartialEngineering documentation, not marketing.
Issues
| Issue | Subsystem | Severity | Impact | Required work | Priority |
|---|---|---|---|---|---|
| Alembic revisions exist but have never been applied to the deployed database | Persistence | high | Live schema may rely on create_all + ALTER TABLE | Run migrations against Railway Postgres and record the revision | P0 |
| Audience verification disabled on Clerk JWT | Auth | medium | Issuer and signature checked; aud is not | Enable verify_aud once Clerk audiences are confirmed | P1 |
| CORS allow_origins=['*'] | API | medium | Any origin may call the API without credentials | Restrict to the web and docs origins | P1 |
| Neo4j :Model uniqueness is fileId only | Graph | medium | orgId is a property, not part of the key | Constraint review before multi-tenant graph sharing | P1 |
| Full-graph serialisation on every structural/semantic read | API | high | CPU-bound work; pagination caps JSON not compute | Cache snapshots; avoid rebuild per request | P1 |
| OCCT kernel off by default | Geometry | medium | Production RCC8 is AABB overlap | Pilot decision, then explicit re-ingest | P0 |
| :CONTAINS is UnrepresentedEdge | Ontology | medium | Hierarchy facts cannot be named honestly | O9 ingest change | P1 |
| Two decision systems (legacy sessions + Decision Runtime) | Decision Memory | low | Two UI tabs, two tables | Document both; retire sessions when unused | P2 |
| Browser-local workspaces still exist beside server projects | Frontend | medium | Import path and dual mapping | Finish migration to sita_projects as authority | P1 |
| No GNN; Semantic Finder must not claim model_inference | Analysis | low | Research interface exists without a model | Keep the pin tests; do not fabricate scores | P3 |
| Settings pages marked coming soon | Frontend | low | Incomplete SaaS chrome | Out of research-critical path | P3 |