A question of one's own, made from declared items. The composition is sent with the document on the same certify call, and the certificate answers exactly the items taken.
The problem
A declared checklist answers the question it was written for. Real work often needs part of one, or parts of several: the charge arithmetic and the container number of an invoice, without the rest.
Writing a new question for each need would mean answers no one else can compare. Composing from declared items keeps every answer under the rule that declared it, and keeps the composition itself on the record.
Recorded outputOne certify call of the demonstration's own synthetic invoice under a composition taking four data points, one arithmetic check and the identifier check from the demurrage and detention checklist; then the same call with an item the checklist does not declare. No AI engine was configured.
The declaration
The composition names the report type it takes from and the items it takes. It travels as one header on the certify call, with the document as the body.
A Finder search returns addresses in the same shape. Searching "demurrage" returned 2, and one of them is ready to compose: {"from":"fmc-demurrage-detention-invoice-completeness","statementPoints":["sp-cert-fmc-rules"]}.
Recorded outputThe composition, as sent.
{
"id": "charge-total-and-container",
"title": "Charge total and container number",
"take": [
{
"from": "fmc-demurrage-detention-invoice-completeness",
"dataPoints": [
"dp-container-number",
"dp-charged-dates",
"dp-daily-rate",
"dp-total-amount-due"
],
"arithmeticPoints": [
"ap-arith-charge-total"
],
"mechanisms": [
"identifierChecks"
]
}
],
… 1 more field: the schema identifier, printed in the API reference
}
The certificate answers what was taken
POST /api/tenants/{tenant}/certify?filename=syn-inv-01-complete-import.html · composition header · Content-Type: text/html
Does the number of dates charged multiplied by the daily rate equal the total amount due?satisfied5 day(s) charged at 275.00 is 1375.00; the invoice states 1375.00.
Check how this was answered
arithmetic point ap-arith-charge-total
cites § 541.6(c)(1)–(3)
produced by …/arithmetic/count-times-rate-equals-total@1
this result says PBLU4471820, stated by this document under "Container Number", FAILS its iso6346-container check digit - the standard's computation gives 4 and the identifier as stated ends in 0. This is a finding ABOUT THE DOCUMENT: the value is captured exactly as written and is not corrected here, and it was read from the document's own text layer rather than recognised off an image.
COMPOSED CHECKLIST: composed-charge-total-and-container was composed by the caller from 1 catalogue checklist(s) (fmc-demurrage-detention-invoice-completeness@93a3bea14418dd6ef7478480699ff4045b48672cebb7ce900a9fc18a7095854f), taking 5 question(s) and 1 mechanism(s). Every question is that checklist's own declaration, copied unchanged, and is judged exactly as the catalogue judges it. The caller chose SCOPE ONLY: no rule, threshold, tolerance, rounding rule, coverage factor or boundary statement was set by the caller, and every setting this checklist carries is inherited from the checklist its questions came from.
Boundary
CERTIFIED: nothing under this boundary. This report type declares no coverage boundary.
NOT ATTESTED
This certificate does not attest, under this boundary, that any item is present in the document or absent from it.
F
vd-2b223ab58835e187
Key
A development key minted for this recording. Not the production issuer key.
The container number reads "invalid": the synthetic invoice's number does not carry the check digit its standard computes. It is a finding about the document, shown under its own word.
A composition cannot invent an item
The same call, taking one data point the checklist does not declare, is refused before anything is read.
Recorded outputThe refusal, status 422, at the parameters stage.
take[0] asks fmc-demurrage-detention-invoice-completeness for dataPoints "dp-not-in-the-catalogue", which that checklist does not declare (it declares "dp-bol-number", "dp-container-number", "dp-port-of-discharge", "dp-liability-basis", "dp-invoice-date", "dp-invoice-due-date", "dp-free-time-days", "dp-free-time-start", "dp-free-time-end", "dp-availability-date", "dp-earliest-return", "dp-charged-dates", "dp-total-amount-due", "dp-applicable-rule", "dp-daily-rate", "dp-dispute-contact", "dp-dispute-url", "dp-dispute-timeframe").
Counted afterwards
Archived certificates are counted by verdict and by refusal code on the Console's analytics screen, in the same five colours and no others. It states its population, and it has no score: the recorded screen.
Check it without Factum
The certificate is published as it was returned. Download it with the key and the Factum Verifier, and run the command. It needs Node 18 or later and nothing else.
VERIFIED
keyId vd-2b223ab58835e187
canonical bytes 17562
barcode … (the signed barcode, 470 characters, printed in full when you run it)
surface FULL - the body carries no surface block, so every claim the run captured is on it
CERTIFIED BY THIS CHECK: this document was signed by the holder of the private half of the
key you supplied, over the canonical form named in its signature block, and has not been
altered by one byte since.
NOT CERTIFIED BY THIS CHECK: that the key you supplied is the operator's. That comes from
WHERE YOU OBTAINED THE KEY and from nothing in this file - a valid signature under the wrong
key is exactly what a forgery looks like.