- The phone in a dead zone
- The technician’s module is built for a phone that loses signal at the machine. Every mutation — a step tick, a reading, a photo, a line stop, a safety tag — is queued in a browser outbox and replayed on reconnect, and the tray shows pending AND failed, so it can never say “synced” while a rejected write sits in the store. Reads are warmed too, and deliberately bounded: the tasklist, each task’s procedure with its step text and safety flags, the machine’s recent EWOs, and the parts issued against them down to store, rack and bin.
- Excel that agrees with the screen
- thirteen registers export as a real server-side workbook, and the export is handed the same query the screen just fetched with — the search text, the filter chips and the sort travel verbatim, so an export cannot quietly become a second, laxer API. It refuses exactly what the list refuses. The workbook speaks the reader’s own language, headers and filename included. Three documents print: the monthly summary, the machine ledger and the EWO one-pager.
- The WCM agent — it checks, and it cannot write
- The agent watches your own events and writes findings that appear next to the document they concern. It cannot write a domain record, close a gate or change a number, and a human may dismiss any finding with a reason that lands on an immutable log. Every finding renders the inputs the check read and the threshold it compared them against, so the argument is with the data. five deterministic checks ship, and whether one runs at all is your data: no active row, no evaluation. A judgment layer can additionally read a five-Why chain and say whether it reaches a systemic root cause or restates the symptom — on its own queue, so a model call never sits in front of the deterministic lane.
- Many plants on one deployment, isolated for real
- A cell is one self-contained regional deployment — one database, one bus, one identity realm, one gateway — and cells share nothing at all, not even a config field in which one could name another. Inside a cell, plants share the database and nothing else: there is no default tenant anywhere, every tenant-stamped table has row-level security FORCED rather than merely enabled, and the application role is created unable to bypass it — the cell refuses to boot if it could. Exactly five named background workers may cross plants, and adding one more takes four deliberate edits in four files that must agree.
- Condition monitoring, and a board that earns its colours
- Your gateway publishes on your topics in your dialect, and this system invents nothing from that traffic: an unrecognised key is quarantined with the key kept so somebody can map it, units are never converted, a retired tag’s reading is refused, and a replay after an outage is a counted duplicate rather than a second alarm. The health board reads all of it and one thing besides — it is composed from four signals rather than from sensors, because on a real plant almost none of the colour comes from instrumentation. Plant → shop → line → machine, worst first, refreshing itself because a wallboard is not reloaded by hand.
- English, Hindi and Marathi
- The whole application is translated three ways — 5,438 interface strings in each, held identical by a guard in the pipeline, so a new English string cannot ship without its Hindi and Marathi counterparts. The choice is stored per reader and sets the document language, and it reaches the exports: the workbook a Marathi reader downloads has Marathi headers and a Marathi filename.
- Approval chains anything can hang on
- One engine, configured by you: versioned chain definitions where an edit is a new version and old versions are never mutated, one approval instance per subject snapshotting the version it opened against, and step decisions that are immutable once taken and carry a server-computed signature. Steps sharing a sequence advance together as a parallel group; any rejection closes the instance. Purchase requests, kaizen gates, torque-parameter changes, tool swaps and quality-observation closures all ride it without the engine knowing their domains.
- The controlled-document register
- The register an auditor asks for second: what is controlled, at which revision, approved by whom, and what it is attached to. Governance owns the register while the governed content stays with the service that owns it, so a procedure is registered here and lives in the maintenance ledger. The stamps printed on the report library’s cards are read from this register rather than typed, so the library and the printed footer cannot disagree.
- A plant’s own facts arrive as workbooks
- Org units, machines, people and masters arrive in bulk as workbooks, with a preview before the commit and an honest account of what landed — a bad row fails loudly and the counts reconcile. The set-up screen is a checklist read from the plant’s own data rather than a wizard with a cursor, so it stays truthful long after the first week. The role vocabulary arrives with the plant, which breaks the circle where no role meant no administrator meant no way to create a role.
- Escalation and one inbox
- Work that ages escalates on your own matrix, configured on a screen rather than in a deployment. The person who raised a line stop is told when the loop closes on it. One inbox address works for everybody and shows each person what is theirs, rather than needing two deep links for two audiences.
- Every list honours your filter, or refuses it by name
- A register either answers the query you gave it or refuses it and says which parameter it would not take. It never returns the whole register while looking like a filtered view — and the export is held to the same rule, on every journey run, across work, KPI, breakdown, cost, early-equipment and the safety tag register.
22 services behind it, walked end to end by 26 journeys that run against a live stack rather than a mock. Counted from the repository at publish time, not typed here — every figure on this site is re-derived before the page is built. Verified against the running application on 11 August 2026.