feat(selfhost): wire Codex reviews and secure observability - #1678
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1678 +/- ##
==========================================
+ Coverage 95.59% 95.75% +0.16%
==========================================
Files 204 211 +7
Lines 22316 22972 +656
Branches 8067 8294 +227
==========================================
+ Hits 21332 21997 +665
+ Misses 408 401 -7
+ Partials 576 574 -2
🚀 New features to boost your workflow:
|
74f4dcc to
d89d349
Compare
d89d349 to
f4aa25e
Compare
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-06-29 17:54:25 UTC
⏸️ Suggested Action - Manual Review
Review summary Blockers
Nits — 7 non-blocking
Concerns raised — review before merging
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
|
@gittensory gate-override Maintainer-lane self-host setup PR: all CI, security, coverage, and self-host smoke checks are green. The remaining blocker is the deployed gate readiness/preflight hold for owner-authored work when repo registration is unavailable, and this PR includes the upstream fix for that false-positive. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | 9d7d044 | Commit Preview URL Branch Preview URL |
Jun 29 2026, 11:31 AM |
…er docs (#1828) (#4142) Prometheus's 180d retention default had no sizing rationale and no comment, unlike the explicitly-justified 336h/14d (Loki) and 168h/7d (Tempo) siblings; git history shows it silently replaced a deliberate 30d default when it became an override-able env var in #1678. Add a comment justifying why metrics can reasonably outlive logs/traces (far cheaper per-day TSDB storage) while lowering the default to 90d, a considered middle ground rather than an unexplained six-month default. QUEUE_CONCURRENCY/QUEUE_BACKGROUND_CONCURRENCY had no core-count-based sizing guidance, unlike PGPOOL_MAX's existing "raise if you see X, watch Y" treatment. Add equivalent guidance anchored to vCPU count. The self-hosting-operations docs claimed the runner service "ships with no CPU/memory limit at all" in two places; this became false once RUNNER_MEM_LIMIT (default 2g) was added for #3893. Fix both occurrences, plus the adjacent table cell making the same now-incorrect claim, to describe the current state: a default memory ceiling with CPU-priority pinning remaining opt-in via docker-compose.override.yml.example.
Summary
CODEX_AI_*,CLAUDE_AI_*,OLLAMA_AI_*,OPENAI_COMPATIBLE_AI_*,OPENAI_AI_*, andANTHROPIC_AI_*settings instead of shared ambiguous AI knobs.AI_MODEL,AI_EFFORT,AI_BASE_URL,AI_API_KEY, orAI_TIMEOUT_MSvalues cannot silently steer the wrong backend.AGENTS.mdfor Codex review context while preservingCLAUDE.mdfallback and skills loading.gittensory-selfhost@<version>release id and the release workflow uploads the exact built bundle maps.Closes #1469.
Scope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Validation
git diff --checknpm run actionlintnpm run typechecknpm run test:coveragelocally;codecov/patchrequires >=97% coverage of the lines AND branches you changed (aim for 98%+ on your diff so CI variance does not fail near the threshold). Global coverage is a non-blocking trend with a loose 90% backstop, not the gate.npm run test:workersnpm run build:mcpnpm run test:mcp-packnpm run ui:openapi:checknpm run ui:lintnpm run ui:typechecknpm run ui:buildnpm audit --audit-level=moderateAdditional validation:
npm run test:cinpm run typechecknpx vitest run test/unit/selfhost-grafana-reporting.test.ts test/unit/selfhost-ai.test.ts test/unit/ai-review-advisory.test.tsnpx vitest run test/unit/signals-coverage.test.ts test/unit/selfhost-ai.test.tsGRAFANA_ADMIN_PASSWORD=placeholder docker compose --profile observability configestimated_neurons; older source DBs without that column still materialize a valid dashboard-safeestimated_neurons = 0column.node scripts/build-selfhost.mjs --all --sourcemapdist/server.mjs,dist/server.mjs.map,sourceMappingURL=server.mjs.map, non-empty original sources, andsourceRoot=/app/dist.runtime-prebuiltrelease target both build successfully.runtime-prebuiltwithINSTALL_VISUAL_REVIEW=trueinstallspuppeteer-coresuccessfully.GITTENSORY_VERSION,NODE_OPTIONS=--enable-source-maps,dist/server.mjs,dist/server.mjs.map, and source mapsourceRoot=/app/dist./ready, confirmed Codex review settings and auth mount behavior, confirmed Codex reviews completed, and confirmed Codex token/request metrics increased.If any required check was skipped, explain why:
Safety
UI Evidencesection below with JPG/JPEG or PNG screenshots arranged as organized, captioned, clickable thumbnails. SVG screenshots are not used as review evidence. Review-only screenshots or recordings are not committed to the repository.UI Evidence
Notes
reporting-exporter; it does not mount the live application database, and the exporter now mounts the app data volume read-only.estimated_neuronscolumn. Current source DBs copy the real value; older source DBs without the column export0so dashboards remain queryable while operators migrate.CODEX_AI_MODEL,CODEX_AI_EFFORT,CLAUDE_AI_MODEL,CLAUDE_AI_EFFORT,OLLAMA_AI_MODEL,OPENAI_AI_MODEL, and matching provider-specific base URL/key/timeout settings.AI_PROVIDER, so uncredentialed or ignored provider entries are not reported as if they actually ran.GITTENSORY_REPORTING_SOURCE_DB. If the live store is not SQLite, the exporter emits a valid empty reporting database until a compatible reporting source is configured./appand Source Code Root..SENTRY_AUTH_TOKENin thereleaseenvironment; non-official forks skip Sentry upload when the token is absent.