Skip to content

Enhancements 2026-10-13 (unified) - #507

Draft
genesiscz wants to merge 252 commits into
masterfrom
feat/2026-10-13-enhancements-unified
Draft

genesiscz wants to merge 252 commits into
masterfrom
feat/2026-10-13-enhancements-unified

Conversation

@genesiscz

@genesiscz genesiscz commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

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

  • New library GenesisKitBase (Sources/GenesisKitBase/, no external package): Permissions/, most of Perf/, Paths/ (PathOpener, Clipboard and CopyToast, PathKind, PathDisplay), Tools/ (ToolsBridge, the server client), Style/ (motion and its two environment keys, RowButton, Plural, PointerCursor, KitPalette/KitTheme, and KitHost), Window/ (WindowTitlebar, SingleInstance). Files moved with git mv; internals the rest of the kit uses got package access (members of public extension blocks untouched).
  • GenesisKit re-exports it (@_exported import GenesisKitBase), so Genesis.app and every importer see the same names.
  • Host protocol split: GenesisKitBaseHost (log, perf, terminal, fresh permission probe) with the class-name lookup in KitHost; GenesisKitHost refines it with the markdown, transcript and git hooks. GenesisKit.host, GenesisKit.install and GenesisKit.log keep their signatures.
  • GENESIS_KIT_BASE_ONLY=1 makes 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).
  • Kit tests @testable import GenesisKitBase; three path references to PermissionKind.swift follow the move.

Verification

  • swift test in GenesisKit: 2024 tests, 0 failures (31 skipped).
  • Master's GenesisTools.app, unchanged, builds against this kit (64 s).
  • Genesis.app (GenesisPlayground) builds against this kit with no change (GENESIS_KIT_PATH, 74 s).
  • bun scripts/test.ts src/macos/lib/permissions/permissions.test.ts: 48 pass.

@eve-bot-lovinka

eve-bot-lovinka Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

🐉 eve review — 💬 COMMENT · 3 findings

→ review · run

  • Queued 23:26:02Z
  • Reading diff — 300 files
  • Building repo map
  • Analyzing (find → verify) — 4 candidates → 3 survivors · reviewed by find codex/gpt-6.1-sol + codex/gpt-6-luna, verify codex/gpt-6-luna
  • Posting review
  • Review posted 23:35:03Z (9m 0s)

run wrun_01M5TP5EJ5SJ7EEJT0FMHJS5ZB

Previous runs (10)
run head outcome findings took
27 a71a666 💬 COMMENT 4 8m 30s
26 89a02f2 💬 COMMENT 4 9m 53s
26 89a02f2 🔁 deduped (run wrun_01M owns it) — —
25 495fe10 ⏭️ superseded — 9m 17s
25 495fe10 🔁 deduped (run wrun_01M owns it) — —
24 7f51404 ⏭️ superseded — 4m 4s
23 8b3d0f7 ⏭️ superseded — 4m 1s
22 d6ccdd0 ⏭️ superseded — 4m 9s
21 8a858c4 💬 COMMENT 5 8m 56s
20 d43e118 ✅ APPROVE 0 3m 59s

@genesiscz genesiscz changed the title Do not merge, is only a unified branch (2026-10-13) Enhancements 2026-10-13 (unified) Oct 13, 2026

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 more
  • activate (+) → 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 more
  • font (+) → 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 more
  • label (+) → 6 dependent(s) outside this PR: scripts/native/outline-frames.swift, scripts/native/ax.swift, native/ax-tool/SnapshotSupport/DrawnCheck.swift, +3 more
  • verb (+) → 6 dependent(s) outside this PR: scripts/native/ax.swift, native/ax-tool/SnapshotSupport/SnapshotSelection.swift, native/ax-tool/Sources/utils/ElementQuery.swift, +3 more
  • deactivate (+) → 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 more
  • emit (~) → 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 more
  • target (+) → 3 dependent(s) outside this PR: native/ax-tool/SnapshotSupport/SnapshotToken.swift, native/ax-tool/SnapshotSupport/ScrollMotion.swift, native/ax-tool/SnapshotSupport/SnapshotDigest.swift
  • detail (+) → 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).

Comment thread src/codex/lib/bus-approval.ts Outdated
Comment thread src/ai-proxy/lib/usage/store.ts
@genesiscz
genesiscz force-pushed the feat/2026-10-13-enhancements-unified branch from a8b75fb to bbc17fa Compare October 15, 2026 10:12

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 more
  • mouse (~) → 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 more
  • AgentToolSpec (Δ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).

