Omnel · the public log

A line for every step, and each one holds the last.

A protocol registered, a draw, a report, a mark that stands, a mark withdrawn: each is a line with the digest of what it says, the hash of the line before, and its own hash. The last hash of each day is anchored outside us on OpenTimestamps. Download it, recompute it, and you need nobody's word — not ours.

Download (JSON)
Your browser is recomputing the chain…
#WhenKindSaysHash
38 Oct 2026protocolselione-proof · Selione — proof run (not a customer) · n=36 · first_person · reporte965bba91f5f4069…
48 Oct 2026draw41 items drawn, seed revealed · reportdad0e22936531dd5…
58 Oct 2026reportselione-proof · 34 judged · bound 22% · does not hold · report6fc11da2555efc4d…
68 Oct 2026protocolselione-proof · Selione — proof run (not a customer) · n=36 · first_person · reportfe13498dac43131b…
78 Oct 2026draw41 items drawn, seed revealed · report32fac69e2881aa7b…
88 Oct 2026reportselione-proof · 34 judged · bound 11% · holds · report191baed645de409c…
98 Oct 2026markselione-proof · measured, until 6 Jan 2027 · reportc71b07f0b7625b72…
108 Oct 2026protocoltacit-01e2c179d2a9 · Selione — Tacit proof run (not a customer) · n=35 · first_person · report71815ef4ec92074d…
118 Oct 2026draw40 items drawn, seed revealed · report6ad8fbba806fe4f7…
128 Oct 2026reporttacit-01e2c179d2a9 · 28 judged · bound 8% · does not hold · withheld · report7d7c83ac2549c684…
138 Oct 2026protocoltacit-ee998665e765 · Selione — Tacit proof run (not a customer) · n=47 · first_person · report275ac216e0e9fcfc…
148 Oct 2026draw52 items drawn, seed revealed · reporte36871d3dbf48a31…
158 Oct 2026reporttacit-ee998665e765 · 43 judged · bound 5% · holds · reportb347d0fe5560125d…
168 Oct 2026marktacit-ee998665e765 · measured, until 6 Jan 2027 · report9008323f91843e13…
178 Oct 2026policy889bd77a192945ca…
188 Oct 2026statementf3e1f750feccae2c…
198 Oct 2026reviewer7f8b32cd4f4ff8e5…
208 Oct 2026decision4da1d1ddcc292eeb…
218 Oct 2026golden99180f249fdec620…
228 Oct 2026policyc21bb20992cf95c9…
238 Oct 2026statement71f67c27555dfa7f…
248 Oct 2026reviewer727e51a3dbea9933…
258 Oct 2026decisiondec8c0443d7449f6…
268 Oct 2026goldenfea22990db6bc244…
278 Oct 2026policy7584c02550b5a2a4…
288 Oct 2026statement2cfb5f9c70ed8386…
298 Oct 2026reviewercafdd4f3fa3b4579…
308 Oct 2026decision6a3f3485a96c9d75…
318 Oct 2026golden0882eae8057c02fb…

Daily roots, anchored

DayLast lineRoot (the day's last hash)OpenTimestamps
2026-10-10310882eae8057c02fb38fb05723066a3bae0532d3c1bfe5995bcf6168b5b1e05c0proof (.ots)
2026-10-09310882eae8057c02fb38fb05723066a3bae0532d3c1bfe5995bcf6168b5b1e05c0proof (.ots)
2026-10-088191baed645de409c41facea070d90a9018515b591d089bf2d3778e43e933b25cproof (.ots)

Recomputing it yourself

For each line: digest = SHA-256 of the payload as canonical JSON (keys sorted at every depth, compact); entry_hash = SHA-256 of prev_hash + ':' + digest + ':' + kind + ':' + at (ISO 8601 UTC with milliseconds). The first line's prev_hash is 64 zeros. A day's last entry_hash is the root anchored on OpenTimestamps; verify the proof with the public `ots` tool.

The roots are at /api/lumen/v1/register/roots. A protocol's signed report, with its own anchor, is at /api/lumen/v1/register/<id>; the verifier checks its signature in your browser.