[ORDER] ZARA-000 — Repository repair and real-time voice roadmap #1

Open
opened 2026-07-18 19:17:36 +00:00 by lost-rob0t · 10 comments
lost-rob0t commented 2026-07-18 19:17:36 +00:00 (Migrated from github.com)

Objective

Create a single dependency-ordered queue for repairing Zara first, then reducing end-to-end voice latency to near-real-time and evolving the repaired runtime into a self-hosted multi-device assistant.

Status reconciliation — 2026-08-22

Tracker state has been reconciled against the current repository/issues and the daemon RAGE queue.

  • Closed issues are checked below.
  • #17 / ZARA-016 remains reopened because current master misclassifies SWI-Prolog DNS socket_error/2 failures as malformed_response.
  • Prolog-side model work is ordered as #124 (full Prolog LLM client) -> #122 (bounded rewriter).
  • RLM work is not part of the Zara roadmap. #123 is closed as not planned. Do not add a prolog-rlm runtime dependency or recreate an embedded RLM path.
  • #128, #129 and #130 are complete. #131 is the currently consumed daemon slice and must close its PR #148 integration/review blockers before later daemon slices advance.
  • Future semantic/programmable/Android work created in #150-#179 is dependency-gated behind the shared client split; do not jump to it while the daemon queue owns higher-priority work.
  • Container distribution epic #153 reuses existing #149 rather than duplicating it; final container capability-placement proof depends on #150/#161.
  • If manual testing finds another regression in a previously completed slice, reopen that issue and untick it here.

Execution rule

  • Work the first open dependency-satisfied issue in declared priority/order; regressions and an already-consumed RAGE issue take priority over later roadmap work.
  • Never commit directly to master.
  • Create one focused branch and one draft PR per issue.
  • Every behavior change must add automated regression coverage.
  • Every issue must provide a non-interactive script command that later agents can run.
  • Required baseline command: nix develop -c pytest.
  • Run the issue-specific script before opening its PR.
  • Regressions in previously completed correctness contracts take priority over later optimization work.
  • For RAGE-owned work, obey AGENTS.md + skills/rage/SKILL.md: immutable start SHA/issue in the append-only Org log, adversarial research, evidence-derived design, TDD red/green, full Nix/repo gates and exact-head Actions before merge.

Phase 1 — Boot and correctness blockers

  • #2 — ZARA-001: Restore the canonical wake entrypoint and make it importable
  • #3 — ZARA-002: Fix invalid default TOML and prove configuration overrides load
  • #4 — ZARA-003: Stop Prolog command execution from reporting false success
  • #5 — ZARA-004: Make Prolog user configuration load into the correct modules and actually override defaults
  • #6 — ZARA-005: Fix dictation lifecycle state, stale PID handling, and self-stop recovery
  • #7 — ZARA-006: Repair timer parsing, execution, and completion notifications
  • #8 — ZARA-007: Eliminate ambiguous intent precedence and decode Python skill terms correctly
  • #9 — ZARA-008: Preserve valid multi-tool histories across conversation turns

Phase 2 — Runtime reliability and security

  • #10 — ZARA-009: Make memory startup fail open and keep transient context out of persisted history
  • #11 — ZARA-010: Make every configured TTS provider produce playable audio or fail cleanly
  • #12 — ZARA-011: Fix dictation phrase corruption, output ordering, and cleanup
  • #13 — ZARA-012: Remove shell interpolation from alerts, search, app launch, and dictation control
  • #14 — ZARA-013: Confine agent file tools to explicit roots and block traversal/symlink escapes
  • #15 — ZARA-014: Bound the wake audio pipeline and make active/conversation timeouts effective
  • #16 — ZARA-015: Make PrologEngine initialization, queries, and lifecycle fail explicitly
  • #17 — ZARA-016: Correct LLM provider protocols, authentication headers, timeouts, and session reuse — refixed 2026-08-29 (#224)
  • #18 — ZARA-017: Repair todo update, recurrence, validation, and scheduling semantics
  • #19 — ZARA-018: Separate immediate acknowledgement from verified command results

Phase 3 — Packaging, branch reconciliation, and test gate

  • #20 — ZARA-019: Make Nix/package entrypoints and dependency metadata reproducible
  • #21 — ZARA-020: Reconcile all branches and remove divergent duplicate runtime implementations
  • #22 — ZARA-021: Establish the full deterministic regression and CI script gate

The original Phase 4 gate was satisfied before later work landed. The reopened ZARA-016 regression now blocks treating the provider contract as healthy until repaired and manually revalidated.

Phase 4 — Measure and establish the real-time architecture

  • #23 — ZARA-022: Instrument end-to-end voice latency and define enforceable budgets
  • #24 — ZARA-023: Introduce an actor-style real-time turn coordinator with bounded mailboxes

Phase 5 — Near-real-time duplex voice pipeline

  • #25 — ZARA-024: Replace fixed audio chunks with streaming VAD, incremental STT, and fast endpointing
  • #26 — ZARA-025: Play a pre-generated immediate acknowledgement without blocking the turn
  • #27 — ZARA-026: Implement true barge-in and cancel stale LLM/TTS work on user speech
  • #28 — ZARA-027: Stream LLM and agent output with cancellation-safe text events
  • #29 — ZARA-028: Stream phrase-sized TTS into a persistent low-latency audio player
  • #30 — ZARA-029: Optimize warm startup and remove avoidable work from the voice critical path

