Repository navigation
Conversation
|
🐉 eve review — 💬 COMMENT · 3 findings
run Previous runs (10)
|
There was a problem hiding this comment.
🐉 eve review — 🔴 Changes requested
a8b75fb· 3 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟠 High | 1 |
| 🟡 Medium | 2 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 297 changed patch(es) were omitted by the diff budget.
- 3 changed file(s) had no readable patch.
Blast radius
describe(+) → 10 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/WorkflowArguments.swift, native/ax-tool/Tests/OcrReuseTests.swift, native/ax-tool/Tests/WorkflowArgumentsTests.swift, +7 moreactivate(+) → 7 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/WorkflowArguments.swift, native/ax-tool/SnapshotSupport/WindowChoice.swift, native/ax-tool/SnapshotSupport/SnapshotDispatch.swift, +4 morefont(+) → 6 dependent(s) outside this PR: native/ax-tool/Sources/Record.swift, native/ax-tool/Sources/commands/Annotate.swift, native/ax-tool/Sources/commands/Harness.swift, +3 morelabel(+) → 6 dependent(s) outside this PR: scripts/native/outline-frames.swift, scripts/native/ax.swift, native/ax-tool/SnapshotSupport/DrawnCheck.swift, +3 moreverb(+) → 6 dependent(s) outside this PR: scripts/native/ax.swift, native/ax-tool/SnapshotSupport/SnapshotSelection.swift, native/ax-tool/Sources/utils/ElementQuery.swift, +3 moredeactivate(+) → 5 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Clicky/ClickyViews.swift, src/macos/GenesisKit/Sources/GenesisKit/Flow/FlowPillWindow.swift, src/macos/GenesisKit/Tests/GenesisKitTests/ClickyTests.swift, +2 moreemit(~) → 5 dependent(s) outside this PR: native/ax-tool/Sources/MenuControl.swift, native/ax-tool/Sources/commands/RecordActivity.swift, native/ax-tool/Sources/commands/Scroll.swift, +2 moretarget(+) → 3 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/SnapshotToken.swift, native/ax-tool/SnapshotSupport/ScrollMotion.swift, native/ax-tool/SnapshotSupport/SnapshotDigest.swiftdetail(+) → 2 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/SnapshotDigest.swift, src/macos/GenesisKit/Sources/GenesisKit/Paths/PathActions.swift- +11 more changed symbol(s) with outside dependents
- 2 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 5 claims could not be checked from the diff (c1, c2, c3, c4, c5).
a8b75fb to
bbc17fa
Compare
There was a problem hiding this comment.
🐉 eve review — 🔴 Changes requested
bbc17fa· 5 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟠 High | 2 |
| 🟡 Medium | 3 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 248 changed patch(es) were omitted by the diff budget.
Blast radius
drag(+) → 5 dependent(s) outside this PR: native/ax-tool/Sources/CursorOverlay.swift, native/ax-tool/Sources/main.swift, native/ax-tool/Tests/SnapshotDispatchTests.swift, +2 moremouse(~) → 4 dependent(s) outside this PR: native/ax-tool/Sources/commands/Input.swift, native/ax-tool/Sources/commands/SnapshotRestore.swift, native/ax-tool/Sources/main.swift, +1 moreAgentToolSpec(Δsig) → 3 dependent(s) outside this PR: src/ai/commands/agent/run.ts, src/ai/commands/agent/launch.ts, src/ai/commands/agent/cmux.ts- 23 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 6 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6).
There was a problem hiding this comment.
🐉 eve review — 🔴 Changes requested
16ca45e· 4 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟠 High | 1 |
| 🟡 Medium | 3 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 251 changed patch(es) were omitted by the diff budget.
Blast radius
mouse(~) → 5 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/Diff/GitPickerShots.swift, src/macos/GenesisKit/Tests/GenesisKitTests/WindowTitlebarTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/ScreenEffectsTests.swift, +2 moredrag(+) → 2 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/ImageViewerTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/WindowTitlebarTests.swift- 23 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 7 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6, c7).
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
0d65929· 5 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 5 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 251 changed patch(es) were omitted by the diff budget.
Blast radius
mouse(~) → 4 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/WindowTitlebarTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/ScreenEffectsTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/FlowFocus/FocusAttentionTests.swift, +1 morecreateBaselineBenchmarkVariant(~) → 1 dependent(s) outside this PR: scripts/history/benchmark.test.tsdrag(+) → 1 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/WindowTitlebarTests.swift- 23 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 6 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6).
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
17bfe84· 4 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 4 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- typecheck timed out (tsconfig.json): out of memory, then its 6144 MiB retry ran out of time
- 354 changed patch(es) were omitted by the diff budget.
- 1 changed file(s) had no readable patch.
Blast radius
drag(+) → 5 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/UserTakeover.swift, native/ax-tool/SnapshotSupport/CursorFeedback.swift, native/ax-tool/Sources/main.swift, +2 moremouse(~) → 4 dependent(s) outside this PR: native/ax-tool/Sources/main.swift, native/ax-tool/Sources/commands/Input.swift, native/ax-tool/Sources/commands/SnapshotRestore.swift, +1 more- 21 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 8 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6, c7, c8).
There was a problem hiding this comment.
🐉 eve review — 🔴 Changes requested
4c507c3· 3 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟠 High | 1 |
| 🟡 Medium | 2 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- typecheck timed out (tsconfig.json): out of memory, then its 6144 MiB retry ran out of time
- 354 changed patch(es) were omitted by the diff budget.
- 1 changed file(s) had no readable patch.
Blast radius
mouse(~) → 5 dependent(s) outside this PR: native/ax-tool/Sources/commands/SnapshotRestore.swift, native/ax-tool/Sources/commands/Input.swift, native/ax-tool/Sources/main.swift, +2 moredrag(+) → 3 dependent(s) outside this PR: native/ax-tool/Tests/SnapshotDispatchTests.swift, native/ax-tool/Tests/UserTakeoverTests.swift, native/ax-tool/Fixtures/ControlFixture.swift- 21 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 3 claims could not be checked from the diff (c1, c2, c3).
4c507c3 to
d35b110
Compare
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
d35b110· 4 actionable findings · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 4 |
Blast radius
snap(~) → 12 dependent(s) outside this PR: src/mcp-manager/lib/auth/display.ts, src/jenkins/lib/mcp/blue-ocean.ts, src/jenkins/lib/mcp/mcp.ts, +9 moreTurnJudge.step(~) → 12 dependent(s) outside this PR: scripts/ci/summarize-tests.test.ts, scripts/ci/test-runtime-guard.ts, scripts/ci/lint-rules.ts, +9 moreSHELL_RULES(~) → 8 dependent(s) outside this PR: src/agents/lib/hooks/custom-rules.ts, src/agents/lib/hooks/set-config.ts, src/agents/commands/hooks.tscodexTurnState(~) → 2 dependent(s) outside this PR: src/hub/lib/agents/codex-agents.test.ts, src/hub/lib/agents/codex-agents.tsTurnSnapshot(Δsig) → 2 dependent(s) outside this PR: src/utils/ai/transcripts/live.ts- 65 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 4 claims could not be checked from the diff (c1, c2, c3, c4).
d35b110 to
49b1995
Compare
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
There was a problem hiding this comment.
🐉 eve review — 🔴 Changes requested
49b1995· 3 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟠 High | 1 |
| 🟡 Medium | 2 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 14 changed patch(es) were omitted by the diff budget.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
d35b1103was unusable after a base-branch merge saturated GitHub's compare API (300+ files, 210 of them merge noise, list truncated).
Blast radius
webView(~) → 11 dependent(s) outside this PR: src/macos/GenesisTools/Sources/Parts/Hub/Review/ReviewKeys.swift, src/macos/GenesisKit/Tests/GenesisKitTests/Diff/GitHunksTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/Markdown/MarkdownFindWebTests.swift, +8 moreentries(+) → 5 dependent(s) outside this PR: src/macos/GenesisTools/Tests/LiveTimeTests.swift, src/macos/GenesisTools/Tests/ReviewCacheTests.swift, src/macos/GenesisTools/Sources/Parts/Hub/Review/PRRefs.swift, +2 moreload(+) → 5 dependent(s) outside this PR: src/macos/GenesisTools/Tests/HubTimelineTests.swift, src/macos/GenesisTools/Tests/ReviewWorktreeActivityTests.swift, src/macos/GenesisTools/Tests/HubTimelineRowIdentityTests.swift, +2 moresource(+) → 5 dependent(s) outside this PR: src/macos/GenesisWidgetPreview/Sources/LivePreviewDelegate.swift, src/macos/GenesisTools/Tests/HubInboxTimelineTests.swift, src/macos/GenesisTools/Tests/HubWorktreeTimelineDecodeTests.swift, +2 moremimeType(+) → 4 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownWebView.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownMedia.swift, src/macos/GenesisKit/Sources/GenesisKit/Widgets/WidgetAttachmentViews.swift, +1 moreurl(+) → 4 dependent(s) outside this PR: src/macos/GenesisWidgetPreview/Sources/LivePreviewDelegate.swift, src/macos/GenesisTools/Tests/HubInboxTimelineTests.swift, src/macos/GenesisTools/Tests/ReviewSessionStateTests.swift, +1 moreisImage(+) → 3 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Markdown/Window/MarkdownDocumentsView.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownHoverImage.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownHoverPreview.swiftclonesMeasure(~) → 1 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/Disk/ToolsDiskProviderTests.swiftsettingsReady(+) → 1 dependent(s) outside this PR: src/macos/GenesisTools/Sources/Parts/Widget/WidgetSettingsPlugin.swift- 81 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 7 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6, c7).
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
f4d0325· 2 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 2 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 17 changed patch(es) were omitted by the diff budget.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
d35b1103was unusable after a base-branch merge saturated GitHub's compare API (300+ files, 209 of them merge noise, list truncated).
Blast radius
load(+) → 5 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/FrameSampler.swift, native/ax-tool/Tests/OcrReuseTests.swift, src/macos/GenesisKit/Sources/GenesisKit/Widgets/WidgetFeatureSettings.swift, +2 moreurl(+) → 5 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/SnapshotDigest.swift, native/ax-tool/SnapshotSupport/CursorFeedback.swift, native/ax-tool/SnapshotSupport/BrowserTabInfo.swift, +2 moreentries(+) → 4 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/VisualCapture.swift, native/ax-tool/Sources/AppLifecycle.swift, native/ax-tool/Tests/ObservedTreeBuilderTests.swift, +1 moremimeType(+) → 4 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Widgets/WidgetAttachmentViews.swift, src/macos/GenesisKit/Sources/GenesisKit/Widgets/WidgetWireModels.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownWebView.swift, +1 morescore(~) → 4 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKitPosture/Pose/PoseSampleFeed.swift, src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureMonitor.swift, src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureStateMachine.swift, +1 morecalibrate(~) → 3 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureAlert.swift, src/macos/GenesisKit/Tests/GenesisKitTests/PostureDebugRecorderTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/PostureScorerTests.swiftisImage(+) → 3 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Markdown/Window/MarkdownDocumentsView.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownHoverImage.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownHoverPreview.swiftstrength(+) → 3 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureMonitor.swift, src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureAlert.swift, src/macos/GenesisKit/Sources/GenesisKitOverlay/ScreenEffectView.swiftingest(~) → 2 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureMonitor.swift, src/macos/GenesisKit/Tests/GenesisKitTests/PostureMonitorTests.swift- +6 more changed symbol(s) with outside dependents
- 81 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 6 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6).
There was a problem hiding this comment.
🐉 eve review — Coverage incomplete · approval withheld
78dd570· 0 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 23 changed patch(es) were omitted by the diff budget.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
d35b1103was unusable after a base-branch merge saturated GitHub's compare API (300+ files, 208 of them merge noise, list truncated).
Checks (advisory — CI is authoritative) — typecheck timed out (tsconfig.json): out of memory, then its 6144 MiB retry ran out of time
Blast radius
url(+) → 5 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/CursorFeedback.swift, native/ax-tool/SnapshotSupport/BrowserTabInfo.swift, native/ax-tool/SnapshotSupport/SnapshotDigest.swift, +2 morecalibrate(~) → 4 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureAlert.swift, src/macos/GenesisKit/Tests/GenesisKitTests/PostureMonitorTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/PostureShotsTests.swift, +1 moreentries(+) → 4 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/VisualCapture.swift, native/ax-tool/Tests/ObservedTreeBuilderTests.swift, native/ax-tool/Sources/AppLifecycle.swift, +1 moreload(+) → 4 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/FrameSampler.swift, native/ax-tool/Tests/OcrReuseTests.swift, src/macos/GenesisClickyPreview/Sources/ClickyPreview.swift, +1 moremimeType(+) → 4 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownWebView.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownMedia.swift, src/macos/GenesisKit/Sources/GenesisKit/Widgets/WidgetAttachmentViews.swift, +1 morescore(~) → 4 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureAlert.swift, src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureMonitor.swift, src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureStateMachine.swift, +1 morestrength(+) → 4 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureAlert.swift, src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureMonitor.swift, src/macos/GenesisKit/Sources/GenesisKitOverlay/ScreenEffectModels.swift, +1 moreisImage(+) → 3 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Markdown/Window/MarkdownDocumentsView.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownHoverPreview.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownHoverImage.swiftingest(~) → 2 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureMonitor.swift, src/macos/GenesisKit/Tests/GenesisKitTests/PostureMonitorTests.swift- +5 more changed symbol(s) with outside dependents
- 77 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 7 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6, c7).
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
a483888· 3 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 3 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 22 changed patch(es) were omitted by the diff budget.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
d35b1103was unusable after a base-branch merge saturated GitHub's compare API (300+ files, 203 of them merge noise, list truncated).
Blast radius
webView(~) → 11 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/Markdown/MarkdownLineRangeTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/Markdown/MarkdownCompletionTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/Markdown/MarkdownSourceLinksTests.swift, +8 morestrength(+) → 5 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/PostureScorerTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/PostureMonitorTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/ScreenEffectsTests.swift, +2 moreurl(+) → 5 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/SnapshotDigest.swift, native/ax-tool/SnapshotSupport/BrowserTabInfo.swift, native/ax-tool/SnapshotSupport/CursorFeedback.swift, +2 moreentries(+) → 4 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/VisualCapture.swift, native/ax-tool/Sources/AppLifecycle.swift, native/ax-tool/Tests/ObservedTreeBuilderTests.swift, +1 moremimeType(+) → 4 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownMedia.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownWebView.swift, src/macos/GenesisKit/Sources/GenesisKit/Widgets/WidgetAttachmentViews.swift, +1 morecalibrate(~) → 3 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/PostureDebugRecorderTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/PostureScorerTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/PostureStateMachineTests.swiftisImage(+) → 3 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Markdown/Window/MarkdownDocumentsView.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownHoverPreview.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownHoverImage.swiftload(+) → 3 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/FrameSampler.swift, native/ax-tool/Tests/OcrReuseTests.swift, src/macos/GenesisKit/Tests/GenesisKitTests/FlowFocus/FlowTransformRunnerTests.swiftingest(~) → 2 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/PostureMonitorTests.swift, src/macos/GenesisKit/Sources/GenesisKitPosture/Posture/PostureMonitor.swift- +6 more changed symbol(s) with outside dependents
- 77 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 8 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6, c7, c8).
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
69843da· 3 actionable findings ·⚠️ degraded pass · reviewed by find codex/gpt-6.1-sol + codex/gpt-6-luna, verify codex/gpt-6-luna · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 3 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 214 changed patch(es) were omitted by the diff budget.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
d35b1103was unusable after a base-branch merge saturated GitHub's compare API (300+ files, 141 of them merge noise, list truncated).
Blast radius
refusal(+) → 10 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Flow/Runtime/FlowFocusRuntime.swift, src/macos/GenesisKit/Sources/GenesisKit/Flow/FlowModels.swift, src/macos/GenesisKit/Sources/GenesisKit/Focus/Pomodoro/FocusChime.swift, +7 morestatus(+) → 4 dependent(s) outside this PR: src/macos/GenesisWidgetPreview/Sources/PreviewApp.swift, src/macos/GenesisKit/Sources/GenesisKit/Settings/NativeNotificationClient.swift, src/macos/GenesisKit/Sources/GenesisKit/Keymap/KeyChord.swift, +1 moreemit(+) → 2 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Markdown/Document/TextMerge.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownSourceHighlighter.swiftwidgetSnapshot(~) → 2 dependent(s) outside this PR: src/hub/widget-cli.ts, src/hub/lib/widget/watch.tsbuildExtension(~) → 1 dependent(s) outside this PR: src/browser-extension/index.tsDIST_DIR(~) → 1 dependent(s) outside this PR: src/browser-extension/index.tsfetchGitlabRepo(~) → 1 dependent(s) outside this PR: src/hub/lib/notify.test.tsstat(+) → 1 dependent(s) outside this PR: scripts/benchmarks/fs/fastwalk.cTypeScriptCompiler(~) → 1 dependent(s) outside this PR: src/jev/lib/compilers/registry.ts- 81 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 7 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6, c7).
| ) | ||
| .action(async (dir: string, o: EvictCliOptions & { minBytes?: number; top?: number; threads?: number }) => { | ||
| const root = resolveDir(dir); | ||
| const listing = listCloudFiles({ root, minBytes: o.minBytes, threads: o.threads }); |
There was a problem hiding this comment.
🧹 Quality | 🟡 Medium · confidence 100/100
Make the no-developer-tools eviction fallback reachable
The new osascript fallback is intended to let eviction work on a Mac without Xcode or Command Line Tools, but every evict invocation calls listCloudFiles() before it can select that helper. listCloudFiles() calls getLib(), whose ensureDylib() builds clonesize.c with clang when the ignored native dylib is absent. On a fresh checkout without developer tools this fails (or invokes the developer-tools installation flow), so the osascript fallback is never reached. Provide a compiler-free listing path or ship a usable native artifact as well as the compiler-free status/eviction helper.
🧩 Analysis
Grep evidence: const listing = listCloudFiles|function ensureDylib|execFileSync\("clang"|clonesize_cloudfiles_json
There was a problem hiding this comment.
Partly fixed in 7e40b01. Listing still needs the compiled native library, so a Mac without developer tools cannot evict. ensureDylib, ensureBinary and ensureShim now check xcode-select first and fail with a message naming xcode-select --install, instead of letting clang open the install dialog, and the README now says the osascript helper covers a missing or failing swiftc only. Shipping a prebuilt library or a compiler-free listing path is a separate decision, so this thread stays open.
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
2090a7b· 3 actionable findings ·⚠️ degraded pass · reviewed by find codex/gpt-6.1-sol + codex/gpt-6-luna, verify codex/gpt-6-luna · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 3 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 253 changed patch(es) were omitted by the diff budget.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
d35b1103was unusable after a base-branch merge saturated GitHub's compare API (300+ files, 135 of them merge noise, list truncated).
Blast radius
refusal(+) → 6 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/ClipboardPaste.swift, native/ax-tool/SnapshotSupport/DocumentScope.swift, native/ax-tool/SnapshotSupport/SnapshotDigest.swift, +3 morestatus(+) → 6 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/CursorFeedback.swift, native/ax-tool/SnapshotSupport/BulkHierarchy.swift, native/ax-tool/SnapshotSupport/ContextMenu.swift, +3 moreDIST_DIR(~) → 2 dependent(s) outside this PR: src/browser-extension/index.ts, src/browser-extension/lib/verify.tsemit(+) → 2 dependent(s) outside this PR: native/ax-tool/Sources/CursorOverlay.swift, native/ax-tool/Sources/SnapshotWorkflow.swiftmountPage(~) → 2 dependent(s) outside this PR: src/browser-extension/extension/options.ts, src/browser-extension/extension/route.tsbuildExtension(~) → 1 dependent(s) outside this PR: src/browser-extension/index.tsstat(+) → 1 dependent(s) outside this PR: scripts/benchmarks/fs/fastwalk.c- 81 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 6 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6).
…on screen through a reload of the same diff instead of flashing away on every status refresh of a busy repository GitFileDiffModel keeps the shown result while it reloads the same question (file, scope, pick, rename, compare) and shows loading only for a new one. Martin, 2026-10-25: "flashes every few seconds" in GenesisTools' own repository, where other sessions' git activity refreshes the status often. Test: three reloads of an empty diff never pass through .loading; the old code fails it with loading/empty flips.
…d's row with its own ring instead of the system focus ring, which the scroll view clipped and drew off the rows Martin, 2026-10-25: the blue box around the first file sat above and beside the row. The list keeps its Up/Down keys; .focusEffectDisabled() drops the clipped ring, and the picked row draws an accent outline while the list has focus.
…d Commits tabs: Changes is the former Repository tab with its files only, Commits lists the repository's last 50 commits, and the changes table rebuilds only the cells whose row changed - Martin, 2026-10-25: the Repository tab must show the changed files as before; commits get a tab of their own. The stored tab value "repo" opens Changes, so a saved choice keeps working. - GitRepoTable rebuilds only the row views whose row changed (by id after an animated insert/remove, by index after an in-place refill), and the open file (revealPath) is no longer part of the cells' revision: a tab switch rebuilt every visible cell, +51 ms per switch in the 4-round after-run (ab.tabs repo 129 ms vs This file 78 ms); now only the old and new open file's rows are refreshed.
… and Untracked sections A click on a heading, or Return, Left and Right on it, folds and unfolds its section; the fold survives a restart (`genesiskit.gitRepoPanel.folded`). The heading carries a chevron, a tooltip, the header trait and Expanded/Collapsed for VoiceOver. A filter shows its matches in every section, as it opens every folder. The keyboard now stops on headings too, so a section can be folded without the mouse. Busy time of a fold is written to perf.log as `git.panel.section`. Tests: GitRepoPanelKeyboardTests (key order with headings, Left/Right/Return on a section, a folded section in both layouts keeps only its heading).
…o a rewrite that keeps the size and the mtime is hashed again The performance skill's freshness rule: a file's identity is inode, size, mtime and ctime; the mtime alone misses a rewrite that puts it back. Test: GitWorktreeRenamesTests.testARewriteThatKeepsSizeAndMtimeIsHashedAgain.
… hosted-cell tables without reloadData, Equatable children, wake-on-change counters, git from a deleted folder, renames as one row, one Last update list, foldable sections, size-then-hash pairing, event sources that miss writers
…finding, foldable sections only for long lists with the outline keys, and the viewer rule says the change lists have no pages since 2026-10-25
…: Left on a file or a closed folder keys the row it belongs to, Left folds an open folder or section, Right opens a folded one (gt-native-ux's review)
…ake the zod schema as their type parameter instead of inferring its output, so the root program checks with 46,926 fewer instantiations (2,380,257 to 2,333,331, -2.0%) and identical JavaScript
…so discovery, thread lookup, every transcript, hub and ai-spend reader, migrate-home and the native import open that form and take the thread id from either name
…ats [--from-transcripts] show per session and per agent the cache read, write, hit % and losses by cause, with the session-analyzer cache math ported into cache-stats.ts and cache columns in calls and usage --breakdown
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
89a02f2· 4 actionable findings ·⚠️ degraded pass · reviewed by find codex/gpt-6.1-sol + codex/gpt-6-luna, verify codex/gpt-6-luna · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 4 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 542 changed patch(es) were omitted by the diff budget.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
d43e118cwas unusable after a base-branch merge saturated GitHub's compare API (300+ files, 0 of them merge noise, list truncated).
Blast radius
bringFrontmost(~) → 4 dependent(s) outside this PR: native/ax-tool/Sources/commands/Scroll.swift, native/ax-tool/Sources/commands/Harness.swift, native/ax-tool/Sources/commands/Hotkey.swift, +1 moresessionDirOf(+) → 3 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsxmoved(+) → 1 dependent(s) outside this PR: src/macos/GenesisTools/Tests/HubMovedCheckoutTests.swift- 77 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 7 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6, c7).
| /// Read once per process: the agent's run cannot change these under a running command. | ||
| private let foregroundCheckEnabled = foregroundGuardEnabled(foregroundEnvironment) | ||
| private let foregroundThreshold = foregroundIdleThreshold(foregroundEnvironment) | ||
| private let foregroundAllowed = CommandLine.arguments.contains("--allow-foreground") |
There was a problem hiding this comment.
🔒 Security | 🟡 Medium · confidence 99/100
Read the foreground override from parsed flags, not all arguments
Searching the complete argv treats an option value as consent to take focus. For example, a valid act request with --text --allow-foreground has that string parsed as the text value by WorkflowArguments, not as a flag, yet this check disables the foreground guard. The same issue applies to other string-valued options. Obtain the override from parsed flags (and handle legacy command options equivalently), so text to type cannot accidentally authorize foreground interaction.
🧩 Analysis
Grep evidence: CommandLine.arguments.contains\("--allow-foreground"\)|parsedValues\[option\] = args\[index \+ 1\]
| continue; | ||
| } | ||
|
|
||
| const text = await host.read(`${dir}/${entry.name}`).catch(() => undefined); |
There was a problem hiding this comment.
⚡ Performance | 🟡 Medium · confidence 97/100
Bound the cache-mark directory scanned by every live session
Each session creates a distinct cache JSON file, including an ended mark on session.end, but this implementation never removes or bounds those files. With others: true (the default when enabled), every live session lists and sequentially reads the entire accumulated directory every 15 seconds; filtering expired and ended marks happens only after all reads. The cost therefore grows with lifetime session count rather than active sessions and is multiplied by every running session. Add a bounded retention/expiry mechanism or an active-session index so expired historical marks are not reopened indefinitely.
🧩 Analysis
Grep evidence: EVERY_MS = 15_000|await host.list\(dir\)|await host.read\(${dir}/${entry.name}\)
| await pressed(host, key, `Not staged: ${done.error}`, "error"); | ||
| }; | ||
| const send = async (how: "send" | "fill") => { | ||
| if (!message) { |
There was a problem hiding this comment.
🧹 Quality | 🟡 Medium · confidence 96/100
Allow sending the answered items included in the outgoing preview
The sidebar renders its Send controls when outgoing = read?.staged ?? message is nonempty, but this handler returns unless message is nonempty. message includes only drafted decisions, whereas src/question/lib/inbox/drafts.ts:stagedSendText deliberately also includes answered-but-unsent decisions. With only answered items awaiting delivery, the sidebar displays their outgoing text and an enabled Send button that silently does nothing. Use the same outgoing value for the guard and the put-in-prompt action, rather than the draft-only reconstruction.
🧩 Analysis
Grep evidence: if \(!message\)|const outgoing = read\?\.staged|function stagedSendText
| stopIdleTimer(); | ||
| } | ||
|
|
||
| if (result.skip === undefined) { |
There was a problem hiding this comment.
🧹 Quality | 🟡 Medium · confidence 94/100
Do not treat a precomputed summary as an installed compaction
The existing compactionEndsIdleWait contract explicitly distinguishes trigger: "precompute": it installs nothing and retains the current context. This new dispatch nevertheless calls every feature's compacted callback for that trigger whenever it has no skip. Consequently cacheBand marks the still-valid cache compacted and hides its countdown, while hookLedger clears its dedupe history even though the context was not replaced. Gate these callbacks on an actual installed compaction, not just absence of skip.
🧩 Analysis
Grep evidence: result.skip === undefined|trigger !== "precompute"|await mark\(host, "compacted"\)
…HAM Responses wire on the translators shared with Grok, carries encrypted reasoning across turns in versioned gtr1 envelopes checked by account and comp_hash, retries once without a refused blob, sends compaction turns with tool_choice none and shows reasoning summaries as thinking text
- tools ts program own reports parse errors, not only semantic ones. - The closure graph links a TSX file to the JSX runtime the compiler imports for it under jsx: react-jsx. - program sites --key honours --project-only (sitesForKey), an even group's median averages its middle sites, and grouping appends instead of copying. - The trace hot-spot scan indexes each source's lines once and binary-searches a position. - The Stripe gateway takes its loader as a parameter; tests drive both checkouts, the shared load and the retry offline. - The deadline tests mark the run handled before waiting, with 2 s and 1.5 s deadlines. Bun's expect().rejects blocks until the promise settles, so it cannot be the early handler.
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
a71a666· 4 actionable findings ·⚠️ degraded pass · reviewed by find codex/gpt-6.1-sol + codex/gpt-6-luna, verify codex/gpt-6-luna · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 4 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 599 changed patch(es) were omitted by the diff budget.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
d43e118cwas unusable after a base-branch merge saturated GitHub's compare API (300+ files, 0 of them merge noise, list truncated).
Blast radius
moved(+) → 5 dependent(s) outside this PR: src/macos/GenesisTools/Sources/Host/Capsule.swift, src/macos/GenesisTools/Sources/Host/BrowserURL.swift, src/macos/GenesisTools/Sources/Host/PermissionFaces.swift, +2 morebringFrontmost(~) → 4 dependent(s) outside this PR: native/ax-tool/Sources/commands/Scroll.swift, native/ax-tool/Sources/commands/Harness.swift, native/ax-tool/Sources/commands/ValueCommands.swift, +1 moresessionDirOf(+) → 3 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsxbareDescription(+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsxHost(+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsxliveAgo(+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsxactionButton(+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsxadd(+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsxaddCheckout(+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx- +31 more changed symbol(s) with outside dependents
- 77 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 7 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6, c7).
| /// | ||
| /// `restoring`: putting the user's own app back in front, which the foreground guard never refuses. | ||
| func bringFrontmost(_ pid: pid_t, restoring: Bool = false) -> Bool { | ||
| if !restoring && frontmostPid() != pid { |
There was a problem hiding this comment.
🔒 Security | 🟡 Medium · confidence 98/100
Check user activity before pointer input to the active app too
The foreground check is skipped when the target is already frontmost. However, the existing cmdClick caller in Sources/commands/Input.swift calls bringFrontmost(pid) and then posts a physical click at the requested coordinates. If the user is actively working in that same app, this path bypasses the new activity safeguard entirely and can move their pointer/click a control while they type. The new check in SnapshotWorkflow covers hover only, and SyntheticInputGate checks the takeover corner rather than recent activity. Keep the conditional activation check, but also enforce activity protection immediately before physical pointer dispatch, including when the target already owns the foreground; background window-addressed events should remain exempt.
🧩 Analysis
Grep evidence: if !restoring && frontmostPid\(\) != pid|func postClick|postClick\(at: point
| * and there is nothing left to show. | ||
| */ | ||
| async function readRow(host: Host, root: string, why: GitBand["why"]): Promise<GitBand | null | undefined> { | ||
| const status = await run(host, ["git", "status", "--porcelain", "--branch"], root); |
There was a problem hiding this comment.
⚡ Performance | 🟡 Medium · confidence 97/100
🛠️ Refactor suggestion
Disable optional locks for background git status reads
This background status command runs at startup, after git/gh calls and every three minutes in each enabled session, but permits Git to refresh and lock the index. With several sessions observing the same checkout, these informational reads can contend with actual staging and commits. Project review memory explicitly requires putting --no-optional-locks before the status subcommand. Use git --no-optional-locks status ... here.
🧩 Analysis
Grep evidence: const status = await run\(host, \["git", "status"
| const status = await run(host, ["git", "status", "--porcelain", "--branch"], root); | |
| const status = await run(host, ["git", "--no-optional-locks", "status", "--porcelain", "--branch"], root); |
| let changed = false; | ||
|
|
||
| async function* emit(index: number, line: string): AsyncGenerator<TurnStepChunk> { | ||
| if (/^\s*```/.test(line)) { |
There was a problem hiding this comment.
🧹 Quality | 🟡 Medium · confidence 95/100
Preserve tilde-fenced code blocks during link rewriting
The stream stage recognizes only backtick fence lines. Valid Markdown blocks fenced with ~~~ consequently pass through linkLine as ordinary text. A code example containing an existing path such as src/index.ts is rewritten into Markdown link syntax inside the code block, changing the example rather than making a clickable link. Track both Markdown fence characters (and the opening fence length) so closing fences match the opener, and leave all fenced contents byte-for-byte unchanged.
🧩 Analysis
Grep evidence: fenced\.has\(index\)|yield\* emit\(chunk.index|const linked = await linkLine
| }; | ||
| }) | ||
| ); | ||
| const touches = [...fresh, ...before.filter((touch) => !roots.includes(touch.root))].slice(0, KEEP_ROOTS); |
There was a problem hiding this comment.
🧹 Quality | 🟡 Medium · confidence 93/100
Serialize checkout updates from parallel tool completions
Two parallel Write/Edit calls into different checkouts can both obtain the same before snapshot at line 527, then await headOf. Each constructs its replacement from that old snapshot and assigns held here, so the later completion drops the other checkout (and can also overwrite newly recorded branches). register.tsx invokes afterTool for every tool completion, including subagent calls, with no serialization. Serialize the read/merge/save transition or merge against the latest state after the asynchronous lookups, and cover two concurrent completions with a deferred-host test.
🧩 Analysis
Grep evidence: const before = await sessionCheckouts|const touches = \[\.\.\.fresh|held = \{ session, touches \}
…>, grok/<id> and bare claude-* ids to its own accounts, answers Claude Code's model probe locally, books the effort and its source, and generates its subagents; WHAM tools go out with strict false, hook output stays in place as developer messages so the Codex cache keeps the prefix, and the session's own subagents keep their model
…ect and the parent of the config root, so it builds on master too
…spawn through toolCommand, so the pre-push guard lets the branch through
…ral sample folders instead of private project paths
…its main loop on a Codex model: logins become in-memory proxy accounts (a configured one such as the legacy auth.json account still works), auto ranks Codex and Grok logins by usage and Claude logins by the cc opus rule, billed accounts need --allow-metered or a yes, the window rides in --settings, and codex run auto and grok run auto share the ranking
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
a463130· 3 actionable findings ·⚠️ degraded pass · reviewed by find codex/gpt-6.1-sol + codex/gpt-6-luna, verify codex/gpt-6-luna · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 3 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- 616 changed patch(es) were omitted by the diff budget.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
d43e118cwas unusable after a base-branch merge saturated GitHub's compare API (300+ files, 0 of them merge noise, list truncated).
Blast radius
moved(+) → 8 dependent(s) outside this PR: src/macos/GenesisTools/Sources/Host/BrowserURL.swift, src/macos/GenesisTools/Sources/Host/Capsule.swift, src/macos/GenesisTools/Sources/Host/PermissionFaces.swift, +5 morebringFrontmost(~) → 4 dependent(s) outside this PR: native/ax-tool/Sources/commands/Hotkey.swift, native/ax-tool/Sources/commands/Harness.swift, native/ax-tool/Sources/commands/ValueCommands.swift, +1 moresessionDirOf(+) → 3 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsxbareDescription(+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsxHost(+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsxliveAgo(+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsxactionButton(+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsxadd(+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsxaddCheckout(+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx- +31 more changed symbol(s) with outside dependents
- 77 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 7 claims could not be checked from the diff (c1, c2, c3, c4, c5, c6, c7).
| const others = await Promise.all( | ||
| tracked | ||
| .filter((n) => n !== own?.number) | ||
| .map((n) => prOf(host, { root: at.cwd, which: String(n), tracked: true })) |
There was a problem hiding this comment.
🧹 Quality | 🟡 Medium · confidence 97/100
Apply hidden PR state to tracked PRs after a branch switch
rowPrs applies hidden.includes(number) to the current branch's PR and to earlier-branch PRs, but not to the tracked PRs loaded here. A user can track the current PR, hide it, then switch branches: it becomes an others entry with hidden=false from prOf, so it reappears in the band despite its persisted hidden mark. The earlier-branch pass cannot correct it because it skips PR numbers already present in prs. Apply the hidden list consistently to every returned PR, including tracked entries.
🧩 Analysis
Grep evidence: which: String\(n\), tracked: true|hidden: hidden.includes|hidden: false
| byEvent: { ...before.byEvent, [event]: add(before.byEvent[event] ?? { fires: 0, chars: 0 }, chars) }, | ||
| dropped: dropped.length ? add(before.dropped, droppedChars) : before.dropped, | ||
| }; | ||
| await logMod(host, "hooks", { |
There was a problem hiding this comment.
⚡ Performance | 🟡 Medium · confidence 97/100
Avoid ledger logging processes when both hook mods are off
ledgerClassic is called unconditionally by register.tsx's classic.* hook. Even with the shipped defaults hooks.tokens=false and hooks.dedupe=false, every hook that returns context or a block reaches this logMod call, then saves the ledger and invalidates the UI. logMod uses Host.append, whose implementation starts /bin/sh plus mkdir/cat and awaits completion. Consequently installing the plugin adds a subprocess and persistent writes to each context-producing classic hook even when the user has enabled neither ledger feature. Gate this work when both features are disabled (while still handling necessary compaction bookkeeping), or provide an explicit opt-in collection setting.
🧩 Analysis
Grep evidence: await ledgerClassic|await logMod\(host, "hooks"|hooks: \{ tokens: false, dedupe: false \}|cat >>
| for (const line of lines) { | ||
| const entry = parseLine(line); | ||
|
|
||
| if (entry?.type !== "assistant" || typeof entry.uuid !== "string") { |
There was a problem hiding this comment.
🏛️ Architecture | 🟡 Medium · confidence 95/100
Route transcript facts through the provider reader seam
The new firstAsks/questionCalls/blocksOf implementation parses Claude JSONL fields directly, and agents-band.tsx similarly parses message.content and constructs ~/.claude/projects paths. This violates the project review-memory rule and .claude/rules/agent-transcripts.md items 25–43 and 48–54, which explicitly apply to plugins: new transcript facts belong to required NativeSessionReader members implemented by Claude, Codex and Grok. Keep the runtime plugin standalone by reaching normalized reader output through a CLI/shared adapter rather than importing @genesiscz modules into the plugin. That also keeps transcript layout changes from independently breaking the sidebar's jump targets and last-message display.
🧩 Analysis
Grep evidence: entry\?\.type !== "assistant"|function blocksOf|function lastSaidOf|\.claude/projects/
…s and spaces in paths and fails a named unread file, records each check for review-depth, which reads only the current run, an import fails loudly and redoes a partial one, and the review spawn line quotes every value
…line starts on its own line, so a redone import never folds the old batch's turns into its row
Why
The GenesisTools.app permissions host should build fast (Martin, 2026-10-18: "the permissions native app build needs to be fast, it should not at all include anything about clicky, hub and all other stuff"). A cold host build compiled all of GenesisKit (352 files, 92,827 lines) and resolved and compiled its three markdown packages: 82.8 s.
First of three stacked PRs: this one (GenesisKit), then #545 (the app's host library), then #546 (optional app parts).
What
GenesisKitBase(Sources/GenesisKitBase/, no external package):Permissions/, most ofPerf/,Paths/(PathOpener,ClipboardandCopyToast,PathKind,PathDisplay),Tools/(ToolsBridge, the server client),Style/(motion and its two environment keys,RowButton,Plural,PointerCursor,KitPalette/KitTheme, andKitHost),Window/(WindowTitlebar,SingleInstance). Files moved withgit mv; internals the rest of the kit uses gotpackageaccess (members ofpublic extensionblocks untouched).GenesisKitre-exports it (@_exported import GenesisKitBase), so Genesis.app and every importer see the same names.GenesisKitBaseHost(log, perf, terminal, fresh permission probe) with the class-name lookup inKitHost;GenesisKitHostrefines it with the markdown, transcript and git hooks.GenesisKit.host,GenesisKit.installandGenesisKit.logkeep their signatures.GENESIS_KIT_BASE_ONLY=1makes the manifest declare only the base library and no external package (used by the host-only app build in feat(GenesisHub): optional app parts, a build makes only the installed ones and tools hub adds the hub #546).@testable import GenesisKitBase; three path references toPermissionKind.swiftfollow the move.Verification
swift testin GenesisKit: 2024 tests, 0 failures (31 skipped).GENESIS_KIT_PATH, 74 s).bun scripts/test.ts src/macos/lib/permissions/permissions.test.ts: 48 pass.