feat: audit VedAstro raw archive manifest
This commit is contained in:
@@ -52,6 +52,7 @@ For large architecture or release work, also read:
|
||||
| ERR-019 | WorkBuddy/cloud/local acceptance summaries can invent pass counts, stale asset counts, non-existent error docs, or wrong dasha windows. | mitigated 2026-07-06 | Read `docs/research/user_invocation_acceptance_error_log_2026_07_06.md`; run `scripts/user_invocation_acceptance_check.py` and `tests/test_user_invocation_acceptance_contract.py` before accepting ordinary-user skill invocation validation claims. |
|
||||
| ERR-020 | VedAstro official raw responses can be archived but hard to audit if no manifest/API listing exposes them. | mitigated 2026-07-08 | Keep `list_official_raw_response_archives()` and `GET /api/vedastro_gateway/archives`; tests must prove archived official raw responses are enumerable. |
|
||||
| ERR-021 | VedAstro raw archive manifests can exist outside the high-rigor evidence packet, leaving final reports unable to prove whether official raw evidence was archived. | mitigated 2026-07-08 | Keep `vedastro_official_raw_archive_manifest` in `machine_evidence_packet.sections` for API and MCP strict workflows. |
|
||||
| ERR-022 | Technique Audit Table can show VedAstro cloud state but omit whether archived official raw evidence is actually auditable. | mitigated 2026-07-08 | Keep `VedAstro Raw Archive Manifest` as a first-class Technique Audit Table row immediately after `VedAstro Cloud State`. |
|
||||
|
||||
## Fragment Sweep Command Set
|
||||
|
||||
|
||||
@@ -552,10 +552,19 @@ class UnifiedConsultationOrchestrator:
|
||||
blocked_items.append("external_engine_cross_validation_partial")
|
||||
packet = machine_evidence_packet if isinstance(machine_evidence_packet, dict) else {}
|
||||
packet_status = packet.get("status") or "required_not_satisfied"
|
||||
packet_sections = packet.get("sections") if isinstance(packet.get("sections"), dict) else {}
|
||||
archive_section = packet_sections.get("vedastro_official_raw_archive_manifest")
|
||||
archive_status = (
|
||||
archive_section.get("status")
|
||||
if isinstance(archive_section, dict)
|
||||
else "required_not_satisfied"
|
||||
)
|
||||
if not packet:
|
||||
blocked_items.append("machine_evidence_packet_not_yet_materialized")
|
||||
elif packet_status != "complete":
|
||||
blocked_items.append("machine_evidence_packet_partial")
|
||||
if archive_status != "used":
|
||||
blocked_items.append("vedastro_official_raw_archive_manifest_missing")
|
||||
case_packet = real_case_calibration if isinstance(real_case_calibration, dict) else {}
|
||||
case_status = case_packet.get("status") or "required_not_satisfied"
|
||||
functional_packet = packet.get("functional_benefic_malefic") if isinstance(packet.get("functional_benefic_malefic"), dict) else {}
|
||||
@@ -577,6 +586,16 @@ class UnifiedConsultationOrchestrator:
|
||||
else "confidence_capped_without_verified_official_cloud"
|
||||
),
|
||||
},
|
||||
{
|
||||
"technique": "VedAstro Raw Archive Manifest",
|
||||
"status": archive_status,
|
||||
"used": archive_status == "used",
|
||||
"effect_on_confidence": (
|
||||
"official_raw_archive_is_auditable"
|
||||
if archive_status == "used"
|
||||
else "official_raw_archive_not_auditable_for_this_run"
|
||||
),
|
||||
},
|
||||
{
|
||||
"technique": "External Engine Cross-Validation",
|
||||
"status": external_cross_validation["status"],
|
||||
|
||||
@@ -2205,6 +2205,8 @@ def test_high_rigor_workflow_reuses_existing_rectification_backtest_and_vedastro
|
||||
assert result['unified_orchestrator']['surface'] == 'api_web'
|
||||
assert result['unified_orchestrator']['route']['question_type'] == 'career'
|
||||
assert result['machine_evidence_packet']['sections']['vedastro_official_raw_archive_manifest']['status'] == 'used'
|
||||
assert result['runtime_evidence_log']['quality_gate']['technique_audit_table'][1]['technique'] == 'VedAstro Raw Archive Manifest'
|
||||
assert result['runtime_evidence_log']['quality_gate']['technique_audit_table'][1]['status'] == 'used'
|
||||
|
||||
|
||||
def test_consultation_workflow_uses_unified_orchestrator_contract(monkeypatch) -> None:
|
||||
|
||||
@@ -183,6 +183,7 @@ def test_mcp_strict_workflow_returns_runtime_evidence_log(monkeypatch) -> None:
|
||||
assert result["runtime_evidence_log"]["real_case_calibration"]["status"] == "partial_scored"
|
||||
assert result["runtime_evidence_log"]["quality_gate"]["technique_audit_table_required"] is True
|
||||
assert result["runtime_evidence_log"]["quality_gate"]["technique_audit_table"][0]["technique"] == "VedAstro Cloud State"
|
||||
assert result["runtime_evidence_log"]["quality_gate"]["technique_audit_table"][1]["technique"] == "VedAstro Raw Archive Manifest"
|
||||
|
||||
|
||||
def test_career_blocks_label_when_d10_is_missing_but_preserves_jaimini_context() -> None:
|
||||
|
||||
@@ -191,6 +191,7 @@ def test_runtime_evidence_log_exposes_blind_packet_case_and_quality_gate_contrac
|
||||
assert log["quality_gate"]["technique_audit_table_required"] is True
|
||||
assert [row["technique"] for row in log["quality_gate"]["technique_audit_table"]] == [
|
||||
"VedAstro Cloud State",
|
||||
"VedAstro Raw Archive Manifest",
|
||||
"External Engine Cross-Validation",
|
||||
"Evidence Packet",
|
||||
"Blind Technical Mode",
|
||||
@@ -216,6 +217,11 @@ def test_runtime_evidence_log_exposes_blind_packet_case_and_quality_gate_contrac
|
||||
packet = orchestrator.machine_evidence_packet(
|
||||
chart={"chart": {"planets": {"Sun": {}}, "ascendant": {"sign": "Leo"}}},
|
||||
route_packet={"question_type": "career", "primary_theme": "career"},
|
||||
vedastro_archive_manifest={
|
||||
"scope": "vedastro_official_raw_response_archive_manifest",
|
||||
"archive_count": 1,
|
||||
"archives": [{"job_id": "job_1955", "official_raw_response_available": True}],
|
||||
},
|
||||
)
|
||||
log_with_functional = orchestrator.runtime_evidence_log(
|
||||
surface="api_web",
|
||||
@@ -229,6 +235,10 @@ def test_runtime_evidence_log_exposes_blind_packet_case_and_quality_gate_contrac
|
||||
assert functional_row["technique"] == "Functional Benefic/Malefic"
|
||||
assert functional_row["status"] == "used"
|
||||
assert "Mars" in functional_row["yogakarakas"]
|
||||
archive_row = log_with_functional["quality_gate"]["technique_audit_table"][1]
|
||||
assert archive_row["technique"] == "VedAstro Raw Archive Manifest"
|
||||
assert archive_row["status"] == "used"
|
||||
assert archive_row["used"] is True
|
||||
|
||||
|
||||
def test_machine_evidence_packet_materializes_required_section_statuses() -> None:
|
||||
|
||||
Reference in New Issue
Block a user