Skip to content

feat(rees): replace Sentry with PostHog for error tracking + source maps#8615

Merged
JSONbored merged 2 commits into
mainfrom
claude/posthog-review-enrichment-error-tracking
Jul 25, 2026
Merged

feat(rees): replace Sentry with PostHog for error tracking + source maps#8615
JSONbored merged 2 commits into
mainfrom
claude/posthog-review-enrichment-error-tracking

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

Per the epic's revised strategy (correction comment on #8286, 2026-07-25): PostHog replaces Sentry directly, not a parallel-run sink.

  • Deleted: src/sentry.ts, scripts/validate-sentry-release.mjs, @sentry/node, @sentry/cli, and the three sentry-*.test.ts files.
  • Added: src/posthog.ts (mirrors the deleted sentry.ts's shape 1:1 -- redaction, tag allowlist, capture entry points, including captureAnalyzerDegradationPostHog's Fix Sentry fingerprinting for 3 fragmented issue groups (analyzer_timeout, AI-review-notes, publish-failed) #5010 group-by-WHY behavior), scripts/validate-posthog-release.mjs (narrower than the deleted Sentry validator, since PostHog's release model has no commits/deploys/finalize lifecycle -- just symbol-set presence + no failure_reason via error_tracking/symbol_sets), and three posthog-*.test.ts files with equivalent coverage.
  • No Railway anywhere -- this repo doesn't deploy on Railway anymore. Release/environment resolution is plain POSTHOG_RELEASE/POSTHOG_ENVIRONMENT/POSTHOG_COMMIT_SHA with no platform-specific fallback (previously RAILWAY_GIT_COMMIT_SHA/RAILWAY_DEPLOYMENT_ID/RAILWAY_ENVIRONMENT_NAME). README's Railway deploy section is now generic "Deploy standalone"; docker-compose.yml's rees profile comment and the self-hosting-rees docs page reference POSTHOG_API_KEY instead of SENTRY_DSN for the same cross-wire-avoidance reasoning.
  • @posthog/cli pinned to an exact version (0.9.1, no caret) -- its postinstall script downloads a platform binary over HTTPS with no checksum verification (same risk category @sentry/cli already carried here via its own installer, now audited and pinned).

Closes #8290

Test plan

  • npm run build --prefix review-enrichment clean
  • npm run test:node --prefix review-enrichment -- 1357/1357 passing
  • npm run rees:test (the actual repo-root CI gate command) -- 1357/1357 passing
  • npm run typecheck (repo root) clean
  • npm audit --prefix review-enrichment -- only the pre-existing, unrelated brace-expansion/c8 finding (tracked separately), nothing new from removing @sentry/*

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 25, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
loopover-ui 68ff723 Commit Preview URL

Branch Preview URL
Jul 25 2026, 09:17 AM

@codecov

codecov Bot commented Jul 25, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.84393% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.50%. Comparing base (2004a8f) to head (68ff723).

Files with missing lines Patch % Lines
review-enrichment/src/posthog.ts 99.25% 1 Missing and 1 partial ⚠️
review-enrichment/src/types.ts 0.00% 1 Missing ⚠️
review-enrichment/src/upload-sourcemaps.ts 98.64% 1 Missing ⚠️

❌ Your patch check has failed because the patch coverage (98.84%) is below the target coverage (99.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8615      +/-   ##
==========================================
+ Coverage   89.59%   90.50%   +0.90%     
==========================================
  Files          97       96       -1     
  Lines       22725    22477     -248     
  Branches     3874     3881       +7     
==========================================
- Hits        20360    20342      -18     
+ Misses       2187     1957     -230     
  Partials      178      178              
Flag Coverage Δ
rees 89.55% <98.84%> (+0.98%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
review-enrichment/src/brief.ts 91.13% <100.00%> (ø)
review-enrichment/src/types.ts 0.00% <0.00%> (ø)
review-enrichment/src/upload-sourcemaps.ts 99.47% <98.64%> (+24.47%) ⬆️
review-enrichment/src/posthog.ts 99.25% <99.25%> (ø)

... and 3 files with indirect coverage changes

@codecov

codecov Bot commented Jul 25, 2026

Copy link
Copy Markdown

Bundle Report

Changes will decrease total bundle size by 6 bytes (-0.0%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
loopover-ui 7.42MB -6 bytes (-0.0%) ⬇️

Affected Assets, Files, and Routes:

view changes for bundle: loopover-ui

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/add-scalar-classes-DsGndBGH.js (New) 2.17MB 2.17MB 100.0% 🚀
assets/tanstack-vendor-R4cnZ2kK.js (New) 738.33kB 738.33kB 100.0% 🚀
assets/docs.fumadocs-spike-api-reference-DGXBwIaV.js (New) 442.92kB 442.92kB 100.0% 🚀
assets/AgentScalarChatInterface.vue-DIVZil9q.js (New) 201.71kB 201.71kB 100.0% 🚀
assets/modal-DRAAs6Et.js (New) 184.38kB 184.38kB 100.0% 🚀
assets/client-fkilhkBG.js (New) 146.06kB 146.06kB 100.0% 🚀
assets/maintainer-panel-DdcA3PSp.js (New) 78.99kB 78.99kB 100.0% 🚀
assets/ui-vendor-Dc6I4SGs.js (New) 57.04kB 57.04kB 100.0% 🚀
assets/routes-BQDQIUdB.js (New) 34.98kB 34.98kB 100.0% 🚀
assets/owner-panel-BD0600N9.js (New) 27.46kB 27.46kB 100.0% 🚀
assets/app-yWw0NwqF.js (New) 25.95kB 25.95kB 100.0% 🚀
assets/app.runs-CEdhAQGC.js (New) 23.56kB 23.56kB 100.0% 🚀
assets/miner-panel-mMNmWpw9.js (New) 20.28kB 20.28kB 100.0% 🚀
assets/api._op-nvDxzKR7.js (New) 17.57kB 17.57kB 100.0% 🚀
assets/self-hosting-docs-audit-P-GOKF_A.js (New) 16.61kB 16.61kB 100.0% 🚀
assets/self-hosting-rees-YI64xRrJ.js (New) 15.65kB 15.65kB 100.0% 🚀
assets/app.index-DDeiEnod.js (New) 15.62kB 15.62kB 100.0% 🚀
assets/docs._slug-CIb5A8HL.js (New) 15.37kB 15.37kB 100.0% 🚀
assets/playground-panel-BR0gCokI.js (New) 14.49kB 14.49kB 100.0% 🚀
assets/fairness-BkuZRg8t.js (New) 10.6kB 10.6kB 100.0% 🚀
assets/app.audit-tcyvfk-W.js (New) 10.11kB 10.11kB 100.0% 🚀
assets/app.config-generator-DB9f9YPl.js (New) 10.09kB 10.09kB 100.0% 🚀
assets/maintainers-B6BQfQ7j.js (New) 8.09kB 8.09kB 100.0% 🚀
assets/miners-Bco10BNV.js (New) 7.91kB 7.91kB 100.0% 🚀
assets/agents-BwXOXgs4.js (New) 7.8kB 7.8kB 100.0% 🚀
assets/commands-panel-DRaEHjxn.js (New) 6.65kB 6.65kB 100.0% 🚀
assets/roadmap-Du9ld_OW.js (New) 6.52kB 6.52kB 100.0% 🚀
assets/maintainer-workflow-Cw9chtfd.js (New) 6.52kB 6.52kB 100.0% 🚀
assets/digest-panel-CyT2FvVX.js (New) 6.18kB 6.18kB 100.0% 🚀
assets/repos._owner._repo.quality-Ds96fROi.js (New) 6.14kB 6.14kB 100.0% 🚀
assets/docs-nav-aCRsXGEt.js (New) 5.95kB 5.95kB 100.0% 🚀
assets/docs.index-BMATtgy_.js (New) 5.95kB 5.95kB 100.0% 🚀
assets/api.index-C7BkW_B6.js (New) 4.7kB 4.7kB 100.0% 🚀
assets/docs-D29cm41j.js (New) 2.7kB 2.7kB 100.0% 🚀
assets/api-CIcok6Uy.js (New) 2.69kB 2.69kB 100.0% 🚀
assets/docs-page-DaECE4si.js (New) 2.1kB 2.1kB 100.0% 🚀
assets/table-Bjj-QmPs.js (New) 1.75kB 1.75kB 100.0% 🚀
assets/app.workbench-tCjuw2hv.js (New) 1.58kB 1.58kB 100.0% 🚀
assets/tooltip-Cj4jBLqi.js (New) 1.47kB 1.47kB 100.0% 🚀
assets/session-B08VN7YW.js (New) 1.45kB 1.45kB 100.0% 🚀
assets/tabs-g_oXG5Qa.js (New) 1.39kB 1.39kB 100.0% 🚀
assets/app.repos-WO1vr0ts.js (New) 1.07kB 1.07kB 100.0% 🚀
assets/input-Cv3SNFim.js (New) 796 bytes 796 bytes 100.0% 🚀
assets/file-cog-CsKB54Ho.js (New) 758 bytes 758 bytes 100.0% 🚀
assets/app.maintainer-BZhUUqnk.js (New) 502 bytes 502 bytes 100.0% 🚀
assets/sparkles-CtH2N-MR.js (New) 494 bytes 494 bytes 100.0% 🚀
assets/app.owner-ClBYU7Ol.js (New) 474 bytes 474 bytes 100.0% 🚀
assets/app.commands-CX59wB-C.js (New) 455 bytes 455 bytes 100.0% 🚀
assets/app.playground-BAUqRQmw.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/index-Cm312S6a.js (New) 438 bytes 438 bytes 100.0% 🚀
assets/app.digest-BQLXPB_m.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/eye-off-lDthDnhM.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/app.miner-Dl9ls0lz.js (New) 422 bytes 422 bytes 100.0% 🚀
assets/key-round-CvUSOjMH.js (New) 355 bytes 355 bytes 100.0% 🚀
assets/bot-DeUOWmiF.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/trash-2-Bfa-uPuY.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/save-D3KFqH7s.js (New) 327 bytes 327 bytes 100.0% 🚀
assets/git-pull-request-arrow-BThAAA4B.js (New) 321 bytes 321 bytes 100.0% 🚀
assets/wrench-BrnlGJpt.js (New) 303 bytes 303 bytes 100.0% 🚀
assets/list-checks-CM2raYXy.js (New) 279 bytes 279 bytes 100.0% 🚀
assets/workflow-DSjD6wUV.js (New) 265 bytes 265 bytes 100.0% 🚀
assets/compass-DdJMxm0X.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/history-m7zN04Ts.js (New) 237 bytes 237 bytes 100.0% 🚀
assets/activity--FD3Pqwt.js (New) 234 bytes 234 bytes 100.0% 🚀
assets/message-square-C-KPQZ6y.js (New) 233 bytes 233 bytes 100.0% 🚀
assets/lock-25E-HOdE.js (New) 206 bytes 206 bytes 100.0% 🚀
assets/rotate-cw-lZOnlXIQ.js (New) 201 bytes 201 bytes 100.0% 🚀
assets/play-BwtOJAmc.js (New) 190 bytes 190 bytes 100.0% 🚀
assets/circle-check-CUtzXr04.js (New) 178 bytes 178 bytes 100.0% 🚀
assets/search-Bv1THVgY.js (New) 174 bytes 174 bytes 100.0% 🚀
assets/circle-DtQBxgfq.js (New) 130 bytes 130 bytes 100.0% 🚀
assets/add-scalar-classes-si2frfD3.js (Deleted) -2.17MB 0 bytes -100.0% 🗑️
assets/tanstack-vendor-texZZKiw.js (Deleted) -738.33kB 0 bytes -100.0% 🗑️
assets/docs.fumadocs-spike-api-reference-yeMDCMfe.js (Deleted) -442.92kB 0 bytes -100.0% 🗑️
assets/AgentScalarChatInterface.vue-COyTGQ6r.js (Deleted) -201.71kB 0 bytes -100.0% 🗑️
assets/modal-DsplC37l.js (Deleted) -184.38kB 0 bytes -100.0% 🗑️
assets/client-CiqlpHR1.js (Deleted) -146.06kB 0 bytes -100.0% 🗑️
assets/maintainer-panel-CKvbCzBK.js (Deleted) -78.99kB 0 bytes -100.0% 🗑️
assets/ui-vendor-I2DbL7VS.js (Deleted) -57.04kB 0 bytes -100.0% 🗑️
assets/routes-C3BXAvw5.js (Deleted) -34.98kB 0 bytes -100.0% 🗑️
assets/owner-panel-JiuOPQXI.js (Deleted) -27.46kB 0 bytes -100.0% 🗑️
assets/app-D7cCVV37.js (Deleted) -25.95kB 0 bytes -100.0% 🗑️
assets/app.runs-DxIaNlbh.js (Deleted) -23.56kB 0 bytes -100.0% 🗑️
assets/miner-panel-J1OhdP74.js (Deleted) -20.28kB 0 bytes -100.0% 🗑️
assets/api._op-CT9qX4N8.js (Deleted) -17.57kB 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-BRkqjdPO.js (Deleted) -16.61kB 0 bytes -100.0% 🗑️
assets/self-hosting-rees-BQ-HWZaW.js (Deleted) -15.66kB 0 bytes -100.0% 🗑️
assets/app.index-BU6NQFHH.js (Deleted) -15.62kB 0 bytes -100.0% 🗑️
assets/docs._slug-gGjouk07.js (Deleted) -15.37kB 0 bytes -100.0% 🗑️
assets/playground-panel-ZbvoaEpM.js (Deleted) -14.49kB 0 bytes -100.0% 🗑️
assets/fairness-BY6KlnHg.js (Deleted) -10.6kB 0 bytes -100.0% 🗑️
assets/app.audit-CA83nSI9.js (Deleted) -10.11kB 0 bytes -100.0% 🗑️
assets/app.config-generator-C_VyRlpg.js (Deleted) -10.09kB 0 bytes -100.0% 🗑️
assets/maintainers-CXVe4_s6.js (Deleted) -8.09kB 0 bytes -100.0% 🗑️
assets/miners-BcQETfv2.js (Deleted) -7.91kB 0 bytes -100.0% 🗑️
assets/agents-AY8XsOpl.js (Deleted) -7.8kB 0 bytes -100.0% 🗑️
assets/commands-panel-BLQlFi-b.js (Deleted) -6.65kB 0 bytes -100.0% 🗑️
assets/roadmap-DLITUTsh.js (Deleted) -6.52kB 0 bytes -100.0% 🗑️
assets/maintainer-workflow-Cq_9JV6x.js (Deleted) -6.52kB 0 bytes -100.0% 🗑️
assets/digest-panel-D3aslXfA.js (Deleted) -6.18kB 0 bytes -100.0% 🗑️
assets/repos._owner._repo.quality-BTsIK7OK.js (Deleted) -6.14kB 0 bytes -100.0% 🗑️
assets/docs-nav-DAsAOPjc.js (Deleted) -5.95kB 0 bytes -100.0% 🗑️
assets/docs.index-BATgnySw.js (Deleted) -5.95kB 0 bytes -100.0% 🗑️
assets/api.index-CixbEzlJ.js (Deleted) -4.7kB 0 bytes -100.0% 🗑️
assets/docs-1EgglJDU.js (Deleted) -2.7kB 0 bytes -100.0% 🗑️
assets/api-B1yR2W-m.js (Deleted) -2.69kB 0 bytes -100.0% 🗑️
assets/docs-page-BBuMr_vV.js (Deleted) -2.1kB 0 bytes -100.0% 🗑️
assets/table-CAlSLJUL.js (Deleted) -1.75kB 0 bytes -100.0% 🗑️
assets/app.workbench-DNvg-qQm.js (Deleted) -1.58kB 0 bytes -100.0% 🗑️
assets/tooltip-Kxb0MkhQ.js (Deleted) -1.47kB 0 bytes -100.0% 🗑️
assets/session-BpMp-j_D.js (Deleted) -1.45kB 0 bytes -100.0% 🗑️
assets/tabs-DM_ROXve.js (Deleted) -1.39kB 0 bytes -100.0% 🗑️
assets/app.repos-DkyPrcYo.js (Deleted) -1.07kB 0 bytes -100.0% 🗑️
assets/input-dE8F0Tzt.js (Deleted) -796 bytes 0 bytes -100.0% 🗑️
assets/file-cog-CYQjqGgO.js (Deleted) -758 bytes 0 bytes -100.0% 🗑️
assets/app.maintainer-j3O1fjpw.js (Deleted) -502 bytes 0 bytes -100.0% 🗑️
assets/sparkles-UvCcz_vG.js (Deleted) -494 bytes 0 bytes -100.0% 🗑️
assets/app.owner-D8_xBxYT.js (Deleted) -474 bytes 0 bytes -100.0% 🗑️
assets/app.commands-Dz4uyO8i.js (Deleted) -455 bytes 0 bytes -100.0% 🗑️
assets/app.playground-BlmNxgDQ.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/index-BVFdA9Pf.js (Deleted) -438 bytes 0 bytes -100.0% 🗑️
assets/app.digest-BQp_tfLo.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/eye-off-BoeYfiht.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/app.miner-BYlVNBfE.js (Deleted) -422 bytes 0 bytes -100.0% 🗑️
assets/key-round-dSer6wl7.js (Deleted) -355 bytes 0 bytes -100.0% 🗑️
assets/bot-B-lN8WRl.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/trash-2-uOSVD9j3.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/save-DsPrPEol.js (Deleted) -327 bytes 0 bytes -100.0% 🗑️
assets/git-pull-request-arrow-DalxAOha.js (Deleted) -321 bytes 0 bytes -100.0% 🗑️
assets/wrench-D5w5v2wx.js (Deleted) -303 bytes 0 bytes -100.0% 🗑️
assets/list-checks-BCOZ8qhN.js (Deleted) -279 bytes 0 bytes -100.0% 🗑️
assets/workflow-f3_eoew3.js (Deleted) -265 bytes 0 bytes -100.0% 🗑️
assets/compass-DSAzShSS.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/history-s1upYGaQ.js (Deleted) -237 bytes 0 bytes -100.0% 🗑️
assets/activity-BVee2LpE.js (Deleted) -234 bytes 0 bytes -100.0% 🗑️
assets/message-square-qDcmxswG.js (Deleted) -233 bytes 0 bytes -100.0% 🗑️
assets/lock-t0z57JFE.js (Deleted) -206 bytes 0 bytes -100.0% 🗑️
assets/rotate-cw-CKlfMdl3.js (Deleted) -201 bytes 0 bytes -100.0% 🗑️
assets/play-Bz2C81_0.js (Deleted) -190 bytes 0 bytes -100.0% 🗑️
assets/circle-check-DVjv4YRr.js (Deleted) -178 bytes 0 bytes -100.0% 🗑️
assets/search-Bqoi0VXq.js (Deleted) -174 bytes 0 bytes -100.0% 🗑️
assets/circle-CnbvF2IB.js (Deleted) -130 bytes 0 bytes -100.0% 🗑️

@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 25, 2026
@loopover-orb

loopover-orb Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Caution

🛑 LoopOver review result - fixes required

Review updated: 2026-07-25 08:51:42 UTC

20 files · 1 AI reviewer · no blockers · CI failing · unstable

🛑 Suggested Action - Manual Review

Review summary
This is a faithful, well-scoped mechanical port of the Sentry-based error tracking (src/sentry.ts) to PostHog (src/posthog.ts), preserving the redaction rules, tag allowlist, fingerprinting behavior (including the #5010 group-by-WHY logic in captureAnalyzerDegradationPostHog), and adding equivalent test coverage across three new test files. It also strips all Railway-specific env fallbacks per the stated epic correction and closes the linked issue #8290 with full coverage per the external brief. The sourcemap-upload pipeline is meaningfully simplified since PostHog's release model has no separate create/deploy/finalize lifecycle, and that simplification is reflected consistently in upload-sourcemaps.ts and validate-posthog-release.mjs.

Nits — 7 non-blocking
  • codecov/patch failed at 82.88% vs the 99% target — worth checking which branches in posthog.ts/validate-posthog-release.mjs are uncovered before merge.
  • review-enrichment/src/upload-sourcemaps.ts:130-133 — I can't verify from this diff alone that `posthog-cli sourcemap inject/upload --directory dist --release-version <release>` matches @​posthog/cli 0.9.1's actual supported flags; worth double-checking against the pinned CLI's `--help` output since a wrong flag would silently no-op or fail at runtime, invisible to typecheck/build.
  • The flagged 'leaked secret' at review-enrichment/test/posthog-degradation.test.ts:235 is a false positive — it's a test asserting that a secret-shaped nested key (`authorization`) gets redacted regardless of its (deliberately innocuous) value, not an actual credential.
  • @​posthog/cli's postinstall downloads a platform binary over HTTPS with no checksum verification (acknowledged in the PR description) — consider tracking a follow-up issue for adding checksum pinning now that it's the sole native-binary dependency in this package.
  • review-enrichment/src/posthog.ts:80 — the 200-char tag value truncation is a bare magic number; consider a named constant (`MAX_TAG_VALUE_LENGTH`) since it mirrors the same unnamed constant from the deleted sentry.ts.
  • PR author also opened the linked issue — Link an issue that was opened by a different contributor, or provide a rationale for why this self-authored issue represents genuine discovery work.
  • Possible secret-shaped assignment in the diff (generic_secret_assignment) — Verify the value is not a real credential.

CI checks failing

  • codecov/patch — 82.88% of diff hit (target 99.00%)

Decision drivers

  • ✅ Code review — No blockers (1 reviewer)
  • ✅ Gate result — Passing (No configured blocker found.)
Context & advisory signals — never blocks the verdict
Signal Result Evidence
Linked issue ✅ Linked #8290
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (1 linked issue).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 13 registered-repo PR(s), 13 merged, 250 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 13 PR(s), 250 issue(s).
Improvement ✅ Minor risk: clean · value: minor
Linked issue satisfaction

Addressed
The PR implements posthog.ts mirroring the deleted sentry.ts's shape (redaction, fingerprint/tag structure, captureAnalyzerDegradationPostHog with #5010 WHY-based grouping), repoints release/sourcemap validators at PostHog, and includes parity tests, satisfying the deliberate-lockstep-with-discovery-index deliverable. However, it diverges from the issue's explicit acceptance criteria by removing S

Review context
  • Author: JSONbored
  • Role context: owner (maintainer lane)
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: Python, TypeScript, Ruby, Go, MDX, Shell, Solidity, JavaScript
  • Official Gittensor activity: 13 PR(s), 250 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Start here: Treat this as maintainer-lane context rather than normal contributor-lane activity.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
🧪 Chat with LoopOver

Ask LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.

  • @loopover ask &lt;question&gt; answers contribution-quality Q&A with source citations and freshness.
  • @loopover chat &lt;question&gt; answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @loopover mention with a real question is routed to the closest matching read-only command automatically — no exact syntax required.

Full command reference: https://loopover.ai/docs/loopover-commands

🧪 Experimental — new and may change.

Visual preview
Route Viewport Before (production) After (this PR's preview) Diff
/ desktop before /
before /
after /
after /
diff /
diff /
/ mobile before / (mobile)
before / (mobile)
after / (mobile)
after / (mobile)

Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy · Diff highlights exactly what changed.

Scroll preview
Route Before (production) After (this PR's preview)
/ before / (scroll)
before / (scroll)
after / (scroll)
after / (scroll)

A short scroll-through clip (desktop) — click either thumbnail to open the full animation. Evidence for scroll-linked behavior a single screenshot can't show.

🟩 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 LoopOver, a quiet PR intelligence layer for OSS maintainers.

  • Re-run LoopOver review

@loopover-orb loopover-orb Bot added the manual-review Gittensor contributor context label Jul 25, 2026
Per the epic's revised strategy (#8286 correction, 2026-07-25): PostHog
replaces Sentry directly, not a parallel-run sink -- deletes
src/sentry.ts, scripts/validate-sentry-release.mjs, @sentry/node,
@sentry/cli, and the sentry-*.test.ts suite entirely.

Adds src/posthog.ts, mirroring the deleted sentry.ts's shape 1:1
(redaction, tag allowlist, capture entry points, including
captureAnalyzerDegradationPostHog's #5010 group-by-WHY behavior) using
posthog-node's captureException API. Adds
scripts/validate-posthog-release.mjs, a narrower release-verification
counterpart to the deleted Sentry validator -- PostHog's release model
has no commits/deploys/finalize lifecycle, only symbol-set presence via
the error_tracking/symbol_sets API.

Drops all Railway-specific config (RAILWAY_GIT_COMMIT_SHA,
RAILWAY_DEPLOYMENT_ID, RAILWAY_ENVIRONMENT_NAME) -- this repo no longer
deploys anything on Railway. README's Railway deploy section becomes a
generic "Deploy standalone" section; docker-compose.yml's rees profile
comment and the self-hosting-rees docs page now reference
POSTHOG_API_KEY instead of SENTRY_DSN for the same cross-wire-avoidance
reasoning that applied to the Sentry var.

@posthog/cli is pinned to an exact version (0.9.1, no caret) rather
than a range -- its postinstall script downloads a platform binary over
HTTPS with no checksum verification, the same category of risk
@sentry/cli already carried here via its own installer.

Closes #8290
Adds the missing review-enrichment/src/server.ts codecov.yml ignore entry
(a pre-existing gap another file's comment incorrectly claimed was already
handled), plus real-subprocess and real-library tests covering
initReesPostHog's success path and upload-sourcemaps.ts's release-validation
retry/exhaustion and source-map-corruption branches. Remaining gaps are
v8-ignored with justification where discovery-index's twin can only reach
them via child_process/fs mocking that this package's node:test suite
deliberately avoids.
@JSONbored
JSONbored force-pushed the claude/posthog-review-enrichment-error-tracking branch from 54749ad to 68ff723 Compare July 25, 2026 09:15
@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@JSONbored
JSONbored merged commit e56e9a7 into main Jul 25, 2026
9 of 10 checks passed
@JSONbored
JSONbored deleted the claude/posthog-review-enrichment-error-tracking branch July 25, 2026 09:24
JSONbored added a commit that referenced this pull request Jul 25, 2026
…8619)

Replaces the self-host release pipeline's @sentry/cli sourcemap inject/
upload/finalize steps with posthog-cli's simpler inject/upload (no
separate release-create/set-commits/finalize lifecycle -- PostHog release
metadata is a byproduct of the upload itself). Fixes a currently-broken
step in the process: "Validate Sentry release" called
review-enrichment/scripts/validate-sentry-release.mjs, which #8615 already
deleted -- any official release cut since then would have failed there.

Renames SENTRY_RELEASE -> POSTHOG_RELEASE throughout
scripts/deploy-selfhost-prebuilt.sh (the operator-facing local sourcemap
upload path) and scripts/selfhost-post-update-check.sh, matching what
src/selfhost/posthog.ts's resolvePostHogRelease already reads. Replaces
the stale "Sentry error tracking" block in .env.example (self-host has had
zero SENTRY_* code paths since #8617) with the real PostHog vars, plus the
CLI-specific POSTHOG_CLI_API_KEY/POSTHOG_CLI_PROJECT_ID/POSTHOG_CLI_HOST
used only by this upload step.

Requires POSTHOG_CLI_API_KEY (secret) and POSTHOG_CLI_PROJECT_ID (var) to
be configured in the release and release-beta GitHub environments before
the next official/beta image build -- neither exists yet.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. manual-review Gittensor contributor context

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PostHog error tracking for review-enrichment (keep the discovery-index mirror in lockstep)

1 participant