# Device Plane baseline test matrix | Boundary | Required proof | | --- | --- | | Restricted identity | IMEI accepts exactly 15 decimal digits internally | | Browser projection | Safe discovery view contains only a masked identifier | | Identifier hashing | HMAC digest is deterministic and does not reveal input | | Secret boundary | Secret-like or raw-payload keys are rejected recursively | | Command boundary | Discovery contract rejects command-shaped input | | Framing bound | B2 evidence inspection rejects empty and oversized buffers | | Framing honesty | Unverified B2 bytes return `official_framing_required` | | No identifier guessing | Embedded digit sequences are never returned as IMEI | | Model profile | Four server routes and INTERNAL identification are recorded | | Gelios preservation | Gelios is a parallel route, not a dependency or failover | | Core database secret | Production Compose uses a file-backed password, not a plaintext environment value | | Core health | Database is ready while discovery ingest and command transport remain disabled | | Gateway health | Public ingress, TCP listener and command transport remain disabled | | Compose exposure | Only loopback health ports `18120/18121` are published; raw `9921` is not | | Application service scope | `files.txt` selects only affected Core/Gateway services with `--no-deps` | | Database preservation | Ordinary application artifacts never select `device-postgres` | | Database bootstrap | Exact descriptor selects PostgreSQL only when both container and volume are absent | | Bootstrap rollback | Candidate container may be removed; named volume is never removed | | Rollback predecessor | Backup records actual pre-apply services; Compose presence cannot invent Core/Gateway | | Failed-001 evidence | Recovery requires exact failed archive, journal and backup digests | | Partial source | Recovery accepts only DB-bootstrap source plus the observed healthy foundation runtime | | Recovery mutation | Source is published without build, restart, recreate or service removal | | Recovery rollback | Failed acceptance restores source only and leaves runtime unchanged | | Artifact policy | `.env`, secrets, runtime state, tests, logs and `node_modules` are excluded | | Artifact reproducibility | Repeated builds for the same patch id are byte-identical | | Runner compatibility | Existing canonical Platform registry tests remain green |