Add priority1 reference promotion audit

This commit is contained in:
732642856
2026-07-02 14:51:16 +08:00
parent d493910c67
commit add2d8a040
4 changed files with 524 additions and 0 deletions
@@ -0,0 +1,352 @@
{
"scope": "interpretation_source_priority1_batch1_promotion_audit",
"status": "triaged",
"created_at": "2026-07-02",
"source_inventory_baseline": "docs/research/interpretation_source_full_classification_2026_07_02.md",
"runtime_effect": "none_audit_only",
"boundary": "This audit classifies a first batch of priority_1 references candidates. It does not directly promote files into the runtime source pack; promotion still requires source review, conflict arbitration, and focused tests.",
"summary": {
"batch_size": 30,
"disposition_counts": {
"promote": 16,
"reference-only": 6,
"obsolete": 3,
"duplicate": 3,
"quarantine": 2
},
"selection_rule": "Picked 30 files from references/ that look closest to rule-source material, while deliberately including duplicate, obsolete, and privacy-sensitive traps.",
"next_gate": "Only promote entries after mapping each file to a source-pack layer and adding workflow visibility tests."
},
"entries": [
{
"path": "references/argala-complete-guide.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Jaimini Argala",
"reason": "Contains structured Argala/Virodha Argala rules and evaluation order; this is closer to a technique rule source than a research note.",
"source_caution": "Mixed classical/traditional/modern source label; require conflict notes before treating scoring details as authoritative.",
"next_action": "Promote as a Jaimini reference layer with a source-caution field and smoke test that strict workflows can see the layer."
},
{
"path": "references/ashtakavarga-complete-system.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Ashtakavarga",
"reason": "Provides BAV/SAV concepts, scoring thresholds, and usage rules needed by timing and transit interpretation.",
"source_caution": "Do not override existing calibrated Ashtakavarga code or oracle artifacts without parity evidence.",
"next_action": "Promote as a reference layer only after linking it to existing Ashtakavarga calculation outputs."
},
{
"path": "references/badhaka-obstacle-planet-guide.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Badhaka",
"reason": "Contains ascendant-based Badhaka lord rules and interpretive constraints that are currently underrepresented in the source pack.",
"source_caution": "Needs functional benefic/malefic arbitration when Badhaka lord also owns auspicious houses.",
"next_action": "Promote behind a Badhaka source layer and add a test requiring the layer in high-rigor audits."
},
{
"path": "references/condition-dasha-complete.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Conditional Dashas",
"reason": "Catalogs conditional Dasha applicability, which is important for avoiding single-system timing claims.",
"source_caution": "Applicability conditions must be machine-checked before the rule is used in interpretation.",
"next_action": "Promote as a conditional Dasha reference; keep runtime use gated by explicit condition checks."
},
{
"path": "references/divisional-chart-deep-reading.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "primary_truth_candidate",
"technique_area": "Varga / Divisional Charts",
"reason": "Defines domain-specific divisional chart reading logic and directly supports D10/D2/D11/D9 high-rigor requirements.",
"source_caution": "Must be reconciled with existing frontend varga summaries before becoming a single truth source.",
"next_action": "Promote as the primary divisional-chart methodology candidate, then map quick references as duplicate/reference-only."
},
{
"path": "references/event_judgment_skeleton.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "primary_truth_candidate",
"technique_area": "Event Judgment Workflow",
"reason": "Matches the current strict-workflow direction: promise, activation, evidence ledger, MEVG, and confidence downgrade boundaries.",
"source_caution": "Workflow source only; it does not itself supply classical rule content.",
"next_action": "Promote as a primary workflow source after adding tests that fortune workflows expose this layer."
},
{
"path": "references/jaimini-complete-system.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Jaimini",
"reason": "Contains Karaka, Karakamsha, Chara Dasha, and Jaimini aspect material needed for non-Vimshottari cross-checks.",
"source_caution": "Document itself states Chara Dasha timing is partial and needs KN Rao/PVN Rao/Iranganti regression validation.",
"next_action": "Promote with a partial-timing boundary; do not use it to claim Chara Dasha closure."
},
{
"path": "references/kp-astrology-complete-system.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "reference_layer_candidate",
"technique_area": "KP Astrology",
"reason": "A complete KP system reference is useful for event timing cross-checks and source-pack awareness.",
"source_caution": "KP is a separate school; it must be labeled as KP reference, not silently merged into Parashari/Jaimini logic.",
"next_action": "Promote as a separate KP reference layer with school-boundary metadata."
},
{
"path": "references/planetary-dignity-complete-reference.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "primary_truth_candidate",
"technique_area": "Planetary Dignity",
"reason": "Contains core dignity, exaltation/debilitation, moolatrikona, and friendship rules used across all interpretive domains.",
"source_caution": "Disputed dignity ranges must be represented as conflicts rather than flattened.",
"next_action": "Promote as a core rule-source candidate with conflict metadata for disputed traditions."
},
{
"path": "references/pratyantar-calculation-guide.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Sub-period Dashas",
"reason": "Gives calculation logic for Pratyantar/Sookshma/Prana layers needed for month-level or event-level timing checks.",
"source_caution": "Calculation formulas must defer to tested code and oracle parity; this file is explanatory until validated.",
"next_action": "Promote as a calculation reference and link to Dasha calculator tests."
},
{
"path": "references/retrograde-combustion-war-guide.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "primary_truth_candidate",
"technique_area": "Planetary Conditions",
"reason": "Retrograde, combustion, and planetary war rules are cross-domain modifiers and should be visible to every serious interpretation workflow.",
"source_caution": "Combustion thresholds vary by tradition; rule output must preserve threshold source.",
"next_action": "Promote as a planetary-condition source after adding source-pack exposure tests."
},
{
"path": "references/shadbala-complete-methodology.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Shadbala",
"reason": "Provides Shadbala dimensions and interpretive boundaries needed for high-rigor raw-data delivery.",
"source_caution": "The file itself marks absolute calibration as partial; use as methodology, not as proof of numeric closure.",
"next_action": "Promote with an explicit calibration-boundary field and pair with oracle evidence."
},
{
"path": "references/tajika-yoga-complete-guide.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Tajika / Varshaphala",
"reason": "A complete Tajika yoga reference is needed for annual prediction work and 2027-2030 year-window analysis.",
"source_caution": "Current Tajika implementation remains target-set closed rather than full traditional annual prediction closure.",
"next_action": "Promote as a Tajika reference layer without claiming annual prediction closure."
},
{
"path": "references/transit-multi-reference-guide.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "primary_truth_candidate",
"technique_area": "Transit",
"reason": "Codifies multi-reference transit evaluation from Lagna, Moon, AL, and divisional anchors, preventing single-anchor transit claims.",
"source_caution": "Transit interpretation still needs MEVG and real-case calibration for outcome language.",
"next_action": "Promote as a primary transit methodology source and wire into technique audit visibility."
},
{
"path": "references/vimshottari_dasha_guide.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "primary_truth_candidate",
"technique_area": "Vimshottari Dasha",
"reason": "Core Vimshottari Dasha guide; required for timing baseline and for explaining Dasha boundaries.",
"source_caution": "Must not be used alone for high-rigor timing; pair with Narayana/Jaimini where required.",
"next_action": "Promote as a primary Dasha methodology source with dual-Dasha boundary text."
},
{
"path": "references/prediction-boundary-protocol.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "promote",
"promotion_layer": "primary_truth_candidate",
"technique_area": "Prediction Boundaries",
"reason": "Provides explicit promise-vs-activation, confidence, and precision boundaries that should govern user-facing forecasts.",
"source_caution": "Modern synthesis; it is a governance boundary, not a classical rule source.",
"next_action": "Promote as a boundary/governance source and require audit tables to reference it when downgrading claims."
},
{
"path": "references/dasa-convergence-methodology.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "reference-only",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Dasha Convergence",
"reason": "Useful methodology, but parts are older than the current strict dual-Dasha and oracle-closure direction.",
"source_caution": "Contains historical statements about Narayana/PDF/software availability that require reconciliation.",
"next_action": "Keep as reference-only until reconciled against current multi-Dasha convergence protocol and Narayana status."
},
{
"path": "references/dasha-transit-method.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "reference-only",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Dasha + Transit",
"reason": "Good explanatory bridge between Dasha and transit, but it overlaps newer event-judgment and transit multi-reference sources.",
"source_caution": "Examples and wording may predate MEVG and real-case calibration gates.",
"next_action": "Use as supporting reference after primary workflow sources are promoted."
},
{
"path": "references/multi-dasha-convergence-protocol.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "reference-only",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Multi-Dasha Convergence",
"reason": "Valuable modern convergence framework, but it is explicitly derived and should not outrank classical or validated engine outputs.",
"source_caution": "Treat as a governance method; do not treat weighted scores as traditional authority.",
"next_action": "Keep as reference-only until score weights are backed by benchmark tests."
},
{
"path": "references/varga-divisional-charts-quick-reference.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "reference-only",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Varga Quick Reference",
"reason": "Useful quick map of divisional chart domains, but less source-like than the deeper divisional reading guide.",
"source_caution": "Quick references can omit conflict conditions and should not be the sole truth layer.",
"next_action": "Keep as operator-facing reference after the deep divisional guide is promoted."
},
{
"path": "references/yoga-strength-scoring-system.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "reference-only",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Yoga Scoring",
"reason": "The scoring framework is useful for consistency, but it is a modern derived layer rather than a primary textual authority.",
"source_caution": "Scores need benchmark calibration and must not overwrite named-yoga detection rules.",
"next_action": "Keep as reference-only until benchmark-backed weights exist."
},
{
"path": "references/comprehensive-reading-workflow.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "reference-only",
"promotion_layer": "reference_layer_candidate",
"technique_area": "Reading Workflow",
"reason": "Broad workflow document that can guide reader structure, but it is not itself a rule-source file.",
"source_caution": "May duplicate newer strict workflow and event judgment skeleton requirements.",
"next_action": "Keep as reference-only; extract only non-duplicative checklist items in a later batch."
},
{
"path": "references/varga-system-quick-reference.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "duplicate",
"promotion_layer": "not_truth_source",
"technique_area": "Varga Quick Reference",
"reason": "Overlaps the deeper divisional chart guide and the other varga quick reference.",
"source_caution": "Duplicate quick references are high-risk for inconsistent domain maps.",
"next_action": "Do not promote; compare against the deep divisional guide and merge only unique deltas."
},
{
"path": "references/yoga-list-chinese.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "duplicate",
"promotion_layer": "not_truth_source",
"technique_area": "Yoga List",
"reason": "A Chinese yoga list duplicates existing yoga rule assets and frontend yoga detail files.",
"source_caution": "List-only material can drift from machine-readable yoga rules.",
"next_action": "Use only as translation/reference comparison after `references/yoga_rules.json` remains canonical."
},
{
"path": "references/analysis-full-reading-v4.0.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "duplicate",
"promotion_layer": "not_truth_source",
"technique_area": "Full Reading Workflow",
"reason": "Historical full-reading workflow overlaps the current source-pack and strict workflow architecture.",
"source_caution": "Versioned reading docs can silently reintroduce old output standards.",
"next_action": "Do not promote directly; compare only for missing checklist deltas."
},
{
"path": "references/analysis-full-reading-v1.8-review.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "obsolete",
"promotion_layer": "not_truth_source",
"technique_area": "Historical Review",
"reason": "Older review document superseded by later workflow and strict source-pack governance.",
"source_caution": "Using it as truth could roll back MEVG/source-pack improvements.",
"next_action": "Keep as historical context only."
},
{
"path": "references/audit-skill-full-test-2026-05-04.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "obsolete",
"promotion_layer": "not_truth_source",
"technique_area": "Historical Audit",
"reason": "Test/audit snapshot from an earlier skill state; it is evidence history rather than a rule source.",
"source_caution": "Historical pass/fail claims can conflict with current July source inventory.",
"next_action": "Archive as audit history; do not expose in interpretation source pack."
},
{
"path": "references/feature-gap-matrix-2026.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "obsolete",
"promotion_layer": "not_truth_source",
"technique_area": "Gap Matrix",
"reason": "A gap matrix is useful planning history but is not a stable rule or interpretive source.",
"source_caution": "Older gap claims may already be closed by later commits.",
"next_action": "Use only when researching historical priorities."
},
{
"path": "references/kp-practical-event-timing.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "quarantine",
"promotion_layer": "not_truth_source",
"technique_area": "KP Event Timing",
"reason": "The file is a privacy-protected placeholder whose substantive content was removed.",
"source_caution": "Do not infer rules from removed private consultation material.",
"next_action": "Keep quarantined; rebuild KP event timing only from public sources or synthetic smoke cases."
},
{
"path": "references/consultation-case-library.md",
"inventory_priority": "priority_1",
"inventory_classification": "reference_candidate",
"disposition": "quarantine",
"promotion_layer": "not_truth_source",
"technique_area": "Consultation Cases",
"reason": "A case-library index can support real-case calibration, but it is not a rules source and may contain sourced-case/privacy boundaries.",
"source_caution": "Requires source licensing, privacy review, and MEVG evidence grading before any runtime use.",
"next_action": "Keep outside source pack; later classify under real-case calibration rather than interpretation truth."
}
]
}
@@ -0,0 +1,79 @@
# Priority 1 第一批升格审计
日期:2026-07-02
范围:`references/` 中最像“规则源头”的 30 个 priority_1 `reference_candidate` 文件。
基线:[interpretation_source_full_classification_2026_07_02.md](interpretation_source_full_classification_2026_07_02.md)
这份审计只做分级,不直接接入 runtime source pack。后续真正升格时,还需要 source-pack 显式调用链、冲突仲裁、可见性测试,以及必要的 oracle / MEVG / real-case 校准。In short: promotion still requires tested wiring, not just a nicer label.
## 处置定义
- `promote`:可以进入下一步升格设计,作为 primary truth candidate 或 reference layer candidate。
- `reference-only`:有参考价值,但不能压过主规则源头,或需要等待权重/旧状态 reconciliation。
- `obsolete`:历史状态、旧审计、旧缺口矩阵;可保留追溯,不应进入解释主链。
- `duplicate`:与更强源头重复,后续只抽差异,不直接升格。
- `quarantine`:隐私、来源、内容移除、或案例边界不清;不得作为解释规则源。
## 汇总
| disposition | count | meaning |
|---|---:|---|
| `promote` | 16 | 第一批可进入升格候选 |
| `reference-only` | 6 | 辅助参考,暂不做主规则 |
| `obsolete` | 3 | 历史文件 |
| `duplicate` | 3 | 重复源 |
| `quarantine` | 2 | 隔离,不进主链 |
## Promote
| file | layer | reason |
|---|---|---|
| `references/argala-complete-guide.md` | reference layer | Argala/Virodha Argala 规则结构完整 |
| `references/ashtakavarga-complete-system.md` | reference layer | BAV/SAV 与 transit 评分方法需要可见 |
| `references/badhaka-obstacle-planet-guide.md` | reference layer | Badhaka lord 规则目前未充分接入 |
| `references/condition-dasha-complete.md` | reference layer | 条件大运适用性可防止单系统误判 |
| `references/divisional-chart-deep-reading.md` | primary candidate | 分盘深读支持 D10/D2/D11/D9 等硬约束 |
| `references/event_judgment_skeleton.md` | primary candidate | 与 strict workflow、MEVG、evidence ledger 一致 |
| `references/jaimini-complete-system.md` | reference layer | Jaimini Karaka/Chara/Karakamsha 可做非 Vimshottari 交叉 |
| `references/kp-astrology-complete-system.md` | reference layer | KP 可作为独立学派的事件 timing 参考 |
| `references/planetary-dignity-complete-reference.md` | primary candidate | 庙旺陷、moolatrikona、友敌关系是跨领域基础规则 |
| `references/pratyantar-calculation-guide.md` | reference layer | 子周期计算解释支持月级和事件级 timing |
| `references/retrograde-combustion-war-guide.md` | primary candidate | 逆行、燃烧、星战是跨领域修正层 |
| `references/shadbala-complete-methodology.md` | reference layer | Shadbala 方法论需要进入高严谨原始依据层 |
| `references/tajika-yoga-complete-guide.md` | reference layer | Tajika 年运需要规则可见,但不能声称完整闭环 |
| `references/transit-multi-reference-guide.md` | primary candidate | 多参考点 transit 可防止单锚点判断 |
| `references/vimshottari_dasha_guide.md` | primary candidate | Vimshottari 是 timing baseline |
| `references/prediction-boundary-protocol.md` | primary candidate | 预测精度、promise vs activation、降级边界必须显式存在 |
## Reference Only
| file | reason |
|---|---|
| `references/dasa-convergence-methodology.md` | 有价值,但包含旧 Narayana/PDF/software 状态,需要与当前实现核对 |
| `references/dasha-transit-method.md` | 有解释价值,但被 event skeleton 与 transit multi-reference 覆盖一部分 |
| `references/multi-dasha-convergence-protocol.md` | 现代评分框架,需 benchmark 支撑权重 |
| `references/varga-divisional-charts-quick-reference.md` | 快速参考,不应压过 deep reading 源头 |
| `references/yoga-strength-scoring-system.md` | 现代评分层,不能覆盖 yoga detection 真源 |
| `references/comprehensive-reading-workflow.md` | 广义流程参考,不是规则源头 |
## Duplicate / Obsolete / Quarantine
| disposition | file | reason |
|---|---|---|
| `duplicate` | `references/varga-system-quick-reference.md` | 与 deep reading 和 quick reference 重复 |
| `duplicate` | `references/yoga-list-chinese.md` | 与 machine-readable yoga rules / frontend yoga details 重复 |
| `duplicate` | `references/analysis-full-reading-v4.0.md` | 历史 full-reading workflow,与当前 strict source-pack 架构重复 |
| `obsolete` | `references/analysis-full-reading-v1.8-review.md` | 旧版 review,不应回灌主链 |
| `obsolete` | `references/audit-skill-full-test-2026-05-04.md` | 旧审计快照 |
| `obsolete` | `references/feature-gap-matrix-2026.md` | 旧缺口矩阵,后续状态可能已变化 |
| `quarantine` | `references/kp-practical-event-timing.md` | 内容已移除且有隐私保护声明 |
| `quarantine` | `references/consultation-case-library.md` | 案例库索引,需隐私/来源/MEVG 分级;不能作为规则源 |
## 下一步
第一批真正升格时建议按这个顺序:
1. 先接 `prediction-boundary-protocol``event_judgment_skeleton``planetary-dignity-complete-reference``retrograde-combustion-war-guide``transit-multi-reference-guide`
2. 再接分盘、Dasha、Ashtakavarga、Shadbala、Tajika、Jaimini、KP 等专题 reference layer。
3. 对 duplicate 只做差异抽取;对 obsolete 只保留历史;对 quarantine 不进入 source pack。
+8
View File
@@ -752,3 +752,11 @@
- 重点优先层已覆盖:`references/` -> reference_candidate`references/real_case_studies/` -> real_case_calibration`open_source_sources/rishi-ai-mcp``vedic-astro-skills` -> open_source_reference。
- 普通研究流水账与本地草稿已降级:`docs/research` -> research_governance`docs/research/local_drafts` -> quarantined_draft / not_truth_source。
- 新增快照文档:`docs/research/interpretation_source_full_classification_2026_07_02.md`
## 2026-07-02T14:44:00+08:00 - priority_1 references 第一批升格审计
-`references/` 的 priority_1 `reference_candidate` 中挑出 30 个最像规则源头的文件,形成第一批升格审计包。
- 新增机器可测审计 JSON`docs/research/interpretation_source_priority1_batch1_promotion_audit_2026_07_02.json`
- 新增人读审计说明:`docs/research/interpretation_source_priority1_batch1_promotion_audit_2026_07_02.md`
- 当前处置:`promote=16``reference-only=6``obsolete=3``duplicate=3``quarantine=2`
- 明确边界:本批只做 audit-only 分级,不直接接入 runtime source pack;后续升格仍需调用链、冲突仲裁、可见性测试。
@@ -0,0 +1,85 @@
#!/usr/bin/env python3
"""Regression tests for the first priority-1 reference promotion audit."""
from __future__ import annotations
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
AUDIT_JSON = ROOT / "docs" / "research" / "interpretation_source_priority1_batch1_promotion_audit_2026_07_02.json"
AUDIT_MD = ROOT / "docs" / "research" / "interpretation_source_priority1_batch1_promotion_audit_2026_07_02.md"
INVENTORY_REPORT = ROOT / "docs" / "research" / "interpretation_source_full_classification_2026_07_02.md"
def _load_audit() -> dict:
return json.loads(AUDIT_JSON.read_text(encoding="utf-8"))
def test_priority1_batch1_audit_has_required_shape_and_dispositions() -> None:
audit = _load_audit()
entries = audit["entries"]
assert audit["scope"] == "interpretation_source_priority1_batch1_promotion_audit"
assert audit["status"] == "triaged"
assert 20 <= len(entries) <= 30
assert audit["summary"]["batch_size"] == len(entries)
assert audit["source_inventory_baseline"] == str(INVENTORY_REPORT.relative_to(ROOT))
assert audit["runtime_effect"] == "none_audit_only"
dispositions = {entry["disposition"] for entry in entries}
assert dispositions == {"promote", "reference-only", "obsolete", "duplicate", "quarantine"}
for entry in entries:
assert entry["path"].startswith("references/")
assert entry["inventory_priority"] == "priority_1"
assert entry["inventory_classification"] == "reference_candidate"
assert entry["promotion_layer"] in {
"primary_truth_candidate",
"reference_layer_candidate",
"not_truth_source",
}
assert entry["reason"].strip()
assert entry["next_action"].strip()
assert entry["source_caution"].strip()
def test_priority1_batch1_audit_locks_high_risk_source_decisions() -> None:
by_path = {entry["path"]: entry for entry in _load_audit()["entries"]}
promote_paths = {
"references/argala-complete-guide.md",
"references/badhaka-obstacle-planet-guide.md",
"references/event_judgment_skeleton.md",
"references/planetary-dignity-complete-reference.md",
"references/retrograde-combustion-war-guide.md",
"references/transit-multi-reference-guide.md",
"references/vimshottari_dasha_guide.md",
}
for path in promote_paths:
assert by_path[path]["disposition"] == "promote"
assert by_path[path]["promotion_layer"] in {
"primary_truth_candidate",
"reference_layer_candidate",
}
assert by_path["references/kp-practical-event-timing.md"]["disposition"] == "quarantine"
assert by_path["references/analysis-full-reading-v1.8-review.md"]["disposition"] == "obsolete"
assert by_path["references/varga-system-quick-reference.md"]["disposition"] == "duplicate"
assert by_path["references/yoga-list-chinese.md"]["disposition"] == "duplicate"
assert by_path["references/dasa-convergence-methodology.md"]["disposition"] == "reference-only"
assert by_path["references/yoga-strength-scoring-system.md"]["disposition"] == "reference-only"
def test_priority1_batch1_audit_markdown_states_boundaries() -> None:
text = AUDIT_MD.read_text(encoding="utf-8")
assert "第一批升格审计" in text
assert "`promote`" in text
assert "`reference-only`" in text
assert "`obsolete`" in text
assert "`duplicate`" in text
assert "`quarantine`" in text
assert "不直接接入 runtime source pack" in text
assert "promotion still requires" in text