From de4bdff5d3bbcf2d5515b5590c15ce052718487b Mon Sep 17 00:00:00 2001 From: 732642856 <732642856@qq.com> Date: Thu, 25 Jun 2026 19:35:33 +0800 Subject: [PATCH] Expose Dasha Shadbala calibration status --- SKILL.md | 10 +++++ ...bration_transparency_recheck_2026_06_25.md | 14 +++++++ ...nd10_git_cloud_sync_blackbox_2026_06_25.md | 14 +++++++ ...global_benchmark_gap_recheck_2026_06_25.md | 14 +++++++ ...10_local_fragment_sync_audit_2026_06_25.md | 18 +++++++++ ...round10_next_codex_fix_queue_2026_06_25.md | 17 +++++++++ jyotish-app/ai-chat.js | 15 +++++++- jyotish-app/api-bridge.js | 15 +++++++- jyotish-app/main.js | 35 ++++++++++++++++++ jyotish-app/public/api-bridge.js | 15 +++++++- jyotish-app/style.css | 29 +++++++++++++++ progress.md | 6 ++- tests/test_frontend_productization.py | 37 +++++++++++++++++++ 13 files changed, 232 insertions(+), 7 deletions(-) create mode 100644 docs/research/antigravity_round10_calibration_transparency_recheck_2026_06_25.md create mode 100644 docs/research/antigravity_round10_git_cloud_sync_blackbox_2026_06_25.md create mode 100644 docs/research/antigravity_round10_global_benchmark_gap_recheck_2026_06_25.md create mode 100644 docs/research/antigravity_round10_local_fragment_sync_audit_2026_06_25.md create mode 100644 docs/research/antigravity_round10_next_codex_fix_queue_2026_06_25.md diff --git a/SKILL.md b/SKILL.md index 74597868..aba1531e 100644 --- a/SKILL.md +++ b/SKILL.md @@ -136,6 +136,16 @@ description: 印度占星(Jyotish)专业解盘与推运系统。核心能力 - AI 解读必须优先消费 `ai_prompt_pack.prompt_zh`、`ai_prompt_pack.evidence_snapshot`、`ai_prompt_pack.retrieval_plan`,并在结论中保留“不要仅凭单一配置下结论”的证据交叉要求。 - 若浏览器 fallback 无法实时切换 Raman/KP,应明确提示需启动本地 API 服务;不得把 fallback 结果伪装成已按目标 Ayanamsa 重算。 +### Dasha/Shadbala 外部校准边界(v6.9.15-oracle-evidence) + +**普通用户解释时必须显式区分基础排盘高可信与高阶绝对值待外部校准。** + +- Dasha/Shadbala Calibration Status:`ready_for_calibration: 0`,`external_oracle_evidence_validation.valid_packets: 0`。 +- D1/D9/SAV 高可信;但大运起点和 Shadbala 绝对值仍在外部 evidence validator 校准中。 +- 不得把大运起点或 Shadbala 绝对值说成已完成外部校准;涉及具体日期、剩余天数、绝对 Rupa/Virupa 分值时,必须声明当前只可作参考标定。 +- `production_tuning_allowed: false` 前,禁止为了贴合单份 PDF、单个 JHora 截图或本仓库本地输出而改生产常数。 +- 对普通用户的建议话术:基础落座、D9、SAV 可作为稳定证据;Dasha/Shadbala 精细边界需等 JHora/PyJHora 黑盒证据包通过 `external_oracle_evidence_validation` 后再提升置信度。 + ### Ashtakavarga 口径冻结(v6.0.8-av-calibration) **Ashtakavarga 默认使用 BPHS/PVR 书例校准口径,必须保留 SAV=337 与 full SAV=386 不变量。** diff --git a/docs/research/antigravity_round10_calibration_transparency_recheck_2026_06_25.md b/docs/research/antigravity_round10_calibration_transparency_recheck_2026_06_25.md new file mode 100644 index 00000000..a17957dd --- /dev/null +++ b/docs/research/antigravity_round10_calibration_transparency_recheck_2026_06_25.md @@ -0,0 +1,14 @@ +# Antigravity AI 产品透明度复核 Bug 报告 (Round 10) + +## 检查点追踪 + +针对 Round 9 中暴露的“普通用户毫不知情后台校准边界”的严重缺陷,本轮再次利用全文扫描工具探测整个代码库,确认这些高危漏洞目前的状态: + +| 严重程度 | 文件路径 | 现象 | 用户影响 | 修复进度 | +|---|---|---|---|---| +| **P0** | `jyotish-app/index.html`
`jyotish-app/main.js` | Web/App 层面(包括首页和设置面板)**依然没有**渲染和展示 `Dasha/Shadbala Calibration Status`。 | 普通用户在使用 Dasha 时,极易误以为系统排出的大运日期是100%绝对精准的。 | **未修复**。前端依旧对后台的 `oracle queue` 校准状态保持沉默。 | +| **P1** | `jyotish-app/ai-chat.js`
`SKILL.md` | AI 系统提示词(Prompt)**未被强制注入**“Dasha/Shadbala 仍在外部校准中”的免责说明。仅仅在 `SKILL.md` 的极深处提到了“校准边界”。 | 大模型极其容易在对话中自圆其说,脱离计算防线向用户打包票。 | **未修复**。没有形成前端级别的硬性边界约束语句。 | +| **P2** | `SKILL.md` | `SKILL.md` 在普通科普时,并未以面向小白的口吻强行区分“D1/D9 天文级高可信”与“高级技法外围校验中”这两层鸿沟。 | 用户分不清哪些是可以笃信的,哪些是仅供参考的。 | **未修复**。科普口径需要再次针对普通用户进行分级。 | + +## 结论 +普通用户对于系统的“透明度感知”和上一轮一模一样,并未改善。亟需 Codex 进入修改主线程进行强力补救。 diff --git a/docs/research/antigravity_round10_git_cloud_sync_blackbox_2026_06_25.md b/docs/research/antigravity_round10_git_cloud_sync_blackbox_2026_06_25.md new file mode 100644 index 00000000..22d23c10 --- /dev/null +++ b/docs/research/antigravity_round10_git_cloud_sync_blackbox_2026_06_25.md @@ -0,0 +1,14 @@ +# Antigravity AI GitHub 状态复核 (Round 10) + +## 远端与本地状态穿透核实 + +针对代码仓库的版本流转状态,进行了 SSH 端口 443 的远端探针查询及本地状态提取。 + +- **远端 HEAD 指针 (`codex/release-hygiene-ci`)**:其 Commit Hash 为 `912867f2ec35ce13f757fb0362da6bced9edf404`。 +- **本机 HEAD 指针**:当前本地正处于分支 `codex/release-hygiene-ci`,其最近一次的 Commit Hash 同样为 `912867f`。 +- **本地与远端的偏差**:**完全对齐!** 没有任何的 ahead 或 behind,这意味着所有历史实现代码都已经推到了 GitHub 上,不存在被困在本机未同步的陈旧 Commit。 +- **未跟踪文件 (Untracked Files)**:存在数份 Round 9 与 Round 10 产生的高价值 `docs/research/*.md` 研究报告、工作指令单等。另外含有 `output_report.txt` 和 `results_extracted.md` 这样的本地输出报告。 +- **提交策略建议**: + - **应提交**:所有的 `docs/research/antigravity_*.md` 以及对应的 `task_plan.md`、`findings.md`,这构成了本项目的演进大脑档案。 + - **保留或丢弃**:`output_report.txt`、`results_extracted.md` 带有强烈的本地临时输出或私人查阅性质,**必须被加入 `.gitignore` 或直接从暂存区剔除**,绝不可以推送上云。 +- **存在其他 Git 副本的隐患**:扫描发现 `.workbuddy/skills/jyotish-vedic-astrology` 具有相似的远端地址,但这仅为下载备份,主项目代码已被证实是全量对齐的,不构成多头提交分裂的威胁。 diff --git a/docs/research/antigravity_round10_global_benchmark_gap_recheck_2026_06_25.md b/docs/research/antigravity_round10_global_benchmark_gap_recheck_2026_06_25.md new file mode 100644 index 00000000..d554488a --- /dev/null +++ b/docs/research/antigravity_round10_global_benchmark_gap_recheck_2026_06_25.md @@ -0,0 +1,14 @@ +# Antigravity AI 全球对标项目差距复核 (Round 10) + +## 1. 对标 +在宏大叙事层面上: +- **VedAstro / VedAstro.Python**:拥有 `596+` 算式,生态非常开放(MIT),具备强悍的泛用 API 与前端体验,这是我们目前在“广度扩展”与“AI/API 交付形式”上需要长期对标的商业级/全功能开源底座。 +- **Hora Prakash 或其他同类网页/开源项目**:在轻量化、离线体验、免登陆免注册快速成盘上有着较好体验,这是我们普通用户交付(一键打包、本地壳应用)的形态标杆。 + +## 2. 开源参考 +在算法底色的精度和严谨性上: +- **PyJHora**:涵盖海量 Dasha/Shadbala 等分项计算流派,能够极大概率还原古籍星历。但受限于 **AGPL-3.0** 强传染协议限制,我们绝对不能去复制其代码与常数表。它只适合作为“黑盒运行对比数字”的标杆。 +- **Jagannatha Hora (JHora)**:印度占星界的宗师级独立软件。闭源,拥有无与伦比的极客配置项(数百种历法、节点与纬度扭曲修正选项)。它是我们当下最不可替代的**纯手动截图 / 外部真值抽样**的唯一基准。 + +## 3. Bug +本轮并未发现在对标策略上的严重越界行为。团队很清楚哪些能用(VedAstro 的交互理念),哪些坚决不能碰(PyJHora 源码),哪些必须死磕(手抄 JHora 的截图真值数据)。目前的短板依然是:过于敬畏后台验证,导致普通用户接触到的前端功能显得贫瘠,API 口径只有不到 40 个,距离 596 个有数量级差距。 diff --git a/docs/research/antigravity_round10_local_fragment_sync_audit_2026_06_25.md b/docs/research/antigravity_round10_local_fragment_sync_audit_2026_06_25.md new file mode 100644 index 00000000..149c44c6 --- /dev/null +++ b/docs/research/antigravity_round10_local_fragment_sync_audit_2026_06_25.md @@ -0,0 +1,18 @@ +# Antigravity AI 本地碎片与主仓差异审计 (Round 10) + +## 本机碎片盘点 + +通过地毯式的系统级扫描,识别出如下可能涉及印度占星的文件或仓库副本: + +| 类别 | 路径 | 状态 | 是否应同步到主仓 | 理由 | +|---|---|---|---|---| +| **核心主仓** | `/Users/wuyongnaren/Documents/印度占星` | 包含若干未跟踪文档 | **是** | 这是当前工作区的基准点,除了 `output_report.txt` 等临时输出外,其它的研究报告都应当被 Commit 并推送。 | +| **工作区副本** | `/Users/wuyongnaren/.workbuddy/skills/jyotish-vedic-astrology` | 可能为某次历史拉取版本 | **否** | 仅做差异参考或备份,如果主仓已经覆盖其进度,则直接废弃避免冲突。 | +| **临时草稿** | `/Users/wuyongnaren/.gemini/antigravity-ide/brain/*/scratch` | 各种 `vedastro_test.py` 等单文件脚本 | **否** | 此为 Antigravity 的临时实验和验证场,不代表正式提交级的代码。 | +| **引擎存根** | `/Users/wuyongnaren/engines-repo/jyotish` | 含有 `jyotishganit-runner.py` | **否** | 这是早期或并行的适配器存根,若主仓已合并核心引擎就不应再合并此孤岛文件,以免造成逻辑回退。 | +| **文档与书** | `/Users/wuyongnaren/文件仓库/中外占星/国外占星/...` | 海量 PDF 电子书与翻译文稿 | **否** | 涉及第三方版权,严禁作为原始文件塞进代码仓库,仅作为本地知识库查阅。 | +| **下载压缩包** | `/Users/wuyongnaren/Downloads/yinduzhanxing-5-new-modules.tar.gz` 等 | 下载留存 | **否** | 若模块代码已被解压合并至主仓,压缩包本身为垃圾文件无需同步。 | +| **隐私文件** | 各处的私人星盘报告(如带有具体出生时间、名字的文件) | - | **绝对否** | 保障隐私与仓库数据纯净。 | + +## 结论 +除了主仓内产生的高价值 `docs/research/` 系列架构说明、对标报告需进行清理和上云外,存在于 Downloads、Desktop 和 .workbuddy 等地的外围代码碎片和私人资料应实施物理隔离,不再同步。 diff --git a/docs/research/antigravity_round10_next_codex_fix_queue_2026_06_25.md b/docs/research/antigravity_round10_next_codex_fix_queue_2026_06_25.md new file mode 100644 index 00000000..0b4ebb3e --- /dev/null +++ b/docs/research/antigravity_round10_next_codex_fix_queue_2026_06_25.md @@ -0,0 +1,17 @@ +# Antigravity AI 下一步给 Codex 的可执行修复建议 (Round 10) + +## 下一步优先级执行队列 + +经过反复的防腐审计与外围盘点,我们已经探明了主仓的安全边界。现对 Codex 主线程下达最高优先级的动作指令卡,请严格按序执行: + +1. **[P0] Git 同步与大扫除**: + - 立即将 Round 9 和 Round 10 产生的所有 `docs/research/antigravity_round*.md` 以及附属的研究记录(如 `task_plan.md`)一并进行 `git add` 并推送至 GitHub 远端 `codex/release-hygiene-ci`。 + - **绝对红线**:禁止将 `output_report.txt` 和 `results_extracted.md` 加入追踪!务必将其写入 `.gitignore` 或直接从暂存区清理,保障用户的生辰资料与私密报告的物理级隔离。 +2. **[P0] 补足前台透明度 (Trust Center 构建)**: + - 在 `jyotish-app/index.html` 与 `main.js` 中新增一个显眼的“Dasha/Shadbala 校准状态”看板(或模态框)。它至少需要静态或动态告知普通用户:“由于高阶技法边界极其精微,我们当前正在与外网权威数据做校对(目前进度 0/5),在正式达标前,排出的起步时标请仅做参考。” +3. **[P1] 同步修补 AI 与 Skill 边界**: + - 修改 `jyotish-app/ai-chat.js` 和 `SKILL.md`,在底座提示词中强力拉起一条警戒线:当遭遇查询精密大运断点时,无论大模型推演得多么笃定,都必须向用户复诵一遍“本部分引擎正处于外部证据严选与验证期,暂做相对强弱参考,不做命运的绝对推断”。 +4. **[P1] 构建测试防衰退网**: + - 在前端测试链条(如 `tests/test_frontend_productization.py`)中新增一个静态扫描断言:测试必须要搜寻到前端代码里存在诸如 `calibration status` 或对应的告警文案;若丢失,流水线必须将其作为阻断级错误抛出。 +5. **[P1] 真值突围(持久战)**: + - 既然“证据校验器”已经固若金汤,下一步就必须开始啃硬骨头:设法在断网/安全隔离的虚机或专用沙盒中运行 JHora 与 PyJHora,手工录入截屏和基准数值。在至少打满 3 份 Evidence Packet 并且让 Validator 亮起绿灯前,不停止该项采集工作。 diff --git a/jyotish-app/ai-chat.js b/jyotish-app/ai-chat.js index c4910f08..d8a4dfb5 100644 --- a/jyotish-app/ai-chat.js +++ b/jyotish-app/ai-chat.js @@ -7,6 +7,13 @@ import { t, getLang, signName, planetName } from './i18n.js'; const STORAGE_KEY = 'jyotish_chart_library'; const CHAT_CTX_KEY = 'jyotish_chat_context'; +const DASHA_SHADBALA_AI_CALIBRATION_BOUNDARY = [ + '【Dasha/Shadbala Calibration Status】', + 'ready_for_calibration: 0', + 'external_oracle_evidence_validation: valid_packets: 0', + 'D1/D9/SAV 高可信;大运起点和 Shadbala 绝对值仍在外部 evidence validator 校准中。', + '不得把大运起点或 Shadbala 绝对值说成已完成外部校准;涉及具体日期/绝对力量值时必须说明当前只可作参考标定。', +].join('\n'); let _currentChartData = null; let _selectedChartId = null; @@ -286,6 +293,8 @@ function buildChartContext(cd) { '【AI Prompt Pack】', cd.ai_prompt_pack.prompt_zh, '', + DASHA_SHADBALA_AI_CALIBRATION_BOUNDARY, + '', '【evidence_snapshot】', JSON.stringify(cd.ai_prompt_pack.evidence_snapshot, null, 2), '', @@ -302,7 +311,7 @@ function buildChartContext(cd) { if (!p || p.error) continue; ctx += `${planetName(pn)}: ${signName(p.sign)} ${p.degree_in_sign?.toFixed(2) || ''}° H${p.house} ${p.status || ''} ${p.retrograde ? 'R' : ''} ${p.nakshatra || ''}\n`; } - return ctx; + return `${ctx}\n${DASHA_SHADBALA_AI_CALIBRATION_BOUNDARY}`; } function buildAISetupGuidance() { @@ -406,9 +415,11 @@ function generateLocalReply(message, ctx) { const asc = cd?.ascendant; const promptPack = cd?.ai_prompt_pack; const packAyanamsa = promptPack?.evidence_snapshot?.ayanamsa; - const contextBoundary = packAyanamsa + const parameterBoundary = packAyanamsa ? `\n\n参数:${packAyanamsa.display || packAyanamsa.name || 'Lahiri'} Ayanamsa;节点口径 ${packAyanamsa.node_mode || 'mean'}。AI Prompt Pack 已作为上下文入口;完整生成式解读需要服务端 /api/chat。` : ''; + const calibrationBoundary = `\n\n${DASHA_SHADBALA_AI_CALIBRATION_BOUNDARY}`; + const contextBoundary = `${parameterBoundary}${calibrationBoundary}`; const lower = message.toLowerCase(); const lang = getLang(); diff --git a/jyotish-app/api-bridge.js b/jyotish-app/api-bridge.js index 99b95f80..cc3c1264 100644 --- a/jyotish-app/api-bridge.js +++ b/jyotish-app/api-bridge.js @@ -343,13 +343,24 @@ const SYSTEM_PROMPT = `你是印度占星(Jyotish/Vedic Astrology)专业解盘 - 避免刻板教条("土星落陷=不好"),必须结合多配置综合判断 - 语气专业但不冷漠,像面对面交谈 - 给出具体的时间窗口,不要说"未来几年" -- 如果某个配置有多种可能性,列出2-3种最可能的走向`; +- 如果某个配置有多种可能性,列出2-3种最可能的走向 +- Dasha/Shadbala Calibration Status: ready_for_calibration: 0;external_oracle_evidence_validation valid_packets: 0;不得把大运起点或 Shadbala 绝对值说成已完成外部校准`; + +const DASHA_SHADBALA_PROMPT_BOUNDARY = [ + '【Dasha/Shadbala Calibration Status】', + 'ready_for_calibration: 0', + 'external_oracle_evidence_validation: valid_packets: 0', + 'D1/D9/SAV 高可信;大运起点和 Shadbala 绝对值仍在外部 evidence validator 校准中。', + '不得把大运起点或 Shadbala 绝对值说成已完成外部校准;涉及具体日期/绝对力量值时必须说明当前只可作参考标定。', +].join('\n'); function buildReadingPrompt(chartData, style, focus) { if (chartData?.ai_prompt_pack?.prompt_zh && chartData?.ai_prompt_pack?.evidence_snapshot) { return [ chartData.ai_prompt_pack.prompt_zh, '', + DASHA_SHADBALA_PROMPT_BOUNDARY, + '', '【evidence_snapshot】', JSON.stringify(chartData.ai_prompt_pack.evidence_snapshot, null, 2), '', @@ -389,7 +400,7 @@ function buildReadingPrompt(chartData, style, focus) { if (focus === '健康' || focus === '全部') prompt += `\n3) 需注意的健康周期`; if (focus === '全部') prompt += `\n4) 当前大运的核心主题`; - return prompt; + return `${prompt}\n\n${DASHA_SHADBALA_PROMPT_BOUNDARY}`; } // ═══════════════════════════════════════════════════════════════ diff --git a/jyotish-app/main.js b/jyotish-app/main.js index a120e605..d026172d 100644 --- a/jyotish-app/main.js +++ b/jyotish-app/main.js @@ -1712,6 +1712,7 @@ function renderTrustCenterPanel() { ${renderRuntimeHealthPanel(runtime)} ${renderValidationTransparencyPanel()} + ${renderDashaShadbalaCalibrationPanel()} ${renderRealCaseRevalidationPanel()} ${renderTerminologyModePanel()}
@@ -1730,6 +1731,40 @@ function renderTrustCenterPanel() { `; } +const DASHA_SHADBALA_CALIBRATION_STATUS = { + title: 'Dasha/Shadbala Calibration Status', + collection: 'external_oracle_collection_queue', + validator: 'external_oracle_evidence_validation', + totalTasks: '5 template cases', + readyForCalibration: 'ready_for_calibration: 0', + validPackets: 'valid_packets: 0', + productionTuning: 'production_tuning_allowed: false', + highConfidence: 'D1/D9/SAV 高可信', + boundary: '大运起点和 Shadbala 绝对值仍在外部 evidence validator 校准中', + nextAction: '继续采集 JHora/PyJHora 黑盒截图与分量值;未达标前不得把大运起点或 Shadbala 绝对值说成已完成外部校准。', +}; + +function renderDashaShadbalaCalibrationPanel() { + return ` +
+
+ ${escapeHtml(DASHA_SHADBALA_CALIBRATION_STATUS.title)} + ${escapeHtml(DASHA_SHADBALA_CALIBRATION_STATUS.highConfidence)} · ${escapeHtml(DASHA_SHADBALA_CALIBRATION_STATUS.boundary)} +
+
+ ${renderValidationTransparencyMetric('Queue', DASHA_SHADBALA_CALIBRATION_STATUS.totalTasks, DASHA_SHADBALA_CALIBRATION_STATUS.collection)} + ${renderValidationTransparencyMetric('Calibration', DASHA_SHADBALA_CALIBRATION_STATUS.readyForCalibration, '可用于生产调参的外部证据包数量。')} + ${renderValidationTransparencyMetric('Evidence', DASHA_SHADBALA_CALIBRATION_STATUS.validPackets, DASHA_SHADBALA_CALIBRATION_STATUS.validator)} + ${renderValidationTransparencyMetric('Tuning', DASHA_SHADBALA_CALIBRATION_STATUS.productionTuning, '禁止用单份 PDF、本地输出或全局缩放调生产常数。')} +
+
+ 边界 + ${escapeHtml(DASHA_SHADBALA_CALIBRATION_STATUS.nextAction)} +
+
+ `; +} + const VALIDATION_TRANSPARENCY = { source: 'Yoga logic benchmark', charts: '60 charts', diff --git a/jyotish-app/public/api-bridge.js b/jyotish-app/public/api-bridge.js index 99b95f80..cc3c1264 100644 --- a/jyotish-app/public/api-bridge.js +++ b/jyotish-app/public/api-bridge.js @@ -343,13 +343,24 @@ const SYSTEM_PROMPT = `你是印度占星(Jyotish/Vedic Astrology)专业解盘 - 避免刻板教条("土星落陷=不好"),必须结合多配置综合判断 - 语气专业但不冷漠,像面对面交谈 - 给出具体的时间窗口,不要说"未来几年" -- 如果某个配置有多种可能性,列出2-3种最可能的走向`; +- 如果某个配置有多种可能性,列出2-3种最可能的走向 +- Dasha/Shadbala Calibration Status: ready_for_calibration: 0;external_oracle_evidence_validation valid_packets: 0;不得把大运起点或 Shadbala 绝对值说成已完成外部校准`; + +const DASHA_SHADBALA_PROMPT_BOUNDARY = [ + '【Dasha/Shadbala Calibration Status】', + 'ready_for_calibration: 0', + 'external_oracle_evidence_validation: valid_packets: 0', + 'D1/D9/SAV 高可信;大运起点和 Shadbala 绝对值仍在外部 evidence validator 校准中。', + '不得把大运起点或 Shadbala 绝对值说成已完成外部校准;涉及具体日期/绝对力量值时必须说明当前只可作参考标定。', +].join('\n'); function buildReadingPrompt(chartData, style, focus) { if (chartData?.ai_prompt_pack?.prompt_zh && chartData?.ai_prompt_pack?.evidence_snapshot) { return [ chartData.ai_prompt_pack.prompt_zh, '', + DASHA_SHADBALA_PROMPT_BOUNDARY, + '', '【evidence_snapshot】', JSON.stringify(chartData.ai_prompt_pack.evidence_snapshot, null, 2), '', @@ -389,7 +400,7 @@ function buildReadingPrompt(chartData, style, focus) { if (focus === '健康' || focus === '全部') prompt += `\n3) 需注意的健康周期`; if (focus === '全部') prompt += `\n4) 当前大运的核心主题`; - return prompt; + return `${prompt}\n\n${DASHA_SHADBALA_PROMPT_BOUNDARY}`; } // ═══════════════════════════════════════════════════════════════ diff --git a/jyotish-app/style.css b/jyotish-app/style.css index 3e267ba9..b7bd7a62 100644 --- a/jyotish-app/style.css +++ b/jyotish-app/style.css @@ -5847,6 +5847,35 @@ body { font-family: var(--font-body); background: var(--bg-page); color: var(--t gap: 6px; margin: 8px 0 10px; } +.dasha-shadbala-calibration-panel { + margin: 10px 0; + padding: 10px; + border: 1px solid var(--border-light); + border-left: 3px solid var(--red); + border-radius: var(--radius-sm); + background: color-mix(in srgb, var(--red) 5%, var(--bg-surface)); +} +.dasha-shadbala-calibration-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 8px; + margin-top: 8px; +} +.dasha-shadbala-calibration-boundary { + display: flex; + gap: 8px; + align-items: flex-start; + margin-top: 8px; + padding-top: 8px; + border-top: 1px solid var(--border-light); + color: var(--text-muted); + font-size: 12px; + line-height: 1.55; +} +.dasha-shadbala-calibration-boundary strong { + flex: 0 0 auto; + color: var(--red); +} .runtime-health-panel { margin: 10px 0; padding: 10px; diff --git a/progress.md b/progress.md index f0177495..80447cbb 100644 --- a/progress.md +++ b/progress.md @@ -341,4 +341,8 @@ - 同项目 Git 副本扫描结论:除当前主仓外,发现 `.workbuddy/skills/jyotish-vedic-astrology` 指向同一远端但停在 `main@4ff6248`,仅 `references/validation_logic_report.json` 有排序类本地修改;该副本作为历史 skill/基线来源,不直接覆盖当前主仓。 - 私人输出同步边界:`output_report.txt` 和 `results_extracted.md` 是用户个人星盘复验临时输出,已加入 `.gitignore`,默认不纳入 GitHub 同步。 - 完成 Antigravity Round 10 副手任务单:新增 `docs/research/antigravity_sidecar_work_order_round10_2026_06_25.md`,要求副手复核整机碎片/Git 云端同步、Round 9 校准透明度 P0/P1、全球对标差距,并只产出 `docs/research/*round10*2026_06_25.md` 报告。 -- 当前下一最高优先级:提交并推送 Round 9 副手报告、Round 10 任务单和私人输出忽略规则;随后推进网页/app Trust Center 暴露 Dasha/Shadbala calibration status,避免普通用户误解“已完全校准”。 +- 完成 Round 10 副手报告接收:`docs/research/antigravity_round10_*_2026_06_25.md` 记录了整机碎片同步、Git 云端状态、全球对标差距和校准透明度缺口;结论确认 `.workbuddy/skills/jyotish-vedic-astrology` 是旧副本,不直接合并。 +- 完成 Dasha/Shadbala 校准透明度前端修复:Trust Center 新增 `Dasha/Shadbala Calibration Status` 面板,直接展示 `ready_for_calibration: 0`、`valid_packets: 0`、`production_tuning_allowed: false` 与 `D1/D9/SAV 高可信` / 大运起点和 Shadbala 绝对值仍需外部 evidence validator 的边界。 +- 完成 AI/Skill 边界同步:`ai-chat.js`、`api-bridge.js`、`public/api-bridge.js` 与 `SKILL.md` 均强制注入“不得把大运起点或 Shadbala 绝对值说成已完成外部校准”的提示,避免普通用户误解“已完全校准”。 +- 验证完成:新增 `test_trust_center_and_ai_expose_dasha_shadbala_calibration_status` 先红灯后转绿;聚焦产品化测试 5 项通过;`npm run build --prefix jyotish-app` 通过;`python3 -m py_compile scripts/oracle_collection_queue.py scripts/oracle_evidence_validator.py scripts/oracle_boundary_audit.py scripts/run_quality_gate.py` 通过;`git diff --cached --check` 通过且暂未发现密钥特征。 +- 当前下一最高优先级:提交本轮校准透明度修复并再次尝试推送 GitHub;若网络仍阻断,则继续在本地保持提交完整并给出可复验的远端差异说明。 diff --git a/tests/test_frontend_productization.py b/tests/test_frontend_productization.py index acd05e75..12ad07b6 100644 --- a/tests/test_frontend_productization.py +++ b/tests/test_frontend_productization.py @@ -545,6 +545,43 @@ def test_trust_center_exposes_validation_transparency() -> None: assert token in style +def test_trust_center_and_ai_expose_dasha_shadbala_calibration_status() -> None: + main = read("main.js") + style = read("style.css") + ai_chat = read("ai-chat.js") + api_bridge = read("api-bridge.js") + skill = (ROOT / "SKILL.md").read_text(encoding="utf-8") + + for token in [ + "DASHA_SHADBALA_CALIBRATION_STATUS", + "renderDashaShadbalaCalibrationPanel", + "Dasha/Shadbala Calibration Status", + "ready_for_calibration: 0", + "valid_packets: 0", + "production_tuning_allowed: false", + "external_oracle_evidence_validation", + "D1/D9/SAV 高可信", + "大运起点和 Shadbala 绝对值仍在外部 evidence validator 校准中", + ]: + assert token in main + + for token in [ + ".dasha-shadbala-calibration-panel", + ".dasha-shadbala-calibration-grid", + ".dasha-shadbala-calibration-boundary", + ]: + assert token in style + + for text in [ai_chat, api_bridge, skill]: + for token in [ + "Dasha/Shadbala Calibration Status", + "ready_for_calibration: 0", + "external_oracle_evidence_validation", + "不得把大运起点或 Shadbala 绝对值说成已完成外部校准", + ]: + assert token in text + + def test_trust_center_exposes_real_case_revalidation_to_users() -> None: main = read("main.js") style = read("style.css")