Phase 6 — Release gate

  • #31 — ZARA-030: Add the full-duplex soak, interruption, and latency release gate

Phase 7 — Context and project skill system

  • #51 — ZARA-031: Build extensible context management and Python/Prolog skill files

Phase 8 — Embedded Prolog LLM and bounded rewriting

  • #124 — Replace the minimal Prolog LLM wrapper with a full embedded async-capable client.
  • #122 — Add a bounded utterance rewriter before Prolog intent resolution, using #124 for model-backed rewriting.

Ordering: #124 -> #122. #124 must also satisfy the reopened #17 provider/error contract.

Phase 9 — Long-lived daemon, multi-user service, and Voice replacement

  • #127 — EPIC: Long-lived Zara daemon, ZeroMQ client protocol, multi-user isolation, and Voice replacement.
  • #128 — Add long-lived zara-server lifecycle and a principal-aware runtime supervisor.
  • #129 — Implement the versioned ZARA/1 ZeroMQ ROUTER/DEALER protocol and shared daemon client SDK.
  • #130 — Add CURVE/ZAP authentication, authorization, key lifecycle, quotas, and security audit controls.
  • #131 — Make conversations, context, persistence, memory and private events strictly principal-scoped. Currently consumed; PR #148 under review/RAGE.
  • #132 — Stream live voice over ZARA/1 with client-owned audio devices and cross-process barge-in.
  • #133 — Migrate CLI and desktop surfaces onto the shared daemon client with reconnect/session continuity.
  • #134 — Prove Voice replacement, multi-user isolation, fuzz/security, soak, and latency release gates.

Daemon ordering: #128 -> #129 -> #130 -> #131. #132 builds on protocol/isolation, #133 migrates client surfaces once those contracts exist, and #134 is the final proof gate. Remote multi-user operation is not production-safe before #131 passes adversarial tests. This phase reuses #28/#29/#30/#31, #51, #82/#83 and #124 rather than forking voice/context/runtime/provider stacks.

Phase 10 — Reproducible self-hosted container distribution

  • #153 — EPIC: Reproducible self-hosted zara-server container distribution and GHCR release path.
  • #149 — Publish the Nix-built zara-server OCI image to ghcr.io/lost-rob0t/zara.
  • #180 — Harden state/config/key volumes, non-root execution and read-only-root policy.
  • #181 — Add deterministic container lifecycle/readiness/persistence/restart/upgrade integration gates.
  • #182 — Define model/cache/plugin policy and maintained Docker/Podman/Compose examples.
  • #183 — Final container secret/listener/provenance/capability-placement security gate.

Container ordering: #149 -> #180 -> #181 -> #182. #183 additionally depends on semantic/device placement gate #161, so early image/distribution work may land before the semantic epic while the final deployment claim waits for the capability split.

Phase 11 — Portable semantic intents, clarification dialogue and capability routing

  • #150 — EPIC: Portable semantic intents, multi-turn slot dialogue, and capability/service routing.
  • #154 — RAGE research/audit and freeze the portable IntentFrame contract. Blocked until #133.
  • #155 — Typed slots and principal/conversation-scoped clarification dialogue.
  • #156 — Adapt Prolog resolution and establish the canonical realistic command corpus.
  • #157 — Capability/provider reasoning and typed ExecutionPlan; reconcile PR #119 as prior art only.
  • #158 — Server api_service providers and semantic/server/device Prolog configuration split.
  • #159 — ZARA/1 client capability advertisement and typed device-action lifecycle.
  • #160 — RuntimeHost-owned semantic command routing; remove duplicated LLM prompt authority.
  • #161 — Adversarial semantic/dialogue/provider/device reconnect/concurrency release gate.

Semantic ordering: #154 -> #155 -> #156 -> #157 -> #158 -> #159 -> #160 -> #161. #51 remains context owner; #122 remains a bounded pre-resolver rewriter; no arbitrary remote shell/eval plane is permitted.

Phase 12 — Principal-scoped programmable voice commands and real speech corpus

  • #151 — EPIC: Principal-scoped programmable voice commands and real speech regression corpus.
  • #162 — Versioned principal-scoped persistence for user-authored semantic commands.
  • #163 — Compile definitions into validated IntentFrame/capability structures.
  • #164 — Voice/text create/inspect/edit/delete/dry-run/undo authoring dialogue.
  • #165 — Parameterized commands, collision policy, revocation and atomic hot reload.
  • #166 — One declarative realistic voice-fixture manifest.
  • #167 — zara-record-voice-fixtures guided recorder with realistic timing/audio validation.
  • #168 — Checked-in real speech corpus exercising VAD/STT -> dialogue/capability regression path.
  • #169 — Human live-voice gate: create and exercise new Zara commands on real hardware.

Programmable-command ordering: #162 -> #163 -> #164 -> #165 -> #166 -> #167 -> #168 -> #169. Automated fixtures never substitute for #169's actual human-spoken acceptance.

