# PROGRESS · 生时校正分盘上升段研究(BUG-1105) 更新时间:2026-09-30 ## 本次 staging 归档范围(用户要求推送后) 用户在收到未验收、快速门失败及隐私补扫缺口说明后要求 push 到 staging。本次仅归档可通过隐私扫描的阶段性研究代码、测试、M1 机器结果和文档;**不是研究验收通过,不批准生产实现,不关闭 BUG-1105**。下文“未提交/未推送”均是此前收尾时的历史状态;本次远端是否写入以 push 与远端 SHA 核对为准。 - 提交范围:3 个研究脚本、研究测试、`artifacts/varga-resolution/varga_resolution_m1.json`、现有测试必需的 `artifacts/varga-resolution/m0-smoke.json`,以及本轮报告、进度、索引、BUG 历史、BLOCKED 和错误台账。M0 smoke 与 M1 JSON 均经显式隐私扫描,0 findings;smoke 不代替 M0 全量证据。 - **明确不提交** M0 全量原始 JSON、所有原始运行日志/其余烟测产物,以及 5 个 oracle 换行副作用文件。它们在原研究工作树保留,不删除、不改编码规避扫描、不改隐私例外;文中这些路径指本地证据,不代表远端已包含。 - M0 原始 JSON 的 SHA-256:`c19faccb95076855420b9e5fbbbff9de13b4e611e2fe4f699af39474bd82506c`;M1 JSON 的 SHA-256:`a0f481e85e926fa3ca400c6cae06b608407540418f73fd6b0960067627b2ed24`。哈希仅用于身份追溯,不证明二次复跑。 - 推送前 fetch 成功,远端从研究基线 `82db6373d` 前进到 `5208f19b7`(4 个提交);新增远端提交未改 `scripts/`、`tests/`、公开评价集及本任务书。先整合远端,禁止强推覆盖。 - 推送前 `pre_work_check.py` 再次 exit 1:remote verified;focused 除历史镜像路径断言外,还出现 `candidate_count=6 < workspace_residue_count=29` 的数量断言。保持失败,不造目录、不清其他会话文件;本地日志 `artifacts/varga-resolution/push-pre-work.log`。 - 全量 quick 仍采用本页所列实际失败结果;已知失败和 M0/M1 验收欠项不因允许归档而转绿。隐私要求只对明确选择的提交子集重新验收,未提交产物仍保留未通过状态。 - 将上述 13 个精确路径加入 index 后,研究与隐私测试合跑 **140 passed,exit 0(6.73s)**。此次 tracked 隐私门已覆盖拟提交的新脚本、测试和两个 JSON,不再仅依赖未跟踪文件的补扫。两个机器 JSON 保留原始 CRLF 字节及哈希;默认 whitespace check 报 CRLF,采用单次命令 `core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol` 检查通过,不改仓库配置,不改机器证据。 ## 当前结论(M0/M1 产物已落盘,整单未验收) 本轮已完成 **M0 首轮运行与 M1 全量分析**,未修改生产代码、未提交、未 push。M0 起点表逐格一致性及第二次字节复跑未闭环;M1 专项测试与记录补验见下文。M2/M3 为 `not_started`,M4 仅有阶段性报告,不能写成整单结论。±60 D9/D10 真值段保留各 74/77,低于任务书区间基线 75/77,明确不过硬红线 1,不建议接入生产。 ## M0 · 首轮运行完成,验收未闭环 - 评价集:`references/real_case_calibration/minute_rectification_holdout_v5.json`,77 例。 - 参数:`ayanamsa=raman`、`node_mode=mean`。 - 评分候选网格:固定 **2 分钟**;每档评分候选数为 ±10=11、±15=16、±30=31、±60=61。 - 分盘段扫描网格:独立固定 **1 分钟**;每档扫描点数为 ±10=21、±15=31、±30=61、±60=121。 - 探针口径:既有 `event_probes.discriminating_event_probes`,固定 `refresh=False`;首轮空探针如实记录,不切换 `refresh=True` 制造题目。 - 连续段:按 D1/D9/D10 上升星座在 1 分钟扫描序列中的最大连续运行编号;非连续再次出现的同一星座不合并;`23:59 -> 00:00` 视为连续,缺样本不跨接。 - 线上结果口径:机器结果同时保存评分网格候选、`still_valid_public` 展开的真实保留候选集合和 `unionStillValidRange` 等价的首尾区间包络;包络不等于真实集合。 - 完整逐案对账:四个半径均为 77/77 例,`changed_case_count=0`,错误数 0。单例零差只作 smoke;本结论使用了 77 例×每档半径完整对账。 ### M0 实际汇总(分母均为 77) | 半径 | D1 窗内单一上升星 | D9 平均段数 | D10 平均段数 | D1×D9×D10 平均组合 | 真值段仍在真实保留集合 | |---|---:|---:|---:|---:|---:| | ±10 | 64/77 | 2.43 | 2.51 | 3.84 | D1 76/77;D9 76/77;D10 76/77 | | ±15 | 51/77 | 3.22 | 3.26 | 5.27 | D1 75/77;D9 75/77;D10 76/77 | | ±30 | 37/77 | 5.34 | 5.60 | 9.62 | D1 76/77;D9 76/77;D10 76/77 | | ±60 | 10/77 | 9.64 | 10.29 | 18.36 | D1 76/77;D9 74/77;D10 74/77 | 注意:以上是真实保留集合上的段保留统计,不是只对区间包络统计;区间包络中的并列、空 coverage 另列于机器 JSON。 ## 机器结果与脚本 - `scripts/research/varga_resolution_lib.py` - `scripts/research/varga_resolution_probe.py` - `docs/research/varga_resolution_baseline_2026_09_30.json` - `artifacts/varga-resolution/m0-full.log` - `tests/test_varga_resolution_research.py` 机器 JSON metadata 明确记录:评分 2 分钟、扫描 1 分钟、`refresh_probes=false`、真实集合/区间包络区别、77 例逐档对账分母和跨午夜段定义;不含生成时间或耗时字段,便于逐字节复跑。 ## M1 · 已完成(研究侧) - 新增 `scripts/research/varga_resolution_m1.py`,沿用 M0 的 2 分钟评分 / 1 分钟扫描 / `refresh_probes=false` 链路,不改生产代码。 - 全量完成 `77 × 4 = 308` 个 case-radius,`errors=0`;结果见 `artifacts/varga-resolution/varga_resolution_m1.json`,日志见 `m1-full-v2.log`。 - 每盘分别计算 `raw`、`percent`、`uniform` 段质量;输出固定阈值 `0.5/0.6/0.7/0.8/0.9`、全样本拟合对照、逐案例留一法阈值选择与验证结果。 - 留一法严格排除验证案例;输出 `eligible / coverage / accuracy / truth_retained`,并单列空 coverage、并列、真值排除和 `1900` 年前 LMT 分层。 - 关键结果(raw,全量正确率 / 真值段保留;LOO 选阈值后的 eligible、accuracy、retained): | 半径 | 盘 | 全量 top 段正确 | 全量真值段保留 | 全量 ≤2 段 | LOO eligible / accuracy / retained | |---|---|---:|---:|---:|---:| | ±10 | D1 | 76/77 | 76/77 | 77/77 | 77 / 0.987 / 0.987 | | ±10 | D9 | 71/77 | 76/77 | 68/77 | 23 / 0.913 / 0.957 | | ±10 | D10 | 69/77 | 76/77 | 63/77 | 29 / 0.931 / 0.966 | | ±15 | D1 | 74/77 | 75/77 | 77/77 | 77 / 0.961 / 0.974 | | ±15 | D9 | 61/77 | 75/77 | 50/77 | 14 / 0.929 / 0.929 | | ±15 | D10 | 59/77 | 76/77 | 52/77 | 8 / 0.875 / 0.875 | | ±30 | D1 | 75/77 | 76/77 | 77/77 | 75 / 0.973 / 0.987 | | ±30 | D9 | 50/77 | 76/77 | 25/77 | 11 / 1.000 / 1.000 | | ±30 | D10 | 52/77 | 76/77 | 25/77 | 16 / 1.000 / 1.000 | | ±60 | D1 | 68/77 | 76/77 | 76/77 | 54 / 0.944 / 0.981 | | ±60 | D9 | 41/77 | 74/77 | 11/77 | 17 / 0.588 / 0.941 | | ±60 | D10 | 34/77 | 74/77 | 10/77 | 9 / 0.778 / 1.000 | LOO 的高准确率部分来自只交付少量 eligible 案例,不能当全集准确率;±30 以上分盘的覆盖和并列退化明显。三种模式完整逐案例结果在机器 JSON,uniform 的并列数显著更高;LMT 单列,不能剔除。 - M0 第二次全量字节复跑未完成:`m0-full-rerun.log` 仅约 103 行,目标 rerun JSON 不存在,不能宣称逐字节一致;首轮 M0 全量仍是唯一完整复现证据。 ## M2 · not_started 尚未执行段级信息增益排序、六题与早停分开结果、候选保留集合逐格比较、wrong1/wrong2 和日期 ±7 稳健性。`refresh=False` 首轮探针为空的案例必须保留为空,不能用刷新探针补齐。 ## M3 · not_started 尚未执行事业(D1+D10)、婚恋(D1+D9)、综合(D1+D9+D10)三种取盘策略,也未统计各半径目标盘只有 1 段的“不用校正”比例。 ## M4 · pending 已创建阶段性报告 `docs/research/rectification_varga_resolution_2026_09_30.md`,含候选档位、诚实出口与实现前置条件;M2/M3 无实测,尚未形成最终研究结论或实现单。不得把研究候选档位当成已校准的产品阈值。 ## 运行命令与证据 - M0 全量: `PYTHONUTF8=1 PYTHONHASHSEED=0 python scripts/research/varga_resolution_probe.py --radii 10,15,30,60 --json-out docs/research/varga_resolution_baseline_2026_09_30.json` - M0 日志:`artifacts/varga-resolution/m0-full.log` - 首轮 M0 定向测试:`PYTHONUTF8=1 python -m pytest -q tests/test_varga_resolution_research.py`,当时 4 passed;当前收尾复验为 77 passed,见下文。 - 既有基线定向测试:`artifacts/varga-resolution/baseline-targeted.log`,exit 0。 - 快速门:`artifacts/varga-resolution/baseline-quick.log`;需以命令实际 exit 与日志内容报告,不能把开工预检当作通过。 - 开工预检:`artifacts/varga-resolution/pre-work.log`,status=`fail`;失败原因是仓库环境的 preflight fragment-scan 合同缺少预期 `.workbuddy/skills/jyotish-vedic-astrology` 镜像路径。该环境缺口不归因于本研究,也不能伪称通过。 ## 本轮收尾复验(2026-09-30) - 报告 ±30 D1 的 LOO 数字已从误写的 `75 / 1.000 / 1.000` 修正为 `75 / 0.973 / 0.987`,精确值为 0.97333333 / 0.98666667;新增测试逐行对比 M1 报表全部 12 行与机器 JSON。 - `PYTHONUTF8=1 PYTHONHASHSEED=0 python -m pytest -o addopts='' -q tests/test_varga_resolution_research.py`:**77 passed,exit 0**(主会话独立复验 1.19s),日志 `artifacts/varga-resolution/closure-targeted.log`。原 4 个测试断言不变,新增合成算术、空训练、LOO held-out 身份隔离、并列、LMT、308 唯一 case-radius、36 组汇总重算测试;没有重跑引擎,不证明全量字节复现。 - M0/M1 `--help` 均 exit 0,日志 `closure-m0-help.log`、`closure-m1-help.log`。 - `PYTHONUTF8=1 PYTHONHASHSEED=0 python -m pytest -o addopts='' -q tests/test_repo_privacy_markers.py`:**63 passed,exit 0**,日志 `closure-privacy.log`。只覆盖当前 tracked repository;新增研究文件仍未跟踪,不能据此宣称产物隐私全绿。 - 对全部本轮脚本、文档、测试及研究 JSON/log 复用现有 `build_rules` / `scan_text` 显式补扫:**未通过**。29 个成功解码文件中 M0 baseline JSON 有 R003 共 3 次命中(扫描时刻字符串字段,未输出标记值);旧 `baseline-quick.log` UTF-8 与 GB18030 严格解码均失败。初次 UTF-8-only 扫描 exit 1,带严格回退的补扫也 exit 1,证据 `closure-explicit-privacy.log`。未删改研究证据或放宽隐私例外;提交前需独立核查这些命中并完成原日志的保真扫描。 - 回放不是每例答满六题:308 个 case-radius 中无探针 36、零回答 38,实际 0–6 题分布为 38/6/5/9/11/16/223。全部保留分母。top 命中包含并列;percent 为后验质量归一化,不是独立概率校准。报告已补真实定义与局限。 - M1 metadata 的确定性标志不构成复跑证据;M0 任务书起点表逐格对齐仍欠。M2/M3 未执行,BUG-1105 保持 investigating,索引已同步为部分完成。 - 最终完整 quick 补验使用本机 Python 3.11.7,日志 `artifacts/varga-resolution/closure-quick.log`,**exit 1**。Python 子段为 **1000 passed、1 failed、1 skipped、3 subtests passed(473.06s)**;唯一列出的 pytest 失败是 `tests/test_consultation_native_layers.py::test_the_new_layer_leaves_every_existing_output_unchanged`,在去除既有 volatile 字段后比较两次输出的 JSON 等价性断言失败。日志差异片段涉及 VedAstro 请求清单,但详情截断,根因未确定。本次在 Python 步骤停止,不以开工时的 tsx 失败解释本次失败,不能声称与基线逐项一致。 - quick 运行期间 5 个 tracked oracle pending packet JSON 变脏。独立只读核查确认:全部 JSON 与 HEAD 语义相同,归一换行后字节相同,只有 LF→CRLF。写入链为 `run_quality_gate.py` → `test_external_oracle_sanity_closure.py` → `external_oracle_sanity_closure.py` → `oracle_closure_master_dashboard.py` → `tajika_annual_closure_status.py` → `tajika_annual_oracle_queue.py:272–284` 的文本模式写入。未恢复或暂存这些非计划文件,排除在本研究候选交付之外;不能把这一副作用当作上条测试失败的已证根因。 - 独立验收复核全部 M1 表格和回答分布与 JSON 一致,另跑研究定向 **77 passed,exit 0(1.34s)**;只发现本页一处残留“当前 4 passed”,已改为首轮历史值。复核不覆盖完整引擎二次复跑,也不推翻 quick / 隐私补扫未通过的结论。 ### 最终文档收口复验 - 最终文档更新后合跑研究定向与 tracked 隐私守卫:**140 passed,exit 0(6.63s)**,即 77 项研究测试 + 63 项隐私测试;日志 `artifacts/varga-resolution/closure-final-checks.log`。 - 对本轮 7 份修改文档(含未跟踪报告/进度及错误台账)复用现有隐私规则显式扫描:**0 findings**。此结论仅覆盖这 7 份文档,不覆盖全部研究 JSON/log,不解除此前产物补扫的 3 处命中及旧日志解码缺口。 - 本轮 tracked 文档 `git diff --check` exit 0;全工作树另有已确认的 5 个 oracle 换行副作用,未恢复、未暂存。生产代码、前端、线上评分权重和门槛未改,未提交、未推送、未部署。完整 quick 仍为未通过,整单仍未验收。 ## 未完成原因与恢复点 第二次全量 M0 复跑已于本轮中止,**未完成**:`artifacts/varga-resolution/m0-full-rerun.log` 仅有 103 行(已输出 约 26 例×4 档中的前三档,远少于完整 77×4=308 个 case-radius 行),`artifacts/varga-resolution/varga_resolution_baseline_rerun.json` 不存在,因此没有第二次复跑 exit/hash 可报告,也没有逐字节一致性证据。当前没有残留 Python 进程。不得把该日志算作全量通过;首跑的 `m0-full.log`/baseline JSON 才是 M0 全量证据。后续若恢复,须从头完成 77×4 并再比较 hash;本轮不再等待。M1 后续已完成 308 条全量分析,见上文,不再沿用“M1 未开始”的旧状态。M2/M3 为 not_started、M4 为部分完成;后续按原任务书让步顺序 M0 > M1 > M3 > M2 推进,不能以当前文档收尾替代研究验收。