- Document
- IQC-CK-01
- Revision
- Draft 6
- Updated
- 2026-10-07
- Status
- Independent project · Open alpha · Synthetic demo data · No customers yet
- Use
- Informational draft. Not a controlled document; not a regulatory assessment or a validation statement.
Check a record
1Change a value and watch the checks
Change any sealed field of the eight synthetic records. As you type, your browser recomputes the fingerprint, checks the signature and the link into the next record, and replays the whole history against the anchored fingerprint.
Sequence SEQ-0914-02
HPLC-02 · Assay of Product 200 mg tablets · records 1 to 8
Simulated · demo data
Checked at build: 8 of 8 records pass · simulated anchor matches. Live checking needs JavaScript; the fields stay read-only without it.
Checked in your browser: {ok} of {n} records passChecked in your browser: {ok} of {n} records pass the fingerprint and link checks{c} changed1 signature fails{s} signatures faillink {l} brokenlinks {l} brokensimulated anchor matchessimulated anchor matches records 1 to {m}simulated anchor does not matchrecord {a} not yet anchoredrecords {a} to {b} not yet anchoredsignatures not checked here checks passchecks failRecord {n}, correction of record {k}: fingerprint matchesfingerprint does not matchsignature validsignature failssignature not checkednot signedsignature missinglink to the next record intactlink to the next record broken checks passchangedchanged (separator in a field)signature failssignature missinglink {l} brokenstored link does not matchfingerprint and link pass · signature not checkedfingerprint and link pass · not signedrelinkedcorrection of #{k}corrected by #{c}not yet anchoredCorrection of #{k} MatchNo matchInvalidValidFailsNot checkedNot signedMissingIntactBrokenMatchesNo matchNot yet FingerprintSignatureLinkAnchor Recomputed from the five fields: the same as the stored fingerprint.Recomputed from the five fields: it differs from the stored fingerprint, so a sealed field has changed.A sealed field holds the separator | or a control character, so the payload no longer reads as five fields, and two different records could give the same one. The fingerprint check fails, whatever the hash. Checked with {key}: the signature covers this fingerprint.Checked with {key}: the signature does not cover this fingerprint; only the holder of the private key could make one that does.Not checked: this page cannot check signatures here (it needs an https:// page).Not signed: this page cannot make signatures here (it needs an https:// page), so the correction is unsigned.No signature is stored with this record. Where your browser can check signatures, every record on this page is signed, so a missing signature fails. demo key {id}… (public key under Method)the one-time demo key {id}… made in your browser (its public key is in the JSON in section 2) The same as the stored link, which record {next} carries as its previous link.The same as the stored link. This is the newest record.It differs from the stored link that record {next} carries, so the link {n}→{next} is broken. Record {next} and later records still pass their own checks.It differs from the stored link of the newest record.The link into this record is broken: record {p} changed, so it no longer gives the previous link stored here. Replayed from 64 zeros, the link of record {m} matches the anchored fingerprint (simulated, no network call).Replayed from 64 zeros, the link of record {m} no longer matches the anchored fingerprint (simulated, no network call).Record {n} comes after the anchored batch: not yet anchored. After it: record {a}, not yet anchored.After it: records {a} to {b}, not yet anchored. Injection {inj} · {kw} {sample}, {prep} · retention time {rt} minCorrection of record {k} · reason: {reason} · made {at} in your browser Change a sealed field above, then choose what to do with the change.Record {n} no longer matches its seal. Hide the change, or correct it in the open:Another record has changed. Select it to correct it, or rewrite the history:History rewritten. Reset to try the correction instead. Keep the original as sealed and add a new record with your reason. This page cannot make signatures here (it needs an https:// page), so the correction will not be signed. Back to the record history as sealed.History rewritten from record {k}: its stored fingerprint and every link from it on recomputed, so the links are consistent again.The signature fails here only because the demo key was discarded; whoever holds the signing key could re-sign an edited record, and only a fingerprint anchored beforehand would still disagree.Correction appended as record {n} with your reason, signed with a one-time demo key. Record {k} stays as sealed.Correction appended as record {n} with your reason. Not signed: this page cannot make signatures here. Record {k} stays as sealed. Record {k} changed: {what}.Record {k}: {what}.fingerprint no matcha field holds the separator |signature failssignature missinglink from {a} to {b} brokenstored link no matchAll {n} records pass.All {n} fingerprints and links pass; signatures not checked in this browser.{ok} of {n} records pass.Replayed from 64 zeros, the link of record {m} matches the anchored fingerprint.Replayed from 64 zeros, the link of record {m} no longer matches the anchored fingerprint.Record {a} is not yet anchored.Records {a} to {b} are not yet anchored.A correction needs a reason of at least three words.A sealed field cannot hold the separator | or a control character. Remove it to append a correction. fingerprintsignaturelinkanchorand As the record stands now, these checks fail: {what}. An agent should not use this value.As the record stands now, {what} pass; the signature could not be checked in this browser; it is not signed (this page could not make a signature here); it is not yet anchored. By these checks it is unchanged since it was sealed. On this page the key and the anchor come with the records, so that is a demonstration, not independent evidence, and it says nothing about whether the result was right when it was captured.. By these checks it is unchanged since sealing, but record {c} supersedes it with a reason: use the correction.. Not all four checks ran, so an agent should not treat it as unchanged.Record {c} corrects it with a reason; an agent reading the record history would use the correction. Copied.Selected. Copy with your keyboard.Note Demo signatures. In the alpha, one server key signs imported rows; per-analyst signatures are upcoming.
2What an AI agent would receive Upcoming
Upcoming: experiment data that AI agents could check before they use it. This is not an API; it shows the record selected above, as stored, the way an agent would receive it.
{
"record": 6,
"sequence": "SEQ-0914-02",
"fields": {
"instrumentId": "HPLC-02",
"sensorType": "hplc",
"value": "1508811",
"unit": "counts",
"capturedAt": "2026-09-14T08:47:50Z"
},
"fingerprint": "eb1690bc5922a312d90ee139fdf8e20b92bf2cb0feae8ee0e70bd24fbd2b54d7",
"previous": "c04af03f4b9c69a30d06e27d9906e4e7f2bc176b7ba0a212582ad8c65f6bdfd5",
"link": "c427b83a4e29adf9380bef67d00302e12ddfd558ae8f5a558547b2b0cf3cba23",
"position": {
"n": 6,
"of": 8
},
"signature": {
"alg": "ECDSA P-256 with SHA-256 over the fingerprint bytes",
"encoding": "IEEE P1363, hex",
"value": "fd3cfca2c73346e62ecca8b63809472ef61f4c01d375e91bce8f023b3fefb8cc6904175a9db890fe6bc0e8fe5fc34203cf5297b361db971e6cadf2dfeb420279"
},
"publicKeyId": "7A15F56288146023D45A47796F6A5553",
"publicKey": "0458f36cfc0c1e0df9d1b97e3cd6e3e3ca7bc3acd4fa6b835584f63aa4551ef83855cbc7609030d0ddbe6a92bdb73176884a951eb6ba33eece29bdcb30d6b7c66f",
"anchor": {
"status": "simulated, no network call",
"covers": "records 1 to 8",
"fingerprint": "0a35688a4c3ec82a5e621cede1f173a6d436ade0e20f159dca92c2a3711e3dc1"
}
}
An agent would recompute the fingerprint from the fields, check the signature with the public key, recompute the link from the previous link the record stores, and replay the history to compare the anchor. Only if all four pass would it treat the record as unchanged since sealing; in use, it would take the public key and the anchor from outside the lab’s system.
Checked at build: fingerprint, signature, link and anchor pass for this record.
3Method
- Payload
instrumentId|, UTF-8, no spaces around the bars: the alpha app’s canonical payload for an HPLC peak area, where the instrument field is the app’s internal instrument number. The alpha records peak area with the unit “counts”. No field may hold the bar or a control character; a record whose fields do fails its fingerprint check.sensorType| value| unit| capturedAt - Fingerprintrn = SHA-256 of the payload’s UTF-8 bytes as they are, with no Unicode normalization (FIPS 180-4), as lowercase hex. Check: the recomputed rn against the stored one.
- Linkhn = SHA-256 of the text hn−1 + rn + n (lowercase hex, then the decimal position), starting from 64 zeros. Check: SHA-256 of the previous link the record stores, its recomputed fingerprint and n, against the link it stores, which the next record carries. A changed value breaks only the link into the next record.
- SignatureECDSA P-256 with SHA-256 over the 32 bytes of rn (FIPS 186-5), IEEE P1363 encoding in its low-S form only (the high-S twin of a signature is refused), checked against the recomputed fingerprint. Where your browser checks signatures, a record with no signature fails. Records 1 to 8 were signed at build time with a demo key whose private half was then discarded. Demo key id
7A15F56288146023D45A47796F6A5553(first 16 bytes of SHA-256 of its SPKI). Public key, uncompressed point:0458f36cfc0c1e0df9d1b97e3cd6e3e3ca7bc3acd4fa6b835584f63aa4551ef83855cbc7609030d0ddbe6a92bdb73176884a951eb6ba33eece29bdcb30d6b7c66f - AnchorThe whole history replayed from 64 zeros over the recomputed fingerprints; the replayed link of record 8 against the anchored fingerprint stored on this page (simulated, no network call). A correction moves the head on; it stays “not yet anchored” until a new anchor.
- PassA record passes when its fingerprint and link match and its signature does not fail. Without the browser’s own checking tools (an http:// page), fingerprints and links are recomputed with a SHA-256 built into the page and signatures are not checked, so no record is called unchanged.
- LimitsOn this page the public key and the anchor come with the records, so they show the method, not independent evidence. Whoever can rewrite the page can replace the key, the signatures and the anchor together. In use, both would come from outside the lab’s system: a key published elsewhere, and a fingerprint anchored on a public network, which is upcoming. Signatures cover each record’s own fingerprint, not its position, so a removed record with every later link rewritten passes every check but the anchor. A correction’s one-time key travels with the correction, so its signature shows only that the correction has not changed since it was signed.
BasisThe same payload and link rule as the alpha app’s HPLC import; the same link rule as the record figure on joseqc.com.