chore(repo): make the release gate reproducible and clean product URLs

PyJHora absence is now partial, tests write research manifests to tmp, the registry allows experimental_variant, and product links point at the Gitea repo. Early logs move to docs/history.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Jesse_Chen
2026-09-03 16:55:26 +08:00
parent b6a70aa7df
commit 2415e751fe
32 changed files with 320 additions and 115 deletions
+113
View File
@@ -0,0 +1,113 @@
# 印度占星 Skill Changelog v6.2.0 → v6.9.14
## v6.9.14 (2026-06-13)
- Sudarshana Chakra 完整化:Asc/Moon/Sun 三参考点盘、三盘收敛性、12宫生活领域评分、文本报告与 CLI 子命令
- 测试体系升级:pytest 收集 475 个用例,完整测试套件 475/475 全通过;新增 Bhava Chalit/Sudarshana 专项测试
- 能力注册表审计修复:65项技法 registry validate 通过;允许 complete 状态并补齐历史条目字段
- Synastry 兼容层修复:恢复 calc_synastry wrapper,保留 dashaflow MIT 适配版本标识
## v6.9.13 (2026-06-13)
- Bhava Chalit 完整化:Sripati/Porphyry/Equal/Whole Sign/Placidus/Koch 宫位制,Rashi vs Bhava 宫位偏移对比,CLI 子命令
- Transit 搜索稳定性修复:统一 raw trigger 与 interval trigger 的 start_date/end_date 输出格式
- Nakshatra 边界测试校准与 Gana 兼容判断修复
## v6.9.12 (2026-06-13)
- Shadbala精度升级:Nathonnata Bala连续化+Drik Bala Sputa Drishti精确相位
- Ashtakoot 36点合婚:8标准Kuta+7附加Kuta+Kuja Dosha检测
- 子命令扩展至35个
## v6.9.11
- Transit Swiss Ephemeris精度升级:真实过境行星位置+多参考点校验
- KP Oracle测试框架:SubLord+SubSubLord断言验证
## v6.9.10
- Chara Dasha bug fixKN Rao Method序列+时长修正
- 多Ayanamsa支持:Lahiri/Raman/Krishnamurti/Chitra Paksha切换
- KP CLI子命令:完整SubLord+SubSubLord+ABCD Significator
## v6.9.9
- 精度增强:smoke_test_runner自动化+MEVG门控+dashboard可视化
- Ayanamsa多系统支持:apply_ayanamsa()函数
## v6.9.8
- PDF报告输出:Playwright截图+南印盘SVG渲染
- report子命令升级:MD→HTML→PDF完整管线
## v6.9.7
- PyPI包发布:pip install jyotish-vedic-astrology
- Docker容器化:多阶段构建+Swiss Ephemeris预装
- CI/CD基础设施:GitHub Actions自动测试+发布
## v6.9.3 (2026-06-11)
- 纯前端架构:恢复SwissEph WASM,无需后端即可计算
- API智能回退:localhost自动检测+JS引擎fallback
## v6.9.2
- api-bridge.js v3.0:自动检测运行环境
- main.jsAPI失败自动回退JS引擎
## v6.9.1 🔥 优化方案100%
- P0.2 Yoga FN/FP收敛:benchmark 100%检测率,405条规则
- P1.4 Tajikavarshaphala.py 完整年度星盘(Solar Return+Muntha+Tajika 10 Yoga+36 Sahams)
- 优化方案完成度 22/22 (100%)
## v6.9.0 — 7项遗漏任务攻克
- transit_trigger.py:度数级触发搜索
- divisional_yoga.pyD9/D10/D12分盘Yoga检测
- benchmarks/run_all_benchmarks.py4轮统一运行
- Web验证Tab + 过境Tab
- oss_monitor.py7项目跟踪
## v6.8.1 — 案例双轨验证
- 名人案例:10个(+Einstein/Jobs/Streep/Elvis
- 普通人模式:12种人生路径
- 22案例,94.7%吻合度
## v6.8.0 — 误区纠错+案例验证
- misconceptions.py6大类10条误区规则
- case_validator.py:三层验证器
## v6.7.7 — Shadbala校准
- BPHS 1200/1200 Virupas不变量
## v6.7.5 — 测试50项+CI/CD
- 当时 50/50 测试全通过(v6.9.14 已扩展至 472 个 pytest 用例)
- GitHub Actions自动测试
## v6.7.0 — API桥接
- jyotish_api_server.py10个API端点
- api-bridge.js:前端自动降级
## v6.6.0 — 碎片回收+Web新Tab
- 4份案例文件归档
- Web Remedies+KP Tab
## v6.5.0 — 可视化报告
- 南印盘SVG渲染
- HTML报告生成
## v6.4.0 — Dasha注册表35种
- 18→35种Dasha(距PyJHora 47仅差12
## v6.3.0 — Prashna+8新Dasha
- prashna.pyKP卜卦系统
- 8种额外Dasha
## v6.2.0 — 16个新模块
- PAV+Sodhita Ashtakavarga
- KP系统 (diliprk/VedicAstro MIT)
- Synastry 16因子合盘 (dashaflow MIT)
- Muhurtha选举 (dashaflow MIT)
- Career/Love引擎
- Bhava Bala (jyotishganit MIT)
- Kakshya、Sudarshana、PMC、Sade Sati
## 总计
- 版本:v6.1.12 → v6.9.14
- 新模块:26+个
- Dasha7 → 35种
- Yoga100 → 405+条规则
- 测试:0 → 475个 pytest 用例全通过 + run_all 100项
- Web Tab12 → 16
- 技术排名:第8 → 并列第1
- 开源复用:4个MIT项目
+8
View File
@@ -0,0 +1,8 @@
# 早期实现日志
这里是 2026-06~08 的实现日志,不是运行说明,也不再追加。
- `progress.md`
- `findings.md`
- `task_plan.md`
- `CHANGELOG_v6.2_to_v6.9.md`
+245
View File
@@ -0,0 +1,245 @@
# 印度占星产品化发现记录
## 2026-06-30 VedAstro official hard-override 本轮发现
- 真正需要补的,不是再证明一次“VedAstro 能调用”,而是把 `official -> supplemental -> fallback` 这条权威链压成统一 contract,并让婚恋/事业/财富三条默认工作流都吃同一套结构。
- 本轮之前,`mcp_server.py` 的 strict workflow 已有 `source_priority``vedastro_official_snapshot`,但缺少用户可消费的:
- `official_primary_evidence`
- `local_supplemental_evidence`
- `fallback_used`
- `blocked_items`
- `conflicts`
因此容易出现“知道官方优先,但看不到究竟哪里官方、哪里本地、哪里冲突”的假闭环。
- 本轮红测很干净,失败都集中在缺少上述字段,而不是旧模块逻辑崩坏。这说明主问题确实是 contract 暴露层,而不是三条主题判定器整体不可用。
- `historical_event_backtest.py` 原先不会带出 `blocked_items` / `conflicts`,导致历史回测明明已触发 strict boundary,外层报告却看不见冲突类型。本轮已补透传。
- `vedastro_evidence_orchestrator.py` 原先虽然拿到了 official full snapshot,但没有把 `section_statuses` 和 route/theme requirement 一起往外带,后续主题裁决无法稳定区分“官方 partial”与“完全 blocked”。本轮已补 `official_section_statuses``theme_requirements`
- `high_rigor_workflow_plan_only` 原先只声明 `return_vedastro_catalog_and_source_priority_metadata`,这不足以说明最终真实返回会包含官方主证据/补充/回退/冲突 contract。本轮已改成 `return_official_primary_supplemental_fallback_conflict_contract`
- `_high_rigor_vedastro_official_summary` 原先只汇总官方 catalog / dynamic selection / report references,不会透传 strict contract 的官方主证据、补充、回退和冲突。本轮已补齐。
- `jyotish_engine.py::_build_vedastro_official_full_snapshot_payload` 原先只输出官方快照层本身,不会把 strict workflow 的 contract 信息带进 `ai_prompt_pack.evidence_snapshot`。这会导致网页/AI 平台虽然拿到官方 snapshot status,却看不到官方优先裁决的真实边界。本轮已开始补这层,至少 relationship strict contract 会被透传到 `vedastro_official_full_snapshot` 节点。
- 本轮 focused verification 已说明:
- strict workflow contract 层是稳的;
- orchestrator metadata 层是稳的;
- high-rigor API summary 层是稳的。
- 仍然存在的真实边界:
- 大而慢的长回归集合里有耗时测试,需要拆分后继续验证,不应把“慢”误说成“已全绿”;
- full-reading / prompt pack / 前端直接展示还没完全把三条主题 contract 全量消费完;
- 当前 `jyotish_engine.py` 透传 contract 时优先复用了 relationship strict evidencecareer/wealth prompt/report 面还应继续统一。
## 2026-06-25 Round 25 地毯式碎片扫描前置结论
- 已按用户要求在继续实现前进行整机/多窗口碎片扫描,并生成 `docs/research/whole_machine_fragment_sweep_round25_2026_06_25.md`
- 当前必须作为实现前置读取的规划文件仍是 `task_plan.md``findings.md``progress.md`
- 高价值 Jyotish 资料源不只当前主仓:还包括 `.workbuddy/skills/jyotish-vedic-astrology` 旧 skill 副本、`Documents/星轨talk/engines-repo/jyotish``Documents/Codex/2026-06-20/.../engines-repo/jyotish`、Obsidian Jyotish 研究笔记、Downloads 中的 `印度占星.pdf/private_chart_reference.pdf/Kimi_Agent_高维印度占星师.zip/jyotish_training.agent.final.docx`、以及当前 repo 内 `references/open_source_sources``benchmarks/jyotish`
- 隐私边界:Downloads/Obsidian/私人 PDF/完整解盘报告仅作为需求和差距发现来源,默认不提交原文、不复制私人出生资料、不上传完整报告。
- 远端状态:HTTPS `git ls-remote` 可达,`origin/codex/release-hygiene-ci` 远端仍停在 `6338cf5`;本地 `bac3748` docs commit 因 SSH 22 超时尚未确认推送成功。后续需使用 SSH-443 或其他可达方式同步。
- Round 25 副手任务已发布,扫描时已看到部分 `antigravity_round25_*` 报告开始生成,但未满 18+ 前不能视为完成。
- Ashtakoot 结论边界:Round 24 “全 0/瞎编”属于需纠正的过强说法;当前 `scripts/ashtakoot.py` 有非零本地规则,但外部 oracle 仍 0/5,不能声称与 JHora/AstroSage/VedAstro 完全一致。
## 2026-06-28 全仓工作流遗漏扫描结论
- 当前排除 venv/build/dist/cache 后仍有约 1528 个文件;主风险区是 `docs/``references/``scripts/``tests/``jyotish-app/``scratch/`
- `python3 scripts/audit_fragments.py --strict` 当前返回 `valid: true``problem_count: 0`,注册表 89 技法均有引擎/API/前端/测试/脚本中的至少一种产品表面;这说明“registry 声称但完全无入口”的大类问题暂未发现。
- 扫描发现真实遗漏:Functional Benefic/Malefic 后端和 MCP 已接入,但前端 `Technique Audit Table`/Skill Map 一度缺少可见审计行;已通过 `tests/test_frontend_productization.py::test_skill_map_surfaces_functional_benefic_malefic_audit_row` 守门。
- `audit_fragments` 仍标记 3 个脚本候选碎片:`oracle_functional_benefics.py``patch_api_tz.py``patch_engine_tz.py`。其中 `oracle_functional_benefics.py` 是功能性吉凶 CLI 包装器,应决定是否纳入 registry/quality gate`patch_api_tz.py``patch_engine_tz.py` 是会改源码的一次性补丁脚本,不应作为产品工作流留在 `scripts/` 默认面。
- 当前 Git 未跟踪残留 11 个:个人/临时输出 `full_chart_data.json``test_dasha.json``test_output.json``scratch_extract.py``scratch_mcp_eval.py`;一次性补丁 `scripts/patch_api_tz.py``scripts/patch_engine_tz.py`;个人同步工具 `scripts/sync_to_workbuddy.sh`;测试候选 `tests/test_dasha_raman_truth.py`;测试/研究 artifact `tests/verify-results-v6.1.json``tests/印度占星实战案例综合验证报告-v6.1-2026-05-03.md`
- `docs/research/ACTIVE_FRONTS.md` 当前仍列出未闭合项:Vimsopaka semantic mapping for `NEECHA_BHANGA / GREAT_FRIEND / GREAT_ENEMY`,以及 functional role 的 Technique Audit Table rendering 跟进。
- `docs/research/vedastro_parity_matrix_latest.md` 当前 13 行中 `partial=8``covered=4``missing=1`。P0 未闭合集中在 Tajika Annual、Ayanamsa parity、Report Rendering、MCP/API VedAstro live adapter smoke、Ashtakavarga/Shadbala parity、EventsAtRange/Life Event GraphNumerology/Non-Jyotish Tools 为 P2 adjacent missing,不属于 Jyotish 主工作流。
- `docs/research/vedastro_fast_path_checklist_latest.md` 现已把 VedAstro 接入进一步落成 6 条执行车道:`official_mcp``official_python_bridge``rest_adapter``local_native_preferred``hybrid_router``external_evidence_only`。当前官方 live catalog 快照为 `46` 个 tag、`2258` 条 methods/events;高价值默认路由已明确:`MCP/API Surface -> official_mcp``Shadbala/Ashtakavarga/Tajika -> official_python_bridge``EventsAtRange / Birth Time ML -> rest_adapter``D1-D60/Jaimini/Synastry/Prashna -> local_native_preferred`
- 官方公共 VedAstro MCP 已确认可直连:`https://mcp.vedastro.org/api/mcp/public``initialize``tools/list` 返回 200,公开工具面至少包含 `get_current_transits``get_dasa_at_time``find_best_times_for_task``get_horoscope_predictions``get_match_report``get_horary_prediction` 等;已补本仓薄桥 `scripts/vedastro_official_mcp_bridge.py`,并保持“只做 reachability/tool discovery,不直接改本地 adjudicator score/labels”的边界。与此同时,官方 Python bridge 已确认至少能稳定打通 `GetAllEventDataGroupedByTag``PlanetNirayanaLongitude``DasaAtTime` 三条高价值方法层。
- `event_judgment_career.md` 之前是明确缺口;现已补进主仓并挂回 `SKILL.md``quick-reference-guide.md`。因此 career 线当前剩余更偏向裁决细化与报告层,而不是“没有专用骨架”。
- 验证命令:`python3 scripts/run_quality_gate.py --profile quick --skip-frontend-runtime` 通过;`npm run build` 通过;`python3 -m pytest tests/ -q` 通过;`git diff --check` 通过。
- 后续收口结论:`oracle_functional_benefics.py` 已通过 CLI JSON 合同测试进入正式测试表面;`patch_api_tz.py``patch_engine_tz.py` 与个人 scratch/output 已归入 ignored `scratch/local`v6.1 婚恋验证资产已转入 `docs/benchmark/legacy-marriage-v6.1/`Raman Dasha 草稿保留为 benchmark draft,不再伪装成 pytest。
- 新发现的真实遗漏:relationship strict bridge 原先只识别字符串 `"BadConstellations": "good"`,不识别 nested dict 形态,也不读取 `exceptions` mitigation 文本;已补 `exception_mitigated_match` 与 nested Kuta 归一化,避免 Synastry/Ashtakoot 资产被浅层解析吞掉。
## 开源与本地基线
- `references/open-source-jyotish-scan-2026.md` 已记录可直接复用/对标项目:dashaflow、jyotishganit、panchanga_api、jaimini-tropical、VedicAstro、KPAstroDashboard、vedic_astro_npm、PyJHora、VedAstro、xalen-ephemeris。
- 本轮 GitHub 搜索 `panchanga vedic astrology` 命中 VedAstro/VedAstro、VedAstro/VedAstro.Python、kunjara/jyotish、bidyashish/vedicpanchanga.com、degen0root/panchanga_api、asitsa-dotcom/jyotidarshan、vedic-astrology-starter-kit 等。
- 产品层结论:同品类 Panchanga 不是只给 Tithi/Nakshatra,至少应有日历范围、节日/vrata 标记、吉凶时段、活动筛选、结构化导出与可检索条件。
- 许可证策略:MIT/Apache 可直接复用;AGPL/GPL 仅作行为基准,不能复制代码。
## Panchanga 当前差距
- 当前已有:range API、月历、activity filter、Rahu Kala/Yamaganda/Gulika、Choghadiya、Hora、end times、基础 Ekadashi/Pradosham/Purnima/Amavasya tags、CSV/ICS。
- 仍缺:更丰富的 vrata/festival candidate 标签、按条件检索、导出中保留 condition tags、用户能快速找“适合商业/旅行/修行/避免新开始”的日期。
## 当前实现策略
- 先在 `scripts/muhurta.py` 增加保守规则:基于已有 tithi/nakshatra/vara 数据生成可解释标签。
- 对需要 lunar masa 或太阳入宫才能精确判断的节日,只标记为 candidate,并在说明中提示需要月份/太阳过境确认。
- 前端只增加轻量条件筛选,不改核心 API 数据结构,避免破坏已有工作流。
## Panchanga 本轮结论
- 已实现:Ekadashi/Pradosham/Purnima/Amavasya 之外,新增 Chaturthi、Shashthi、Ashtami、Navami、Akshaya Tritiya candidate、Shivaratri candidate、Pushya/Guru Pushya/Ravi Pushya、Rohini 等保守标签。
- 已实现:`condition_tags` 支持 `has_vrata``festival_candidate``spiritual_practice``auspicious_activity``avoid_new_start``good_choghadiya`、selected activity good/avoid。
- 产品判断:下一个工作区瓶颈不是算法,而是案例管理。保存星盘、配对、问事已经存在,但缺少多人/家庭分组、关系维度和更强过滤。
## 案例工作区本轮结论
- 2026-06-22 网络检索 `vedic astrology kundli matching app` 命中 JyotiDarshan、VedicAstrologyAndroid、kundali、MyRashifal、CosmicBond 等,产品信号仍然是 Kundli profile + Panchang + matching + reports。
- 当前项目已实现统一案例工作区:星盘、配对、问事都能进入同一列表,支持分组、关系类型、标签、搜索、批量选择、导出和删除。
- 下一个高价值缺口是关系报告模板:同品类 matching workflow 不应只显示 36 分,还要给“关系主题、风险、D9/Kuja/Dasha 证据、行动建议、边界说明”的报告结构。
## 关系工作区本轮结论
- 2026-06-22 网络检索 `ashtakoot kundli matching``vedic astrology compatibility matching``jyotish matchmaking python`:直接可复用且许可证清楚的合盘内核仍以本地已镜像的 `dashaflow` MIT 代码最贴合;若干新仓库无许可证或只是产品壳,不能直接复制。
- 已实现关系报告模板:把 Ashtakoot 总分/分项、D9 平均质量、Kuja Dosha 平衡、Dasha 同步、强弱 Kuta、风险与下一步建议统一成 `relationshipReport` / `relationship_report` 数据结构。
- 已实现 bi-wheel/composite-style 比较视图:完整出生盘合盘后展示上升/月亮/金星/火星轴线、行星 overlay 宫位、星座关系 tone,以及 Sun/Moon/Venus/Mars midpoint。
- 已实现 `spouse_status_yoga.py` 折叠:`/api/relationship` 返回 `spouse_status_yoga` 与 fragment source;完整合盘上下文生成本人/对方 spouse-status 快照,关系报告、保存配对复盘和 HTML 报告都会展示配偶/婚后成长证据。
- 已实现关系报告打印 polish:HTML 报告中的合盘段落升级为 `relationship-deliverable`,包含结论 hero、证据卡、双人轴线、overlay 表、midpoint、spouse-status、行动列表和边界说明,打印时避免关键卡片拆页。
- 已实现可编辑关系元数据:统一案例工作区可编辑 chart/pair/prashna 的标题、分组、关系类型和标签,保存后刷新列表并保留 JSON 导入/导出形状。
- 2026-06-23 网络/本地扫描报告与 PDF 项目:`vedic-astro-skills``scripts/report_builder.py` 是最贴合且许可证清晰的本地可复用代码;GitHub 命中的 report/PDF 项目多为无许可证、API SDK、产品壳或 notebook,不适合直接复制为核心管线。
- 已实现后端 PDF 管线:新增 `/api/report_artifact`,限制 HTML 大小、阻断 script/iframe/object/embed/on* 事件属性与 javascript: URL,复用 `report_builder._html_to_pdf` 生成 PDFPlaywright 不可用时返回后端生成 HTML 作为降级工件。
- 已实现前端 PDF 导出:导出菜单新增“导出 PDF 报告”,`exportPDFReport` 将现有单文件 HTML 报告送往后端,下载 `pdf_base64`;若后端 PDF 不可用则下载 `html_base64`
- 已实现更深关系时机/UL-DK 折叠:完整合盘会从本地 `computeKaraka`/`computeArudha` 和当前 Dasha 中提取 7星制 DK、8星制 DK、UL、7宫主与 Venus/Jupiter/Moon/Mars 触发,把它们折叠进关系报告证据和可读卡片。
- 碎片审计补充:本轮发现前端 UL/DK 函数已存在但未完全闭合到导出与测试;已补 `/api/relationship.relationship_timing``uldk-print-grid` HTML/PDF 导出和产品化断言,后续继续优先用 `rg` 排查半接入函数。
- 已实现导出体验 polishPDF/HTML/JSON/SVG/PNG 导出期间锁定菜单,显示 `aria-live` 状态;PDF 后端渲染不可用时保守下载 HTML fallback,并明确提示用户。
- 已实现 Panchanga 组合条件筛选:用户可同时勾选 vrata/节日候选/修行/活动适配/避免新开始/吉利 Choghadiya,结果按 AND 语义过滤,并展示每个条件的保守说明,避免把候选节日误命名为确定节日。
- 已实现 Panchanga search/details 后端字段:`panchanga_range_report` 返回 `search_summary` 和逐日 `festival_details`,说明候选节日的 tithi/nakshatra/vara basis、confirmation note 与 query examples。
- 已实现前端组合模式与 location-aware 摘要:条件筛选新增“满足全部/满足任一”,摘要展示使用的出生地坐标/时区或手动日出日落来源,节日说明卡在移动端单列展示。
- 已实现计算设置选择器:参数中心可保存 ayanamsa/node/house/sunrise/geocoder 策略,排盘 payload、星盘对象、provenance 和导出报告都会携带;对尚未真正切换底层黄经的选项明确标注为 staged policy。
- 已实现规则/技法检索目录与 API Explorer:后端新增 `/api/technique_catalog` 和白名单 `/api/technique_example`,由 capability audit/technique registry 自动生成 65 个技法目录、domain/status/level 筛选、API endpoint 映射、示例 payload 和可运行样例;前端完整解盘的 Skill workbench 目录卡片可用当前星盘试算,后端不可用时保留原 workbench fallback。
- 产品判断:关系、Panchanga、导出、参数透明度和技法目录已具备普通用户可用基础;下一缺口是规则变体/流派 toggles 与候选碎片归档,让 Yoga/KP/Jaimini/AV 等流派差异不只藏在源码或 JSON。
- 已实现规则变体/流派 toggles 可见化:Yoga、Jaimini Karaka、KP significator、Ashtakavarga、Shadbala、Dasha reference 已进入同一 Calculation Settings 存储和导出链路;其中 Yoga/Ashtakavarga/Shadbala 的 API 结果已开始返回 `rule_variants`,前端 Skill workbench 会展示结果口径。
- 已实现候选碎片真实接入:`curse_yoga_detector.py` 已复用到 `/api/yogas`,返回 `curse_yogas`、风险等级、命中数量和边界提示;`shadbala_advanced.py` 已复用到 `/api/shadbala``advanced_layer`,补充 Kala VMDH、Yuddha Bala 与 Sputa Drishti 证据,但不覆盖主 Shadbala 排名。
- 已实现 Dasha 叙事/时间线碎片接入:`dasha_analyzer.py` 进入 `/api/dasha.vimshottari_analysis`,补充真实 Mahadasha 起点、当前 Antardasha、Moon Nakshatra/Pada`dasha_calculator_enhanced.py` 作为五级层级证据层,主周期合同不变。
- 碎片审计发现:候选队列已从 6 个降至 4 个,剩余集中在 reading/orchestrator/bridge/automation 归属;这些更像工作流/代理桥接,需要决定是否属于用户端产品,不能盲目塞进前端。
- 已实现主题化报告编排接入:新增 `thematic_report_orchestrator` registry 条目和 `/api/thematic_report`,将 `report_orchestrator.py` 的五主题叙事、冲突裁决、证据链和 Dasha 时间锚点变成可调用 API;前端 Skill workbench/API Explorer 用 `computeThematicReport` 渲染主题卡。
- 碎片审计结论更新:`reading_orchestrator.py``report_orchestrator.py``orchestrator_bridge.py` 已有 registry/API/frontend/test 引用链,不再是漂浮碎片;`mevg_automation.py` 作为只读门控状态进入 `/api/case_validation.mevg_gate``hermes_bridge.py` 判定为外部个人 agent/WorkBuddy 学习桥,会写用户 home 目录,不纳入占星网页/app 默认产品面。
- 已实现主题报告真实证据链:`/api/thematic_report` 现在区分 `custom_evidence``derived_chart_evidence``sample_evidence`。传入出生数据或星盘数据时,会 best-effort 调用 chart、dasha、yogas、shadbala、ashtakavarga、relationship、career、Jaimini 模块,生成五主题证据;单个模块失败只进入 warning,不让整份报告不可用。
- 产品判断:这一步解决了“主题报告只有表面叙事/样例证据”的关键问题。下一缺口转向方法透明度:Technique Directory/API Explorer 应给用户可复制 cURL/OpenAPI 片段、方法边界和算法来源说明。
- 已实现 Technique Directory/API Explorer 方法透明度:后端 catalog 返回 `api_docs``method_docs`、cURL、最小 OpenAPI operation 和 endpoint notes;前端卡片显示方法摘要/边界/API doc key,试算结果显示 `cURL / OpenAPI` 折叠区。
- 产品判断:技法目录已从“能搜索/能试算”升级为“能复用 API/能解释接口边界”。下一类缺口属于平台与信任层:PWA/桌面包装、隐私/数据位置、术语模式、星历抽象。
- 已实现 PWA/信任中心 MVPmanifest、service worker shell cache、SVG icon、install prompt 状态和 Trust Center 已进入用户端;本地资料可导出,清空本地资料保留二次确认,不自动执行破坏性动作。
- 产品判断:平台层已从普通 Vite 页面升级为可安装/可说明数据边界的 local-first 工具;下一缺口是术语模式与星历抽象,让初学者/专业用户和未来替换 ephemeris backend 都有明确入口。
- 已实现术语模式:入门/专业/梵文优先已进入 Trust Center、tooltip、provenance、JSON/HTML 导出;这补齐了同品类 Jyotish 软件常见的 Sanskrit/英文/本地语言对照体验。
- 产品判断:术语层已不再只是点击 glossary,而是可配置的解释口径。下一缺口继续集中在平台化交付:PWA 之后的 Pake/Tauri 桌面包装说明,以及 SwissEph/VedAstro/Xalen 等星历底座替换可行性。
- 2026-06-23 首次使用对标补充:Hora Prakash 的无注册/PWA/隐私本地化、VedAstro 的 API/skill/chat/API doc surface、Maitreya/HinduVahini 类桌面/功能软件都说明,同品类产品不能只堆计算标签,首屏必须让用户知道“如何开始、环境是否可用、无 API 时能做什么、已有星盘如何导入”。
- 已实现首次使用与空状态路径:首屏提供运行健康检查、示例盘填入、已有星盘导入聚焦;本地星盘库空状态从静态说明改为引导用户用示例盘/导入/手动输入生成第一张盘。
- 产品判断:这一步补的是普通用户的第一分钟体验,降低“页面功能很多但不知道从哪里开始”的风险。下一缺口不再是静态入口,而是真机/浏览器首跑验证:桌面和移动端是否无重叠、示例盘能否生成、健康检查失败文案是否能指导启动本地 API。
- 官方安全口径补充:OpenAI API key 属于 secret,不应出现在浏览器/app 客户端代码、localStorage、URL 参数或公开仓库;Jyotish AI 聊天应经由服务端 `/api/chat` 或本地后端代理读取服务端 `OPENAI_API_KEY`
- 已实现 AI/导出信任层 polish:AI 聊天默认回复改为服务端密钥处理说明;PDF 导出失败或后端 PDF 渲染不可用时保守导出 HTML,并提示 Trust Center 健康检查与 Python API 启动命令。
- 产品判断:首次使用路径之后,普通用户的下一类卡点是“PDF/AI 点击失败但不知道为什么”。现在错误恢复已经从技术异常变成可行动路径;下一缺口可以转向星历抽象可行性,把 SwissEph/VedAstro/Xalen 的长期替换边界从文档推进到可测试探针。
- 已实现星历抽象可行性探针:`scripts/ephemeris_backend_probe.py` 会输出 `candidate_backends``license_posture``replacement_readiness`,把 `swisseph_python` 标为 primary`swisseph_wasm` 标为 fallback`xalen_ephemeris` 标为 spike_only`vedastro` 标为 product_api_benchmark`pyjhora_benchmark` 标为 benchmark_only。
- 许可证与替换结论:当前不能把 xalen/VedAstro/PyJHora 说成已替换核心计算。SwissEph 仍是生产黄经来源;xalen 需要本地 adapter 和 parity matrixVedAstro 适合作为 MIT 产品/API 对标;PyJHora 因 AGPL 只做行为基准或 oracle,不复制实现。
- 产品判断:下一步不应继续堆 UI 标签,而应建立后端 adapter contract 与 longitude parity matrix,要求 Sun/Moon/Asc/Rahu/Ketu 和 Panchanga 边界案例在可接受 delta 内,才允许非 SwissEph 后端进入运行时选择。
- 已实现后端 adapter contract`scripts/ephemeris_adapter_contract.py` 定义 `EphemerisAdapterContract` 与三组 `PARITY_CASES`,复用当前生产 `swisseph_python` 计算 Sun/Moon/Asc/Rahu/Ketu baseline,并保留 `candidate_backend` 插槽。
- 接入标准:任何后续 SwissEph WASM、xalen 或 VedAstro 服务边界都必须输出相同字段,包括 `ayanamsa_value`、sidereal longitude、speed、`retrograde`、backend metadata,并通过 `longitude_delta_arcsec` 阈值后才能进入运行时设置。
- 候选 adapter gate 结论:本地没有 xalen 可执行来源;SwissEph WASM 资产可用但包许可证分别为 `AGPL-3.0``GPL-3.0-or-later`,因此只能作为本地 fallback/实验路径,不能无审查地进入商业桌面/PWA 分发叙事。
- 真实浏览器点击级 smoke 结论:静态产品化断言和 curl runtime smoke 仍不足以发现用户点击路径问题;新增 `tests/run_frontend_click_smoke.py` 后,真实覆盖了示例盘生成、AI chat、HTML 导出、Transit、合盘、问事,并发现 HTML 报告导出实际会因 `sub_lord is not defined` 失败。
- HTML 导出 Bug 根因:`jyotish-app/jyotish-advanced.js``computeNakshatraAdvanced` 定义 `subLord`,但返回对象误用 `sub_lord,` 简写;真实用户生成星盘后导出 HTML 会在构建 extras 时抛错。已修为 `sub_lord: subLord`,并增加测试守门。
- 产品判断:当前桌面在线 happy path 已有真实浏览器守门;下一缺口是移动端/离线/PWA 安装、无 API 启动失败、PDF fallback 与浮层遮挡等更接近普通用户环境的交互守门。
- 移动端点击守门结论:390px 视口下 AI FAB 原本会被星盘 SVG/行星表截获,且 chart/table 容器会把页面撑到 528px。真实用户在手机上可能无法打开 AI 面板。已将移动 FAB 放到左侧安全区、AI panel 锁定 `100vw`,并收紧 chart/table 容器宽度。
- 离线/无 API 结论:无 API 时前端可以通过浏览器 fallback 生成基础星盘,健康检查会显示 `npm run web``python3 scripts/jyotish_api_server.py` 恢复路径;console 中的 `ERR_CONNECTION_REFUSED` 是预期 API 探测噪声,click smoke 已分入 `expected_offline_console_errors`
- 桌面包装探测结论:本机 Rust/Node 基础可用,但未安装 `pake`/`tauri` CLI`xcodebuild` 只有 CommandLineTools,不能视为 macOS signing/notarization ready。Pake 上游 GPL-3.0Tauri 仍需 sidecar 生命周期、权限、签名/公证策略;当前不能声称桌面包已可发布。
- PDF fallback 点击结论:真实用户点击 PDF 导出时,如果后端 PDF 渲染不可用,前端必须明确“已改为导出 HTML 报告”,并提供 Trust Center 与本地 API 启动路径。`run_pdf_fallback_smoke` 现在把这条路径纳入浏览器守门。
- PWA 离线 shell 结论:service worker 控制后的二次 reload 可以保留首屏 shell;离线状态下 JS module/API 请求会产生 `ERR_FAILED`,这是预期离线噪声,脚本单独放入 `offline_shell_expected_console_errors`,避免把真实 JS error 混进去。
- 移动端长标签结论:Complete/Vargas/Synastry/Prashna/Transit Compare 已可在 390px 视口真实切换;下一类风险转向导入 PDF/文本星盘、保存案例库、移动端导出菜单和 Trust Center 长内容。
- 报告 artifact 契约结论:只返回 `html_base64/pdf_base64` 不足以支撑普通用户体验;后端必须显式返回 `artifact_status``primary_artifact``download_filename``download_mime``fallback_reason``user_message``next_action`,前端才能在 PDF 不可用、API 未连接或 HTML fallback 时给出一致的下载名和恢复动作。
- 验证结论:runtime smoke 现在会检查 report artifact 的状态、下载文件名和用户指引,不再停留在“有 base64 就算通过”的浅层检查。下一类高风险用户路径是导入 PDF/文本星盘、保存/重开案例库,以及移动端长内容中的导出菜单和 Trust Center。
- 导入/案例库结论:文本星盘导入、填表、生成盘、保存本地星盘、重开保存星盘、工作区保存与案例库导出已经进入真实浏览器守门;这类路径不能只看按钮存在,因为之前 smoke 本身先后暴露了隐藏 logo 和未切换 provenance tab 两个真实选择器/可见性问题。
- 下一风险:移动端已经验证过长标签切换,但还没有专门验证导出菜单、Trust Center 长面板、健康检查、本地资料导出/安装说明在 390px 视口下是否可读、可点击、无横向溢出。
- 移动 Trust Center 结论:健康检查 API 成功不等于用户能看到成功;原实现会在 `renderAll()` 后把“健康检查通过”覆盖回 PWA 默认说明。状态文案必须由 runtime health 派生,才能在移动端和普通用户长面板中稳定可见。
- 移动工作区布局结论:案例库内部控件在 390px 视口下会因 `case-workspace-counts``case-workspace-controls` 等块宽度叠加父级 padding 产生右侧溢出。移动端不仅要让主 grid 单列,也要给嵌套工作区控件 `min-width:0` 和单列/最大宽度约束。
- 质量门结论:长链路浏览器 smoke 必须有命令级超时和进程快照,否则失败时容易留下 API/Vite 子进程并让用户不知道卡在哪里。`--timeout``--frontend-click-timeout` 已成为默认质量门的一部分。
- 文件导入结论:粘贴文本通过不代表文件上传也可用;真实浏览器守门需要覆盖 `set_input_files`、文本文件读取、PDF API 抽取失败和移动端上传入口触控尺寸。移动端“上传文件”低于 40px 时虽然视觉可见,但不适合普通用户触控。
- 下载稳定性结论:在长链路 `--mode all` 中仅靠 `page.on("download")` 收集文件名会有偶发遗漏;关键导出动作应使用 `page.expect_download()` 包裹点击,才能把案例库导出失败和测试竞态区分开。
- 启动路径结论:普通用户不应同时面对“npm run web / npm run dev / python API / PWA / Pake / Tauri”多套入口。当前 README 和质量门失败摘要已统一为“先网页、再本地 API、然后 Trust Center 健康检查”,并明确 PWA 只包装网页壳。
- 术语一致性结论:可复制命令属于 README/质量门摘要,应用内恢复文案属于普通用户语言。界面只给“普通用户启动路径 / 网页服务 / 本地 API 服务 / PWA 安装壳 / Trust Center”,避免把用户推回开发者命令细节;真实浏览器 mobile-trust smoke 已验证新 Trust Center 成功文案可见。
- 下一风险:质量门已经覆盖真实浏览器全链路,但默认 full click smoke 成本较高。需要把 fast/default/release 三层验证写清楚,确保主动迭代时不跳过核心路径,发布前仍跑 `--mode all`
- 整机初扫发现:当前项目并非唯一资料源。高相关目录包括 `<home>/.workbuddy/skills/jyotish-vedic-astrology``<home>/Projects/星轨资料恢复/17-Skills技能库/jyotish-vedic-astrology``<home>/Projects/星轨资料恢复/25-相关Skills补充/jyotish-vedic-astrology``<home>/engines-repo/jyotish``<home>/Documents/星轨talk/engines-repo/jyotish``<home>/WorkBuddy/2026-06-09-20-03-34/jyotish-fragments``<home>/文件仓库/印度占星文章``<home>/文件仓库/中外🔮占星/国外占星/印度占星书`
- 整机初扫还发现多份可能包含遗漏结论的历史报告:`.workbuddy/brain/*/印度占星Skill全面审计与能力评估报告-v3.0.md``.workbuddy/brain/*/jyotish_improvement_plan.md``WorkBuddy/2026-06-10-21-30-47/印度占星Skill_真实Bug与遗漏清单_v6.1.11.md``WorkBuddy/2026-06-10-21-30-47/开源印度占星项目搜索报告.md``WorkBuddy/2026-06-12-15-22-12/vedic-astrology-open-source-research.md`
- 云端探测结论:SSH `git ls-remote` 因 22 端口连接超时失败;HTTPS `git ls-remote https://github.com/732642856/yinduzhanxing.git` 成功,远端 refs 包含 `refs/heads/main``refs/heads/codex/release-hygiene-ci`、tags `v6.0.47``v6.0.52`。GitHub REST API 匿名访问被 rate limit,因此云端字符级审计应使用 HTTPS git mirror。
- 历史遗漏报告共识:旧报告反复指出的非表层缺口不是 UI,而是专业技法深度和 benchmarkAshtakavarga PAV/Prashtara/Kakshya/Yoga Pinda、Bhava Bala、Navatara/Tara Bala、Kantaka Shani、Pushkar Navamsa、Ishta/Kashta Phala、36 Sahams、Tajika 强度体系、KP Horary/Prashna 裁决、Muhurta 求解器、Vimshottari 多起算点、精微分盘 D24/D30/D60 深度解读。
- 许可证边界:历史报告中 `VedicAstro``dashaflow``vedic-astro-skills``happyalu/panchang-muhurt` 标记为 MIT 或可复用;`PyJHora``vedic-calc` 标记为 AGPL/GPL 参考/benchmark-only,不能直接复制进当前产品。
- 覆盖矩阵结论:`scripts/sade_sati.py``scripts/kakshya.py``scripts/bhava_bala.py``scripts/prashna.py``scripts/varshaphala.py` 说明旧缺口里很多已进入后端/API;但 `Prashtara``Yoga Pinda``Panchavargiya``Sayanadi` 仍没有 registry/API/frontend 闭环。
- 云端/本地差异结论:GitHub `codex/release-hygiene-ci` 云端快照只有 720 文件,本地工作区 1525 文件且包含大量 build/cache 产物和未提交开发文件。后续判断“是否遗漏”必须以当前工作区 + 云端 mirror + `.workbuddy/skills/jyotish-vedic-astrology` 三方对照,不能只看当前目录。
- 下一实现判断:Ashtakavarga Prashtara/Yoga Pinda 是优先级最高的真实遗漏,因为当前项目已具备校准后的 BAV/SAV 与 Kakshya,但缺少专业软件常见的源贡献展开和 Yoga Pinda 层;本地 `dashaflow/ashtakavarga.py` 是最贴近可复用参考。
- Ashtakavarga 复核结论:当前代码并非完全没有 Prashtara,`calc_prastara_av()` 已存在;真实缺口是 PAV 形状、Yoga Pinda、API summary、Skill workbench 和 registry 没有形成一等产品闭环,导致用户看不到专业贡献追溯。
- Ashtakavarga 本轮修复:新增 `calc_yoga_pinda()`,让 Yoga/Shodhya Pinda 可被 API 与测试直接调用;`/api/ashtakavarga` 返回 `yoga_pinda_summary`;前端 Skill workbench 新增 Yoga Pinda 卡片与校验标签;registry 新增 `ashtakavarga_yoga_pinda` 条目并更新主 Ashtakavarga covered 状态。
- Ashtakavarga 剩余边界:当前 Yoga Pinda 复用项目既有 v2.1 Shodhya Pinda 权重口径,并已明示 validation note;若后续要对齐更严格传统流派,需要引入外部书例/benchmark,而不是把当前权重伪装成全部流派通用标准。
- 下一高价值遗漏:Sripathi/Placidus 房宫算法切换。当前设置层已有 house policy 叙事,但用户还不能验证切换后房宫、Bhava Chalit 与报告证据如何变化;应先地毯式查本地 `bhava_chalit`、历史碎片和开源 references,再补 parity tests/API provenance/frontend selector。
- Antigravity/VedAstro 复核结论:Antigravity 临时 SDK 报告中 D1/D9 对齐结果有效,可增强对当前基础排盘和 Navamsa 映射的信心;但报告未成功取得 VedAstro Shadbala/Dasha,因此不能用它来判定当前 Shadbala 或 Vimshottari 实现错误。
- 过期结论纠正:当前项目已经支持 `--second`,前端/API/wrapper 也能保留秒级时间;Shadbala 主输出已改为 v6.9.15 absolute Rupas,用户样本总量约 55.1437、Sun 约 9.7035,不再是旧报告中的 1.7-3.5 归一化档。
- Dasha 差异边界:用户 PDF 目标起点 `1986-05-18` 与当前引擎 `1986-05-23T22:45:10` 仍相差约 5.948032 天;`scripts/dasha_reference_audit.py` 显示秒级输入和年长常数不能单独解释,应继续比较外部 oracle 的 Moon sidereal longitude、ayanamsa 与 Vimshottari 起算口径,不能为单份 PDF 直接调生产常数。
- 分盘回归 Bug`scripts/divisional_charts_extended.py` 的 D81/D108/D144、custom、composite varga 曾可能生成超过 360 度的中间黄经并导致 sign index 越界;已统一用 `_position_parts()` 归一化,并增加回归测试。
- Level 3 外部解盘审计:附件解盘的 D1/D9 和 Saturn/Ketu 大运方向可参考,但存在 Sun Ashwini Pada、Venus combustion、retrograde、Ashtakavarga SAV 与 True/Mean Node 口径混用等可计算错误,已记录到 `docs/research/level3_reading_audit_2026_06_25.md`
- 尊严状态 Bug:外部解盘触发了真实产品问题,`scripts/jyotish_engine.py` 与前端 fallback 原本只把 Exalted/Debilitated/Own Sign 标出来,导致 Jupiter in Virgo 被显示成“中性”。已按行星对星座主星的态度输出 `入友/入敌`,并补 CLI/前端测试。
- Skill 同步结论:网页/app 主线已修复的 D81/D108/D144 分盘归一化和 D1 友敌尊严标签需要同步到 skill 分发层,否则不同窗口/自动化可能继续使用旧副本。本轮已同步 `skills/jyotish-engine-modules/scripts/divisional_charts_extended.py`,并修正根 `SKILL.md` 中“全球第1”“1200/1200 Virupas校准”等过强/过期口径,新增测试防止再次漂移。
- 公开演示环境结论:静态 demo/PWA 不能伪装成完整本地 API 应用。首屏和 Trust Center 现已展示“静态演示模式”能力边界:可直接体验出生资料输入、基础 D1/D9、术语模式和 Trust CenterPDF/HTML 报告、高级技法、真实案例复验、AI 解读代理需要本地 API。`deployment_preflight.py` 输出 `static_demo_boundary_visible`,发布前会阻断边界文案缺失。
- Dasha/Shadbala oracle 边界结论:新增合并审计后,当前可重复报告显示 Dasha 用户 PDF 起点差异仍为 `1986-05-23T22:45:10` vs `1986-05-18`、所需 Moon 偏移约 `0.01206283°`VedAstro SDK 黄经样本已进入 `longitude_cases`,本地 Moon 与 VedAstro Moon 差约 `26.2254` 角秒、全 9 项均在 120 角秒阈值内,因此基础落座/D9 可信度更高,但不足以解释 Dasha 起点差异;Shadbala 输出已是 v6.9.15 absolute Rupas,但外部目标仍缺六分量拆分,因此 `production_tuning_recommended=false`,不能把单份 PDF 或全局缩放当成校准完成。
- Antigravity 并行修改审计:其写入的 Shadbala `component_targets` 是本地结构样本,不是 JHora/PyJHora 外部权威样本;`scripts/oracle_boundary_audit.py` 已将这类目标标为 `component_targets_sample_only` / `sample_only_not_external_oracle`,防止误宣称绝对值校准完成。
- AI Native 差异化承载:`scripts/jyotish_engine.py full-reading` 已输出 `ai_prompt_pack`,将核心星盘、Dasha、Shadbala、SAV、D9、错误/边界整理成 RAG/Prompt 上下文。该层用于网页/app 和 skill 的大模型解读,不替代底层计算,也不硬编码断语。
- Antigravity 副手定位:官方 Antigravity artifacts/implementation plan 适合做可审查副任务;结合公开安全事件与用户本地密钥风险,本项目把它限制为 oracle 样本采集、网页/app 审计、skill 同步审计和浏览器用户流验证,不让它直接重写核心引擎或执行破坏性命令。
- 新发现的下一修复点:`scripts/transit_trigger.py``scripts/solar_return.py``scripts/muhurta.py``scripts/cmd_muhurta.py` 中 sidereal mode 设置被注释后依赖进程全局状态;下一步应引入统一 ayanamsa helper,默认 Lahiri,并允许调用方显式覆盖。
- Ayanamsa 全局状态根因确认:Swiss Ephemeris 的 sidereal mode 是进程全局配置,`FLG_SIDEREAL` 不会自动指定 Lahiri。红灯测试显示在全局切到 Raman 后,Transit/Muhurta/Solar Return 默认输出会漂移约 `1.446°`。已通过 `scripts/ayanamsa_utils.py` 统一在每次 sidereal helper 调用前设置口径,默认 Lahiri,并允许调用方显式覆盖。
- Yoga 准确率脚本修正:`scripts/validate_yoga_accuracy.py` 原先在 `FLG_SIDEREAL` 后又手动减 ayanamsa,存在双重扣减风险;现改为显式 Lahiri sidereal flags,并直接使用 SwissEph 返回的恒星黄经,避免准确率报告被验证脚本自身污染。
- 前端联调结论:`/api/chart` 是普通用户最常走路径,必须直接返回 Ayanamsa 元数据与 `ai_prompt_pack`,不能只让 CLI `full-reading` 拥有 AI Native 上下文。当前已补 `/api/chart.ai_prompt_pack`、完整解盘面板和 AI Chat 上下文优先级。
- 产品头像结论:原图 1046×1024、约 1.4MB,作为页头头像和 PWA 图标过大;已压缩到 512px、约 417KB,并把页头显示尺寸收敛到 28px。
- Antigravity Round 2 边界:副手适合继续做全球产品黑盒复验和 oracle 样本可行性,不适合直接改核心计算或读取密钥;任务单已把输出限定在 `docs/research`,避免与 Codex 当前实现冲突。
- Antigravity Round 3 派工结论:副手下一轮不再重复旧的“前端未接 Prompt Pack”静态结论,而是以黑盒复验为准,检查 Network payload、API response、完整解盘面板、AI Chat 上下文、头像资源体积和普通用户可用路径;仍禁止读取密钥或修改核心代码。
- Antigravity Round 4 派工结论:副手要从“缺 oracle”的抽象结论进入“每个 template case 缺什么、从哪里采、何时能升 external_verified”的执行层;当前 5 个模板全部保持 `template_only`,审计脚本会输出缺失字段并保持 `production_tuning_recommended=false`
- Dasha/Shadbala 采集队列结论:`scripts/oracle_collection_queue.py` 当前从 5 个 template case 生成 5 个 `ready_for_collection` 任务,但 `ready_for_calibration` 仍为 0、`production_tuning_allowed=false`。这把下一步从“讨论准确率差距”推进到“逐字段采 Moon longitude、Vimshottari boundary、Shadbala 六分量外部真值”,同时继续阻止用本地输出或模板值调生产常数。
- 质量门结论:release profile 不应只报告 `production_tuning_recommended=false`,还要给维护者/副手可执行的采集清单;因此 `ORACLE_COLLECTION_QUEUE_CMD` 已跟随 oracle boundary audit 运行,并被 README/静态测试锁定。
- Evidence packet 结论:仅有采集 task 不够,必须给每条任务一个可填写证据包,要求 `tool_name``source_artifact``ayanamsa``node_mode``timezone` 等元数据,并把 target placeholders 与 missing fields 逐项绑定。这样后续录入时可以审计“这个值来自哪里”,而不是只看数字。
- Shadbala 防线结论:凡是缺 `target.shadbala_components` 的任务,证据包都会标记 `reject_global_shadbala_scaling`,防止为了贴合一个总分而引入粗暴倍乘系数。
- Evidence validator 结论:采集队列还需要第二道门来验证“已填写的证据包能否晋级”。`scripts/oracle_evidence_validator.py` 当前会拒绝空 metadata、缺 `source_artifact`、未填 target placeholders、非 `external_verified` 状态,以及含 `Local Engine`/`this-repo`/`scripts/jyotish_engine.py` 等本仓库来源的 artifact。
- 质量门覆盖结论:只在 release profile 运行 oracle 队列不足以支撑日常主动迭代;`CORE_PYTEST_TARGETS` 已纳入 collection queue 和 evidence validator 测试,使 quick gate 也能发现采集队列/证据包漂移。
- Round 7 后续审计发现:如果未来人工把 oracle JSON 某条 case 升级为 `external_verified`,旧队列生成器会重新生成 draft evidence packet,导致“已填外部真值仍过不了 validator”。已修为保留 `evidence_packet.status/metadata`,并用 `target_fields` 固定目标字段集合。
- 对标差距结论:相对 VedAstro/PyJHora/JHora,当前最实质缺口不是基础 D1/D9,而是 Dasha/Shadbala 外部真值样本库、合婚/Koota/Panchanga 的 API/产品深度、以及普通用户一键使用/校准状态可视化。PyJHora 因 AGPL 只能黑盒参照,JHora 因闭源只能截图级人工采集。
- 2026-06-26 Round 28/29 接力结论:Round 28 的 30 份研究报告已回到主仓待归档区,覆盖全球开源排名、PyJHora/JHora 广度差距、MIT 可复制资产、Dasha/Panchanga/Muhurta/Synastry/Shadbala/Jaimini/KP/Varga/Yoga 深度路线、skill 同步缺口、真新增技法最小集与 Round29 Top100;同时新增 `docs/research/antigravity_sidecar_work_order_round29_2026_06_26.md`,将副手任务继续加压到 skill 全量补齐差距、API/CLI/前端隐藏能力、整机碎片复用第二轮、云端同步白名单、外部 oracle 精度闭环与 Round30 Top120。
- 2026-06-28 真实用户全功能 QA:使用 `private birth datetime`、private birthplace近似坐标 `36.4467,-122.4194` 跑完 CLI/API/前端点击/质量门矩阵。能力注册表 89 项有效、碎片审计 37 CLI + 41 API 无未注册高价值候选、前端 `--mode all` 浏览器点击通过、quick quality gate 通过;正式报告见 `docs/research/sample_user_full_function_qa_REDACTED_YEAR_synthetic_north_china_2026_06_28.md`
- 本轮 QA 真 bug`jyotish_engine.py muhurta` CLI 因 Sun/Moon tuple 进入 `calc_tithi` 崩溃;`varga-full --divisions ... D81/D108/D144` 仍走旧 `scripts/varga.py` 而失败,尽管 `--custom 81` 可算;`/api/remedies` 对数值型 Shadbala 简写会 500,应归一化或返回 400。
- 本轮 QA 边界结论:`/api/technique_example` 用目录官方 example payload 可 200,普通出生资料直打 400 是合同误用而非后端坏;`db-stats` 返回数据库不存在,说明入口可用但本机 celebrity/validation DB 数据源缺席;外部 JHora/PyJHora/VedAstro oracle 精度仍未因此闭环。
- VedAstro 强制雷达边界:官方 Events Builder 暴露 `SearchEvents / GetEventTiming / ListEventTypes` 三个事件端点、400+ 预定义事件和 `Scan precision (hours)`API/Python surface 继续按 600+/596+ 计算节点理解。本项目不硬复刻 596 个函数,而是把 VedAstro range scan 作为 `career/relationship/finance` strict workflow 的必需外部高频 timing radar;缺失时进入 `vedastro_range_scan_missing` 和 Technique Audit blocked 行,不能再静默跳过。
- VedAstro Adapter MVP 方案 A 结论:当前已完成工程闭环而非官方实网闭环。adapter range scan 会产出可审计 provenancerequest/response SHA-256、called_at、endpoint_host、artifact_path、retry metadata、allowlist/raw/filtered event counts),`/api/vedastro/status` 与 Trust Center 能显示安全配置状态,`vedastro-live` profile 在未配置 endpoint 时受控 blocked 并通过默认 CI。只有配置 `VEDASTRO_API_ENDPOINT``VEDASTRO_ENABLE_NETWORK=1` 后,才能把状态从 `network_execution_disabled/service_endpoint_not_configured` 推进到真实 VedAstro live smoke;在此之前不得宣称官方 VedAstro 事件雷达已经实网验证。
- VedAstro 普通用户入口结论:用户侧可用的定义不是“adapter 存在”,而是“生成星盘后能点击按钮、使用当前出生资料、选择领域/日期范围、看到返回状态和边界”。本轮已把这一层落在 Trust Center `VedAstro Range Scan` 面板和 `/api/vedastro/range_scan`;未配置 endpoint 时用户看到 blocked,配置官方 endpoint 与网络开关后同一按钮会走实网调用链。
- 2026-06-29 高严谨默认入口复用结论:项目内已有可直接复用的生时校正、历史事件回测、主题推运和 VedAstro 官方证据层,不应重新造算法。关键资产包括 `scripts/birth_time_rectifier.py``jyotish-app/rectification-engine.js``scripts/historical_event_backtest.py``scripts/reading_orchestrator.py``scripts/report_orchestrator.py``scripts/orchestrator_bridge.py``scripts/vedastro_evidence_orchestrator.py``scripts/vedastro_official_capability_runner.py`。新增统一入口应做胶水层:VedAstro official snapshot/catalog first -> rectification gate -> historical event backtest -> thematic report,而不是把 641 callable 暴力全跑。
- 2026-06-29 省算力边界:`/api/high_rigor_workflow` 的 Technique Explorer 样例必须使用 `dry_run`,否则目录页会触发重型 VedAstro/full-reading 链路。真实用户提交不带 `dry_run` 时才执行完整高严谨工作流。这个设计同时满足“用户可直接用”和“不要浪费算力”。
- 2026-06-30 VedAstro 641 项轻量映射表结论:`official_full_capability_catalog` 现在为每个官方 callable 标注 `domains / execution_policy / priority`,并聚合出 `domain_routing`,覆盖 `career / marriage / wealth / rectification / timing / general` 六类。该层只做路由和审计,不把每个官方方法直接暴露给用户,也不声称已经完成深层语义断语。
- 2026-06-30 轻量映射误判修复:`Dashamamsha` 等分盘名称曾因包含 `dasha` 字符串被误归入 timing。当前已改为按方法词元识别 `Dasa/Dasha` timing 方法,真实轻扫显示 `AllPlanetDashamamshaSign` 归入 `career/marriage/wealth`,不再进入 `timing`
- 2026-06-30 VedAstro 动态能力选择器结论:系统现在不只知道 641 项目录和主题归类,还会按用户主题生成 `dynamic_selection``official_report_references`。每个主题会列出自动可用能力、需要额外资料能力、blocked 能力和 `vedastro:<theme>:<method>` 引用 ID,供网页、Skill、MCP 和 Codex prompt pack 指向同一份官方证据层。
- 2026-06-30 报告引用边界:`official_report_references` 是证据引用层,不等于每个引用都已执行成功。`execution_policy != auto``status != ok` 的能力只能作为“需要补资料/当前阻断”的报告说明,不得包装成已用于最终断语的数据。
## 2026-07-02 解释资料层调用链审计前置结论
- 用户要求在补“调用链显式接入 + 测试”前,先地毯式检查当前项目、历史工作区、技能副本、资料库、Downloads/Desktop 和云端 Git refs,确认是否因不同应用/窗口遗漏资料碎片。
- 当前主仓内已经存在截图所示“行星落十二宫”前端资料层:`jyotish-app/planet-house-details-a.js``planet-house-details-b.js``planet-house-details-c.js`;与 `.workbuddy/skills/jyotish-vedic-astrology` 旧副本 SHA256 完全一致。
- 当前主仓内已有文章级解释模板注册表:`references/interpretation_template_registry.json``scripts/validate_interpretation_templates.py --format json` 返回 `valid=true``template_count=11``problem_count=0`
- 当前主仓内已有 P1-P12 与宫位框架资料层:`references/open_source_sources/vedic-astro-skills/codex/skills/vedic-core/resources/p1_p12.md``house_framework.md`;它们包含宫主身份、凶宫主大运禁止美化、Dasha 事件模板、VRY 孤立性、SAV/BAV 交叉等严格解读规则。
- 当前主仓内已有 Raman/BPHS 层:`references/raman-house-judgment-methodology.md``references/bphs-ch48-narayana-dasha.md``references/yoga_rules.json``scripts/validate_bphs_invariants.py`;更完整书籍 PDF 位于资料库路径 `<home>/文件仓库/中外🔮占星/国外占星/印度占星书/`
- `python3 scripts/audit_capabilities.py --mode validate` 通过,显示 `technique_count=89``problem_count=0``python3 scripts/audit_fragments.py --strict` 通过,显示当前仓 `candidate_count=0``untracked_count=0`
- 云端 HTTPS refs 已确认:本地 `codex/release-hygiene-ci@767a5c6` 与远端 `refs/heads/codex/release-hygiene-ci@767a5c6` 对齐。
- 根因不是“项目没有资料”,而是现有测试多守文档/注册表存在性,没有守 `mcp_server.py::_collect_strict_evidence`、AI prompt pack 和用户可见 strict contract 必须显式携带这些资料层。下一步应只补显式调用链与测试,不重写规则体系。
## 2026-07-02 6月20日后算力消耗升高排查结论
- Codex 本地 `session_index.jsonl` 显示 2026-06-20 开始新增/更新 9 个线程,包括 `开发 flomo App 并上架 App Store``优化印度占星项目``继续优化星轨talk项目``梳理 StarCanvas 进度``梳理印度占星项目进度` 等;这不是印度占星单项目单点故障,而是多项目长线程同时启动。
- `.codex/archived_sessions` 中 2026-06-21/22 出现多个 100MB 级长会话:`019eed29...` 约 127MB、`019ee916...` 约 139MB、`019eef04...` 约 58MB。会话统计显示大量 `exec_command` / `apply_patch` / `write_stdin`,并反复产生 `compacted` 记录,说明工具输出和压缩上下文被不断带入模型请求。
- archived session 的 `token_count` 元数据按 last usage 聚合:2026-06-21 约 124.6M total tokens2026-06-22 约 556.6M2026-06-23 约 580.5M2026-06-24 约 366.3M2026-06-28 约 322.6M。最大线程 `019eed29...` 约 821.6M total tokens,其中大部分为 cached input,但仍会造成显著算力/上下文消耗。
- 直接触发 token 放大的模式是“大范围读取 + 长输出 + 长线程自动压缩”:例如同一回合并行 `sed -n` 读取 README/SKILL/index/API server/多份 reference,每个命令允许 8k-22k 输出 token;后续继续在同一线程中工作,使 cached input 和 compacted 摘要持续变大。
- 代码仓层面,2026-06-21 commit `11bdee3` 把 CI/质量门从轻量 Python 检查升级为安装 Node/npm、`npm ci`、全 pytest、quick quality gate、前端 build、Python package build;后续 `scripts/run_quality_gate.py` 又加入 runtime smoke、browser/release profile、artifact 诊断、manifest gate、oracle gate。这解释了本地/云端 CPU 与 CI 时间增加,但不是模型 token 暴涨的唯一来源。
- 当前本机进程快照显示仍有高负载后台项:Codex app-server 约 60%+ CPUWorkBuddy renderer/GPU 约 50%/20%+ CPU,一个 Next dev server 占用约 45% CPU 和 27% 内存;这些会造成“电脑算力”体感升高,但和模型 token 账单应分开看。
- `.env.local` 当前开启 `VEDASTRO_ENABLE_NETWORK=1` 且有 endpoint;质量门默认 `skip_vedastro_live=true`,但 strict workflow / VedAstro evidence orchestrator 在真实高严谨工作流中具备出网条件。它是外部 API/网络成本风险点,不是 6月20 起 token 暴涨的主因。
- 根因判断:没有发现占星计算核心的死循环 bug;主要 bug/设计问题是代理工作流缺少“省算力护栏”,包括过宽的文件读取输出、长线程持续携带历史、release/browser gate 被过频触发、多项目 dev server 残留,以及 VedAstro live 配置默认在本地可用时缺少显式预算提示。
## 2026-07-02 省算力开源工具选型与落地
- 全网对比后,最贴合本次根因的直接止血工具是 `squeez`:它是面向 Claude Code、Copilot CLI、OpenCode、Gemini CLI、Codex CLI 的 hook-based token compressor,重点压缩 bash/tool output、代码读取签名和重复上下文,正好对应 6月20 日后“长工具输出 + 长线程压缩摘要膨胀”的问题。
- 已安装并验证 `squeez 1.34.4`Codex 侧配置位于 `~/.codex/squeez/config.ini`hooks 位于 `~/.codex/squeez/hooks/`;当前配置 `enabled=true``persona=ultra``max_lines=120``read_max_lines=300``grep_max_results=100``context_cache_enabled=true``redundancy_cache_enabled=true`
- 已启用 Hermes fallback 插件:`hermes plugins enable squeez-fallback` 返回成功;Codex/Hermes 下一次新 session 或重启后生效。
- `ccusage` 更适合做用量可视化和日/项目维度追踪,已用 `npx --yes ccusage@latest --version` 验证可运行,版本 `20.0.14`;本轮未做全局安装,避免增加长期依赖。
- `Repomix` 适合后续把仓库打包给 AI 前做 token counting 和 include/exclude 控制;它不是本次长线程工具输出膨胀的第一止血点。
- `LiteLLM``Langfuse``Helicone` 更适合自建 API gateway、OpenAI/VedAstro/多模型调用预算和日志治理;对当前 Codex 本地 agent 会话膨胀不是最短路径,暂不接入。
- 2026-07-11:第二批 10 案例 holdout 上,V1 recall/exact=`0.70/0.30`V2=`0.80/0.30`,blocked 均为 0;按冻结门槛 V2 可升级。
- 2026-07-1120 案例 V2 合并为 `8 strong / 8 weak / 4 miss`;事业和婚姻各自 recall/exact 均为 `0.80/0.40`。该数字只代表正事件激活回放,不是科学准确率。
- 2026-07-11:剩余 miss 暴露三类真正技法债:政治身份事件需 D10 Raja Yoga/A10-AL/年度层;婚姻需 Narayana AD/PD 完整语义;KP 精确 cusp 与 Tajika oracle 仍未闭环。
- 2026-07-11`scripts/muntha.py` 原本因遗漏 `typing.List` 无法独立导入,现已修复并加回归测试。
- 2026-07-11:新增 3 个独立 AA probeTrump 就职 `3/miss`、DiCaprio 奥斯卡 `1/miss`、Markle 婚姻 `7/strong`。V2 对婚姻可复现,但事业泛化缺口不只限政治事件。
- 2026-07-1123 案例观察值降为 recall/exact=`0.7391/0.3913`;事业 `0.6667/0.3333`,婚姻 `0.8182/0.4545`。三案太小,不据此调参,但 orchestrator 必须披露。
- 2026-07-11V2.1 修复同星 MD/AD 重复计分后,23 案例 activation 保持 `0.7391`strong activation 从 `0.3913` 降至 `0.3043`,确认旧 strong 数量被抬高。
- 2026-07-1123/23 已加入 SAV/BAV 非评分审计;hit/miss 的事件宫 SAV 均值为 `28.809/30.375`,当前数据不支持把高 SAV 直接当事件加分。
- 2026-07-113 案例 × 8 控制日期负样本 pilot 中,真实日 Top-1/Top-3 均为 `0%`,控制日期 strong activation 为 `41.67%`;当前评分器不能支持具体月日,只能支持宽窗口。
- 2026-07-11`±1年/±2年` 控制中整体 Top-1/Top-3 仅 `33.33%`;事业两案均排最后,婚姻一案排第一。宽窗口也未整体验证,事业 timing 必须 blocked。
File diff suppressed because it is too large Load Diff
+158
View File
@@ -0,0 +1,158 @@
# 印度占星 Web/App 产品化任务计划
目标:把当前印度占星网页/app推进到同品类成熟产品水平,持续对标开源项目与本地碎片,优先复用 MIT/Apache 代码或现有本地模块,避免重复造轮子。
## 当前阶段
- 状态:in_progress
- 阶段:用户端信任层与运行可用性
- 本轮最高优先级:在已完成首次使用引导、真实浏览器首跑冒烟、AI/API key 安全提示、导出失败恢复后,推进星历后端抽象可行性,把 SwissEph/WASM/xalen/VedAstro/PyJHora 的替换边界变成可检测资产。
## 最短路径封口方案(2026-06-29
后续不再扩新功能,优先只做 4 条封口线:
1. `relationship adjudicator` 回归闭环
2. `Vimsopaka + Functional Role` 闭环
3. `Shadbala / Dasha / JHora` oracle 批处理闭环
4. `VedAstro strict ingestion` 最小诚实接入
执行顺序与任务拆分见:
- `<repo>/docs/superpowers/plans/2026-06-29-shortest-path-closure-plan.md`
## 执行原则
1. 每次实现前先扫描本地碎片、`references/open_source_sources/*`、现有测试与产品差距矩阵。
2. 网络可用时先查 GitHub/开源项目;许可证允许且架构贴合时优先复用。
3. 不直接复制 AGPL/GPL 代码;只作为行为基准或独立重写参考。
4. 每完成一个任务,立刻分析下一个最高优先级问题并继续执行。
## 已完成
- [x] 可见参数/日历/工作区面板。
- [x] HTML 报告导出基础版。
- [x] Panchanga range API、月历、CSV/ICS、Rahu Kala/Yamaganda/Gulika。
- [x] Choghadiya、Hora、Tithi/Nakshatra/Yoga end times。
- [x] 保存星盘工作区:保存、打开、删除、导出、ID 修复。
- [x] Synastry 保存伴侣、保存配对、重新打开/删除、JSON 导出、HTML 报告导出。
## 进行中
- [x] Panchanga richer vrata/festival candidate rules。
- [x] Panchanga search-by-condition 条件检索。
- [x] CSV/ICS/前端表格/月历同步暴露条件标签。
- [x] 构建与碎片审计。
- [x] 多人/家庭分组与更强案例过滤。
- [x] 关系报告模板与比较视图。
## 下一批优先级
- [x] 多人/家庭分组。
- [x] 关系报告模板。
- [x] bi-wheel/composite-style 比较视图。
- [x] `spouse_status_yoga.py` 关系深度折叠。
- [x] 关系报告打印/PDF polish。
- [x] 可编辑关系元数据。
- [x] 后端 PDF 管线。
- [x] 更深关系时机/UL/DK 折叠。
- [x] Panchanga 搜索增强:组合条件、节日说明、location-aware 日历默认值。
- [x] 专业报告后端 PDF 管线:复用 `report_builder.py` 生成后端 HTML/PDF artifact。
- [x] 计算设置选择器:ayanamsa/node/house/sunrise/geocoder policy。
- [x] 规则/技法检索目录与 API explorer。
- [x] 规则变体/流派结果口径:Yoga/Ashtakavarga/Shadbala API 返回 `rule_variants`Skill workbench 渲染规则口径。
- [x] 候选碎片接入:`curse_yoga_detector.py` 已进入 `/api/yogas``shadbala_advanced.py` 已进入 `/api/shadbala` 增强证据层。
- [x] 候选碎片接入:`dasha_analyzer.py` 已进入 `/api/dasha.vimshottari_analysis` 与主 Dasha 详情卡。
- [x] 候选碎片归档:`reading_orchestrator.py``report_orchestrator.py``orchestrator_bridge.py` 已由 `/api/thematic_report`、registry 与前端 Skill workbench/API Explorer 引用,不再是漂浮碎片。
- [x] 候选碎片接入:`mevg_automation.py` 已进入 `/api/case_validation.mevg_gate`,只读门控状态,不运行子进程。
- [x] 候选碎片归档:`hermes_bridge.py` 判定为外部个人 agent/WorkBuddy 学习桥,写入 `~/.workbuddy`,不属于印度占星网页/app 默认产品面,已加入碎片审计忽略。
- [x] 主题报告真实证据链:`/api/thematic_report` 在传入出生数据或星盘数据时自动派生 chart/dasha/yogas/shadbala/ashtakavarga/relationship/career/Jaimini 证据,前端显示 evidence source 与模块状态,不再把样例报告伪装成实算报告。
- [x] 方法文档与 API 示例:Technique Directory/API Explorer 已返回并展示可复制 cURL、最小 OpenAPI 片段、方法摘要、边界说明和 API doc key。
- [x] PWA/信任中心 MVPmanifest、service worker、installability 状态、Trust Center 本地数据说明、导出本地资料、二次确认清空本地资料。
- [x] 术语模式与星历底座记录:Calculation Settings/Trust Center 支持 balanced/beginner/professionaltooltip、provenance、JSON/HTML 导出记录术语模式和 ephemerisBackendxalen-ephemeris 作为 Apache-2.0 可行性记录。
- [x] 桌面/普通用户运行健康检查入口:Trust Center 接入 `/api/health``/api/capability_audit`、PWA 状态和桌面路线提示,普通用户可直接检查本地 API 与能力目录是否可用。
- [x] 剩余同品类产品 polish:首次使用引导与普通用户空状态路径已提供运行健康检查、示例盘填入、导入聚焦和本地星盘库空状态指引,降低首次运行/无星盘/无 API 时的卡点。
- [x] 浏览器首跑守门:已用真实 Chrome 检查首屏首次使用路径、移动端布局、示例盘生成、运行健康检查入口,并修复 API 字段缺失导致的 Banner `undefined`
- [x] AI/API key 安全提示:AI 聊天不再提示浏览器 localStorage endpoint 配置;改为提示通过服务端 `/api/chat` 或后端代理读取服务端 `OPENAI_API_KEY`
- [x] 导出失败恢复:PDF fallback 和导出异常会提示 HTML 降级、Trust Center 健康检查和本地 API 启动命令。
- [x] Ephemeris abstraction feasibility:新增 `scripts/ephemeris_backend_probe.py` 和研究记录,明确 `swisseph_python` 主路径、`swisseph_wasm` fallback、`xalen_ephemeris` spike、`vedastro` product/API benchmark、`pyjhora_benchmark` AGPL benchmark-only。
- [x] Ephemeris adapter contract:新增 `scripts/ephemeris_adapter_contract.py` 与 parity matrix 文档,固定 Sun/Moon/Asc/Rahu/Ketu 的 `longitude_delta_arcsec` 验收口径。
- [x] Runtime smoke 补强:`tests/run_frontend_runtime_smoke.py` 现在真实检查 `/api/report_artifact` HTML fallback 和 `AI_BROWSER_KEY_DISABLED` 前端密钥禁用策略。
- [x] Ephemeris candidate adapter spike:新增 `scripts/ephemeris_candidate_adapter_spike.py` 与研究文档,记录 `swisseph_wasm_candidate``xalen_ephemeris_candidate` 的 license gate、parity gate 和 runtime setting 暂不开放。
- [x] 登录/订阅/API 失败恢复提示:`auth.js` 安全解析非 JSON 响应,登录/注册/Apple/token 校验失败会提示 Trust Center、`npm run web``python3 scripts/jyotish_api_server.py``subscription.js` 用可关闭通知替代关键 IAP alert,并转义错误消息。
- [x] 主排盘/关系/问事/Transit/API bridge/AI chat 失败恢复提示:安全解析非 JSON 响应,普通用户可见 Trust Center、`npm run web``python3 scripts/jyotish_api_server.py` 恢复路径,不再只弹 alert 或显示裸错误。
- [x] 真实浏览器点击级 smoke:新增 `tests/run_frontend_click_smoke.py`,覆盖示例盘生成、AI chat、HTML 导出、Transit、合盘、问事;修复 HTML 导出链路中的 `sub_lord` ReferenceError。
- [x] 移动端/离线/PWA 点击守门:`tests/run_frontend_click_smoke.py --mode all` 覆盖在线桌面、移动首屏、manifest/serviceWorker、无 API 健康检查和排盘 fallback,并纳入 `scripts/run_quality_gate.py` 默认质量门。
- [x] 桌面应用/安装后首次打开路线:`scripts/desktop_packaging_preflight.py` 输出 PWA installed shell、Pake first launch、Tauri sidecar readiness 三类 first-launch checksREADME 与 desktop packaging spike 同步可执行命令。
- [x] Pake/Tauri 本机可用性探测:`scripts/desktop_packaging_preflight.py` 新增 `toolchain_probe`,只读检查 node/npm/rustc/cargo/xcodebuild/pake/tauri,明确 Pake GPL-3.0、Tauri sidecar/signing_notarization 边界,不生成真实包。
- [x] PDF fallback / PWA 离线 shell / 移动长标签点击守门:`tests/run_frontend_click_smoke.py --mode all` 真实点击 PDF fallback、service worker 离线二次加载、移动端 Complete/Vargas/Synastry/Prashna/Transit Compare 标签切换,并修复 service worker 把 HTML fallback 返回给 JS module 请求的 MIME 噪声。
- [x] 报告/导出后端 artifact 用户可见完整性:`/api/report_artifact` 返回 `artifact_status``primary_artifact``download_filename``download_mime``fallback_reason``user_message``next_action``delivery` 镜像;前端 PDF 下载优先使用后端下载契约,runtime smoke 验证 HTML artifact 状态和文件名。
- [x] 真实浏览器导入/案例库工作流守门:`tests/run_frontend_click_smoke.py --mode workspace` 覆盖文本星盘识别、填表生成星盘、保存本地星盘、重新打开、参数/日历工作区保存、导出已选案例和导出整库,并已纳入 `--mode all`
- [x] 移动端导出菜单与 Trust Center 长内容:390px 视口下导出菜单不遮挡、长面板无横向溢出,健康检查/本地数据/安装说明在移动端可读可操作。
- [x] 真实浏览器点击级 smoke 命令级超时/残留进程诊断:`--timeout`、process snapshot、日志尾部与强制清理已进入脚本,长链路异常时不再静默挂起或遗留 API/Vite 子进程。
- [x] 普通用户长链路质量门失败摘要:`scripts/run_quality_gate.py` 输出可行动失败摘要、cwd、stdout/stderr 尾部、click smoke reason/process_snapshot,并修复前端构建 cwd 指向 `jyotish-app`
- [x] PDF/文本星盘导入文件上传真实浏览器守门:`tests/run_frontend_click_smoke.py --mode import-files` 覆盖文本文件上传解析、PDF 文本抽取失败恢复、导入后字段质量提示与移动端文件选择入口,并纳入 `--mode all`
- [x] 普通用户安装/启动文档与质量门输出统一:README 增加“普通用户启动路径”,质量门失败摘要输出同一套网页/API/Trust Center 步骤,明确 PWA 只包装网页壳、本地 API 仍需单独启动。
- [x] README/应用内 Trust Center/失败恢复文案术语一致性:应用界面统一使用“普通用户启动路径 / 网页服务 / 本地 API 服务 / PWA 安装壳”,命令只保留在 README 与质量门失败摘要里。
- [x] 质量门分层与运行成本:`scripts/run_quality_gate.py --profile quick|browser|release` 已拆分快速开发守门、完整浏览器守门、发布前守门,并保留 `--frontend-click-mode` 作为局部浏览器路径复验入口。
- [ ] 整机与 Git 云端地毯式遗漏审计:只读枚举整机印度占星相关资料、历史工作区、技能包、引擎碎片、git 仓库与当前远端所有 refs;把遗漏能力/代码/资料反向映射到当前网页/app。
- [x] 整机与 Git 云端地毯式遗漏审计第一轮:已完成高相关目录、历史报告、云端 HTTPS mirror、远端 refs、关键词覆盖矩阵与遗漏优先级文档。
- [x] Ashtakavarga Prashtara / Yoga Pinda 第一类产品化闭环:复用现有 `calc_prastara_av`,新增 `calc_yoga_pinda` 一等契约,并补 API、前端 Skill workbench、registry 与测试守门。
- [x] Sripathi/Placidus 房宫算法用户可控切换与 parity 守门:Bhava Chalit 读取 Calculation Settings 的 `houseSystem`API 返回 requested/selected/available house systems、Placidus 所需 birth JD/location 与 fallback 元数据,前端工作台显示宫位制、可选系统、宫位边界与迁移摘要。
- [x] KP Horary 产品化闭环:Prashna API 返回 `kp_horary`,包含可选 1-249 `horary_number`、ruling planets、cuspal sub-lord、house significators 与 judgement matrix;前端 Prashna 结果和案例保存/导出保留该证据。
- [x] Tajika Harsha/Panchavargiya Bala 产品化闭环:`scripts/tajika.py` 新增 Harsha/Panchavargiya/综合强度层,`solar_return.py``varshaphala.py` 年报均返回 `tajika_strength`Skill Workbench 显示年度强度与风险摘要。
- [x] Muhurta date-range solver`scripts/muhurta.py` 新增 `muhurta_range_search``/api/muhurta` 支持 `start_date/end_date/activity/limit/location` 范围搜索,Skill Workbench 展示候选日期、推荐窗口和过滤原因。
- [x] Sayanadi/Shayanadi Avastha 与 D24/D30/D60 深度模板产品化:新增 `/api/deep_varga_avastha` 聚合层,复用 `avastha_calculator.py``divisional_charts_extended.py``trimshamsa_d30.py`Skill Workbench 展示 Avastha 主导状态、深分盘模板与风险标记。
- [x] 二轮整机/Git/开源对标审计与全球排名更新:注册表 68 技法、37 API、碎片审计 0 问题;补齐 `deep_varga_avastha` 注册表/目录/审计映射,确认第一类产品化缺口已闭环。
- [x] 发布/仓库卫生第一步:release profile 新增关键产品文件未跟踪守门,28 个产品关键 untracked 文件已纳入 Git 暂存,`audit_fragments.py --strict` 当前报告 untracked_count=0。
- [x] 完整 browser/release profile 与云端分支同步检查:browser/release profile 均通过,分支 `codex/release-hygiene-ci` 已推送到远端并更新现有 PR #6
- [x] PR CI 云端稳定性修复:`.github/workflows/ci.yml` 显式使用 `--profile quick --skip-yoga-logic`,避免 PR 环境因未安装真实浏览器/Playwright 依赖而误触 browser click smoke。
- [x] GitHub Actions 失败根因修复:本地复现 PR `validate` 的 Ruff E402 与 `test` 全量 pytest 的 WorkBuddy 旧 skill 路径污染,新增 pytest import guard 并修复 Ashtakavarga lint。
- [x] Clean checkout CI 复现与修复:用干净 clone 复现 `.git/lost-found` 本机残留假设和 KP 外部 CSV fixture 缺失,修复为 clean checkout 可运行/可跳过的测试策略。
- [x] 发布包基础链路验证:wheel/sdist 构建成功,`twine check dist/*` 通过,全新 venv 安装 wheel 后 CLI help 可用。
- [x] PR merge ref 复现与 release-only workflow 守门:在 `/tmp/yinduzhanxing-pr6-merge` 拉取 PR #6 merge ref,确认完整依赖安装后 pytest 与 quick gate 通过;新增手动发布质量门 workflow 跑 release profile 与 Playwright Chromium,并为 CI/test workflow 增加 Vite/Node/Python 诊断。
- [x] CI 失败 artifact 诊断:pytest 改为 `-vv --maxfail=1 --junitxml`quick/release quality gate 输出 tee 到 artifact,避免云端只暴露 exit code。
- [x] 云端 CI 收口:PR #6 head `925e73e``validate``test``release-quality-gate` 三条 GitHub Actions 检查均已通过。
- [x] 准确率透明度页面:Trust Center 新增 Validation Transparency 面板,展示 Yoga logic benchmark 的 60 charts、82 comparable rules、Precision/Recall/F1、unmapped_pyjhora 与“不是个人事件预测准确率”的边界说明。
## 2026-07-11 公开真实案例 benchmark
- [x] 读取错误台账、两轮碎片扫描、现有 replay contract,运行开工预检。
- [x] 冻结案例门槛:Astro-Databank Rodden A/AA;独立事件来源;5 career + 5 marriage。
- [x] 扩展 replay schema/validator,拒绝低质量出生时间与无来源事件。
- [x] 导入 10 个公开案例,不含用户个人资料。
- [x] 建立轻量本地回放器:D1、D9/D10、UL/A10、Functional roles、Vimshottari、Narayana、Double Transit PAC。
- [x] 实跑并生成可审计报告;准确率拆为 positive recall / exact-label / blockedbalanced accuracy 无负样本时必须为 null。
- [x] 跑聚焦回归、预检、隐私扫描,记录性能/外部 oracle 阻塞。
## 2026-07-11 第二批 holdout 与 20 例闭环
- [x] 冻结 v2 设计与晋级条件,禁止按第二批结果调阈值。
- [x] 新增 10 个不重复 Rodden A/AA 案例,5 career + 5 marriage。
- [x] 同时跑 v1/v2,生成第二批与 20 例合并指标。
- [x] 找出仍漏判的技法层;仅晋级通过 holdout 的通用规则。
- [x] 接入 orchestrator,更新研究报告、错误台账和验收。
- [x] 第二批 10 个 A/AA 公开案例作为冻结 holdout,完成 V1/V2 回放与升级裁决。
- [x] 合并 20 案例,输出按领域指标、Technique Audit、四个 miss 与 V3 技法债。
- [x] orchestrator 切换到 20 案例 V2 报告;修复 Muntha 独立导入崩溃。
- [x] 新增 3 个不重复 AA 案例,使用冻结 V2 检测,并公开 23 案例合并观察值与事业泛化反证。
- [x] V2.1 修复重复计分和误导性指标;23 案例加入 SAV/BAV 非评分审计;补 scratch/.serena 隐私防线。
- [x] 建立负样本日期排序 pilot;用 24 个控制日期测误报和真实日排名;主链阻断伪精确月日输出。
- [x] 普通用户交付形态:新增 deployment preflight 与 README 交付矩阵,明确 Local dev、Docker Compose、Static demo/PWA、Desktop shell 的入口、命令和 API 边界,并纳入 quick/release 守门。
- [x] Antigravity/VedAstro 外部评审复核:确认 D1/D9 对齐,纠正 Shadbala/秒级输入过期结论,新增 Dasha 参考差异审计记录。
- [x] Level 3 外部解盘审计:拆分可采纳解读与可计算错误,并修复 D1 尊严状态漏掉友敌标签的问题。
- [x] Skill 分发同步:根 `SKILL.md` 已修正 Shadbala/对标边界,`skills/jyotish-engine-modules` 的分盘脚本副本已同步 D81/D108/D144 归一化修复,并新增守门测试防止 skill 与网页/app 主线再次漂移。
- [x] 公开演示环境 polish:首屏与 Trust Center 新增静态 demo/PWA 无 API 能力边界,README 与 `deployment_preflight.py` 增加 `static_demo_boundary_visible` 守门,明确 Vercel/Netlify/GitHub Pages 只适合作为静态壳,完整技法走 Docker Compose 或本地双服务。
- [x] Dasha/Shadbala 外部 oracle 边界第一步:新增 `references/oracle/dasha_shadbala_oracle_cases.json``scripts/oracle_boundary_audit.py`,把用户 PDF 的 Vimshottari 起点差异和 Shadbala 分量级校准缺口纳入可重复审计报告。
- [x] VedAstro 黄经 oracle 接入:`longitude_cases` 已记录用户盘 9 项外部 sidereal longitude,本地最大差约 26.23 角秒且 D1/D9 落点一致;该样本只用于 ephemeris drift 审计,不作为 Dasha/Shadbala 调参依据。
- [x] VedAstro Adapter MVP 方案 A`vedastro_service_adapter` 已补来源哈希、响应哈希、调用时间、endpoint host、artifact path、重试元数据与本地 evidence artifact`/api/vedastro/status`、Trust Center、`vedastro-live` 质量门和 MCP strict workflow 直接消费 `modules.vedastro_range_scan_result` 已接入。
- [x] VedAstro 普通用户入口:新增 `/api/vedastro/range_scan` 与 Trust Center `VedAstro Range Scan` 面板,用户生成星盘后可选择事业/婚恋/财富和日期范围运行外部雷达;未配置 endpoint 时返回受控 blocked,配置后走同一 adapter 实网链路。
- [ ] VedAstro 官方实网 endpoint smoke:等待配置 `VEDASTRO_API_ENDPOINT``VEDASTRO_ENABLE_NETWORK=1` 后运行 `python3 scripts/run_quality_gate.py --profile vedastro-live`,当前默认 CI 只验证受控 `blocked` 边界,不声称官方实网已闭环。
- [x] Multi-Ayanamsa 计算层可验证切换:`full-reading --ayanamsa` 已在输出中记录 `ayanamsa_name/display/value``compute_chart_data(..., ayanamsa_name=...)` 也能直接切换;测试覆盖 Lahiri/Raman/KP 差异。
- [x] AI Native Prompt/RAG 承载层第一步:`full-reading.ai_prompt_pack` 输出证据快照、检索文档、边界约束和结构化中文提示词,供网页/app 或 skill 后端 AI 代理生成高阶解读。
- [x] Antigravity AI 副手工作单:新增 `docs/research/antigravity_sidecar_work_order_2026_06_25.md`,把 Antigravity 限定为外部 oracle 样本采集、网页/app 审计、skill 同步审计和浏览器用户流验证,避免与核心计算修改冲突。
- [x] Standalone ayanamsa 全局状态修复:新增 `scripts/ayanamsa_utils.py`,让 Transit、Solar Return、Muhurta、cmd_muhurta、Yoga 验证脚本在 `FLG_SIDEREAL` 前显式设置 ayanamsa;默认 Lahiri,调用方可显式传入 Raman/KP 等。
- [x] 前端 Multi-Ayanamsa 设置与 `ai_prompt_pack` 可视化:完整解盘页显示 Ayanamsa 后端实算/浏览器降级状态,AI Prompt Pack 支持复制 Prompt 与 Evidence 审计上下文。
- [x] Oracle artifact 存档规范、Shadbala evidence 强校验与真实进度面板:`references/oracle/artifacts/` 已有脱敏规范与占位,Trust Center 显示 `0 / 5` 真实采集进度,validator 强制 Shadbala 七曜六分量,quick quality gate 已通过。
- [x] Ashtakoot 外部 oracle 样本队列与第一层 validator:新增 5 条外部合婚 oracle draft casesREADME/队列生成器/测试同步;validator 拦截 36 分制范围、8 Kuta 分项范围和总分不一致,防止假外部证据污染。
- [x] Antigravity Round 21 重型副手任务单:把副手任务扩展到 18 个报告包、至少 20 个联网对标对象、Top 40 ROI 拆解,继续承接 Ashtakoot、开源复用、Trust Center UX、Git 入库和 Round 22 规划。
- [ ] 第一条 JHora/PyJHora 黑盒证据包:等待人工外部工具截图/输出,补 Moon sidereal longitude、ayanamsa、Vimshottari 起点和 Shadbala 七曜六分量目标值,把 `valid_packets` 从 0/5 推到 1/5。
+65 -46
View File
@@ -3,70 +3,89 @@
工作树:`/Users/jesse/Downloads/Copse/astrology/.worktrees/repo-hygiene-20260903`
分支:`codex/repo-hygiene-20260903`
基线:开工后快进到 `origin/staging` @ `58cae371`(含 BUG-510 与上游同步任务书)。任务书:`docs/tasks/TASK-repo-hygiene-20260903.md`
未碰 `main`。未改 `DEFAULT_AYANAMSA_NAME`(保持 `raman`)。未改校正打分/阈值/golden。未改 `page.tsx`(仍 2041 行)。`scripts/jyotish_api_server.py` 仍 11120 行(与 rebase 后 HEAD 相同)
未碰 `main`。未改 `DEFAULT_AYANAMSA_NAME`(保持 `raman`)。未改校正打分/阈值/golden。未改 `page.tsx`(仍 2041 行)。`scripts/jyotish_api_server.py` 仍 11120 行。
BUG 编号:开工时 `docs/BUG_HISTORY.md` 最大号 **BUG-510**本轮岁差记 **BUG-511**
BUG 编号:开工时最大号 **BUG-510**。岁差记 **BUG-511**
| 任务 | 状态 | 说明 |
| --- | --- | --- |
| 0 岁差设置 + 参考集锁口径 | 待验收 | 本提交。产品 staging 实测仍欠 |
| 1 发布门本地可复现 | 未开始 | 任务 0 先推 |
| 2 注册表白名单 | 未开始 | |
| 3 仓库地址 | 未开始 | |
| 4 早期日志搬家 | 未开始 | |
| 5 远端分支清理 | 未开始 | |
| 0 岁差设置 + 参考集锁口径 | 待验收 | `b6a70aa7` 已推功能分支。产品 staging 实测仍欠 |
| 1 发布门本地可复现 | 部分完成 | 选项 (b) 已做;release profile 因 3 条 BLOCKED 不能声称退出 0 |
| 2 注册表白名单 | 完成 | `audit_capabilities.py --mode validate``valid=true, problem_count=0` |
| 3 仓库地址 | 完成 | Gitea 产品仓;slug 解析用例保留 |
| 4 早期日志搬家 | 完成 | 根目录 `ls *.md` 只剩规定 8 个(外加 gitignore 的 `COVERAGE_AUDIT_REPORT.md` |
| 5 远端分支清理 | 待执行删除 | 已 `fetch --prune` 核对名单,见下 |
## 环境备忘
- 本 worktree **没有** `.venv`。预检与 Python 测试用主仓 `/Users/jesse/Downloads/Copse/astrology/yinduzhanxing/.venv``mcp` 1.28.1`hypothesis` 已装)。
- 任务书写把迁移放进 `frontend/db/migrations/`。实际 `frontend/scripts/db-migrate.mjs` 会跑 `frontend/db/migrations` **和** `frontend/supabase/migrations`。账户资料列修复历来放 supabase(`account-api` 还断言同类 SQL 不在 `db/migrations`)。本轮唯一迁移是 `frontend/supabase/migrations/20260903010000_profile_ayanamsa.sql`,避免两个目录同名撞车
- 产品文案里的「账户与出生资料」在现界面是 **星盘资料** 里的本人编辑表,不是 `个人资料`(MVP 合同禁止在那里放出生 UI)。岁差单选加在本人星盘表单,未改 `page.tsx`
- `npm run test:db``npx tsx --test tests/rectification-*.test.ts` 不可并行:默认 `JYOTISHA_POSTGRES_MAX_FIXTURES=2`,抢槽时前几个库测会报泛化 `database migration failed`。隔离重跑后绿
- 本地错装 `mcp 2.x` / 缺 `hypothesis` 是环境问题,不改 pin。`requirements.txt` 仍是 `mcp>=1.0,<2``requirements-dev.txt` 已有 `hypothesis>=6.0`
- 任务书写把迁移放进 `frontend/db/migrations/`。实际 migrator 跑 supabase + db 两目录。本轮唯一迁移:`frontend/supabase/migrations/20260903010000_profile_ayanamsa.sql`
- 「账户与出生资料」在现界面是 **星盘资料** 本人编辑表。岁差单选在那里,未改 `page.tsx`,未进 `个人资料`
- `npm run test:db` 不可与 `rectification-*.test.ts` 并行(fixture 槽默认 2)。
- `python3 scripts/pre_work_check.py` 在本 worktree 用 Anaconda 3.12`remote_visibility_status=verified`(不再因旧 slug blocked)。失败项是 `fragment_scan` 90s timeout 与 focused tests 45s timeout,属环境预算,不是 slug。
## 任务 0
### 0.a 参考集锁口径
见提交 `b6a70aa7`。公开案例复验 `valid: true`、gated **66/66**`pass_rate: 1.0``npm run test:db` **34/34**。产品虚构盘实测仍欠。部署 SHA 待合入 staging 后补。
- `tests/run_real_case_revalidation.py``REFERENCE_AYANAMSA = "lahiri"`,引擎 argv `--ayanamsa lahiri`,报告 `reference_ayanamsa`
- `scripts/local_accuracy_report.py` 同口径。
- 夹具大运:`base``--ayanamsa lahiri`。三栏:原值=依赖默认;新值=显式 lahiri;原因=夹具日期是 Lahiri 口径。期望日期未改。
### 0.a 三栏
### 0.b 标签与计算一致
- `scripts/jyotish_api_server.py``_request_ayanamsa` / `DEFAULT_AYANAMSA_NAME` / `ayanamsa_display_name`,不再写死 `'lahiri'` / `'Raman'`
- `_request_ayanamsa` 也读 `ayanamsa_policy`,VedAstro 对照与该次请求同口径。
- `DEFAULT_AYANAMSA_NAME` 仍是 `'raman'`
- 验收 grep`scripts/jyotish_api_server.py` + `frontend/src`,排除 test):只剩 `frontend/src/lib/ayanamsa.ts` 选项/默认,以及 `personal-report-generation.ts``SAFE_AYANAMSA` 显示映射。
### 0.c 用户设置
- `frontend/src/lib/ayanamsa.ts``resolveAyanamsa`,默认 `raman`
- 迁移:`profiles.ayanamsa text not null default 'raman'` + 四值 check + `grant update (ayanamsa)``authenticated`
- 咨询、声明窗口、报告 worker、每日星语、合盘、校正 v9 引擎请求、生时评估 scan 均传实际岁差。
- 校正 `V9BaselineSnapshot` 新写入带 `ayanamsa`**不进** `baselineFingerprint`
- 岁差不进 `declarationFields` / `concurrencyFields`,改设置不 409、不清确认。
夹具大运 `base`:原值=依赖默认岁差;新值=显式 `--ayanamsa lahiri`;原因=夹具日期是 Lahiri 口径。期望日期未改。
### 偏离
- 迁移目录:supabase,原因见环境备忘
- UI 位置:星盘资料本人编辑,不是不存在的「账户与出生资料」面板。
- 迁移目录:supabase。
- UI:星盘资料本人编辑,不是不存在的「账户与出生资料」面板。
### 命令摘要
## 任务 1
| 命令 | 结果 |
| --- | --- |
| `python tests/run_real_case_revalidation.py` | `valid: true``reference_ayanamsa: lahiri`gated **66/66**`pass_rate: 1.0` |
| `pytest …test_fixture_dasha_timeline…` + `test_api_server_growth_contract.py` | 4 passed;夹具日期未改;API 行数 11120 |
| `scripts/user_invocation_acceptance_check.py` | `status: pass``checks.user_invocation_tests: true``external_adapter_status: complete`(本机 PyJHora 可用) |
| `npx tsc --noEmit` | 0 错 |
| `npx eslint .` | 0 error73 既有 warning |
| 前端聚焦:ayanamsa / account-api / consultation-route-service / server-owned-birth-profile / global-birth-profile-routes / settings-mvp / rectification-v9-case-service / consultation-workflow-request / consultation-birth-accuracy / consultation-agentic-runtime / personal-report-api / rectification-v9-engine-contract | fail=0 |
| `npm run test:db``--test-concurrency=1`,单独跑) | **34 pass / 0 fail** |
| `npx tsx --test tests/rectification-*.test.ts` 隔离重跑库测 | ingest P0 + v9-database **10 pass / 0 fail**;未改 scorer/golden |
| `wc -l frontend/src/app/page.tsx` | 2041,与 HEAD 相同 |
**(b)**PyJHora `missing_dependency``user_invocation_acceptance_check``status``partial`,退出码 0。硬错误仍 `fail`
产品负责人 staging 实测(虚构盘 2000-01-01 12:00 UTC 0/0Lahiri=SwatiRaman=Vishakha)仍欠。部署 SHA 待合入 staging 后补
三栏(`test_one_command_user_invocation_acceptance_check` / 技能包验收):原值=`status == "pass"`;新值=`pass``partial`;原因=外部参照引擎缺席应降级不应失败。`external_adapter_status` 仍必须在 `{pass, partial, complete}`
## 任务 15
测试不改写仓库:`character_level_inventory_manifest.py` 增加 `--output-dir`;写报告的测试改写 `tmp_path``numeric_oracle_gap_queue_v3.py` / `hard_gap_source_hunt_2026_07_23.py` 的测试加 `--no-write`。跑完后 `git status``docs/research/character_level_*_latest.*`、无那两份 oracle JSON 被改写。
尚未开始。
### 全量红名单处理表
附录 6 条 staging 独有:
| 测试 | 分类 | 本轮 |
| --- | --- | --- |
| `test_fixture_dasha_timeline_rejects_workbuddy_regression_claims` | 任务 0.a 口径 | 绿 |
| `test_one_command_user_invocation_acceptance_check` | 连带 + 选项 b | 绿(本机 PyJHora 可用时 `pass` |
| `test_premium_skill_zip_runs_from_clean_directory` | 连带 + 选项 b | 绿 |
| `test_local_accuracy_report.py``valid_packets >= 4` | 参考值/oracle4 包 1 个 `template_only`,校验 3 valid | BLOCKED,不改值 |
| `test_historical_event_priority_preserves_vimshottari_actor_difference` | 校正引擎 | BLOCKED |
| `test_v3_development_result_stays_shadow_only` | 校正引擎 | BLOCKED |
附录 83 条生产同样红、13 个收集 ERROR(缺 hypothesis / mcp 2.x):环境类。本机 CI 同款 venv 已有 hypothesis 与 mcp 1.x,收集 ERROR 应消失。未在本轮把 `run_quality_gate.py --profile release` 跑到退出 0。
## 任务 2
- 白名单加 `experimental_variant``comparison_only``calculation` 允许 `experimental`(注册表现况);`rule`/`prediction` 允许 `blocked`
- `comparison_only` 计入 `comparison_only_entries`,政策位与 `audit_only` 同等:不能影响结论。
- 断言:`experimental_variant` 的 prediction/rule 必须 `blocked``user_visibility` 必须 `expert_audit`
- `scripts/audit_capabilities.py --mode validate``valid=true, problem_count=0`(既有 warningRangacharya knowledge_ref 缺一篇 spec)。
## 任务 3
- `pyproject.toml``.codex-plugin/plugin.json`、根 `SKILL.md``skill_release_package.py``skill_release_manifest.py``skills/jyotish-engine-modules/SKILL.md` 改为 `https://git.copse.top/root/Jyotisha`Bug Reports `/issues`Documentation 指向 Gitea 上的 `README.md`)。
- 发行测试三栏:原值=上游研究仓 GitHub;新值=产品 Gitea;原因=安装说明必须指向产品仓。
- `remote_repo_visibility_check.py`:非 GitHub remote 不再退回 `732642856/yinduzhanxing`;报告 `provider: gitea`,用 `git ls-remote`。slug 解析用例未改,新增 Gitea 用例。
- 任务书 grep 剩余:`tests/test_remote_repo_visibility_check.py` 的 GitHub slug 解析行(任务书要求保留)。`COVERAGE_AUDIT_REPORT.md``.gitignore`。hashed `skills/*/versions``references/``docs/`、import 测试按任务书排除。
## 任务 4
`git mv` 四份早期日志到 `docs/history/`,新增 `docs/history/README.md``RELEASE_CRITICAL_UNTRACKED_PATHS` 三个路径改为 `docs/history/...``README.md` 文档地图与 `AGENTS.md` §4 最后一行已同步。`frontend/tests/staging-backend-workflows.test.ts` 的 docs-only 名单跟着改,避免根路径幽灵。
## 任务 5
`git fetch origin --prune` 后,`git branch -r --merged origin/staging` 相对任务书名单:
- 名单 67 条全部仍在,不少。
- 多出已合入、**不删**(不在名单):`codex/rectification-ux-20260903`
- 未合入、**不删**`codex/rectification-ux-20260902``codex/diagnose-rectification-request-20260827``fix/staging-gate-checkout-retry`,外加本分支 `codex/repo-hygiene-20260903`
- `git ls-remote --heads origin` 当前 **74**。删名单后预期约 7`main``staging`、本分支、3 条未合入保留、外加已合入但未列入名单的 `rectification-ux-20260903`)。
删除命令执行结果写在本段之后。