The Keyboard Is Smaller. The Contract Is Not.
Anvil on the phone uses the same preparation policy as the Mac: drafts stay outside the PTY; you copy, inspect, paste, press Enter; the app never synthesizes a newline. Fresh or continue or copy-only is still a named policy, not a vibe. Stable run, seat, and session bindings still have to match what you can see. A stale phase is still refused. The phone does not get automatic paste because the train is moving. Automatic paste is still a model-shaped write. Track 4 already held this line on the desktop so the pocket could inherit it instead of inventing a looser one.
Preparation lives in a native view, not in the emulator. The pane you watch is a seat's PTY, maybe already in a conversation. The draft is a document about a run. Those identities still do not equal. A pocket that pastes on attach because "you opened Anvil, you must mean it" is a pocket that submits seat A's prompt into seat B's pager. The smallness of the glass makes the mistake easier to miss, not cheaper.
Refuse a Stale Phase
Anvil runs have phases. A draft minted for preparation is not a draft for a seat that has already moved to judging, or to a later round, or to idle. The phone, after a lock, is especially good at holding a stale phase: the draft was in your pocket, the run moved on the Mac, you come back and the view still looks like work to submit. Refuse it. Name the mismatch. Let the operator copy anyway if they insist, but do not offer Enter-for-you, and do not hide the badge that says this phase is no longer the phase.
Stale is a clerk fact, not a guess about the text. Bindings — this run, this seat, this session id, this incarnation — are what you compare. Matching on the first line of the draft is how you accept a rewritten prompt that still starts with the same word. Matching on bindings is how you notice the run has moved even if the prose looks familiar.
Spectator First, Then the Draft
Open Anvil from a phone and you are still a spectator on the host sessions until Take Control. The preparation view can be visible while you watch. It cannot send. Taking control, then pasting, then Enter, is the same join as on the Mac, with a worse keyboard and the same duty. Unsupported harnesses stay unsupported. They are not auto-submitted as CLI arguments because the phone "cannot do the dance." If the dance cannot be done honestly, the harness is not a pocket harness.
Firebrand idle-resume, if it ever appears on the phone, wears this policy too. A continue-host-work surface does not become a second composer. It becomes a window onto the host composer, with a draft beside it. Copy is allowed. Flush is not. The last lesson's keystroke queue is not this draft; this draft cannot press Enter. Keep them in different views so a reconnect cannot confuse a thought you meant to save with a thought you meant to submit.