Develop · Forks
Decisions on the record.
The few calls worth defending. Each one is a fork; the other branch would have been a different project.
Decision · 01
Explicit transition tables, not a status column
Project and task status live in states-and-actions tables (intake through ai_ready, in_progress, internal_review, client_review, revision, completed for projects; nine states for tasks) instead of a status string with validation scattered across routes. Every transition takes a row lock and checks the table before writing.
Decision · 02
Local servers for the heavy tools, not one Docker image for everything
Compute-heavy Creator Tools like Image-to-3D-Gaussian-Splat and Motion Tracking Export run as their own local processes, started on demand (a green dot marks one running, on its own port). The AI-content and utility tools stay always-available in the main app. Splitting it that way means the platform doesn't need to keep a GPU warm for tools most projects never touch.
Decision · 03
A mock AI provider by default
The AI gateway supports mock, OpenAI, Anthropic, Ollama and a three_d_scene provider, and defaults to mock. The workflow, the RBAC, and the scoring surfaces could all be built and exercised without an API key, a GPU, or a per-call cost, and swapping in a real provider later is a config change, not a rewrite.