Phase 13 — Native Android client with embedded portable Prolog

  • #152 — EPIC: Native Android Zara client with embedded portable Prolog and typed device capabilities.
  • #170 — RAGE Android Prolog/ZeroMQ/NDK/WASM/toolchain feasibility bakeoff and architecture decision.
  • #171 — In-repo Android project skeleton with reproducible Gradle/SDK/NDK CI.
  • #172 — Shared portable Prolog semantic core parity on Linux and Android.
  • #173 — Authenticated Android ZARA/1 enrollment/reconnect/session continuity.
  • #174 — Closed Android device-capability registry and typed action adapters.
  • #175 — Android mic/wake/manual activation, streamed playback and cross-process barge-in.
  • #176 — Android local/degraded Prolog behavior without duplicating the server assistant.
  • #177 — Programmable-command Linux/Android semantic parity and provider-specific execution.
  • #178 — Automated adversarial Android lifecycle/security/resource/parity release matrix.
  • #179 — Human real-device gate: embedded Prolog, live voice, reconnect/revocation and typed actions.

Android ordering: research first. No production Android client before #133. The Android client shares semantic Prolog vocabulary and ZARA/1; it does not create a second server/LLM/memory runtime.

Target interaction

  1. Wake is detected locally on the client where available, or the user explicitly activates voice.
  2. Zara begins a cached, noncommittal acknowledgement such as “Okay” without waiting for STT, Prolog, or the LLM.
  3. Client microphone audio streams to the daemon; speech start/end and partial/final text are emitted incrementally.
  4. Model access from Prolog goes through the embedded #124 client where required, with sync plus optional bounded async/streaming operation.
  5. Input is boundedly normalized/rewritten, then Prolog handles deterministic semantic intent resolution first.
  6. Missing/invalid semantic slots produce focused clarification; later Phase 11 makes this a typed principal/conversation-scoped dialogue contract.
  7. Complete intents resolve to authorized server or device capabilities rather than arbitrary shell execution.
  8. Unresolved conversational work falls back to the agent; output streams and safe phrase-sized text is synthesized server-side.
  9. TTS audio streams to the client for playback; new user speech stops local playback immediately and cancels stale server work.
  10. Every stage is bounded, traceable by turn/session/principal ids, and covered by deterministic scripts plus explicit real-human voice gates where required.

Source audit notes

The audit covered the default branch, reachable commit history, Python runtime modules, Prolog modules, Nix packaging, CLI entrypoints, duplicate scripts, agent graph, memory, tools, STT, TTS, daemon protocol/security, and the current #131 principal-isolation PR as an assumed future architecture baseline.

The 2026-08-22 review of PR #148 found that principal-scoped persistence primitives are directionally sound but the exact candidate is not merge-ready: default daemon construction still needs explicit principal wiring into memory/backend state, durable conversation ownership needs service-path reconciliation, and the current exact-head isolation test has a RuntimeCommand-vs-RuntimeEvent fake bug. Those findings belong to #131 and must be resolved there rather than hidden in future epics.

Agent handoff

Finish the currently consumed #131 RAGE slice first. Then continue the dependency-ordered daemon queue. Do not jump to #150/#152 before #133, do not let container packaging bypass daemon security/isolation, and do not add or revive Prolog-RLM in Zara.

