Skip to main content

notbefore

Consumer CLI for the public qrng-beacon-log — an hourly, commit-then-reveal, host-attested randomness log anchored to drand quicknet, RFC 3161 timestamps, Rekor and OpenTimestamps. Spec: NOTBEFORE.md (draft 0.2) in https://github.com/docdailey/qrng-beacon-log.

What it proves: the 32-byte attested value (V) of hour (N) was fixed before drand round (R) and not selected after (R) existed. What it does not prove: that the bits are quantum, secret, certified, or unique. This is not a certification of anything; see CLAIMS.md in the log repository.

pip install notbefore            # PyPI, 0.2.0; needs git and openssl on PATH; add [anchors] for OpenTimestamps proofs
notbefore verify 41              # commit 40 + reveal 41: signatures (pinned keys), drand BLS offline, RFC 3161, Rekor anchors
notbefore value 41               # V, only if verify passes
notbefore seed 41 --purpose clinic-qi-roster-2026-09-12       # S = SHA256("notbefore/derive/v1" || V || purpose)
notbefore shuffle 41 --purpose split:iris-csv:v3 rows.txt      # deterministic shuffle of the lines of rows.txt
notbefore split 41 --purpose split:iris-csv:v3 --frac 0.8 rows.txt

Streams, for scripting. Payloads go to stdout only; the verification transcript goes to stderr. So V=$(notbefore value 45) is the 64-hex value and nothing else, and notbefore shuffle … > out.txt is clean. -q silences the PASS/INFO lines; FAIL/WARN lines and a non-zero exit still report a bad pair. --json gives a machine-readable result on stdout.

seed, shuffle and split write a transcript JSON (notbefore-<seq>-<purpose>.json) — the engineering artifact that lets anyone reproduce the result from the public log.

Trust model. The verifier, the signing keys, the drand group key, the Rekor log key, the freetsa CA and the expected host configuration are vendored inside this package, pinned at a named commit of the log repository (notbefore --version prints it). The CLI executes only those files; the log is read as data. Updating the verifier means updating the package — deliberately.

Two publication surfaces. The log is read from git (a cached clone of the repository, or --log-dir); https://notbefore.net serves the same repository statically. Once checkpoints are enabled, verify also fetches https://notbefore.net/checkpoint and requires it to be the same head as git's, or an append-only relative of it — two different heads under the log's key is a split between surfaces and fails loudly (--checkpoint-url overrides).

Eligible pairs start at 0020/0021 (0026/0027 preferred, execution enforced). verify 19 fails by design (ERR-007). Pulses 0001–0041 carry retroactive anchors (2026-09-12 12:47 UTC); from 0042 anchors are contemporaneous.

MIT. Data in the log: CC BY 4.0.

Releasing (operators): RELEASING.md — every change to the verifier or keys needs a new package, and the flow there is the only way one gets made.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

notbefore-0.3.1.tar.gz (57.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

notbefore-0.3.1-py3-none-any.whl (67.9 kB view details)

Uploaded Python 3

File details

Details for the file notbefore-0.3.1.tar.gz.

File metadata

  • Download URL: notbefore-0.3.1.tar.gz
  • Upload date:
  • Size: 57.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for notbefore-0.3.1.tar.gz
Algorithm Hash digest
SHA256 6fccde6b243ece395fa9a6f8fe794e5802a1db3f4c78cc9d4d2fbe253bf422a0
MD5 f98d88ca2d496da47484adc2aaba21a2
BLAKE2b-256 8d74c73b0b077abffa28c150f793ae1e4252c833c80b4adba2328f1e1c071164

See more details on using hashes here.

Provenance

The following attestation bundles were made for notbefore-0.3.1.tar.gz:

Publisher: cli.yml on docdailey/qrng-beacon-log

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file notbefore-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: notbefore-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 67.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for notbefore-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 468121be20b32455522b5594296cb10e3cc483b44d6070394941f1f18c007f7f
MD5 a096c85ce236fb44ffe1ab4677571a45
BLAKE2b-256 cfb38ed4b82058450fb026a6bffb2e7a0d4bfb642110af1013c662af354d5081

See more details on using hashes here.

Provenance

The following attestation bundles were made for notbefore-0.3.1-py3-none-any.whl:

Publisher: cli.yml on docdailey/qrng-beacon-log

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.14.1

2 files

0.14.0

2 files

0.13.1

2 files

0.13.0

2 files

0.12.1

2 files

0.12.0

2 files

0.11.0

2 files

0.10.0

2 files

0.9.0

2 files

0.8.1

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

This release

0.3.1 This release

2 files

0.3.0

2 files

0.2.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page