Events are part of the transaction
An event is recorded inside the same transaction as the action that raised it. If the action rolls back the event is never published, so there is no notification for something that did not happen.
HomePlatform
The platform
Corva is not a set of screens over a database. Between the interface and your business records sits a core that decides what may happen, performs it as a single atomic transaction, and records it permanently. This page is how that works.
The command envelope
A screen does not update your records. It asks the core for an outcome, and the core walks the same envelope every time, whether the action is receiving a pallet or writing off a balance.
The envelope is the reason the system cannot drift. Validation cannot be skipped by a different caller, because there is no different caller. The ledger cannot fall behind the state, because both are written inside one transaction that either commits or disappears. And the audit record cannot be forgotten, because the same transaction that changes the record writes it.
If a rule the action depends on is not satisfied (a permission, a status, available stock, an open accounting period), nothing is written at all. A half-finished business action is not a state Corva can be left in.
One named transaction
Any step that fails ends the transaction. There is no partial outcome and no compensating clean-up job, because nothing was written.
No side doors
The rule that makes the rest possible: transactional data has exactly one write path. Master and reference data (customers, items, locations) is the one bounded exception, and it is audited too.
The audit trail
The audit trail is a core layer rather than a feature switch. It is written by the same transaction as the change it describes, which is why it cannot disagree with the record.
What gets captured
Each entry carries the actor, the authority they acted under, the time, and the record it touched.
Ask what happened to a unit and the answer is the whole story: when it was received and at what cost, where it moved, which order reserved it, which carton it was packed in, which shipment took it out of the door, and what it was invoiced on. Ask who changed a price or released a hold, and the answer names them.
There are no hard deletes. A mistake is corrected by a recorded reversal or an explicit correction document that leaves the original visible. Nothing quietly disappears, which is exactly what makes the trail worth trusting when a customer, an auditor or a regulator asks.
The event-driven core
Operations do not exist in isolation: a shipment should notify, a low stock level should flag, an invoice should reach a customer. Corva raises those as business events.
An event is recorded inside the same transaction as the action that raised it. If the action rolls back the event is never published, so there is no notification for something that did not happen.
Events are handed to their reactions only after the transaction commits, and delivery is idempotent: a retried reaction does not double-post, double-ship or double-notify.
Every record has a defined lifecycle. A status moves because an action moved it along a permitted path, not because someone selected a different value from a list.
The seven operational modules walk the same envelope end to end, receiving through receivables.
hello@corvaerp.com