## Objective Create a single dependency-ordered queue for repairing Zara first, then reducing end-to-end voice latency to near-real-time and evolving the repaired runtime into a self-hosted multi-device assistant. ## Status reconciliation — 2026-08-22 Tracker state has been reconciled against the current repository/issues and the daemon RAGE queue. - Closed issues are checked below. - #17 / ZARA-016 remains **reopened** because current `master` misclassifies SWI-Prolog DNS `socket_error/2` failures as `malformed_response`. - Prolog-side model work is ordered as #124 (full Prolog LLM client) -> #122 (bounded rewriter). - **RLM work is not part of the Zara roadmap. #123 is closed as not planned. Do not add a `prolog-rlm` runtime dependency or recreate an embedded RLM path.** - #128, #129 and #130 are complete. #131 is the currently consumed daemon slice and must close its PR #148 integration/review blockers before later daemon slices advance. - Future semantic/programmable/Android work created in #150-#179 is dependency-gated behind the shared client split; do not jump to it while the daemon queue owns higher-priority work. - Container distribution epic #153 reuses existing #149 rather than duplicating it; final container capability-placement proof depends on #150/#161. - If manual testing finds another regression in a previously completed slice, reopen that issue and untick it here. ## Execution rule - Work the first open dependency-satisfied issue in declared priority/order; regressions and an already-consumed RAGE issue take priority over later roadmap work. - Never commit directly to `master`. - Create one focused branch and one draft PR per issue. - Every behavior change must add automated regression coverage. - Every issue must provide a non-interactive script command that later agents can run. - Required baseline command: `nix develop -c pytest`. - Run the issue-specific script before opening its PR. - Regressions in previously completed correctness contracts take priority over later optimization work. - For RAGE-owned work, obey `AGENTS.md` + `skills/rage/SKILL.md`: immutable start SHA/issue in the append-only Org log, adversarial research, evidence-derived design, TDD red/green, full Nix/repo gates and exact-head Actions before merge. ## Phase 1 — Boot and correctness blockers - [x] #2 — **ZARA-001:** Restore the canonical wake entrypoint and make it importable - [x] #3 — **ZARA-002:** Fix invalid default TOML and prove configuration overrides load - [x] #4 — **ZARA-003:** Stop Prolog command execution from reporting false success - [x] #5 — **ZARA-004:** Make Prolog user configuration load into the correct modules and actually override defaults - [x] #6 — **ZARA-005:** Fix dictation lifecycle state, stale PID handling, and self-stop recovery - [x] #7 — **ZARA-006:** Repair timer parsing, execution, and completion notifications - [x] #8 — **ZARA-007:** Eliminate ambiguous intent precedence and decode Python skill terms correctly - [x] #9 — **ZARA-008:** Preserve valid multi-tool histories across conversation turns ## Phase 2 — Runtime reliability and security - [x] #10 — **ZARA-009:** Make memory startup fail open and keep transient context out of persisted history - [x] #11 — **ZARA-010:** Make every configured TTS provider produce playable audio or fail cleanly - [x] #12 — **ZARA-011:** Fix dictation phrase corruption, output ordering, and cleanup - [x] #13 — **ZARA-012:** Remove shell interpolation from alerts, search, app launch, and dictation control - [x] #14 — **ZARA-013:** Confine agent file tools to explicit roots and block traversal/symlink escapes - [x] #15 — **ZARA-014:** Bound the wake audio pipeline and make active/conversation timeouts effective - [x] #16 — **ZARA-015:** Make PrologEngine initialization, queries, and lifecycle fail explicitly - [x] #17 — **ZARA-016:** Correct LLM provider protocols, authentication headers, timeouts, and session reuse — refixed 2026-08-29 (#224) - [x] #18 — **ZARA-017:** Repair todo update, recurrence, validation, and scheduling semantics - [x] #19 — **ZARA-018:** Separate immediate acknowledgement from verified command results ## Phase 3 — Packaging, branch reconciliation, and test gate - [x] #20 — **ZARA-019:** Make Nix/package entrypoints and dependency metadata reproducible - [x] #21 — **ZARA-020:** Reconcile all branches and remove divergent duplicate runtime implementations - [x] #22 — **ZARA-021:** Establish the full deterministic regression and CI script gate The original Phase 4 gate was satisfied before later work landed. The reopened ZARA-016 regression now blocks treating the provider contract as healthy until repaired and manually revalidated. ## Phase 4 — Measure and establish the real-time architecture - [x] #23 — **ZARA-022:** Instrument end-to-end voice latency and define enforceable budgets - [x] #24 — **ZARA-023:** Introduce an actor-style real-time turn coordinator with bounded mailboxes ## Phase 5 — Near-real-time duplex voice pipeline - [x] #25 — **ZARA-024:** Replace fixed audio chunks with streaming VAD, incremental STT, and fast endpointing - [x] #26 — **ZARA-025:** Play a pre-generated immediate acknowledgement without blocking the turn - [x] #27 — **ZARA-026:** Implement true barge-in and cancel stale LLM/TTS work on user speech - [ ] #28 — **ZARA-027:** Stream LLM and agent output with cancellation-safe text events - [ ] #29 — **ZARA-028:** Stream phrase-sized TTS into a persistent low-latency audio player - [ ] #30 — **ZARA-029:** Optimize warm startup and remove avoidable work from the voice critical path ## Phase 6 — Release gate - [ ] #31 — **ZARA-030:** Add the full-duplex soak, interruption, and latency release gate ## Phase 7 — Context and project skill system - [ ] #51 — **ZARA-031:** Build extensible context management and Python/Prolog skill files ## Phase 8 — Embedded Prolog LLM and bounded rewriting - [ ] #124 — Replace the minimal Prolog LLM wrapper with a full embedded async-capable client. - [ ] #122 — Add a bounded utterance rewriter before Prolog intent resolution, using #124 for model-backed rewriting. **Ordering:** #124 -> #122. #124 must also satisfy the reopened #17 provider/error contract. ## Phase 9 — Long-lived daemon, multi-user service, and Voice replacement - [ ] #127 — **EPIC:** Long-lived Zara daemon, ZeroMQ client protocol, multi-user isolation, and Voice replacement. - [x] #128 — Add long-lived `zara-server` lifecycle and a principal-aware runtime supervisor. - [x] #129 — Implement the versioned `ZARA/1` ZeroMQ ROUTER/DEALER protocol and shared daemon client SDK. - [x] #130 — Add CURVE/ZAP authentication, authorization, key lifecycle, quotas, and security audit controls. - [ ] #131 — Make conversations, context, persistence, memory and private events strictly principal-scoped. **Currently consumed; PR #148 under review/RAGE.** - [ ] #132 — Stream live voice over `ZARA/1` with client-owned audio devices and cross-process barge-in. - [ ] #133 — Migrate CLI and desktop surfaces onto the shared daemon client with reconnect/session continuity. - [ ] #134 — Prove Voice replacement, multi-user isolation, fuzz/security, soak, and latency release gates. **Daemon ordering:** #128 -> #129 -> #130 -> #131. #132 builds on protocol/isolation, #133 migrates client surfaces once those contracts exist, and #134 is the final proof gate. Remote multi-user operation is not production-safe before #131 passes adversarial tests. This phase reuses #28/#29/#30/#31, #51, #82/#83 and #124 rather than forking voice/context/runtime/provider stacks. ## Phase 10 — Reproducible self-hosted container distribution - [ ] #153 — **EPIC:** Reproducible self-hosted `zara-server` container distribution and GHCR release path. - [ ] #149 — Publish the Nix-built `zara-server` OCI image to `ghcr.io/lost-rob0t/zara`. - [ ] #180 — Harden state/config/key volumes, non-root execution and read-only-root policy. - [ ] #181 — Add deterministic container lifecycle/readiness/persistence/restart/upgrade integration gates. - [ ] #182 — Define model/cache/plugin policy and maintained Docker/Podman/Compose examples. - [ ] #183 — Final container secret/listener/provenance/capability-placement security gate. **Container ordering:** #149 -> #180 -> #181 -> #182. #183 additionally depends on semantic/device placement gate #161, so early image/distribution work may land before the semantic epic while the final deployment claim waits for the capability split. ## Phase 11 — Portable semantic intents, clarification dialogue and capability routing - [ ] #150 — **EPIC:** Portable semantic intents, multi-turn slot dialogue, and capability/service routing. - [ ] #154 — RAGE research/audit and freeze the portable `IntentFrame` contract. **Blocked until #133.** - [ ] #155 — Typed slots and principal/conversation-scoped clarification dialogue. - [ ] #156 — Adapt Prolog resolution and establish the canonical realistic command corpus. - [ ] #157 — Capability/provider reasoning and typed `ExecutionPlan`; reconcile PR #119 as prior art only. - [ ] #158 — Server `api_service` providers and semantic/server/device Prolog configuration split. - [ ] #159 — `ZARA/1` client capability advertisement and typed device-action lifecycle. - [ ] #160 — RuntimeHost-owned semantic command routing; remove duplicated LLM prompt authority. - [ ] #161 — Adversarial semantic/dialogue/provider/device reconnect/concurrency release gate. **Semantic ordering:** #154 -> #155 -> #156 -> #157 -> #158 -> #159 -> #160 -> #161. #51 remains context owner; #122 remains a bounded pre-resolver rewriter; no arbitrary remote shell/eval plane is permitted. ## Phase 12 — Principal-scoped programmable voice commands and real speech corpus - [ ] #151 — **EPIC:** Principal-scoped programmable voice commands and real speech regression corpus. - [ ] #162 — Versioned principal-scoped persistence for user-authored semantic commands. - [ ] #163 — Compile definitions into validated `IntentFrame`/capability structures. - [ ] #164 — Voice/text create/inspect/edit/delete/dry-run/undo authoring dialogue. - [ ] #165 — Parameterized commands, collision policy, revocation and atomic hot reload. - [ ] #166 — One declarative realistic voice-fixture manifest. - [ ] #167 — `zara-record-voice-fixtures` guided recorder with realistic timing/audio validation. - [ ] #168 — Checked-in real speech corpus exercising VAD/STT -> dialogue/capability regression path. - [ ] #169 — **Human live-voice gate:** create and exercise new Zara commands on real hardware. **Programmable-command ordering:** #162 -> #163 -> #164 -> #165 -> #166 -> #167 -> #168 -> #169. Automated fixtures never substitute for #169's actual human-spoken acceptance. ## Phase 13 — Native Android client with embedded portable Prolog - [ ] #152 — **EPIC:** Native Android Zara client with embedded portable Prolog and typed device capabilities. - [ ] #170 — RAGE Android Prolog/ZeroMQ/NDK/WASM/toolchain feasibility bakeoff and architecture decision. - [ ] #171 — In-repo Android project skeleton with reproducible Gradle/SDK/NDK CI. - [ ] #172 — Shared portable Prolog semantic core parity on Linux and Android. - [ ] #173 — Authenticated Android `ZARA/1` enrollment/reconnect/session continuity. - [ ] #174 — Closed Android device-capability registry and typed action adapters. - [ ] #175 — Android mic/wake/manual activation, streamed playback and cross-process barge-in. - [ ] #176 — Android local/degraded Prolog behavior without duplicating the server assistant. - [ ] #177 — Programmable-command Linux/Android semantic parity and provider-specific execution. - [ ] #178 — Automated adversarial Android lifecycle/security/resource/parity release matrix. - [ ] #179 — **Human real-device gate:** embedded Prolog, live voice, reconnect/revocation and typed actions. **Android ordering:** research first. No production Android client before #133. The Android client shares semantic Prolog vocabulary and `ZARA/1`; it does not create a second server/LLM/memory runtime. ## Target interaction 1. Wake is detected locally on the client where available, or the user explicitly activates voice. 2. Zara begins a cached, noncommittal acknowledgement such as **“Okay”** without waiting for STT, Prolog, or the LLM. 3. Client microphone audio streams to the daemon; speech start/end and partial/final text are emitted incrementally. 4. Model access from Prolog goes through the embedded #124 client where required, with sync plus optional bounded async/streaming operation. 5. Input is boundedly normalized/rewritten, then Prolog handles deterministic semantic intent resolution first. 6. Missing/invalid semantic slots produce focused clarification; later Phase 11 makes this a typed principal/conversation-scoped dialogue contract. 7. Complete intents resolve to authorized server or device capabilities rather than arbitrary shell execution. 8. Unresolved conversational work falls back to the agent; output streams and safe phrase-sized text is synthesized server-side. 9. TTS audio streams to the client for playback; new user speech stops local playback immediately and cancels stale server work. 10. Every stage is bounded, traceable by turn/session/principal ids, and covered by deterministic scripts plus explicit real-human voice gates where required. ## Source audit notes The audit covered the default branch, reachable commit history, Python runtime modules, Prolog modules, Nix packaging, CLI entrypoints, duplicate scripts, agent graph, memory, tools, STT, TTS, daemon protocol/security, and the current #131 principal-isolation PR as an assumed future architecture baseline. The 2026-08-22 review of PR #148 found that principal-scoped persistence primitives are directionally sound but the exact candidate is not merge-ready: default daemon construction still needs explicit principal wiring into memory/backend state, durable conversation ownership needs service-path reconciliation, and the current exact-head isolation test has a RuntimeCommand-vs-RuntimeEvent fake bug. Those findings belong to #131 and must be resolved there rather than hidden in future epics. ## Agent handoff Finish the currently consumed #131 RAGE slice first. Then continue the dependency-ordered daemon queue. Do not jump to #150/#152 before #133, do not let container packaging bypass daemon security/isolation, and do not add or revive Prolog-RLM in Zara.
lost-rob0t commented 2026-08-22 12:26:44 +00:00 (Migrated from github.com)

