{
  "schema_version": 1,
  "engine_version": "0.5.0",
  "engine_sha": "7725ad086c05c105a1dbe99e1df2014f0143372e",
  "reference": {
    "tool": "pvlib",
    "version": "0.15.2",
    "radiation_db": "PVGIS-ERA5",
    "meteo_db": "ERA5",
    "year_min": 2005,
    "year_max": 2023,
    "module": "Canadian_Solar_Inc__CS6K_275M",
    "inverter": "ABB__PVI_10_0_I_OUTD_x_US_480_y_z__480V_",
    "tilt_deg": 10.0,
    "modelchain": {
      "ac_model": "sandia",
      "aoi_model": "physical",
      "dc_model": "cec",
      "faiman_parameters": "{\"u0\": 25.0, \"u1\": 6.84}",
      "losses_model": "no_loss",
      "solar_position_method": "nrel_numpy",
      "spectral_model": "no_loss"
    }
  },
  "tolerance_source": "tools/oracle/tolerances.toml",
  "tolerances": {
    "solar_position": {
      "zenith_max_abs_diff_deg": 0.01,
      "azimuth_max_abs_diff_deg": 0.01,
      "aoi_max_abs_diff_deg": 0.01,
      "elevation_threshold_deg": 0.0
    },
    "poa": {
      "hourly_max_abs_diff_w_m2": 2.0,
      "hourly_max_rel_diff_pct": 1.0,
      "annual_max_rel_diff_pct": 0.5,
      "irradiance_threshold_w_m2": 50.0
    },
    "effective_irradiance": {
      "annual_max_rel_diff_pct": 0.5
    },
    "cell_temperature": {
      "hourly_max_abs_diff_deg_c": 0.2,
      "irradiance_threshold_w_m2": 50.0
    },
    "dc_power": {
      "hourly_max_rel_diff_pct": 0.5,
      "annual_max_rel_diff_pct": 0.5,
      "power_threshold_pnom_pct": 1.0
    },
    "ac_power": {
      "annual_max_rel_diff_pct": 1.0,
      "monthly_max_rel_diff_pct": 1.5
    },
    "iav": {
      "interannual_sigma_max_diff_pp": 0.1
    }
  },
  "formulation": [
    {
      "stage": "solar_position",
      "label": "Posisi matahari (zenith, azimuth, sudut datang)",
      "status": "modeled",
      "pending_issue": null,
      "doc": "docs/formulation/solar_position.md"
    },
    {
      "stage": "ghi",
      "label": "GHI tahunan (horizontal)",
      "status": "weather",
      "pending_issue": null,
      "doc": "docs/formulation/ghi.md"
    },
    {
      "stage": "adjusted_ghi",
      "label": "GHI setelah koreksi spektral",
      "status": "not_modeled",
      "pending_issue": "#12",
      "doc": "docs/formulation/adjusted_ghi.md"
    },
    {
      "stage": "poa_irradiance",
      "label": "Irradiance bidang modul (POA)",
      "status": "approximated",
      "pending_issue": "#12",
      "doc": "docs/formulation/poa_irradiance.md"
    },
    {
      "stage": "shaded_irradiance",
      "label": "Setelah bayangan",
      "status": "approximated",
      "pending_issue": "#23",
      "doc": "docs/formulation/shaded_irradiance.md"
    },
    {
      "stage": "effective_irradiance",
      "label": "Setelah pantulan (IAM)",
      "status": "not_modeled",
      "pending_issue": "#12",
      "doc": "docs/formulation/effective_irradiance.md"
    },
    {
      "stage": "soiled_irradiance",
      "label": "Setelah soiling",
      "status": "modeled",
      "pending_issue": null,
      "doc": "docs/formulation/soiled_irradiance.md"
    },
    {
      "stage": "total_irradiance",
      "label": "Total irradiance kolektor",
      "status": "modeled",
      "pending_issue": null,
      "doc": "docs/formulation/total_irradiance.md"
    },
    {
      "stage": "nameplate_power",
      "label": "Nameplate",
      "status": "modeled",
      "pending_issue": null,
      "doc": "docs/formulation/nameplate_power.md"
    },
    {
      "stage": "module_irradiance_derated_power",
      "label": "Output pada tingkat irradiance",
      "status": "not_modeled",
      "pending_issue": "#14",
      "doc": "docs/formulation/module_irradiance_derated_power.md"
    },
    {
      "stage": "module_mpp_power",
      "label": "Output pada suhu sel",
      "status": "approximated",
      "pending_issue": "#14",
      "doc": "docs/formulation/module_mpp_power.md"
    },
    {
      "stage": "module_power",
      "label": "Output setelah mismatch",
      "status": "approximated",
      "pending_issue": "#54",
      "doc": "docs/formulation/module_power.md"
    },
    {
      "stage": "optimizer_output_power",
      "label": "Output optimizer",
      "status": "not_modeled",
      "pending_issue": "#40",
      "doc": "docs/formulation/optimizer_output_power.md"
    },
    {
      "stage": "optimal_dc_power",
      "label": "DC optimal (setelah kabel DC)",
      "status": "approximated",
      "pending_issue": "#25",
      "doc": "docs/formulation/optimal_dc_power.md"
    },
    {
      "stage": "actual_dc_power",
      "label": "DC terbatas inverter (clipping)",
      "status": "approximated",
      "pending_issue": "#15",
      "doc": "docs/formulation/actual_dc_power.md"
    },
    {
      "stage": "ac_power",
      "label": "Output inverter",
      "status": "approximated",
      "pending_issue": "#15",
      "doc": "docs/formulation/ac_power.md"
    },
    {
      "stage": "energy_to_grid_power",
      "label": "Energi ke grid (kabel AC, trafo)",
      "status": "approximated",
      "pending_issue": "#25",
      "doc": "docs/formulation/energy_to_grid_power.md"
    },
    {
      "stage": "lid_derated_power",
      "label": "Setelah LID",
      "status": "modeled",
      "pending_issue": null,
      "doc": "docs/formulation/lid_derated_power.md"
    },
    {
      "stage": "availability_derated_power",
      "label": "Setelah ketidaktersediaan sistem",
      "status": "modeled",
      "pending_issue": null,
      "doc": "docs/formulation/availability_derated_power.md"
    },
    {
      "stage": "grid_power",
      "label": "Terkirim setelah batas ekspor (Permen ESDM 2/2024)",
      "status": "modeled",
      "pending_issue": null,
      "doc": "docs/formulation/grid_power.md"
    }
  ],
  "cases": [
    {
      "id": "bali_equator_dcac110",
      "site_id": "bali",
      "site_name": "Bali",
      "latitude": -8.672,
      "longitude": 115.212,
      "timezone": "Asia/Makassar",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/bali_equator_dcac110.csv",
      "fixture_sha256": "dd8f957e13395be15f417996038af3d69cb99e04acd98e60bc474d1e0f256add",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "68377bce732e8611a796a788f5c0fc4b8a50721065febbad58e840db766d67ef",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 2090.8120783000027,
        "engine_poa_kwh_m2": 2072.7994734451922,
        "oracle_ac_kwh": 20196.88045410002,
        "engine_ac_kwh": 20104.901906943345,
        "ac_bias_pct": -0.455409672625971
      },
      "stages": [
        {
          "verdict": "PASS",
          "gate": {
            "gated": true,
            "ci_test": "oracle_solar_position_bali",
            "reason": null,
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4443,
          "annual_bias_pct": null,
          "hourly_rmse": 2.866572692871542e-7,
          "hourly_max_abs_diff": 4.998314580006991e-7,
          "hourly_max_abs_diff_azimuth": 4.999471165945124e-7,
          "hourly_max_rel_diff_pct": 0.000038165773367067846,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.998314580006991e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999471165945124e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.998830007707511e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.866572692871542e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": 2.4170812221457224e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 4.8663811791366085e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.771355663767596e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4443.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3990,
          "annual_bias_pct": -0.8615123779778416,
          "hourly_rmse": 7.776919251174541,
          "hourly_max_abs_diff": 20.6344254878652,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 7.34579426954491,
          "hourly_pass_fraction": 0.19974937343358395,
          "monthly_bias_pct": [
            0.620533550149373,
            -0.029558467112672147,
            -0.7844643746979774,
            -1.1452274066539143,
            -1.8991973135267632,
            -2.421708344029576,
            -2.225149982800511,
            -1.7395060321168727,
            -1.1800008613194166,
            -0.29235304429707476,
            0.4484380596694334,
            0.8563068352835611
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.8615123779778416,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 20.6344254878652,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 7.34579426954491,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.3680117214921452
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.776919251174541
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -4.6628604620974565
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.8918553666279224
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4874747435337372
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.19974937343358395
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3990.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3990,
          "annual_bias_pct": null,
          "hourly_rmse": 6.63607113772859,
          "hourly_max_abs_diff": 27.416605160619504,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 85.34192407494182,
          "hourly_pass_fraction": 0.0,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 27.416605160619504,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 6.63607113772859
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 5.505239471577492
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 14.056527816375716
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 16.943880283594844
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3990.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4134,
          "annual_bias_pct": 0.26710689505287427,
          "hourly_rmse": 217.98937077740723,
          "hourly_max_abs_diff": 866.1033740630482,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 80.75859471039676,
          "hourly_pass_fraction": 0.11804547653604257,
          "monthly_bias_pct": [
            1.8844878878920606,
            1.7405806538752084,
            1.3494992767854321,
            0.5616119546322927,
            0.160373024810079,
            -1.6710678260561458,
            -1.746322702524302,
            -1.271034929027726,
            -0.31111866366872853,
            1.021240233429785,
            2.052539353466549,
            -0.35208552769920465
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 0.26710689505287427,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 80.75859471039676,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 22.80268116827697
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 217.98937077740723
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 12.804563308028493
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 0.2535250212144534
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.316098762713427
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.11804547653604257
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4134.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4167,
          "annual_bias_pct": -0.4554096726264372,
          "hourly_rmse": 241.2119057621284,
          "hourly_max_abs_diff": 919.8488711005266,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 13481.627195331797,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            1.3147151432538708,
            1.1005625626997873,
            0.635303819788652,
            -0.23930238710088164,
            -0.5917651746131353,
            -2.4826107515964853,
            -2.538758003716247,
            -2.065956071761541,
            -1.0993955167263452,
            0.24630444810610844,
            1.4108488186736503,
            -0.8379851857880963
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.4554096726264372,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 2.538758003716247,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 23.82692024279044
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 241.2119057621284
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": -23.622944280975734
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.4873862032432981
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.976659705418739
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4167.0
            }
          ]
        }
      ]
    },
    {
      "id": "bali_equator_dcac130",
      "site_id": "bali",
      "site_name": "Bali",
      "latitude": -8.672,
      "longitude": 115.212,
      "timezone": "Asia/Makassar",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 48,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.3221,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/bali_equator_dcac130.csv",
      "fixture_sha256": "111a2ff18bc403202d52467926f39c01b8fef0714e69d4f39fdd1b451b8e709d",
      "hemisphere": "selatan",
      "pnom_kwp": 13.221119999999999,
      "weather_sha256": "68377bce732e8611a796a788f5c0fc4b8a50721065febbad58e840db766d67ef",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 2090.8120783000027,
        "engine_poa_kwh_m2": 2072.7994734451922,
        "oracle_ac_kwh": 24048.59449499998,
        "engine_ac_kwh": 24096.99069541272,
        "ac_bias_pct": 0.2012433634023853
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4443,
          "annual_bias_pct": null,
          "hourly_rmse": 2.866572692871542e-7,
          "hourly_max_abs_diff": 4.998314580006991e-7,
          "hourly_max_abs_diff_azimuth": 4.999471165945124e-7,
          "hourly_max_rel_diff_pct": 0.000038165773367067846,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.998314580006991e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999471165945124e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.998830007707511e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.866572692871542e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": 2.4170812221457224e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 4.8663811791366085e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.771355663767596e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4443.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3990,
          "annual_bias_pct": -0.8615123779778416,
          "hourly_rmse": 7.776919251174541,
          "hourly_max_abs_diff": 20.6344254878652,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 7.34579426954491,
          "hourly_pass_fraction": 0.19974937343358395,
          "monthly_bias_pct": [
            0.620533550149373,
            -0.029558467112672147,
            -0.7844643746979774,
            -1.1452274066539143,
            -1.8991973135267632,
            -2.421708344029576,
            -2.225149982800511,
            -1.7395060321168727,
            -1.1800008613194166,
            -0.29235304429707476,
            0.4484380596694334,
            0.8563068352835611
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.8615123779778416,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 20.6344254878652,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 7.34579426954491,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.3680117214921452
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.776919251174541
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -4.6628604620974565
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.8918553666279224
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4874747435337372
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.19974937343358395
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3990.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3990,
          "annual_bias_pct": null,
          "hourly_rmse": 6.63607113772859,
          "hourly_max_abs_diff": 27.416605160619504,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 85.34192407494182,
          "hourly_pass_fraction": 0.0,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 27.416605160619504,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 6.63607113772859
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 5.505239471577492
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 14.056527816375716
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 16.943880283594844
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3990.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4134,
          "annual_bias_pct": 0.26710687289031926,
          "hourly_rmse": 261.58724528345635,
          "hourly_max_abs_diff": 1039.323988875658,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 80.75860298150198,
          "hourly_pass_fraction": 0.11804547653604257,
          "monthly_bias_pct": [
            1.8844878822499904,
            1.7405806173330163,
            1.3494992615831554,
            0.5616119271881084,
            0.16037302185899982,
            -1.6710678744576533,
            -1.7463226772637983,
            -1.2710349367918212,
            -0.31111868038357493,
            1.0212402366634996,
            2.0525392987735516,
            -0.35208562698948015
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 0.26710687289031926,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 80.75860298150198,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 27.36321723969109
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 261.58724528345635
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 15.365474977858455
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 0.2535250048090112
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.316098767791387
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.11804547653604257
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4134.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4178,
          "annual_bias_pct": 0.20124336340289747,
          "hourly_rmse": 294.2554876610737,
          "hourly_max_abs_diff": 915.7608378561983,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 14896.74390810079,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            1.4292923743076287,
            1.3860875176167913,
            1.5411596448745464,
            1.3149157568313796,
            -0.34702291089251863,
            -2.5811192752095433,
            -2.6212465845884347,
            -1.2395746161597796,
            -0.19696947925770183,
            2.3211008134155,
            1.530817579308429,
            -0.3606986132680992
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 0.20124336340289747,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 2.6212465845884347,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 33.16157947555389
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 294.2554876610737
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 9.980340938263145
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 0.17339002680066382
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.1121466899180925
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4178.0
            }
          ]
        }
      ]
    },
    {
      "id": "bali_reverse_dcac110",
      "site_id": "bali",
      "site_name": "Bali",
      "latitude": -8.672,
      "longitude": 115.212,
      "timezone": "Asia/Makassar",
      "azimuth_deg": 180.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/bali_reverse_dcac110.csv",
      "fixture_sha256": "a679781a5ed2606a67cafdfd8b567ce8ecb892717e939df0c5c4221c08a50309",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "68377bce732e8611a796a788f5c0fc4b8a50721065febbad58e840db766d67ef",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1972.0251715000002,
        "engine_poa_kwh_m2": 1967.9201515670761,
        "oracle_ac_kwh": 19042.620658699998,
        "engine_ac_kwh": 19149.22052792348,
        "ac_bias_pct": 0.5597962125805424
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4443,
          "annual_bias_pct": null,
          "hourly_rmse": 2.866572692871542e-7,
          "hourly_max_abs_diff": 4.998314580006991e-7,
          "hourly_max_abs_diff_azimuth": 4.999471165945124e-7,
          "hourly_max_rel_diff_pct": 0.000038165773367067846,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.998314580006991e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999471165945124e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.999670366601094e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.866572692871542e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": 2.4170812221457224e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 4.8663811791366085e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.771355663767596e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4443.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3987,
          "annual_bias_pct": -0.20816265391793307,
          "hourly_rmse": 5.574910077170763,
          "hourly_max_abs_diff": 15.603976146891,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 13.139477278651986,
          "hourly_pass_fraction": 0.25608226736894907,
          "monthly_bias_pct": [
            -1.46330447700364,
            -1.014524175150049,
            -0.26064194406060603,
            0.2180409056331138,
            1.0364855266255166,
            1.4383950798790952,
            1.2220157488850403,
            0.6658898671001311,
            0.04920345665216723,
            -0.5834496484421894,
            -1.293654974598886,
            -1.577342719311197
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.20816265391793307,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 15.603976146891,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 13.139477278651986,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 1.623612738007236
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 5.574910077170763
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -1.0487290507010885
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.21262150350690007
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.1302688351499346
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.25608226736894907
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3987.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3987,
          "annual_bias_pct": null,
          "hourly_rmse": 6.499936304234133,
          "hourly_max_abs_diff": 29.655930318634994,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 91.21253135248976,
          "hourly_pass_fraction": 0.0,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 29.655930318634994,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 6.499936304234133
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 5.305809361241735
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 13.792135537602318
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 16.896197430055885
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3987.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4139,
          "annual_bias_pct": 1.2535165850622767,
          "hourly_rmse": 212.59393917587744,
          "hourly_max_abs_diff": 1081.955393530705,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 75.1015409774037,
          "hourly_pass_fraction": 0.13771442377385842,
          "monthly_bias_pct": [
            -0.7239109418428926,
            0.5659758503310639,
            2.0303578139793896,
            2.8298813856298333,
            4.45767093777363,
            4.10027907379141,
            3.2523583731305568,
            2.179557890188348,
            1.2785613533194466,
            0.5477186538724403,
            -0.16899446577758623,
            -3.632701990513269
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.2535165850622767,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 75.1015409774037,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 38.81161075648799
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 212.59393917587744
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 59.01407260947063
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.24032507089566
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.468181588233437
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.13771442377385842
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4139.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4170,
          "annual_bias_pct": 0.5597962125800162,
          "hourly_rmse": 224.36619983596043,
          "hourly_max_abs_diff": 1126.5615537894755,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 3011.0830326696237,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            -1.3546370134647518,
            -0.10931498870971729,
            1.3055743907542052,
            2.0379938559212714,
            3.8142727238002756,
            3.4591355243894237,
            2.5938350788620768,
            1.4172516382403393,
            0.49255989679893214,
            -0.24274881622370603,
            -0.8416469073897666,
            -4.128069325337724
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 0.5597962125800162,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 4.128069325337724,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 32.8984778639372
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 224.36619983596043
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 24.154444799200526
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 0.5289399847738311
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.913226336252749
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4170.0
            }
          ]
        }
      ]
    },
    {
      "id": "balikpapan_equator_dcac110",
      "site_id": "balikpapan",
      "site_name": "Balikpapan",
      "latitude": -1.237,
      "longitude": 116.852,
      "timezone": "Asia/Makassar",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/balikpapan_equator_dcac110.csv",
      "fixture_sha256": "0d99ba5432935b6e715847eef699356b528c99591cae278671d68e121dc1a830",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "0143a08ed29352d2a3d1edf8fbf845a4145cae73b39fcbf2145d59991f2ebdee",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1891.3909563999953,
        "engine_poa_kwh_m2": 1880.419122590873,
        "oracle_ac_kwh": 18100.491962699958,
        "engine_ac_kwh": 18256.82284159664,
        "ac_bias_pct": 0.863683038112094
      },
      "stages": [
        {
          "verdict": "PASS",
          "gate": {
            "gated": true,
            "ci_test": "oracle_solar_position_balikpapan",
            "reason": null,
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4396,
          "annual_bias_pct": null,
          "hourly_rmse": 2.908325719111663e-7,
          "hourly_max_abs_diff": 4.999059797228256e-7,
          "hourly_max_abs_diff_azimuth": 4.999843667974346e-7,
          "hourly_max_rel_diff_pct": 0.000032300446291655364,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.999059797228256e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999843667974346e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.996391034239878e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.908325719111663e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": 7.500508815444269e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.54086305467463e-8
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.974703532527946e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4396.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3974,
          "annual_bias_pct": -0.5800933842892975,
          "hourly_rmse": 7.194258750160816,
          "hourly_max_abs_diff": 19.557160099295174,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 8.073073775717628,
          "hourly_pass_fraction": 0.1731253145445395,
          "monthly_bias_pct": [
            1.1817167395145711,
            0.3341084499019928,
            -0.517322003449648,
            -1.3610322898373135,
            -1.9723753794780512,
            -2.3347528214412914,
            -2.1249121815777205,
            -1.5226445736011596,
            -0.824550397988423,
            0.11222869018900472,
            1.3696351731321998,
            1.3864309849025904
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.5800933842892975,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 19.557160099295174,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 8.073073775717628,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.1746964835325358
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.194258750160816
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -2.9284689277922484
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.6165580596646707
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.5146748437821937
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.1731253145445395
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3974.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3974,
          "annual_bias_pct": null,
          "hourly_rmse": 4.018426976692179,
          "hourly_max_abs_diff": 11.738308471099614,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 23.06238272316404,
          "hourly_pass_fraction": 0.0005032712632108706,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 11.738308471099614,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 4.018426976692179
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.385218372706685
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 8.200439026104162
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 9.734339642280894
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0005032712632108706
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3974.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4072,
          "annual_bias_pct": 1.564815384465786,
          "hourly_rmse": 161.67978405827904,
          "hourly_max_abs_diff": 751.3569515623553,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 139.23909945104734,
          "hourly_pass_fraction": 0.112475442043222,
          "monthly_bias_pct": [
            3.9217530442769646,
            2.780908633048519,
            2.261034959034476,
            0.8755168288831531,
            0.20483318841746714,
            -0.39169172267242475,
            -0.4559826294855041,
            -0.07269404290143604,
            0.8110967371768307,
            1.9940651246286727,
            3.581612823311895,
            4.309067079873941
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.564815384465786,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 139.23909945104734,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 33.608635415997554
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 161.67978405827904
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 71.18793343639328
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.5487006331920448
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.5173599212447644
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.112475442043222
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4072.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4082,
          "annual_bias_pct": 0.8636830381119971,
          "hourly_rmse": 170.31298874792034,
          "hourly_max_abs_diff": 753.8969334998612,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 25985.233303872123,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            3.317709770144714,
            2.1171019101809794,
            1.537270373257135,
            0.13283867382971687,
            -0.5298066612548072,
            -1.0826594505991964,
            -1.150786519642793,
            -0.8578687430898742,
            -0.021759884892347387,
            1.2744969432804842,
            3.0685621419933593,
            3.7058245087117574
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 0.8636830381119971,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.7058245087117574,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 26.93320153265842
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 170.31298874792034
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 36.16402714478341
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 0.8155665553688405
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.840876930315814
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4082.0
            }
          ]
        }
      ]
    },
    {
      "id": "balikpapan_equator_dcac130",
      "site_id": "balikpapan",
      "site_name": "Balikpapan",
      "latitude": -1.237,
      "longitude": 116.852,
      "timezone": "Asia/Makassar",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 48,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.3221,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/balikpapan_equator_dcac130.csv",
      "fixture_sha256": "5bb34dd143712d56efdfd05466abe52e9b7d255fc7212daaeb6a92e8b282e4c8",
      "hemisphere": "selatan",
      "pnom_kwp": 13.221119999999999,
      "weather_sha256": "0143a08ed29352d2a3d1edf8fbf845a4145cae73b39fcbf2145d59991f2ebdee",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1891.3909563999953,
        "engine_poa_kwh_m2": 1880.419122590873,
        "oracle_ac_kwh": 21728.151330000048,
        "engine_ac_kwh": 21905.15396518219,
        "ac_bias_pct": 0.8146235383484097
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4396,
          "annual_bias_pct": null,
          "hourly_rmse": 2.908325719111663e-7,
          "hourly_max_abs_diff": 4.999059797228256e-7,
          "hourly_max_abs_diff_azimuth": 4.999843667974346e-7,
          "hourly_max_rel_diff_pct": 0.000032300446291655364,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.999059797228256e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999843667974346e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.996391034239878e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.908325719111663e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": 7.500508815444269e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.54086305467463e-8
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.974703532527946e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4396.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3974,
          "annual_bias_pct": -0.5800933842892975,
          "hourly_rmse": 7.194258750160816,
          "hourly_max_abs_diff": 19.557160099295174,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 8.073073775717628,
          "hourly_pass_fraction": 0.1731253145445395,
          "monthly_bias_pct": [
            1.1817167395145711,
            0.3341084499019928,
            -0.517322003449648,
            -1.3610322898373135,
            -1.9723753794780512,
            -2.3347528214412914,
            -2.1249121815777205,
            -1.5226445736011596,
            -0.824550397988423,
            0.11222869018900472,
            1.3696351731321998,
            1.3864309849025904
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.5800933842892975,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 19.557160099295174,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 8.073073775717628,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.1746964835325358
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.194258750160816
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -2.9284689277922484
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.6165580596646707
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.5146748437821937
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.1731253145445395
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3974.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3974,
          "annual_bias_pct": null,
          "hourly_rmse": 4.018426976692179,
          "hourly_max_abs_diff": 11.738308471099614,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 23.06238272316404,
          "hourly_pass_fraction": 0.0005032712632108706,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 11.738308471099614,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 4.018426976692179
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.385218372706685
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 8.200439026104162
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 9.734339642280894
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0005032712632108706
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3974.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4072,
          "annual_bias_pct": 1.5648153862745005,
          "hourly_rmse": 194.01573986399868,
          "hourly_max_abs_diff": 901.6283418748262,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 139.2391184413897,
          "hourly_pass_fraction": 0.112475442043222,
          "monthly_bias_pct": [
            3.921753068468603,
            2.7809085687399366,
            2.261034945044958,
            0.8755169010651372,
            0.20483320328574575,
            -0.3916917215212117,
            -0.4559825983486184,
            -0.07269408901211877,
            0.8110967539048729,
            1.994065096371964,
            3.5816128584118943,
            4.309067070613633
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.5648153862745005,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 139.2391184413897,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 40.33036245957367
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 194.01573986399868
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 85.42552001561629
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.548700631202749
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.517359902939016
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.112475442043222
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4072.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4103,
          "annual_bias_pct": 0.8146235383485758,
          "hourly_rmse": 205.2161755957413,
          "hourly_max_abs_diff": 889.5963401998335,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 75335.2933257008,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            3.0426600046516437,
            2.088621985098974,
            1.5676352801351106,
            -0.0284598995892726,
            -0.6922088749941827,
            -1.3292918440619181,
            -1.3663107394277891,
            -0.7497694103651922,
            0.2805620355619497,
            1.6786547069536633,
            2.7537556901340263,
            3.402139115877023
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 0.8146235383485758,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.402139115877023,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 31.677367627272993
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 205.2161755957413
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 41.14459978254055
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 0.7769473359414583
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.875166164305819
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4103.0
            }
          ]
        }
      ]
    },
    {
      "id": "balikpapan_reverse_dcac110",
      "site_id": "balikpapan",
      "site_name": "Balikpapan",
      "latitude": -1.237,
      "longitude": 116.852,
      "timezone": "Asia/Makassar",
      "azimuth_deg": 180.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/balikpapan_reverse_dcac110.csv",
      "fixture_sha256": "a590c8184f4ccd6284668d191b9f5242b92fca7a2cd68fcba859cee983127163",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "0143a08ed29352d2a3d1edf8fbf845a4145cae73b39fcbf2145d59991f2ebdee",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1870.4996863999977,
        "engine_poa_kwh_m2": 1860.3543600727285,
        "oracle_ac_kwh": 17883.336502099977,
        "engine_ac_kwh": 18069.505550886046,
        "ac_bias_pct": 1.0410196596379404
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4396,
          "annual_bias_pct": null,
          "hourly_rmse": 2.908325719111663e-7,
          "hourly_max_abs_diff": 4.999059797228256e-7,
          "hourly_max_abs_diff_azimuth": 4.999843667974346e-7,
          "hourly_max_rel_diff_pct": 0.000032300446291655364,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.999059797228256e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999843667974346e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.999865765853428e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.908325719111663e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": 7.500508815444269e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.54086305467463e-8
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.974703532527946e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4396.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3978,
          "annual_bias_pct": -0.5423858876338602,
          "hourly_rmse": 6.89953870373461,
          "hourly_max_abs_diff": 19.6164437537675,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 7.761391880443355,
          "hourly_pass_fraction": 0.19457013574660634,
          "monthly_bias_pct": [
            -2.1204418940345002,
            -1.4190696451652838,
            -0.6370729222840528,
            0.2723444544101014,
            0.9323250981692904,
            1.3776510393818218,
            1.142679577487101,
            0.38811661002887193,
            -0.3449644962420997,
            -0.9786520656357847,
            -1.851387683719684,
            -2.269682855926362
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.5423858876338602,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 19.6164437537675,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 7.761391880443355,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.0293840695775027
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 6.89953870373461
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -2.6010702442596636
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.5544224498370857
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4706481531255635
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.19457013574660634
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3978.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3978,
          "annual_bias_pct": null,
          "hourly_rmse": 3.962136060875585,
          "hourly_max_abs_diff": 11.892057000798253,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 23.20223051017119,
          "hourly_pass_fraction": 0.0015082956259426848,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 11.892057000798253,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.962136060875585
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.3262191204064933
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 8.082796735252924
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 9.62809101210365
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0015082956259426848
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3978.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4078,
          "annual_bias_pct": 1.7314085994606911,
          "hourly_rmse": 160.551044203842,
          "hourly_max_abs_diff": 762.8129789977916,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 79.7860362507754,
          "hourly_pass_fraction": 0.14713094654242276,
          "monthly_bias_pct": [
            0.02103142204284469,
            0.5998159637704453,
            2.083720997052633,
            2.8968326612316586,
            4.045026790772631,
            4.467645120016668,
            3.931682745311137,
            2.549853720472083,
            1.458681575677088,
            0.5952637948467624,
            -0.16475352216237016,
            -0.17054965285911972
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.7314085994606911,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 79.7860362507754,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 34.337842824920905
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 160.551044203842
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 77.88883407924094
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.7173789781176574
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.540006619562485
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.14713094654242276
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4078.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4102,
          "annual_bias_pct": 1.0410196596379695,
          "hourly_rmse": 167.76527219494983,
          "hourly_max_abs_diff": 744.4172478378796,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 3559780.0572143104,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            -0.6510694482541818,
            -0.09562007599053372,
            1.3604125713485467,
            2.18894704763215,
            3.4046234726833506,
            3.9193347326634362,
            3.3446659469831377,
            1.8022463780672286,
            0.6291974120056126,
            -0.1437420130519533,
            -0.7598510114600098,
            -0.8728266826505685
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.0410196596379695,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.9193347326634362,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 26.773317992032133
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 167.76527219494983
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 43.77552670854051
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.0041035157916267
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.848125021093656
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4102.0
            }
          ]
        }
      ]
    },
    {
      "id": "cikarang_equator_dcac110",
      "site_id": "cikarang",
      "site_name": "Cikarang",
      "latitude": -6.3106,
      "longitude": 107.1353,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/cikarang_equator_dcac110.csv",
      "fixture_sha256": "643a36cc366e034e7ca0c81eafa2e62e143912d303365965f485bb0909ef38d6",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "e233b66b92c558082b810e16762588a61a6a49301eb4591eb42cd685d19665f3",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1950.6083177000025,
        "engine_poa_kwh_m2": 1935.9730548934285,
        "oracle_ac_kwh": 18435.19099410004,
        "engine_ac_kwh": 18679.48253836868,
        "ac_bias_pct": 1.325137040060076
      },
      "stages": [
        {
          "verdict": "PASS",
          "gate": {
            "gated": true,
            "ci_test": "oracle_solar_position_cikarang",
            "reason": null,
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4367,
          "annual_bias_pct": null,
          "hourly_rmse": 2.907169575217903e-7,
          "hourly_max_abs_diff": 4.997610432155852e-7,
          "hourly_max_abs_diff_azimuth": 4.998187250748742e-7,
          "hourly_max_rel_diff_pct": 0.000042608984146910087,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.997610432155852e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.998187250748742e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.999744476208434e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.907169575217903e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -4.076513222930552e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -8.362506491906948e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.963730059572102e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4367.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3815,
          "annual_bias_pct": -0.7502922382608733,
          "hourly_rmse": 7.417673189346809,
          "hourly_max_abs_diff": 20.169021647079262,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 30.25234353512612,
          "hourly_pass_fraction": 0.19528178243774574,
          "monthly_bias_pct": [
            1.0230369943593678,
            0.305302429300831,
            -0.7047508304142022,
            -1.4327634545180827,
            -1.9819511942482777,
            -2.038745988548126,
            -1.873090292879254,
            -1.4803464092909784,
            -0.8319527273817144,
            -0.1952865233720245,
            0.464784996406559,
            0.8298250328993234
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.7502922382608733,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 20.169021647079262,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 30.25234353512612,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.1549697893796407
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.417673189346809
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -4.006954553847637
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.7893312050520972
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4612097138979392
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.19528178243774574
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3815.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3815,
          "annual_bias_pct": null,
          "hourly_rmse": 3.4239075427940513,
          "hourly_max_abs_diff": 9.955413542792733,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 20.244534352430154,
          "hourly_pass_fraction": 0.0002621231979030144,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 9.955413542792733,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.4239075427940513
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 2.951147078926844
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 6.892478532567159
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 7.996622535256492
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0002621231979030144
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3815.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4249,
          "annual_bias_pct": 1.9615339204916087,
          "hourly_rmse": 158.89834643088744,
          "hourly_max_abs_diff": 713.7072869207627,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 91.92658870451012,
          "hourly_pass_fraction": 0.15791951047305247,
          "monthly_bias_pct": [
            3.282898268412514,
            2.13398680902931,
            1.5339245435654143,
            0.8774964636917999,
            0.46673051639244445,
            0.4372047349536974,
            0.8787462690691481,
            1.445732885393025,
            2.7453117479286795,
            2.5988581074840553,
            3.697845986794681,
            4.0028890335477145
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.9615339204916087,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 91.92658870451012,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 36.09673516559722
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 158.89834643088744
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 87.93079883019362
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.9580408988218736
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.538344530085275
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.15791951047305247
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4249.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4268,
          "annual_bias_pct": 1.3251370400604539,
          "hourly_rmse": 159.3685506305399,
          "hourly_max_abs_diff": 727.044643443932,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 2112.5648895407094,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            2.801102072560925,
            1.7196635470614139,
            0.8779078830429596,
            0.271678156401011,
            -0.144828435464657,
            -0.2751366069621957,
            0.09755649533668376,
            0.6798103672207153,
            2.0381058036137074,
            2.0221848220959133,
            3.093409860566041,
            3.4342185248601322
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.3251370400604539,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.4342185248601322,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 27.341428002744426
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 159.3685506305399
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 57.07893116170562
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.3214556783063702
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.689600906813654
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4268.0
            }
          ]
        }
      ]
    },
    {
      "id": "cikarang_equator_dcac130",
      "site_id": "cikarang",
      "site_name": "Cikarang",
      "latitude": -6.3106,
      "longitude": 107.1353,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 48,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.3221,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/cikarang_equator_dcac130.csv",
      "fixture_sha256": "7cef47673e11903ed1a1d7caa2824dfe1939c158583c1fc43e658c1685b045bc",
      "hemisphere": "selatan",
      "pnom_kwp": 13.221119999999999,
      "weather_sha256": "e233b66b92c558082b810e16762588a61a6a49301eb4591eb42cd685d19665f3",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1950.6083177000025,
        "engine_poa_kwh_m2": 1935.9730548934285,
        "oracle_ac_kwh": 22092.138274800043,
        "engine_ac_kwh": 22396.48706717306,
        "ac_bias_pct": 1.377633928356226
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4367,
          "annual_bias_pct": null,
          "hourly_rmse": 2.907169575217903e-7,
          "hourly_max_abs_diff": 4.997610432155852e-7,
          "hourly_max_abs_diff_azimuth": 4.998187250748742e-7,
          "hourly_max_rel_diff_pct": 0.000042608984146910087,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.997610432155852e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.998187250748742e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.999744476208434e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.907169575217903e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -4.076513222930552e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -8.362506491906948e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.963730059572102e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4367.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3815,
          "annual_bias_pct": -0.7502922382608733,
          "hourly_rmse": 7.417673189346809,
          "hourly_max_abs_diff": 20.169021647079262,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 30.25234353512612,
          "hourly_pass_fraction": 0.19528178243774574,
          "monthly_bias_pct": [
            1.0230369943593678,
            0.305302429300831,
            -0.7047508304142022,
            -1.4327634545180827,
            -1.9819511942482777,
            -2.038745988548126,
            -1.873090292879254,
            -1.4803464092909784,
            -0.8319527273817144,
            -0.1952865233720245,
            0.464784996406559,
            0.8298250328993234
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.7502922382608733,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 20.169021647079262,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 30.25234353512612,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.1549697893796407
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.417673189346809
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -4.006954553847637
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.7893312050520972
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4612097138979392
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.19528178243774574
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3815.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3815,
          "annual_bias_pct": null,
          "hourly_rmse": 3.4239075427940513,
          "hourly_max_abs_diff": 9.955413542792733,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 20.244534352430154,
          "hourly_pass_fraction": 0.0002621231979030144,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 9.955413542792733,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.4239075427940513
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 2.951147078926844
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 6.892478532567159
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 7.996622535256492
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0002621231979030144
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3815.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4249,
          "annual_bias_pct": 1.961533931355024,
          "hourly_rmse": 190.6780157851463,
          "hourly_max_abs_diff": 856.448704304915,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 91.92658419157904,
          "hourly_pass_fraction": 0.15791951047305247,
          "monthly_bias_pct": [
            3.282898284620775,
            2.133986909190834,
            1.533924572922338,
            0.8774964107873843,
            0.4667304842276679,
            0.4372047836536227,
            0.8787463555146221,
            1.4457329679276618,
            2.745311780182216,
            2.5988580132082064,
            3.697845950441715,
            4.0028889752833425
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.961533931355024,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 91.92658419157904,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 43.316082188354386
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 190.6780157851463
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 105.51695912812211
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.95804090888522
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.5383445316978666
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.15791951047305247
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4249.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4269,
          "annual_bias_pct": 1.3776339283564756,
          "hourly_rmse": 204.31376330157187,
          "hourly_max_abs_diff": 857.1240121327183,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 771.2739242255252,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            2.5051762856927393,
            1.4644206529957704,
            0.9871427954334298,
            0.2023263439065628,
            -0.342251322575056,
            -0.37379432111605065,
            0.30334212381808573,
            0.9245653415772815,
            3.0364838489327615,
            2.00929252535696,
            2.961185743746859,
            3.194529309191175
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.3776339283564756,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.194529309191175,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 34.588900268323584
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 204.31376330157187
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 71.12420482169277
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.3743768330933759
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.94808073661808
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4269.0
            }
          ]
        }
      ]
    },
    {
      "id": "cikarang_reverse_dcac110",
      "site_id": "cikarang",
      "site_name": "Cikarang",
      "latitude": -6.3106,
      "longitude": 107.1353,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 180.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/cikarang_reverse_dcac110.csv",
      "fixture_sha256": "0e3f97d4eb10737546b1cda0df6c7c46dc5cbac529325ff4e38ccc2c669bbdc6",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "e233b66b92c558082b810e16762588a61a6a49301eb4591eb42cd685d19665f3",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1863.4455491000028,
        "engine_poa_kwh_m2": 1858.3304849611684,
        "oracle_ac_kwh": 17608.170525499943,
        "engine_ac_kwh": 17995.407354948115,
        "ac_bias_pct": 2.1991883193508346
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4367,
          "annual_bias_pct": null,
          "hourly_rmse": 2.907169575217903e-7,
          "hourly_max_abs_diff": 4.997610432155852e-7,
          "hourly_max_abs_diff_azimuth": 4.998187250748742e-7,
          "hourly_max_rel_diff_pct": 0.000042608984146910087,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.997610432155852e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.998187250748742e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.998183555926516e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.907169575217903e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -4.076513222930552e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -8.362506491906948e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.963730059572102e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4367.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3822,
          "annual_bias_pct": -0.27449496129923473,
          "hourly_rmse": 5.9238449812732,
          "hourly_max_abs_diff": 16.81106123074244,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 9.661945288788951,
          "hourly_pass_fraction": 0.23338566195709054,
          "monthly_bias_pct": [
            -1.7581804019944764,
            -1.021285120972043,
            -0.2510998627491433,
            0.6045836185557526,
            1.1992952783095,
            1.2155386437739748,
            0.9739530967357286,
            0.5217319447315966,
            -0.05985946944512856,
            -0.8161886001720133,
            -1.564677923878705,
            -1.7964425537275306
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.27449496129923473,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 16.81106123074244,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 9.661945288788951,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 1.7492948648660631
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 5.9238449812732
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -1.63990355665372
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.3385782531584887
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.2230506346567298
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.23338566195709054
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3822.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3822,
          "annual_bias_pct": null,
          "hourly_rmse": 3.363160902647669,
          "hourly_max_abs_diff": 9.50430502152755,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 20.21848254387898,
          "hourly_pass_fraction": 0.002354788069073783,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 9.50430502152755,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.363160902647669
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 2.902596887407469
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 6.892754335903069
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 7.986448960458137
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.002354788069073783
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3822.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4238,
          "annual_bias_pct": 2.81902435284641,
          "hourly_rmse": 195.16258731717102,
          "hourly_max_abs_diff": 881.7998480122678,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 96.35412751613967,
          "hourly_pass_fraction": 0.09910335063709297,
          "monthly_bias_pct": [
            0.23463437710116258,
            0.5286998086121644,
            2.017376183039386,
            3.557692241503955,
            4.90579973793773,
            5.466322171995343,
            5.379636315634899,
            4.422954216186045,
            3.7567513294059633,
            1.8847677855394633,
            1.2575799448394578,
            0.9496970939828504
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.81902435284641,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 96.35412751613967,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 50.313543337692586
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 195.16258731717102
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 120.94644991998311
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.812004944865208
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.537530129670212
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.09910335063709297
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4238.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4267,
          "annual_bias_pct": 2.1991883193508333,
          "hourly_rmse": 188.22826811296108,
          "hourly_max_abs_diff": 877.204126091777,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 5969.427475523262,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            -0.34287937329941576,
            0.06456359655357584,
            1.361269792337774,
            3.01367603308424,
            4.41963828030272,
            4.895080294426228,
            4.694825473002205,
            3.7001993601612773,
            3.0523224013127503,
            1.2818609290551757,
            0.5879399118363369,
            0.2837371902466669
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.1991883193508333,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 4.895080294426228,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 41.02388376479575
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 188.22826811296108
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 90.56936754140646
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.1947736747523847
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.561348488049134
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4267.0
            }
          ]
        }
      ]
    },
    {
      "id": "cikarang_temperature_faiman",
      "site_id": "cikarang",
      "site_name": "Cikarang",
      "latitude": -6.3106,
      "longitude": 107.1353,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "faiman",
      "fixture": "tools/oracle/fixtures/stages/cikarang_temperature_faiman.csv",
      "fixture_sha256": "93530ccc09542d01d3aa2e063deb9f606dbaabc5ce8be4fae63503d1c9d4c23a",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "e233b66b92c558082b810e16762588a61a6a49301eb4591eb42cd685d19665f3",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "faiman",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1950.6083177000025,
        "engine_poa_kwh_m2": 1935.9730548934285,
        "oracle_ac_kwh": 18401.21296879999,
        "engine_ac_kwh": 18679.48253836868,
        "ac_bias_pct": 1.5122349273415092
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4367,
          "annual_bias_pct": null,
          "hourly_rmse": 2.907169575217903e-7,
          "hourly_max_abs_diff": 4.997610432155852e-7,
          "hourly_max_abs_diff_azimuth": 4.998187250748742e-7,
          "hourly_max_rel_diff_pct": 0.000042608984146910087,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.997610432155852e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.998187250748742e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.999744476208434e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.907169575217903e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -4.076513222930552e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -8.362506491906948e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.963730059572102e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4367.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3815,
          "annual_bias_pct": -0.7502922382608733,
          "hourly_rmse": 7.417673189346809,
          "hourly_max_abs_diff": 20.169021647079262,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 30.25234353512612,
          "hourly_pass_fraction": 0.19528178243774574,
          "monthly_bias_pct": [
            1.0230369943593678,
            0.305302429300831,
            -0.7047508304142022,
            -1.4327634545180827,
            -1.9819511942482777,
            -2.038745988548126,
            -1.873090292879254,
            -1.4803464092909784,
            -0.8319527273817144,
            -0.1952865233720245,
            0.464784996406559,
            0.8298250328993234
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.7502922382608733,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 20.169021647079262,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 30.25234353512612,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.1549697893796407
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.417673189346809
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -4.006954553847637
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.7893312050520972
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4612097138979392
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.19528178243774574
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3815.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3815,
          "annual_bias_pct": null,
          "hourly_rmse": 3.9456033531519967,
          "hourly_max_abs_diff": 14.676713542792733,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 32.36907158835998,
          "hourly_pass_fraction": 0.06710353866317169,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 14.676713542792733,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.9456033531519967
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 2.676354025191585
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 6.2108321572875855
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 9.156292461683554
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.06710353866317169
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3815.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4249,
          "annual_bias_pct": 2.1483089508910442,
          "hourly_rmse": 184.7007093832961,
          "hourly_max_abs_diff": 713.7917869207627,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 92.1915561886885,
          "hourly_pass_fraction": 0.11932219345728406,
          "monthly_bias_pct": [
            2.9222484910091073,
            1.6999663953230673,
            1.4553240002319663,
            0.9814445716942036,
            0.8149322238123778,
            0.5930801406386231,
            1.2179081935621656,
            1.8370062783414693,
            3.051720080334185,
            3.248806238047607,
            4.078803319798719,
            4.131539137840007
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.1483089508910442,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 92.1915561886885,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 38.96199761703019
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 184.7007093832961
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 96.1428851328531
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.144829613406701
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.1204458401170765
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.11932219345728406
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4249.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4268,
          "annual_bias_pct": 1.5122349273418993,
          "hourly_rmse": 180.70100902826314,
          "hourly_max_abs_diff": 727.1291434439321,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 2124.3997038331577,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            2.436274182937479,
            1.2798241403480068,
            0.7991956622039427,
            0.3760150072644166,
            0.2048082334348198,
            -0.11844920098439274,
            0.4363437844048132,
            1.0710261040380455,
            2.3446265889966598,
            2.674573141215592,
            3.476724617440483,
            3.5638554775313356
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.5122349273418993,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.5638554775313356,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 29.659117302528212
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 180.70100902826314
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 65.04004299394552
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.5085467679159315
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.191201459600964
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4268.0
            }
          ]
        }
      ]
    },
    {
      "id": "cikarang_transposition_haydavies",
      "site_id": "cikarang",
      "site_name": "Cikarang",
      "latitude": -6.3106,
      "longitude": 107.1353,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "haydavies",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/cikarang_transposition_haydavies.csv",
      "fixture_sha256": "616d01cab859d54167a0943ef6572015b82eb6dbac7a3ccfacf014d1c57b8f4e",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "e233b66b92c558082b810e16762588a61a6a49301eb4591eb42cd685d19665f3",
      "models": {
        "transposition_reference": "haydavies",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1938.8809661000012,
        "engine_poa_kwh_m2": 1935.9730548934285,
        "oracle_ac_kwh": 18331.4787522,
        "engine_ac_kwh": 18679.48253836868,
        "ac_bias_pct": 1.8983945096459551
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4367,
          "annual_bias_pct": null,
          "hourly_rmse": 2.907169575217903e-7,
          "hourly_max_abs_diff": 4.997610432155852e-7,
          "hourly_max_abs_diff_azimuth": 4.998187250748742e-7,
          "hourly_max_rel_diff_pct": 0.000042608984146910087,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.997610432155852e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.998187250748742e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.999744476208434e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.907169575217903e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -4.076513222930552e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -8.362506491906948e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.963730059572102e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4367.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3805,
          "annual_bias_pct": -0.14997884127058894,
          "hourly_rmse": 5.071219271588165,
          "hourly_max_abs_diff": 28.63531116195295,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 52.958086060458875,
          "hourly_pass_fraction": 0.359526938239159,
          "monthly_bias_pct": [
            1.1216738251541691,
            0.39784943581612453,
            -0.03668160755188764,
            -0.5762111055722009,
            -1.0258315484172937,
            -1.2019940058256695,
            -1.1670079341302715,
            -0.7879793902116402,
            -0.2923421201623762,
            0.320746319979656,
            0.9235591441702227,
            1.318774540360152
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.14997884127058894,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 28.63531116195295,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 52.958086060458875,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 1.3978379830040708
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 5.071219271588165
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -0.8619336401884591
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.17045482133310152
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.002877407929618
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.359526938239159
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3805.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3805,
          "annual_bias_pct": null,
          "hourly_rmse": 3.51980505967676,
          "hourly_max_abs_diff": 9.991513542792731,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 20.453752142988684,
          "hourly_pass_fraction": 0.0,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 9.991513542792731,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.51980505967676
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.047604849327862
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 7.126213887759919
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 8.23035955727925
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3805.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4248,
          "annual_bias_pct": 2.5360929247752897,
          "hourly_rmse": 168.8999767729873,
          "hourly_max_abs_diff": 765.9888618257987,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 389.60630788637815,
          "hourly_pass_fraction": 0.157015065913371,
          "monthly_bias_pct": [
            3.366885216477653,
            2.1992758994417954,
            2.162994565732786,
            1.6914427834356305,
            1.382426389993247,
            1.2530758882160509,
            1.5581003619069658,
            2.104010991525879,
            3.257476727544484,
            3.0921590837154094,
            4.157200623552359,
            4.503745605877841
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.5360929247752897,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 389.60630788637815,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 43.230775883323425
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 168.8999767729873
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 112.8915326852554
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.5274392656372235
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.781368036267417
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.157015065913371
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4248.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4266,
          "annual_bias_pct": 1.8983945096463408,
          "hourly_rmse": 160.37032682681445,
          "hourly_max_abs_diff": 761.9066093654206,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 2109.410274044455,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            2.8814898379179366,
            1.7813710793032456,
            1.5035675960153043,
            1.083281616025869,
            0.7698208163084027,
            0.5400292864486493,
            0.7739056762993453,
            1.3342530511076327,
            2.5465586954094803,
            2.5152525025632615,
            3.554669705807539,
            3.9399571794025174
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.8983945096463408,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.9399571794025174,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 33.058227078788896
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 160.37032682681445
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 81.1542352179814
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.8885763233823127
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.732049244314703
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4266.0
            }
          ]
        }
      ]
    },
    {
      "id": "cikarang_transposition_isotropic",
      "site_id": "cikarang",
      "site_name": "Cikarang",
      "latitude": -6.3106,
      "longitude": 107.1353,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "isotropic",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/cikarang_transposition_isotropic.csv",
      "fixture_sha256": "d31fdf7847e045b48a0d31382da73ec979a77d88be8ecc41bb8130bf6672972a",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "e233b66b92c558082b810e16762588a61a6a49301eb4591eb42cd685d19665f3",
      "models": {
        "transposition_reference": "isotropic",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1935.9730565999964,
        "engine_poa_kwh_m2": 1935.9730548934285,
        "oracle_ac_kwh": 18308.295825299992,
        "engine_ac_kwh": 18679.48253836868,
        "ac_bias_pct": 2.0274236150136367
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4367,
          "annual_bias_pct": null,
          "hourly_rmse": 2.907169575217903e-7,
          "hourly_max_abs_diff": 4.997610432155852e-7,
          "hourly_max_abs_diff_azimuth": 4.998187250748742e-7,
          "hourly_max_rel_diff_pct": 0.000042608984146910087,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.997610432155852e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.998187250748742e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.999744476208434e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.907169575217903e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -4.076513222930552e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -8.362506491906948e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.963730059572102e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4367.0
            }
          ]
        },
        {
          "verdict": "PASS",
          "gate": {
            "gated": true,
            "ci_test": "oracle_poa_isotropic_cikarang",
            "reason": null,
            "pending_issue": null
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3815,
          "annual_bias_pct": -8.815040337272446e-8,
          "hourly_rmse": 0.000028927601239598272,
          "hourly_max_abs_diff": 0.00004992231936284952,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 0.00008727258637948453,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            -2.562942227688783e-7,
            -2.0868875316847477e-7,
            -2.829185660561663e-7,
            -6.652060704672678e-7,
            3.462731924615041e-7,
            -1.7455336209971301e-7,
            -5.85623918559828e-8,
            2.847383306766015e-7,
            -3.6240673927900816e-7,
            -1.7416442433374705e-7,
            9.828032402555309e-8,
            3.365212834769954e-7
          ],
          "within_tolerance": true,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -8.815040337272446e-8,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 0.00004992231936284952,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 0.00008727258637948453,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 5.098445263117898e-7
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 0.000028927601239598272
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -5.063450622223527e-7
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -1.0053626619879685e-7
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.74365829885348e-6
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3815.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3815,
          "annual_bias_pct": null,
          "hourly_rmse": 3.5424083924932828,
          "hourly_max_abs_diff": 10.040113542792731,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 20.22869231318014,
          "hourly_pass_fraction": 0.0,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 10.040113542792731,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.5424083924932828
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.065666318690225
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 7.181801276447092
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 8.298643906481807
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3815.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4250,
          "annual_bias_pct": 2.6668886947352455,
          "hourly_rmse": 168.3702793198655,
          "hourly_max_abs_diff": 702.8832542079997,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 86.09476401513302,
          "hourly_pass_fraction": 0.10588235294117647,
          "monthly_bias_pct": [
            2.233738734281353,
            1.803978650973829,
            2.194881827778863,
            2.2484505386787133,
            2.380556703536816,
            2.4311465111968156,
            2.707616641963212,
            2.8727852443983055,
            3.548758473978447,
            2.765315042672358,
            3.2159661082208717,
            3.1483010101319877
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.6668886947352455,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 86.09476401513302,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 43.63324598158223
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 168.3702793198655
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 118.777865152779
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.663855635745833
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.77607491834795
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.10588235294117647
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4250.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4268,
          "annual_bias_pct": 2.0274236150140155,
          "hourly_rmse": 155.97199506317136,
          "hourly_max_abs_diff": 715.8718434439321,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 2085.3734026038537,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            1.7397493050239525,
            1.3826838473405159,
            1.5351004152675147,
            1.6404287891295222,
            1.7685720299487506,
            1.7171297428656584,
            1.920356253078606,
            2.100215390389884,
            2.8374607094099824,
            2.186068312800043,
            2.6079327000149406,
            2.5728900448501677
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.0274236150140155,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 2.8374607094099824,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 32.27184343904725
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 155.97199506317136
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 86.81069517295192
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.0237167376668594
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.6359936570923725
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4268.0
            }
          ]
        }
      ]
    },
    {
      "id": "makassar_equator_dcac110",
      "site_id": "makassar",
      "site_name": "Makassar",
      "latitude": -5.092,
      "longitude": 119.495,
      "timezone": "Asia/Makassar",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/makassar_equator_dcac110.csv",
      "fixture_sha256": "83899f15618478723a9107964086d7dd57c684d952d15f7c9eebe6369006b30b",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "5797023f63b1dae91cf7d0dd3515185264c7e0fb6411402c94b1e592051a0af9",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1890.9277849999976,
        "engine_poa_kwh_m2": 1876.8651270934147,
        "oracle_ac_kwh": 18029.168781700006,
        "engine_ac_kwh": 18218.927969433713,
        "ac_bias_pct": 1.0525121264953539
      },
      "stages": [
        {
          "verdict": "PASS",
          "gate": {
            "gated": true,
            "ci_test": "oracle_solar_position_makassar",
            "reason": null,
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4304,
          "annual_bias_pct": null,
          "hourly_rmse": 2.9014025990833496e-7,
          "hourly_max_abs_diff": 4.997419580377027e-7,
          "hourly_max_abs_diff_azimuth": 4.9954400083152e-7,
          "hourly_max_rel_diff_pct": 0.000018324812670833534,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.997419580377027e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.9954400083152e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.998895661856295e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.9014025990833496e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -4.183349808239194e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -8.7060208605885e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 6.038144719056459e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4304.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3922,
          "annual_bias_pct": -0.743690902325116,
          "hourly_rmse": 6.980730350698178,
          "hourly_max_abs_diff": 20.5477213010588,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 14.93535926210374,
          "hourly_pass_fraction": 0.21162672106068334,
          "monthly_bias_pct": [
            1.0593876416231855,
            0.25449547632332703,
            -0.6890957419671684,
            -1.4767792339660948,
            -1.960420590464896,
            -2.22917270287248,
            -1.8039064493310029,
            -1.3879874004658173,
            -0.7679387695027332,
            -0.24174765741260987,
            0.2860155054524486,
            1.2845157003989787
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.743690902325116,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 20.5477213010588,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 14.93535926210374,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.0665913378509373
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 6.980730350698178
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -3.683536451993012
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.7670928207945454
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4537301872025348
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.21162672106068334
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3922.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3922,
          "annual_bias_pct": null,
          "hourly_rmse": 4.033345387229369,
          "hourly_max_abs_diff": 12.108456954751112,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 24.679653382863894,
          "hourly_pass_fraction": 0.0033146353901070884,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 12.108456954751112,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 4.033345387229369
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.3942089155364386
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 8.339033540941953
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 9.909290589731864
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0033146353901070884
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3922.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4131,
          "annual_bias_pct": 1.727096011728083,
          "hourly_rmse": 177.72021608372825,
          "hourly_max_abs_diff": 709.2445760772462,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 117.18973857032591,
          "hourly_pass_fraction": 0.15710481723553618,
          "monthly_bias_pct": [
            2.990120112010995,
            2.247608402832135,
            1.2906716426259708,
            0.4993037535795464,
            0.8662950173729271,
            0.5922227197395037,
            1.0607606516462453,
            1.3018755091092538,
            1.3154565566217624,
            2.562311158622247,
            3.349454391703499,
            3.3136577981397677
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.727096011728083,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 117.18973857032591,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 30.443748200100146
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 177.72021608372825
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 77.80525933123415
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.7230567158045704
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.9357495173128685
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.15710481723553618
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4131.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4133,
          "annual_bias_pct": 1.052512126495451,
          "hourly_rmse": 183.09657268060312,
          "hourly_max_abs_diff": 675.830990567119,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 317.9758792839364,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            2.811095317750114,
            1.7380891882139649,
            0.5867356197952717,
            -0.1463019967950284,
            0.13359674697046708,
            -0.09592201386925225,
            0.2101532173247666,
            0.45445191296406023,
            0.5501832380831634,
            1.8318069011084126,
            2.626878844563933,
            2.963934864554719
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.052512126495451,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 2.963934864554719,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 21.690182304456087
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 183.09657268060312
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 45.28281814264405
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.0380616524790265
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.197299077132375
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4133.0
            }
          ]
        }
      ]
    },
    {
      "id": "makassar_equator_dcac130",
      "site_id": "makassar",
      "site_name": "Makassar",
      "latitude": -5.092,
      "longitude": 119.495,
      "timezone": "Asia/Makassar",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 48,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.3221,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/makassar_equator_dcac130.csv",
      "fixture_sha256": "a1e01d7e5a6c97475d3f5c6d5ce1aa57419923ef03777c5c79830e9ceeab0ebf",
      "hemisphere": "selatan",
      "pnom_kwp": 13.221119999999999,
      "weather_sha256": "5797023f63b1dae91cf7d0dd3515185264c7e0fb6411402c94b1e592051a0af9",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1890.9277849999976,
        "engine_poa_kwh_m2": 1876.8651270934147,
        "oracle_ac_kwh": 21593.902874400083,
        "engine_ac_kwh": 21843.224450268917,
        "ac_bias_pct": 1.154592466767133
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4304,
          "annual_bias_pct": null,
          "hourly_rmse": 2.9014025990833496e-7,
          "hourly_max_abs_diff": 4.997419580377027e-7,
          "hourly_max_abs_diff_azimuth": 4.9954400083152e-7,
          "hourly_max_rel_diff_pct": 0.000018324812670833534,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.997419580377027e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.9954400083152e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.998895661856295e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.9014025990833496e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -4.183349808239194e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -8.7060208605885e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 6.038144719056459e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4304.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3922,
          "annual_bias_pct": -0.743690902325116,
          "hourly_rmse": 6.980730350698178,
          "hourly_max_abs_diff": 20.5477213010588,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 14.93535926210374,
          "hourly_pass_fraction": 0.21162672106068334,
          "monthly_bias_pct": [
            1.0593876416231855,
            0.25449547632332703,
            -0.6890957419671684,
            -1.4767792339660948,
            -1.960420590464896,
            -2.22917270287248,
            -1.8039064493310029,
            -1.3879874004658173,
            -0.7679387695027332,
            -0.24174765741260987,
            0.2860155054524486,
            1.2845157003989787
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.743690902325116,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 20.5477213010588,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 14.93535926210374,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.0665913378509373
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 6.980730350698178
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -3.683536451993012
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.7670928207945454
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4537301872025348
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.21162672106068334
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3922.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3922,
          "annual_bias_pct": null,
          "hourly_rmse": 4.033345387229369,
          "hourly_max_abs_diff": 12.108456954751112,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 24.679653382863894,
          "hourly_pass_fraction": 0.0033146353901070884,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 12.108456954751112,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 4.033345387229369
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.3942089155364386
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 8.339033540941953
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 9.909290589731864
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0033146353901070884
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3922.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4131,
          "annual_bias_pct": 1.7270960142723657,
          "hourly_rmse": 213.26425972325546,
          "hourly_max_abs_diff": 851.0934512926956,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 117.18976443125003,
          "hourly_pass_fraction": 0.15710481723553618,
          "monthly_bias_pct": [
            2.990120135386148,
            2.247608383256367,
            1.2906717944687074,
            0.49930381421160974,
            0.8662950498274613,
            0.5922226179931082,
            1.060760599383205,
            1.3018755537333622,
            1.3154565399893863,
            2.562311129223852,
            3.3494543720536334,
            3.3136577565263217
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.7270960142723657,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 117.18976443125003,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 36.53249777606269
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 213.26425972325546
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 93.36631129915109
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.723056717713198
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.9357495251890557
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.15710481723553618
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4131.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4134,
          "annual_bias_pct": 1.154592466767025,
          "hourly_rmse": 228.8166632880987,
          "hourly_max_abs_diff": 796.8221286805424,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 1092.3878458683992,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            2.4257470718517657,
            1.6367240297536199,
            0.4814284169317672,
            -0.2052304839400324,
            -0.09420401468223835,
            -0.34482426930318116,
            0.2347703284289752,
            0.9607052955397597,
            1.8460998212447615,
            2.0734606692345303,
            2.574246420726555,
            2.6044668429343893
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.154592466767025,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 2.6044668429343893,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 28.129250860637796
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 228.8166632880987
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 59.575580117695495
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.1405323513727967
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.380533206687768
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4134.0
            }
          ]
        }
      ]
    },
    {
      "id": "makassar_reverse_dcac110",
      "site_id": "makassar",
      "site_name": "Makassar",
      "latitude": -5.092,
      "longitude": 119.495,
      "timezone": "Asia/Makassar",
      "azimuth_deg": 180.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/makassar_reverse_dcac110.csv",
      "fixture_sha256": "f271c4d761ec8bed5461c5bf84e7464bd01b61bdb5ec28778cc64f5831391e4f",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "5797023f63b1dae91cf7d0dd3515185264c7e0fb6411402c94b1e592051a0af9",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1818.4399421999974,
        "engine_poa_kwh_m2": 1812.5874250695167,
        "oracle_ac_kwh": 17314.121354099978,
        "engine_ac_kwh": 17643.26413646773,
        "ac_bias_pct": 1.9010077129314475
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4304,
          "annual_bias_pct": null,
          "hourly_rmse": 2.9014025990833496e-7,
          "hourly_max_abs_diff": 4.997419580377027e-7,
          "hourly_max_abs_diff_azimuth": 4.9954400083152e-7,
          "hourly_max_rel_diff_pct": 0.000018324812670833534,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.997419580377027e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.9954400083152e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.999450808895745e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.9014025990833496e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -4.183349808239194e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -8.7060208605885e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 6.038144719056459e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4304.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3925,
          "annual_bias_pct": -0.3218427507372106,
          "hourly_rmse": 5.605986335952976,
          "hourly_max_abs_diff": 17.82881109266384,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 9.21750105291517,
          "hourly_pass_fraction": 0.25910828025477706,
          "monthly_bias_pct": [
            -1.6531277834403422,
            -1.141075028607355,
            -0.38386793903512934,
            0.5277185537697534,
            0.9725414895907758,
            1.2867890737893282,
            0.8047209309628958,
            0.35856645662384184,
            -0.10141982405393235,
            -0.8167469075827194,
            -1.3742706529299649,
            -1.9493856683170778
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.3218427507372106,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 17.82881109266384,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 9.21750105291517,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 1.5726687440461378
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 5.605986335952976
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -1.548256449558239
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.3355332051652109
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.2149114986418301
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.25910828025477706
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3925.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3925,
          "annual_bias_pct": null,
          "hourly_rmse": 4.005447587502248,
          "hourly_max_abs_diff": 12.280250503701865,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 24.39227642134865,
          "hourly_pass_fraction": 0.00025477707006369424,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 12.280250503701865,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 4.005447587502248
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.3711992640938657
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 8.397103595519253
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 9.976911984085717
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.00025477707006369424
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3925.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4129,
          "annual_bias_pct": 2.5548865519557395,
          "hourly_rmse": 218.67798451949088,
          "hourly_max_abs_diff": 900.1858065052652,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 104.20374819242242,
          "hourly_pass_fraction": 0.1031726810365706,
          "monthly_bias_pct": [
            -0.17758340149831303,
            0.524372247206164,
            1.632806960658106,
            3.0257591272718765,
            5.266167818882521,
            5.957591713967073,
            5.457935193886091,
            4.096928889548403,
            2.2798452839919805,
            2.033384734375088,
            1.4052003844722192,
            -0.2599919937775354
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.5548865519557395,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 104.20374819242242,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 47.2038318051367
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 218.67798451949088
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 110.6795907135609
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.5504977951594743
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.03921015402294
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.1031726810365706
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4129.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4133,
          "annual_bias_pct": 1.901007712931381,
          "hourly_rmse": 217.56714038706605,
          "hourly_max_abs_diff": 889.4221582450543,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 511.05797596089093,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            -0.46341241189975557,
            -0.01708160139856694,
            0.9286356133704919,
            2.436896196785007,
            4.664974695136255,
            5.469348722492027,
            4.709980717049561,
            3.2855075675916066,
            1.5168779734250069,
            1.2673975991701016,
            0.602399879147238,
            -0.7474506539208572
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.901007712931381,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 5.469348722492027,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 37.75404972303198
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 217.56714038706605
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 78.93958462375574
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.8843422462943804
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.193477467493969
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4133.0
            }
          ]
        }
      ]
    },
    {
      "id": "medan_equator_dcac110",
      "site_id": "medan",
      "site_name": "Medan",
      "latitude": 3.652,
      "longitude": 98.685,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 180.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/medan_equator_dcac110.csv",
      "fixture_sha256": "917efc6288bf487d61d963ab20209fce2e0bc518ff019a5747f4a8330ec927cc",
      "hemisphere": "utara",
      "pnom_kwp": 11.0176,
      "weather_sha256": "1c2d4d6c657a58dff0f747ae30d36e04ff91895459a1967f95bddb0c7e1d99d3",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1740.0032769999943,
        "engine_poa_kwh_m2": 1728.6015985310607,
        "oracle_ac_kwh": 16659.231385700055,
        "engine_ac_kwh": 16889.08723168101,
        "ac_bias_pct": 1.3797506058908415
      },
      "stages": [
        {
          "verdict": "PASS",
          "gate": {
            "gated": true,
            "ci_test": "oracle_solar_position_medan",
            "reason": null,
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4380,
          "annual_bias_pct": null,
          "hourly_rmse": 2.839258545625466e-7,
          "hourly_max_abs_diff": 4.995748206226835e-7,
          "hourly_max_abs_diff_azimuth": 4.999547513762082e-7,
          "hourly_max_rel_diff_pct": 8.793050402711913e-6,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.995748206226835e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999547513762082e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.997559557295972e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.839258545625466e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -7.435242530642529e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -1.5332441714076994e-8
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.85492214713748e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4380.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3956,
          "annual_bias_pct": -0.6552676434375243,
          "hourly_rmse": 7.256869215992093,
          "hourly_max_abs_diff": 21.689755356379465,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 12.275863278656523,
          "hourly_pass_fraction": 0.23660262891809908,
          "monthly_bias_pct": [
            -2.2231240614405756,
            -1.7314067644028133,
            -0.898674883295706,
            0.08081802234145777,
            0.7548295328920899,
            1.1255897862529536,
            1.0006294356169283,
            0.42445648479992093,
            -0.41529713684949787,
            -1.4263325221001493,
            -2.073253141999527,
            -2.422262699722273
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.6552676434375243,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 21.689755356379465,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 12.275863278656523,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.048985938599416
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.256869215992093
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -2.8856174894681126
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.6579208533489065
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.6545663465974387
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.23660262891809908
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3956.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3956,
          "annual_bias_pct": null,
          "hourly_rmse": 2.8207406265490063,
          "hourly_max_abs_diff": 8.613045710911308,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 15.369954264968017,
          "hourly_pass_fraction": 0.002780586450960566,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 8.613045710911308,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 2.8207406265490063
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 2.384946007040062
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 5.979945445004755
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 7.072644416888152
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.002780586450960566
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3956.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4073,
          "annual_bias_pct": 1.9637879539944039,
          "hourly_rmse": 159.69675981268315,
          "hourly_max_abs_diff": 846.8050819097632,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 76.40190694441033,
          "hourly_pass_fraction": 0.13184384974220476,
          "monthly_bias_pct": [
            0.7826082410944013,
            0.9390797590449281,
            1.7869334790102194,
            2.655475864892144,
            3.688329640419101,
            4.2309352987003805,
            4.044483917750028,
            3.0478021399746424,
            1.6745128018622966,
            0.677635429507729,
            0.11414113517147345,
            -0.1343382527694328
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.9637879539944039,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 76.40190694441033,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 34.90000118617155
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 159.69675981268315
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 81.86508418744984
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.9342028475131496
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.773109508579342
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.13184384974220476
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4073.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4166,
          "annual_bias_pct": 1.379750605890739,
          "hourly_rmse": 161.85374534289568,
          "hourly_max_abs_diff": 836.7675226333724,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 21603.385257535057,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            0.10489006283922318,
            0.278057631882186,
            1.176516448541889,
            2.055484330701636,
            3.1348439486506603,
            3.7014801874438024,
            3.5089167089609914,
            2.47824498840807,
            1.1163181073320252,
            0.04228119711011989,
            -0.4374878076038187,
            -0.6091085708059062
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.379750605890739,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.7014801874438024,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 27.679116957441565
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 161.85374534289568
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 53.12772380991137
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.3285732832913049
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.047501877411307
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4166.0
            }
          ]
        }
      ]
    },
    {
      "id": "medan_equator_dcac130",
      "site_id": "medan",
      "site_name": "Medan",
      "latitude": 3.652,
      "longitude": 98.685,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 180.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 48,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.3221,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/medan_equator_dcac130.csv",
      "fixture_sha256": "23ac33047e179e6b9bfa247664375872105337424ac320edeefa717133472cb6",
      "hemisphere": "utara",
      "pnom_kwp": 13.221119999999999,
      "weather_sha256": "1c2d4d6c657a58dff0f747ae30d36e04ff91895459a1967f95bddb0c7e1d99d3",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1740.0032769999943,
        "engine_poa_kwh_m2": 1728.6015985310607,
        "oracle_ac_kwh": 20024.775278100024,
        "engine_ac_kwh": 20264.607091256716,
        "ac_bias_pct": 1.1976754286924893
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4380,
          "annual_bias_pct": null,
          "hourly_rmse": 2.839258545625466e-7,
          "hourly_max_abs_diff": 4.995748206226835e-7,
          "hourly_max_abs_diff_azimuth": 4.999547513762082e-7,
          "hourly_max_rel_diff_pct": 8.793050402711913e-6,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.995748206226835e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999547513762082e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.997559557295972e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.839258545625466e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -7.435242530642529e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -1.5332441714076994e-8
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.85492214713748e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4380.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3956,
          "annual_bias_pct": -0.6552676434375243,
          "hourly_rmse": 7.256869215992093,
          "hourly_max_abs_diff": 21.689755356379465,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 12.275863278656523,
          "hourly_pass_fraction": 0.23660262891809908,
          "monthly_bias_pct": [
            -2.2231240614405756,
            -1.7314067644028133,
            -0.898674883295706,
            0.08081802234145777,
            0.7548295328920899,
            1.1255897862529536,
            1.0006294356169283,
            0.42445648479992093,
            -0.41529713684949787,
            -1.4263325221001493,
            -2.073253141999527,
            -2.422262699722273
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.6552676434375243,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 21.689755356379465,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 12.275863278656523,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.048985938599416
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.256869215992093
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -2.8856174894681126
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.6579208533489065
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.6545663465974387
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.23660262891809908
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3956.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3956,
          "annual_bias_pct": null,
          "hourly_rmse": 2.8207406265490063,
          "hourly_max_abs_diff": 8.613045710911308,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 15.369954264968017,
          "hourly_pass_fraction": 0.002780586450960566,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 8.613045710911308,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 2.8207406265490063
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 2.384946007040062
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 5.979945445004755
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 7.072644416888152
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.002780586450960566
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3956.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4073,
          "annual_bias_pct": 1.9637879730038135,
          "hourly_rmse": 191.63611242464012,
          "hourly_max_abs_diff": 1016.1660782917158,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 76.4019599243199,
          "hourly_pass_fraction": 0.13184384974220476,
          "monthly_bias_pct": [
            0.7826082759981889,
            0.9390796844337382,
            1.786933510941167,
            2.655475884683118,
            3.688329740774195,
            4.230935272822064,
            4.044483859359711,
            3.047802270603156,
            1.674512810580079,
            0.6776354921510865,
            0.11414124167459459,
            -0.13433837017123848
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.9637879730038135,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 76.4019599243199,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 41.88000177722825
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 191.63611242464012
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 98.23810189898785
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.9342028650550718
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.773109522015039
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.13184384974220476
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4073.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4201,
          "annual_bias_pct": 1.1976754286926299,
          "hourly_rmse": 192.16003411641768,
          "hourly_max_abs_diff": 989.2438271600472,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 28319.737465481587,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            -0.05824938947557465,
            0.26837255686535183,
            1.0884213109667107,
            1.8778959155607857,
            2.853625626561162,
            3.402174334955953,
            3.2109691612523124,
            2.3532368528068823,
            1.0264601177862092,
            -0.15475431500883555,
            -0.7112220139016272,
            -0.8487825539578966
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.1976754286926299,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.402174334955953,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 30.871525670844857
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 192.16003411641768
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 55.49241311280542
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.1641759982288034
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.031327653429052
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4201.0
            }
          ]
        }
      ]
    },
    {
      "id": "medan_reverse_dcac110",
      "site_id": "medan",
      "site_name": "Medan",
      "latitude": 3.652,
      "longitude": 98.685,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/medan_reverse_dcac110.csv",
      "fixture_sha256": "364e6081a6b8306167f7781fb5e947b33bab6d327d38991fe0912420c07e4063",
      "hemisphere": "utara",
      "pnom_kwp": 11.0176,
      "weather_sha256": "1c2d4d6c657a58dff0f747ae30d36e04ff91895459a1967f95bddb0c7e1d99d3",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1721.496508700002,
        "engine_poa_kwh_m2": 1715.1058116159536,
        "oracle_ac_kwh": 16483.80353040001,
        "engine_ac_kwh": 16759.492406739748,
        "ac_bias_pct": 1.6724833915382535
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4380,
          "annual_bias_pct": null,
          "hourly_rmse": 2.839258545625466e-7,
          "hourly_max_abs_diff": 4.995748206226835e-7,
          "hourly_max_abs_diff_azimuth": 4.999547513762082e-7,
          "hourly_max_rel_diff_pct": 8.793050402711913e-6,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.995748206226835e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999547513762082e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.998514242515739e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.839258545625466e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -7.435242530642529e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -1.5332441714076994e-8
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.85492214713748e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4380.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3936,
          "annual_bias_pct": -0.371229163216501,
          "hourly_rmse": 6.574457042049127,
          "hourly_max_abs_diff": 18.013816878912507,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 26.31210060603928,
          "hourly_pass_fraction": 0.18800813008130082,
          "monthly_bias_pct": [
            1.2265489332789155,
            0.7298343378245218,
            -0.20293879126238104,
            -1.0424780877449418,
            -1.6742961406617394,
            -1.945110217410983,
            -1.854543916630427,
            -1.3417953770574533,
            -0.4285458484769778,
            0.5440357600944037,
            1.3652274103494388,
            1.9021404869406373
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.371229163216501,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 18.013816878912507,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 26.31210060603928,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 1.921069429146286
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 6.574457042049127
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -1.6289763327489475
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.3737419996327991
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.5084017318096088
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.18800813008130082
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3936.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3936,
          "annual_bias_pct": null,
          "hourly_rmse": 2.8447561246846202,
          "hourly_max_abs_diff": 8.621090062810865,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 15.37363747913295,
          "hourly_pass_fraction": 0.0007621951219512195,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 8.621090062810865,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 2.8447561246846202
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 2.4093874917148557
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 6.051337104568186
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 7.144794413496085
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0007621951219512195
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3936.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4094,
          "annual_bias_pct": 2.2463904424305574,
          "hourly_rmse": 152.5899240042433,
          "hourly_max_abs_diff": 761.598059930802,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 95.69062289870155,
          "hourly_pass_fraction": 0.14680019540791403,
          "monthly_bias_pct": [
            4.820373076063096,
            3.5922966746673985,
            2.5632854895886363,
            1.313998576023172,
            0.7143666972297539,
            0.42983327645111136,
            0.5969905933599892,
            0.9885250170774955,
            1.6409383035547513,
            2.919267329720223,
            4.272570044266313,
            5.057700549094394
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.2463904424305574,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 95.69062289870155,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 37.37348017062538
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 152.5899240042433
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 92.63801274326873
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.2229957639475963
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.6616367799531186
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.14680019540791403
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4094.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4188,
          "annual_bias_pct": 1.6724833915386543,
          "hourly_rmse": 150.48336071159156,
          "hourly_max_abs_diff": 760.62705353357,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 103609.95654338105,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            4.2511985458646295,
            2.9941195300532035,
            1.9668152076016112,
            0.6866685146702132,
            0.10099840836839549,
            -0.19786736330121146,
            -0.032418936205996826,
            0.3700013604948061,
            1.0797671789226928,
            2.326276145724422,
            3.8479146575331304,
            4.773593892259747
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.6724833915386543,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 4.773593892259747,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 30.50304461263955
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 150.48336071159156
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 64.26009988625597
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.6326407787336037
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.823294262746238
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4188.0
            }
          ]
        }
      ]
    },
    {
      "id": "semarang_equator_dcac110",
      "site_id": "semarang",
      "site_name": "Semarang",
      "latitude": -6.966,
      "longitude": 110.419,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/semarang_equator_dcac110.csv",
      "fixture_sha256": "4211c118f24150bfc62c4362ff3df0dbd0ede1ee8ba1b3fad3b87163091e482d",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "4e2973ebab63ae299de8ef3ed15f7cf5807daf5af3b6218f4900a41fb2acfd61",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1958.3484921000006,
        "engine_poa_kwh_m2": 1942.4724881845616,
        "oracle_ac_kwh": 18529.31030050002,
        "engine_ac_kwh": 18755.776551423856,
        "ac_bias_pct": 1.222205507118771
      },
      "stages": [
        {
          "verdict": "PASS",
          "gate": {
            "gated": true,
            "ci_test": "oracle_solar_position_semarang",
            "reason": null,
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4397,
          "annual_bias_pct": null,
          "hourly_rmse": 2.910059608818927e-7,
          "hourly_max_abs_diff": 4.99914193596851e-7,
          "hourly_max_abs_diff_azimuth": 4.996243490040797e-7,
          "hourly_max_rel_diff_pct": 0.000019075039333156154,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.99914193596851e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.996243490040797e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.998566964786733e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.910059608818927e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -5.747583959726315e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -1.1721129568907369e-8
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.934525875083472e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4397.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3905,
          "annual_bias_pct": -0.8106832864264507,
          "hourly_rmse": 7.464226158208017,
          "hourly_max_abs_diff": 20.630654453901343,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 23.323196604996458,
          "hourly_pass_fraction": 0.19590268886043533,
          "monthly_bias_pct": [
            0.8585863337832705,
            0.32189376104053985,
            -0.786507983602854,
            -1.594488913741392,
            -1.7317089271289177,
            -1.9817452513216471,
            -2.0550900369297462,
            -1.372175418395701,
            -0.9479947598105195,
            -0.28503029268530544,
            0.484793505141819,
            0.9875924891273256
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.8106832864264507,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 20.630654453901343,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 23.323196604996458,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.2129362865967783
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.464226158208017
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -4.055398184333807
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.8130298844006907
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4964347900514212
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.19590268886043533
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3905.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3905,
          "annual_bias_pct": null,
          "hourly_rmse": 3.7805384688848047,
          "hourly_max_abs_diff": 9.968864588697933,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 22.465249464103188,
          "hourly_pass_fraction": 0.0005121638924455825,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 9.968864588697933,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.7805384688848047
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.211664807189509
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 7.6567188507126795
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 9.012933135411943
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0005121638924455825
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3905.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4226,
          "annual_bias_pct": 1.824322340299336,
          "hourly_rmse": 172.4625916047463,
          "hourly_max_abs_diff": 852.9771511506503,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 93.73801695012928,
          "hourly_pass_fraction": 0.14931377188831046,
          "monthly_bias_pct": [
            3.2307374941459153,
            1.955481098981894,
            1.6233576900510471,
            1.3144210270575534,
            1.27833410133443,
            0.4816988673892045,
            -0.0610583914075873,
            1.3394989960295924,
            2.112718672220824,
            2.69476001501281,
            3.3486799465480317,
            3.6320004191227495
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.824322340299336,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 93.73801695012928,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 33.0713182840063
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 172.4625916047463
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 81.89614818130251
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.8049117184633372
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.8009083393623
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.14931377188831046
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4226.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4329,
          "annual_bias_pct": 1.2222055071188596,
          "hourly_rmse": 177.4560304037412,
          "hourly_max_abs_diff": 845.0501291046244,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 504074.8902038729,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            2.7290525385885567,
            1.704443725566972,
            1.0273495352260025,
            0.7098869258530106,
            0.577885717013307,
            -0.1792233188672318,
            -0.7196708275138292,
            0.6306586912752683,
            1.4053050304693138,
            2.0166027810977085,
            2.7552581709601123,
            3.3718604368851497
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.2222055071188596,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.3718604368851497,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 24.766936837400287
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 177.4560304037412
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 51.45482835085445
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.2021383867959616
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.14590258978536
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4329.0
            }
          ]
        }
      ]
    },
    {
      "id": "semarang_equator_dcac130",
      "site_id": "semarang",
      "site_name": "Semarang",
      "latitude": -6.966,
      "longitude": 110.419,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 48,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.3221,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/semarang_equator_dcac130.csv",
      "fixture_sha256": "e803608f58106f5a596fdb8103f94e6b689b3f7bcf8e6aa427bee8e6dc693974",
      "hemisphere": "selatan",
      "pnom_kwp": 13.221119999999999,
      "weather_sha256": "4e2973ebab63ae299de8ef3ed15f7cf5807daf5af3b6218f4900a41fb2acfd61",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1958.3484921000006,
        "engine_poa_kwh_m2": 1942.4724881845616,
        "oracle_ac_kwh": 22186.490392100037,
        "engine_ac_kwh": 22491.799817500087,
        "ac_bias_pct": 1.3761050982122058
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4397,
          "annual_bias_pct": null,
          "hourly_rmse": 2.910059608818927e-7,
          "hourly_max_abs_diff": 4.99914193596851e-7,
          "hourly_max_abs_diff_azimuth": 4.996243490040797e-7,
          "hourly_max_rel_diff_pct": 0.000019075039333156154,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.99914193596851e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.996243490040797e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.998566964786733e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.910059608818927e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -5.747583959726315e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -1.1721129568907369e-8
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.934525875083472e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4397.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3905,
          "annual_bias_pct": -0.8106832864264507,
          "hourly_rmse": 7.464226158208017,
          "hourly_max_abs_diff": 20.630654453901343,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 23.323196604996458,
          "hourly_pass_fraction": 0.19590268886043533,
          "monthly_bias_pct": [
            0.8585863337832705,
            0.32189376104053985,
            -0.786507983602854,
            -1.594488913741392,
            -1.7317089271289177,
            -1.9817452513216471,
            -2.0550900369297462,
            -1.372175418395701,
            -0.9479947598105195,
            -0.28503029268530544,
            0.484793505141819,
            0.9875924891273256
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.8106832864264507,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 20.630654453901343,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 23.323196604996458,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.2129362865967783
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.464226158208017
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -4.055398184333807
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.8130298844006907
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.4964347900514212
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.19590268886043533
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3905.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3905,
          "annual_bias_pct": null,
          "hourly_rmse": 3.7805384688848047,
          "hourly_max_abs_diff": 9.968864588697933,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 22.465249464103188,
          "hourly_pass_fraction": 0.0005121638924455825,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 9.968864588697933,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.7805384688848047
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.211664807189509
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 7.6567188507126795
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 9.012933135411943
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0005121638924455825
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3905.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4226,
          "annual_bias_pct": 1.8243223354343991,
          "hourly_rmse": 206.95510904432618,
          "hourly_max_abs_diff": 1023.5725613807806,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 93.73802280470171,
          "hourly_pass_fraction": 0.14931377188831046,
          "monthly_bias_pct": [
            3.230737468401559,
            1.9554811878060403,
            1.6233576857960272,
            1.3144211079793167,
            1.278334071851511,
            0.48169892292244276,
            -0.06105845604260661,
            1.3394990176057515,
            2.1127186339127264,
            2.694759987226613,
            3.348679899323111,
            3.63200037913252
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.8243223354343991,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 93.73802280470171,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 39.68558172393739
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 206.95510904432618
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 98.2753775194085
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.804911712888635
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 3.8009083229670533
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.14931377188831046
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4226.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4361,
          "annual_bias_pct": 1.3761050982123006,
          "hourly_rmse": 223.36338854468485,
          "hourly_max_abs_diff": 999.1210949255494,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 81576.84234354291,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            2.4663946841800284,
            1.3653018101904775,
            0.9458887204205124,
            0.5594703052762059,
            0.9022756846997899,
            -0.35512401146907313,
            -0.720737959613085,
            1.5122751597670874,
            2.4030812562741932,
            2.497760379272752,
            2.5025576402889826,
            3.0800232985047233
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.3761050982123006,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.0800232985047233,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 33.09639792000871
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 223.36338854468485
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 69.71842778354664
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.3703927849368527
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.390454372135464
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4361.0
            }
          ]
        }
      ]
    },
    {
      "id": "semarang_reverse_dcac110",
      "site_id": "semarang",
      "site_name": "Semarang",
      "latitude": -6.966,
      "longitude": 110.419,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 180.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/semarang_reverse_dcac110.csv",
      "fixture_sha256": "2365ce145d550a373143f6f8b9d5fcc7392c7ec425133d4053068a45b591a4f2",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "4e2973ebab63ae299de8ef3ed15f7cf5807daf5af3b6218f4900a41fb2acfd61",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1844.8995695000028,
        "engine_poa_kwh_m2": 1840.5583772855846,
        "oracle_ac_kwh": 17478.16182580004,
        "engine_ac_kwh": 17846.032995689733,
        "ac_bias_pct": 2.1047474760570397
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4397,
          "annual_bias_pct": null,
          "hourly_rmse": 2.910059608818927e-7,
          "hourly_max_abs_diff": 4.99914193596851e-7,
          "hourly_max_abs_diff_azimuth": 4.996243490040797e-7,
          "hourly_max_rel_diff_pct": 0.000019075039333156154,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 4.99914193596851e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.996243490040797e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.995843312372017e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.910059608818927e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -5.747583959726315e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -1.1721129568907369e-8
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.934525875083472e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4397.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3904,
          "annual_bias_pct": -0.23530777968552158,
          "hourly_rmse": 5.595551613112232,
          "hourly_max_abs_diff": 16.58779798231501,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 11.506621824486007,
          "hourly_pass_fraction": 0.2666495901639344,
          "monthly_bias_pct": [
            -1.7288665379937698,
            -1.0201794027681261,
            -0.2517248783136979,
            0.5185821914770357,
            0.814186763305773,
            1.2035228298363265,
            1.2750931739622646,
            0.5153596443670029,
            -0.10620300408345539,
            -0.7673933317512924,
            -1.543713847913365,
            -1.7375180760827398
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.23530777968552158,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 16.58779798231501,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 11.506621824486007,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 1.6214296137533677
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 5.595551613112232
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -1.3041126503323894
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.2773650321851524
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.1900891789286627
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.2666495901639344
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3904.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3904,
          "annual_bias_pct": null,
          "hourly_rmse": 3.640947053192122,
          "hourly_max_abs_diff": 10.250023044289279,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 22.279510600217964,
          "hourly_pass_fraction": 0.0038422131147540983,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 10.250023044289279,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 3.640947053192122
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 3.0968870964625212
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 7.519721972137998
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 8.840783891202873
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0038422131147540983
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3904.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4187,
          "annual_bias_pct": 2.687362351014672,
          "hourly_rmse": 185.29880396852474,
          "hourly_max_abs_diff": 748.9767817596207,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 101.9968666850744,
          "hourly_pass_fraction": 0.10317649868641032,
          "monthly_bias_pct": [
            0.33320434113241865,
            0.6083804578134757,
            2.253729505536434,
            3.7395315558041076,
            4.429281284684085,
            5.2661932173247115,
            5.044020927975842,
            3.919246789254114,
            3.180750650956479,
            2.040510438550448,
            0.859346039572623,
            0.407525759950243
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.687362351014672,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 101.9968666850744,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 48.00613659257606
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 185.29880396852474
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 114.73336654718345
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.6556053492287246
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.288904874260216
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.10317649868641032
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4187.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4276,
          "annual_bias_pct": 2.1047474760573643,
          "hourly_rmse": 179.70019440300078,
          "hourly_max_abs_diff": 757.357295843728,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 8121.968465048987,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            -0.25451468403641153,
            0.291136599457316,
            1.65824414070299,
            3.2072310993868784,
            3.7942833634166866,
            4.720971227920694,
            4.516969202222847,
            3.260988684346222,
            2.4775874761476833,
            1.3444167864288261,
            0.20915047170480824,
            0.0273392992457141
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.1047474760573643,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 4.720971227920694,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 38.982337162717954
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 179.70019440300078
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 84.2552822973443
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.061289915348137
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.396332056686738
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4276.0
            }
          ]
        }
      ]
    },
    {
      "id": "surabaya_equator_dcac110",
      "site_id": "surabaya",
      "site_name": "Surabaya",
      "latitude": -7.1632,
      "longitude": 112.6375,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/surabaya_equator_dcac110.csv",
      "fixture_sha256": "bf2c200151bf4a7d596d88d41e71943b992eb03506fcab8c8a7438e2c7154d63",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "825d1aea192d07ea25949863bec53e51dcf85b02f620c21b9288c6ff1d8deb8d",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 2054.9974431999935,
        "engine_poa_kwh_m2": 2038.8134355151203,
        "oracle_ac_kwh": 19339.66179590003,
        "engine_ac_kwh": 19572.1487455346,
        "ac_bias_pct": 1.2021252082280867
      },
      "stages": [
        {
          "verdict": "PASS",
          "gate": {
            "gated": true,
            "ci_test": "oracle_solar_position_surabaya",
            "reason": null,
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4380,
          "annual_bias_pct": null,
          "hourly_rmse": 2.881475087711785e-7,
          "hourly_max_abs_diff": 5.000003255872798e-7,
          "hourly_max_abs_diff_azimuth": 4.999135825300982e-7,
          "hourly_max_rel_diff_pct": 0.000011377063690372827,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 5.000003255872798e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999135825300982e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.996470019946742e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.881475087711785e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -1.7196212985280748e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -3.518100789645315e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.895088523327352e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4380.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3994,
          "annual_bias_pct": -0.7875439328854638,
          "hourly_rmse": 7.064509899153945,
          "hourly_max_abs_diff": 21.32039576829436,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 11.244320846949758,
          "hourly_pass_fraction": 0.24812218327491237,
          "monthly_bias_pct": [
            0.6858807446389846,
            0.04585913332444931,
            -0.8353943621425528,
            -1.6514823546942237,
            -1.8501865382239993,
            -1.962896857465496,
            -1.5701386653495737,
            -1.5624158942431288,
            -0.7698967569625206,
            -0.3244862658699315,
            0.16329918592282866,
            0.8483426212219863
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.7875439328854638,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 21.32039576829436,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 11.244320846949758,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.1383320190687396
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.064509899153945
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -4.046180932604138
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.7882227558013984
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.3762131634369434
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.24812218327491237
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3994.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3994,
          "annual_bias_pct": null,
          "hourly_rmse": 5.25463879629643,
          "hourly_max_abs_diff": 28.90947619595709,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 81.38520735351584,
          "hourly_pass_fraction": 0.0002503755633450175,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 28.90947619595709,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 5.25463879629643
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 4.01051844711186
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 9.28431549201019
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 12.164443331885266
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0002503755633450175
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3994.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4104,
          "annual_bias_pct": 1.8822544856527248,
          "hourly_rmse": 218.75875936535718,
          "hourly_max_abs_diff": 913.1079962369913,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 72.69789529047668,
          "hourly_pass_fraction": 0.1652046783625731,
          "monthly_bias_pct": [
            2.654314269589866,
            2.880221313581367,
            1.7389500422919875,
            1.1138344693750104,
            1.0933999130361298,
            1.4344836755852355,
            1.77561623819334,
            1.5957367633424857,
            2.2836975432102147,
            2.438297391971862,
            3.657123472682465,
            -0.1727056927851275
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.8822544856527248,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 72.69789529047668,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 35.261192966037726
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 218.75875936535718
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 90.39824097742039
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.855339399380693
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.489819058664711
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.1652046783625731
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4104.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4181,
          "annual_bias_pct": 1.2021252082279503,
          "hourly_rmse": 221.7570058928736,
          "hourly_max_abs_diff": 962.184488387511,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 10196.06856600821,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            2.0886515193640935,
            2.292629315006022,
            1.0944593033360868,
            0.5283347183897293,
            0.33544593394695443,
            0.6765929736190812,
            1.0542130014852908,
            0.8941971264897761,
            1.548057359742594,
            1.7691779915004302,
            2.8937562807888875,
            -0.7647122606185182
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.2021252082279503,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 2.8937562807888875,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 24.429770714078273
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 221.7570058928736
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 52.9713643123352
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.1451765626885233
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.794117143427306
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4181.0
            }
          ]
        }
      ]
    },
    {
      "id": "surabaya_equator_dcac130",
      "site_id": "surabaya",
      "site_name": "Surabaya",
      "latitude": -7.1632,
      "longitude": 112.6375,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 0.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 48,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.3221,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/surabaya_equator_dcac130.csv",
      "fixture_sha256": "74616558df72e9029dd5db497e32adf0d44aa99231fdb01b972b75941080a1ca",
      "hemisphere": "selatan",
      "pnom_kwp": 13.221119999999999,
      "weather_sha256": "825d1aea192d07ea25949863bec53e51dcf85b02f620c21b9288c6ff1d8deb8d",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 2054.9974431999935,
        "engine_poa_kwh_m2": 2038.8134355151203,
        "oracle_ac_kwh": 23153.921259499963,
        "engine_ac_kwh": 23467.61741815422,
        "ac_bias_pct": 1.3548295130594705
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4380,
          "annual_bias_pct": null,
          "hourly_rmse": 2.881475087711785e-7,
          "hourly_max_abs_diff": 5.000003255872798e-7,
          "hourly_max_abs_diff_azimuth": 4.999135825300982e-7,
          "hourly_max_rel_diff_pct": 0.000011377063690372827,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 5.000003255872798e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999135825300982e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.996470019946742e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.881475087711785e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -1.7196212985280748e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -3.518100789645315e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.895088523327352e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4380.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3994,
          "annual_bias_pct": -0.7875439328854638,
          "hourly_rmse": 7.064509899153945,
          "hourly_max_abs_diff": 21.32039576829436,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 11.244320846949758,
          "hourly_pass_fraction": 0.24812218327491237,
          "monthly_bias_pct": [
            0.6858807446389846,
            0.04585913332444931,
            -0.8353943621425528,
            -1.6514823546942237,
            -1.8501865382239993,
            -1.962896857465496,
            -1.5701386653495737,
            -1.5624158942431288,
            -0.7698967569625206,
            -0.3244862658699315,
            0.16329918592282866,
            0.8483426212219863
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.7875439328854638,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 21.32039576829436,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 11.244320846949758,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 2.1383320190687396
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 7.064509899153945
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -4.046180932604138
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.7882227558013984
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.3762131634369434
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.24812218327491237
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3994.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3994,
          "annual_bias_pct": null,
          "hourly_rmse": 5.25463879629643,
          "hourly_max_abs_diff": 28.90947619595709,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 81.38520735351584,
          "hourly_pass_fraction": 0.0002503755633450175,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 28.90947619595709,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 5.25463879629643
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 4.01051844711186
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 9.28431549201019
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 12.164443331885266
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0002503755633450175
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3994.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4104,
          "annual_bias_pct": 1.8822544810700126,
          "hourly_rmse": 262.5105114564093,
          "hourly_max_abs_diff": 1095.7296354843875,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 72.69790155070092,
          "hourly_pass_fraction": 0.1652046783625731,
          "monthly_bias_pct": [
            2.654314269589571,
            2.8802213825630196,
            1.7389500443323134,
            1.1138344612626887,
            1.0933999188319266,
            1.4344836370758673,
            1.7756161977238796,
            1.5957368191697363,
            2.2836975033573266,
            2.4382974155882944,
            3.6571234276972917,
            -0.17270570925067932
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.8822544810700126,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 72.69790155070092,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 42.31343142995637
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 262.5105114564093
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 108.47788884152017
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.8553393936077376
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.4898190621384355
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.1652046783625731
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4104.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4220,
          "annual_bias_pct": 1.3548295130594752,
          "hourly_rmse": 271.64330249386904,
          "hourly_max_abs_diff": 995.8127208184039,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 7885.402602852135,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            1.8029633183214082,
            2.1146597265859697,
            1.0371707659213272,
            0.5043650422133071,
            0.2603584779889682,
            0.5680485757042409,
            1.2463250847165062,
            0.9531339545690912,
            3.1797750733043832,
            1.8771689537616258,
            2.8929531017765813,
            -0.5508039504586061
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.3548295130594752,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 3.1797750733043832,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 34.06135752808695
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 271.64330249386904
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 72.16821196478553
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.3153273308573565
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.950931307386177
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4220.0
            }
          ]
        }
      ]
    },
    {
      "id": "surabaya_reverse_dcac110",
      "site_id": "surabaya",
      "site_name": "Surabaya",
      "latitude": -7.1632,
      "longitude": 112.6375,
      "timezone": "Asia/Jakarta",
      "azimuth_deg": 180.0,
      "tilt_deg": 10.0,
      "module_wp": 275.44,
      "module_count": 40,
      "inverter_ac_kw": 10.0,
      "dc_ac_ratio": 1.1018,
      "reference_transposition": "perez",
      "reference_temperature_model": "sapm",
      "fixture": "tools/oracle/fixtures/stages/surabaya_reverse_dcac110.csv",
      "fixture_sha256": "95a9815a9f966f573799738979c08e15d0f2a5e7b82123c56adc1e56de3447ba",
      "hemisphere": "selatan",
      "pnom_kwp": 11.0176,
      "weather_sha256": "825d1aea192d07ea25949863bec53e51dcf85b02f620c21b9288c6ff1d8deb8d",
      "models": {
        "transposition_reference": "perez",
        "transposition_engine": "transposisi isotropik (Liu & Jordan): langsung + difus langit + pantulan tanah; Perez di #12",
        "temperature_reference": "sapm",
        "temperature_engine": "T udara + POA/29; belum memakai kecepatan angin",
        "iam_engine": "belum ada IAM",
        "dc_engine": "nameplate x (1 - derate suhu 0,34%/degC di atas 25 degC)",
        "ac_engine": "actual_dc x efisiensi inverter datar; kurva efisiensi menyusul"
      },
      "annual": {
        "oracle_poa_kwh_m2": 1949.971626999999,
        "engine_poa_kwh_m2": 1943.3793656761488,
        "oracle_ac_kwh": 18400.069566500017,
        "engine_ac_kwh": 18710.661677819786,
        "ac_bias_pct": 1.6879942230503682
      },
      "stages": [
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "tidak ada test CI yang membandingkan kasus ini; posisi matahari dijaga pada kasus equator_dcac110",
            "pending_issue": null
          },
          "stage": "solar_position",
          "engine_column": "solar_zenith",
          "oracle_column": "zenith",
          "engine_status": "modeled",
          "pending_issue": null,
          "n_points": 4380,
          "annual_bias_pct": null,
          "hourly_rmse": 2.881475087711785e-7,
          "hourly_max_abs_diff": 5.000003255872798e-7,
          "hourly_max_abs_diff_azimuth": 4.999135825300982e-7,
          "hourly_max_rel_diff_pct": 0.000011377063690372827,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": null,
          "within_tolerance": true,
          "metrics": [
            {
              "name": "zenith_max_abs_diff",
              "unit": "deg",
              "value": 5.000003255872798e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.zenith_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "azimuth_max_abs_diff",
              "unit": "deg",
              "value": 4.999135825300982e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.azimuth_max_abs_diff_deg",
              "within_tolerance": true
            },
            {
              "name": "aoi_max_abs_diff",
              "unit": "deg",
              "value": 4.999718044018664e-7,
              "tolerance": 0.01,
              "tolerance_key": "solar_position.aoi_max_abs_diff_deg",
              "within_tolerance": true
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "deg",
              "value": 2.881475087711785e-7
            },
            {
              "name": "hourly_mbe",
              "unit": "deg",
              "value": -1.7196212985280748e-9
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -3.518100789645315e-9
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.895088523327352e-7
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4380.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09 (#12, transposisi Perez)",
            "pending_issue": "#12"
          },
          "stage": "poa",
          "engine_column": "poa_irradiance",
          "oracle_column": "poa_global",
          "engine_status": "approximated",
          "pending_issue": "#12",
          "n_points": 3948,
          "annual_bias_pct": -0.33806960227376376,
          "hourly_rmse": 5.740448338225696,
          "hourly_max_abs_diff": 16.725242057539845,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 15.157870781569303,
          "hourly_pass_fraction": 0.23556231003039513,
          "monthly_bias_pct": [
            -1.7323783303990352,
            -1.175689493837306,
            -0.3645594406019576,
            0.6193385551133899,
            0.8637326121481003,
            1.1337582588726622,
            0.8056143077994969,
            0.5227769874776622,
            -0.12035347538029086,
            -0.7683350878241693,
            -1.2107662597659798,
            -1.8528624733478674
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": -0.33806960227376376,
              "tolerance": 0.5,
              "tolerance_key": "poa.annual_max_rel_diff_pct",
              "within_tolerance": true
            },
            {
              "name": "hourly_max_abs_diff",
              "unit": "W/m2",
              "value": 16.725242057539845,
              "tolerance": 2.0,
              "tolerance_key": "poa.hourly_max_abs_diff_w_m2",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 15.157870781569303,
              "tolerance": 1.0,
              "tolerance_key": "poa.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh/m2",
              "value": 1.7368375089791661
            },
            {
              "name": "hourly_rmse",
              "unit": "W/m2",
              "value": 5.740448338225696
            },
            {
              "name": "hourly_mbe",
              "unit": "W/m2",
              "value": -1.7304313759556909
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": -0.351570981802047
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 1.1662843648678816
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.23556231003039513
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3948.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-09",
            "pending_issue": "#12"
          },
          "stage": "effective_irradiance",
          "engine_column": null,
          "oracle_column": "effective_irradiance",
          "engine_status": "not_modeled",
          "pending_issue": "#12",
          "n_points": 0,
          "annual_bias_pct": null,
          "hourly_rmse": null,
          "hourly_max_abs_diff": null,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": null,
          "hourly_pass_fraction": null,
          "monthly_bias_pct": null,
          "within_tolerance": null,
          "metrics": [],
          "informational": []
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-10",
            "pending_issue": "#13"
          },
          "stage": "cell_temperature",
          "engine_column": "avg_cell_temp",
          "oracle_column": "cell_temperature",
          "engine_status": "approximated",
          "pending_issue": "#13",
          "n_points": 3948,
          "annual_bias_pct": null,
          "hourly_rmse": 5.422106516050092,
          "hourly_max_abs_diff": 31.58660250614153,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 87.72683569366009,
          "hourly_pass_fraction": 0.0005065856129685917,
          "monthly_bias_pct": null,
          "within_tolerance": false,
          "metrics": [
            {
              "name": "hourly_max_abs_diff",
              "unit": "degC",
              "value": 31.58660250614153,
              "tolerance": 0.2,
              "tolerance_key": "cell_temperature.hourly_max_abs_diff_deg_c",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "hourly_rmse",
              "unit": "degC",
              "value": 5.422106516050092
            },
            {
              "name": "hourly_mbe",
              "unit": "degC",
              "value": 4.029764468501965
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 9.462041551009154
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 12.731314087926185
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.0005065856129685917
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 3948.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-11",
            "pending_issue": "#14"
          },
          "stage": "dc",
          "engine_column": "module_mpp_power",
          "oracle_column": "p_mp",
          "engine_status": "approximated",
          "pending_issue": "#14",
          "n_points": 4112,
          "annual_bias_pct": 2.3356764771042084,
          "hourly_rmse": 230.70255436032298,
          "hourly_max_abs_diff": 1170.4896362878826,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 92.644200975408,
          "hourly_pass_fraction": 0.10651750972762646,
          "monthly_bias_pct": [
            -0.28374732278169834,
            1.5093369680193685,
            2.3046952726934524,
            3.836085863031747,
            4.939053048637189,
            5.613235549890434,
            4.9234742745833575,
            4.231117663739668,
            3.231278433525809,
            1.8027612283201937,
            1.5665185094509717,
            -3.8413701676826317
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 2.3356764771042084,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "hourly_max_rel_diff",
              "unit": "%",
              "value": 92.644200975408,
              "tolerance": 0.5,
              "tolerance_key": "dc_power.hourly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 53.76563864373384
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 230.70255436032298
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 106.83249019053883
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 2.30801864658334
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 4.984118561014199
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 0.10651750972762646
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4112.0
            }
          ]
        },
        {
          "verdict": "NOT_GATED",
          "gate": {
            "gated": false,
            "ci_test": null,
            "reason": "test oracle tahap ini masih #[ignore]: menunggu ENG-12",
            "pending_issue": "#15"
          },
          "stage": "ac",
          "engine_column": "ac_power",
          "oracle_column": "p_ac",
          "engine_status": "approximated",
          "pending_issue": "#15",
          "n_points": 4150,
          "annual_bias_pct": 1.6879942230504694,
          "hourly_rmse": 225.69949831290083,
          "hourly_max_abs_diff": 1053.2332390688243,
          "hourly_max_abs_diff_azimuth": null,
          "hourly_max_rel_diff_pct": 123937.24838203964,
          "hourly_pass_fraction": 1.0,
          "monthly_bias_pct": [
            -0.9300304257002201,
            0.8745549682966102,
            1.6630059048742283,
            3.3176436194839294,
            4.28321855142266,
            4.99163816046976,
            4.281025314839156,
            3.58059288655422,
            2.483469596935172,
            1.122525102044101,
            0.7997414486401943,
            -4.346626441539823
          ],
          "within_tolerance": false,
          "metrics": [
            {
              "name": "annual_bias",
              "unit": "%",
              "value": 1.6879942230504694,
              "tolerance": 1.0,
              "tolerance_key": "ac_power.annual_max_rel_diff_pct",
              "within_tolerance": false
            },
            {
              "name": "monthly_bias_max_abs",
              "unit": "%",
              "value": 4.99163816046976,
              "tolerance": 1.5,
              "tolerance_key": "ac_power.monthly_max_rel_diff_pct",
              "within_tolerance": false
            }
          ],
          "informational": [
            {
              "name": "monthly_rmse",
              "unit": "kWh",
              "value": 45.63309948037874
            },
            {
              "name": "hourly_rmse",
              "unit": "W",
              "value": 225.69949831290083
            },
            {
              "name": "hourly_mbe",
              "unit": "W",
              "value": 71.83736306966297
            },
            {
              "name": "hourly_nmbe",
              "unit": "%",
              "value": 1.6202387478027855
            },
            {
              "name": "hourly_nrmse",
              "unit": "%",
              "value": 5.090485743074854
            },
            {
              "name": "hourly_pass_fraction",
              "unit": "fraction",
              "value": 1.0
            },
            {
              "name": "hours_compared",
              "unit": "hours",
              "value": 4150.0
            }
          ]
        }
      ]
    }
  ],
  "hemisphere_checks": [
    {
      "site_id": "medan",
      "description": "POA tahunan engine untuk azimuth 180 dan 0 terhadap pvlib isotropik (direkonstruksi dari fixture Perez); tanda POA(180) - POA(0) harus sama dengan oracle",
      "tolerance_key": "poa.annual_max_rel_diff_pct",
      "tolerance": 0.5,
      "south_facing": {
        "azimuth_deg": 180.0,
        "oracle_isotropic_poa_kwh_m2": 1728.6015989850603,
        "engine_poa_kwh_m2": 1728.6015985310607,
        "bias_pct": -2.626397540796048e-8,
        "within_tolerance": true
      },
      "north_facing": {
        "azimuth_deg": 0.0,
        "oracle_isotropic_poa_kwh_m2": 1715.1058091850584,
        "engine_poa_kwh_m2": 1715.1058116159536,
        "bias_pct": 1.4173442422062243e-7,
        "within_tolerance": true
      },
      "sign_matches_oracle": true,
      "south_beats_north_in_engine": true,
      "verdict": "PASS",
      "ci_test": "oracle_medan_north_of_equator"
    }
  ],
  "summary": {
    "cases": 24,
    "sites": 7,
    "stage_results": {
      "FAIL": 0,
      "NOT_GATED": 136,
      "PASS": 8
    },
    "hemisphere_checks": {
      "FAIL": 0,
      "PASS": 1
    }
  },
  "telemetry": {
    "title": "Validasi terhadap data terukur",
    "status": "belum_ada_data",
    "note": "Belum ada data telemetri berizin",
    "source_issue": "#70",
    "cases": []
  }
}
