Skip to content

fix(chat): read a session that Muse 1.4.13 /fork started - #2052

Merged
devswha merged 1 commit into
devswha:mainfrom
jpcarranza94:test/muse-recorded-fixtures
Oct 27, 2026
Merged

devswha merged 1 commit into
devswha:mainfrom
jpcarranza94:test/muse-recorded-fixtures

Conversation

@jpcarranza94

Copy link
Copy Markdown
Contributor

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.initialized and runtime.reasoning_effort_reconfigure into the log of a session that /fork starts. 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): four session.jsonl logs that Muse 1.4.13 wrote in an isolated herdr session, a temporary data directory and a throwaway folder:

  • main: a picture attached with --image (an asset block), a file mention picked with @shed.txt, and one subagent (subagent_spawn, subagent_wait and 11 subagent.control.* records). It also holds the command records of /fork, /side and /rewind.
  • fork: the session that /fork opened in a new tab, with one more prompt.
  • side: a /side question.
  • rewind: /rewind to 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 -l output, and the developer messages that a fork copies into session.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_shell records.

What the recordings show, now in docs/muse-chat.md under Limits:

  • A file mention is not a separate block. Muse sends @shed.txt as the words shed.txt.
  • A subagent shows as its subagent_spawn and subagent_wait calls.
  • /rewind opens a new session. Its Chat shows the kept prompt without its answer: Muse writes the prompt again, but keeps the answer only as a session.fork.turn record. The old docs said only that /rewind was not handled.
  • After /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 in session.side.started, which is not read.

I did not change the behavior for any of these. Showing the session.fork.turn history 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 through transcriptPage. It fails when either new name is taken out of the list.
  • The Muse case of server/api.contract.test.ts passes in an isolated herdr session.
  • Typecheck and build pass.
  • bun run check fast: the same unit test files fail on unchanged main on this headless Mac (scripts/check, ci-browser, install-star, self-hosted-runner, claude-store, session-history, remote-entry, core/composer-framing, shell-agent under load). None of them reads Muse logs.
  • Live check: while recording, a test Ovis server on loopback read the same Muse store. The main pane showed Chat with all three prompts, the picture prompt, the file mention and the subagent calls. The fork's pane showed Terminal before this fix.
  • The changelog fragment is changelog.d/muse-fork-records.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HabHntUPvy5yA9iU3G1m5y

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
@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: devswha/ovis
  • Branch: main
  • File: .coderabbit.yaml
  • Commit: 0dc3262
  • Layers: Repository YAML
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 69eedaac-8e19-43d8-aed7-9d9d17509ce0
Commits

Reviewing files that changed from the base of the PR and between 0dc3262 and 1dded29.

Files selected for processing: 9
  • changelog.d/muse-fork-records.md
  • docs/muse-chat.md
  • server/fixtures/muse/README.md
  • server/fixtures/muse/recorded-1.4.13-fork.jsonl
  • server/fixtures/muse/recorded-1.4.13-main.jsonl
  • server/fixtures/muse/recorded-1.4.13-rewind.jsonl
  • server/fixtures/muse/recorded-1.4.13-side.jsonl
  • server/muse.test.ts
  • server/muse.ts

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.

📝 Summary

Summary by CodeRabbit

  • Bug Fixes
    • Muse chat can now read sessions started with /fork in Muse 1.4.13 instead of falling back to Terminal.
  • Documentation
    • Updated guidance on what appears in chat for /fork, /side, and /rewind sessions, including the behavior of side sessions while Muse remains open.

Muse chat now recognizes an additional record type found in Muse 1.4.13 fork logs. Tests cover recorded image, file-mention, subagent, fork, side, and rewind activity. Documentation describes the recordings and observed session behavior.

Changes: Muse 1.4.13 fork record support

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: Normal

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: Passed 5
Check name Status Explanation
Title check Passed 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 a…
Description check Passed 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 recor…
Docstring Coverage Passed 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 survi…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
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 #1962 and #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.

❤️ Share

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

@devswha

devswha commented Oct 27, 2026

Copy link
Copy Markdown
Owner

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 MuseUnavailable (the Terminal fallback) and passes here, and removing either of the two record names makes it fail again. Both reviewers scanned every line of the four recordings for data that should not be public and found none; the only image is a synthetic 8x8 PNG. CodeRabbit reviewed it and required checks are green.

Two LOW notes, not blocking: the recordings keep the recording machine's hook paths (/home/user/.orca/agent-hooks/), a few skill names and a hash of a rules file (not personal data; replace them or note them in the fixtures README if you touch these again), and one line in docs/muse-chat.md wraps at 110 columns.

Thank you, @jpcarranza94.

@devswha
devswha merged commit 1c0c42b into devswha:main Oct 27, 2026
19 checks passed
@jpcarranza94
jpcarranza94 deleted the test/muse-recorded-fixtures branch October 27, 2026 13:53
@devswha devswha mentioned this pull request Oct 27, 2026
devswha added a commit that referenced this pull request Oct 27, 2026
## 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.
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.

2 participants