feat(oracle): extend first packet assistant fronts
This commit is contained in:
@@ -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.
|
||||
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user