Some checks failed
Demo images / Build & push demo images (push) Failing after 1m40s
pine-openwakeword manifest (wyoming-openwakeword 2.1.0, :10400, /custom model dir for the future Yo Archy model). Pine 1.3.0: launcher page gains a live node-status card fed by /api/pine/status via a same-origin nginx proxy, and copy for the new intents / Claude fallback / mesh announcements. Catalogs, app-session config, drift ids regenerated; release catalog embeds 56 manifests (unsigned until the ceremony). Framework PT test plan in docs/. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4.9 KiB
4.9 KiB
Framework PT test plan — Pine voice epic (pre-release gate)
Target node: framework-pt (100.65.115.109, LAN 192.168.1.249). Run after
BOTH agents' work is merged, with the dev binary sideloaded and the signed
catalog (pine 1.3.0 + pine-openwakeword) published. Every ❑ must pass before
the release ritual starts. Items marked (user) need a human in the room.
A. Deploy / prerequisites
- ❑ A1 Dev binary sideloaded,
archipelagoservice active, no crash-loop in journal. - ❑ A2 nginx self-heal added
location /api/pine/statusto every server block;nginx -tpasses; nginx reloaded. - ❑ A3 Signed catalog with pine 1.3.0 + pine-openwakeword live at the raw URL; node refreshed it (hourly sweep or "Check for updates").
B. /api/pine/status endpoint
- ❑ B1 Public tier through nginx (
curl http://127.0.0.1/api/pine/status): version, uptime, bitcoin height/sync_percent/peers, mesh peers.lightningnull,mesh_messageabsent. - ❑ B2 Wrong bearer token → still public-only (no balances). Correct token (from
/var/lib/archipelago/secrets/pine-status-token) → lightning balances + latest mesh message present. - ❑ B3 Reachable from inside the HA container via
host.containers.internal:80. - ❑ B4 Token file is 0600, owned by the service user.
C. Stack / openwakeword container
- ❑ C1 Reconcile installs
pine-openwakeword(wyoming-openwakeword 2.1.0), healthy on :10400. - ❑ C2 Existing pine-whisper / pine-piper / pine were ADOPTED, not recreated — model data dirs untouched.
- ❑ C3
archipelagoservice restart → all four pine containers come back (crash-recovery stack spec). - ❑ C4 UI: openwakeword listed under Services (no extra store card); Pine card shows 1.3.0.
D. Home Assistant seeding
- ❑ D1 configuration.yaml: legacy hand-staged block (bitcoind :18332 + plaintext RPC creds) fully replaced by the bounded token-based block.
- ❑ D2
custom_sentences/en/archy.yamlcarries all four intents. - ❑ D3
.storage/core.config_entries: wyoming entry for openwakeword (:10400) +anthropicentry (Claude, conversation + ai_task subentries). - ❑ D4 Pipeline:
conversation_engine = conversation.claude_conversation,prefer_local_intents: true. - ❑ D5 automations.yaml:
archy_mesh_announceseeded. - ❑ D6 HA restarts clean — no setup errors for anthropic / wyoming / rest / intent_script in
podman logs homeassistant. - ❑ D7 Sensors report real values: archy_block_height, archy_bitcoin_sync, archy_bitcoin_peers, archy_mesh_peers, archy_lightning_balance (or clean unavailable if LND absent), archy_mesh_message.
E. Voice / intents (API level first, then live speaker)
- ❑ E1 Exact phrase "what's the block height" → answered by the LOCAL intent (correct height, no Anthropic API call in HA logs).
- ❑ E2 Fuzzy phrase (e.g. "how tall is the chain right now") → Claude routes to the ArchyBlockHeight tool; answer contains the real height.
- ❑ E3 "how many peers", "is the node synced", "what's my lightning balance" → correct spoken-length answers.
- ❑ E4 Off-topic question → Claude answers, 1–2 sentences, no markdown.
- ❑ E5 (user) Live speaker: "Hey Jarvis, what's the block height" → audible correct answer.
- ❑ E6 Mesh announce: new received mesh text (or manual
assist_satellite.announceif no radio) → speaker announces sender + text; no announce storm on HA restart.
F. Pine launcher page (1.3.0)
- ❑ F1 Page on :10380→:10381 shows the live node card (version, uptime, block, sync, peers) within ~5s.
- ❑ F2
/node-statusproxy works (pine nginx resolves host.containers.internal at startup — container must not crash-loop). - ❑ F3 "Connect Pine to WiFi" provisioner still intact (no JS errors on load).
G. Cleanup / regression sweep
- ❑ G1 Both stray socat 18332 forwarders killed; sensors still work via the endpoint.
- ❑ G2 No bitcoind RPC credentials anywhere in HA config.
- ❑ G3 Pre-existing HA function intact: whisper/piper entities, PineVoice satellite pairing, other integrations.
- ❑ G4 nginx regressions:
/health,/bitcoin-status,/api/app-catalog,/proxy/lnd/all still proxied post-patch. - ❑ G5 (user) Mobile Home: wallet card sits directly under My Apps; desktop layout unchanged.
- ❑ G6 Other agent's changes re-verified after merge (their own checklist).
H. Production-readiness (release ritual gate)
- ❑ H1
cargo testworkspace green; frontend builds; drift check--release --strictgreen. - ❑ H2
tests/lifecycle/run-gate.shre-run ON .228 (stack membership changed → lifecycle gate rule applies). - ❑ H3 Catalog regenerated → signed (ceremony) → published via gitea-ai; verified at the raw URL.
- ❑ H4 Changelog (layman-readable) +
scripts/sync-whats-new.py+ version bump; release ritual per v1.7.110 notes (push main via gitea-ai BEFORE publish; sign manifest AFTER create-release). - ❑ H5 No secrets in any commit; frontend tarball flat + APK policy per release notes.