Skip to content

Latest commit

 

History

History
42 lines (40 loc) · 9.5 KB

File metadata and controls

42 lines (40 loc) · 9.5 KB

speechd Implementation Ledger

Statuses: TODO, IN_PROGRESS, BLOCKED, DONE, FAILED.

ID Task Status Dependencies Validation Evidence/result Commit Notes
A01 Inspect repository and environment DONE - shell inspection Empty directory; no Git; Swift 6.3.3; Apple Silicon macOS pending Baseline captured
A02 Initialize repository metadata and ignore rules DONE A01 git init; inspect ignore rules Git initialized; .gitignore authored aa07f88 Initial commit contains baseline docs and ignore rules
A03 Create required planning and ledger documents DONE A02 file review TASK.md, PLAN.md, LEDGER.md authored aa07f88 Mandatory pre-code documentation committed
A04 Commit initial project documentation DONE A02,A03 git commit; clean tree PASS: root commit aa07f88 contains .gitignore, TASK.md, PLAN.md, and LEDGER.md aa07f88 Required baseline complete
F01 Choose native runtime and package architecture DONE A04 package manifest/build SwiftPM 6.0; Foundation + Network.framework; loopback HTTP/WebSocket; actor-isolated core; FluidAudio v0.15.6 working tree Cohere runs in-process; S1 remains local
F02 Implement configuration and environment overrides DONE F01 unit tests TOML/env overrides, validation, loopback-only bind, FluidAudio model path, S1 helper args and timeout working tree swift test passed
F03 Implement bounded audio storage and PCM validation DONE F01 unit/integration tests 16-bit PCM WAV/raw decoding, stereo downmix, bounded secure temp accumulator 039e6d7 Generated fixture and malformed-input tests pass
F04 Implement VAD and session lifecycle DONE F03 unit/integration tests RMS VAD, trim/padding, streaming speech events, commit/cancel/disconnect cleanup 039e6d7 Batch-on-commit; no fake partials
F05 Implement authentication token lifecycle DONE F01 auth tests SHA-256 token digests, random bearer tokens, create/list/revoke/rotate, constant-time auth 039e6d7 Token file mode 600; parent directory 700
F06 Implement metrics and readiness state DONE F01 status/health tests Actor metrics, model readiness, queue/latency/temp storage status, Prometheus text working tree /readyz fails closed without the Cohere bundle or S1 helper
I01 Research Cohere runtime and model licensing DONE F01 source review; docs Official Cohere upstream and FluidAudio CoreML conversion reviewed; published CoreML model card is CC-BY-NC-4.0; S1 official prompt/license findings working tree Sources and licensing decision in ARCHITECTURE.md
I02 Implement recognizer abstraction and Cohere adapter DONE I01,F03 adapter tests; native smoke SpeechRecognizer protocol and in-process FluidAudio q8 INT8 Cohere adapter using CoreML/ANE working tree No alternate ASR fallback
I03 Implement S1 cleanup adapter and routing DONE I01 routing/prompt tests Exact S1 system/control prompt and local helper adapter; English routing/force override 039e6d7 cohere-raw disables cleanup
I04 Implement bounded inference queue DONE I02,I03 queue/concurrency tests Bounded actor queue, queue-full response, single active inference 039e6d7 Queue timing is returned/recorded
I05 Implement model lifecycle and warmup DONE I02,I03,I04 readiness/native smoke FluidAudio Cohere loads once; S1 helper loads once; readiness is fail-closed; graceful unload; native raw and long-form smoke passed working tree GPU excluded with .cpuAndNeuralEngine to avoid the .all MPS heap
I06 Implement long-recording resource behavior DONE I02,F03,F04 bounds/cleanup/native smoke 600 s/57.6 MB bounds and disk-backed accumulation implemented; FluidAudio transcribeLong covers >35 s with five-second overlap working tree 36 s native long-form smoke passed
I07 Deliver native Cohere and S1 runtime plus licensed weights BLOCKED I01,I02,I03 pinned model install and generated-speech acceptance FluidAudio Cohere q8 assets are installed and exercised; S1 GGUF/helper remains installed separately working tree Combined task remains blocked until S1 also meets the native listener-free runtime criterion
H01 Implement health readiness and status endpoints DONE F06,I05 HTTP smoke tests /healthz, /readyz, /api/v1/status, /metrics; readiness returns 503 without the Cohere bundle or S1 helper working tree Loopback-only
H02 Implement native transcription endpoint DONE H01,I04,I06 integration/native smoke Rich JSON request/response with PCM16 base64, timing/model fields, and FluidAudio long-form handling working tree Long-form segmentation is delegated to FluidAudio
H03 Implement OpenAI-compatible transcription endpoint DONE H01,H02 multipart compatibility test /v1/audio/transcriptions supports file, model, language; cohere-s1/raw 039e6d7 16-bit PCM WAV only for multipart
H04 Implement models and OpenAPI endpoints DONE H01,H02,H03 schema validation /v1/models, /openapi.json, /docs; embedded JSON covers routes 039e6d7 Root YAML is source contract
H05 Implement WebSocket audio streaming protocol DONE F04,I04,H01 socket integration tests Masked PCM frames, ordered output, VAD lifecycle, commit/cancel/error, bounded frames 039e6d7 Batch-on-commit; no partial transcript
H06 Implement AsyncAPI streaming contract DONE H05 contract review asyncapi.yaml documents binary audio, controls, lifecycle events, bearer auth 039e6d7 speech.stopped and commit options included
O01 Implement Tailscale Serve configuration tooling DONE H01,H04,H05 dry-run; installed CLI check Serve loopback command, JSON status check, Funnel refusal, reset path 039e6d7 No Funnel
O02 Implement launchd installation and removal DONE H01 dry-run/local install Install/uninstall scripts with mode controls, config/model preservation, and 600 s bounded health/readiness startup gate working tree Production install fails if Cohere assets or S1 helper are unavailable
O03 Implement speechd-admin token CLI DONE H02,H03,H05 CLI smoke tests Public server admin binary provides token create/list/revoke/rotate; private macOS client owns health/status/models/transcribe/stream 039e6d7 Server install remains self-contained; client code is separate
O04 Implement privacy and secure temporary files DONE F03,F04,H02,H05 cleanup/log tests 700/600 temp permissions, cleanup on all session exits, no content logs 039e6d7 Debug content flag not used to log content
O05 Implement benchmark command and results DONE I05,H02,H05 actual benchmark runs Repeatable 5/15/60 s harness with native FluidAudio and S1 service measurements working tree Legacy Python Cohere bridge removed; model assets stay outside Git
V01 Create unit and integration test coverage DONE F01-H06 swift test 17 tests passed (16 behavior tests plus package-load smoke) including socket HTTP/WebSocket, JSONL helper lifecycle, bounds, lifecycle expiry, generated speech fixture, and auth-before-upload b6a44ec All passing
V02 Create generated audio integration fixture DONE V01 fixture execution Tests/Fixtures/speech-fixture.wav generated from macOS say and ffmpeg as 16 kHz mono PCM16 speech audio b6a44ec Fixture is used for behavioral routing tests and benchmark inputs; no exact transcript assertion
V03 Validate OpenAPI and AsyncAPI contracts DONE H04,H06 scripts/validate-contracts.sh; parser/endpoint comparison YAML contracts and embedded OpenAPI/AsyncAPI paths, methods, schema shapes, version, and bearer/channel structure match 95b15ac Run again at final acceptance
V04 Run secure tailnet validation or document blocker DONE O01,O02,H03,H05 real tailnet or evidence Temporary Tailscale Serve validation passed previously; current script also validates explicit HTTPS/backend port mapping and refuses Funnel in dry-run 0bd1382,95b15ac Live tailnet state was reset; rerun is external operational evidence, not committed state
V05 Perform explicit security self-review DONE O01-O04,V01-V04 SECURITY.md review Review complete; no content logging, shell helper execution, public bind, or token plaintext storage found; security scanner found no dangerous patterns 0bd1382 Remaining production risk is external helper/model provenance and verification
V06 Complete README architecture and security docs DONE all implementation doc review README, ARCHITECTURE, SECURITY, BENCHMARKS, API contracts, config example, and .env.example cover build, operation, privacy, Tailnet, and helper contracts f34e10d No model weights, credentials, or private tailnet state committed
P01 Split and publish server/client repositories DONE V06,V07 GitHub visibility and tree audit ComicBit/speechd is public and ComicBit/speechd-client-mac is private; both publish only their intended main-branch files 249e5a7 / 8bf005f Public tree excludes private client, build products, model weights, and credentials
V07 Run final acceptance checks and clean Git tree DONE V01-V06,I07 release/build/tests/status/native smoke Release build, 17 tests, contract validation, live health/readiness, private-client model/transcription smoke, and authenticated 5/15/60 s benchmark pass 249e5a7 S1 helper and model weights remain explicit deployment-time prerequisites and are not bundled