{
    "ok": true,
    "_meta": {
        "validator": "oppl_complex_asset_json_validator",
        "validator_version": "1.1.1",
        "captured_at_utc": "2026-08-08T19:23:34+00:00",
        "captured_unix": 1786217014,
        "input_source": "url",
        "input_url": "https://oppl.ai/llms/runs/etf/IE00B53H0131_ucits_default_latest.json",
        "source_assessment_hash": "18b2bd51e7c091fd957b757efe3d846af9119787f6ec6612ca49bed9f3af15b2",
        "agent_enabled": true,
        "agent_provider": "openrouter",
        "agent_model": "gpt-4.1-mini",
        "agent_temperature": 0,
        "agent_max_tokens": 1800,
        "warn_short_agent": true,
        "validator_modes": {
            "deterministic": "executed",
            "agent": "executed"
        }
    },
    "isin": "IE00B53H0131",
    "classification": "non-complex",
    "policy_mode": "ucits_default",
    "decision_rule_applied": "etf_ucits_no_complex_override_rule",
    "validator_verdict": "fail",
    "publishable": false,
    "confidence": 0.92,
    "issue_count": 6,
    "issues": [
        {
            "severity": "fail",
            "code": "hard_complex_signal_without_direct_evidence_contango_backwardation",
            "message": "signals.contango_backwardation=true but no supporting_evidence quote directly substantiates that hard-complex feature."
        },
        {
            "severity": "fail",
            "code": "hard_complex_signal_without_direct_evidence_complex_index",
            "message": "signals.complex_index=true but no supporting_evidence quote directly substantiates that hard-complex feature."
        },
        {
            "severity": "fail",
            "code": "non_complex_with_hard_complex_signal",
            "message": "classification=non-complex but hard complex signal(s) are true: commodity_futures_roll, contango_backwardation, complex_index"
        },
        {
            "severity": "fail",
            "code": "hard_complex_signal_without_direct_evidence_contango_backwardation",
            "message": "signals.contango_backwardation=true but no supporting_evidence quote directly substantiates that hard-complex feature.",
            "source": "agent"
        },
        {
            "severity": "fail",
            "code": "hard_complex_signal_without_direct_evidence_complex_index",
            "message": "signals.complex_index=true but no supporting_evidence quote directly substantiates that hard-complex feature.",
            "source": "agent"
        },
        {
            "severity": "fail",
            "code": "non_complex_with_hard_complex_signal",
            "message": "classification=non-complex but hard complex signal(s) are true: commodity_futures_roll, contango_backwardation, complex_index",
            "source": "agent"
        }
    ],
    "suggested_repairs": [
        "Remove or downgrade unsupported contango_backwardation, or add product-specific evidence that directly proves the feature before using it as a hard complex trigger.",
        "Remove or downgrade unsupported complex_index, or add product-specific evidence that directly proves the feature before using it as a hard complex trigger.",
        "Either correct the hard complex signals if unsupported, or change classification to complex/review.",
        "Remove or downgrade unsupported contango_backwardation signal, or add product-specific evidence that directly proves this feature before using it as a hard complex trigger.",
        "Remove or downgrade unsupported complex_index signal, or add product-specific evidence that directly proves this feature before using it as a hard complex trigger.",
        "Either correct the unsupported hard complex signals or change classification to complex or review to align with the presence of these signals."
    ],
    "deterministic_review": {
        "ok": true,
        "validator_type": "deterministic",
        "validator_verdict": "fail",
        "publishable": false,
        "confidence": 0.92,
        "issues": [
            {
                "severity": "fail",
                "code": "hard_complex_signal_without_direct_evidence_contango_backwardation",
                "message": "signals.contango_backwardation=true but no supporting_evidence quote directly substantiates that hard-complex feature."
            },
            {
                "severity": "fail",
                "code": "hard_complex_signal_without_direct_evidence_complex_index",
                "message": "signals.complex_index=true but no supporting_evidence quote directly substantiates that hard-complex feature."
            },
            {
                "severity": "fail",
                "code": "non_complex_with_hard_complex_signal",
                "message": "classification=non-complex but hard complex signal(s) are true: commodity_futures_roll, contango_backwardation, complex_index"
            }
        ],
        "suggested_repairs": [
            "Remove or downgrade unsupported contango_backwardation, or add product-specific evidence that directly proves the feature before using it as a hard complex trigger.",
            "Remove or downgrade unsupported complex_index, or add product-specific evidence that directly proves the feature before using it as a hard complex trigger.",
            "Either correct the hard complex signals if unsupported, or change classification to complex/review."
        ],
        "decisive_signal_evidence": {
            "checked": true,
            "decision_rule_signal": null,
            "decision_rule_signal_true": null,
            "decision_rule_signal_supported": null,
            "true_hard_signals": [
                "synthetic_replication",
                "commodity_futures_roll",
                "contango_backwardation",
                "complex_index"
            ],
            "supported_hard_signals": [
                "synthetic_replication",
                "commodity_futures_roll"
            ],
            "unsupported_hard_signals": [
                "contango_backwardation",
                "complex_index"
            ],
            "checks": {
                "synthetic_replication": {
                    "signal_true": true,
                    "direct_evidence": true,
                    "matching_evidence_count": 2,
                    "decision_rule_uses_signal": false,
                    "matches": [
                        {
                            "index": 0,
                            "source": "FACTSHEET",
                            "evidence_signal": "synthetic_replication",
                            "quote": "The fund synthetically replicates the index performance by investing in a swap."
                        },
                        {
                            "index": 1,
                            "source": "FACTSHEET",
                            "evidence_signal": "swaps",
                            "quote": "Replication methodology Synthetic (Fully Funded + Total Return Swap)"
                        }
                    ]
                },
                "commodity_futures_roll": {
                    "signal_true": true,
                    "direct_evidence": true,
                    "matching_evidence_count": 2,
                    "decision_rule_uses_signal": false,
                    "matches": [
                        {
                            "index": 3,
                            "source": "FACTSHEET",
                            "evidence_signal": "commodity_futures_roll",
                            "quote": "By providing investors with access to \u201cConstant Maturities\u201d, it not only gives a more continuous exposure to the asset class and avoids the speculative activity that can surround monthly rolls of traditional indices, but can also minimize exposure to negative roll yield, making the index more representative of the underlying market price movements."
                        },
                        {
                            "index": 4,
                            "source": "FACTSHEET",
                            "evidence_signal": "contango_backwardation",
                            "quote": "minimize exposure to negative roll yield"
                        }
                    ]
                },
                "contango_backwardation": {
                    "signal_true": true,
                    "direct_evidence": false,
                    "matching_evidence_count": 0,
                    "decision_rule_uses_signal": false,
                    "matches": []
                },
                "complex_index": {
                    "signal_true": true,
                    "direct_evidence": false,
                    "matching_evidence_count": 0,
                    "decision_rule_uses_signal": false,
                    "matches": []
                }
            }
        },
        "derivative_materiality": {
            "checked": true,
            "policy_mode": "ucits_default",
            "type": "ETF",
            "ucits": true,
            "physical_replication": false,
            "swaps_signal": true,
            "synthetic_replication": true,
            "derivatives_core_strategy": true,
            "derivatives_epm_only": false,
            "derivative_evidence_count": 3,
            "swap_evidence_count": 2,
            "permission_or_ancillary_evidence_count": 0,
            "core_derivative_evidence_count": 2,
            "only_permission_or_ancillary_derivative_evidence": false,
            "supported_independent_hard_signals": [
                "synthetic_replication",
                "commodity_futures_roll"
            ]
        },
        "detected_features": {
            "helo_or_core_options_overlay": false,
            "physical_replication": false,
            "has_epm_only_evidence": false,
            "has_core_derivatives_evidence": true,
            "has_generic_fdi_permission_evidence": false,
            "has_option_overlay_evidence": false
        }
    },
    "agent_review": {
        "ok": true,
        "model": "gpt-4.1-mini",
        "temperature": 0,
        "max_tokens": 1800,
        "usage": {
            "prompt_tokens": 3422,
            "completion_tokens": 422,
            "total_tokens": 3844,
            "raw": {
                "prompt_tokens": 3422,
                "completion_tokens": 422,
                "total_tokens": 3844,
                "cost": 0.002044,
                "is_byok": false,
                "prompt_tokens_details": {
                    "cached_tokens": 0,
                    "cache_write_tokens": 0,
                    "audio_tokens": 0,
                    "video_tokens": 0
                },
                "cost_details": {
                    "upstream_inference_cost": 0.002044,
                    "upstream_inference_prompt_cost": 0.0013688,
                    "upstream_inference_completions_cost": 0.0006752
                },
                "completion_tokens_details": {
                    "reasoning_tokens": 0,
                    "image_tokens": 0,
                    "audio_tokens": 0
                }
            }
        },
        "cost": {
            "estimated": false,
            "actual_provider_cost_available": true,
            "model": "gpt-4.1-mini",
            "prompt_tokens": 3422,
            "completion_tokens": 422,
            "total_tokens": 3844,
            "input_cost_usd": 0.0013688,
            "output_cost_usd": 0.0006752,
            "estimated_cost_usd": 0.002044,
            "pricing_basis": "openrouter_usage_cost"
        },
        "review": {
            "validator_verdict": "fail",
            "publishable": false,
            "confidence": 0.92,
            "summary": "The assessment contains unsupported hard-complex signals contango_backwardation and complex_index without direct product-specific evidence. These unsupported hard-complex signals conflict with the non-complex classification under the applied decision rule. All hard-complex signals must be directly evidenced or the classification must be changed to complex or review. The supporting evidence quotes for contango_backwardation and complex_index do not substantiate these signals adequately. Derivative evidence is consistent and core strategy is supported by product-specific evidence. No conflicts found between derivatives_epm_only and derivatives_core_strategy. The assessment is not publishable as-is due to these internal consistency and evidence mapping failures.",
            "issues": [
                {
                    "severity": "fail",
                    "code": "hard_complex_signal_without_direct_evidence_contango_backwardation",
                    "message": "signals.contango_backwardation=true but no supporting_evidence quote directly substantiates that hard-complex feature."
                },
                {
                    "severity": "fail",
                    "code": "hard_complex_signal_without_direct_evidence_complex_index",
                    "message": "signals.complex_index=true but no supporting_evidence quote directly substantiates that hard-complex feature."
                },
                {
                    "severity": "fail",
                    "code": "non_complex_with_hard_complex_signal",
                    "message": "classification=non-complex but hard complex signal(s) are true: commodity_futures_roll, contango_backwardation, complex_index"
                }
            ],
            "suggested_repairs": [
                "Remove or downgrade unsupported contango_backwardation signal, or add product-specific evidence that directly proves this feature before using it as a hard complex trigger.",
                "Remove or downgrade unsupported complex_index signal, or add product-specific evidence that directly proves this feature before using it as a hard complex trigger.",
                "Either correct the unsupported hard complex signals or change classification to complex or review to align with the presence of these signals."
            ]
        }
    }
}