Comment thread .claude/skills/babysit/scripts/approve-codex.ts Outdated
Comment thread .claude/skills/babysit/scripts/versions.ts Outdated
Comment thread src/cmux/commands/rescue.ts
Comment thread .claude/skills/babysit/scripts/swift-slot.ts Outdated
Comment thread .claude/skills/babysit/scripts/tmp-reclaim.ts Outdated

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 more
  • drag (+) → 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).

Comment thread .claude/skills/babysit/scripts/approve-codex.ts
Comment thread plugins/genesis-tools/hooks/record-session-cmux.ts Outdated
Comment thread .claude/skills/babysit/scripts/integrate.ts Outdated
Comment thread .claude/skills/babysit/scripts/plant.ts Outdated

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 more
  • createBaselineBenchmarkVariant (~) → 1 dependent(s) outside this PR: scripts/history/benchmark.test.ts
  • drag (+) → 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).

Comment thread .claude/skills/babysit/scripts/probe.ts Outdated
Comment thread .claude/skills/babysit/scripts/wait-turn.ts Outdated
Comment thread .claude/skills/babysit/scripts/versions.ts Outdated
Comment thread .claude/skills/babysit/scripts/integrate.ts Outdated
Comment thread .claude/skills/babysit/scripts/ledger.ts

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 more
  • mouse (~) → 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).

Comment thread scripts/ci/check-lost-comments.ts Outdated
Comment thread .claude/skills/babysit/scripts/swift-typecheck.ts Outdated
Comment thread .claude/skills/babysit/scripts/watch-workers.ts Outdated
Comment thread .claude/skills/babysit/scripts/judge-pack.ts Outdated

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 more
  • drag (+) → 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).

Comment thread .claude/skills/babysit/scripts/approve-codex.ts Outdated
Comment thread .claude/skills/babysit/scripts/pick-unified.ts Outdated
Comment thread .claude/skills/babysit/scripts/round-ready.ts Outdated

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 more
  • TurnJudge.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 more
  • SHELL_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.ts
  • codexTurnState (~) → 2 dependent(s) outside this PR: src/hub/lib/agents/codex-agents.test.ts, src/hub/lib/agents/codex-agents.ts
  • TurnSnapshot (Δ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).

Comment thread .claude/skills/babysit/scripts/fetch-threads.ts Outdated
Comment thread .claude/skills/babysit/scripts/tmp-reclaim.ts Outdated
Comment thread .claude/skills/babysit/scripts/fill-brief.ts Outdated
Comment thread .claude/skills/babysit/SKILL.md Outdated
@genesiscz
genesiscz force-pushed the feat/2026-10-13-enhancements-unified branch from d35b110 to 49b1995 Compare October 20, 2026 20:01
@coderabbitai

coderabbitai Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 d35b1103 was 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 more
  • entries (+) → 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 more
  • load (+) → 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 more
  • source (+) → 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 more
  • mimeType (+) → 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 more
  • url (+) → 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 more
  • isImage (+) → 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.swift
  • clonesMeasure (~) → 1 dependent(s) outside this PR: src/macos/GenesisKit/Tests/GenesisKitTests/Disk/ToolsDiskProviderTests.swift
  • settingsReady (+) → 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).

Comment thread .claude/skills/babysit/scripts/tmp-reclaim.ts
Comment thread src/macos/GenesisKit/Sources/GenesisKit/Diff/Render/PierreWebDiffRenderer.swift Outdated

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 d35b1103 was 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 more
  • url (+) → 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 more
  • entries (+) → 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 more
  • mimeType (+) → 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 more
  • score (~) → 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 more
  • calibrate (~) → 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.swift
  • isImage (+) → 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.swift
  • strength (+) → 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.swift
  • ingest (~) → 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).

Comment thread src/agents/lib/hooks/diff/run.ts
Comment thread src/macos/GenesisTools/Sources/Host/App/WindowCycle.swift Outdated

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 d35b1103 was 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 more
  • calibrate (~) → 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 more
  • entries (+) → 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 more
  • load (+) → 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 more
  • mimeType (+) → 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 more
  • score (~) → 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 more
  • strength (+) → 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 more
  • isImage (+) → 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.swift
  • ingest (~) → 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).

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 d35b1103 was 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 more
  • strength (+) → 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 more
  • url (+) → 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 more
  • entries (+) → 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 more
  • mimeType (+) → 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 more
  • calibrate (~) → 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.swift
  • isImage (+) → 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.swift
  • load (+) → 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.swift
  • ingest (~) → 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).

