Allow Remote sessions to outlive connection forms

This commit is contained in:
ak47 committed 2026-11-04 17:19:19 -05:00
1 parent b60cf5d5f2
commit b4896a2eb4
10 files changed
+233 -16

No files matched your search

+9 -6
View File
@@ -117,11 +117,13 @@ speech-owner mutex as observed utterances. An older delivery generation cannot
publish behind that cancel. Remote publication never performs pipe, relay or
backend I/O in the input loop. Incoming cancellation ownership remains pending.
The source command still holds a modal status form for its connection lifetime.
That form captures local keys and suppresses ordinary application presentation;
this increment does not detach it or provide an ordinary desktop workflow.
Keep relay-testing warnings until that UI lifetime and incoming speech ownership
are implemented and live acceptance is recorded.
The source command now offers an explicit Return to desktop action after its
reader lease opens. It closes status and releases local input capture while the
original lease and heartbeat worker remain active. The Remote shortcut reopens
status/Disconnect. Lock/handoff, expiry and process loss still revoke the lease.
See [the terminal interaction contract](tentacle-sessions.md#reader-owned-consent-interactions).
Incoming speech ownership and live acceptance remain pending; relay-testing
warnings remain in place.
## Verification and remaining work
@@ -160,7 +162,8 @@ speech/Remote/Tentacle race checks, affected-package vet, a separate reader
build, the existing speech regression harness and Tentacles `make check`.
Next: add incoming speech ownership, delivery-time policy, local priority and
remote-only cancellation, and detach connection status from desktop capture.
remote-only cancellation. Explicit status detachment is implemented; physical
input capture/release and ordinary reading while connected still need acceptance.
Review remaining output producers before assigning exportable origins.
Atomic IPC assembly is implemented; it does not establish backend
priority/cancel behavior or audible delivery.
+23
View File
@@ -114,6 +114,29 @@ cleanup context, so pre-lease inspection does not depend on a revocation event.
No form values accompany that cleanup. Session failure/disable still uses
normal process supervision. Existing non-remote interactions keep their path.
An explicit return-to-desktop action may instead finish with:
```json
{"remote_background":{"lease":"0123456789abcdef0123456789abcdef","epoch":1},"done":true}
```
This terminal result requires an already-open, unexpired lease belonging to the
requesting process session. If this interaction approved an epoch, it must match
the requested lease. Forms, continuations, polling, clipboard, reader/consent
requests and uninterruptible speech cannot accompany it; ordinary speech/Braille
presentation is allowed. A polling response cannot detach a form. Go exposes
`Interaction.RemoteBackground`; Python uses the dictionary above.
On success, core releases the interaction/result slots without invoking child
cancellation or revoking that epoch. The original policy/session lease remains
its owner: heartbeats, expiry, lock, handoff, disconnect, replacement, disable,
update and process loss retain their existing behavior. This result neither
renews authority nor starts networking. The Tentacle must offer an explicit
status/disconnect command; reopening status needs no new consent, while a new
connection still does. Ordinary cancellation and form closure retain their
existing cleanup behavior. `RemoteLeaseContext` checks identity/lifetime only;
desktop effects still require `RemoteContext` with their specific grant.
This addition requires the matching updated reader; protocol 1.1 by itself does
not imply that an older reader accepts the new interaction field. Remote still
has no release manifest advertising a minimum supported reader version.