Phase 9 daemon queue progress: #128 and #129 are now complete. #129 merged in PR #142 as 1cae2e32cc40112aa13af6b8f4b7319869c72bd9 after exact-head CI #284 passed the full test suite, flake checks, packaged build, and both distro shared-mic lanes. Next ordered daemon slice is #130; #131 follows for principal-scoped isolation.

Phase 9 daemon queue progress: #128 and #129 are now complete. #129 merged in PR #142 as `1cae2e32cc40112aa13af6b8f4b7319869c72bd9` after exact-head CI #284 passed the full test suite, flake checks, packaged build, and both distro shared-mic lanes. Next ordered daemon slice is #130; #131 follows for principal-scoped isolation.
lost-rob0t commented 2026-08-22 18:41:29 +00:00 (Migrated from github.com)

Daemon roadmap update: #130 is complete via PR #145, merge 71615bcd4cdece940db433cb79ea46fe9ad085e3. Exact-head CI #329 (32591012677) was fully green on fdf6f9a1d4e51a03ab4f46b1f291cf262e416020: full regression, flake check, packaged build, Arch, Ubuntu. #131 is now the next dependency-satisfied child under epic #127 and should be consumed by the next RAGE iteration.

Daemon roadmap update: #130 is complete via PR #145, merge `71615bcd4cdece940db433cb79ea46fe9ad085e3`. Exact-head CI #329 (`32591012677`) was fully green on `fdf6f9a1d4e51a03ab4f46b1f291cf262e416020`: full regression, flake check, packaged build, Arch, Ubuntu. #131 is now the next dependency-satisfied child under epic #127 and should be consumed by the next RAGE iteration.
lost-rob0t commented 2026-08-22 23:27:34 +00:00 (Migrated from github.com)

