Revised after the first live hand-over. A meeting can be hosted. You choose it when you convene, or hand a live meeting over. Every place the meeting would give the floor back to you gives it to Mira instead. She answers what was put to you in the room, each line marked Assumed for Sarah and logged in the brief. She keeps an agenda of what the meeting has to settle and steers the room through it. She cannot close before a normal meeting's worth of turns counted from the hand-over, and after that only when every item is settled. A ceiling bounds the run. Then the meeting concludes itself and a Workbench card says so.
The problem
Rookery sittings hand the floor back to you after every round, and Mira's job there is to put questions back to you. Development meetings run their turns alone but stop at the end and wait for Conclude. Mira's Room has a "Run it without me" path for standups, which is invisible from the meeting screens and the phone, and it cannot be joined or handed over.
Approach
The second run felt rushed, and nothing reviewed before closing
Reopening the already-hosted Peregrine meeting began no new run, so Mira's budget read as spent and she closed after one stretch of about fifteen minutes. A reopened or baseline-less hosted meeting now begins a fresh run. Every hosted close now waits on two closing reviews. Mira outlines the conflicts to decide and the unanswered items and gaps, every expert or seat adds what it sees, she folds it all into the agenda, and the room works through it. Then the same review runs again, and a close is honored only after the second.
The first hand-over concluded without Mira speaking
The Peregrine standup was handed over about 128 expert turns in. Hosting counted the whole transcript against a 36-turn ceiling, so the first decision point concluded it. Mira's check-ins were also capped at four per meeting, a cap the resumed meeting had already used. The rebuild counts from the hand-over, guarantees a normal meeting's worth of turns before Mira may close, gives her an agenda she keeps and steers by, and shows the conclusion on the meeting screen.
One flag, and the loops change only where they hand back the floor
StandupMeeting.hostedByMira persists with the meeting. The development loop's natural end and the Rookery's yieldFloor() are the only places that branch on it, so every existing path still ends at one of those points: your messages, directives, drift checks, and resume. A forked hosted loop was rejected because it would duplicate the pacing, passing, and phase logic.
Mira decides through a control line
Her hosting turn ends in NEXT: ROUND, NEXT: CUE … or NEXT: CLOSE, which is parsed and then stripped before the room sees the turn. The alternative, a second classifier call, would add a turn and a separate place to go wrong.
Three stops
The run ends when Mira closes, when the ceiling is reached (twice the opening budget for standups, three times for the Rookery), or when a decision point arrives with nothing new said since the last one.
Conclusion runs outside the loop's task
concludeMeeting() cancels the conversation task, which would be the caller, so hosting schedules the conclusion in a fresh task.
Decisions made for you
Spec reviews cannot be hosted
Ideation owns their conclusion flow, and an automatic conclusion would skip it. Reversible in StandupMeeting.canBeHostedByMira.
Different defaults when Mira's decision can't be parsed
A standup closes, because it has already used its budget. A Rookery sitting runs another round, because closing on a formatting slip would lose the work, and the ceiling still stops it.
Cancelling the Workbench card hands the chair back
It does not conclude or discard the meeting. The card settles as ready with "You took the chair."
"Mira hosts" in a room that already has a host
The Rookery's convene screen also has "Ask the host who sits", which refers to a different role. The copy stayed "Mira hosts" to match your request and the phone.
The work
Phase 1 — Service
7 tasksHosting flag, decision turns, ceiling, auto-conclude.- Add
hostedByMiratoStandupMeetingwith defensive decoding and acanBeHostedByMirarule - Add
StandupMeetingService+Hosting.swiftwithsetMiraHosting, the hosting ceiling, the Workbench card, and auto-conclude - Route the development loop's natural end and user-response wait through
hostedStandupNaturalEnd() - Add the hosting clause to lead prompts and the lead hosting decision prompt with its control line
- Route the Rookery opening round and
yieldFloor()intorunHostedRookery()while hosted - Add Mira's hosted Rookery prompt (assumptions, brief, next step) and strip the control line from room text
- Thread
hostedByMirathroughstartMeetingandstartRookery
Phase 2 — Mac interface
2 tasksConvene choice and live control.- Add a "Who runs it" choice to
RookeryRoomViewandMeetingRoomView, hidden for one-seat meetings - Add a hosting banner and a Let Mira host / Take the chair control to the live meeting view
Phase 3 — Wire and phone
4 tasksAdditive protocol change; no version bump.- Add
hostedByMiraandcanHostto the wire contract and thehostcommand - Handle
hostand the convene flag inRemoteMeetingController, and map hosting state inRemoteMeetingMapper - Add the hosting choice to
ConveneMeetingViewand the hosting banner and control toLiveMeetingView - Show "Mira is hosting" on the live meeting card in
MeetingsHomeView
Phase 4 — Hand-over fixes
5 tasksFrom the first live hand-over.- Measure the hosted floor and ceiling from the hand-over (
hostingBaselineContributions), with a normal meeting's budget as the floor Mira cannot close before - Give Mira a kickoff turn on hand-over that writes the "Hosting agenda" and directs the first open item
- Lift the lead check-in cap while hosted and have every hosted lead turn keep the agenda and steer to open items
- Replace the single decision prompt with steer, decide, and closing turns, and close only when every agenda item is settled
- Show a concluded banner and the handoff sheet when a meeting concludes outside the view's own button
Phase 5 — Verification
2 tasksCompile checks only.- Build the Mac app with
scripts/verify-build-product.sh - Build Code Raven Mobile for the simulator
Manual Testing
6 tasksRuntime behavior; nothing here has run yet.- Convene a hosted Rookery sitting on the Mac and leave it: openers get answered as assumptions, rounds continue, it concludes with a record and a Workbench cardyours
- Convene a hosted development meeting and leave it: Mira extends or closes, and it concludes on its ownyours
- Pop in to a hosted meeting with a message: the room answers, then keeps going without youyours
- Cancel a hosted meeting's Workbench card: the meeting stays open and the chair is yoursyours
- Take the chair mid-run, then hand it back with Let Mira hostyours
- From the phone: convene a hosted meeting, watch the banner, toggle hosting from the live viewyours
Risks & edge cases
An unattended meeting spends turns nobody is reading
The ceiling bounds it. Only Mira's close decision ends it sooner.
Assumptions compound
Later rounds build on what Mira assumed. Each assumption is marked in the room and the brief, but a wrong early one shapes everything after it.
A hung CLI turn never reaches a decision point
Hosting can't conclude a meeting that is stuck mid-turn. Meetings behave this way today too, and the delegated runner's wall-clock limit was not reused.
Two unattended-meeting paths
MiraDelegatedMeetingRunner still polls and concludes on its own. It starts unhosted meetings, so no meeting is concluded twice. Moving it onto hosting is a follow-up.
Out of scope
Consultations, view evaluations and off-sites. Spec reviews. Image upload on the phone. The Personal StandupSetupSheet path.
Final review
The design is small: one flag, two branch points, one decision prompt per loop, and it reuses the existing loops, the conclusion path, the Workbench card, and the phone's live state push. It is weakest in behavior nobody has observed yet. How often Mira chooses CLOSE, and whether her assumed answers are good enough to build on, can only be learned from real meetings. If the first hosted meetings run to the ceiling every time, the close criteria in the two prompts are the first thing to tighten.
The structure is sound and both apps compile. The remaining doubt is behavioral: Mira's close judgment and the quality of her assumptions haven't run yet.