nexus/.planning/STATE.md

74 lines
2.7 KiB
Markdown

---
gsd_state_version: 1.0
milestone: v1.6
milestone_name: Voice Pipeline + Minimal Message Bridge
status: executing
stopped_at: Completed 36-01-PLAN.md — VoicePipelineService
last_updated: "2026-04-04T01:30:21.693Z"
last_activity: 2026-04-04
progress:
total_phases: 4
completed_phases: 0
total_plans: 3
completed_plans: 2
percent: 0
---
# Project State
## Project Reference
See: .planning/PROJECT.md (updated 2026-04-03)
**Core value:** A fresh onboard asks for ONE thing (root directory), auto-creates PM + Engineer agents, and drops you in the dashboard.
**Current focus:** Phase 36 — voice-pipeline-foundation
## Current Position
Phase: 36 (voice-pipeline-foundation) — EXECUTING
Plan: 3 of 3
Status: Ready to execute
Last activity: 2026-04-04
Progress: [░░░░░░░░░░] 0%
## Performance Metrics
**Velocity:**
- Total plans completed: 0 (v1.6)
- Average duration: -
- Total execution time: 0 hours
## Accumulated Context
### Decisions
Decisions are logged in PROJECT.md Key Decisions table.
Key constraints for v1.6:
- voicePipelineService is the keystone — Phase 37 and Phase 38 both depend on it; build Phase 36 first
- Telegram bridge uses long polling (grammY `bot.start()`) — no public HTTPS required on Mac Mini
- Audio transcoding via ffmpeg-static ^5.2.0 — NOT archived fluent-ffmpeg (archived May 2025)
- Voice mode flag must survive every pipeline layer: client → Express → message persistence → agent codec
- COOP/COEP headers required for @ricky0123/vad-react SharedArrayBuffer (add to Express static middleware)
- Phase 37 and Phase 38 are independent once Phase 36 ships; sequential ordering for single-developer delivery
- Telegram bridge must stay under 500 lines (TGRAM-06 is a hard constraint)
- [Phase 36]: Export nexusSettingsSchema for direct testing, use nexusSettingsSchema.parse({}) for consistent defaults in catch blocks
- [Phase 36]: Used manual execFileAsync wrapper instead of promisify(execFileCb) to avoid util.promisify.custom symbol incompatibility with vitest mocks
### Pending Todos
None yet.
### Blockers/Concerns
- [v1.5 carryover] smart-whisper Apple Silicon acceleration unverified on Mac Mini M4 — fall back to `tiny.en` if `base.en` acceleration not confirmed
- [v1.6] grammY session management approach not yet chosen: lightweight `Map<chatId, sessionId>` vs. grammY conversation plugin — decide at Phase 38 planning
- [v1.6] Dual output prompt reliability on 7B models is ~90% — Approach B fallback (post-process markdown strip) must be implemented as safety net, not optional
## Session Continuity
Last session: 2026-04-04T01:30:21.691Z
Stopped at: Completed 36-01-PLAN.md — VoicePipelineService
Resume file: None