Certificates and review reports

A certificate lets anyone check that the analysis gives the numbers it reports. It holds the workspace, the files it read and every number, and verifying computes each number again from the files and compares them bit for bit.

What a certificate is

A certificate (.certificate.msz) is a workspace archive with two more files. certificate.json records every number the workspace reports, each computed again from its files when the certificate was made:

certificate.json also names the workspace, every file it reads, the history's last hash and the checkpoints by their SHA-256. README.txt says what the certificate proves and how to verify it.

Its fingerprint is the SHA-256 of everything certificate.json records, so it names exactly what was certified. Quote it with the analysis, in a paper or a data deposit. Its short form is its first 16 characters, xxxx-xxxx-xxxx-xxxx.

A certificate has no time of its own. The same workspace, files and MaveScape always give the same bytes, and so the same fingerprint, whenever and wherever it is made.

Making one

In the Report view's Certificate pane, Certify… computes every number again from the files in the library and writes the certificate. It runs in a worker, so the window stays responsive. Scripts use certify (Remote control).

The count tables are included unless you uncheck them. For data that cannot be shared, leave them out: each table is then named by its SHA-256 only, and whoever verifies the certificate gives the tables beside it. Annotation files and figure images always go in. Structure files go in when the library holds them all.

Leaving them out also suits tables that are public already. BRCA1 RING's example is opened from MaveDB, and its certificate made without its tables names them by the SHA-256 of MaveDB's own files: a reviewer downloads the two from the record and verifies it with them (Examples).

If making a certificate finds that a run's scores computed now are not the ones recorded when it was scored, or that an analysis kept in the report no longer computes the same, it records the numbers the files give now and says so in its notes.

Verifying one

The Report view with a certificate's verification: GRB2's two runs, every one of the 6,806 numbers computed again from its table and identical, bit for bit, its history's chain unbroken; the table, counts.csv, as certified; the Certificate pane beside the reportThe Report view with a certificate's verification: GRB2's two runs, every one of the 6,806 numbers computed again from its table and identical, bit for bit, its history's chain unbroken; the table, counts.csv, as certified; the Certificate pane beside the report
GRB2's run and its Enrich2 rescoring certified, then verified: every number computed again from the table, and identical.

Verifying a certificate:

MaveScape's numbers do not depend on the browser or on Node, so equality is exact.

mavescape verify analysis.certificate.msz
mavescape verify --data tables/ analysis.certificate.msz     # made without its tables
mavescape verify --report verification.json analysis.certificate.msz

The exit status gives the verdict:

In the window:

Another version of MaveScape can verify a certificate too, and says which version certified it and which verified it.

The review report

A review report open in a browser: GRB2's score runs, with a variant looked up (p.Trp36Ala: its score, SE and class in Run 1) and its score traced in a panel naming the run, its table and its SHA-256, the number's key and its exact value; each run's parameters, conditions by class and its map belowA review report open in a browser: GRB2's score runs, with a variant looked up (p.Trp36Ala: its score, SE and class in Run 1) and its score traced in a panel naming the run, its table and its SHA-256, the number's key and its exact value; each run's parameters, conditions by class and its map below
The review report of GRB2's run and its Enrich2 rescoring: a variant looked up, and its score traced to where it comes from.

The review report (.review.html) shows a certificate's numbers in one file a reviewer, a collaborator or a PI opens in any browser, without MaveScape. It holds:

Every number is traced. Click it, or press Enter on it, and the report says where it comes from: the run, its table and that table's SHA-256 for a score; the threshold for a QC finding; the two sides for a comparison; what a figure panel shows and was drawn from. It also gives the number's key and its exact value, the certificate's own.

Look up a variant gives its score, SE and class in each condition. Check this file's numbers against the fingerprint computes, in the browser, the SHA-256 of the certificate the file holds and compares it with the fingerprint.

The file loads nothing: its styles, script, maps, plots and figures are inside it, and its only links, DOIs, are followed when clicked. To make one:

For the same workspace and MaveScape, each gives the same file, naming the fingerprint of the certificate Certify writes.

What it proves, and what it does not

A verified certificate shows that these inputs, analyzed as the workspace records, give these numbers: the analysis is reproducible. It also shows that the record is the one certified. Whoever changed a file would have to make the certificate again, and it would then have another fingerprint than the one quoted.

It does not show that the scores are right. That rests on the experiment's design and the model's assumptions, which the report states, and on the QC findings, which the certificate records with their acknowledgements.

Some things are recorded but not computed again, and the certificate lists each:

How certificates are checked

The validation suite's certificate starts from GRB2's workspace of every operation: two runs, a threshold changed, a finding acknowledged, a selection, a comparison and a robustness check kept in the report, an annotation, a structure view, a checkpoint, and a figure with every kind of panel. Each kind of number in its certificate is what is computed apart from the certificate:

It is then verified bit for bit, and made again it is the same bytes. Then:

In the window, through remote control:

The review report (the validation suite's review):

In the window: