Skip to content

feat(session): ephemeral session model (epic #85) - #29

Open
devguyio wants to merge 20 commits into
mainfrom
feature/epic-86-session-model
Open

devguyio wants to merge 20 commits into
mainfrom
feature/epic-86-session-model

Conversation

@devguyio

Copy link
Copy Markdown

Summary

  • Implements ephemeral session model replacing permanent workspaces (stories #87-#90)
  • Adds session registry, workspace hydration, lifecycle management (start/stop/inspect/cleanup)
  • Adds finalization subagent for preserving uncommitted work
  • Removes bm teams sync command (replaced by session-based flow)
  • Adds bm minty migration skill for existing installations
  • Removes 11 dead integration tests that called the removed sync command

Commits

20 squashed commits (one per code task) covering 4 stories:

  • Story #87 (CT-01 through CT-07): Session registry, workspace hydration, CLI client, status display, push with rebase
  • Story #88 (CT-88-01 through CT-88-04): Session finalization, stop/force-stop, real claude launch
  • Story #89 (CT-89-01 through CT-89-04): Inspection, cleanup, retention, daemon wiring
  • Story #90 (CT-90-01, CT-90-02): Migration skill, sync removal, documentation

Known gaps

  • Bridge identity provisioning and RObot config injection not yet wired into session hydration path (tracked separately)
  • Config surfacing (ralph.yml, PROMPT.md, CLAUDE.md, settings.json) incomplete in ConfigAssembler
  • E2e operator journey sync steps need replacement with session-based equivalents

Test plan

  • Unit tests pass (cargo test -p bm)
  • Integration tests pass (110/110)
  • Conformance tests pass (18/18)
  • Clippy clean
  • E2e tests — 3 scenarios blocked by known gaps above

devguyio and others added 20 commits May 31, 2026 17:18
The sync command was removed in CT-90-01 but 11 integration tests
still called it. All were failing with the deprecation error message.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented May 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 155 files, which is 5 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 6b255944-619a-435f-b3e0-4c0ac60093bc

📥 Commits

Reviewing files that changed from the base of the PR and between e7a4a11 and 336b06b.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (155)
  • crates/bm/Cargo.toml
  • crates/bm/build.rs
  • crates/bm/src/acp/client.rs
  • crates/bm/src/acp/types.rs
  • crates/bm/src/agent_main.rs
  • crates/bm/src/agent_tags/mod.rs
  • crates/bm/src/brain/bridge_adapter.rs
  • crates/bm/src/brain/event_watcher.rs
  • crates/bm/src/brain/heartbeat.rs
  • crates/bm/src/brain/inbox.rs
  • crates/bm/src/brain/multiplexer.rs
  • crates/bm/src/brain/prompt_template.rs
  • crates/bm/src/brain/queue.rs
  • crates/bm/src/bridge/credential.rs
  • crates/bm/src/bridge/identity.rs
  • crates/bm/src/bridge/lifecycle.rs
  • crates/bm/src/bridge/manifest.rs
  • crates/bm/src/bridge/mod.rs
  • crates/bm/src/bridge/provisioning.rs
  • crates/bm/src/bridge/room.rs
  • crates/bm/src/chat/config.rs
  • crates/bm/src/chat/mod.rs
  • crates/bm/src/chat/skills.rs
  • crates/bm/src/chat/spawn.rs
  • crates/bm/src/cli.rs
  • crates/bm/src/commands/attach.rs
  • crates/bm/src/commands/bootstrap.rs
  • crates/bm/src/commands/brain_run.rs
  • crates/bm/src/commands/bridge/identity.rs
  • crates/bm/src/commands/bridge/mod.rs
  • crates/bm/src/commands/bridge/room.rs
  • crates/bm/src/commands/chat.rs
  • crates/bm/src/commands/completions.rs
  • crates/bm/src/commands/credentials.rs
  • crates/bm/src/commands/daemon.rs
  • crates/bm/src/commands/debug.rs
  • crates/bm/src/commands/fire.rs
  • crates/bm/src/commands/hire.rs
  • crates/bm/src/commands/init.rs
  • crates/bm/src/commands/knowledge.rs
  • crates/bm/src/commands/meeting.rs
  • crates/bm/src/commands/members.rs
  • crates/bm/src/commands/minty.rs
  • crates/bm/src/commands/mod.rs
  • crates/bm/src/commands/profiles.rs
  • crates/bm/src/commands/profiles_init.rs
  • crates/bm/src/commands/projects.rs
  • crates/bm/src/commands/roles.rs
  • crates/bm/src/commands/session.rs
  • crates/bm/src/commands/start.rs
  • crates/bm/src/commands/status.rs
  • crates/bm/src/commands/stop.rs
  • crates/bm/src/commands/teams/mod.rs
  • crates/bm/src/commands/teams/show.rs
  • crates/bm/src/commands/teams/sync.rs
  • crates/bm/src/config/mod.rs
  • crates/bm/src/daemon/api.rs
  • crates/bm/src/daemon/client.rs
  • crates/bm/src/daemon/config.rs
  • crates/bm/src/daemon/event.rs
  • crates/bm/src/daemon/lifecycle.rs
  • crates/bm/src/daemon/mod.rs
  • crates/bm/src/daemon/process.rs
  • crates/bm/src/daemon/run.rs
  • crates/bm/src/daemon/session_api.rs
  • crates/bm/src/formation/init.rs
  • crates/bm/src/formation/launch.rs
  • crates/bm/src/formation/lima.rs
  • crates/bm/src/formation/local/linux/credential.rs
  • crates/bm/src/formation/local/linux/mod.rs
  • crates/bm/src/formation/local/macos/mod.rs
  • crates/bm/src/formation/local_topology.rs
  • crates/bm/src/formation/manager.rs
  • crates/bm/src/formation/mod.rs
  • crates/bm/src/formation/start_members.rs
  • crates/bm/src/git/app_auth.rs
  • crates/bm/src/git/github.rs
  • crates/bm/src/git/manifest_flow.rs
  • crates/bm/src/git/mod.rs
  • crates/bm/src/git/project.rs
  • crates/bm/src/main.rs
  • crates/bm/src/member_lifecycle.rs
  • crates/bm/src/profile/agent.rs
  • crates/bm/src/profile/embedded.rs
  • crates/bm/src/profile/extraction.rs
  • crates/bm/src/profile/manifest.rs
  • crates/bm/src/profile/member.rs
  • crates/bm/src/profile/mod.rs
  • crates/bm/src/profile/team_repo.rs
  • crates/bm/src/session/finalization/categorize.rs
  • crates/bm/src/session/finalization/mod.rs
  • crates/bm/src/session/finalization/subagent.rs
  • crates/bm/src/session/lock.rs
  • crates/bm/src/session/manager.rs
  • crates/bm/src/session/mod.rs
  • crates/bm/src/session/registry.rs
  • crates/bm/src/session/retention.rs
  • crates/bm/src/session/types.rs
  • crates/bm/src/state/dashboard.rs
  • crates/bm/src/state/mod.rs
  • crates/bm/src/team.rs
  • crates/bm/src/topology/mod.rs
  • crates/bm/src/web/assets.rs
  • crates/bm/src/web/files.rs
  • crates/bm/src/web/members.rs
  • crates/bm/src/web/overview.rs
  • crates/bm/src/web/process.rs
  • crates/bm/src/web/sync.rs
  • crates/bm/src/web/teams.rs
  • crates/bm/src/workspace/context.rs
  • crates/bm/src/workspace/git_push.rs
  • crates/bm/src/workspace/hydration.rs
  • crates/bm/src/workspace/mod.rs
  • crates/bm/src/workspace/repo.rs
  • crates/bm/src/workspace/robot.rs
  • crates/bm/src/workspace/sync.rs
  • crates/bm/src/workspace/team_sync.rs
  • crates/bm/src/workspace/util.rs
  • crates/bm/tests/agent_inbox.rs
  • crates/bm/tests/bridge_sync.rs
  • crates/bm/tests/cli_parsing.rs
  • crates/bm/tests/conformance.rs
  • crates/bm/tests/doc_verification.rs
  • crates/bm/tests/e2e/bootstrap.rs
  • crates/bm/tests/e2e/github.rs
  • crates/bm/tests/e2e/github_mock.rs
  • crates/bm/tests/e2e/helpers.rs
  • crates/bm/tests/e2e/isolated.rs
  • crates/bm/tests/e2e/main.rs
  • crates/bm/tests/e2e/rocketchat.rs
  • crates/bm/tests/e2e/scenarios/manifest_journey.rs
  • crates/bm/tests/e2e/scenarios/mod.rs
  • crates/bm/tests/e2e/scenarios/operator_journey.rs
  • crates/bm/tests/e2e/scenarios/rc_operator_journey.rs
  • crates/bm/tests/e2e/scenarios/tg_operator_journey.rs
  • crates/bm/tests/e2e/stub-agent.sh
  • crates/bm/tests/e2e/telegram.rs
  • crates/bm/tests/e2e/test_env.rs
  • crates/bm/tests/integration.rs
  • crates/bm/tests/migration.rs
  • docs/content/concepts/bridges.md
  • docs/content/concepts/session-model.md
  • docs/content/concepts/workspace-model.md
  • docs/content/getting-started/bootstrap-your-team.md
  • docs/content/how-to/bridge-setup.md
  • docs/content/how-to/generate-team-repo.md
  • docs/content/how-to/launch-members.md
  • docs/content/how-to/manage-members.md
  • docs/content/how-to/run-meetings.md
  • docs/content/reference/cli.md
  • docs/content/reference/daemon-operations.md
  • docs/content/reference/design-principles.md
  • profiles/agentic-sdlc-minimal/coding-agent/agents/finalization.md
  • profiles/agentic-sdlc-planning/coding-agent/agents/finalization.md
  • profiles/scrum/coding-agent/agents/finalization.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/epic-86-session-model

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

@devguyio devguyio changed the title feat(session): ephemeral session model (epic #86) feat(session): ephemeral session model (epic #85) May 31, 2026
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