Companion
In plain words: App: Companion (phone client)
The mobile app: press to speak, review the words, submit a request, and later see or hear the result. It owns privacy, configuration, reconnect and the difference between text and actually played audio.
- 1Enrollment order: Security Desk enrolls, Familiar admits the phone body, then Companion opens the session.
- 2No persona changes, ambient listening, phone administration or voice-only approvals.
- 3First target is native Android; an early development slice exists.
Partial Android development slice with fixtures; no live host connection.
Words on this page, decoded click one for its card
In this section 4 pages
Press to speak, inspect the words, and submit a bounded handoff. Later, an exact settled result can appear as text, with speech governed by the admitted presentation policy. Companion owns this mobile device experience—including privacy, disclosure, configuration, reconnect, and the difference between committed text and sound the handset actually delivered.
The phone itself is a Familiar body. Avatar may present the LichAssistant through it. Those relations grant neither body authority to the client nor identity to the screen.
Contract
companion.mobile revision 3 publishes companion.admit_device@3, companion.open_session@3,
companion.submit_turn@1, and companion.present_result@1. Admission fixes three parts of the
session:
- The device: exact
FamiliarBody@3and capability epoch, with its Ward-owned device/applicationPrincipalandCredentialgeneration. - The permitted work: initiating Principal, current object-scoped
Authority Grant, purpose, and configuration/feature profile. - The local experience: capture and playback, privacy and retention, reconnect, and visible stop.
These bindings let the session recognize when the body, authority, or conditions on which it began have changed.
Results are immutable CompanionDevice@3, settled CompanionSession@3, CompanionTurnHandoff@1, and CompanionPresentationReceipt@1, optionally synthesized speech/local delivery, or exact partial/non-completion. Persona changes, ambient capture, mobile administration, voice-only approval, and direct deferred external effects remain outside the contract.
The enrollment order is fixed:
- WardSecurity Desk owns enrollment and grants before either CompositionApp acts.
- Familiar admits the body, hardware, capabilities, local safety, and stops.
- Companion pins those exact body, credential, and policy generations in its device record.
Revoked or changed facts prevent new admission and invoke the live session's downgrade/stop policy. So does a missing required microphone, speaker, display, secure storage, notification, or connectivity capability. A replacement handset or credential is no guessed continuation.
Mobile client
The first target is native Android in Kotlin/Jetpack Compose under clients/android/**.
The first development slice uses an explicit BridgeChat fixture and bounded local foreground audio;
it does not establish enrolled mobile access or a native CompositionApp round trip. The client owns
platform integration and local UI state while CompositionApp records, policy, effects, and finish
judgment remain native domain truth. State of Work
owns the delivery boundary.
Configure each session explicitly with capability requirements, local routes, presentation/privacy settings, and admitted feature bindings. Extension packages may supply features without becoming an application-owned extension set. Companion then owns the passage through disclosure, draft, commit, playback, reconnect, expiry, and revocation. That independent lifecycle makes it aan CompositionApp rather than only a Familiar profile.
Android Development describes the implemented fixture/local-audio slice and its build route. Android Foundation studies the first BridgeChat and foreground voice client, including shared API contracts and the path to later phone capabilities. Phone Workspace studies a broader candidate direction: an offline music player, progressively admitted phone actions, selected photos, and explicit sync over local Wi-Fi before later VPN reach. That proposal remains separate from this revision's accepted contract.
Communion route
Communion is the bounded foreground interaction route inside Companion. Utterance follows its separately settled submission and presentation handoffs: submission does not admit destination work, and presentation begins from an already-settled result. A ProductPackaged Offer promising one live capture-to-result journey needs a named Suite to coordinate the separate InvocationsJob Requests.
Boundaries
Access and Views applies WardSecurity Desk's existing account/profile law to mobile screens, action offers, device conditions and context changes. The current fixture supplies no live User or remote authorization.
Begin speech through visible, foreground, revocable push-to-talk activation. Companion owns the physical controls and indicators, local state, configuration, features, and reconnect that make this a device experience. EchoVoice retains speech admission, audio custody and derivation, transcription/synthesis/delivery/playback chronology, and revocation.
Stop speaking and cancel session are separate controls. A spoken response or microphone indicator grants no consequential authority. Text remains visible before or beside speech.
Raw voice is restricted; transcripts and replies are at least private. Audio is ephemeral by default, and recording supplies no training permission. Malformed, stale, replayed, unordered, and oversized frames fail closed.
Utterance follows the handoff; Return handles reconnect and custody.
Revision 3 supersedes revision 2 with exact WardSecurity Desk enrollment and independently versioned handoff/presentation PatternsWorkflows. Revision 2 had replaced revision 1's body claim with an exact Familiar dependency. No registry or RunJob Record used them; historical meanings remain unchanged without executable migration.