Erilog
Offline-first reconciliation

Offline EVIDENCE Reconciliationfrom Real Evidenceready to Verify

Erilog records distributions offline, preserves every accepted event when devices reconnect, and exports a signed audit bundle that anyone can independently verify.

( from conflict to evidence )

Erilog offline event queue, duplicate-entitlement exception, and signed seed-42 audit bundle
Seed-42 evidence journey
After syncsigned bundle verified

4

distributed

96

remaining

1

exception

duplicate_entitlement · HH-0422 equal peers · neither erased

Built around evidence, not connectivity

01

Append-only events

Physical handouts cannot be silently deleted

02

Deterministic reconciliation

Same events, any order, same result

03

Offline-first recording

No network required for handout confirmation

04

Independently verifiable bundles

Static page, no backend, no trust required

( the real problem )

Two honest devices can produce one uncomfortable truth.

Two operators serve the same entitlement while disconnected. Neither device knows about the other. Both records describe a physical event that already happened.

A

Device Alpha

Distribution point east

Offline
HH-040Recorded
HH-042Recorded

No network. Cannot know what Bravo recorded.

B

Device Bravo

Distribution point west

Offline
HH-041Recorded
HH-042Recorded

No network. Cannot know what Alpha recorded.

HH-042 appears in both histories

Erilog preserves both events and raises an explicit exception. Neither event is deleted. Neither is marked as the duplicate.

( How evidence survives )

Three stages. One history.

STAGE 01

Record offline

Field operators confirm physical handouts on their device with no network dependency. Each event gets a hash-chained sequence number and is stored in durable local storage.

InputMission package
BoundaryLocal device
OutputAppend-only event
Recorded on this device — pending sync
STAGE 02

Reconcile without erasing

When devices reconnect, every event is accepted exactly once. Duplicate entitlement use becomes an explicit exception — both records remain as peers. No winner is selected.

InputAccepted events
BoundaryDeterministic engine
OutputExplicit exception
4 distributed · 96 remaining · 1 exception
STAGE 03

Verify independently

Export a signed audit bundle. Open the static verifier offline. Drag in the bundle. It either passes or names the exact check that failed.

InputSigned ZIP bundle
BoundaryStatic verifier
OutputNamed checks
PASS — all checks passed

( One continuous evidence journey )

Simple in the field. Explicit after sync.

Operators record what physically happened. Coordinators see the resulting stock position and every exception—without either view pretending to know more than the evidence supports.

Marketing previewseed-42

Device Alpha

50 kits allocated

Offline-ready

Entitlement

HH-042

Quantity

1 × Emergency kit
Confirm physical handout

● Recorded locally — pending sync

Coordinator evidence

after sync

4

handed out

96

remaining

1

exception

duplicate_entitlementunresolved

HH-042 · 2 peer events

No winner selected. Both records remain inspectable.

( Proof, not promises )

Change one byte. The check fails by name.

The verifier is designed to recompute reconciliation from the exported events rather than trusting the summary it receives.

UNTOUCHED BUNDLEvalid
manifest complete
signature valid against pinned key
event chain integrity
reconciliation matches summary

PASS all checks passed

QUANTITY 1 → 2tampered
manifest complete
FILE_CHECKSUM_MISMATCH

file: events.json

observed e08f20b8c474…

recomputation mismatch

FAIL integrity violation

01

Events are append-only

Accepted physical events cannot be deleted via any API or admin operation

02

Replays cannot create another handout

Same event ID accepted exactly once; retries return already_seen

03

Merge order cannot change the result

Property-tested: all permutations produce byte-equivalent output

The honest limit: Erilog cannot determine which physical operator was "right." It guarantees that conflicting records remain visible and inspectable instead of being silently discarded.

Open verifier

( Built with Kiro )

Specified before it was shipped.

Requirements were checked for contradictions before implementation. Invariants became tests before they became features.

Inspect the real spec
01requirements.md33 EARS requirements
02design.mdtrust boundaries
03property tests8 properties
04implementationautomated checks

( Questions )

Answered plainly.

The shortest honest answers to how Erilog records, reconciles, and verifies evidence.

Yes. Once a mission package is provisioned to a device, handout recording works entirely without network. Events are stored locally and synced when connectivity returns.

No. When two devices record against the same entitlement, both events are preserved as equal peers in a duplicate exception. Resolution is a separate decision that appends context — it never deletes evidence.

The bundle proves internal consistency: the signature matches the manifest, checksums match the files, and recomputing reconciliation from the events produces the declared summary. It does not prove who created the bundle — that requires trust in the signing key.

No. The hackathon release uses only opaque salted token hashes. No names, biometrics, phone numbers, or precise locations appear in events or exports.

Yes. The README provides a fresh-clone setup path. Docker Compose starts PostgreSQL, and all domain logic runs in Node.js with no paid dependencies.

( Try the evidence journey )

See what survives when two offline histories disagree.

Run the seeded conflict, inspect the preserved peer events, and verify the resulting audit bundle independently.