{
  "schemaVersion": "dxrg-trading-agent-harness-transfer-card/v1",
  "version": "1.0.0",
  "publishedAt": "2026-07-28",
  "title": "DXRG Trading-Agent Harness-Transfer Evaluation Card",
  "description": "Eight controlled comparison templates for separating model, prompt compilation, state, memory, action schema, policy, execution, and environment effects in trading-agent evaluation.",
  "purpose": "Use one row per registered comparison. Freeze all named components, change the declared boundary, attach trace evidence, and limit the result to the earned evidence class.",
  "evidenceBoundary": "The card is an evaluation framework. Completing a row does not establish alpha, profitability, universal safety, or transfer outside the registered conditions.",
  "source": {
    "title": "Harness-Transfer Tests for AI Trading Agents",
    "url": "https://www.dxrg.ai/blogs/trading-agent-harness-transfer-tests",
    "primaryResearch": "https://arxiv.org/abs/2604.26091"
  },
  "transferTests": [
    {
      "testId": "model-swap",
      "question": "Does the measured behavior survive a model change under an identical harness?",
      "frozenComponents": ["mandate_compiler", "state_snapshot", "memory_policy", "tool_and_action_schema", "policy", "execution_adapter", "evaluation_fixtures"],
      "changedBoundary": "model_and_registered_sampling_configuration",
      "requiredMeasures": ["typed_action_validity", "abstention_rate", "mandate_fidelity", "policy_result", "settlement_outcome", "repeated_run_distribution"],
      "requiredTraceEvidence": "Versioned mandate-to-settlement traces for baseline and candidate cells with seeds and immutable configuration references.",
      "result": null,
      "promotionLimit": "Supports a model comparison only inside the registered harness, fixtures, and evidence class."
    },
    {
      "testId": "mandate-compiler-transfer",
      "question": "Does an instruction-precedence or context-order intervention survive a declared model or prompt-bundle boundary?",
      "frozenComponents": ["mandate", "state_snapshot", "memory_policy", "tool_and_action_schema", "policy", "execution_adapter", "evaluation_fixtures"],
      "changedBoundary": "mandate_compiler_or_declared_recipient_model",
      "requiredMeasures": ["compiled_instruction_identity", "instruction_salience", "typed_action", "policy_result", "downstream_action_measure"],
      "requiredTraceEvidence": "Baseline and candidate compiled mandates plus linked reasoning, action, and policy records.",
      "result": null,
      "promotionLimit": "Supports the named compilation mechanism, not general model quality or returns."
    },
    {
      "testId": "state-assembly-transfer",
      "question": "Does state-freshness and identity enforcement survive a new data path or deployment cell?",
      "frozenComponents": ["model", "mandate_compiler", "memory_policy", "tool_and_action_schema", "policy", "evaluation_fixtures"],
      "changedBoundary": "state_assembly_or_data_adapter",
      "requiredMeasures": ["snapshot_identity", "freshness_result", "open_order_consistency", "action_binding", "policy_response"],
      "requiredTraceEvidence": "Source timestamps, observation timestamps, snapshot hash, open-order state, and bound action identity.",
      "result": null,
      "promotionLimit": "Supports state integrity for the named adapters and fixtures, not decision skill."
    },
    {
      "testId": "memory-policy-transfer",
      "question": "Does a memory-provenance or recency intervention survive a new model, task set, or state path?",
      "frozenComponents": ["mandate_compiler", "state_schema", "tool_and_action_schema", "policy", "execution_adapter", "evaluation_definitions"],
      "changedBoundary": "memory_policy_or_declared_environment",
      "requiredMeasures": ["retrieval_identity", "source_provenance", "expiry_result", "use_in_action", "repeated_run_distribution"],
      "requiredTraceEvidence": "Retrieved record identifiers with source, event time, observation time, expiry rule, and downstream action link.",
      "result": null,
      "promotionLimit": "Supports memory behavior under the registered tasks and cutoff policy."
    },
    {
      "testId": "tool-action-schema-transfer",
      "question": "Does a tool or typed-action schema change improve valid behavior without hiding failures in repair or abstention?",
      "frozenComponents": ["model", "mandate", "state_snapshot", "memory_policy", "policy", "execution_adapter", "evaluation_fixtures"],
      "changedBoundary": "tool_schema_or_typed_action_schema",
      "requiredMeasures": ["tool_call_validity", "action_validity", "repair_rate", "abstention_rate", "policy_result", "submitted_payload_count"],
      "requiredTraceEvidence": "Raw tool call, parsed typed action, repair record, abstention reason, and policy-linked payload record.",
      "result": null,
      "promotionLimit": "Supports schema behavior while keeping action, repair, and abstention denominators separate."
    },
    {
      "testId": "policy-validation-transfer",
      "question": "Does deterministic validation preserve the mandate when model output or state changes at the policy boundary?",
      "frozenComponents": ["mandate", "policy_version", "typed_action_contract", "execution_adapter", "evaluation_fixtures"],
      "changedBoundary": "model_output_or_bound_state_fixture",
      "requiredMeasures": ["policy_decision", "reason_code", "payload_binding", "blocked_submission", "allowed_submission"],
      "requiredTraceEvidence": "Bound mandate, state identity, typed action, policy version, exact payload hash, and submission disposition.",
      "result": null,
      "promotionLimit": "Supports deterministic policy enforcement for the registered rules and payload path."
    },
    {
      "testId": "execution-reconciliation-transfer",
      "question": "Does the execution path preserve request identity and authoritative state across a new adapter or venue fixture?",
      "frozenComponents": ["typed_action", "policy_result", "payload", "request_identity", "recovery_policy", "evaluation_fixture"],
      "changedBoundary": "execution_adapter_acknowledgement_or_reconciliation_path",
      "requiredMeasures": ["submission_count", "acknowledgement_binding", "duplicate_prevention", "fill_and_fee_accuracy", "next_state_integrity"],
      "requiredTraceEvidence": "Payload hash, stable request identity, venue events, acknowledgement, fill, fee, and reconciled portfolio snapshot.",
      "result": null,
      "promotionLimit": "Supports execution and reconciliation behavior for the named path, not trading performance."
    },
    {
      "testId": "regime-venue-transfer",
      "question": "Does a component-level result survive a declared market regime, asset, or venue change?",
      "frozenComponents": ["model", "harness_commit", "mandate_distribution", "metric_definitions", "evidence_class_rules"],
      "changedBoundary": "market_regime_asset_universe_or_venue",
      "requiredMeasures": ["local_mechanism_measure", "action_distribution", "abstention_rate", "execution_outcome", "failure_layer", "uncertainty"],
      "requiredTraceEvidence": "Comparable trace schema across baseline and target environments with explicit data and execution differences.",
      "result": null,
      "promotionLimit": "Supports only the named environment move and cannot be generalized to universal cross-market transfer."
    }
  ]
}
