Producer profile

How ComplyEdge writes its ADCR records

Every ADCR record and export ComplyEdge produces names this page as its producer_id. It is the profile ADCR 0.1.0 asks a producer to publish (PRF-01): what a reader needs to check a record without asking us. The same profile, as the JSON document the reference verifier reads with --profile, is at /producer-profile/profile.json. Its classes list is empty: no class is claimed.

1. Rulebook version and classes

Records carry rulebook: https://complyedge.io/rulebook/0.1.0 and record_version: complyedge-adcr-1, the version of the mapping from a stored row to an ADCR record. The classes this producer is built to meet are Record, Law, Chain and Export. Oversight and Rights are not claimed. The account holder's review of a flag is recorded as an oversight record (section 6); measured with the reference verifier, Oversight is met for those reviews, under the same conditions as the classes above. Rights is not met: the product does not collect the notice, decision mode and explanation fields it needs.

No conformance claim is made on this page. An export of your records meets Record, Law, Chain and Export only when all of the following hold, and the reference verifier names each one that does not:

2. Clock

occurred_at is read from the API host clock (AWS Lambda, UTC) when the decision is made. The record joins the chain when it is written, so two requests answered at the same time can reach the chain in the opposite order of their times. The declared tolerance, clock_source.tolerance_ms: 301000, is the longest a request can run (300 seconds) plus one second for the hosts' clocks. A record that is earlier than the one before it by more than that is reported by the verifier as backdated.

3. Chain and timestamps

4. Retention classes

retention.classMeaning
retention-184dThe default. The record is erased 184 days after it was written; retention.erase_after is that date. 184 days holds six months from any start date (REC-20), so this class is declared high_risk: true.
retention-2557dAn Enterprise account that keeps records 7 years. Declared high_risk: true.
retention-4018dAn Enterprise account that keeps records 11 years. Declared high_risk: true.

Legal holds: Enterprise accounts place or lift a hold with POST /v1/audit/legal-hold. That writes a chained legal_hold record (listed in this profile) and suspends DynamoDB expiry for the covered chain sequence numbers until the hold is lifted. Outside a hold, erasure still happens by expiry, by closing the account, or by destroying the account key on request, as the DPO pack describes.

5. Every copy, and when it is gone

CopyKept for
Audit recordThe account's retention period (section 4)
Write-once archive of each changeLocked 180 days, deleted after 400 days
Timestamps (anchors)Locked at least 400 days, longer when the account's retention is longer; deleted after 3,660 days
Database point-in-time recovery35 days
Weekly backups210 days
The account key (encrypted, on the account's settings record)Until the account is closed or the key is destroyed on request; a backup taken before the destruction holds it for up to 210 days more

After the key is destroyed, the copies that remain still verify as a chain, but their commitments and pseudonyms can no longer be linked to any text or person.

6. Event types and reason codes

Event types: decision, logging_failure (with failure_kind write_failed or anchor_failed) oversight, legal_hold, contest, notice, incident, opt_out, classification and fallback. These ten are the event_types in profile.json; no other event type is written.

An oversight record is written when the account holder finishes the review of a flag in the dashboard: accepted with reason code layer2.reviewed_violation, or disregarded with layer2.reviewed_compliant. Sending a flag to legal counsel writes no record. The record names the decision it reviewed (proposal_ref), the reviewer as a pseudonym, reviewer_role: account_holder, the dashboard page of the flag (inputs_ref) and the review authority statement (authority_ref). Review notes stay on the flag and are never written to the record.

OVS-03, OVS-04 and OVS-05 do not apply: no record identifies a person from biometric data, no record is written for a decision the law reserves to a human, and no oversight evaluation or per-reviewer count is kept.

Reason codeMeaning
classifier_matchA semantic classifier matched the rule it names
llm_layer2_block, LLM_LAYER2_BLOCKThe optional model review refused the request
llm_fallback_block, LLM_FALLBACK_BLOCKThe model review could not decide and the request was refused
LLM_LAYER2_UNAVAILABLEThe required model review did not answer; the request was refused
LLM_SPEND_COUNTER_UNAVAILABLEThe counter that caps model spend was unavailable; the request was refused
OPA_UNNAMED_VIOLATION, OPA_UNNAMED_VIOLATION_<PACKAGE> (one per policy package: ARTICLE5, ARTICLE50, GPAI, ARTICLE6, HIGHRISK, PROMPT_SECURITY, DATA_PROTECTION, US_CORPUS)The rule engine refused without naming a rule
fallback_blockWith fallback.kind: degraded: the engine could not complete the check and refused the request
layer2_plan, layer2_budget, layer2_unavailableWith fallback.kind: skipped: the model review was requested but not run, because the plan does not include it, the account's model spend cap was reached, or the review model was not available
law_enforcement_refused, dataset_operation_refusedAn exemption was claimed and not accepted
layer2.reviewed_violation, layer2.reviewed_compliantOn an oversight record: the account holder reviewed a flag and found a violation, or found the output compliant
confirmer_cleared, injection_check_clearThe model review cleared a rule the engine had matched, and, for a prompt security rule, the injection check found no instruction aimed at an AI in the text

7. The rule set

Each decision record names the rules that were loaded by rule_set.digest, and rule_set.index_url is https://complyedge.io/rule-set/<digest>/. That page lists every rule in the set, and each rule's own page shows its provision, citation, condition and approval. A page is published for every digest a record has named. Once a record names a digest, the list of rules on its page and each rule's own content never change; only the site menu around them can.

8. How to read a ComplyEdge record