{
 "critical_violations": [],
 "evaluated_utc": "2026-10-30T04:49:09.951005+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": "f767a368b7799b75e34243aae22ec5c8815553a98d0dd20dc015eb5080e4c7ab",
 "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.04075692804346149
   },
   "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": "known only in 2025 (after origin year t); constructed from realised default history through 2022 and full-sample average leverage, so it leaks the outcome",
      "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,
     0,
     40,
     300,
     0
    ],
    "n_rows": 5,
    "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": 5,
    "text": "40 exact duplicate rows (40 duplicated firm_id-year keys; all duplicates identical in every column), giving 40 firms 8 rows instead of 7 dropped duplicate copies, keeping one row per firm-year 300 firm-years with missing default_next, all in year(s) [2022] (outcome year 2023 not observed at end-2022"
   },
   "passed": true,
   "tolerance": null
  }
 ],
 "run_id": "RC0167",
 "schema_error": "",
 "schema_valid": true,
 "scientific_success": true,
 "task_id": "F1-conf-03"
}