Winter maintenance contracts get billed on operations performed — plow passes, salting runs, distance covered — and today that record is often a driver’s memory and a paper log. Traceige is what the record looks like when a device did the remembering.
The chain, end to end
A simulated device plays one imperfect snowplow shift over the real protocol a Teltonika unit speaks — Codec 8, TCP, CRC, ACK. A Go acquisition server decodes it, spools it durably to disk, and forwards it. A Symfony and PostGIS platform ingests it idempotently. A nightly engine turns the raw points into a Sortie de Service Hivernal report — the artifact the whole chain exists to produce.
simulator (FMC650) → Go acquisition (decode, spool, forward) → Symfony + PostGIS (idempotent ingest) → SH report
Imperfect on purpose
The simulated shift is deliberately flawed, because a real one will be too. A batch gets sent twice — the ingest absorbs the duplicate. Three minutes of data arrive late, timestamps in the past — the report refines instead of duplicating on replay. A GPS fix lands 2.2km off the road — an implied-speed filter rejects it, because no plow does 1500 km/h. Two minutes of jitter at the depot contribute zero billable distance.
Kill the platform mid-shift and the acquisition server keeps acknowledging the device, spooling to disk. Restart it, and the backlog drains with zero loss and full deduplication — the guarantee demonstrated as behavior, not claimed as a bullet point.
Honest about what it isn’t
The presentation site that fronts this — bilingual, English and French, built to static files — inherits one rule from the platform: never document an aspiration as a fact. Every number on the page comes from the demo’s own golden report, injected at build time, and the build fails if the two ever drift apart. The site’s status section says plainly what’s live, what’s being built, and what’s deliberately not claimed yet — weather, road condition, SLAs, analytics.
Status
A complete vertical slice, not a production deployment: no multi-tenancy, no auth, no UI beyond the report view. What exists is the hard part — the ingest guarantees a billing record actually needs.