feat: sync d1 d60 source use readiness
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Classify D1-D60 source candidates for name/use readiness."""
|
||||
from __future__ import annotations
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
QUEUE = ROOT / "references/oracle/d1_d60_public_source_candidate_queue_2026_07_19.json"
|
||||
REGISTRY = ROOT / "references/oracle/d1_d60_varga_mapping_registry_2026_07_19.json"
|
||||
|
||||
|
||||
def stable_json(data: Any) -> str:
|
||||
return json.dumps(data, ensure_ascii=False, sort_keys=True, separators=(",", ":"), default=str)
|
||||
|
||||
|
||||
def source_readiness(source: dict[str, Any]) -> str:
|
||||
if source["oracle_status"] == "observation_only":
|
||||
return "implementation_observation_only"
|
||||
return "source_text_candidate_not_numeric_oracle"
|
||||
|
||||
|
||||
def build() -> dict[str, Any]:
|
||||
queue = json.loads(QUEUE.read_text(encoding="utf-8"))
|
||||
registry = json.loads(REGISTRY.read_text(encoding="utf-8"))
|
||||
sources = [
|
||||
{
|
||||
"url": source["url"],
|
||||
"candidate_use": source["candidate_use"],
|
||||
"readiness": source_readiness(source),
|
||||
"allowed_update": "names_and_use_notes_only",
|
||||
"blocked_update": "numeric_formula_or_truth_without_variant_review",
|
||||
}
|
||||
for source in queue["candidate_sources"]
|
||||
]
|
||||
generic_only = [
|
||||
row
|
||||
for row in registry.get("rows", [])
|
||||
if row.get("status") == "generic_only"
|
||||
]
|
||||
summary = {
|
||||
"candidate_source_count": len(sources),
|
||||
"generic_only_count": len(generic_only),
|
||||
"numeric_oracle_ready_count": 0,
|
||||
"allowed_scope": "names_and_use_notes_only",
|
||||
}
|
||||
return {
|
||||
"scope": "d1_d60_source_use_readiness",
|
||||
"created_at": "2026-07-19",
|
||||
"status": "source_use_readiness_ready",
|
||||
"claim_status": "partial",
|
||||
"production_tuning_allowed": False,
|
||||
"truth_matrix_allowed": False,
|
||||
"source_queue": str(QUEUE.relative_to(ROOT)),
|
||||
"source_registry": str(REGISTRY.relative_to(ROOT)),
|
||||
"summary": summary,
|
||||
"source_hash": hashlib.sha256(stable_json(sources).encode("utf-8")).hexdigest(),
|
||||
"sources": sources,
|
||||
"boundary": (
|
||||
"D1-D60 public/OSS sources can only improve names and use notes here. "
|
||||
"Generic-only divisions stay hidden from final claims until source, "
|
||||
"formula variant, and numeric oracle gates close."
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def main() -> int:
|
||||
print(json.dumps(build(), ensure_ascii=False, indent=2, sort_keys=True))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user