You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The locked goal includes the docker/self-host image as part of the single project. reviewbot already SHIPPED the building blocks: src/server.ts (Node entry running the same Worker handlers via createSelfHostAdapters), Dockerfile, docker-compose.yml (7-service stack), src/platform/selfhost/* (postgres-storage + pg-dialect, sqlite-storage, queue, vector, blob, inference, lock, provider, subscription-inference for Claude-Code/Codex), migrations-postgres/, and docs/SELF_HOSTING.md — all structurally complete but INTEGRATION-UNVALIDATED (need a real container run). This is the convergence+PUBLISH layer that folds that runtime into gittensory as the published image. The self-host roadmap #976 (portability), #977 (storage adapters), #978 (AI provider seam), #979 (subscription AI), #980 (docker image), #981 (config/secrets/onboarding), #982 (self-host dashboard) own the adapter MECHANICS — REFERENCE them, do NOT duplicate.
Deliverables
Fold reviewbot's self-host runtime into gittensory: server.ts Node entry, Dockerfile, docker-compose.yml, the platform-adapter seam, Postgres storage + a drizzle pg dialect, the selfhost adapters (blob/browser/inference/lock/queue/vector), and subscription-inference (Claude-Code/Codex).
Migrate gittensory's direct env.DB/env.JOBS/env.AI usage to env.platform.adapters (behavior-preserving; gittensory already uses drizzle, so the pg dialect is more tractable).
Rename all reviewbot-> gittensory identifiers throughout the self-host stack (binding names, queue names, metric prefixes reviewbot_*, /data paths, container names, DB name).
Run a REAL container smoke test (Postgres/Redis/Qdrant/Ollama/MinIO) — the self-host deliverable cannot be claimed done on structurally-complete-but-unvalidated adapters.
Publish the gittensory self-host image; update SELF_HOSTING.md.
Part of #983.
Context
The locked goal includes the docker/self-host image as part of the single project. reviewbot already SHIPPED the building blocks:
src/server.ts(Node entry running the same Worker handlers viacreateSelfHostAdapters),Dockerfile,docker-compose.yml(7-service stack),src/platform/selfhost/*(postgres-storage + pg-dialect, sqlite-storage, queue, vector, blob, inference, lock, provider, subscription-inference for Claude-Code/Codex),migrations-postgres/, anddocs/SELF_HOSTING.md— all structurally complete but INTEGRATION-UNVALIDATED (need a real container run). This is the convergence+PUBLISH layer that folds that runtime into gittensory as the published image. The self-host roadmap #976 (portability), #977 (storage adapters), #978 (AI provider seam), #979 (subscription AI), #980 (docker image), #981 (config/secrets/onboarding), #982 (self-host dashboard) own the adapter MECHANICS — REFERENCE them, do NOT duplicate.Deliverables
server.tsNode entry,Dockerfile,docker-compose.yml, the platform-adapter seam, Postgres storage + a drizzle pg dialect, the selfhost adapters (blob/browser/inference/lock/queue/vector), and subscription-inference (Claude-Code/Codex).env.DB/env.JOBS/env.AIusage toenv.platform.adapters(behavior-preserving; gittensory already uses drizzle, so the pg dialect is more tractable).reviewbot->gittensoryidentifiers throughout the self-host stack (binding names, queue names, metric prefixesreviewbot_*,/datapaths, container names, DB name).SELF_HOSTING.md.Acceptance criteria
env.platform.adapters, not raw bindings; allreviewbotidentifiers are renamed.Notes
env.*-> adapters) is the largest hidden cost — gittensory's services dereference bindings directly. Self-host adapters are integration-UNVALIDATED until a real container run.Sub-issues