# PROGRESS · 星盘展示收口(2026-09-29) ## 授权与基线 - 产品要求“请你执行任务书”,对应 `TASK-chart-surface-polish-20260929.md`;实施计划已批准。 - fetch 后基线仍为 `78b9c5b65cda44650e8c7ca019931ce33a85a95d`,独立工作树 `.worktrees/chart-surface-polish-20260929`,分支 `codex/chart-surface-polish-20260929`。 - 未 stash、未提交、未推送、未部署;前次文档写认证失败尚未解除,不尝试借用凭据。浏览器 harness 初稿曾误写主检出 artifact,已复制至本树,后续产物仅写本树,未清理其他会话文件。 - 工作树清单与会话检查未见同日报告两单正在本机修改共享 SVG;保持本单共享 SVG 先于后续报告单串行接续的约定。 ## 执行边界与补充决策 - 去掉用户可见引擎行及专用展示字段,不删内部计算元信息或许可证。 - 庙旺保留三档同源派生,同位只 D9;能力声明与命中结果分离,旧缓存缺声明保守隐藏,不新造缓存系统。 - 宫位对齐审计发现本命/月亮、Bhava、行运也使用相同居中类。按 T3 统一修复宫位类格;本命八列结构和数据字节冻结不动,以八列表头限定 CSS 第四列左对齐。宿主、pada 等仍居中。 - 盘宽只在既有 ≥1024px 断点收紧;印度限内部绘图区,参数卡和表格不缩,报告/校正不受影响。 - 图标说明由 `/chart` 页面交互包装层承接,共享绘图默认静态。固定说明区避免挡住相邻符号;静态导出白名单不扩。西洋固定文字放在透明行星命中圆之上,避免说明归属被截走。 ## 进度 | 项 | 状态 | | --- | --- | | T1 去引擎 / T2 能力列 / T3 对齐 | 已实现;定向通过 | | T4 图标说明 | 已实现;定向与真实浏览器通过 | | T5 桌面盘宽与等待槽位 | 已实现;六视口真实浏览器通过 | | 基线全量与最终验收 | final-r2 完成,无新增失败;全量仍有 29 项既有失败,独立只读审查闭环 | | 文档与真人清单 | 已回填;受控登录、实体手机和读屏留待真人验收 | ## 本轮环境与预检 | 项目 | 实测 | | --- | --- | | Windows Node / npm | 22.23.2 / 10.8.1 | | Windows Python | 3.11.7(UTF-8 环境变量) | | Docker Server | 29.8.0 | | 实际浏览器 | Chrome 154.0.8037.57,独立临时配置,无个人登录态 | | Linux Node / npm / Python | 22.23.2 / 10.9.8 / 3.13.15 | | 实现树 npm ci --ignore-scripts | exit 0;未改 lockfile | | pre_work_check | exit 1:remote verified、适配器成功;碎片扫描 90s 超时,focused tests 45s 超时 | 预检原日志:`artifacts/chart-surface-polish-validation-20260929/pre-work-check.log`。本轮不是旧镜像路径断言的失败计数,不伪造历史目录、不清理别人的残留、不把整体 fail 写成通过。 Linux 基线使用本轮独立 Node/Python/DinD 容器和卷,Git archive 保留 5485 tracked 文件及 8 个 symlink,精确 index/mode 校验零差异。不挂宿主 Docker socket,不更改依赖锁。archive SHA256:`23f0b42bad804e59362959c64fa282ed4437faa301773f98b731e6ddfbcee76a`。最终另建快照,不覆盖基线。 ## 既有断言变更账本 | 原值 | 新值 | 原因 | | --- | --- | --- | | 西洋所有视口 max-width 520px | 窄屏仍 520px,≥1024px 上限 480px;viewBox 520×520 保留 | 只收紧桌面绘图区,不改变手机和几何 | | 完整 markup 中“逆”只出现一次 | 只统计可见 text,仍一次;另增说明与默认静态无交互断言 | title/aria 的事实说明可含逆行,不能误当成盘内重复标签 | | 临时浏览器追加检查要求骨架 SVG 与结果 SVG 总高相等 | 要求绘图容器、stage 等高及说明起点相同;400 方盘主体同宽同高,内部空 SVG 不要求绘制图例带 | 以真实无跳动布局为合同,保留静态空 SVG;旧失败原日志保留,外框高度断言未放宽 | 数据能力测试只新增断言,原 D9 六列、D1 八列字节冻结保留。没有删除用例来消红。 ## 执行方与主会话定向验证 | 检查 | 结果 | | --- | --- | | 数据六文件前端定向 | 55 pass / 0 fail / 0 cancelled,exit 0 | | Python 表格/原生同位合同 | 5 passed,exit 0 | | 图标、静态报告、西洋布局与新交互 | 31 pass / 0 fail / 0 cancelled | | 星盘页、西洋布局与新交互 | 36 pass / 0 fail / 0 cancelled | | 主会话独立星盘页、尺寸、交互定向(初轮) | 32 pass / 0 fail / 0 cancelled / 0 skipped,exit 0 | | 主会话 r2 定向(含高度合同及 Bhava/Transit 成功参数表) | 42 pass / 0 fail / 0 cancelled / 0 skipped,exit 0 | | 主会话 Python 原生合同 / 隐私 | 5 + 63 passed,exit 0 | | 主会话 tsc / 完整 lint | exit 0 / exit 0(0 error / 126 warning) | | 主会话差异空白检查 | exit 0 | 数据代理首轮新增缓存测试 54/55,因新测试缺少身份 pin 前置而失败;补齐测试前置后整组 55/55,未修改生产缓存逻辑。图标测试是实际 React handler/生命周期测试,不伪称浏览器布局仿真。主会话原日志:`artifacts/chart-surface-polish-validation-20260929/main-targeted.log`。 ## Linux 同环境基线 / 最终对账 证据目录:`artifacts/chart-surface-polish-validation-20260929/`。 | 检查 | 基线 | final-r2 | | --- | --- | --- | | tsc | exit 0 | exit 0 | | lint | 0 error / 126 warning,exit 0 | 0 error / 126 warning,exit 0 | | npm test | 4369 项:4340 pass / 29 fail / 0 cancelled / 0 skipped,exit 1 | 4386 项:4357 pass / 29 fail / 0 cancelled / 0 skipped,exit 1 | | 测试名多重集合 | 顶层 4339;含嵌套 4369 | 顶层 4356;含嵌套 4386;新增 17、删除 0 | | build / 首页 | exit 0 / ○ Static | exit 0 / ○ Static | | 完整首屏直链 JS/CSS gzip | 720027 B(32 资源) | 720933 B,+0.12583% | | 相对父 layout 增量 JS gzip | 233663 B(8 块) | 234101 B,+0.18745% | | 首页专属 JS gzip | 133914 B(4 块) | 134352 B,+0.32708% | | Python 定向 / 隐私 | 3 + 63 passed,exit 0 | 5 + 63 passed,exit 0 | | Python quick | 1000 passed / 2 skipped / 3 subtests passed,exit 0 | 1000 passed / 2 skipped / 3 subtests passed,exit 0 | | 受影响前端定向 | — | 87/87 pass,fail/cancelled/skipped/todo 0,exit 0 | quick 使用 `--profile quick --skip-frontend-runtime`,前端另外完整执行 tsc/lint/npm test/build,不省 Python 核心。基线 29 项失败均在 `home-warm-return-lifecycle.test.tsx`(14)和 `new-chat-from-people-lifecycle.test.tsx`(15),报 `tailwind-merge/dist/bundle-mjs.mjs:99:50 Parse error`,定向及禁用 tsx 缓存重复同错。不属于 Docker 不可用,不改业务/测试/依赖迎合工具;final-r2 已逐名核对 name/error/code/location(仅归一快照目录),新增失败 0、诊断变化 0。主会话独立读取 summary、名称多重集合与失败诊断证据,未将 exit 1 写成成功。最终证据:`final-r2-summary.json`、`final-r2-versus-baseline.json`、`final-r2-failure-diagnostics-versus-baseline.json`、`final-r2-gzip-versus-baseline.json`。 ## 真实浏览器验收 高度修复后最终稳定轮:`artifacts/chart-surface-polish-browser-20260929/run-2026-09-29T10-31-46-677Z/results.json`;触控/高度追加轮 `run-2026-09-29T10-31-31-386Z/results.json`。脚本 `run-browser.cjs`、日志 `acceptance-post-height-fix.log` 与 `touch-height-post-fix.log`。两轮使用同一源码哈希快照;旧 `run-2026-09-29T10-18-19-676Z` 初轮和其后高度失败证据保留。Chrome 真实组件 + 完整 CSS + 项目字体 + 真实引擎 golden,同一 harness 前后对照,源码前后哈希一致。 | 验证 | 实测 | | --- | --- | | 检查汇总 | 主套 70 PASS / 0 FAIL + 追加 8 PASS / 0 FAIL,两次 exit 0;pageerror 0(未监听全部 console.error) | | 宫位对齐 | 6 盘型 × 6 视口,computed text-align left,标题/值 padding 12px;宿主/pada仍center | | 西洋拥挤盘 | 64 golden × 6 视口 = 384 盘;17190 字符命中归属/nearest语义归属错误 0,字框碰撞 0 | | 375px 西洋 | 最小实际字号 12.533px;命中直径 44.854px | | 交互 | 实际 hover/focus/tap/Esc/leave/blur/切盘清理;西洋选择/取消/相位过滤、星座/宫号/角点说明通过 | | 印度可见符号 | 10 个可见 glyph 中心均能触发正确说明;逆行线同对象 | | 共享绘图 | 报告实际组件与校正共享宿主六视口尺寸同基线;导出静态、无脚本或交互、无 height auto | | 页面宽度与等待 | 无整页横滚,表内可滚;六视口骨架与结果绘图区同宽 | | 视口 px | 基线印度 px | 实现印度 px | 基线西洋 px | 实现西洋 px | | --- | ---: | ---: | ---: | ---: | | 375 | 317 | 317 | 343 | 343 | | 390 | 332 | 332 | 358 | 358 | | 480 | 422 | 422 | 448 | 448 | | 1023 | 949 | 949 | 520 | 520 | | 1024 | 497.594 | 440 | 520 | 480 | | 1280 | 565.797 | 440 | 520 | 480 | 浏览器第一轮运行时实现方仍在调整西洋文字层,哈希不稳定,不算最终证据;harness 也修正了零高度 SVG 逆行线定位(改几何中心真实 mouse.move)和扩展 aria-label 前缀定位,没有放宽业务断言。最终稳定轮已重跑全套。 ### 既有视觉欠账与未验边界 - 390px D1 个别多星同宫字形 bbox 越 SVG 边界,基线/实现坐标与可见中心相同,属于既有裁切,不是本轮新增;可见中心能正确说明,不把“无新增裁切”写成“全部字形无裁切”。证据含 `vedicVisibleAudit` 和前后截图。 - 没有受控线上登录态、实体手机或真实读屏验收。校正只覆盖共享绘图宿主,不是完整 Case 流程;本地 golden harness 不能代替账户/人物/服务端请求链路。 - 真人清单:`docs/testing/chart-surface-polish-20260929.md`;缺口保留在 `BLOCKED.md`。 ## 独立审查与追加修复 修复单:`TASK-chart-surface-polish-fix-20260929.md`,与原任务同一授权/分支,不扩大发布范围。 - 未参与实现的审查方完成能力声明、缓存、静态 SVG、安全边界与西洋事件审查,最小 20 项测试通过、fail/cancelled 0、exit 0,未发现确定的新数据或交互回归。 - 审查发现 T5 高度验收缺口:骨架空 SVG 为 400×400,结果有图例为 400×452。虽是既存比例差,本任务书要求揭幕后不跳尺寸,因此不缩窄解释为“只限宽度”。追加 Chrome 实测六视口外框增高 41.203 / 43.156 / 54.859 / 123.359 / 57.188 / 57.188px,六项失败、exit 1;日志 `touch-height.log` 和 `run-2026-09-29T10-23-27-737Z/results.json` 保留。 - 最小修复只给 `/chart` 印度骨架容器 `.chart-page-skeleton.chart-page-vedic-plot` 添加 `aspect-ratio:400/452`,留出图例带;不改空 SVG/viewBox,不改报告/校正。新增合同;新稳定浏览器追加轮 8 PASS / 0 FAIL、exit 0,六视口绘图槽/外框高度及说明起点差均为 0,方盘主体尺寸差 <0.1px。证据 `run-2026-09-29T10-31-31-386Z/results.json`,pageerror 0、源码哈希稳定。内部两个 SVG 自身不要求等高,因为骨架不绘图例。 - 触控追加可信原生事件序列为 pointerup(touch) → pointerout/leave(touch) → 兼容鼠标事件 → click(touch),印度/西洋在完整事件后 0/50/500/1500ms 说明均保留;没有复现触控立即消失。不扩推到所有移动浏览器。 - 补强 Bhava/Transit 的真实成功 golden 参数表断言:参数表、岁差、交点存在且无引擎,两个文件 9/9 pass、fail/cancelled/skip 0、exit 0。不是仅验证失败占位不含引擎。 - 29 项基线错误只能定性为既有生命周期测试加载失败,根因未定:同环境直接 import tailwind-merge 并执行正常,不能写成缺依赖或包损坏。 - final-r1 为中间快照,不能替代上述改动;4385 项中 4356 pass / 29 fail / 0 cancelled / 0 skipped,新增 16 个测试名、删除 0,29 项失败 name/error/code/location 归一快照路径后逐项相同。tsc/lint/build/quick 成功,首页 Static。r1 最初 Python 与 Node 依赖复制并行导致新增两项 skip,依赖就绪后真实补跑 5 个定向 + 63 隐私全部通过,原日志不覆盖。 - final-r2 新保真快照 SHA256 为 `7af1408accee383ade7906c638d032fc992cca8e06986f43526616a58c804a34`,5491 tracked、index/mode 零差异。主会话逐项核对 19 个变动业务/测试文件 source_sha256 与当前树一致,mismatch 0;文档最终回填另做隐私检查(主会话已独立 63/63 pass,exit 0)。 ## 当前结论 本地实施完成:五项展示需求及独立审查发现的骨架高度缺口均已落实,冻结后真实浏览器 78/78、受影响前端定向 87/87、tsc/lint/build、Python 定向与 quick 通过;首页 Static,三种 gzip 变化均小于 2%。独立审查无未处理意见,主会话另外完成关键复验。 全量 npm 仍为 exit 1:29 项既有生命周期加载失败与基线逐名逐原因完全一致,新增失败 0;不能称全部测试全绿。预检超时、实体手机/读屏和受控线上链路未验、既有印度边缘裁切均明确保留。BUG-1098/1099 记录为本地验证通过但线上待验,不宣称生产已解决。 本地验收完成时,交付仅限工作树 `G:/Ferti/Jyotisha/.worktrees/chart-surface-polish-20260929`,尚未提交、推送或部署。算法、依赖锁、迁移、发布配置未改。本地证据不能替代远端 SHA/部署核验。 ## 2026-09-29 · staging 推送授权 - 产品在获知上述 29 项既有全量失败及真人验收缺口后,明确要求“请你帮我推送到staging”。本轮授权包括提交已验收改动并快进推送 staging,不包括提升 main 或手动生产发布。 - 推送前重新 fetch;`origin/staging` 与本轮基线仍同为 `78b9c5b65cda44650e8c7ca019931ce33a85a95d`,无需合并或重放代码。重新执行预检、源码快照一致性与隐私检查;只提交明确列出的业务/测试/文档,不纳入本地产物、依赖、截图或凭据。 - 推送前源码核对 19 文件 mismatch 0,隐私 63/63 通过。预检 exit 1:remote verified、碎片与适配器成功;focused 22 pass / 2 fail,分别是历史镜像路径不存在与 candidate_count=6 小于 workspace_residue_count=1937,不再是开工时超时。原日志 `push-pre-work-check.log` 保留,未修改测试或清理其他会话目录。 - 本节记录授权与推送准备,不预言写认证、远端门禁或部署成功。提交后须单独核对远端 SHA,自动门禁/部署以新提交的实际结果为准。