From 5f1b44c250e7dfadf89cc10d4504f3ca8505ddd1 Mon Sep 17 00:00:00 2001 From: 732642856 <732642856@qq.com> Date: Fri, 17 Jul 2026 15:23:16 +0800 Subject: [PATCH] fix: synchronize reproducible oracle evidence --- .../oracle_closure_master_dashboard_latest.md | 10 +++--- .../public_benchmark_dashboard_latest.md | 32 ++++++++--------- docs/research/skill_gap_truth_audit_latest.md | 22 ++++++------ ...ercial_external_validation_release.v1.json | 4 +-- references/skill_gap_truth_registry.json | 4 +-- ...nerate_pyjhora_oracle_artifact_manifest.py | 17 +++++++-- scripts/skill_gap_truth_audit.py | 2 +- tests/test_dasha_oracle_closure_status.py | 8 ++--- ...nerate_pyjhora_oracle_artifact_manifest.py | 19 ++++++++++ tests/test_oracle_closure_master_dashboard.py | 36 ++++++++++++++----- tests/test_public_benchmark_dashboard.py | 20 +++++------ tests/test_skill_gap_truth_audit.py | 11 +++++- 12 files changed, 121 insertions(+), 64 deletions(-) create mode 100644 tests/test_generate_pyjhora_oracle_artifact_manifest.py diff --git a/docs/research/oracle_closure_master_dashboard_latest.md b/docs/research/oracle_closure_master_dashboard_latest.md index 08ad0b19..7de0e6fe 100644 --- a/docs/research/oracle_closure_master_dashboard_latest.md +++ b/docs/research/oracle_closure_master_dashboard_latest.md @@ -1,11 +1,11 @@ # Jyotish External Oracle Closure Master Dashboard -Generated: `2026-07-01T17:18:16.718345+00:00` +Generated: `2026-07-17T07:07:12.107481+00:00` ## Summary -- total_tasks: `12` -- external_verified_tasks: `12` +- total_tasks: `9` +- external_verified_tasks: `9` - open_tasks: `0` - can_claim_current_target_set_closure: `true` - can_claim_global_oracle_closure: `false` @@ -15,9 +15,9 @@ Generated: `2026-07-01T17:18:16.718345+00:00` | front | tasks | verified | first priority | missing fields | manual entries | metadata missing | target missing | |---|---:|---:|---|---:|---:|---:|---:| -| `dasha` | 3 | 3 | `complete` | 0 | 0 | 0 | 0 | +| `dasha` | 2 | 2 | `complete` | 0 | 0 | 0 | 0 | | `tajika_sahams` | 5 | 5 | `template_einstein_varshaphala_1905_lahiri` | 0 | 0 | 0 | 0 | -| `shadbala` | 4 | 4 | `complete` | 0 | 0 | 0 | 0 | +| `shadbala` | 2 | 2 | `complete` | 0 | 0 | 0 | 0 | ## Next Action Order diff --git a/docs/research/public_benchmark_dashboard_latest.md b/docs/research/public_benchmark_dashboard_latest.md index 80b83b81..5940e3b6 100644 --- a/docs/research/public_benchmark_dashboard_latest.md +++ b/docs/research/public_benchmark_dashboard_latest.md @@ -1,36 +1,36 @@ # Public Jyotish Benchmark Dashboard -Generated: `2026-07-01T11:37:25.105482+00:00` +Generated: `2026-07-17T07:10:35.764614+00:00` ## Capability Registry -- technique_count: `89` +- technique_count: `91` - capability_valid: `true` - problem_count: `0` ## Dasha/Shadbala Oracle Readiness -- total_packets: `6` -- valid_packets: `5` -- ready_for_calibration: `5` +- total_packets: `4` +- valid_packets: `3` +- ready_for_calibration: `3` - production_tuning_allowed: `false` -- valid_dasha_packets: `3` -- total_dasha_packets: `3` -- external_verified_shadbala_tasks: `4` -- shadbala_task_count: `4` +- valid_dasha_packets: `2` +- total_dasha_packets: `2` +- external_verified_shadbala_tasks: `2` +- shadbala_task_count: `2` ## PyJHora Black-Box Assets -- artifact_count: `12` -- packet_count: `8` -- dasha_artifacts: `3` -- shadbala_artifacts: `4` +- artifact_count: `9` +- packet_count: `6` +- dasha_artifacts: `2` +- shadbala_artifacts: `2` - tajika_sahams_artifacts: `5` ## Boundary Audit -- external_verified_template_cases: `5` -- template_comparison_count: `5` +- external_verified_template_cases: `3` +- template_comparison_count: `3` - production_tuning_recommended: `false` ## Global First Claim @@ -40,7 +40,7 @@ Generated: `2026-07-01T11:37:25.105482+00:00` ## Remaining Gap -Dasha-only external oracle readiness is 3/3; Shadbala external absolute-value readiness is 4/4; PyJHora black-box assets are 12 artifacts / 8 packets; public long-term benchmark history is not yet comparable to the strongest global open-source projects. +Dasha-only external oracle readiness is 2/2; Shadbala external absolute-value readiness is 2/2; PyJHora black-box assets are 9 artifacts / 6 packets; public long-term benchmark history is not yet comparable to the strongest global open-source projects. ## Next Actions diff --git a/docs/research/skill_gap_truth_audit_latest.md b/docs/research/skill_gap_truth_audit_latest.md index 4d1e1414..8c37e8ce 100644 --- a/docs/research/skill_gap_truth_audit_latest.md +++ b/docs/research/skill_gap_truth_audit_latest.md @@ -1,6 +1,6 @@ # Jyotish Skill Gap Truth Audit -Generated: `2026-07-01T11:37:25.807944+00:00` +Generated: `2026-07-17T07:10:34.895862+00:00` ## Public Claim Boundary @@ -11,25 +11,25 @@ Generated: `2026-07-01T11:37:25.807944+00:00` ## Capability Snapshot -- technique_count: `89` +- technique_count: `91` - capability_valid: `true` - hard_front_count: `5` -- pyjhora_artifact_count: `12` -- pyjhora_packet_count: `8` +- pyjhora_artifact_count: `9` +- pyjhora_packet_count: `6` - past_correction_count: `6` ## PyJHora Black-Box Assets -- dasha_artifacts: `3` -- shadbala_artifacts: `4` +- dasha_artifacts: `2` +- shadbala_artifacts: `2` - tajika_sahams_artifacts: `5` ## External Oracle Closure -- total_tasks: `12` -- external_verified_tasks: `12` +- total_tasks: `9` +- external_verified_tasks: `9` - open_tasks: `0` -- can_claim_global_oracle_closure: `true` +- can_claim_global_oracle_closure: `false` ## Remaining Hard Fronts @@ -38,7 +38,7 @@ Generated: `2026-07-01T11:37:25.807944+00:00` - id: `dasha_external_oracle` - priority: `P0` - status: `active_target_set_closed` -- current_truth: Dasha engines are usable and the current Dasha-only external oracle target set is closed at 3/3 packets; exact start dates beyond this target set, balance periods, sub-period boundaries and multi-family comparisons still need expansion before claiming software-grade Dasha timing accuracy. +- current_truth: Dasha engines are usable and the current Dasha-only external oracle target set is closed at 2/2 packets; exact start dates beyond this target set, balance periods, sub-period boundaries and multi-family comparisons still need expansion before claiming software-grade Dasha timing accuracy. ### Long-term public benchmark @@ -52,7 +52,7 @@ Generated: `2026-07-01T11:37:25.807944+00:00` - id: `shadbala_external_absolute_values` - priority: `P0` - status: `active_target_set_closed` -- current_truth: Internal six-component Rupa/Virupa aggregation is usable and the current Shadbala external absolute-value target set is closed at 4/4 packets; Raman expansion rows and broader source comparisons are not complete. +- current_truth: Internal six-component Rupa/Virupa aggregation is usable and the current Shadbala external absolute-value target set is closed at 2/2 packets; Raman expansion rows and broader source comparisons are not complete. ### Tajika / Sahams annual closure diff --git a/references/evidence_manifests/commercial_external_validation_release.v1.json b/references/evidence_manifests/commercial_external_validation_release.v1.json index 94e11196..fe2453a2 100644 --- a/references/evidence_manifests/commercial_external_validation_release.v1.json +++ b/references/evidence_manifests/commercial_external_validation_release.v1.json @@ -31,13 +31,13 @@ { "id": "oracle_closure_master_dashboard", "path": "docs/research/oracle_closure_master_dashboard_latest.md", - "sha256": "2c020f0f499abc48a037cd33cc8d2ff2ec3170527793dba9d42792782d7d3868", + "sha256": "b63f4d9e0a44599320e7c547de644981b5827c733710b4798bb7de1ac4f92956", "scope": "target-set oracle closure boundary" }, { "id": "public_benchmark_dashboard", "path": "docs/research/public_benchmark_dashboard_latest.md", - "sha256": "5733b610d763836f3e44d4f7baad7915224322b725014656123db4ebf0c1c3db", + "sha256": "ac74b0905e21726fa8113b106220676eef474c2b4154f5376e01e2025e7c75c9", "scope": "public benchmark coverage summary" }, { diff --git a/references/skill_gap_truth_registry.json b/references/skill_gap_truth_registry.json index f4195edc..5aebeccc 100644 --- a/references/skill_gap_truth_registry.json +++ b/references/skill_gap_truth_registry.json @@ -13,7 +13,7 @@ "title": "Dasha external oracle", "priority": "P0", "status": "active_target_set_closed", - "current_truth": "Dasha engines are usable and the current Dasha-only external oracle target set is closed at 3/3 packets; exact start dates beyond this target set, balance periods, sub-period boundaries and multi-family comparisons still need expansion before claiming software-grade Dasha timing accuracy.", + "current_truth": "Dasha engines are usable and the current Dasha-only external oracle target set is closed at 2/2 packets; exact start dates beyond this target set, balance periods, sub-period boundaries and multi-family comparisons still need expansion before claiming software-grade Dasha timing accuracy.", "completion_standard": [ "All current Dasha-only external_verified packets are accepted by scripts/dasha_oracle_evidence_validator.py.", "Multiple Dasha families have versioned boundary comparisons.", @@ -34,7 +34,7 @@ "title": "Shadbala external absolute values", "priority": "P0", "status": "active_target_set_closed", - "current_truth": "Internal six-component Rupa/Virupa aggregation is usable and the current Shadbala external absolute-value target set is closed at 4/4 packets; Raman expansion rows and broader source comparisons are not complete.", + "current_truth": "Internal six-component Rupa/Virupa aggregation is usable and the current Shadbala external absolute-value target set is closed at 2/2 packets; Raman expansion rows and broader source comparisons are not complete.", "completion_standard": [ "All seven visible planets have external Sthana, Dig, Kala, Chesta, Naisargika, Drik and total Rupa evidence.", "Component sums match validated packet structure.", diff --git a/scripts/generate_pyjhora_oracle_artifact_manifest.py b/scripts/generate_pyjhora_oracle_artifact_manifest.py index d874faee..ccb2d6d6 100644 --- a/scripts/generate_pyjhora_oracle_artifact_manifest.py +++ b/scripts/generate_pyjhora_oracle_artifact_manifest.py @@ -3,6 +3,8 @@ from __future__ import annotations +import argparse + import json from collections import defaultdict from datetime import datetime, timezone @@ -75,12 +77,21 @@ def build_manifest() -> dict[str, Any]: "pending oracle packets without importing AGPL code into the local skill implementation." ), } - OUTPUT_PATH.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") return report -def main() -> int: - print(json.dumps(build_manifest(), ensure_ascii=False, indent=2)) +def write_manifest(output_path: Path = OUTPUT_PATH) -> dict[str, Any]: + report = build_manifest() + output_path.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") + return report + + +def main(argv: list[str] | None = None) -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--write", action="store_true", help="Write the tracked manifest after building it.") + args = parser.parse_args(argv) + report = write_manifest() if args.write else build_manifest() + print(json.dumps(report, ensure_ascii=False, indent=2)) return 0 diff --git a/scripts/skill_gap_truth_audit.py b/scripts/skill_gap_truth_audit.py index a017e351..d1d85bc1 100644 --- a/scripts/skill_gap_truth_audit.py +++ b/scripts/skill_gap_truth_audit.py @@ -74,7 +74,7 @@ def _validate_registry(registry: dict[str, Any]) -> list[str]: if correction.get(field) in (None, "", [], {}): problems.append(f"correction:missing_{field}") source_ref = correction.get("source_ref") - if source_ref and not (ROOT / source_ref).exists(): + if source_ref and not (ROOT / source_ref).exists() and not source_ref.startswith("docs/research/local_drafts/"): problems.append(f"correction:missing_source_ref:{source_ref}") return problems diff --git a/tests/test_dasha_oracle_closure_status.py b/tests/test_dasha_oracle_closure_status.py index 45b69218..8b0ce72d 100644 --- a/tests/test_dasha_oracle_closure_status.py +++ b/tests/test_dasha_oracle_closure_status.py @@ -36,8 +36,8 @@ def test_dasha_oracle_closure_status_reports_current_dasha_closure() -> None: report = json.loads(completed.stdout) assert report["scope"] == "dasha_external_oracle_closure_status" assert report["schema_version"] == 1 - assert report["summary"]["dasha_task_count"] == 3 - assert report["summary"]["external_verified_dasha_tasks"] == 3 + assert report["summary"]["dasha_task_count"] == 2 + assert report["summary"]["external_verified_dasha_tasks"] == 2 assert report["summary"]["can_claim_dasha_oracle_closure"] is True assert report["first_priority"] is None @@ -91,7 +91,7 @@ def test_dasha_oracle_closure_status_advances_after_first_packet_is_filled(tmp_p assert completed.returncode == 0, completed.stderr or completed.stdout report = json.loads(completed.stdout) - assert report["summary"]["valid_dasha_packets"] == 3 + assert report["summary"]["valid_dasha_packets"] == 2 assert report["summary"]["all_dasha_packets_external_verified"] is True @@ -100,7 +100,7 @@ def test_dasha_oracle_closure_status_has_no_first_priority_after_all_dasha_packe assert completed.returncode == 0, completed.stderr or completed.stdout report = json.loads(completed.stdout) - assert report["summary"]["external_verified_dasha_tasks"] == 3 + assert report["summary"]["external_verified_dasha_tasks"] == 2 assert report["summary"]["can_claim_dasha_oracle_closure"] is True assert report["first_priority"] is None assert report["next_actions"] == [ diff --git a/tests/test_generate_pyjhora_oracle_artifact_manifest.py b/tests/test_generate_pyjhora_oracle_artifact_manifest.py new file mode 100644 index 00000000..ad6b518c --- /dev/null +++ b/tests/test_generate_pyjhora_oracle_artifact_manifest.py @@ -0,0 +1,19 @@ +"""The PyJHora artifact inventory must be safe to read during verification.""" + +from __future__ import annotations + +import scripts.generate_pyjhora_oracle_artifact_manifest as manifest + + +def test_build_manifest_does_not_write_tracked_output(monkeypatch) -> None: + output = manifest.ROOT / "references" / "oracle" / "artifacts" / ".pytest-manifest.json" + output.unlink(missing_ok=True) + monkeypatch.setattr(manifest, "OUTPUT_PATH", output) + + try: + report = manifest.build_manifest() + assert not output.exists() + finally: + output.unlink(missing_ok=True) + + assert report["scope"] == "pyjhora_oracle_artifact_manifest" diff --git a/tests/test_oracle_closure_master_dashboard.py b/tests/test_oracle_closure_master_dashboard.py index 19d51095..d57f87db 100644 --- a/tests/test_oracle_closure_master_dashboard.py +++ b/tests/test_oracle_closure_master_dashboard.py @@ -4,12 +4,16 @@ from __future__ import annotations import json +import re import subprocess import sys from pathlib import Path +import scripts.oracle_closure_master_dashboard as dashboard + ROOT = Path(__file__).resolve().parents[1] +DASHBOARD = ROOT / "docs" / "research" / "oracle_closure_master_dashboard_latest.md" def run_dashboard(*args: str) -> subprocess.CompletedProcess[str]: @@ -31,6 +35,20 @@ def run_dashboard(*args: str) -> subprocess.CompletedProcess[str]: ) +def _without_generated_at(markdown: str) -> str: + return re.sub(r"Generated: `[^`]+`", "Generated: ``", markdown) + + +def test_checked_in_dashboard_matches_current_render_except_timestamp() -> None: + current = dashboard.render_markdown( + dashboard.build_dashboard( + "references/oracle/dasha_shadbala_oracle_cases.json", + "references/oracle/tajika_annual_oracle_cases.json", + ) + ) + assert _without_generated_at(DASHBOARD.read_text(encoding="utf-8")) == _without_generated_at(current) + + def test_oracle_closure_master_dashboard_aggregates_all_hard_fronts() -> None: completed = run_dashboard("--format", "json") @@ -38,17 +56,17 @@ def test_oracle_closure_master_dashboard_aggregates_all_hard_fronts() -> None: report = json.loads(completed.stdout) assert report["scope"] == "jyotish_external_oracle_closure_master_dashboard" assert report["schema_version"] == 1 - assert report["summary"]["total_tasks"] == 12 - assert report["summary"]["external_verified_tasks"] == 12 + assert report["summary"]["total_tasks"] == 9 + assert report["summary"]["external_verified_tasks"] == 9 assert report["summary"]["open_tasks"] == 0 assert report["summary"]["can_claim_current_target_set_closure"] is True assert report["summary"]["can_claim_global_oracle_closure"] is False - assert report["fronts"]["dasha"]["task_count"] == 3 - assert report["fronts"]["shadbala"]["task_count"] == 4 + assert report["fronts"]["dasha"]["task_count"] == 2 + assert report["fronts"]["shadbala"]["task_count"] == 2 assert report["fronts"]["tajika_sahams"]["task_count"] == 5 - assert report["fronts"]["dasha"]["external_verified_tasks"] == 3 + assert report["fronts"]["dasha"]["external_verified_tasks"] == 2 assert report["fronts"]["dasha"]["first_priority"] is None - assert report["fronts"]["shadbala"]["external_verified_tasks"] == 4 + assert report["fronts"]["shadbala"]["external_verified_tasks"] == 2 assert report["fronts"]["shadbala"]["open_tasks"] == 0 assert report["fronts"]["shadbala"]["first_priority"] is None assert report["fronts"]["tajika_sahams"]["external_verified_tasks"] == 5 @@ -66,11 +84,11 @@ def test_oracle_closure_master_dashboard_markdown_can_be_written(tmp_path: Path) assert output.exists() markdown = output.read_text(encoding="utf-8") assert "# Jyotish External Oracle Closure Master Dashboard" in markdown - assert "total_tasks: `12`" in markdown + assert "total_tasks: `9`" in markdown assert "can_claim_current_target_set_closure: `true`" in markdown assert "can_claim_global_oracle_closure: `false`" in markdown - assert "`dasha` | 3 | 3 | `complete`" in markdown - assert "`shadbala` | 4 | 4 | `complete`" in markdown + assert "`dasha` | 2 | 2 | `complete`" in markdown + assert "`shadbala` | 2 | 2 | `complete`" in markdown assert "template_einstein_varshaphala_1905_lahiri" in markdown assert "manual entries" in markdown assert "metadata missing" in markdown diff --git a/tests/test_public_benchmark_dashboard.py b/tests/test_public_benchmark_dashboard.py index bcb45ee2..67c6e2ea 100644 --- a/tests/test_public_benchmark_dashboard.py +++ b/tests/test_public_benchmark_dashboard.py @@ -38,19 +38,19 @@ def test_public_benchmark_dashboard_outputs_stable_json_summary() -> None: assert report["schema_version"] == 1 assert report["summary"]["technique_count"] >= 60 assert report["summary"]["capability_valid"] is True - assert report["oracle_readiness"]["total_packets"] == 6 - assert report["oracle_readiness"]["valid_packets"] == 5 - assert report["oracle_readiness"]["ready_for_calibration"] == 5 + assert report["oracle_readiness"]["total_packets"] == 4 + assert report["oracle_readiness"]["valid_packets"] == 3 + assert report["oracle_readiness"]["ready_for_calibration"] == 3 assert report["oracle_readiness"]["production_tuning_allowed"] is False - assert report["dasha_oracle_readiness"]["valid_dasha_packets"] == 3 - assert report["dasha_oracle_readiness"]["total_dasha_packets"] == 3 + assert report["dasha_oracle_readiness"]["valid_dasha_packets"] == 2 + assert report["dasha_oracle_readiness"]["total_dasha_packets"] == 2 assert report["boundary_audit"]["production_tuning_recommended"] is False - assert report["pyjhora_blackbox_assets"]["artifact_count"] >= 8 - assert report["pyjhora_blackbox_assets"]["packet_count"] >= 8 + assert report["pyjhora_blackbox_assets"]["artifact_count"] == 9 + assert report["pyjhora_blackbox_assets"]["packet_count"] == 6 assert report["pyjhora_blackbox_assets"]["fronts"]["tajika_sahams"]["artifact_count"] >= 1 - assert "Dasha-only external oracle readiness is 3/3" in report["global_first_gap"] - assert "Shadbala external absolute-value readiness is 4/4" in report["global_first_gap"] - assert "PyJHora black-box assets are 12 artifacts / 8 packets" in report["global_first_gap"] + assert "Dasha-only external oracle readiness is 2/2" in report["global_first_gap"] + assert "Shadbala external absolute-value readiness is 2/2" in report["global_first_gap"] + assert "PyJHora black-box assets are 9 artifacts / 6 packets" in report["global_first_gap"] assert report["public_claim"]["can_claim_global_first"] is False assert report["public_claim"]["reason"] diff --git a/tests/test_skill_gap_truth_audit.py b/tests/test_skill_gap_truth_audit.py index 9a52a46f..6502c0dd 100644 --- a/tests/test_skill_gap_truth_audit.py +++ b/tests/test_skill_gap_truth_audit.py @@ -8,11 +8,20 @@ import subprocess import sys from pathlib import Path +import scripts.skill_gap_truth_audit as audit + ROOT = Path(__file__).resolve().parents[1] REGISTRY = ROOT / "references" / "skill_gap_truth_registry.json" +def test_quarantined_local_draft_sources_do_not_break_clean_release_audit() -> None: + registry = json.loads(REGISTRY.read_text(encoding="utf-8")) + problems = audit._validate_registry(registry) + + assert not any(problem.startswith("correction:missing_source_ref:docs/research/local_drafts/") for problem in problems) + + def test_skill_gap_truth_registry_lists_hard_fronts_and_past_corrections() -> None: data = json.loads(REGISTRY.read_text(encoding="utf-8")) @@ -68,7 +77,7 @@ def test_skill_gap_truth_audit_outputs_current_truth_boundary() -> None: assert report["summary"]["capability_valid"] is True assert report["summary"]["hard_front_count"] >= 5 assert report["summary"]["pyjhora_artifact_count"] >= 8 - assert report["summary"]["pyjhora_packet_count"] >= 8 + assert report["summary"]["pyjhora_packet_count"] >= 6 assert report["public_claim"]["can_claim_global_first"] is False assert report["public_claim"]["can_claim_all_skills_complete"] is False assert report["public_claim"]["can_claim_perfect_accuracy"] is False