Repository navigation
fix(chat): read a session that Muse 1.4.13 /fork started - #2052
Conversation
Muse 1.4.13 writes runtime.model_selection.initialized and runtime.reasoning_effort_reconfigure into the log of a session that /fork starts. The 160 logs the allow-list came from have neither, so a fork's pane fell back to Terminal. Both are bookkeeping; the reader now knows them. Add a second real recording from Muse 1.4.13: a picture prompt, a file mention, a subagent, and the sessions that /fork, /side and /rewind opened. The new test pins what Chat shows for each, and fails without either new name. The docs now say what a side chat and a rewind show. Part of devswha#1962. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HabHntUPvy5yA9iU3G1m5y
|
No actionable comments were generated in the recent review.
|
| Layer / File(s) | Summary |
|---|---|
Recognize and verify Muse session records server/muse.ts, server/muse.test.ts, server/fixtures/muse/README.md, docs/muse-chat.md, changelog.d/muse-fork-records.md |
The record allowlist recognizes runtime.model_selection.initialized. Tests use recorded sessions to check parsed turns for image, file-mention, subagent, fork, side, and rewind activity. The fixture and chat documentation describe the recordings and observed behavior; the changelog records the fork-session fix. |
Priority:
Estimated code review effort: 2 (Simple) | ~10 minutes
Change: Bug fix · Severity of issue fixed: Medium
Possibly related issues
- Issue 1962 describes missing Muse record allowlist coverage and a missing fork fixture. This change adds a recognized record type and recorded fork-session test coverage; it does not address the other concerns described in the issue.
Possibly related PRs
- devswha/ovis#1706: This PR extends the Muse transcript reader’s recognized-record support and tests its Chat parsing.
- devswha/ovis#2027: Both PRs add Muse session-log cases to reader coverage, including fork, side, and rewind activity here.
Suggested reviewers: devswha
Merge Risk: 
Minimal · up to 1dded
-
Muse sessions started with /fork now open in Chat instead of falling back to Terminal. Chat begins at the fork point, which the docs describe. The change is small and covered by recorded-session tests, and no merge-blocking risk remains.
Pre-merge checks: 
5
-
Full details: Title check
-
Explanation
The title names the main change: the reader now handles a session that Muse 1.4.13 /fork starts. The changeset adds two record names to RECORDS in server/muse.ts, adds fixtures, tests, and docs, all aimed at reading forked sessions. The title is specific and matches the primary fix.
Full details: Description check
-
Explanation
The description follows the template. The Change section explains the problem (fork records missing from the allow-list caused a Terminal fallback), the fix (two record names added), and the new recordings and docs. The Validation section lists test results, typecheck and build, a live check, and the changelog fragment. It includes the template's HTML comment and the changelog reference. It names no linked issue for a feature, but this PR is a fix and references
#1962and#2027.
Full details: Docstring Coverage
-
Explanation
No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 2 files. (3 skipped: 3 unsupported.)
-
Finishing Touches
-
🧪 Generate unit tests (beta)
-
- Create a new PR
-
- Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands.
|
Merging at 1dded29. Both merge-pass reviewers (omo-native-code-reviewer and Codex, external-PR strict review) passed it with no CRITICAL/HIGH/MEDIUM: the new test fails on main with Two LOW notes, not blocking: the recordings keep the recording machine's hook paths ( Thank you, @jpcarranza94. |
## Release 0.4.19 The release PR, made by the steps in [docs/development.md#releasing](docs/development.md#releasing), on main 9d76cca (#2078): - **Version:** `version` is 0.4.19 in `package.json` and `herdr-plugin.toml`. - **Changelog:** `bun scripts/changelog-fold.ts 0.4.19` moved the `changelog.d` fragments of 54 PRs into CHANGELOG.md, with PR links, and deleted them. - Outside contributors are credited: #1955 @YuuuXie, #1957 @Noobear, #1984 @bonecool999, #2003 @philipprass-prog, #2016 @kyop21, #2024 @YuuuXie, #2025 @YuuuXie, #2027 @jpcarranza94, #2030 @phlips5437, #2031 @yaaayaaa, #2034 @jpcarranza94, #2035 @nahwan-kim, #2041 @odfalik, #2045 @mattmarcin, #2052 @jpcarranza94, #2057 @kyop21, #2061 @YuuuXie. - **Release summaries:** `release-summaries.json` has the 0.4.19 entry in en, ko, ja and zh, with the same lists in each: 5 new, 5 improved, 5 fixed. Every English line is at most 70 characters. - **Remote bundle:** `REMOTE_BUNDLE_VERSION` goes from 37 to 38 in `shared/machines.ts`, because the remote bundle's inputs changed since `remote-v37`. Once this merges, `remote-v38` is pushed on the merge commit, and the Remote PC bundles workflow has to finish before the Release run. `bun scripts/release-guards.ts` reports: "Release 0.4.19: remote bundle, telemetry Worker and release metadata are in order." No telemetry Worker deploy is needed. `bun run check fast` passes locally. **Not checked on a real Windows PC:** #1989 (Git for Windows' OpenSSH for remote PCs) and #2016 (Antigravity chat on Windows through the Restart Manager) ship without their real-device Windows checks, because the maintainer's Windows test PC is off. The owner accepted releasing without them. Both will be checked on the real PC when it is back. The owner approved this release.
Change
Part of #1962, item 3 ("Allow-list coverage"). Items 1 and 2 stay open. Item 4 was done in #2027.
The item said that fork records, subagent records and non-text prompt blocks had no fixture, so a valid record missing from the lists would send the pane to Terminal. I recorded those sessions with Muse Code 1.4.13, and a real fork did fall back to Terminal.
Fix: Muse 1.4.13 writes
runtime.model_selection.initializedandruntime.reasoning_effort_reconfigureinto the log of a session that/forkstarts. The 160 logs the allow-list came from do not have them (I scanned the same store again, now 163 logs: no other name is missing). Both records are bookkeeping, and the reader now knows them. Without them, Chat for a forked pane showed Terminal.New recording (
server/fixtures/muse/recorded-1.4.13-{main,fork,side,rewind}.jsonl): foursession.jsonllogs that Muse 1.4.13 wrote in an isolated herdr session, a temporary data directory and a throwaway folder:--image(anassetblock), a file mention picked with@shed.txt, and one subagent (subagent_spawn,subagent_waitand 11subagent.control.*records). It also holds the command records of/fork,/sideand/rewind./forkopened in a new tab, with one more prompt./sidequestion./rewindto the second prompt, sent again with more words.Records, keys and key order are as Muse wrote them. The fixture README says what was replaced. The redaction is the same as for the first recording, plus the data directory, the user name in
ls -loutput, and thedevelopermessages that a fork copies intosession.fork.model_prefix, which hold Muse's instructions and the user's context. 257 of 1178 lines changed.The recordings cover 78 of the 124 record, session-kind and run-event names. Before, they covered 52. The names still without a recording are mostly workflow, goal, todo, compaction and
user_shellrecords.What the recordings show, now in
docs/muse-chat.mdunder Limits:@shed.txtas the wordsshed.txt.subagent_spawnandsubagent_waitcalls./rewindopens a new session. Its Chat shows the kept prompt without its answer: Muse writes the prompt again, but keeps the answer only as asession.fork.turnrecord. The old docs said only that/rewindwas not handled./side, the pane uses Terminal until Muse exits. The side session takes a lock for the same process and does not end its log, so the existing rule for two live sessions applies. The side question is insession.side.started, which is not read.I did not change the behavior for any of these. Showing the
session.fork.turnhistory of a fork or a rewind, and following a side chat, are possible follow-ups if you want them.Validation
server/muse.test.ts: 26 pass. The new test reads the four recordings and checks the turns of each, and reads the fork throughtranscriptPage. It fails when either new name is taken out of the list.server/api.contract.test.tspasses in an isolated herdr session.bun run check fast: the same unit test files fail on unchangedmainon this headless Mac (scripts/check,ci-browser,install-star,self-hosted-runner,claude-store,session-history,remote-entry,core/composer-framing,shell-agentunder load). None of them reads Muse logs.changelog.d/muse-fork-records.md.🤖 Generated with Claude Code
https://claude.ai/code/session_01HabHntUPvy5yA9iU3G1m5y