CAPAS is a deterministic gate before scientific claims enter reports, governed datasets, or fine-tuning preparation. It checks whether supplied evidence licenses a claim for controlled reuse and returns a replayable packet: verdict, reason, required evidence contract, no-LLM marker, and fine-tune readiness.
Synthetic benchmark. 12/12 families reach at least two verdicts and 9/12 reach all four on an adversarial grid. By contract design, physical_accuracy cannot reach REWRITE and claim_transition cannot reach REJECT; exact_model_solution has REWRITE paths the grid does not exercise. No production pilot has run yet. Benchmark methodology →
python3 benchmarks/home_gate_decisions.py.Complete engine output, 18 fields with audit_hash, on a claim whose reported number re-derives correctly while its supplied accounting evidence is internally inconsistent. benchmarks/brief_decision_packet.py generates it, brief_decision_packet.json publishes it, and a CI check fails if page and engine diverge. To reproduce: pip install capas-claim-gate==0.4.0 and the payload in the JSON. Code and tag: github.com/fomv9354lve/capas-inteligentes. Site numbers come from main; each front-page blind rate names its tag.
{
"schema_version": "capas-claim-payload-v3",
"input_claim": {
"id": "brief_fin_001",
"type": "financial_metric_claim",
"text": "Reported net assets of 1000 match the audited reference for the period."
},
"verdict": "REJECT",
"reason": "reported_value differs from reference_value by 0.0, within tolerance 0.5, and period matches; OVERRIDDEN by a domain invariant violation: balance identity VIOLATED: assets 1000.0 != liabilities 600.0 + equity 300.0 (residual 100) — the books do not close",
"licensed_claim": null,
"rewrite": null,
"missing_fields": [],
"required_fields": [
"reported_value",
"reference_value",
"tolerance",
"metric_period_match"
],
"schema_errors": [],
"did_you_mean": {},
"resolution": {
"kind": "exclude_or_replace_evidence",
"message": "The evidence contradicts the claim. Exclude it, or supply new evidence that changes the contract outcome."
},
"invariant_audit": {
"applicable": true,
"verdict": "FLAG",
"laws_checked": [
"accounting"
],
"violations": [
"accounting"
],
"holds": [],
"results": {
"accounting": {
"applies": true,
"verdict": "FLAG",
"law": "assets = liabilities + equity",
"why": "balance identity VIOLATED: assets 1000.0 != liabilities 600.0 + equity 300.0 (residual 100) — the books do not close"
}
},
"summary": "balance identity VIOLATED: assets 1000.0 != liabilities 600.0 + equity 300.0 (residual 100) — the books do not close"
},
"text_licensed_as_written": false,
"notices": [
"ai_use_declared: not declared (tool, purpose, phase); required from the X6 freeze"
],
"plan3_checks": {
"provenance": {
"declared": 0,
"verified": 0
},
"ai_use_declared": "not declared",
"uncertainty": "not declared"
},
"fine_tune_ready": false,
"fine_tune_blockers": [
"claim verdict is not ACCEPT",
"source-backed evidence is not attached",
"external review is not attached",
"claim.text semantic alignment is not externally certified",
"witness independence is not externally certified",
"provenance.sources or provenance.source_urls is empty",
"external review hash is missing or does not match review_packet",
"source URLs are not recoverable with matching hashes",
"witness_id is not resolvable in the witness registry",
"RO-Crate provenance packet is missing, invalid, or hash-mismatched",
"reviewer identity or attestation is not verifiable",
"provenance.review_id is missing",
"provenance.witness_id is missing"
],
"fine_tune_criteria": {
"verdict_accept": false,
"schema_clean": true,
"source_backed_evidence": false,
"external_review": false,
"semantic_alignment": false,
"witness_independence": false,
"provenance_sources": false,
"review_hash_verified": false,
"source_urls_recoverable_hashable": false,
"witness_registry_resolved": false,
"ro_crate_validated": false,
"reviewer_attestation_verified": false,
"review_id_present": false,
"witness_id_present": false
},
"non_claim": "This decision is rule-based over supplied evidence fields, not an LLM judgment.",
"audit_hash": "sha256:4a323d7445b6bb14a5ae30d008d5606e5482fcec3db2b986b9b6613509ac5997",
"rules_fired": [
"R404ebcc1d2",
"R498daec9f1"
],
"rule_table_sha256": "sha256:f871e061eb2690b9cc376b5fb07bc6f2d5affbe3de3cc343a16f5dd394cc3dd6",
"engine_version": "0.4.1",
"evidence_sha256": "sha256:5c52b7088b555b950f9bf3b373bb062ee681c80475b33d75b835ee99d390664a",
"audit_hash_recipe": "v2",
"admissibility_certificate": {
"calculus_version": "capas-admissibility-calculus-v1",
"metaphor": "compiler_certificate",
"claim_contract": {
"registered": true,
"claim_type": "financial_metric_claim",
"description": "Financial metric claims against a reference value and period. With evidence.ledger {rows_csv, metric, period} the engine recomputes reference_value from the rows itself.",
"required_fields": [
"reported_value",
"reference_value",
"tolerance",
"metric_period_match"
],
"optional_fields": [
"metric_name",
"audit_trail",
"ledger",
"object_declared",
"object_matches_target",
"load_bearing_citation_read",
"citation_hypotheses_checked",
"null_control_passed",
"ai_use_declared",
"coverage_factor",
"abs_error_u",
"tolerance_u",
"method_standard",
"cited_dois",
"retraction_snapshot",
"cited_doi_retracted",
"prereg"
],
"anchor_mode": null,
"anchor_license": null,
"absolute_accept_only": false
},
"lattice": {
"axes": {
"contract": {
"score": 3,
"level": "contract_complete"
},
"evidence": {
"score": 2,
"level": "complete"
},
"boundary": {
"score": 2,
"level": "claim_excluded"
},
"provenance": {
"score": 0,
"level": "none"
},
"defeaters": {
"score": 4,
"level": "no_active_defeater"
}
},
"controlled_reuse_meet": 2,
"training_reuse_meet": 0,
"reuse_boundary": "claim_excluded",
"non_claim": "This lattice orders admissibility of supplied evidence, not scientific truth."
},
"dialectic": {
"thesis": "Reported net assets of 1000 match the audited reference for the period.",
"licensed_thesis": null,
"warrant": "reported_value differs from reference_value by 0.0, within tolerance 0.5, and period matches; OVERRIDDEN by a domain invariant violation: balance identity VIOLATED: assets 1000.0 != liabilities 600.0 + equity 300.0 (residual 100) — the books do not close",
"supports": [
"evidence.reported_value",
"evidence.reference_value",
"evidence.tolerance",
"evidence.metric_period_match"
],
"optional_supports": [],
"undercutters": [],
"rebuttals": [
"reported_value differs from reference_value by 0.0, within tolerance 0.5, and period matches; OVERRIDDEN by a domain invariant violation: balance identity VIOLATED: assets 1000.0 != liabilities 600.0 + equity 300.0 (residual 100) — the books do not close"
],
"burden_of_proof": []
},
"proof_obligations": [],
"next_action": {
"kind": "exclude_or_replace_evidence",
"label": "Exclude this claim or provide new evidence that changes the contract outcome."
}
}
}
An LLM may be used upstream to extract the payload from a paper or to draft a rewrite suggestion. It is never used to determine admissibility. Versioned deterministic rules over the supplied evidence fields produce the verdict (ACCEPT / REWRITE / REJECT / HOLD). The non_claim field is the machine-readable marker. The REWRITE wording CAPAS returns (licensed_claim) is a deterministic template from the evidence fields; text a model redrafts upstream or downstream is not CAPAS output.
Text-ingested claims also carry source evidence spans. /api/decide and /api/gate return unsigned packets whose audit_hash anyone re-derives. A signed, content-addressed certificate (capas_certstore) is issued only through the auth-gated issuance path on the Security page.
An ACCEPTed claim may still not qualify as training data. These 14 checks, copied from the engine, decide fine_tune_ready after an ACCEPT without changing the verdict. Four criteria are self-declared flags the engine checks only for true. Five are engine-verified; four of those five require a deployment the hosted API lacks: CAPAS_VERIFY_REMOTE_SOURCES=1 for URL recovery, plus local registries (witness registry, reviewer attestations, RO-Crate files) absent from the pip wheel. On the hosted API a payload reaches at most 10/14, so fine_tune_ready is a library-mode property.
Source: capas.evaluate_fine_tune_readiness. Any unmet criterion appears as a named blocker on the packet.
CAPAS checks the point where a cautious source sentence becomes an over-scoped reusable claim.
The gate runs before records enter fine-tuning, publication workflows, governed datasets, or downstream reports.
Each output carries decision reason, evidence spans, blockers, and a non-LLM marker.
The gate checks a claim and its evidence package against a claim-type evidence contract. The contract defines the required evidence and the licensed scope. The gate returns a deterministic verdict.
Claim text and evidence fields: statistical, artifact, source URL, license, reviewer hash.
14 registered claim types and 26 cross-domain invariant gates check the claim against its evidence contract; both counts regenerate from capability_matrix.json. The synthetic grid covers 12 of the 14 types. No LLM in the decision path.
+ blockers, reviewer action, audit hash, evidence spans
systematic_review_claim)protocol_registered ✓ · inclusion_criteria_declared ✓ · risk_of_bias_assessed ✓ · effect_consistency ✓
The ACCEPT licenses a statement generated from the declared fields; the original sentence is never carried.
protocol ✓ · inclusion ✓ · risk_of_bias_assessed ✗ · effect_consistency ✗
CAPAS returns the narrowest licensed wording as a deterministic template from the evidence fields:
“systematic review process is documented; strength or consistency of effect is not fully licensed.”
Two booleans changed the verdict with no language model in the decision; each input has its own audit_hash. The rewrite is the tightest claim the declared evidence licenses. Re-derive it: capas_sdk.gate("systematic_review_claim", evidence, claim_text).
AI-governance frameworks ask teams to document the quality and provenance of the data behind a claim. CAPAS produces that artifact per claim, deterministically, with no model in the decision path. It supports compliance and review work; it does not certify compliance.
Article 10 requires high-risk AI systems to use training, validation, and testing data that meet quality and governance criteria. CAPAS records, per claim, whether supplied evidence licenses reuse: a traceable check when data enters a dataset.
The NIST AI Risk Management Framework emphasizes documentation and traceability across the data lifecycle. Every CAPAS decision emits a reason, evidence spans, provenance blockers, and an audit hash, reviewable after the fact.
Unlike LLM-as-judge evaluators, CAPAS has no language model in the decision path, so the same payload yields the same verdict and any decision can be re-run and audited independently.
Regulatory references are context only. CAPAS does not certify compliance with the EU AI Act, the NIST AI RMF, or any other framework; it produces auditable decision artifacts that support governance and review.
A controlled operating test: which claims are licensed, which must be rewritten, which must be rejected, and which need more evidence before reuse.
Corpus: pharma statistical-evidence review, the first market. Other verticals follow only after the pilot passes its gate.
The Pilot page protocol: records from the sponsor’s own history, where a bad record is one its reviewers later corrected or rejected; nothing seeded; two blind coders; engine frozen at a tag; verdicts sealed by hash before adjudication.
Pre-registered go / no-go: false-accept ≤ 30% and false-reject ≤ 25% on at least 40 bad and 40 good adjudicated records (Wilson 95%), κ ≥ 0.70 between coders. Otherwise no-go. Full gate and power →
Report in the sealed-batch template: decision mix, coder agreement, false-accept and false-reject with intervals, HOLD share, exclusions and provenance blockers.
Licensed for controlled reuse. Fine-tune obligations to clear.
Evidence supports a narrower claim. Returns the licensed boundary.
Returns which evidence is missing or failing.
Returns the steps: supply the missing field, verify provenance, resubmit.
CAPAS evaluates supplied evidence fields only; it does not infer hidden evidence, provide legal advice, certify broad scientific truth, or replace external review.
The 1,238 decisions and the 78% REWRITE-or-REJECT share are reproducible from the engine benchmark (benchmarks/family_decision_mix.py) over a synthetic decision-space grid. They are not a production drift rate; production rates require an independently adjudicated corpus.
Do not share payload URLs or exports containing confidential source text, reviewer IDs, witness IDs, licensed materials, or proprietary provenance paths without authorization. Data handling & security →
verify_brief_packet_matches_engine.py, home_gate_decisions.py). Schema, evidence contracts, and blockers are emitted by the deterministic gate; no model judgment is involved.