Skip to main content

First five tickets

PHI-001: Repositories, CI/CD and deployment skeleton​

Scope: four repositories (platform, UI, docs, devops); Cargo workspace; multi-stage Dockerfiles; migrations; GitHub Actions; Kubernetes manifests; Argo CD application.

Done when:

  • cargo fmt, clippy -D warnings and cargo test run in CI, with a PostGIS service for the migration test.
  • UI CI runs typecheck, tests, build and the container build; docs CI builds the site.
  • Images for platform, UI and docs build from their Dockerfiles.
  • Namespace phimi, PostgreSQL database with PostGIS, Secrets, migration Job, ingest/API/UI/docs workloads, probes and metrics in phimi-devops.
  • CI pushes images and bumps digests automatically (today: operator workflow, as for aidj).

PHI-002: phimi-protocol​

Scope: frame codec, escaping, checksum, BCD, header, all V53 uplinks and the downlinks Phimi sends.

Done when:

  • Every frame in V53-Protocol-Data-Example_V1.1.pdf decodes, with field-level assertions (coordinates, time, battery, satellites, Wi-Fi, cells, batch entries).
  • Every platform reply Phimi encodes for those exchanges is byte-identical to the vendor's (8100, 8001, 8900, 8300).
  • A stream of all frames split at 1, 2, 3, 7 and 64 bytes yields every message.
  • Bad checksums, wrong lengths, invalid escapes, oversized frames and encrypted bodies are rejected; unknown message ids are kept with their raw body.

PHI-003: V53 simulator​

Scope: a virtual tracker that registers, authenticates with the issued code, replays registration, positions, batch and heartbeat under its own terminal id, and answers commands.

Done when:

  • phimi-simulator --devices 4 --hold 60 drives four trackers against a server.
  • Integration tests run the simulator against the real listener: full handshake, duplicate flagging, authentication required, allowlist refusal, command round trip, reconnection replacing the old socket.

PHI-004: Deploy phimi-ingest on Kubernetes​

Scope: public TCP endpoint, diagnostics and metrics.

Done when:

  • Deployment with one replica, Recreate, non-root, probes on the internal port.
  • NodePort 30888 for trackers; ClusterIP for the internal HTTP port.
  • Allowlist and auth secret from Kubernetes Secrets.
  • Router forwards public TCP 8888 to the node's 30888 (manual, outside the cluster).
  • From outside the LAN, nc -vz 85.195.196.223 8888 connects, and the simulator completes a handshake through the public address.

PHI-005: Connect the first real tracker​

Scope: redirect one V53 to Phimi and receive its first GPS position.

Done when: the first-tracker runbook is completed: 0x0100, 0x0102, 0x0200 and heartbeats are seen from the real device, the clock offset and charging byte are confirmed, and the device can be sent back to iGPS123. Storing that first position in PostgreSQL depends on phase 3 persistence.