feat(oracle): extend first packet assistant fronts

This commit is contained in:
732642856
2026-06-26 19:08:20 +08:00
parent 2cdffbac94
commit 74494e0fd4
7 changed files with 352 additions and 4 deletions
+9 -2
View File
@@ -237,7 +237,7 @@ python3 scripts/dasha_oracle_closure_status.py \
当前第一优先级是 `external_template_steve_jobs_dasha_lahiri`。该状态板只要求 `target.vimshottari_start_date` 和外部证据 metadata,不要求同时填完 Shadbala 七曜六分量;这样可以先完成 Dasha oracle 的第一条闭环,再单独推进 Shadbala 绝对值闭环。
第一条 Dasha 证据包的交互辅助命令:
第一条外部证据包的交互辅助命令:
```bash
python3 scripts/first_oracle_packet_assistant.py \
@@ -246,7 +246,14 @@ python3 scripts/first_oracle_packet_assistant.py \
--output docs/benchmark/first_dasha_oracle_packet_assistant.md
```
该助手不会生成或猜测 JHora/PyJHora 真值,只会列出 `dasha_steve_jobs_lahiri_first_packet_only.json` 当前还缺哪些字段、可用外部来源、apply 命令和 validator 命令。
同一个助手也支持:
```bash
python3 scripts/first_oracle_packet_assistant.py --front tajika_sahams --format markdown --output docs/benchmark/first_tajika_oracle_packet_assistant.md
python3 scripts/first_oracle_packet_assistant.py --front shadbala --format markdown --output docs/benchmark/first_shadbala_oracle_packet_assistant.md
```
该助手不会生成或猜测 JHora/PyJHora 真值,只会列出当前 packet 还缺哪些字段、可用外部来源、apply 命令和 validator 命令。
Shadbala 外部绝对值闭环使用独立状态板,专门追踪七曜的六分量与总 Rupa:
@@ -0,0 +1,75 @@
{
"scope": "first_external_oracle_packet_assistant",
"schema_version": 1,
"front": "shadbala",
"case_id": "template_redacted_place_shadbala_raman",
"capture_id": "external_template_redacted_place_shadbala_raman",
"operator_card": "docs/benchmark/shadbala_redacted_place_raman_first_packet_operator_card.md",
"packet_template": "references/oracle/evidence_packet_templates/shadbala_redacted_place_raman_first_packet.json",
"missing_fields": [
"metadata.tool_name",
"metadata.tool_version_or_url",
"metadata.capture_date",
"metadata.operator_note",
"metadata.source_artifact",
"target.moon_sidereal_longitude_deg",
"target.shadbala_components.Sun.sthana",
"target.shadbala_components.Sun.dig",
"target.shadbala_components.Sun.kala",
"target.shadbala_components.Sun.chesta",
"target.shadbala_components.Sun.naisargika",
"target.shadbala_components.Sun.drik",
"target.shadbala_components.Sun.total_rupa",
"target.shadbala_components.Moon.sthana",
"target.shadbala_components.Moon.dig",
"target.shadbala_components.Moon.kala",
"target.shadbala_components.Moon.chesta",
"target.shadbala_components.Moon.naisargika",
"target.shadbala_components.Moon.drik",
"target.shadbala_components.Moon.total_rupa",
"target.shadbala_components.Mars.sthana",
"target.shadbala_components.Mars.dig",
"target.shadbala_components.Mars.kala",
"target.shadbala_components.Mars.chesta",
"target.shadbala_components.Mars.naisargika",
"target.shadbala_components.Mars.drik",
"target.shadbala_components.Mars.total_rupa",
"target.shadbala_components.Mercury.sthana",
"target.shadbala_components.Mercury.dig",
"target.shadbala_components.Mercury.kala",
"target.shadbala_components.Mercury.chesta",
"target.shadbala_components.Mercury.naisargika",
"target.shadbala_components.Mercury.drik",
"target.shadbala_components.Mercury.total_rupa",
"target.shadbala_components.Jupiter.sthana",
"target.shadbala_components.Jupiter.dig",
"target.shadbala_components.Jupiter.kala",
"target.shadbala_components.Jupiter.chesta",
"target.shadbala_components.Jupiter.naisargika",
"target.shadbala_components.Jupiter.drik",
"target.shadbala_components.Jupiter.total_rupa",
"target.shadbala_components.Venus.sthana",
"target.shadbala_components.Venus.dig",
"target.shadbala_components.Venus.kala",
"target.shadbala_components.Venus.chesta",
"target.shadbala_components.Venus.naisargika",
"target.shadbala_components.Venus.drik",
"target.shadbala_components.Venus.total_rupa",
"target.shadbala_components.Saturn.sthana",
"target.shadbala_components.Saturn.dig",
"target.shadbala_components.Saturn.kala",
"target.shadbala_components.Saturn.chesta",
"target.shadbala_components.Saturn.naisargika",
"target.shadbala_components.Saturn.drik",
"target.shadbala_components.Saturn.total_rupa"
],
"ready_to_apply": false,
"external_sources": [
"JHora Shadbala component table screenshot",
"PyJHora black-box shadbala output",
"documented printed/software Shadbala example"
],
"apply_command": "python3 scripts/oracle_collection_queue.py --oracle-file references/oracle/dasha_shadbala_oracle_cases.json --apply-packet references/oracle/evidence_packet_templates/shadbala_redacted_place_raman_first_packet.json --format json",
"validate_command": "python3 scripts/oracle_collection_queue.py --oracle-file references/oracle/dasha_shadbala_oracle_cases.json --format json > /tmp/jyotish_oracle_queue_filled.json && python3 scripts/oracle_evidence_validator.py --queue-file /tmp/jyotish_oracle_queue_filled.json",
"boundary": "This assistant only reports what to fill. It must not invent external oracle values, must not use local engine output as evidence, and must not copy incompatible external code."
}
@@ -0,0 +1,88 @@
# First External Oracle Packet Assistant
- front: `shadbala`
- case_id: `template_redacted_place_shadbala_raman`
- capture_id: `external_template_redacted_place_shadbala_raman`
- ready_to_apply: `false`
- operator_card: `docs/benchmark/shadbala_redacted_place_raman_first_packet_operator_card.md`
- packet_template: `references/oracle/evidence_packet_templates/shadbala_redacted_place_raman_first_packet.json`
## Missing Fields
- `metadata.tool_name`
- `metadata.tool_version_or_url`
- `metadata.capture_date`
- `metadata.operator_note`
- `metadata.source_artifact`
- `target.moon_sidereal_longitude_deg`
- `target.shadbala_components.Sun.sthana`
- `target.shadbala_components.Sun.dig`
- `target.shadbala_components.Sun.kala`
- `target.shadbala_components.Sun.chesta`
- `target.shadbala_components.Sun.naisargika`
- `target.shadbala_components.Sun.drik`
- `target.shadbala_components.Sun.total_rupa`
- `target.shadbala_components.Moon.sthana`
- `target.shadbala_components.Moon.dig`
- `target.shadbala_components.Moon.kala`
- `target.shadbala_components.Moon.chesta`
- `target.shadbala_components.Moon.naisargika`
- `target.shadbala_components.Moon.drik`
- `target.shadbala_components.Moon.total_rupa`
- `target.shadbala_components.Mars.sthana`
- `target.shadbala_components.Mars.dig`
- `target.shadbala_components.Mars.kala`
- `target.shadbala_components.Mars.chesta`
- `target.shadbala_components.Mars.naisargika`
- `target.shadbala_components.Mars.drik`
- `target.shadbala_components.Mars.total_rupa`
- `target.shadbala_components.Mercury.sthana`
- `target.shadbala_components.Mercury.dig`
- `target.shadbala_components.Mercury.kala`
- `target.shadbala_components.Mercury.chesta`
- `target.shadbala_components.Mercury.naisargika`
- `target.shadbala_components.Mercury.drik`
- `target.shadbala_components.Mercury.total_rupa`
- `target.shadbala_components.Jupiter.sthana`
- `target.shadbala_components.Jupiter.dig`
- `target.shadbala_components.Jupiter.kala`
- `target.shadbala_components.Jupiter.chesta`
- `target.shadbala_components.Jupiter.naisargika`
- `target.shadbala_components.Jupiter.drik`
- `target.shadbala_components.Jupiter.total_rupa`
- `target.shadbala_components.Venus.sthana`
- `target.shadbala_components.Venus.dig`
- `target.shadbala_components.Venus.kala`
- `target.shadbala_components.Venus.chesta`
- `target.shadbala_components.Venus.naisargika`
- `target.shadbala_components.Venus.drik`
- `target.shadbala_components.Venus.total_rupa`
- `target.shadbala_components.Saturn.sthana`
- `target.shadbala_components.Saturn.dig`
- `target.shadbala_components.Saturn.kala`
- `target.shadbala_components.Saturn.chesta`
- `target.shadbala_components.Saturn.naisargika`
- `target.shadbala_components.Saturn.drik`
- `target.shadbala_components.Saturn.total_rupa`
## External Sources
- JHora Shadbala component table screenshot
- PyJHora black-box shadbala output
- documented printed/software Shadbala example
## Apply
```bash
python3 scripts/oracle_collection_queue.py --oracle-file references/oracle/dasha_shadbala_oracle_cases.json --apply-packet references/oracle/evidence_packet_templates/shadbala_redacted_place_raman_first_packet.json --format json
```
## Validate
```bash
python3 scripts/oracle_collection_queue.py --oracle-file references/oracle/dasha_shadbala_oracle_cases.json --format json > /tmp/jyotish_oracle_queue_filled.json && python3 scripts/oracle_evidence_validator.py --queue-file /tmp/jyotish_oracle_queue_filled.json
```
## Boundary
This assistant only reports what to fill. It must not invent external oracle values, must not use local engine output as evidence, and must not copy incompatible external code.
@@ -0,0 +1,35 @@
{
"scope": "first_external_oracle_packet_assistant",
"schema_version": 1,
"front": "tajika_sahams",
"case_id": "template_steve_jobs_varshaphala_1984_lahiri",
"capture_id": "external_template_steve_jobs_varshaphala_1984_lahiri",
"operator_card": "docs/benchmark/tajika_steve_jobs_1984_first_packet_operator_card.md",
"packet_template": "references/oracle/evidence_packet_templates/tajika_steve_jobs_1984_first_packet.json",
"missing_fields": [
"metadata.tool_name",
"metadata.tool_version_or_url",
"metadata.capture_date",
"metadata.operator_note",
"metadata.source_artifact",
"target.solar_return_datetime",
"target.varsha_lagna_deg",
"target.muntha_sign",
"target.year_lord",
"target.mudda_dasha_first_lord",
"target.sahams.punya_saham",
"target.sahams.rajya_saham",
"target.sahams.vivah_saham",
"target.tajika_yogas",
"target.source_artifact"
],
"ready_to_apply": false,
"external_sources": [
"JHora Varshaphala/Tajika annual chart screen",
"PyJHora black-box annual output",
"printed Tajika/Varshaphala example"
],
"apply_command": "python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/evidence_packet_templates/tajika_steve_jobs_1984_first_packet.json --format json",
"validate_command": "python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --format json && python3 scripts/tajika_annual_benchmark_dashboard.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --format json",
"boundary": "This assistant only reports what to fill. It must not invent external oracle values, must not use local engine output as evidence, and must not copy incompatible external code."
}
@@ -0,0 +1,48 @@
# First External Oracle Packet Assistant
- front: `tajika_sahams`
- case_id: `template_steve_jobs_varshaphala_1984_lahiri`
- capture_id: `external_template_steve_jobs_varshaphala_1984_lahiri`
- ready_to_apply: `false`
- operator_card: `docs/benchmark/tajika_steve_jobs_1984_first_packet_operator_card.md`
- packet_template: `references/oracle/evidence_packet_templates/tajika_steve_jobs_1984_first_packet.json`
## Missing Fields
- `metadata.tool_name`
- `metadata.tool_version_or_url`
- `metadata.capture_date`
- `metadata.operator_note`
- `metadata.source_artifact`
- `target.solar_return_datetime`
- `target.varsha_lagna_deg`
- `target.muntha_sign`
- `target.year_lord`
- `target.mudda_dasha_first_lord`
- `target.sahams.punya_saham`
- `target.sahams.rajya_saham`
- `target.sahams.vivah_saham`
- `target.tajika_yogas`
- `target.source_artifact`
## External Sources
- JHora Varshaphala/Tajika annual chart screen
- PyJHora black-box annual output
- printed Tajika/Varshaphala example
## Apply
```bash
python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --apply-packet references/oracle/evidence_packet_templates/tajika_steve_jobs_1984_first_packet.json --format json
```
## Validate
```bash
python3 scripts/tajika_annual_oracle_queue.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --format json && python3 scripts/tajika_annual_benchmark_dashboard.py --oracle-file references/oracle/tajika_annual_oracle_cases.json --format json
```
## Boundary
This assistant only reports what to fill. It must not invent external oracle values, must not use local engine output as evidence, and must not copy incompatible external code.
+43 -2
View File
@@ -31,6 +31,40 @@ FRONTS = {
"PyJHora black-box dasha output",
"documented printed/software example",
],
},
"tajika_sahams": {
"status_command": [
PYTHON,
"scripts/tajika_annual_closure_status.py",
"--oracle-file",
"references/oracle/tajika_annual_oracle_cases.json",
"--format",
"json",
],
"operator_card": "docs/benchmark/tajika_steve_jobs_1984_first_packet_operator_card.md",
"packet_template": "references/oracle/evidence_packet_templates/tajika_steve_jobs_1984_first_packet.json",
"external_sources": [
"JHora Varshaphala/Tajika annual chart screen",
"PyJHora black-box annual output",
"printed Tajika/Varshaphala example",
],
},
"shadbala": {
"status_command": [
PYTHON,
"scripts/shadbala_oracle_closure_status.py",
"--oracle-file",
"references/oracle/dasha_shadbala_oracle_cases.json",
"--format",
"json",
],
"operator_card": "docs/benchmark/shadbala_redacted_place_raman_first_packet_operator_card.md",
"packet_template": "references/oracle/evidence_packet_templates/shadbala_redacted_place_raman_first_packet.json",
"external_sources": [
"JHora Shadbala component table screenshot",
"PyJHora black-box shadbala output",
"documented printed/software Shadbala example",
],
}
}
@@ -60,9 +94,16 @@ def _packet_missing(packet_path: str) -> list[str]:
if metadata.get("source_artifact") in {"references/oracle/artifacts/", "references/oracle/artifacts", "", None}:
if "metadata.source_artifact" not in missing:
missing.append("metadata.source_artifact")
for field, value in packet.get("target_placeholders", {}).items():
def walk(prefix: str, value: Any) -> None:
if isinstance(value, dict):
for key, child in value.items():
walk(f"{prefix}.{key}" if prefix else key, child)
return
if value is None or value == "" or value == [] or value == {}:
missing.append(field)
missing.append(prefix)
for field, value in packet.get("target_placeholders", {}).items():
walk(field, value)
return missing
@@ -62,3 +62,57 @@ def test_first_oracle_packet_assistant_markdown_can_be_written(tmp_path: Path) -
assert "template_steve_jobs_dasha_lahiri" in markdown
assert "target.vimshottari_start_date" in markdown
assert "ready_to_apply: `false`" in markdown
def test_first_oracle_packet_assistant_reports_tajika_front() -> None:
completed = subprocess.run(
[
sys.executable,
"scripts/first_oracle_packet_assistant.py",
"--front",
"tajika_sahams",
"--format",
"json",
],
cwd=ROOT,
text=True,
capture_output=True,
timeout=60,
check=False,
)
assert completed.returncode == 0, completed.stderr or completed.stdout
report = json.loads(completed.stdout)
assert report["front"] == "tajika_sahams"
assert report["case_id"] == "template_steve_jobs_varshaphala_1984_lahiri"
assert report["operator_card"].endswith("tajika_steve_jobs_1984_first_packet_operator_card.md")
assert report["packet_template"].endswith("tajika_steve_jobs_1984_first_packet.json")
assert "target.solar_return_datetime" in report["missing_fields"]
assert "target.sahams.punya_saham" in report["missing_fields"]
def test_first_oracle_packet_assistant_reports_shadbala_front() -> None:
completed = subprocess.run(
[
sys.executable,
"scripts/first_oracle_packet_assistant.py",
"--front",
"shadbala",
"--format",
"json",
],
cwd=ROOT,
text=True,
capture_output=True,
timeout=60,
check=False,
)
assert completed.returncode == 0, completed.stderr or completed.stdout
report = json.loads(completed.stdout)
assert report["front"] == "shadbala"
assert report["case_id"] == "template_redacted_place_shadbala_raman"
assert report["operator_card"].endswith("shadbala_redacted_place_raman_first_packet_operator_card.md")
assert report["packet_template"].endswith("shadbala_redacted_place_raman_first_packet.json")
assert "target.moon_sidereal_longitude_deg" in report["missing_fields"]
assert "target.shadbala_components.Sun.sthana" in report["missing_fields"]