Alpha console (demo)
Independent project · Open alpha · Synthetic demo data · No customers yet · Runs only in your browser
A demo lab that runs in this page. Add a result or correct one with a reason, and every fingerprint, link and signature is checked again. Then simulate an edit, a rewrite or a deletion and see what still shows it.
Demo only Everything here is synthetic, and the page makes no network calls. Records stay in this tab; the demo key that signs them is kept in this browser, so later visits reuse it until you reset the demo lab. It identifies the browser, not a person. Anchoring is simulated. Not validated. No electronic signatures yet. Please do not enter real results.
Demo lab
Simulated · demo dataNot checked yet · the demo lab starts when this page’s script runs in your browser
Signatures: the demo key in this browser · its key ID shows here once the script runs
Records
The demo lab needs JavaScript: every fingerprint, link and signature here is computed in your browser. Without it, the same eight-record sequence, with every fingerprint and link, is prerendered on Check a record, and the method is set out below.
Starting the demo lab…
Instruments
Four demo instruments: HPLC-02 (HPLC), LCMS-01 (LC-MS), PH-01 (bench pH meter) and TEMP-01 (room temperature monitor). No instrument is connected; here results are typed in or simulated.
Anchor
Anchoring is an upcoming feature. It will keep the head of the record history (the link of the newest record) outside the lab, at a known time. The head depends on every record before it, so if anyone later rewrites the history, even signing it again, a replay from 64 zeros no longer reaches the anchored fingerprint.
Nothing here writes to a network, and there is no shared registry yet. This console makes no network calls: Anchor (simulated) keeps the head in this tab. Records 1 to 8 start anchored, with the same fingerprint as the site’s demo sequence.
Privacy Anchoring will put only a fingerprint on a network, never the values (IQC-RD-01 §2.6, Privacy on public networks).
Method
What is sealed
Each record seals five fields, in this order, joined by a vertical bar and encoded as UTF-8, with no Unicode normalization. No field may hold the bar or a control character; a record whose fields do fails its fingerprint check.
instrumentId|sensorType|value|unit|capturedAtFor example
HPLC-02|hplc|1508811|counts|2026-09-14T08:47:50Z. This is the alpha app’s payload for an imported HPLC peak, where the instrument field is the app’s internal instrument number, and the same construction as on the site. Injection, sample and retention time are shown as context and are not sealed in the alpha; sealing sample and method metadata is upcoming.Fingerprint
rn = SHA-256 of the payload, as 64 lowercase hex characters. One changed character gives a completely different fingerprint.
Link
hn = SHA-256 of the text hn−1 (hex), then rn (hex), then n (decimal). The first record links to 64 zeros, h0. The head is the link of the newest record; it depends on every record before it.
Signature
ECDSA P-256 with SHA-256 over the 32 bytes of rn, stored as IEEE P1363 hex in its low-S form; the high-S twin of a signature is refused. The key pair is generated in this browser. Its private half cannot be exported; the pair is kept in this browser’s storage for this site, so later visits reuse it, and Reset deletes it and makes a new one. Bundles exported from this browser share a key ID until then. The key ID is the first 32 hex characters of the SHA-256 of the public key (SPKI), as on the site. Every record here is signed, so a record with no signature fails.
- Key ID
- made when the script runs
- Public key (raw, hex)
- made when the script runs
- Kept
- made when the script runs
It shows which browser signed, not who. Demo signatures: in the alpha, one server key signs imported rows; per-analyst signatures are upcoming.
Checks
After every change, your browser recomputes each record’s fingerprint from its fields and checks its signature over that fingerprint. It recomputes each record’s link from the previous link the record stores, and compares it with the link the record stores, which the next record carries. A changed value fails its own fingerprint, signature and link, so only the link into the next record breaks; later records still pass their own checks. The anchor check replays the whole history from 64 zeros and compares the link at the anchored record with the anchored fingerprint. These are the rules of the site’s Check a record page.
Corrections
A correction is a new record with the corrected value and the original capture time. The original stays as sealed. The reason, the “correction of #k” reference and the time the correction was made sit beside the seal, not inside it, because the payload has five fields; the site’s pages do the same. The reason needs at least three words. The alpha app has no corrections yet.
What a pass shows
A pass shows the record is unchanged since it was sealed in this tab. It does not show that the result was right, who entered it, or that the instrument was in calibration; that stays with your method, system suitability and second-person review. Nor does it show that no record was removed: each signature covers only its own record’s fingerprint, so deleting a record and relinking the rest needs no key, and only an anchor taken earlier shows it.