Daemon RAGE queue update: #131 completed and merged via PR #148 at merge SHA 1a076e9921228d9d0eb18ea63225a1862f81023d. Exact final PR head bf9e35d677a159e193389371ffc57af6323a9b57 was green in CI #372 (full tests, flake checks, packaged build, Arch/Ubuntu shared-mic jobs). The next daemon child by declared order is #132, to be consumed only in the next RAGE iteration after re-reading live state.

Daemon RAGE queue update: #131 completed and merged via PR #148 at merge SHA `1a076e9921228d9d0eb18ea63225a1862f81023d`. Exact final PR head `bf9e35d677a159e193389371ffc57af6323a9b57` was green in CI #372 (full tests, flake checks, packaged build, Arch/Ubuntu shared-mic jobs). The next daemon child by declared order is #132, to be consumed only in the next RAGE iteration after re-reading live state.
lost-rob0t commented 2026-08-23 16:10:33 +00:00 (Migrated from github.com)

Roadmap reconciliation: daemon voice slice #132 is complete. PR #185 merged at 4c6018b30ff4be2e168551f0cf256f8333bc58af after exact-head CI #449 passed the full repo/Nix/package/shared-mic gate. The next dependency-satisfied daemon slice is #133; it should be consumed only in a fresh RAGE iteration from the then-current master SHA. #134 remains the final daemon Voice replacement proof gate.

Roadmap reconciliation: daemon voice slice #132 is complete. PR #185 merged at `4c6018b30ff4be2e168551f0cf256f8333bc58af` after exact-head CI #449 passed the full repo/Nix/package/shared-mic gate. The next dependency-satisfied daemon slice is #133; it should be consumed only in a fresh RAGE iteration from the then-current `master` SHA. #134 remains the final daemon Voice replacement proof gate.
lost-rob0t commented 2026-08-24 02:11:19 +00:00 (Migrated from github.com)

Roadmap reconciliation: daemon child #133 is complete. PR #188 merged at 487996d56467f5227c5c6b1178333fbf1ee6d8a0 after exact-head CI #484 passed full repo/Nix/package/shared-mic gates; issue #133 closed completed. Live issue state also has #128-#132 completed, so #134 is now the next dependency-satisfied daemon child despite the older Phase 9 checklist prose still naming #131 as consumed.

Control-plane note for the next architecture iteration: Zara actively uses the canonical RAGE workflow under rage/, but no durable ADADR/Auto-RAGE mode selection currently exists. #134 must not begin architecture by silently choosing Auto-RAGE; persist the selected mode first.

Closeout evidence is being recorded in PR #189. zara remains the client executable; zara-server remains the daemon/service; no Prolog-RLM.

