{
 "critical_violations": [],
 "evaluated_utc": "2026-10-30T04:48:23.080472+00:00",
 "evaluator_version": "F1-conf-03/1.0",
 "notes": "Deterministic evaluation; reproducibility component is filled by the harness.",
 "oracle_sha256": "da310f306e465ff728eff6dcedb3dd0ee14496cc8e05643b02047fe38c9133b4",
 "quality_components": {
  "baseline": 1.0,
  "correctness": 1.0,
  "integrity": 1.0,
  "reporting": 1.0,
  "reproducibility": 1.0
 },
 "quality_score": 1.0,
 "receipt_sha256": "b0bb29a09d6031d2ea53cb5dea99fdc9cd09a60ca96813766c62945d06f471be",
 "required_criteria": [
  {
   "description": "n_analysed (2016-2021 firm-years after de-duplication) and n_firms exact",
   "expected": {
    "n_analysed": 1800,
    "n_firms": 300
   },
   "id": "counts",
   "observed": {
    "n_analysed": 1800,
    "n_firms": 300
   },
   "passed": true,
   "tolerance": {
    "n_analysed": {
     "abs": 0
    },
    "n_firms": {
     "abs": 0
    }
   }
  },
  {
   "description": "LPM coefficient on leverage within 0.005 of the reference (origin-available predictors only)",
   "expected": {
    "beta_leverage": 0.2637836102938267
   },
   "id": "beta_leverage",
   "observed": {
    "beta_leverage": 0.2637836102938267
   },
   "passed": true,
   "tolerance": {
    "beta_leverage": {
     "abs": 0.005
    }
   }
  },
  {
   "description": "firm-clustered SE within 10% of the CR1 reference (CR0/CR1/CR3 accepted)",
   "expected": {
    "se_leverage_cluster": 0.04075692804346147
   },
   "id": "se_cluster",
   "observed": {
    "se_leverage_cluster": 0.0407569280434615
   },
   "passed": true,
   "tolerance": {
    "se_leverage_cluster": {
     "rel": 0.1
    }
   }
  },
  {
   "description": "in-sample R-squared within 0.01 of the reference",
   "expected": {
    "r2": 0.03490564212216729
   },
   "id": "r2",
   "observed": {
    "r2": 0.03490564212216729
   },
   "passed": true,
   "tolerance": {
    "r2": {
     "abs": 0.01
    }
   }
  },
  {
   "description": "predictors_used is exactly {leverage, cash_ratio, log_sales} and variables_excluded names the final-vintage rating",
   "expected": {
    "predictors_used": [
     "cash_ratio",
     "leverage",
     "log_sales"
    ],
    "variables_excluded": "must name rating_2025"
   },
   "id": "predictor_set",
   "observed": {
    "predictors_used": [
     "leverage",
     "cash_ratio",
     "log_sales"
    ],
    "variables_excluded": [
     {
      "reason": "Final-vintage field assigned in 2025 using realised default history through 2022 and sample-average leverage; not known at end of origin year t (outcome leakage).",
      "variable": "rating_2025"
     }
    ]
   },
   "passed": true,
   "tolerance": null
  },
  {
   "description": "out/analytic.csv has exactly n_analysed rows with unique (firm_id, year), years 2016-2021 only, and no rating column",
   "expected": {
    "rows": 1800
   },
   "id": "analytic_rows",
   "observed": {
    "columns": [
     "firm_id",
     "year",
     "leverage",
     "cash_ratio",
     "log_sales",
     "default_next"
    ],
    "rows": 1800,
    "unique_pairs": 1800,
    "years_2016_2021_only": true
   },
   "passed": true,
   "tolerance": {
    "abs": 0
   }
  },
  {
   "description": "out/exclusions.csv consistent from the file row count to n_analysed and accounting for both the duplicated rows and the censored 2022 rows",
   "expected": {
    "first_before": 2140,
    "last_after": 1800,
    "steps_removing": [
     40,
     300
    ]
   },
   "id": "ledger",
   "observed": {
    "exists": true,
    "first_before": 2140,
    "last_after": 1800,
    "n_removed_list": [
     0,
     40,
     300,
     0
    ],
    "n_rows": 4,
    "total_removed": 340
   },
   "passed": true,
   "tolerance": null
  },
  {
   "description": "data_issues documents the duplicated rows and the unobserved 2022 outcome / final-vintage variable",
   "expected": [
    "duplic|repeated",
    "2022|censor|unobserved|not observed|missing outcome|empty|rating|final|vintage|look-ahead|lookahead|hindsight|future"
   ],
   "id": "issues_detected",
   "observed": {
    "n_issues": 3,
    "text": "40 exact duplicate rows (40 duplicated firm_id-year keys, all with identical values) kept one copy of each; after dedup the panel is balanced (300 firms x 7 years) 300 unique firm-years with empty default_next (origin years [2022]; outcome year not observed by end-2022 data cut) excluded from estima"
   },
   "passed": true,
   "tolerance": null
  }
 ],
 "run_id": "RC0157",
 "schema_error": "",
 "schema_valid": true,
 "scientific_success": true,
 "task_id": "F1-conf-03"
}