Skip to content

perf(review): avoid duplicate refreshes and repeated file processing

MacroscopeApp / Macroscope - Effect Service Conventions completed Sep 16, 2026 in 4m 39s

Effect Service Conventions: 3 violations

  • apps/mobile/src/features/review/useReviewDiffData.ts: Import Effect reactivity modules by subpath as namespaces.
  • apps/web/src/components/diffs/useReviewFilePatches.ts: Import Effect reactivity modules by subpath as namespaces.
  • apps/server/src/vcs/GitVcsDriverCore.ts: Use Effect.catchTags for the known tagged failure.

Details

Note

Your check run agent prompt is: .macroscope/check-run-agents/effect-service-conventions.md
More information about how Check Run Agents work can be found in our Help Center.

Reviewed 5 of 9 changed files — those modified since 53e34b4 — each against the merge base

Inline review comments with suggested fixes were posted for all three violations.


🔍 Agent activity — 8 tool calls

💭 Inspecting module imports I need to check the changed typescript for naming conventions regarding imports. It looks like there's a bare effect named imports for useReviewDiffData, which brings in AsyncResult and Atom from a subpath. The convention says to use effect modules as namespaces, so I should probably import them as * as AsyncResult and * as Atom separately, likely from effect/unstable/reactivity/AsyncResult. Also, I need to verify any existing GitVcs imports. I'll do some research!

1. browse_code — Inspect repository import conventions for AsyncResult and Atom from effect/unstable/reactivity, especially whether code imports them as named exports from that subpath or namespace imports from deeper subpaths. Also inspect the complete current imports and changed Effect usage in these five files for Effect Service Conventions violations: apps/mobile/src/features/review/useReviewDiffData.ts, apps/web/src/components/diffs/useReviewFilePatches.ts, apps/server/src/vcs/GitVcsDriverCore.ts, apps/mobile/src/features/review/useReviewSections.ts, apps/mobile/src/features/review/nativeReviewDiffAdapter.ts. Report exact relevant lines and analogous preferred imports elsewhere.

2. browse_code — apps/server/src/vcs/GitVcsDriverCore.ts

3. browse_code — apps/mobile/src/features/review/useReviewDiffData.ts

4. browse_code — apps/web/src/components/diffs/useReviewFilePatches.ts

💭 Considering code adjustments I need to add three inline comments with some suggested fixes. I'll focus on line replacement for a unified diff, making it a single hunk without any context. For the catchTag inline suggestion, I'm curious if it can apply to a range of lines. However, I need the exact current lines around line 2460 since the header has different line positions from the diff. It's a bit tricky, but I'm working through it!

5. browse_code — apps/server/src/vcs/GitVcsDriverCore.ts

💭 Considering code fixes I’m looking at a suggested fix for handling multi-line inline suggestions between lines 2461 and 2471 to ensure they are self-contained. I think it would be good to comment on the smallest possible range. For the replacement line, it looks like I can use two lines for imports. Additionally, GitHub does support these types of suggestions. Oh, and if there’s a post-review failure, I’ll note that there are three comments with a null body.

6. modify_pr — Submitted review with 3 inline comments

7. modify_pr — POST repos/{owner}/{repo}/issues/{pull_number}/comments — rejected: body must be a single valid JSON object — do not double-encode, concatenate, or wrap the JSON. Correct example: {"body": "comment text"}

💭 Evaluating string validity I’m considering whether the string is valid. The tool suggests it likely expects escaped JSON, which is a bit odd since I think we did provide it. I could skip a detailed comment since the instructions only require an inline report. That seems simple enough. I don’t think there’s a need to delve into it too much, so I’ll just finalize this step for now.

8. modify_pr — POST repos/{owner}/{repo}/issues/{pull_number}/comments


Agent Credits: 90 credits

Token usage: 36 uncached input · 436,444 cache-read input · 112,559 cache-write input · 5,795 output
Agent Credits may also include non-token charges from external tools such as web research.