diff --git a/references/oracle/vedastro_identity_evidence_audit_2026_07_19.json b/references/oracle/vedastro_identity_evidence_audit_2026_07_19.json new file mode 100644 index 00000000..4749024d --- /dev/null +++ b/references/oracle/vedastro_identity_evidence_audit_2026_07_19.json @@ -0,0 +1,245 @@ +{ + "archive": "references/oracle/vedastro_identity_archive_2026_07_19.json", + "boundary": "NuGet/runtime identity can be pinned locally; hosted api.vedastro.org remains blocked without upstream build/method metadata.", + "evidence": [ + { + "blocker": "", + "field": "package_sha256", + "source": "references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json", + "status": "complete", + "value": "f753df4e76c75b9ad219c2f5a8fe4b17361065d6f4fa1198897cf117b7bc55d5" + }, + { + "blocker": "", + "field": "library_dll_sha256", + "source": "references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json", + "status": "complete", + "value": "e4ec61b07ac1c15fcc65d9ffdc54bc2d26497597760572e2888f1992fc7b1ca8" + }, + { + "blocker": "", + "field": "assembly_version", + "source": "references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json", + "status": "complete", + "value": "1.2.0.0" + }, + { + "blocker": "", + "field": "assembly_informational_version", + "source": "references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json", + "status": "complete", + "value": "1.2.0" + }, + { + "blocker": "", + "field": "public_method_contracts", + "source": "references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json", + "status": "complete", + "value": [ + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetAllPlanetFixedLongitude", + "parameters": [ + { + "Name": "time", + "type": "VedAstro.Library.Time" + } + ], + "returns": "System.Collections.Generic.List`1[[VedAstro.Library.PlanetLongitude, VedAstro.Library, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null]]" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetAllPlanetLongitude", + "parameters": [ + { + "Name": "time", + "type": "VedAstro.Library.Time" + } + ], + "returns": "System.Collections.Generic.List`1[[VedAstro.Library.PlanetLongitude, VedAstro.Library, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null]]" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetConstellationAtLongitude", + "parameters": [ + { + "Name": "planetLongitude", + "type": "VedAstro.Library.Angle" + } + ], + "returns": "VedAstro.Library.PlanetConstellation" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetHouse1And10Longitudes", + "parameters": [ + { + "Name": "time", + "type": "VedAstro.Library.Time" + } + ], + "returns": "System.Double[]" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetLongitudeAtZodiacSign", + "parameters": [ + { + "Name": "zodiacSign", + "type": "VedAstro.Library.ZodiacSign" + } + ], + "returns": "VedAstro.Library.Angle" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetNavamsaSignNameFromLongitude", + "parameters": [ + { + "Name": "longitude", + "type": "VedAstro.Library.Angle" + } + ], + "returns": "VedAstro.Library.ZodiacName" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetPlanetNirayanaLongitude", + "parameters": [ + { + "Name": "time", + "type": "VedAstro.Library.Time" + }, + { + "Name": "planetName", + "type": "VedAstro.Library.PlanetName" + } + ], + "returns": "VedAstro.Library.Angle" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetPlanetRasiSign", + "parameters": [ + { + "Name": "planetName", + "type": "VedAstro.Library.PlanetName" + }, + { + "Name": "time", + "type": "VedAstro.Library.Time" + } + ], + "returns": "VedAstro.Library.ZodiacSign" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetPlanetSayanaLongitude", + "parameters": [ + { + "Name": "time", + "type": "VedAstro.Library.Time" + }, + { + "Name": "planetName", + "type": "VedAstro.Library.PlanetName" + } + ], + "returns": "VedAstro.Library.Angle" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetPlanetShadbalaPinda", + "parameters": [ + { + "Name": "planetName", + "type": "VedAstro.Library.PlanetName" + }, + { + "Name": "time", + "type": "VedAstro.Library.Time" + } + ], + "returns": "VedAstro.Library.Shashtiamsa" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "GetZodiacSignAtLongitude", + "parameters": [ + { + "Name": "longitude", + "type": "VedAstro.Library.Angle" + } + ], + "returns": "VedAstro.Library.ZodiacSign" + }, + { + "declaring_type": "VedAstro.Library.MatchCalculator", + "name": "RasiKuta", + "parameters": [ + { + "Name": "male", + "type": "VedAstro.Library.Person" + }, + { + "Name": "female", + "type": "VedAstro.Library.Person" + } + ], + "returns": "VedAstro.Library.Compatibility.CompatibilityPrediction" + }, + { + "declaring_type": "VedAstro.Library.AstronomicalCalculator", + "name": "TimeToLongitude", + "parameters": [ + { + "Name": "time", + "type": "System.TimeSpan" + } + ], + "returns": "VedAstro.Library.Angle" + }, + { + "declaring_type": "VedAstro.Library.Time", + "name": "TimeToLongitude", + "parameters": [ + { + "Name": "time", + "type": "System.TimeSpan" + } + ], + "returns": "VedAstro.Library.Angle" + } + ] + }, + { + "blocker": "", + "field": "runtime_image_digest", + "source": "references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json", + "status": "complete", + "value": "sha256:d32bd65cf5843f413e81f5d917057c82da99737cb1637e905a1a4bc2e7ec6c8d" + }, + { + "blocker": "source commit not present in NuGet catalog/runtime contract; hosted API identity still needs upstream metadata or pinned source checkout.", + "field": "source_commit", + "source": "references/oracle/vedastro_identity_archive_2026_07_19.json", + "status": "blocked", + "value": null + } + ], + "hosted_identity_status": "blocked", + "license": "MIT", + "package": "VedAstro.Library", + "production_tuning_allowed": false, + "runtime_candidate_status": "complete", + "runtime_contract": "references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json", + "scope": "vedastro_identity_evidence_audit", + "summary": { + "blocked_count": 1, + "complete_count": 6, + "method_contract_count": 14, + "required_field_count": 7 + }, + "truth_upgrade_allowed": false, + "version": "1.2.0" +} diff --git a/references/oracle/xalen_multi_public_case_component_coverage_2026_07_19.json b/references/oracle/xalen_multi_public_case_component_coverage_2026_07_19.json new file mode 100644 index 00000000..325a39cd --- /dev/null +++ b/references/oracle/xalen_multi_public_case_component_coverage_2026_07_19.json @@ -0,0 +1,244 @@ +{ + "boundary": "Xalen multi-case coverage proves archived raw completeness only; method variants still require source/fixture arbitration.", + "cases": [ + { + "birth_source": { + "evidence_basis": "quoted BC/BR", + "source_grade": "primary", + "time_accuracy_rating": "AA", + "url": "https://www.astro.com/adbvip/adbvip_02_11.htm" + }, + "case_id": "aniston_emmy_2002", + "modes": { + "independent_ephemeris": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "independent_ephemeris", + "raw_sha256": "dec78de09eb0f1009352fed49a5168d06b6fd0366bf18321d216dc10d1551c35", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + }, + "shared_input": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "shared_input", + "raw_sha256": "978e2fe29bb2565b4f01201a0db600b8d61961d2667e7751d8395c094c7bfd5e", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + } + }, + "name": "Jennifer Aniston" + }, + { + "birth_source": { + "evidence_basis": "BC/BR in hand", + "source_grade": "primary", + "time_accuracy_rating": "AA", + "url": "https://www.astro.com/adbvip/adbvip_02_24.htm" + }, + "case_id": "jobs_iphone_2007", + "modes": { + "independent_ephemeris": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "independent_ephemeris", + "raw_sha256": "0d3030d9f3655aa894f347e0ec49e2f948e600f9c4a5d994a10bf1594f8bfa5f", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + }, + "shared_input": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "shared_input", + "raw_sha256": "0913459ebbec8c31fc757f6678ede8d7eafd14aba9003f428d6bcb41958dcbea", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + } + }, + "name": "Steve Jobs" + }, + { + "birth_source": { + "evidence_basis": "BC/BR in hand", + "source_grade": "primary", + "time_accuracy_rating": "AA", + "url": "https://www.astro.com/adbvip/adbvip_08_04.htm" + }, + "case_id": "obama_election_2008", + "modes": { + "independent_ephemeris": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "independent_ephemeris", + "raw_sha256": "cd1ca45b04eaa1fdec6a83959886907c77c7d4195f32e2f58d1e423fc12511fc", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + }, + "shared_input": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "shared_input", + "raw_sha256": "30e498a6bf5a6539669acaa388a30b2f7d02fb0493a582e69a4b78a12afcd2ad", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + } + }, + "name": "Barack Obama" + }, + { + "birth_source": { + "evidence_basis": "BC/BR in hand", + "source_grade": "primary", + "time_accuracy_rating": "AA", + "url": "https://www.astro.com/adbvip/adbvip_06_22.htm" + }, + "case_id": "streep_oscar_1983", + "modes": { + "independent_ephemeris": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "independent_ephemeris", + "raw_sha256": "0cfcaf24f0fe5a30999a0b97b057168b407fa06bd7ae185f2769794f6df0afcf", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + }, + "shared_input": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "shared_input", + "raw_sha256": "06dd40ee5bfa533e7aaeef379019f2d7ec0242a5cb13cb00f5b117931483f358", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + } + }, + "name": "Meryl Streep" + }, + { + "birth_source": { + "evidence_basis": "BC/BR in hand", + "source_grade": "primary", + "time_accuracy_rating": "AA", + "url": "https://www.astro.com/adbvip/adbvip_06_21.htm" + }, + "case_id": "william_marriage_2011", + "modes": { + "independent_ephemeris": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "independent_ephemeris", + "raw_sha256": "96df97198960cae39449e2bb9c78bfcbd7f4cd9a7daca30d87bf5982fb49413b", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + }, + "shared_input": { + "ashtakavarga_field_count": 96, + "ashtakavarga_table_count": 8, + "coverage_status": "complete", + "input_mode": "shared_input", + "raw_sha256": "d7c0a8370cf2e40a6e40c4c1ff9c541723ba9f4f4fbd0ba132a62cccbb69d1f7", + "shadbala_component_count": 42, + "varga_field_count": 35, + "varga_sections": [ + "D1", + "D10", + "D2", + "D4", + "D9" + ] + } + }, + "name": "William, Prince of Wales" + } + ], + "license": "Apache-2.0", + "production_tuning_allowed": false, + "scope": "xalen_multi_public_case_component_coverage", + "source_artifacts": [ + "references/oracle/artifacts/xalen_multi_public_case_shared_input_2026_07_17.json", + "references/oracle/artifacts/xalen_multi_public_case_independent_ephemeris_2026_07_17.json" + ], + "source_commit": "cc6edbec1f748ebdc4950ae6198f575c5ada73fa", + "summary": { + "av_field_count": 960, + "case_count": 5, + "case_mode_count": 10, + "complete_case_mode_count": 10, + "incomplete_case_mode_count": 0, + "mode_count": 2, + "shadbala_component_field_count": 420, + "varga_field_count": 350 + }, + "truth_policy": "independent_observation_not_truth" +} diff --git a/references/oracle/xalen_shadbala_av_component_delta_report_2026_07_19.json b/references/oracle/xalen_shadbala_av_component_delta_report_2026_07_19.json new file mode 100644 index 00000000..0ea273ad --- /dev/null +++ b/references/oracle/xalen_shadbala_av_component_delta_report_2026_07_19.json @@ -0,0 +1,749 @@ +{ + "boundary": "Xalen deltas identify formula/table/unit evidence needs; they are not majority-vote truth.", + "component_groups": [ + { + "allowed_claim": "table_variant", + "category": "ashtakavarga_table_or_contributor_variant", + "closure_status": "open", + "component": "ashtakavarga_bav", + "required_evidence": "public worked table with same contributor semantics and row/column schema.", + "rows": [ + { + "field": "Sun", + "local_value": [ + 3, + 7, + 4, + 3, + 3, + 2, + 6, + 7, + 4, + 4, + 3, + 2 + ], + "section": "ashtakavarga_bav", + "status": "match", + "xalen_value": [ + 3, + 7, + 4, + 3, + 3, + 2, + 6, + 7, + 4, + 4, + 3, + 2 + ] + }, + { + "field": "Moon", + "local_value": [ + 4, + 4, + 4, + 3, + 6, + 5, + 3, + 3, + 4, + 5, + 3, + 5 + ], + "section": "ashtakavarga_bav", + "status": "mismatch", + "xalen_value": [ + 4, + 5, + 4, + 2, + 6, + 5, + 3, + 2, + 5, + 5, + 3, + 5 + ] + }, + { + "field": "Mars", + "local_value": [ + 4, + 7, + 4, + 4, + 3, + 0, + 4, + 5, + 1, + 4, + 1, + 2 + ], + "section": "ashtakavarga_bav", + "status": "match", + "xalen_value": [ + 4, + 7, + 4, + 4, + 3, + 0, + 4, + 5, + 1, + 4, + 1, + 2 + ] + }, + { + "field": "Mercury", + "local_value": [ + 5, + 5, + 5, + 4, + 4, + 2, + 6, + 5, + 5, + 8, + 2, + 3 + ], + "section": "ashtakavarga_bav", + "status": "match", + "xalen_value": [ + 5, + 5, + 5, + 4, + 4, + 2, + 6, + 5, + 5, + 8, + 2, + 3 + ] + }, + { + "field": "Jupiter", + "local_value": [ + 7, + 5, + 3, + 3, + 4, + 7, + 4, + 5, + 4, + 6, + 5, + 3 + ], + "section": "ashtakavarga_bav", + "status": "mismatch", + "xalen_value": [ + 7, + 5, + 3, + 3, + 5, + 7, + 3, + 5, + 4, + 6, + 5, + 3 + ] + }, + { + "field": "Venus", + "local_value": [ + 4, + 3, + 5, + 4, + 3, + 5, + 4, + 3, + 5, + 5, + 5, + 6 + ], + "section": "ashtakavarga_bav", + "status": "mismatch", + "xalen_value": [ + 4, + 3, + 5, + 3, + 4, + 5, + 4, + 3, + 5, + 5, + 5, + 6 + ] + }, + { + "field": "Saturn", + "local_value": [ + 1, + 5, + 3, + 0, + 6, + 3, + 4, + 5, + 3, + 3, + 3, + 3 + ], + "section": "ashtakavarga_bav", + "status": "match", + "xalen_value": [ + 1, + 5, + 3, + 0, + 6, + 3, + 4, + 5, + 3, + 3, + 3, + 3 + ] + } + ], + "status_counts": { + "match": 4, + "mismatch": 3 + }, + "unit_contract": "BAV/SAV tables must name contributor set, shodhana state, and Lagna inclusion." + }, + { + "allowed_claim": "table_variant", + "category": "ashtakavarga_table_or_contributor_variant", + "closure_status": "open", + "component": "ashtakavarga_sav", + "required_evidence": "public worked table with same contributor semantics and row/column schema.", + "rows": [ + { + "field": "12_sign_scores", + "local_value": [ + 28, + 36, + 28, + 21, + 29, + 24, + 31, + 33, + 26, + 35, + 22, + 24 + ], + "section": "ashtakavarga_sav", + "status": "mismatch", + "xalen_value": [ + 28, + 37, + 28, + 19, + 31, + 24, + 30, + 32, + 27, + 35, + 22, + 24 + ] + } + ], + "status_counts": { + "mismatch": 1 + }, + "unit_contract": "BAV/SAV tables must name contributor set, shodhana state, and Lagna inclusion." + }, + { + "allowed_claim": "derived_total_blocked_until_components_close", + "category": "derived_total_from_component_variants", + "closure_status": "open", + "component": "total_rupa", + "required_evidence": "close sthana/dig/kala/chesta/naisargika/drik first, then recompute totals.", + "rows": [ + { + "field": "Sun", + "local_value": 480.62, + "section": "shadbala_total", + "status": "mismatch", + "xalen_value": 492.6728169709661 + }, + { + "field": "Moon", + "local_value": 584.26, + "section": "shadbala_total", + "status": "mismatch", + "xalen_value": 420.9351853027684 + }, + { + "field": "Mars", + "local_value": 456.19, + "section": "shadbala_total", + "status": "mismatch", + "xalen_value": 396.35371415257947 + }, + { + "field": "Mercury", + "local_value": 365.28, + "section": "shadbala_total", + "status": "mismatch", + "xalen_value": 315.58265411353744 + }, + { + "field": "Jupiter", + "local_value": 569.4, + "section": "shadbala_total", + "status": "mismatch", + "xalen_value": 436.1320902109636 + }, + { + "field": "Venus", + "local_value": 406.93, + "section": "shadbala_total", + "status": "mismatch", + "xalen_value": 382.590087874206 + }, + { + "field": "Saturn", + "local_value": 430.05, + "section": "shadbala_total", + "status": "mismatch", + "xalen_value": 355.2596415714923 + } + ], + "status_counts": { + "mismatch": 7 + }, + "unit_contract": "Total Rupa/Virupa cannot be arbitrated before component units close." + }, + { + "allowed_claim": "component_method_variant", + "category": "shadbala_formula_variant", + "closure_status": "open", + "component": "chesta", + "required_evidence": "worked example or source text for each six-force component formula and unit.", + "rows": [ + { + "field": "Sun.chesta", + "local_value": 36.0, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 30.0 + }, + { + "field": "Moon.chesta", + "local_value": 21.34, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 30.0 + }, + { + "field": "Mars.chesta", + "local_value": 21.6, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 15.0 + }, + { + "field": "Mercury.chesta", + "local_value": 47.8, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 60.0 + }, + { + "field": "Jupiter.chesta", + "local_value": 46.49, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 60.0 + }, + { + "field": "Venus.chesta", + "local_value": 29.36, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 15.0 + }, + { + "field": "Saturn.chesta", + "local_value": 36.99, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 30.0 + } + ], + "status_counts": { + "mismatch": 7 + }, + "unit_contract": "Virupa/Rupa component unit must be explicit before parity claims." + }, + { + "allowed_claim": "component_method_variant", + "category": "shadbala_formula_variant", + "closure_status": "open", + "component": "dig", + "required_evidence": "worked example or source text for each six-force component formula and unit.", + "rows": [ + { + "field": "Sun.dig", + "local_value": 24.81, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 30.0 + }, + { + "field": "Moon.dig", + "local_value": 95.48, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 20.000000000000004 + }, + { + "field": "Mars.dig", + "local_value": 77.41, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 50.0 + }, + { + "field": "Mercury.dig", + "local_value": 12.64, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 9.999999999999998 + }, + { + "field": "Jupiter.dig", + "local_value": 80.59, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 40.00000000000001 + }, + { + "field": "Venus.dig", + "local_value": 69.95, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 50.0 + }, + { + "field": "Saturn.dig", + "local_value": 19.63, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 20.000000000000004 + } + ], + "status_counts": { + "mismatch": 7 + }, + "unit_contract": "Virupa/Rupa component unit must be explicit before parity claims." + }, + { + "allowed_claim": "component_method_variant", + "category": "shadbala_formula_variant", + "closure_status": "open", + "component": "drik", + "required_evidence": "worked example or source text for each six-force component formula and unit.", + "rows": [ + { + "field": "Sun.drik", + "local_value": 1.74, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 3.75 + }, + { + "field": "Moon.drik", + "local_value": 20.06, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 18.75 + }, + { + "field": "Mars.drik", + "local_value": 13.49, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 15.0 + }, + { + "field": "Mercury.drik", + "local_value": -10.62, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 0.0 + }, + { + "field": "Jupiter.drik", + "local_value": 6.9, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": -3.75 + }, + { + "field": "Venus.drik", + "local_value": -2.75, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 0.0 + }, + { + "field": "Saturn.drik", + "local_value": 9.49, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 11.25 + } + ], + "status_counts": { + "mismatch": 7 + }, + "unit_contract": "Virupa/Rupa component unit must be explicit before parity claims." + }, + { + "allowed_claim": "component_method_variant", + "category": "shadbala_formula_variant", + "closure_status": "open", + "component": "kala", + "required_evidence": "worked example or source text for each six-force component formula and unit.", + "rows": [ + { + "field": "Sun.kala", + "local_value": 140.98, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 133.08365500051036 + }, + { + "field": "Moon.kala", + "local_value": 149.61, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 106.91634499948964 + }, + { + "field": "Mars.kala", + "local_value": 127.92, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 85.58365500051036 + }, + { + "field": "Mercury.kala", + "local_value": 121.79, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 85.66634499948964 + }, + { + "field": "Jupiter.kala", + "local_value": 199.32, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 94.41634499948964 + }, + { + "field": "Venus.kala", + "local_value": 113.45, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 109.41634499948964 + }, + { + "field": "Saturn.kala", + "local_value": 136.76, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 85.58365500051036 + } + ], + "status_counts": { + "mismatch": 7 + }, + "unit_contract": "Virupa/Rupa component unit must be explicit before parity claims." + }, + { + "allowed_claim": "component_method_variant", + "category": "shadbala_formula_variant", + "closure_status": "open", + "component": "naisargika", + "required_evidence": "worked example or source text for each six-force component formula and unit.", + "rows": [ + { + "field": "Sun.naisargika", + "local_value": 60.0, + "section": "shadbala_components", + "status": "match", + "xalen_value": 60.0 + }, + { + "field": "Moon.naisargika", + "local_value": 51.43, + "section": "shadbala_components", + "status": "match", + "xalen_value": 51.43 + }, + { + "field": "Mars.naisargika", + "local_value": 17.14, + "section": "shadbala_components", + "status": "match", + "xalen_value": 17.14 + }, + { + "field": "Mercury.naisargika", + "local_value": 25.71, + "section": "shadbala_components", + "status": "match", + "xalen_value": 25.71 + }, + { + "field": "Jupiter.naisargika", + "local_value": 34.29, + "section": "shadbala_components", + "status": "match", + "xalen_value": 34.29 + }, + { + "field": "Venus.naisargika", + "local_value": 42.86, + "section": "shadbala_components", + "status": "match", + "xalen_value": 42.86 + }, + { + "field": "Saturn.naisargika", + "local_value": 8.57, + "section": "shadbala_components", + "status": "match", + "xalen_value": 8.57 + } + ], + "status_counts": { + "match": 7 + }, + "unit_contract": "Virupa/Rupa component unit must be explicit before parity claims." + }, + { + "allowed_claim": "component_method_variant", + "category": "shadbala_formula_variant", + "closure_status": "open", + "component": "sthana", + "required_evidence": "worked example or source text for each six-force component formula and unit.", + "rows": [ + { + "field": "Sun.sthana", + "local_value": 217.09, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 235.83916197045576 + }, + { + "field": "Moon.sthana", + "local_value": 246.34, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 193.83884030327874 + }, + { + "field": "Mars.sthana", + "local_value": 198.63, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 213.63005915206912 + }, + { + "field": "Mercury.sthana", + "local_value": 167.96, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 134.20630911404785 + }, + { + "field": "Jupiter.sthana", + "local_value": 201.81, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 211.17574521147395 + }, + { + "field": "Venus.sthana", + "local_value": 154.06, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 165.31374287471633 + }, + { + "field": "Saturn.sthana", + "local_value": 218.61, + "section": "shadbala_components", + "status": "mismatch", + "xalen_value": 199.85598657098197 + } + ], + "status_counts": { + "mismatch": 7 + }, + "unit_contract": "Virupa/Rupa component unit must be explicit before parity claims." + } + ], + "license": "Apache-2.0", + "production_tuning_allowed": false, + "scope": "xalen_shadbala_av_component_delta_report", + "source_artifacts": { + "manifest": "references/oracle/three_engine_parity_replay_manifest.json", + "provenance_registry": "references/oracle/shadbala_av_component_provenance_registry_2026_07_19.json", + "xalen_raw": "references/oracle/artifacts/xalen_steve_jobs_high_rigor_raw.json" + }, + "source_commit": "cc6edbec1f748ebdc4950ae6198f575c5ada73fa", + "summary": { + "ashtakavarga_mismatch_count": 4, + "ashtakavarga_rows": 8, + "component_group_count": 9, + "shadbala_component_mismatch_count": 35, + "shadbala_component_rows": 42, + "shadbala_total_mismatch_count": 7, + "shadbala_total_rows": 7 + }, + "truth_policy": "method_variant_not_majority_vote" +} diff --git a/references/real_case_calibration/day_level_holdout_v3_human_annotation_packet_2026_07_19.json b/references/real_case_calibration/day_level_holdout_v3_human_annotation_packet_2026_07_19.json new file mode 100644 index 00000000..4183f031 --- /dev/null +++ b/references/real_case_calibration/day_level_holdout_v3_human_annotation_packet_2026_07_19.json @@ -0,0 +1,232 @@ +{ + "annotations": [ + { + "adjudicator": "", + "annotation_id": "DLH-PILOT-001-75809BC667", + "candidate_label": "target_event", + "domain": "marriage", + "end": "1991-03-18", + "event_absent_assertion": "", + "event_description": "Marriage to Laurene Powell Jobs", + "final_label": null, + "frozen_before_scoring": false, + "independent_human_reviewed": false, + "notes": "", + "review_decision": "pending", + "source_quote_or_summary": "", + "source_urls": [ + "https://allaboutstevejobs.com/bio/timeline", + "https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390" + ], + "start": "1991-03-18", + "subject_id": "steve_jobs", + "subject_name": "Steve Jobs", + "time_uncertainty_days": null + }, + { + "adjudicator": "", + "annotation_id": "DLH-PILOT-002-2E68252F11", + "candidate_label": "no_target_event", + "domain": "marriage", + "end": "1990-09-30", + "event_absent_assertion": "Candidate non-marriage interval before the documented March 18, 1991 marriage; must be independently checked against biography/timeline sources.", + "event_description": "", + "final_label": null, + "frozen_before_scoring": false, + "independent_human_reviewed": false, + "notes": "", + "review_decision": "pending", + "source_quote_or_summary": "", + "source_urls": [ + "https://allaboutstevejobs.com/bio/timeline", + "https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390" + ], + "start": "1990-09-01", + "subject_id": "steve_jobs", + "subject_name": "Steve Jobs", + "time_uncertainty_days": null + }, + { + "adjudicator": "", + "annotation_id": "DLH-PILOT-003-3B88192D62", + "candidate_label": "no_target_event", + "domain": "marriage", + "end": "1991-06-30", + "event_absent_assertion": "Candidate non-marriage interval after the documented March 18, 1991 marriage; must be independently checked against biography/timeline sources.", + "event_description": "", + "final_label": null, + "frozen_before_scoring": false, + "independent_human_reviewed": false, + "notes": "", + "review_decision": "pending", + "source_quote_or_summary": "", + "source_urls": [ + "https://allaboutstevejobs.com/bio/timeline", + "https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390" + ], + "start": "1991-06-01", + "subject_id": "steve_jobs", + "subject_name": "Steve Jobs", + "time_uncertainty_days": null + }, + { + "adjudicator": "", + "annotation_id": "DLH-PILOT-004-647CE4536A", + "candidate_label": "target_event", + "domain": "marriage", + "end": "1992-10-03", + "event_absent_assertion": "", + "event_description": "Marriage to Michelle Robinson Obama", + "final_label": null, + "frozen_before_scoring": false, + "independent_human_reviewed": false, + "notes": "", + "review_decision": "pending", + "source_quote_or_summary": "", + "source_urls": [ + "https://www.obamalibrary.gov/obamas/first-lady-michelle-obama", + "https://www.whitehousehistory.org/bios/michelle-obama" + ], + "start": "1992-10-03", + "subject_id": "barack_obama", + "subject_name": "Barack Obama", + "time_uncertainty_days": null + }, + { + "adjudicator": "", + "annotation_id": "DLH-PILOT-005-4B61A2A307", + "candidate_label": "no_target_event", + "domain": "marriage", + "end": "1992-07-31", + "event_absent_assertion": "Candidate non-marriage interval before the documented October 3, 1992 marriage; must be independently checked against relationship/timeline sources.", + "event_description": "", + "final_label": null, + "frozen_before_scoring": false, + "independent_human_reviewed": false, + "notes": "", + "review_decision": "pending", + "source_quote_or_summary": "", + "source_urls": [ + "https://www.obamalibrary.gov/obamas/first-lady-michelle-obama", + "https://www.whitehousehistory.org/bios/michelle-obama" + ], + "start": "1992-07-01", + "subject_id": "barack_obama", + "subject_name": "Barack Obama", + "time_uncertainty_days": null + }, + { + "adjudicator": "", + "annotation_id": "DLH-PILOT-006-260BF5AEBD", + "candidate_label": "no_target_event", + "domain": "marriage", + "end": "1993-01-31", + "event_absent_assertion": "Candidate non-marriage interval after the documented October 3, 1992 marriage; must be independently checked against relationship/timeline sources.", + "event_description": "", + "final_label": null, + "frozen_before_scoring": false, + "independent_human_reviewed": false, + "notes": "", + "review_decision": "pending", + "source_quote_or_summary": "", + "source_urls": [ + "https://www.obamalibrary.gov/obamas/first-lady-michelle-obama", + "https://www.whitehousehistory.org/bios/michelle-obama" + ], + "start": "1993-01-01", + "subject_id": "barack_obama", + "subject_name": "Barack Obama", + "time_uncertainty_days": null + }, + { + "adjudicator": "", + "annotation_id": "DLH-PILOT-007-275F44F8FC", + "candidate_label": "target_event", + "domain": "marriage", + "end": "1903-01-06", + "event_absent_assertion": "", + "event_description": "Marriage to Mileva Marić", + "final_label": null, + "frozen_before_scoring": false, + "independent_human_reviewed": false, + "notes": "", + "review_decision": "pending", + "source_quote_or_summary": "", + "source_urls": [ + "https://einstein-website.de/en/timeline/", + "https://www.pbs.org/wgbh/nova/einstein/timeline/" + ], + "start": "1903-01-06", + "subject_id": "albert_einstein", + "subject_name": "Albert Einstein", + "time_uncertainty_days": null + }, + { + "adjudicator": "", + "annotation_id": "DLH-PILOT-008-5675318BC7", + "candidate_label": "no_target_event", + "domain": "marriage", + "end": "1902-06-30", + "event_absent_assertion": "Candidate non-marriage interval before the documented January 6, 1903 marriage; must be independently checked against timeline/biography sources.", + "event_description": "", + "final_label": null, + "frozen_before_scoring": false, + "independent_human_reviewed": false, + "notes": "", + "review_decision": "pending", + "source_quote_or_summary": "", + "source_urls": [ + "https://einstein-website.de/en/timeline/", + "https://www.pbs.org/wgbh/nova/einstein/timeline/" + ], + "start": "1902-06-01", + "subject_id": "albert_einstein", + "subject_name": "Albert Einstein", + "time_uncertainty_days": null + }, + { + "adjudicator": "", + "annotation_id": "DLH-PILOT-009-0BC3CA37FF", + "candidate_label": "no_target_event", + "domain": "marriage", + "end": "1903-04-30", + "event_absent_assertion": "Candidate non-marriage interval after the documented January 6, 1903 marriage; must be independently checked against timeline/biography sources.", + "event_description": "", + "final_label": null, + "frozen_before_scoring": false, + "independent_human_reviewed": false, + "notes": "", + "review_decision": "pending", + "source_quote_or_summary": "", + "source_urls": [ + "https://einstein-website.de/en/timeline/", + "https://www.pbs.org/wgbh/nova/einstein/timeline/" + ], + "start": "1903-04-01", + "subject_id": "albert_einstein", + "subject_name": "Albert Einstein", + "time_uncertainty_days": null + } + ], + "created_at": "2026-07-19", + "instructions": [ + "Do not use candidate_label as final_label.", + "For target_event, verify the event date from public sources.", + "For no_target_event, verify absence in the interval from public sources.", + "Freeze all labels before timing_ranker_blind_eval.py is run.", + "Do not use existing observed control dates for tuning." + ], + "production_tuning_allowed": false, + "ready_for_blind_eval": false, + "scope": "day_level_holdout_human_annotation_packet", + "source_report": "references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_report_2026_07_19.json", + "status": "awaiting_independent_human_adjudication", + "summary": { + "annotation_count": 9, + "final_label_count": 0, + "frozen_count": 0, + "negative_candidate_count": 6, + "positive_candidate_count": 3 + }, + "truth_boundary": "This packet is for human labeling only. It must not be scored until final_label, adjudicator, independent_human_reviewed, and frozen_before_scoring are complete." +} diff --git a/references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_2026_07_19.json b/references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_2026_07_19.json new file mode 100644 index 00000000..71306f96 --- /dev/null +++ b/references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_2026_07_19.json @@ -0,0 +1,101 @@ +{ + "scope": "day_level_holdout_v3_pilot_source_queue", + "created_at": "2026-07-19", + "status": "candidate_requires_adjudication", + "production_tuning_allowed": false, + "truth_boundary": "These rows are source candidates only. They are not holdout annotations and must not be used by timing_ranker_blind_eval.py until an independent reviewer confirms event/non-event labels and freezes them before scoring.", + "candidate_count": 3, + "required_next_step": "For each subject, an independent adjudicator must confirm one target_event window and two no_target_event windows from public sources, then ingest rows with scripts/day_level_negative_holdout_intake.py.", + "subjects": [ + { + "subject_id": "steve_jobs", + "name": "Steve Jobs", + "domain": "marriage", + "candidate_positive_event": { + "label": "target_event", + "start": "1991-03-18", + "end": "1991-03-18", + "event_description": "Marriage to Laurene Powell Jobs", + "source_urls": [ + "https://allaboutstevejobs.com/bio/timeline", + "https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390" + ], + "status": "candidate_requires_adjudication" + }, + "candidate_negative_windows": [ + { + "start": "1990-09-01", + "end": "1990-09-30", + "event_absent_assertion": "Candidate non-marriage interval before the documented March 18, 1991 marriage; must be independently checked against biography/timeline sources.", + "status": "candidate_requires_adjudication" + }, + { + "start": "1991-06-01", + "end": "1991-06-30", + "event_absent_assertion": "Candidate non-marriage interval after the documented March 18, 1991 marriage; must be independently checked against biography/timeline sources.", + "status": "candidate_requires_adjudication" + } + ] + }, + { + "subject_id": "barack_obama", + "name": "Barack Obama", + "domain": "marriage", + "candidate_positive_event": { + "label": "target_event", + "start": "1992-10-03", + "end": "1992-10-03", + "event_description": "Marriage to Michelle Robinson Obama", + "source_urls": [ + "https://www.obamalibrary.gov/obamas/first-lady-michelle-obama", + "https://www.whitehousehistory.org/bios/michelle-obama" + ], + "status": "candidate_requires_adjudication" + }, + "candidate_negative_windows": [ + { + "start": "1992-07-01", + "end": "1992-07-31", + "event_absent_assertion": "Candidate non-marriage interval before the documented October 3, 1992 marriage; must be independently checked against relationship/timeline sources.", + "status": "candidate_requires_adjudication" + }, + { + "start": "1993-01-01", + "end": "1993-01-31", + "event_absent_assertion": "Candidate non-marriage interval after the documented October 3, 1992 marriage; must be independently checked against relationship/timeline sources.", + "status": "candidate_requires_adjudication" + } + ] + }, + { + "subject_id": "albert_einstein", + "name": "Albert Einstein", + "domain": "marriage", + "candidate_positive_event": { + "label": "target_event", + "start": "1903-01-06", + "end": "1903-01-06", + "event_description": "Marriage to Mileva Marić", + "source_urls": [ + "https://einstein-website.de/en/timeline/", + "https://www.pbs.org/wgbh/nova/einstein/timeline/" + ], + "status": "candidate_requires_adjudication" + }, + "candidate_negative_windows": [ + { + "start": "1902-06-01", + "end": "1902-06-30", + "event_absent_assertion": "Candidate non-marriage interval before the documented January 6, 1903 marriage; must be independently checked against timeline/biography sources.", + "status": "candidate_requires_adjudication" + }, + { + "start": "1903-04-01", + "end": "1903-04-30", + "event_absent_assertion": "Candidate non-marriage interval after the documented January 6, 1903 marriage; must be independently checked against timeline/biography sources.", + "status": "candidate_requires_adjudication" + } + ] + } + ] +} diff --git a/references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_report_2026_07_19.json b/references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_report_2026_07_19.json new file mode 100644 index 00000000..fb35ff05 --- /dev/null +++ b/references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_report_2026_07_19.json @@ -0,0 +1,171 @@ +{ + "blind_scoring_allowed": false, + "production_tuning_allowed": false, + "scope": "day_level_holdout_pilot_source_queue_report", + "source_queue": "references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_2026_07_19.json", + "status": "awaiting_independent_human_labels", + "summary": { + "blocked_annotation_count": 9, + "negative_candidate_count": 6, + "positive_candidate_count": 3, + "ready_annotation_count": 0, + "subject_count": 3, + "window_count": 9 + }, + "truth_boundary": "These rows are source candidates only. They are not holdout annotations and must not be used by timing_ranker_blind_eval.py until an independent reviewer confirms event/non-event labels and freezes them before scoring.", + "windows": [ + { + "claim_status": "candidate_not_label", + "domain": "marriage", + "end": "1991-03-18", + "event_absent_assertion": "", + "event_description": "Marriage to Laurene Powell Jobs", + "label_candidate": "target_event", + "name": "Steve Jobs", + "required_next_step": "independent_human_adjudication", + "scoring_status": "blocked_not_frozen", + "source_urls": [ + "https://allaboutstevejobs.com/bio/timeline", + "https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390" + ], + "start": "1991-03-18", + "subject_id": "steve_jobs" + }, + { + "claim_status": "candidate_not_label", + "domain": "marriage", + "end": "1990-09-30", + "event_absent_assertion": "Candidate non-marriage interval before the documented March 18, 1991 marriage; must be independently checked against biography/timeline sources.", + "event_description": "", + "label_candidate": "no_target_event", + "name": "Steve Jobs", + "required_next_step": "independent_human_adjudication", + "scoring_status": "blocked_not_frozen", + "source_urls": [ + "https://allaboutstevejobs.com/bio/timeline", + "https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390" + ], + "start": "1990-09-01", + "subject_id": "steve_jobs" + }, + { + "claim_status": "candidate_not_label", + "domain": "marriage", + "end": "1991-06-30", + "event_absent_assertion": "Candidate non-marriage interval after the documented March 18, 1991 marriage; must be independently checked against biography/timeline sources.", + "event_description": "", + "label_candidate": "no_target_event", + "name": "Steve Jobs", + "required_next_step": "independent_human_adjudication", + "scoring_status": "blocked_not_frozen", + "source_urls": [ + "https://allaboutstevejobs.com/bio/timeline", + "https://people.com/who-is-laurene-powell-jobs-steve-jobs-wife-7502390" + ], + "start": "1991-06-01", + "subject_id": "steve_jobs" + }, + { + "claim_status": "candidate_not_label", + "domain": "marriage", + "end": "1992-10-03", + "event_absent_assertion": "", + "event_description": "Marriage to Michelle Robinson Obama", + "label_candidate": "target_event", + "name": "Barack Obama", + "required_next_step": "independent_human_adjudication", + "scoring_status": "blocked_not_frozen", + "source_urls": [ + "https://www.obamalibrary.gov/obamas/first-lady-michelle-obama", + "https://www.whitehousehistory.org/bios/michelle-obama" + ], + "start": "1992-10-03", + "subject_id": "barack_obama" + }, + { + "claim_status": "candidate_not_label", + "domain": "marriage", + "end": "1992-07-31", + "event_absent_assertion": "Candidate non-marriage interval before the documented October 3, 1992 marriage; must be independently checked against relationship/timeline sources.", + "event_description": "", + "label_candidate": "no_target_event", + "name": "Barack Obama", + "required_next_step": "independent_human_adjudication", + "scoring_status": "blocked_not_frozen", + "source_urls": [ + "https://www.obamalibrary.gov/obamas/first-lady-michelle-obama", + "https://www.whitehousehistory.org/bios/michelle-obama" + ], + "start": "1992-07-01", + "subject_id": "barack_obama" + }, + { + "claim_status": "candidate_not_label", + "domain": "marriage", + "end": "1993-01-31", + "event_absent_assertion": "Candidate non-marriage interval after the documented October 3, 1992 marriage; must be independently checked against relationship/timeline sources.", + "event_description": "", + "label_candidate": "no_target_event", + "name": "Barack Obama", + "required_next_step": "independent_human_adjudication", + "scoring_status": "blocked_not_frozen", + "source_urls": [ + "https://www.obamalibrary.gov/obamas/first-lady-michelle-obama", + "https://www.whitehousehistory.org/bios/michelle-obama" + ], + "start": "1993-01-01", + "subject_id": "barack_obama" + }, + { + "claim_status": "candidate_not_label", + "domain": "marriage", + "end": "1903-01-06", + "event_absent_assertion": "", + "event_description": "Marriage to Mileva Marić", + "label_candidate": "target_event", + "name": "Albert Einstein", + "required_next_step": "independent_human_adjudication", + "scoring_status": "blocked_not_frozen", + "source_urls": [ + "https://einstein-website.de/en/timeline/", + "https://www.pbs.org/wgbh/nova/einstein/timeline/" + ], + "start": "1903-01-06", + "subject_id": "albert_einstein" + }, + { + "claim_status": "candidate_not_label", + "domain": "marriage", + "end": "1902-06-30", + "event_absent_assertion": "Candidate non-marriage interval before the documented January 6, 1903 marriage; must be independently checked against timeline/biography sources.", + "event_description": "", + "label_candidate": "no_target_event", + "name": "Albert Einstein", + "required_next_step": "independent_human_adjudication", + "scoring_status": "blocked_not_frozen", + "source_urls": [ + "https://einstein-website.de/en/timeline/", + "https://www.pbs.org/wgbh/nova/einstein/timeline/" + ], + "start": "1902-06-01", + "subject_id": "albert_einstein" + }, + { + "claim_status": "candidate_not_label", + "domain": "marriage", + "end": "1903-04-30", + "event_absent_assertion": "Candidate non-marriage interval after the documented January 6, 1903 marriage; must be independently checked against timeline/biography sources.", + "event_description": "", + "label_candidate": "no_target_event", + "name": "Albert Einstein", + "required_next_step": "independent_human_adjudication", + "scoring_status": "blocked_not_frozen", + "source_urls": [ + "https://einstein-website.de/en/timeline/", + "https://www.pbs.org/wgbh/nova/einstein/timeline/" + ], + "start": "1903-04-01", + "subject_id": "albert_einstein" + } + ] +} diff --git a/scripts/day_level_holdout_human_annotation_packet.py b/scripts/day_level_holdout_human_annotation_packet.py new file mode 100644 index 00000000..b89a577c --- /dev/null +++ b/scripts/day_level_holdout_human_annotation_packet.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 +"""Create human-review annotation packet from pilot source windows. + +The packet is intentionally not a frozen holdout. Humans must fill final labels. +""" + +from __future__ import annotations + +import argparse +import hashlib +import json +from pathlib import Path + + +def _stable_id(row: dict, index: int) -> str: + base = f"{row['subject_id']}|{row['label_candidate']}|{row['start']}|{row['end']}|{index}" + digest = hashlib.sha256(base.encode("utf-8")).hexdigest()[:10].upper() + return f"DLH-PILOT-{index:03d}-{digest}" + + +def build_packet(report_path: Path) -> dict: + report = json.loads(report_path.read_text(encoding="utf-8")) + annotations = [] + for index, row in enumerate(report["windows"], start=1): + annotations.append( + { + "annotation_id": _stable_id(row, index), + "subject_id": row["subject_id"], + "subject_name": row["name"], + "domain": row["domain"], + "start": row["start"], + "end": row["end"], + "candidate_label": row["label_candidate"], + "final_label": None, + "event_description": row["event_description"], + "event_absent_assertion": row["event_absent_assertion"], + "source_urls": row["source_urls"], + "source_quote_or_summary": "", + "adjudicator": "", + "independent_human_reviewed": False, + "frozen_before_scoring": False, + "review_decision": "pending", + "time_uncertainty_days": None, + "notes": "", + } + ) + positive = sum(1 for row in annotations if row["candidate_label"] == "target_event") + negative = sum(1 for row in annotations if row["candidate_label"] == "no_target_event") + return { + "scope": "day_level_holdout_human_annotation_packet", + "created_at": "2026-07-19", + "source_report": str(report_path), + "status": "awaiting_independent_human_adjudication", + "ready_for_blind_eval": False, + "production_tuning_allowed": False, + "truth_boundary": "This packet is for human labeling only. It must not be scored until final_label, adjudicator, independent_human_reviewed, and frozen_before_scoring are complete.", + "instructions": [ + "Do not use candidate_label as final_label.", + "For target_event, verify the event date from public sources.", + "For no_target_event, verify absence in the interval from public sources.", + "Freeze all labels before timing_ranker_blind_eval.py is run.", + "Do not use existing observed control dates for tuning.", + ], + "summary": { + "annotation_count": len(annotations), + "final_label_count": sum(1 for row in annotations if row["final_label"]), + "frozen_count": sum(1 for row in annotations if row["frozen_before_scoring"]), + "positive_candidate_count": positive, + "negative_candidate_count": negative, + }, + "annotations": annotations, + } + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--source-report", + type=Path, + default=Path("references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_report_2026_07_19.json"), + ) + parser.add_argument("--output", type=Path) + args = parser.parse_args() + packet = build_packet(args.source_report) + text = json.dumps(packet, ensure_ascii=False, indent=2, sort_keys=True) + "\n" + if args.output: + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(text, encoding="utf-8") + print(text, end="") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/vedastro_identity_evidence_audit.py b/scripts/vedastro_identity_evidence_audit.py new file mode 100644 index 00000000..9bd69d7c --- /dev/null +++ b/scripts/vedastro_identity_evidence_audit.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 +"""Audit VedAstro identity evidence without upgrading hosted truth.""" + +from __future__ import annotations + +import argparse +import json +from pathlib import Path + + +def _load(path: Path) -> dict: + return json.loads(path.read_text(encoding="utf-8")) + + +def _field(name: str, value, source: str, blocker: str = "") -> dict: + ok = value not in (None, "", [], {}) + return { + "field": name, + "status": "complete" if ok else "blocked", + "value": value if ok else None, + "source": source, + "blocker": "" if ok else blocker, + } + + +def build_audit(archive_path: Path, runtime_path: Path) -> dict: + archive = _load(archive_path) + runtime = _load(runtime_path) + evidence = [ + _field("package_sha256", runtime.get("package_sha256") or archive.get("package_hash"), str(runtime_path)), + _field("library_dll_sha256", runtime.get("library_dll_sha256"), str(runtime_path)), + _field("assembly_version", runtime.get("assembly_version"), str(runtime_path)), + _field("assembly_informational_version", runtime.get("assembly_informational_version"), str(runtime_path)), + _field("public_method_contracts", runtime.get("public_method_contracts"), str(runtime_path)), + _field("runtime_image_digest", runtime.get("runtime_image_digest"), str(runtime_path)), + _field( + "source_commit", + archive.get("source_commit") or runtime.get("source_commit"), + str(archive_path), + "source commit not present in NuGet catalog/runtime contract; hosted API identity still needs upstream metadata or pinned source checkout.", + ), + ] + complete = sum(row["status"] == "complete" for row in evidence) + blocked = sum(row["status"] == "blocked" for row in evidence) + return { + "scope": "vedastro_identity_evidence_audit", + "package": runtime["package"], + "version": runtime["version"], + "license": runtime["license"], + "archive": str(archive_path), + "runtime_contract": str(runtime_path), + "runtime_candidate_status": "complete" if blocked <= 1 else "partial", + "hosted_identity_status": archive["hosted_api_status"], + "truth_upgrade_allowed": False, + "production_tuning_allowed": False, + "boundary": "NuGet/runtime identity can be pinned locally; hosted api.vedastro.org remains blocked without upstream build/method metadata.", + "summary": { + "required_field_count": len(evidence), + "complete_count": complete, + "blocked_count": blocked, + "method_contract_count": len(runtime.get("public_method_contracts") or []), + }, + "evidence": evidence, + } + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--archive", + type=Path, + default=Path("references/oracle/vedastro_identity_archive_2026_07_19.json"), + ) + parser.add_argument( + "--runtime", + type=Path, + default=Path("references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json"), + ) + parser.add_argument("--output", type=Path) + args = parser.parse_args() + audit = build_audit(args.archive, args.runtime) + text = json.dumps(audit, ensure_ascii=False, indent=2, sort_keys=True) + "\n" + if args.output: + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(text, encoding="utf-8") + print(text, end="") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/xalen_shadbala_av_delta_report.py b/scripts/xalen_shadbala_av_delta_report.py new file mode 100644 index 00000000..52a710db --- /dev/null +++ b/scripts/xalen_shadbala_av_delta_report.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python3 +"""Group Xalen Shadbala/AV deltas by component family. + +Reads archived comparison inputs. Does not recompute astrology formulas. +""" + +from __future__ import annotations + +import argparse +import json +from collections import Counter, defaultdict +from pathlib import Path + +from scripts.xalen_oracle_comparison import compare + + +SECTION_CATEGORY = { + "shadbala_components": "shadbala_formula_variant", + "shadbala_total": "derived_total_from_component_variants", + "ashtakavarga_bav": "ashtakavarga_table_or_contributor_variant", + "ashtakavarga_sav": "ashtakavarga_table_or_contributor_variant", +} + + +def _registry_by_category(path: Path) -> dict[str, dict]: + registry = json.loads(path.read_text(encoding="utf-8"))["registry"] + return {row["category"]: row for row in registry} + + +def _component_key(row: dict) -> str: + if row["section"] == "shadbala_components": + return row["field"].split(".", 1)[1] + if row["section"] == "shadbala_total": + return "total_rupa" + return row["section"] + + +def build_report(manifest_path: Path, xalen_path: Path, registry_path: Path) -> dict: + comparison = compare(manifest_path, xalen_path) + registry = _registry_by_category(registry_path) + groups: dict[tuple[str, str], dict] = {} + status_counts = Counter() + section_counts = Counter() + + for row in comparison["rows"]: + category = SECTION_CATEGORY.get(row["section"]) + if not category: + continue + key = (category, _component_key(row)) + source = registry[category] + group = groups.setdefault( + key, + { + "category": category, + "component": key[1], + "allowed_claim": source["allowed_claim"], + "unit_contract": source["unit_contract"], + "required_evidence": source["next_evidence_required"], + "closure_status": "open", + "rows": [], + "status_counts": defaultdict(int), + }, + ) + group["rows"].append(row) + group["status_counts"][row["status"]] += 1 + status_counts[(row["section"], row["status"])] += 1 + section_counts[row["section"]] += 1 + + component_groups = [] + for group in groups.values(): + group["status_counts"] = dict(sorted(group["status_counts"].items())) + component_groups.append(group) + component_groups.sort(key=lambda item: (item["category"], item["component"])) + + return { + "scope": "xalen_shadbala_av_component_delta_report", + "source_commit": comparison["source_commit"], + "license": comparison["license"], + "truth_policy": "method_variant_not_majority_vote", + "production_tuning_allowed": False, + "boundary": "Xalen deltas identify formula/table/unit evidence needs; they are not majority-vote truth.", + "source_artifacts": { + "manifest": str(manifest_path), + "xalen_raw": str(xalen_path), + "provenance_registry": str(registry_path), + }, + "summary": { + "shadbala_component_rows": section_counts["shadbala_components"], + "shadbala_component_mismatch_count": status_counts[("shadbala_components", "mismatch")], + "shadbala_total_rows": section_counts["shadbala_total"], + "shadbala_total_mismatch_count": status_counts[("shadbala_total", "mismatch")], + "ashtakavarga_rows": section_counts["ashtakavarga_bav"] + section_counts["ashtakavarga_sav"], + "ashtakavarga_mismatch_count": status_counts[("ashtakavarga_bav", "mismatch")] + + status_counts[("ashtakavarga_sav", "mismatch")], + "component_group_count": len(component_groups), + }, + "component_groups": component_groups, + } + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + "--manifest", + type=Path, + default=Path("references/oracle/three_engine_parity_replay_manifest.json"), + ) + parser.add_argument( + "--xalen", + type=Path, + default=Path("references/oracle/artifacts/xalen_steve_jobs_high_rigor_raw.json"), + ) + parser.add_argument( + "--registry", + type=Path, + default=Path("references/oracle/shadbala_av_component_provenance_registry_2026_07_19.json"), + ) + parser.add_argument("--output", type=Path) + args = parser.parse_args() + report = build_report(args.manifest, args.xalen, args.registry) + text = json.dumps(report, ensure_ascii=False, indent=2, sort_keys=True) + "\n" + if args.output: + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(text, encoding="utf-8") + print(text, end="") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tests/test_day_level_holdout_human_annotation_packet.py b/tests/test_day_level_holdout_human_annotation_packet.py new file mode 100644 index 00000000..e679bf97 --- /dev/null +++ b/tests/test_day_level_holdout_human_annotation_packet.py @@ -0,0 +1,48 @@ +from __future__ import annotations + +import json +from pathlib import Path + +from scripts.day_level_holdout_human_annotation_packet import build_packet + +ROOT = Path(__file__).resolve().parents[1] +REPORT = ROOT / "references/real_case_calibration/day_level_holdout_v3_pilot_source_queue_report_2026_07_19.json" + + +def test_human_annotation_packet_keeps_all_windows_unlabeled_and_unfrozen() -> None: + packet = build_packet(REPORT) + + assert packet["scope"] == "day_level_holdout_human_annotation_packet" + assert packet["status"] == "awaiting_independent_human_adjudication" + assert packet["ready_for_blind_eval"] is False + assert packet["production_tuning_allowed"] is False + assert packet["summary"] == { + "annotation_count": 9, + "final_label_count": 0, + "frozen_count": 0, + "positive_candidate_count": 3, + "negative_candidate_count": 6, + } + + +def test_human_annotation_packet_has_required_blank_review_fields() -> None: + packet = build_packet(REPORT) + for row in packet["annotations"]: + assert row["candidate_label"] in {"target_event", "no_target_event"} + assert row["final_label"] is None + assert row["independent_human_reviewed"] is False + assert row["frozen_before_scoring"] is False + assert row["adjudicator"] == "" + assert row["source_quote_or_summary"] == "" + assert row["review_decision"] == "pending" + assert row["source_urls"] + assert row["annotation_id"].startswith("DLH-PILOT-") + + +def test_human_annotation_packet_artifact_matches_generator() -> None: + artifact = ROOT / "references/real_case_calibration/day_level_holdout_v3_human_annotation_packet_2026_07_19.json" + data = json.loads(artifact.read_text(encoding="utf-8")) + generated = build_packet(REPORT) + assert data["summary"] == generated["summary"] + assert data["ready_for_blind_eval"] is False + diff --git a/tests/test_vedastro_identity_evidence_audit.py b/tests/test_vedastro_identity_evidence_audit.py new file mode 100644 index 00000000..acfaf5e6 --- /dev/null +++ b/tests/test_vedastro_identity_evidence_audit.py @@ -0,0 +1,50 @@ +from __future__ import annotations + +from pathlib import Path + +from scripts.vedastro_identity_evidence_audit import build_audit + +ROOT = Path(__file__).resolve().parents[1] + + +def test_vedastro_identity_evidence_audit_splits_runtime_and_hosted_identity() -> None: + audit = build_audit( + ROOT / "references/oracle/vedastro_identity_archive_2026_07_19.json", + ROOT / "references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json", + ) + + assert audit["scope"] == "vedastro_identity_evidence_audit" + assert audit["package"] == "VedAstro.Library" + assert audit["version"] == "1.2.0" + assert audit["runtime_candidate_status"] == "complete" + assert audit["hosted_identity_status"] == "blocked" + assert audit["truth_upgrade_allowed"] is False + assert audit["production_tuning_allowed"] is False + + +def test_vedastro_identity_evidence_audit_records_required_fields() -> None: + audit = build_audit( + ROOT / "references/oracle/vedastro_identity_archive_2026_07_19.json", + ROOT / "references/oracle/artifacts/vedastro_nuget_1_2_0_runtime_contract.json", + ) + + evidence = {row["field"]: row for row in audit["evidence"]} + for field in [ + "package_sha256", + "library_dll_sha256", + "assembly_version", + "assembly_informational_version", + "public_method_contracts", + "runtime_image_digest", + ]: + assert evidence[field]["status"] == "complete" + assert evidence[field]["value"] + + assert evidence["source_commit"]["status"] == "blocked" + assert "not present" in evidence["source_commit"]["blocker"] + assert audit["summary"] == { + "required_field_count": 7, + "complete_count": 6, + "blocked_count": 1, + "method_contract_count": 14, + } diff --git a/tests/test_xalen_shadbala_av_delta_report.py b/tests/test_xalen_shadbala_av_delta_report.py new file mode 100644 index 00000000..acecf197 --- /dev/null +++ b/tests/test_xalen_shadbala_av_delta_report.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +from pathlib import Path + +from scripts.xalen_shadbala_av_delta_report import build_report + +ROOT = Path(__file__).resolve().parents[1] + + +def test_xalen_shadbala_av_delta_report_groups_component_differences() -> None: + report = build_report( + ROOT / "references/oracle/three_engine_parity_replay_manifest.json", + ROOT / "references/oracle/artifacts/xalen_steve_jobs_high_rigor_raw.json", + ROOT / "references/oracle/shadbala_av_component_provenance_registry_2026_07_19.json", + ) + + assert report["scope"] == "xalen_shadbala_av_component_delta_report" + assert report["truth_policy"] == "method_variant_not_majority_vote" + assert report["production_tuning_allowed"] is False + assert report["source_commit"] == "cc6edbec1f748ebdc4950ae6198f575c5ada73fa" + assert report["license"] == "Apache-2.0" + assert report["summary"]["shadbala_component_rows"] == 42 + assert report["summary"]["shadbala_component_mismatch_count"] == 35 + assert report["summary"]["ashtakavarga_rows"] == 8 + assert report["summary"]["ashtakavarga_mismatch_count"] == 4 + assert report["summary"]["shadbala_total_mismatch_count"] == 7 + + +def test_xalen_shadbala_av_delta_report_preserves_evidence_requirements() -> None: + report = build_report( + ROOT / "references/oracle/three_engine_parity_replay_manifest.json", + ROOT / "references/oracle/artifacts/xalen_steve_jobs_high_rigor_raw.json", + ROOT / "references/oracle/shadbala_av_component_provenance_registry_2026_07_19.json", + ) + + for row in report["component_groups"]: + assert row["closure_status"] == "open" + assert row["required_evidence"] + assert row["unit_contract"] + assert row["allowed_claim"] in { + "component_method_variant", + "table_variant", + "derived_total_blocked_until_components_close", + "derived_total_only_after_components_close", + }