# 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 | | Core/Edge trust direction | Core initiates the only private channel; VPS-initiated Synology connections are forbidden | | Core channel authentication | TLS 1.3 mutual authentication; unknown/revoked Edge identity fails closed | | Core channel bounds | Versioned envelopes, per-session and aggregate memory limits, keepalive and reconnect bounds | | Pilot SLO | Zero pre-Core ACK/loss, p95/p99 acceptance latency, reconnect/dead-peer ceilings and no premature availability claim | | Tracker acknowledgement | PACKAGE ACK is emitted only after bounded Core acceptance | | Superseded transport freeze | Old VPS backhaul/relay/enrollment builders fail closed outside explicit test-only reconstruction | | Superseded runner freeze | VPS runner rejects old phases and Synology runner rejects a prebuilt old enrollment artifact | | Runtime preservation in Phase 0 | VPS, Synology, DNS, B2 routes, Gelios, Engine and Foundry remain unchanged |