Skip to content

Commit bfa16f3

Browse files
committed
docs: add voice gateway release checklist
1 parent 8364b3c commit bfa16f3

1 file changed

Lines changed: 236 additions & 0 deletions

File tree

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,236 @@
1+
# Hestia Voice Gateway Release Checklist — 2026-05
2+
3+
Status: PRs opened, integration snapshot passing
4+
Created: 2026-05-06T23:46:54Z
5+
6+
This release coordinates the P0 Hestia voice-first mobile gateway stabilization across the shell, bridge, voice client, backend, and `hestia-mobile` integration repo.
7+
8+
## Component PRs
9+
10+
| Component | Branch | PR | Latest SHA | Status |
11+
| --- | --- | --- | --- | --- |
12+
| `hestia-shell` | `feat/hestia-voice-gateway` | [Code4me2/hestia-shell#1](https://github.com/Code4me2/hestia-shell/pull/1) | `44e52aa0` | Open |
13+
| `hestia-ai-bridge` | `feat/hestia-voice-gateway` | [Code4me2/hestia-ai-bridge#1](https://github.com/Code4me2/hestia-ai-bridge/pull/1) | `986afda` | Open |
14+
| `unmute-streaming-client` | `feat/hestia-voice-gateway` | [Code4me2/unmute-streaming-client#9](https://github.com/Code4me2/unmute-streaming-client/pull/9) | `9023ebf` | Open |
15+
| `hestia-mobile` | `main` | N/A | `8364b3c` before this checklist | Landed |
16+
17+
## Known-good integration snapshot
18+
19+
Recorded in [`docs/compatibility-matrix.md`](../compatibility-matrix.md).
20+
21+
| Component | SHA / state |
22+
| --- | --- |
23+
| `hestia-mobile` | `8364b3c` |
24+
| `hestia-shell` | `44e52aa0` |
25+
| `hestia-ai-bridge` | `986afda` |
26+
| `unmute-streaming-client` | `9023ebf` |
27+
| Backend node | `tiny-emerson` |
28+
| Probe result | `pass` |
29+
30+
Final structured probe command:
31+
32+
```bash
33+
cd /home/purism/projects/ai-phone-review/hestia-mobile
34+
python3 scripts/probe-hestia-mobile-json.py --config mobile-stack.json --pretty
35+
```
36+
37+
Final checks were all passing:
38+
39+
```text
40+
ai_socket: pass
41+
assistant_socket: pass
42+
bridge: pass
43+
bridge_service: pass
44+
orchestrator: pass
45+
orchestrator_models: pass
46+
unmute: pass
47+
unmute_realtime: pass
48+
voice_service: pass
49+
overall: pass
50+
```
51+
52+
## Acceptance gates
53+
54+
See [`docs/acceptance-gates.md`](../acceptance-gates.md) for canonical definitions.
55+
56+
- [x] Gate A — manifest validity
57+
- `mobile-stack.json` parsed as JSON.
58+
- `scripts/validate-mobile-stack.py --config mobile-stack.json` passed.
59+
- [x] Gate B — local repo drift
60+
- component branches matched `mobile-stack.json` expectations.
61+
- worktrees were clean at final status check.
62+
- [x] Gate C — live health
63+
- final structured probe passed all live checks.
64+
- backend `tiny-emerson` was healthy after restarting the orchestrator service.
65+
- [x] Gate D — shell assistant event bus
66+
- assistant socket smoke test received normalized assistant events.
67+
- [x] Gate E — release snapshot
68+
- passing snapshot recorded in `docs/compatibility-matrix.md`.
69+
- component PRs opened and linked here.
70+
71+
## Validation already completed
72+
73+
### `hestia-shell`
74+
75+
- Subagent spec review passed.
76+
- Subagent quality review approved.
77+
- Assistant event-bus Unix socket smoke test passed.
78+
- Validated normalized event sequence included:
79+
- `assistant.connected`
80+
- `assistant.state=listening`
81+
- `assistant.transcript.user_delta`
82+
- `assistant.tool_call`
83+
- `assistant.state=speaking`
84+
- call availability false/true frames
85+
- `assistant.state=idle`
86+
87+
### `hestia-ai-bridge`
88+
89+
- Subagent spec review passed after review fixes.
90+
- Subagent quality review approved after review fixes.
91+
- Local service was restarted and verified active.
92+
- `/health` returned backward-compatible fields plus sanitized nested orchestrator metadata.
93+
- `orchestrator_online=true` after backend recovery.
94+
95+
### `unmute-streaming-client`
96+
97+
- `python3 -m pytest -q` passed: `12 passed`.
98+
- Python compile checks passed.
99+
- Subagent spec review passed after review fixes.
100+
- Subagent quality review approved after review fixes.
101+
- Installed user unit verified:
102+
103+
```text
104+
Restart=on-failure
105+
RestartPreventExitStatus=78
106+
ActiveState=active
107+
```
108+
109+
### `hestia-mobile`
110+
111+
- Manifest validation passed.
112+
- Dry-run probe passed.
113+
- Python compile passed for probe/validation scripts.
114+
- Shell syntax check passed for scripts.
115+
- Drift checker passed after cleanup.
116+
- Final live structured probe passed all checks.
117+
118+
## Backend recovery note
119+
120+
The first final live probe found the backend orchestrator unavailable:
121+
122+
```text
123+
agentic-flow-orchestrator.service: failed
124+
Unmute llm_up=false
125+
bridge orchestrator_online=false
126+
```
127+
128+
Recovery performed on `tiny-emerson`:
129+
130+
```bash
131+
systemctl --user reset-failed agentic-flow-orchestrator.service
132+
systemctl --user start agentic-flow-orchestrator.service
133+
```
134+
135+
After waiting for readiness:
136+
137+
```text
138+
agentic-flow-orchestrator.service: active
139+
Unmute /v1/health: llm_up=true, ok=true
140+
```
141+
142+
The local bridge was then started/restarted so its health state reflected the recovered backend.
143+
144+
## Rollback / recovery
145+
146+
### If the shell PR causes UI/input-region issues
147+
148+
1. Revert or roll back `hestia-shell` to the previous known branch/commit.
149+
2. Restart or reload the shell session as appropriate.
150+
3. Re-run the assistant event-bus smoke test and live `hestia-mobile` probe.
151+
152+
### If bridge health regresses
153+
154+
Use the runbook:
155+
156+
```text
157+
docs/runbooks/recover-bridge-orchestrator-offline.md
158+
```
159+
160+
Quick checks:
161+
162+
```bash
163+
systemctl --user status hestia-ai-bridge.service
164+
curl -fsS http://127.0.0.1:8765/health
165+
python3 scripts/probe-hestia-mobile-json.py --config mobile-stack.json --pretty
166+
```
167+
168+
### If voice service reconnect behavior regresses
169+
170+
Use the runbook:
171+
172+
```text
173+
docs/runbooks/recover-phone-voice-service.md
174+
```
175+
176+
Quick checks:
177+
178+
```bash
179+
systemctl --user show hestia-unmute-voice.service -p ActiveState -p Restart -p RestartPreventExitStatus
180+
journalctl --user -u hestia-unmute-voice.service -n 100 --no-pager
181+
```
182+
183+
### If backend LLM readiness regresses
184+
185+
Use the runbook:
186+
187+
```text
188+
docs/runbooks/recover-unmute-llm-down.md
189+
```
190+
191+
Quick checks on `tiny-emerson`:
192+
193+
```bash
194+
systemctl --user status agentic-flow-orchestrator.service
195+
curl -fsS http://127.0.0.1:8000/health
196+
curl -fsS http://127.0.0.1/v1/health
197+
```
198+
199+
## Manual validation still recommended before user-facing release
200+
201+
The P0 probe and protocol path are passing. Before a user-facing release, run a visual phone validation pass and record notes/screenshots if possible:
202+
203+
- [ ] Orb appears in expected centered position.
204+
- [ ] Tap/click opens the chat drawer.
205+
- [ ] Orb state visually changes for idle/listening/thinking/speaking/offline/error.
206+
- [ ] Transcript preview does not obscure core UI.
207+
- [ ] Input region matches visible orb bounds.
208+
- [ ] Phone-call paused state is clear.
209+
- [ ] Mic streaming and TTS pause during active calls.
210+
211+
Suggested destination for evidence:
212+
213+
```text
214+
docs/validation/2026-05-hestia-voice-gateway/
215+
```
216+
217+
## Merge checklist
218+
219+
- [ ] Confirm each component PR diff is expected.
220+
- [ ] Confirm component CI, if present, is green.
221+
- [ ] Merge `hestia-ai-bridge` PR.
222+
- [ ] Merge `unmute-streaming-client` PR.
223+
- [ ] Merge `hestia-shell` PR.
224+
- [ ] Update `mobile-stack.json` expected branches/SHAs if component branches are merged to `main`.
225+
- [ ] Re-run the final live structured probe.
226+
- [ ] Add a post-merge row to `docs/compatibility-matrix.md`.
227+
- [ ] Decide whether to tag a release in `hestia-mobile`.
228+
229+
## Follow-up P1 work
230+
231+
- Real visual/UI validation on device.
232+
- End-to-end phone-call suppression hardening.
233+
- Persistent local probe/history automation.
234+
- Backend orchestrator durability investigation for previous `status=143` exit.
235+
- Assistant UX polish: transcript preview, tool status, compact cards, constrained visual verbs.
236+
- Packaging/image work only after install/runtime flow stabilizes.

0 commit comments

Comments
 (0)