Roadmap reconciliation: daemon child #133 is complete. PR #188 merged at `487996d56467f5227c5c6b1178333fbf1ee6d8a0` after exact-head CI #484 passed full repo/Nix/package/shared-mic gates; issue #133 closed completed. Live issue state also has #128-#132 completed, so #134 is now the next dependency-satisfied daemon child despite the older Phase 9 checklist prose still naming #131 as consumed. Control-plane note for the next architecture iteration: Zara actively uses the canonical RAGE workflow under `rage/`, but no durable ADADR/Auto-RAGE mode selection currently exists. #134 must not begin architecture by silently choosing Auto-RAGE; persist the selected mode first. Closeout evidence is being recorded in PR #189. `zara` remains the client executable; `zara-server` remains the daemon/service; no Prolog-RLM.
lost-rob0t commented 2026-08-24 04:57:49 +00:00 (Migrated from github.com)

Roadmap live-state reconciliation from Auto-RAGE #134 (2026-08-24):

  • #131 is completed.
  • #132 is reopened: release research found that current daemon voice ingress does not expose the partial/final STT events required by #132's own Acceptance contract.
  • #133 is completed.
  • #134 remains consumed on draft PR #190 but its Iteration 2 ADADR decision is REJECT realization until blockers resolve.
  • New #191 blocks #134 and owns current authenticated ZARA/1 tool lifecycle / explicit approval interaction.
  • The existing provider/voice release chain #17 -> #28 -> #29 -> #30 -> #31 remains active and is reused by #134.

This comment corrects the stale Phase 9 status prose without erasing historical roadmap text. No later semantic/Android/container work should use #134 as a passed daemon-release gate.

Roadmap live-state reconciliation from Auto-RAGE #134 (2026-08-24): - #131 is completed. - #132 is **reopened**: release research found that current daemon voice ingress does not expose the partial/final STT events required by #132's own Acceptance contract. - #133 is completed. - #134 remains consumed on draft PR #190 but its Iteration 2 ADADR decision is **REJECT realization until blockers resolve**. - New #191 blocks #134 and owns current authenticated ZARA/1 tool lifecycle / explicit approval interaction. - The existing provider/voice release chain #17 -> #28 -> #29 -> #30 -> #31 remains active and is reused by #134. This comment corrects the stale Phase 9 status prose without erasing historical roadmap text. No later semantic/Android/container work should use #134 as a passed daemon-release gate.
lost-rob0t commented 2026-08-24 06:25:44 +00:00 (Migrated from github.com)

Roadmap extension created: #194 (Samsung Galaxy system assistant / native integrations / SmartThings), with children #195-#206. It is dependency-gated through #152/#170-#179 and the current daemon/semantic/programmable-command owners; it must not bypass the active #132/#134 blockers. Final delivery is #206: exact-head green GitHub Release APK plus real Samsung acceptance evidence.

Roadmap extension created: #194 (Samsung Galaxy system assistant / native integrations / SmartThings), with children #195-#206. It is dependency-gated through #152/#170-#179 and the current daemon/semantic/programmable-command owners; it must not bypass the active #132/#134 blockers. Final delivery is #206: exact-head green GitHub Release APK plus real Samsung acceptance evidence.
lost-rob0t commented 2026-08-24 13:33:10 +00:00 (Migrated from github.com)

P0 queue reconciliation: runtime approval prerequisite #209 completed through PR #211, merge ddc30c737ee7eff030dd424949a490f5c6cf52dd; exact-head CI run 32730453589 passed all three required jobs. Post-merge Org evidence landed via PR #212 at 55f4f76b2906a05f289f3720e339702d5139aa6d.

#191 is now the next dependency-satisfied P0. It owns carrying the real runtime tool/approval lifecycle through authenticated ZARA/1. #134 remains blocked on #191 and the existing provider/voice release chain; no later semantic, Android, or container release claim may bypass those gates.

P0 queue reconciliation: runtime approval prerequisite #209 completed through PR #211, merge `ddc30c737ee7eff030dd424949a490f5c6cf52dd`; exact-head CI run `32730453589` passed all three required jobs. Post-merge Org evidence landed via PR #212 at `55f4f76b2906a05f289f3720e339702d5139aa6d`. #191 is now the next dependency-satisfied P0. It owns carrying the real runtime tool/approval lifecycle through authenticated ZARA/1. #134 remains blocked on #191 and the existing provider/voice release chain; no later semantic, Android, or container release claim may bypass those gates.
lost-rob0t commented 2026-08-24 16:33:21 +00:00 (Migrated from github.com)

RAGE queue reconciliation (2026-08-24): authenticated tool-approval blocker #191 completed through PR #213. Implementation candidate c6c4e3080e7d3fb126824eae9dffaaa3dfa15e00 passed exact-head CI run 32748728581 (main test/flake/package job plus both shared-mic jobs) and merged as 51356e3cee216c3fb7f51aae308463b7e8f15c55; post-merge Org evidence landed through PR #214 as 8dc7448e3d130e1ad4600e27621e72d5cd772b53 after exact-head CI run 32750447665 passed all three jobs.

#134 is no longer blocked by #191, but remains blocked by the declared provider/voice release chain. Live issue state has #131, #132, #133 and #191 closed. The next dependency-satisfied P0 is #124, which explicitly owns satisfying reopened #17 and is the prerequisite for #122; no later semantic, Android, container, or final #134 release claim should bypass that chain.

RAGE queue reconciliation (2026-08-24): authenticated tool-approval blocker #191 completed through PR #213. Implementation candidate `c6c4e3080e7d3fb126824eae9dffaaa3dfa15e00` passed exact-head CI run `32748728581` (main test/flake/package job plus both shared-mic jobs) and merged as `51356e3cee216c3fb7f51aae308463b7e8f15c55`; post-merge Org evidence landed through PR #214 as `8dc7448e3d130e1ad4600e27621e72d5cd772b53` after exact-head CI run `32750447665` passed all three jobs. #134 is no longer blocked by #191, but remains blocked by the declared provider/voice release chain. Live issue state has #131, #132, #133 and #191 closed. The next dependency-satisfied P0 is #124, which explicitly owns satisfying reopened #17 and is the prerequisite for #122; no later semantic, Android, container, or final #134 release claim should bypass that chain.
Owner

Tracker reconciliation — 2026-09-07

This comment supersedes stale status/architecture prose in the roadmap body where it conflicts with current master or actual GitHub issue state. Do not close #1 yet: worker #623 still consumes this roadmap as an ordering surface.

Confirmed state drift

  • #28 is closed/completed (the Phase 5 checkbox in this body is stale).
  • #124 is closed/not planned. Its proposed Zara-owned embedded Prolog LLM architecture was intentionally replaced by merged PR #233.
  • #131 is closed/completed.
  • #132 is closed/completed after its reopened transport gaps were resolved.
  • #133 is closed/completed.
  • #17 is currently closed/completed after merged #224; treat future regressions by reopening the owning contract rather than copying it into a new issue.

Current model/RLM decision

The roadmap body's blanket no Prolog-RLM instruction is obsolete. Merged PR #233 pins Prolog-RLM and uses bounded direct mode for optional rewrite work. The current invariant is narrower and stronger:

  • model/RLM output is proposal-only;
  • Prolog/typed runtime policy remains command/action authority;
  • RLM use stays pinned/versioned, bounded, cancellable, and capability-constrained;
  • no arbitrary RLM tool/side-effect authority.

#122 has been updated in place to the current #233 architecture rather than closed: the basic adapter exists, but the stronger structural-validation, ambiguity, literal-slot-preservation and fail-closed acceptance criteria remain unimplemented.

New architecture queue

#624 is the umbrella Zara Cognitive Kernel / intent OS epic. Child epics #625-#635 cover conversational transactions, causal undo, hypothetical world branches, conversational policy programming, speculative intent branching, privacy-preserving ambient perception, epistemic memory/truth maintenance, action escrow, model-independent graceful degradation, behavior debugging/replay, and a cognitive actor society.

These are later architecture work. They do not supersede unfinished existing release gates such as #29/#31/#51/#122/#127/#134/#150/#151/#152/#153/#194/#215/#323/#622 unless an issue is separately proven implemented or its complete remaining acceptance is explicitly migrated.

Closure rule for cleanup

Age is not evidence of completion. Close an old issue only when one of these is proven against current master/tracker evidence:

  1. all meaningful acceptance criteria are implemented and regression-covered;
  2. the architecture was explicitly abandoned and the old implementation direction would now be harmful; or
  3. a newer issue fully preserves every still-needed behavior, with the successor linked.

If only the implementation mechanism evolved while acceptance remains unimplemented, update/evolve the old issue instead of closing it.

## Tracker reconciliation — 2026-09-07 **This comment supersedes stale status/architecture prose in the roadmap body where it conflicts with current `master` or actual GitHub issue state. Do not close #1 yet: worker #623 still consumes this roadmap as an ordering surface.** ### Confirmed state drift - #28 is **closed/completed** (the Phase 5 checkbox in this body is stale). - #124 is **closed/not planned**. Its proposed Zara-owned embedded Prolog LLM architecture was intentionally replaced by merged PR #233. - #131 is **closed/completed**. - #132 is **closed/completed** after its reopened transport gaps were resolved. - #133 is **closed/completed**. - #17 is currently closed/completed after merged #224; treat future regressions by reopening the owning contract rather than copying it into a new issue. ### Current model/RLM decision The roadmap body's blanket `no Prolog-RLM` instruction is obsolete. Merged PR #233 pins Prolog-RLM and uses bounded direct mode for optional rewrite work. The current invariant is narrower and stronger: - model/RLM output is proposal-only; - Prolog/typed runtime policy remains command/action authority; - RLM use stays pinned/versioned, bounded, cancellable, and capability-constrained; - no arbitrary RLM tool/side-effect authority. #122 has been updated in place to the current #233 architecture rather than closed: the basic adapter exists, but the stronger structural-validation, ambiguity, literal-slot-preservation and fail-closed acceptance criteria remain unimplemented. ### New architecture queue #624 is the umbrella **Zara Cognitive Kernel / intent OS** epic. Child epics #625-#635 cover conversational transactions, causal undo, hypothetical world branches, conversational policy programming, speculative intent branching, privacy-preserving ambient perception, epistemic memory/truth maintenance, action escrow, model-independent graceful degradation, behavior debugging/replay, and a cognitive actor society. These are later architecture work. They **do not supersede unfinished existing release gates** such as #29/#31/#51/#122/#127/#134/#150/#151/#152/#153/#194/#215/#323/#622 unless an issue is separately proven implemented or its complete remaining acceptance is explicitly migrated. ### Closure rule for cleanup Age is not evidence of completion. Close an old issue only when one of these is proven against current master/tracker evidence: 1. all meaningful acceptance criteria are implemented and regression-covered; 2. the architecture was explicitly abandoned and the old implementation direction would now be harmful; or 3. a newer issue fully preserves every still-needed behavior, with the successor linked. If only the implementation mechanism evolved while acceptance remains unimplemented, update/evolve the old issue instead of closing it.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#1
No description provided.