{ "artifact": "submission_artifacts/hierarchical_fpt_planner.joblib", "artifact_sha256": "6e9262359591119c4979e1c21c13b02d842d7c04474a182fda5c2bcdcbc9a8a1", "schema_version": 1, "base_artifact": "public/v05:submission_artifacts/planner.joblib", "base_artifact_sha256": "63d71091d7f46e8fb11798b7c2be936cc7e0022954824a4eb98c07dc1bf9b0b3", "configuration": { "eol_voltage": 2.4, "horizon_days": 42.0, "terminal_nonoverlap_weeks": 12, "minimum_weekly_increments": 4, "maximum_state_staleness_days": 7.0, "rank_residual_weight": 0.15, "capacity_lookback_days": 42, "emergency_operational_scale": 0.5, "outer_pool": "leave current target building out", "smoothing": "strict 10=5; rolling seven-calendar-day median min_periods=3; terminal calendar day strictly before cutoff" }, "promotion_evidence": { "official_48": "artifacts/hierarchical_fpt_official.json", "robust_48x27": "artifacts/hierarchical_fpt_grid.cases.json" }, "source_sha256": { "src/batteryswapai/hierarchical_fpt.py": "51874f5fde70a2c868e5300cce3648d778279cfdb1d64ee3af5f6a30683eca0b", "src/batteryswapai/identity_ensemble.py": "fa1f9aeaa89fba1bc5fc437c478c876544f2973960db18ef2c83f0042cc9df4a", "src/batteryswapai/competition_planner.py": "a56bfe549a3d6fcfe59217f7bd8a647533a4484fdbb26fe3ef8f1d6c84035a98", "scripts/experiment_hierarchical_fpt.py": "1ce854654813752930194413bcd5dff44984d105493a36c42e10945e23fa6b60", "scripts/evaluate_hierarchical_fpt_grid.py": "90f764da5df050e37af15fc47524c629cce2b021de34b0eab39095383639a51e", "scripts/build_hierarchical_fpt_submission.py": "39d4cc094642b6dbf0a03a9a5abff84c2639eb622ac117de32f04e5b6f0e8f78", "script.py": "81d4ee862ef14125bd4e6f0c77ec4582a89a4deb95c50dd4c78b84124979628c", "Dockerfile": "84a3f71b2ba664f91ceb8a2980dd5397a002eed02af9fdd264325caf89158573", "requirements.txt": "53d9c582b98b392c0517dc87c78949cd13b99b3f09ebfce601d0c8eadd4f2db3" }, "runtime_versions": { "batteryswap_public": "0.3.4", "joblib": "1.5.3", "numpy": "2.2.6", "pandas": "2.3.3", "scipy": "1.14.1", "scikit-learn": "1.7.2" } }