P2 — define Android local/degraded Prolog behavior without duplicating the server assistant #176

Open
opened 2026-08-22 21:56:03 +00:00 by lost-rob0t · 0 comments
lost-rob0t commented 2026-08-22 21:56:03 +00:00 (Migrated from github.com)

Parent epic: #152
Depends on: #172, #174, #173

Goal

Give embedded Android Prolog a useful explicit role when connected and disconnected without creating a second LLM/memory/agent runtime.

Profiles

Research and implement a small state machine such as connected / reconnecting / offline-local / unavailable. In connected mode server remains authoritative for conversations, memory, server tools and full semantic dialogue. Local Prolog can maintain portable capability facts/policy and may resolve explicitly supported device-only intents. In disconnected mode it may execute only reviewed local semantic actions; all server-required intents return a clear unavailable result.

Invariants

  • no silent second LLM/provider/memory stack;
  • offline local action cannot mutate server conversation as if it succeeded there;
  • on reconnect, queued side effects are not replayed unless an explicit idempotent queue policy exists;
  • same shared intent vocabulary/parity fixtures;
  • principal/device identity and local permissions still apply;
  • local Prolog cannot grant server authority.

Tests

Connected vs offline search/open/timer fixtures; reconnect while local intent active; server-required command offline; provider changes after reconnect; duplicate execution prevention; app process restart; local Prolog failure degrades without crashing UI; semantic parity with server fixtures.

Acceptance

Android's embedded Prolog provides deterministic local capability reasoning/offline device behavior with a clear boundary, not a shadow copy of zara-server.

Parent epic: #152 Depends on: #172, #174, #173 ## Goal Give embedded Android Prolog a useful explicit role when connected and disconnected without creating a second LLM/memory/agent runtime. ## Profiles Research and implement a small state machine such as connected / reconnecting / offline-local / unavailable. In connected mode server remains authoritative for conversations, memory, server tools and full semantic dialogue. Local Prolog can maintain portable capability facts/policy and may resolve explicitly supported device-only intents. In disconnected mode it may execute only reviewed local semantic actions; all server-required intents return a clear unavailable result. ## Invariants - no silent second LLM/provider/memory stack; - offline local action cannot mutate server conversation as if it succeeded there; - on reconnect, queued side effects are not replayed unless an explicit idempotent queue policy exists; - same shared intent vocabulary/parity fixtures; - principal/device identity and local permissions still apply; - local Prolog cannot grant server authority. ## Tests Connected vs offline search/open/timer fixtures; reconnect while local intent active; server-required command offline; provider changes after reconnect; duplicate execution prevention; app process restart; local Prolog failure degrades without crashing UI; semantic parity with server fixtures. ## Acceptance Android's embedded Prolog provides deterministic local capability reasoning/offline device behavior with a clear boundary, not a shadow copy of `zara-server`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nsaspy/zara#176
No description provided.