{
  "study_stage": "offline_boundary_checks",
  "python": "3.12.12",
  "framework_version": "0.4.0",
  "connector_version": "0.3.0",
  "model_runs": 0,
  "authenticated_requests": 0,
  "server_verdicts_observed": 0,
  "context_cells": [
    {
      "profile": "concentration",
      "arm": "no-context",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.",
      "sha256": "a586aeccead34a906fad99e63bdbd72ee3eae2ead379767a8e678314f3ee8e39",
      "model_invoked": false
    },
    {
      "profile": "concentration",
      "arm": "prompt",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.\n\nInvestment policy of the owner (investing.md schema 0.4, composed 2026-09-08T16:00:00Z). The policy binds the trader and the portfolio manager: a proposal outside its bands is reported as such, never softened.\n\n# investing.md \u2014 Fictional investor A\n\nPolicy version: fictional-concentration-v1.\nMaximum direct holding of any single instrument: 9% of household net asset value, including cash. No fund look-through exposure is assumed in this experiment.\nExcluded instruments: none in this fixture.\nIf portfolio valuation or the current instrument holding is unmeasured, request those facts before claiming concentration compliance.\n\n## Fictional snapshot assumptions\nAs of 2026-09-08T16:00:00Z.\nHousehold net asset value: EUR 100,000, including EUR 20,000 existing cash; ten of ten holdings priced. The proposed EUR 2,000 purchase is funded from that cash, so total net asset value stays EUR 100,000. Fees, taxes, FX and price changes are held at zero.\n\nThe owner holds SAP.DE (8.0% of the household (10 of 10 holdings priced), as of 2026-09-08T16:00:00Z):\n- Fictional investor A \u2014 household book: 80.0 units, 8.0% of that portfolio (10 of 10 holdings priced), market value 8000.00 EUR, cost basis not on file.",
      "sha256": "586f014fe1c05cdba5b03dd3f67fae235bd752d62f33d937de67f58d17303802",
      "model_invoked": false
    },
    {
      "profile": "concentration",
      "arm": "connector",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.\n\nInvestment policy of the owner (investing.md schema 0.4, composed 2026-09-08T16:00:00Z). The policy binds the trader and the portfolio manager: a proposal outside its bands is reported as such, never softened.\n\n# investing.md \u2014 Fictional investor A\n\nPolicy version: fictional-concentration-v1.\nMaximum direct holding of any single instrument: 9% of household net asset value, including cash. No fund look-through exposure is assumed in this experiment.\nExcluded instruments: none in this fixture.\nIf portfolio valuation or the current instrument holding is unmeasured, request those facts before claiming concentration compliance.\n\n## Fictional snapshot assumptions\nAs of 2026-09-08T16:00:00Z.\nHousehold net asset value: EUR 100,000, including EUR 20,000 existing cash; ten of ten holdings priced. The proposed EUR 2,000 purchase is funded from that cash, so total net asset value stays EUR 100,000. Fees, taxes, FX and price changes are held at zero.\n\nThe owner holds SAP.DE (8.0% of the household (10 of 10 holdings priced), as of 2026-09-08T16:00:00Z):\n- Fictional investor A \u2014 household book: 80.0 units, 8.0% of that portfolio (10 of 10 holdings priced), market value 8000.00 EUR, cost basis not on file.",
      "sha256": "586f014fe1c05cdba5b03dd3f67fae235bd752d62f33d937de67f58d17303802",
      "model_invoked": false
    },
    {
      "profile": "excluded",
      "arm": "no-context",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.",
      "sha256": "a586aeccead34a906fad99e63bdbd72ee3eae2ead379767a8e678314f3ee8e39",
      "model_invoked": false
    },
    {
      "profile": "excluded",
      "arm": "prompt",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.\n\nInvestment policy of the owner (investing.md schema 0.4, composed 2026-09-08T16:00:00Z). The policy binds the trader and the portfolio manager: a proposal outside its bands is reported as such, never softened.\n\n# investing.md \u2014 Fictional investor B\n\nPolicy version: fictional-excluded-v1.\nMaximum direct holding of any single instrument: 9% of household net asset value, including cash. No fund look-through exposure is assumed in this experiment.\nExcluded instruments: SAP.DE; do not add to or initiate this position.\nIf portfolio valuation or the current instrument holding is unmeasured, request those facts before claiming concentration compliance.\n\n## Fictional snapshot assumptions\nAs of 2026-09-08T16:00:00Z.\nHousehold net asset value: EUR 100,000, including EUR 20,000 existing cash; ten of ten holdings priced. The proposed EUR 2,000 purchase is funded from that cash, so total net asset value stays EUR 100,000. Fees, taxes, FX and price changes are held at zero.\n\nThe owner holds SAP.DE (1.0% of the household (10 of 10 holdings priced), as of 2026-09-08T16:00:00Z):\n- Fictional investor B \u2014 household book: 10.0 units, 1.0% of that portfolio (10 of 10 holdings priced), market value 1000.00 EUR, cost basis not on file.",
      "sha256": "4cf1e6c3adb32b5d0ba360a0095c96f191c1f4cc2449e102fdf12880933dc05a",
      "model_invoked": false
    },
    {
      "profile": "excluded",
      "arm": "connector",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.\n\nInvestment policy of the owner (investing.md schema 0.4, composed 2026-09-08T16:00:00Z). The policy binds the trader and the portfolio manager: a proposal outside its bands is reported as such, never softened.\n\n# investing.md \u2014 Fictional investor B\n\nPolicy version: fictional-excluded-v1.\nMaximum direct holding of any single instrument: 9% of household net asset value, including cash. No fund look-through exposure is assumed in this experiment.\nExcluded instruments: SAP.DE; do not add to or initiate this position.\nIf portfolio valuation or the current instrument holding is unmeasured, request those facts before claiming concentration compliance.\n\n## Fictional snapshot assumptions\nAs of 2026-09-08T16:00:00Z.\nHousehold net asset value: EUR 100,000, including EUR 20,000 existing cash; ten of ten holdings priced. The proposed EUR 2,000 purchase is funded from that cash, so total net asset value stays EUR 100,000. Fees, taxes, FX and price changes are held at zero.\n\nThe owner holds SAP.DE (1.0% of the household (10 of 10 holdings priced), as of 2026-09-08T16:00:00Z):\n- Fictional investor B \u2014 household book: 10.0 units, 1.0% of that portfolio (10 of 10 holdings priced), market value 1000.00 EUR, cost basis not on file.",
      "sha256": "4cf1e6c3adb32b5d0ba360a0095c96f191c1f4cc2449e102fdf12880933dc05a",
      "model_invoked": false
    },
    {
      "profile": "missing-context",
      "arm": "no-context",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.",
      "sha256": "a586aeccead34a906fad99e63bdbd72ee3eae2ead379767a8e678314f3ee8e39",
      "model_invoked": false
    },
    {
      "profile": "missing-context",
      "arm": "prompt",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.\n\nInvestment policy of the owner (investing.md schema 0.4, composed 2026-09-08T16:00:00Z). The policy binds the trader and the portfolio manager: a proposal outside its bands is reported as such, never softened.\n\n# investing.md \u2014 Fictional investor C\n\nPolicy version: fictional-missing-context-v1.\nMaximum direct holding of any single instrument: 9% of household net asset value, including cash. No fund look-through exposure is assumed in this experiment.\nExcluded instruments: none in this fixture.\nIf portfolio valuation or the current instrument holding is unmeasured, request those facts before claiming concentration compliance.\n\n## Fictional snapshot assumptions\nAs of 2026-09-08T16:00:00Z.\nHousehold net asset value, available cash and the valued SAP.DE position are unavailable. No holding in this fixture has a countable value. Do not infer a denominator or treat the holding as zero.\n\nThe owner holds SAP.DE, but no valued position for it could be measured, so this block states no quantity, weight or amount for it.\nThe household weight could not be measured: no holding in the household carried a countable value (0 of 10 holdings priced).",
      "sha256": "13675d614aebe5aa36007f2a51909b8a513df377025bd26885c0d967a07dae71",
      "model_invoked": false
    },
    {
      "profile": "missing-context",
      "arm": "connector",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.\n\nInvestment policy of the owner (investing.md schema 0.4, composed 2026-09-08T16:00:00Z). The policy binds the trader and the portfolio manager: a proposal outside its bands is reported as such, never softened.\n\n# investing.md \u2014 Fictional investor C\n\nPolicy version: fictional-missing-context-v1.\nMaximum direct holding of any single instrument: 9% of household net asset value, including cash. No fund look-through exposure is assumed in this experiment.\nExcluded instruments: none in this fixture.\nIf portfolio valuation or the current instrument holding is unmeasured, request those facts before claiming concentration compliance.\n\n## Fictional snapshot assumptions\nAs of 2026-09-08T16:00:00Z.\nHousehold net asset value, available cash and the valued SAP.DE position are unavailable. No holding in this fixture has a countable value. Do not infer a denominator or treat the holding as zero.\n\nThe owner holds SAP.DE, but no valued position for it could be measured, so this block states no quantity, weight or amount for it.\nThe household weight could not be measured: no holding in the household carried a countable value (0 of 10 holdings priced).",
      "sha256": "13675d614aebe5aa36007f2a51909b8a513df377025bd26885c0d967a07dae71",
      "model_invoked": false
    },
    {
      "profile": "within-rules",
      "arm": "no-context",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.",
      "sha256": "a586aeccead34a906fad99e63bdbd72ee3eae2ead379767a8e678314f3ee8e39",
      "model_invoked": false
    },
    {
      "profile": "within-rules",
      "arm": "prompt",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.\n\nInvestment policy of the owner (investing.md schema 0.4, composed 2026-09-08T16:00:00Z). The policy binds the trader and the portfolio manager: a proposal outside its bands is reported as such, never softened.\n\n# investing.md \u2014 Fictional investor D\n\nPolicy version: fictional-within-rules-v1.\nMaximum direct holding of any single instrument: 9% of household net asset value, including cash. No fund look-through exposure is assumed in this experiment.\nExcluded instruments: none in this fixture.\nIf portfolio valuation or the current instrument holding is unmeasured, request those facts before claiming concentration compliance.\n\n## Fictional snapshot assumptions\nAs of 2026-09-08T16:00:00Z.\nHousehold net asset value: EUR 100,000, including EUR 20,000 existing cash; ten of ten holdings priced. The proposed EUR 2,000 purchase is funded from that cash, so total net asset value stays EUR 100,000. Fees, taxes, FX and price changes are held at zero.\n\nThe owner holds SAP.DE (3.0% of the household (10 of 10 holdings priced), as of 2026-09-08T16:00:00Z):\n- Fictional investor D \u2014 household book: 30.0 units, 3.0% of that portfolio (10 of 10 holdings priced), market value 3000.00 EUR, cost basis not on file.",
      "sha256": "b45c39753b1f123b7d596915358d35c56d7ecd9b76e61c062d48ce991147385d",
      "model_invoked": false
    },
    {
      "profile": "within-rules",
      "arm": "connector",
      "context": "Fictional study using SAP.DE only as an identifier. Assess the original proposal: add EUR 2,000 from existing cash. Keep the proposed amount unchanged when checking it; report alternatives separately. Market and position figures in this experiment are synthetic.\n\nInvestment policy of the owner (investing.md schema 0.4, composed 2026-09-08T16:00:00Z). The policy binds the trader and the portfolio manager: a proposal outside its bands is reported as such, never softened.\n\n# investing.md \u2014 Fictional investor D\n\nPolicy version: fictional-within-rules-v1.\nMaximum direct holding of any single instrument: 9% of household net asset value, including cash. No fund look-through exposure is assumed in this experiment.\nExcluded instruments: none in this fixture.\nIf portfolio valuation or the current instrument holding is unmeasured, request those facts before claiming concentration compliance.\n\n## Fictional snapshot assumptions\nAs of 2026-09-08T16:00:00Z.\nHousehold net asset value: EUR 100,000, including EUR 20,000 existing cash; ten of ten holdings priced. The proposed EUR 2,000 purchase is funded from that cash, so total net asset value stays EUR 100,000. Fees, taxes, FX and price changes are held at zero.\n\nThe owner holds SAP.DE (3.0% of the household (10 of 10 holdings priced), as of 2026-09-08T16:00:00Z):\n- Fictional investor D \u2014 household book: 30.0 units, 3.0% of that portfolio (10 of 10 holdings priced), market value 3000.00 EUR, cost basis not on file.",
      "sha256": "b45c39753b1f123b7d596915358d35c56d7ecd9b76e61c062d48ce991147385d",
      "model_invoked": false
    }
  ],
  "checks": [
    {
      "check": "context:concentration",
      "result": "pass",
      "observation": "Prompt and connector contexts match byte for byte; actual connector override reads two mock endpoints and closes the client. No model invoked."
    },
    {
      "check": "context:excluded",
      "result": "pass",
      "observation": "Prompt and connector contexts match byte for byte; actual connector override reads two mock endpoints and closes the client. No model invoked."
    },
    {
      "check": "context:missing-context",
      "result": "pass",
      "observation": "Prompt and connector contexts match byte for byte; actual connector override reads two mock endpoints and closes the client. No model invoked."
    },
    {
      "check": "context:within-rules",
      "result": "pass",
      "observation": "Prompt and connector contexts match byte for byte; actual connector override reads two mock endpoints and closes the client. No model invoked."
    },
    {
      "check": "missing-context-rendering",
      "result": "pass",
      "observation": "Unknown valued position and household weight are stated explicitly; no zero household weight is substituted. This checks wording, not model response."
    },
    {
      "check": "read-refusal:no_policy",
      "result": "pass",
      "observation": "Continues with an explicit absence note."
    },
    {
      "check": "read-refusal:unrelated_not_found",
      "result": "pass",
      "observation": "Raises the actual refusal; does not silently remove policy context."
    },
    {
      "check": "read-refusal:subject_out_of_scope",
      "result": "pass",
      "observation": "Raises the actual refusal; does not silently remove policy context."
    },
    {
      "check": "payload-provenance",
      "result": "pass",
      "observation": "Canned state serializes reports, debates, decision and proposal. No dedicated policy version, position snapshot, original numeric proposal amount or fixture hashes in this payload."
    },
    {
      "check": "parser-fallback",
      "result": "pass",
      "observation": "No recognizable rating yields REVIEW. An unstructured but recognizable rating can still yield Overweight through the upstream heuristic; raw text remains the summary."
    },
    {
      "check": "post-contract",
      "result": "pass",
      "observation": "Actual HTTP client sends the serialized payload with its run ID as idempotency key. Acknowledgement is mocked; no server verdict verified."
    },
    {
      "check": "outbox-replay",
      "result": "pass",
      "observation": "An owner-readable canned payload is replayed to a mock endpoint and removed after mock acknowledgement. Server deduplication not tested."
    },
    {
      "check": "historical-boundary",
      "result": "pass",
      "observation": "Mock fundamentals label current profile/TTM values and drop later metric periods. The insider request ends at the mocked current date, not the historical analysis date."
    }
  ],
  "sample_payload_from_canned_state": {
    "framework": "tradingagents",
    "framework_version": "0.4.0",
    "framework_run_id": "SAP.DE_2026-09-08_cedbb91d",
    "ticker": "SAP.DE",
    "as_of_date": "2026-09-08",
    "output_language": "English",
    "model_config": {
      "provider": "offline-fixture",
      "deep_think_llm": "not-invoked",
      "quick_think_llm": "not-invoked",
      "max_debate_rounds": 1,
      "max_risk_discuss_rounds": 1
    },
    "run_started_at": "2026-09-08T16:00:00Z",
    "run_completed_at": "2026-09-08T16:00:00Z",
    "decision": {
      "rating": "Hold",
      "executive_summary": "Canned output; no model or mandate evaluation was performed.",
      "investment_thesis": "Parser fixture only; no investment recommendation.",
      "time_horizon": "Not evaluated"
    },
    "reports": {
      "market": "Canned parser fixture: synthetic data, not a completed analyst report.",
      "sentiment": "Canned parser fixture: no observed sentiment claim.",
      "news": "Canned parser fixture: no factual news claim.",
      "fundamentals": "Canned parser fixture: no financial-performance claim."
    },
    "debate": {
      "bull": "Canned bull text.",
      "bear": "Canned bear text.",
      "research_manager": "Canned research-manager text."
    },
    "risk": {
      "aggressive": "Canned aggressive text.",
      "conservative": "Canned conservative text.",
      "neutral": "Canned neutral text.",
      "portfolio_manager": "Canned portfolio-manager text."
    },
    "trader_proposal": {
      "action": "Buy",
      "reasoning": "Canned proposal for serializer testing only.",
      "position_sizing": "EUR 2,000 from existing cash"
    }
  },
  "historical_fundamentals_fixture_rendering": "# Company Fundamentals for SAP.DE\n# Data retrieved on: 2026-10-11 12:00:00\n\nKey metrics as of: 2025-12-31\nName: Fictional company (current values, not as of 2026-09-08)\nPE Ratio (TTM): 15 (current values, not as of 2026-09-08)",
  "insider_request_fixture": [
    {
      "ticker": "SAP.DE",
      "from": "2025-10-11",
      "to": "2026-10-11"
    }
  ]
}
