42 lines
1.5 KiB
Markdown
42 lines
1.5 KiB
Markdown
# MVP Acceptance Checklist
|
|
|
|
## API
|
|
|
|
- [x] `GET /v1/health` returns version/build/uptime and active sprite pack.
|
|
- [x] `GET /v1/state` requires bearer token.
|
|
- [x] `POST /v1/command` requires bearer token and returns `202` for valid command.
|
|
- [x] `POST /v1/commands` accepts batch in-order.
|
|
- [x] malformed JSON returns `400`, server remains alive.
|
|
|
|
## Command Pipeline
|
|
|
|
- [x] duplicate command IDs are ignored within dedupe window.
|
|
- [x] `SetState` updates state and default animation mapping.
|
|
- [x] transient state with `ttl_ms` returns to durable state.
|
|
- [x] `SetTransform` persists x/y/scale.
|
|
- [x] `SetFlags` persists always-on-top/visible and ignores deprecated click-through.
|
|
|
|
## Config
|
|
|
|
- [x] first run bootstraps `config.toml`.
|
|
- [x] `auth_token` generated and reused across restarts.
|
|
|
|
## Sprite
|
|
|
|
- [x] selected sprite pack loads when present.
|
|
- [x] missing selected pack falls back to `default`.
|
|
- [x] runtime `SetSpritePack` successfully switches pack without restart.
|
|
- [x] failed runtime `SetSpritePack` keeps current visuals and reports error in state snapshot.
|
|
|
|
## Platform
|
|
|
|
- [x] capability flags are exposed in `/v1/health`.
|
|
- [x] non-supported platform operations do not crash the process.
|
|
|
|
## Evidence
|
|
|
|
- `cargo test --workspace` passes.
|
|
- API auth coverage exists in `crates/sprimo-api/src/lib.rs` tests.
|
|
- Config bootstrap and roundtrip coverage exists in `crates/sprimo-config/src/lib.rs` tests.
|
|
- Sprite fallback coverage exists in `crates/sprimo-sprite/src/lib.rs` tests.
|