Lift Mosaic Verification

Check a run yourself, without asking us anything

Every analysis produces a package: the result file and a manifest describing exactly what produced it. The point of the manifest is that it does not require us to be honest — the hashes either match or they do not, and the hardware signature either validates against the processor vendor or it does not.

Be clear about what is on this page. The package below is a sample, published so you can see the format and run the one check that works today: hash the output file and compare it with the manifest. That check is real and it will pass. The other three are not checkable here — this sample carries no live signature and no live attestation quote, because it was not produced by a production enclave running against a retailer’s data. A package that proves a run happened is something we hand you during an evaluation, against your own test file, and the last section of this page says exactly what to ask for.

What a signed run commits to Break one link and nothing verifies

Each link is a hash the processor signs together with the others. Swap the code, the data, or the thresholds and the signature stops matching — checkable by anyone, without access to our systems.

The package

Two files, both plain text

sample-manifest.json
What ran: template and its code hash, input datasets and their hashes, the signed policy, the disclosure allowance charged, the enclave measurement, and the hash of the output.
Open the manifest →
sample-output.csv
The result itself — the eight rows behind the decomposition screen. Aggregates only; no household appears anywhere in it.
Open the output →

The procedure

Four checks. With this sample you can do the first one right now; the other three need a package from a real run

Confirm the output is the output works on this sample

Hash the result file and compare it with output.sha256 in the manifest. If they differ, the result you are holding is not the one that was produced.

curl -sO https://liftmosaic.com/verify/sample-output.csv
curl -sO https://liftmosaic.com/verify/sample-manifest.json
shasum -a 256 sample-output.csv

It should print c949b677a56b34cddc8a0a7898c32604c6b9f71e8b80c7aad1ca653a6d16a5db, which is the value recorded in the manifest.

Confirm the inputs are the inputs needs your own export

Each data owner hashes their own export before handing it over and keeps that value. Comparing it against the inputs[].sha256 entries proves the run used the file they intended and not a substituted or stale one. Only the owner can perform this check, which is the point — it does not depend on us, and it does not require anyone to show their data to anyone.

Confirm the code is the approved code needs a signed policy

The policy a retailer signs names the templates permitted, each by its code_sha256. If a manifest carries a hash that is not in the signed policy, the run was not authorised, and that is visible from the two documents alone without any access to the system that ran it.

Confirm the environment needs a live quote

The enclave.measurement field is the value the processor itself reports for the code and configuration loaded into the trusted environment. It is validated against the processor vendor's attestation service — for Intel TDX, Intel Trust Authority — which is operated by the chip vendor and not by us. A manifest whose quote does not validate there proves nothing about where the computation ran.

What the fields mean

Read the manifest without a glossary

FieldWhat it tells you
template.code_sha256Fingerprint of the exact analysis code. Must appear in the retailer's signed policy, or the run was not authorised.
inputs[].sha256Fingerprint of each input dataset. Each owner checks their own against the file they exported.
policy.min_cell_householdsThe suppression floor in force. Any result cell representing fewer households than this was withheld.
policy.regimeWhich protection applied. query_allowance means counted and capped access, not differential privacy. When a run uses calibrated noise, this field says so and carries the parameters.
policy.destinations_allowlistThe only places an audience from this run could be sent. The enclave cannot reach anywhere else.
allowance.used_this_quarterHow much of the requester's disclosure allowance has been spent. The data owner sees this accumulate across every run, which is how repeated probing becomes visible.
enclave.measurementWhat the processor attests was loaded. Validated against the chip vendor's service, not ours.
output.suppressed_cellsHow many cells were withheld for falling under the floor. A non-zero value tells you the result is incomplete by design and where.

Being straight about it

What this sample does not prove

Read this before drawing conclusions from the package above

  • The sample is unsigned. A production manifest carries a signature over every field; this one is published so the procedure can be rehearsed against real file hashes, and the hashes in it are genuine. The signature block is a placeholder and says so.
  • The data is synthetic. The dataset hashes refer to generated files with the structure of a grocery loyalty export. They are real hashes of real files, and those files are not real customers.
  • The enclave quote in the sample is not live. You cannot validate it against Intel Trust Authority, because this run did not happen on a production machine. In an engagement, that check is the one your security team should insist on performing themselves rather than accepting our summary of it.
  • Hashes prove identity, not correctness. They tell you the approved code ran against the intended data and produced this exact output. Whether the analysis is the right analysis for your question is a judgement no cryptography makes for you — which is why the limits of each method are written on the face of every screen here.

For your security team

What to ask us for during an evaluation

A live signed manifest from a real run on your own data, with the quote validated by your team against Intel's service rather than reported by us. The full template source for every analysis in your signed policy, read before you sign it rather than after. The policy document itself, with thresholds, allowance ceiling and destination allowlist as explicit fields. And a walkthrough of what happens when a template is updated — because the answer must be that the old signature stops matching and the run stops, not that it quietly continues.

If any vendor, us included, answers these with assurances rather than artefacts, that is the answer.

Lift Mosaic. This verification package is published from a demonstration run on synthetic data. The manifest format, the field semantics and the checking procedure are the production ones.