Repository navigation
feat(skills, babysit): the babysit skill, skill lessons, agent wait fixes, and the CI and shell guards - #536
Conversation
|
🐉 eve review — 💬 COMMENT · 2 findings
run Previous runs (10)
|
|
Warning Review limit reachedEnable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. Next included review available in 19 minutes. View limit details
📝 Walkthrough
Merge Risk: 🟡 Moderate · up to
|
|
@coderabbitai full review |
|
There was a problem hiding this comment.
🐉 eve review — 🔴 Changes requested
11fc193· 7 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟠 High | 4 |
| 🟡 Medium | 2 |
| 🔵 Low | 1 |
⚠️ 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
Blast radius
snap(~) → 12 dependent(s) outside this PR: src/stash/lib/apply-session.ts, src/stash/lib/walk-execute.ts, src/stash/lib/walk.ts, +9 moreTurnJudge.step(~) → 12 dependent(s) outside this PR: scripts/learn-from-fable/probe-claude-sub-concurrency.ts, scripts/build-widget-preview.ts, scripts/ci/summarize-tests.test.ts, +9 moresnapshotOf(Δsig) → 1 dependent(s) outside this PR: src/question/lib/decisions/deliver.ts- 20 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 4 claims could not be checked from the diff (c3, c4, c5, c8).
… the blank-line rules and names the checkout root once
Review fixes 2026-10-16 20:30 from GPT-6.1 Sol judged by Claude Opus 5.5Round 1. 7 open threads (eve 7, CodeRabbit 0), plus 3 lead findings. 8 fixed, 0 rejected, 2 already done. The manifest findings overlap and share one fix. Verify manifest conflicts are version-only (eve-bot-lovinka)
Validate every sed argument (eve-bot-lovinka)
Keep launched executable probes on disk (eve-bot-lovinka)
Refuse incomplete lsof listings (eve-bot-lovinka)
Propagate required posting failures (eve-bot-lovinka)
Require executed regression-test evidence (eve-bot-lovinka)
Include the worker final report (eve-bot-lovinka)
Reject attached Git pager execution (lead, no thread)
Detect added personal-data hits in paths with spaces (lead, no thread)
Preserve unrelated merged manifest fields (lead, no thread)
Commits this round
Threads: t1 accepted · t2 already done · t3 accepted · t4 accepted · t5 accepted · t6 accepted · t7 accepted |
There was a problem hiding this comment.
🐉 eve review — 🔴 Changes requested
76ccef0· 6 actionable findings · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟠 High | 1 |
| 🟡 Medium | 5 |
Blast radius
catalog(~) → 12 dependent(s) outside this PR: scripts/ci/manifest-ranges.test.ts, scripts/ai/update-openrouter-snapshot.ts, src/transcribe/lib/price.test.ts, +9 moresnap(~) → 12 dependent(s) outside this PR: src/dev-dashboard/ui/src/hooks/useLive.ts, src/dev-dashboard/lib/live/producers.ts, src/dev-dashboard/lib/cmux/enrich-ttyd.test.ts, +9 moreTurnJudge.step(~) → 12 dependent(s) outside this PR: scripts/ci/lint-rules.ts, scripts/ci/summarize-tests.test.ts, scripts/ci/lint-rules.test.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.ts- 25 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 3 claims could not be checked from the diff (c5, c6, c8).
Review fixes 2026-10-16 21:14 from GPT-6.1 Sol judged by Claude Opus 5.5Round 2. 6 open threads (eve 6, CodeRabbit 0). 6 fixed, 0 rejected, 0 already done. The saved review bodies and bot PR comments contain no additional actionable findings. Parse logging destinations as literal shell words (eve-bot-lovinka)
Use kernel ownership for the Swift slot (eve-bot-lovinka)
Pass a consistent package identity to swiftc (eve-bot-lovinka)
Cache ledger task attribution between metadata changes (eve-bot-lovinka)
Skip only a proven empty cherry-pick (eve-bot-lovinka)
Record successful landing pushes immediately (eve-bot-lovinka)
Commits this round
Threads: t1 accepted · t2 accepted · t3 accepted · t4 accepted · t5 accepted · t6 accepted |
There was a problem hiding this comment.
🐉 eve review — 🔴 Changes requested
7961cc8· 6 actionable findings · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟠 High | 4 |
| 🟡 Medium | 2 |
Blast radius
catalog(~) → 12 dependent(s) outside this PR: src/Internal/commands/reas/lib/analysis-service.ts, src/Internal/commands/reas/backfill.ts, src/Internal/commands/reas/api/ReasClient.ts, +9 moreTurnJudge.step(~) → 12 dependent(s) outside this PR: src/indexer/lib/chunker.ts, src/indexer/lib/store.ts, src/indexer/commands/add.ts, +9 moresnap(~) → 11 dependent(s) outside this PR: src/jenkins/lib/mcp/mcp.ts, src/jenkins/lib/mcp/blue-ocean.ts, src/jenkins/lib/mcp/cli.ts, +8 moreTurnSnapshot(Δsig) → 2 dependent(s) outside this PR: src/utils/ai/transcripts/live.tssnapshotOf(Δsig) → 1 dependent(s) outside this PR: src/question/lib/decisions/deliver.ts- 31 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 6 claims could not be checked from the diff (c3, c4, c5, c6, c7, c8).
…git's converter off switches, which the approval driver now requires for every git read
Review fixes 2026-10-16 21:43 from GPT-6.1 Sol judged by Claude Opus 5.5Round 3. 6 open Eve threads and 2 independent High findings. 6 fixed, including the lead's environment fix in 627dbc8; 2 Medium findings deferred to follow-up PRs as belongs-elsewhere, per lead instruction. Saved review bodies and bot comments contain no additional actionable findings. Allowlist review reads and flags (eve-bot-lovinka)
Refuse fable operations with additional write targets (eve-bot-lovinka)
Disable text converters for approved Git reads (eve-bot-lovinka)
Validate the full fable invocation and heredoc (eve-bot-lovinka)
Keep repeated shell events visible (eve-bot-lovinka)
Fail judge packs on Git read errors (eve-bot-lovinka)
Reject expansion in fable environment values (independent-review (GPT-6.1 Sol), no thread)
Trust only approver-owned canonical fable CLI paths (independent-review (GPT-6.1 Sol), no thread)
Commits this round
Threads: t1 accepted · t2 accepted · t3 accepted · t4 accepted · t5 belongs to another PR · t6 belongs to another PR |
Review fixes 2026-10-16 21:51 from Claude Opus 5.5 judged by Claude Opus 5.5Round 4. An independent GPT-6.1 Sol review of the round 3 fixes found no new Critical, High, Medium or Low finding in the approval driver. It found one regression in the lead's pre-commit hook change from round 3, which the lead fixed; the reviewer then checked that fix with real Biome runs. The hook's sibling copy is formatted again (GPT-6.1 Sol (independent review), no thread)
Commits this round
|
There was a problem hiding this comment.
🐉 eve review — Coverage incomplete · approval withheld
60f3038· 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.
- typecheck timed out (tsconfig.json): out of memory, then its 6144 MiB retry ran out of time
Blast radius
- 30 compiler diagnostic(s) on the PR head touch this diff
There was a problem hiding this comment.
🐉 eve review — ✅ Approved
aa07515· 0 actionable findings · reviewed by codex/gpt-6.1-sol · view run ↗
Blast radius
- 30 compiler diagnostic(s) on the PR head touch this diff
|
@coderabbitai full review |
|
…ject incomplete judge packs
Review fixes 2026-10-17 02:22 from GPT-6.1 Sol judged by Claude Opus 5.5Round 5. The saved inputs contain 0 new open threads (eve 0, CodeRabbit 0) and no additional actionable findings. Both carried round-3 Eve findings and both policy corrections are fixed. Two commits were explicitly authorized when the policy corrections arrived after the first commit. Keep repeated shell events visible (eve-bot-lovinka)
Fail judge packs on Git read errors (eve-bot-lovinka)
Fix required files in the same PR instead of deferring for scope (lead, no thread)
Require every valid finding in every round (lead, no thread)
Commits this round
Threads: t5 accepted · t6 accepted |
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
679de8d· 1 actionable finding · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟡 Medium | 1 |
Blast radius
- 33 compiler diagnostic(s) on the PR head touch this diff
Review fixes 2026-10-17 03:27 from GPT-6.1 Sol judged by Claude Opus 5.5Round 6. 1 open thread (eve 1, CodeRabbit 0), plus 1 harness finding from the lead. 2 fixed, 0 rejected, 0 already done. Review bodies and bot PR comments contain no additional unanswered actionable findings. Watch the running Grok turn instead of the completed-turn count (eve-bot-lovinka)
Read real XCTest and Bun totals while distinguishing import failures from behavior catches (lead, no thread)
Commits this round
Threads: t1 accepted |
…Test totals and ignores logged fixture errors
f051cd7 to
b19049c
Compare
There was a problem hiding this comment.
🐉 eve review — 🔴 Changes requested
7ebafd7· 5 actionable findings ·⚠️ degraded pass · reviewed by codex/gpt-6.1-sol · view run ↗
| Severity | Count |
|---|---|
| 🟠 High | 1 |
| 🟡 Medium | 4 |
⚠️ Degraded pass — this review did not run at full strength; treat the verdict as partial.
- typecheck timed out (src/utils/tsconfig.json)
Blast radius
catalog(~) → 12 dependent(s) outside this PR: scripts/ci/manifest-ranges.test.ts, scripts/ai/update-openrouter-snapshot.ts, src/youtube/lib/usage.ts, +9 moreTurnJudge.step(~) → 12 dependent(s) outside this PR: scripts/benchmarks/dashboards/idle-cost.ts, scripts/benchmarks/fs/utils-FileTailer.ts, scripts/benchmarks/fs/FileWatcher.ts, +9 moresnap(~) → 10 dependent(s) outside this PR: src/dev-dashboard/lib/boards/layout-engine.ts, src/dev-dashboard/lib/live/producers.ts, src/dev-dashboard/lib/cmux/enrich-ttyd.test.ts, +7 moreTurnSnapshot(Δ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 — 5 claims could not be checked from the diff (c4, c5, c6, c7, c8).
…lity client's query; 100 tabs cost 785 ms per hit test Martin asked (2026-10-15) for the stuck-viewer learnings in the swift, ux and performance skills. The swift and ux parts landed in ce9533b9d; this adds the measurement side to the profiling reference: read whose request a stalled stack serves, and count the window's accessibility elements. (cherry picked from commit fecff1b)
…t answers, because an idle session whose last turn never wrote its end read STALLED at once, seconds before the reply began (cherry picked from commit 1114e2d)
…and counts the other tool calls at the turn end, because one Grok round printed 40 reads and greps in five minutes (cherry picked from commit 7782362)
…ead-only commands and unwraps a double-quoted shell wrapper, because an independent reviewer woke the lead for 20 read-only requests in 10 minutes (cherry picked from commit 033a6a0)
…me, and a brief for another repository no longer claims an installed node_modules (cherry picked from commit 8cfecba)
…ead and squash-merges with --squash, because it checked out the PR's remote head and threw a hand-made regroup away (cherry picked from commit 56f19b6)
…rn, because while a new Grok turn had no log yet the tail replayed the finished turn on every poll (cherry picked from commit 3215679)
…aths, because pgrep -x swift-build missed a build named swift-package (cherry picked from commit 7db10b7)
…her repository's run card, because a Swift app's PR ran bunx tsgo and stopped the push (cherry picked from commit 57bdcb0)
…turns, because at a new turn's start the tail read the previous turn and printed it again (cherry picked from commit 8379d49)
…hain of readers as read-only, because a reviewer's first command asked the lead for a cat inside an if (cherry picked from commit be3da86)
… and its hidden-call count once, because before a new turn's log existed both printed on every poll (cherry picked from commit d528f29)
…wn log before it tails, because the tail followed the previous turn and replayed it at every turn start (cherry picked from commit 7a7a005)
…idged paths in a model, a tree that never re-read its folders, far scrolls in a lazy list, SwiftUI rows in tests, and a debug build installed for daily use (cherry picked from commit 18a263f)
…its own observable, and an outline parses once per text (the markdown viewer, 2026-10-15) (cherry picked from commit d81c8b9)
…d is work, because three Grok workers stopped at their first compile error with the fix already named (cherry picked from commit 84f01c2)
…count once at its end, because a tail that ended mid-turn printed a partial count on every poll (cherry picked from commit 0daf467)
… a lock file, because two process-list waiters started their test runs in the same second (cherry picked from commit 6f354c4)
…r, because bun consumes a -- that directly follows the script (cherry picked from commit 26ed64e)
…t lives in; a fade over a big window belongs to Core Animation (the viewer's tab switch, 222 → 92 ms of main thread) (cherry picked from commit ad82073)
…merge of master and unified, where the replay left a file that matches neither Files: - src/chrome-devtools/lib/headless.test.ts - src/hub/lib/open.ts - src/macos/GenesisKit/Tests/GenesisKitTests/Markdown/MarkdownDocumentWindowTests.swift - .claude/skills/babysit/scripts/watch-workers.ts - src/macos/GenesisKit/Sources/GenesisKit/Markdown/Window/MarkdownDocumentWindow.swift - src/macos/GenesisKit/Sources/GenesisKit/Markdown/Window/MarkdownLayout.swift - scripts/benchmarks/process/call-sites.ts - scripts/ci/lint-rules.ts - src/chrome-devtools/lib/launch.ts - scripts/ci/lint-rules.test.ts - scripts/history/retire-native-cache.ts - src/chrome-devtools/lib/launch.test.ts - src/hub/lib/prs.test.ts - src/macos/GenesisKit/Tests/GenesisKitTests/Markdown/MarkdownChromeTests.swift - src/macos/lib/permissions/app.test.ts - src/macos/lib/swap/scanner.ts (cherry picked from commit 08dfb2f)
…process layer, because a ps spawn per wait fails the no-process-tool-spawn lint and blocks every unified push (cherry picked from commit 0d65929)
…iles from the PR and round, because a worker file named 524-r2.json made the summary overwrite it and nothing got posted (cherry picked from commit 6dca54f)
…of a just-opened PR, because the template told it the bots had found nothing (cherry picked from commit 7bb883033a2eacae2ad90272ab945f0ecb3d939d)
…wn test command and refuses sed with a second script, because reviewers woke the lead for every test run and 'sed -n 1p -e w' wrote a file as a read (cherry picked from commit 575c7645dc36c9a4bbbf60aa2b60664e4545bfee)
…by its absolute path and tools ts skeleton, duplicates and refactors as reads (cherry picked from commit ae35fbb60057b9ff831aa42918e4ed9d4ca54acb)
…md> pager, which ran a command as a read (cherry picked from commit 05b5fb74d3a8087adc0fb482f9d8b689e3cbe980)
…eplace edit when every target file is in its scope, because each brief-mandated edit woke the lead (cherry picked from commit 6d8dd9bbf962fe40a6b8723c441a901915f7f697)
- fix(skills, babysit): #536 followup - preserve merges and fail closed - fix(skills, babysit): #536 followup - resolveVersionConflicts follows the blank-line rules and names the checkout root once - feat(skills, babysit): the approval driver accepts the brief's checks under timeout or logged to the scratch folder, and Biome on files of the scope - fix(skills, babysit): the approval driver reads 'test ! -f X || cat X' as a read, the first command of every worker - fix(skills, babysit): a Codex worker's brief says the lead builds Swift, because the sandbox cannot write clang's module cache and a fixer stopped on it - fix(skills, babysit): #536 followup - secure approvals and preserve worker state - fix(skills, babysit): integrate runs the pre-push hook's guards with the same flags, because rounds that passed integrate were refused at the push - feat(skills, babysit): fetch-threads writes a round's threads, review bodies and bot comments into the worktree, because a Codex worker's sandbox has no network and round 2 fixers stopped before their first edit - fix(skills, babysit): fetch-threads prints its check mark again, which the commit hook's formatter had turned into a root sign - fix(ci): the pre-commit hook formats a staged copy as a sibling file, because biome's stdin output turned ✔ ✖ ⚠ ℹ into √ × ! i in commits - fix(skills, babysit): the approval driver refuses a fable-replace env value with shell syntax, which ran a substitution, and accepts a reviewer's writes to its own probe folder - fix(skills, babysit): #536 followup - close command approval bypasses - fix(skills, babysit): #536 followup - fixer and reviewer briefs name git's converter off switches, which the approval driver now requires for every git read - fix(ci): the pre-commit hook's sibling run turns biome's ignore file off, because .gitignore lists the sibling and biome checked 0 files - fix(skills, babysit): #536 followup - preserve repeated events and reject incomplete judge packs - fix(skills, babysit): #536 followup - require every valid finding in its PR - fix(skills, babysit): #536 followup - active turns and planted evidence - fix(skills, babysit): #536 followup - plant evidence reads skipped XCTest totals and ignores logged fixture errors - fix(skills, babysit): #536 followup - safe cleanup and complete review audits - fix(skills, babysit): #536 followup - reclaim proves its symlink guard with a session path under a symlinked project, and keeps the one realpath check - fix(skills, babysit): #536 followup - refresh deletion guards and resolve prompt paths - fix(skills, babysit): #536 followup - preserve protections and audit status - fix(skills, babysit): #536 followup - a bare --protect word stays an id even when a file of that name sits in the cwd - fix(skills, babysit): #536 followup - pin review repos and preserve worker commits - fix(skills, babysit): #536 followup - setup moves a worktree whose commits are all in a restacked head by patch - fix(skills, babysit): #536 followup - refuse incomplete reclaim scans and audit body findings - fix(skills, babysit): #536 followup - deny reader options that execute programs - fix(skills, babysit): #536 followup - resolve native links and paginate review activity - fix(skills, babysit): #536 followup - guard reader writes, Swift slots, reclaim ages and gate snapshots - fix(skills, babysit): #536 followup - integrate removes its gate snapshot when it exits, so a round no longer leaves a full checkout in the run folder - fix(skills, babysit): #536 followup - bound disk watches and preserve staged Biome paths - fix(skills, babysit): #536 followup - preserve dirty landing work and accept unmatched lint paths - fix(skills, babysit): #536 followup - parse uniq operands and retain bounded Swift supervision - fix(skills, babysit): #536 followup - resolve approval paths and complete integration gates - fix(skills, babysit): #536 followup - bound readiness reads and decode Git paths - fix(skills, babysit, swift): #536 followup - order Swift dependencies and bound control operations - fix(skills, babysit): #536 followup - allow external Swift products and preserve judge diff paths - fix(skills, babysit): #536 followup - enforce hooks on landing squash commits - fix(skills, babysit): #536 followup - enforce verification coverage and repository routing - fix(skills, babysit): #536 followup - preserve review comments and bound Swift runs - fix(skills, babysit): #536 followup - gate publication and fence worker replies - fix(skills, babysit): #536 followup - canonicalize approved editor targets - fix(tools): #536 followup - remove every unsafe Biome option - docs(skills, babysit): #536 followup - round policy by PR size, merge without eve's review of the last fix - docs(skills, babysit): #536 followup - valid security findings are always fixed, deferred threads stay open - fix(skills, babysit): #536 followup - create exclusive private reclaim quarantines - docs(skills, babysit): #536 followup - a dedicated code review is fixed in full - fix(skills, babysit): #536 followup - enforce probe, review and landing boundaries - fix(tools): #536 followup - preserve hook fixtures and bound answering-turn waits - fix(ai, agents): #536 followup - a fenced wait accepts an answering turn whose start left the tail
There was a problem hiding this comment.
🐉 eve review — 🟡 Review comments
f55fdf3· 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.
- 1 changed file(s) had no readable patch.
ℹ️ This pass reviewed the full PR diff: the incremental delta since
818db919was unusable after a base-branch merge saturated GitHub's compare API (300+ files, 243 of them merge noise, list truncated).
Blast radius
snap(~) → 12 dependent(s) outside this PR: src/utils/obsidian/discovery.ts, src/utils/tmux/reset.test.ts, src/utils/ts/sourcemaps/sourcemaps.test.ts, +9 moreTurnJudge.step(~) → 12 dependent(s) outside this PR: src/automate/lib/step-runner.ts, src/automate/lib/engine.ts, src/automate/lib/steps/http.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/lib/hooks/hooks.test.ts, +1 morereadTurnState(~) → 6 dependent(s) outside this PR: src/utils/ai/transcripts/live.ts, src/cmux/lib/session-close-live.ts, src/cmux/lib/session-inventory.tsTurnSnapshot(Δsig) → 2 dependent(s) outside this PR: src/utils/ai/transcripts/live.tswaitTimeout(+) → 2 dependent(s) outside this PR: src/question/commands/ask.ts, src/ai/commands/agent/message.tssnapshotOf(Δsig) → 1 dependent(s) outside this PR: src/question/lib/decisions/deliver.ts- 56 compiler diagnostic(s) on the PR head touch this diff (graph truncated)
ℹ️ Claims vs diff — 6 claims could not be checked from the diff (c3, c4, c5, c6, c7, c8).
| continue; | ||
| } | ||
|
|
||
| const now = judge(planned.path, protection, open); |
There was a problem hiding this comment.
🔒 Security | 🟡 Medium · confidence 98/100
Refresh live-session protection before each reclamation
Apply computes protectedEntries() only once before processing the whole plan, although each candidate scan can take 20 seconds and there is no total apply deadline. A session that resumes later in that loop can update its native transcript and become live without modifying or keeping a file open in its old scratch directory. Its ID remains absent from the cached protection passed here, so the fresh lsof check does not prevent deleting that live session's scratch. Refresh transcript-based live protection immediately before authorizing each move, alongside the existing open-file refresh, and test a transcript becoming live between candidates. This is required by the script's stated never-touch-live-sessions guarantee.
🧩 Analysis
Grep evidence: const protection = protectedEntries\(\)|judge\(planned.path, protection, open\)|const freshOpen = openPaths
| } | ||
|
|
||
| if (fence.openedFromByte !== undefined) { | ||
| return snapshot.tailStartOffset !== undefined && snapshot.tailStartOffset >= fence.openedFromByte; |
There was a problem hiding this comment.
🧹 Quality | 🟡 Medium · confidence 98/100
Do not treat post-send tail bytes as proof of an answering turn
A busy predecessor can continue writing after the message is queued. If it writes more than TURN_TAIL_BYTES (256 KiB), its task_started record leaves the window and tailStartOffset advances past the pre-send transcript size. This branch then identifies that same predecessor as the answer: its task_complete returns done, or its silence returns stalled, before the queued answering turn starts. The timestamp fallback has the same problem when all retained predecessor events are newer than the send. Retain an observed turn identity/start across tail eviction, or locate an opening record after the fence; post-send output alone cannot establish that a new turn began. Add a regression with a queued message and a predecessor that produces more than one tail window after delivery.
🧩 Analysis
Grep evidence: tailStartOffset >= fence.openedFromByte|TURN_TAIL_BYTES =|snapshot.turnStartedAt === null
Part 2 of 5 of the split of the unified branch #507 (cut at 189a4569d). Each split PR holds whole commits from unified, picked in their original order; commits already in another open PR (#524, #527, #528, #530, #531, #532) stay there.
Base
Stacked on #533 (
feat/2026-10-15-cmux-find-links-and-hub-commit-links): thehubUrlchange insrc/hub/lib/open.tsreadsOpenHubOptions.commitand.repo, which that PR adds. Merge after it.Commits (86)
61 files changed, 5588 insertions(+), 59 deletions(-).
08dfb2f keeps its hunks on three files only (
watch-workers.ts,src/hub/lib/open.ts,headless.test.ts); its other files already equal master.Review
Review rounds run with GPT-6.1 Sol: one worker fixes the bot threads, a second one reviews the code independently, and Claude judges each round before its push.
Summary by CodeRabbit