Comment thread src/macos/GenesisTools/Sources/Parts/Hub/Review/ReviewWindow.swift Outdated
Comment thread src/agents/lib/hooks/diff/run.ts Outdated
Comment thread src/macos/GenesisTools/web/diff-viewer/main.ts

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 d35b1103 was 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 more
  • status (+) → 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 more
  • emit (+) → 2 dependent(s) outside this PR: src/macos/GenesisKit/Sources/GenesisKit/Markdown/Document/TextMerge.swift, src/macos/GenesisKit/Sources/GenesisKit/Markdown/Views/MarkdownSourceHighlighter.swift
  • widgetSnapshot (~) → 2 dependent(s) outside this PR: src/hub/widget-cli.ts, src/hub/lib/widget/watch.ts
  • buildExtension (~) → 1 dependent(s) outside this PR: src/browser-extension/index.ts
  • DIST_DIR (~) → 1 dependent(s) outside this PR: src/browser-extension/index.ts
  • fetchGitlabRepo (~) → 1 dependent(s) outside this PR: src/hub/lib/notify.test.ts
  • stat (+) → 1 dependent(s) outside this PR: scripts/benchmarks/fs/fastwalk.c
  • TypeScriptCompiler (~) → 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 });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Quality | 🟡 Medium · confidence 100/100

⚠️ Potential issue

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

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread src/du/lib/evict.ts
Comment thread src/genesis-tools/lib/day-log.ts Outdated

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 d35b1103 was 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 more
  • status (+) → 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 more
  • DIST_DIR (~) → 2 dependent(s) outside this PR: src/browser-extension/index.ts, src/browser-extension/lib/verify.ts
  • emit (+) → 2 dependent(s) outside this PR: native/ax-tool/Sources/CursorOverlay.swift, native/ax-tool/Sources/SnapshotWorkflow.swift
  • mountPage (~) → 2 dependent(s) outside this PR: src/browser-extension/extension/options.ts, src/browser-extension/extension/route.ts
  • buildExtension (~) → 1 dependent(s) outside this PR: src/browser-extension/index.ts
  • stat (+) → 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).

Comment thread src/azure-devops/lib/work-item-update.ts
Comment thread src/du/lib/cloud-commands.ts
Comment thread scripts/ci/typecheck.ts
…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

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 d43e118c was 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 more
  • sessionDirOf (+) → 3 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • moved (+) → 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")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security | 🟡 Medium · confidence 99/100

⚠️ Potential issue

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);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚡ Performance | 🟡 Medium · confidence 97/100

⚠️ Potential issue

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) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Quality | 🟡 Medium · confidence 96/100

⚠️ Potential issue

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) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Quality | 🟡 Medium · confidence 94/100

⚠️ Potential issue

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.

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 d43e118c was 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 more
  • 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/ValueCommands.swift, +1 more
  • sessionDirOf (+) → 3 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • bareDescription (+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • Host (+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • liveAgo (+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • actionButton (+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • add (+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx
  • addCheckout (+) → 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 {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security | 🟡 Medium · confidence 98/100

⚠️ Potential issue

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);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚡ 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"

Suggested change
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)) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Quality | 🟡 Medium · confidence 95/100

⚠️ Potential issue

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);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Quality | 🟡 Medium · confidence 93/100

⚠️ Potential issue

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

@eve-bot-lovinka eve-bot-lovinka Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐉 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 d43e118c was 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 more
  • bringFrontmost (~) → 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 more
  • sessionDirOf (+) → 3 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • bareDescription (+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • Host (+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • liveAgo (+) → 2 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx, plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • actionButton (+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/hooks/tmp-usage.tsx
  • add (+) → 1 dependent(s) outside this PR: plugins/genesis-tools-mods/tests/features.test.tsx
  • addCheckout (+) → 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 }))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Quality | 🟡 Medium · confidence 97/100

⚠️ Potential issue

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", {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚡ Performance | 🟡 Medium · confidence 97/100

⚠️ Potential issue

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") {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏛️ Architecture | 🟡 Medium · confidence 95/100

⚠️ Potential issue

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/

genesiscz added a commit that referenced this pull request Oct 26, 2026
…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
genesiscz added a commit that referenced this pull request Oct 26, 2026
…line starts on its own line, so a redone import never folds the old batch's turns into its row
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant