# BLOCKED ## BUG-1128:JS 在每次部署后仍要重新下载(`supportsImmutableAssets` 自托管不生效,2026-09-30) - 状态:blocked(TASK-home-first-load-20260930 T4 验证不成立,配置未改) - 缺什么:Next 16.3 的 `supportsImmutableAssets` 要由部署 adapter 在构建时启用、并把内容寻址的资源放进 `/_next/static/immutable/`。本仓是 `output: "standalone"` + `next start` 自托管,没有 adapter。 - 实测(分支 `codex/home-first-load-20260930` 同代码,一次性 worktree 里在 `next.config.ts` 加 `supportsImmutableAssets: true`,`NEXT_DEPLOYMENT_ID=t4aaaa01` 生产构建):`.next/static` 下只有 `build-*`、`chunks`、`media`,没有任何 `immutable` 目录;预渲染的 `/` HTML 里 133 处资源地址仍是 `?dpl=t4aaaa01`。任务书三条证据的第一条就不成立,第二条(两次构建路径相同)、第三条(旧标签页整页刷新)没有意义,未测。 - 替代:宋体切片改走 T3-b(public/ + 内容哈希 + immutable 响应头),部署后不再重下。JS 首屏靠 T7 瘦身(brotli 516 → 431 KB)和 T8 早发接口减轻;`deploymentId` 保持不变(BUG-936)。 - 解除条件:部署方式换成支持 immutable assets 的 adapter,或 Next 在 standalone 下原生支持;届时按 T4 三条证据重测。 ## TASK-rectification-varga-resolution:研究逐格精度与采用持久化边界(2026-09-30) - ~~Windows Python 3.11.7 与 accepted Linux 3.13 六位占比差,暂停扩展待同contexts核证。~~ 已解除该逐格精度阻塞:独立Linux同contexts的72单盘golden及77例×三档M1/M2整树difference_count=0、exit0;没有改冻结scorer/accepted JSON/精度。这只证明研究单盘/核心桥,不证明默认联合六题收益。 - ~~旧候选UUID RPC无法保存非候选中点,真DB待实施。~~ 新向后兼容段采用已按immutable源获得真DB证据;最新源码、D7 empty-intersection/gap/cross-midnight与实际落库资料报告重算仍需闭环,不借旧快照通过。 - ~~**当前新增实质阻塞**:a2e93 Linux真DB73/pass72/fail1/cancel0/skip0、exit1;首12参数open RPC报42501,后续checks/unique/no-half-write/disjoint/legacy断言未执行。新顶层service_role EXECUTE已存在,旧reconciliation撤非service_role显式EXECUTE与definer内部调用是待核证方向,不确定写成缺顶层grant。权限修改被拒,本会话不恢复/扩大授权、不另路绕过。~~ 已解除(Claude 2026-10-01,BUG-1131):12 参数开案包装改 security invoker、待开场判断移入属主函数;真 PostgreSQL 17 上开案测试红→绿,全量 DB 与最新 staging 失败清单一致。 - ~~c1a2(domain-legacy-review)build的exclusive +3.7166%(缺2149 bytes)与incremental +2.0074%(缺18)未过±2%。~~ 后续45dd固定源build0/Home Static,all +0.7558%、incremental +0.9972%、exclusive +1.8463%,该源预算阻塞已解除;不是后来report/other与最终源码预算通过,仍须新build三口径。c1a2完整quick exit1现场保留在PROGRESS;45dd正确PATH全npm4704/pass4671/fail33/cancel0/skip0、exit1,旧names缺0/new274、旧32diagnostics不变,唯一新增opening42501;session-list与首轮runner YAML环境失败已消失,privacy0;同源完整quick实际exit1(wrapper0),Python1034pass/2skip/374warnings/3subtests、privacy0,Node4704/4671pass/33fail/cancel0/skip0;旧names缺0/new274/旧32diagnostics不变,唯一opening,与fullnpm failure Counter一致。不豁免opening、不计全绿。后续fa4f三gzip+0.75661%/+0.99724%/+1.84632%全过、定向254/254、tsc/privacy0;同源full npm4715/4682pass/33fail/cancel0/skip0actual1、DB73/72/1actual1、quickactual1(Python1034pass/2skip、Node同npm),旧names缺0/旧32diagnostics不变、唯一opening42501,lint126warnings无增缺。不是全绿,不覆盖新Skill10.0.33。 - 新T4 Agent/Skill在本机遇Windows runtime alias symlink EPERM,Agent及grounding文件未运行;历史10.0.31原path regex仍失败,未修改runtime/提权/改断言。后续721313固定源Linux scoped325/325、fail/cancel/skip0/exit0、tsc/privacy0,实际Agent/runner/scriptedmodel已执行,build0/Static及三gzip全过;仅解除该源实际Agent控制缺口,不覆盖外部供应商模型/PG history或saved-native新文件。同源full wrapper0但内部DB/npm/quick1,Node4720/4687pass/33fail/cancel0skip0,旧names缺0/new290/旧32diagnostics不变、唯一opening42501,npm/quick failure Counter无增缺;Python1034pass/2skip/3subtestpass不等于整体绿。 - 新saved-native两DB控制本机2tests/0pass/2fail/cancel0/skip0actual1:Windows原runner报duplicate migration filename,在迁移阶段拒绝,保存链断言均未执行;不改runner/历史migration/ACL去重消红。独立真实native plumbing1/1/exit0与tsc/新文件eslint0不是PG持久资料→生产longform→native通过,后续0d5e Linux三项3/3、fail/cancel/skip0exit0、tsc/privacy0,named及offset-only真实PG保存后profile→longform→native signs一致,仅解除该固定源保存plumbing缺口,不代表calibration/open成功;原0d5e三其它表只time范围保留。 - saved-native fixed0d5e只profile/provenance日期及三其它表time;D7 live已补真实现有civil字段/RPC绑定,不添不存在日期列。新D7 tests2/pass1/fail1/cancel0/skip0actual1,DB原Windows migration重复保护入口拒绝,SQL empty/clamp/gap/tie/回滚尚未执行;gap仅内部算法核验,公共dated gate仍须拒不合法disjoint ledger,不能造合法gap采用证据。两个纯name-filter控制2/2、tsc/新文件eslint0不能代替SQL。后续a8c0 Linux两files5/4pass/1fail/cancel0skip0exit1、tsc/privacy0,新增civil三项通过;D7 confirmed fixture漏completed_at违反原CHECK,最后该拒绝/snapshot未执行,之前SQL分支已执行但总test不通过。no-D1 fallback实际public synthetic/null-identity算法控制,非合法产品目标。后于history1a0cac只在新fixture补confirmed completed_at=now()以满足原cases CHECK,保全部项/名字/断言;本机tsc/eslint0、纯1/1exit0,后续0b0c独立Linux两files5/5、fail/cancel/skip0exit0、tsc/privacy0,confirmed拒绝/四表snapshot已执行,只解除该固定fixture/SQL控制缺口;a8c0失败现场不删除。不改constraint/gate/ACL,不称lawful confirm/calibration/newopening通过。 - ~~新history控制本机tests1/pass0/fail1/cancel0skip0exit1,原Windows migration重复保护入口失败,真实list/open/cache/choice/run均未执行;tsc0/新fileeslint0不等于PG历史链过。不可借新opening或权限旁路补成功。后续1a0c Linux1/0pass/1failexit1已越过真实list/旧11参数open/cache/focus/choice,在after summary undefined失败,末transition/action/run未执行。独立golden诊断确认新fixture initial绕生产null adapter、初始已有signature fallback summary,不是已证明生产回归;仅新fixture改生产nullable adapter并新增initial/reloaded raw/signature缺失控制,保after原assert/所有名字门。后续7a3301独立Linux三files6/5pass/1failexit1、tsc/privacy0:corrected before/after缺失与真实list/两旧session open/cache/focus/choice/revision/transition/action均pass;下一appendV9Turn真实RPC permission denied,runreceipt/finalidentity未执行。整receipt链保持blocked,不grant/owner/definer/新turn旁路,不改parser/production/ACL。~~ 已解除(Claude 2026-10-01):history 测试改走 V10 带幂等键写轮次(V9 版已从 service_role 收回),真 PostgreSQL 17 上 1/1 通过。 - ~~T5新显式seed持久回放harness已落,off-default/on-experiment仅排序开关,真实append/evidence/score/catalog/focus/options/choice/PG链,不direct reducer冒持久。Windows10例入口actualexit1/records0,原migration duplicate拒绝,append后链未执行;不得直插turn/evidence替代拒绝。c637固定Linux实际10distinct/60traces replayexit1、tsc/privacy0,全部seed/source_session_unavailable,domain/targets/beforeledger/append未到,questions/metrics/six0;原failedJSON/log保。根因newharness误用service查owned source,真实POST用authenticated;仅newharness改原app_runtime/authenticated owner+closepool,保生产resolver与真实service后RPC,不grant/harddefault/turn seed替代。最新tsc/eslint0。后续d029542f独立Linux实际10distinct×3radii×2orders60traces,认证owned source/general/持久dossier targets D1D9D10全部成功,stage appendV9Turn均原append_agentic_rectification_turn权限拒绝;before/after五ledger均0且相等,asked/metrics/six0,replay1/tsc0/privacy0,wrapper0非通过。全77未跑,不做假校准。60 traces不是60病例,missing metrics不当0分成绩,joint红线not-evaluable;默认off、收益不计。不改题池/门/权限/accepted或shared依赖。~~ 已解除(Claude 2026-10-01):harness 同样改走 V10 写轮次,2 例 ±10 冒烟跑通;全 77 例联合回放未跑(T5 默认关闭,不计入验收)。 - 历史list/open/cache/choice与saved tuple报告已有上述固定scope;整history turnreceipt、新opening权限、ownedsource浏览器handoff、T5六题持久链与default joint77收益、最终全量/真机/外部模型仍未闭;无受控登录资料不得借账号。7a3301 lint0/原126warnings、DB79/77/2actual1;首npm4726/4691/35exit1的PG端口占用现场保,完整同源repeat4726/4692/34/cancel0skip0exit1、names missing0/new296、old32诊断相同、chart-subject4/4且full无port;quickactual1。两类新增permission失败(opening与append)不能豁免成baseline。真人待执行清单见[docs/testing](docs/testing/rectification-varga-resolution-20260930.md),回放入口见[Python driver](scripts/research/varga_resolution_persisted_replay.py)与[PG runner](frontend/scripts/rectification-segment-persisted-replay.ts)。未提交、未推送、未部署;精确快照scope见本轮PROGRESS。 - ~~**T6正式回放文件仍blocked**:repo `docs/research/varga_resolution_impl_replay_2026_09_30.json`是旧Windows产物sha41144a7c…afd3,无implementation_identity,strict差1242;现有a8c0 public offline artifact sha9902260f…1f5dc有Python3.13.15身份、strict0,但原bytes覆盖repo目标被权限明确拒绝,未执行,旧文件未变。不能称正式产物完成,不能换工具/改名/删目标/造同目的JSON或借会话代执行。替代证据仅已有artifact与PROGRESS说明,offline单chart不代joint。~~ 已解除(Claude 2026-10-01):用 `--posterior production` 重生成并替换,带 implementation_identity,M1/M2 与 accepted 深比较差 0。 - 本轮 pre_work_check 的 focused 历史 `.workbuddy/skills/jyotish-vedic-astrology` 镜像路径断言失败,不制造镜像消红;完整 npm/quick 既有失败按同环境同名清单比对,不笼统标全绿。 - ~~**仍为环境缺口(2026-10-01)**:Claude 验收机无 Docker,数据库测试用独立 PostgreSQL 17.9 + `docker`/`psql` 本地替身跑;3 条依赖真容器的用例(备份加密、数据库环境变量校验、管理员身份隔离)在分支与基线同样失败。正式证据由产品负责人按 `docs/testing/rectification-varga-resolution-db-20261001.md` 用真 Docker 复跑。真机与真实模型清单 `docs/testing/rectification-varga-resolution-20260930.md` 未执行。~~ 数据库部分已解除:产品负责人 10-01 用真 Docker(Linux `postgres:17-alpine`)复跑 80/79/1,唯一失败为解包目录无 `.git` 的环境用例;真机与真实模型清单仍待部署后执行。 ## BUG-1105:离线研究验收的本机环境缺口(2026-09-30) - 推送范围更新:用户要求阶段性归档到 staging;M0 全量 JSON 与原始日志保留本地不提交。明确暂存的研究代码、测试、M1 JSON、M0 smoke 及文档已随 tracked 隐私门复验(与研究定向合计 140 passed)。只解除提交子集的隐私覆盖缺口,不解除下述未提交产物、完整 quick 或研究验收阻塞。 - 当前 worktree 无可用项目 `.venv`,使用本机 Python 3.11.7,不改依赖锁或生产代码。 - 开工 `artifacts/varga-resolution/baseline-quick.log` 的 Python 测试子段通过,随后 npm 缺 `tsx`,quick 整体 exit 1;`pre-work.log` 是另一项失败,focused 测试要求不存在的历史 `.workbuddy/skills/jyotish-vedic-astrology` 镜像路径。没有伪造镜像或弱化测试。 - 本轮最终 quick **exit 1**:Python 子段 1000 passed、1 failed、1 skipped、3 subtests passed,失败为 `tests/test_consultation_native_layers.py::test_the_new_layer_leaves_every_existing_output_unchanged` 的原输出不变性断言。日志差异片段涉及 VedAstro 请求清单,输出被截断,根因未确定;不能归因为开工时的 tsx 缺失,也不能声称与基线失败逐项一致。详见 `artifacts/varga-resolution/closure-quick.log` 与 PROGRESS。恢复条件:独立定位新增失败后,在依赖齐全的验证环境复跑完整 quick;不修改生产代码或弱化断言消红。历史镜像断言由仓库环境合同维护方核实,不让研究脚本创建假镜像。 - quick 还重写了 `references/oracle/artifacts/pending_packets/` 下 5 个已跟踪 JSON。独立只读比对确认 JSON 语义与 HEAD 相同,字节差异仅 LF→CRLF;来源是 oracle dashboard 链调用 `tajika_annual_oracle_queue.py` 的文本模式写入。文件现场保留、未恢复、未暂存,不纳入 BUG-1105 研究候选交付;此副作用不是上条不变性失败的已证根因。 - 产物隐私补扫未通过:tracked 守卫 63 passed 不覆盖本轮未跟踪文件。显式复用隐私规则扫描新增产物时,M0 baseline JSON 的时刻数组 R003 命中 3 次;旧 baseline quick 日志混合编码无法以 UTF-8 或 GB18030 严格解码。未打印标记原值、未改既有隐私例外、未删除命中数据;需独立核查精确字段碰撞及完成日志保真扫描后,才可考虑纳入提交。证据 `artifacts/varga-resolution/closure-explicit-privacy.log`。 - M0 两次字节复跑未完成、M2/M3 not_started 是研究欠项,**不是上述环境失败的推断后果**。不得据此关单或宣称已交付。 ## 对话质量记录(2026-09-30,PROGRESS-reply-quality-20260930):真实 PostgreSQL 与真机待验 - 缺什么:本机无 Docker,`npm run test:db` 跑不了;迁移 `20260930050000_reply_quality_snapshots.sql`(👎 才能存快照、👍/取消删快照、90 天清空正文、后台查看与改状态写审计、按天/按模型统计)只有源码合同测试。无受控登录账号与实体手机,点 👎 后的原因面板与后台页面未在真实环境点过。 - 替代证据:`frontend/tests/reply-quality-20260930.test.tsx`(快照只取服务器存的那条回答且哈希一致、上下文窗口与摘要截点、原因规范化、面板选填提交、SQL 与 RBAC 合同、保留期任务);部署到 staging 时迁移会被真实执行一次。 - 解除条件:staging 迁移成功后,用受控账号对一条咨询回答点 👎 并选原因,在后台「对话质量记录」看到这一条、点「查看」能看到问答与上下文并在审计日志出现 `reply_quality.open`;改成 👍 后该记录消失;统计卡的 👍 / 👎 数与操作一致。 - 校正会话里的 👍 / 👎 目前只在页面状态里,没有保存,因此不进对话质量记录(本轮不改)。 ## 合规 A:用户协议 / 隐私政策 / 登录同意(2026-09-30) - **律师审定**:`frontend/src/lib/legal-documents.ts` 是依据代码写的初稿,页面顶部标「草稿 · 待律师审定」。其中 【待确认】 事实点共 13 条(`pendingLegalConfirmations()` 可列出),定稿前逐条确认;定稿后改 `legal-entity.ts` 的 `legalDocumentsVersion` 与 `legalDocumentsDraft: false`,老用户会在下次登录后看到一次「协议已更新」确认。 - **运营主体信息待产品提供**:`legal-entity.ts` 的 operatorName / address / contactEmail 仍是占位;生产发布前设 `JYOTISHA_REQUIRE_LEGAL_ENTITY=1` 跑 `tests/legal-consent-20260930.test.tsx` 会失败(见 deploy/README.md)。 - **数据库测试**:新表 `user_consents`(`20260930010000_user_consents.sql`,只加不改)没有跑 `npm run test:db`(本机无 Docker);staging 部署时由迁移步骤首次真实执行,部署后需用受控账号登录一次核对写入。 - **真机**:登录页勾选、协议页阅读、账户菜单链接未在真机走查(清单 `docs/testing/legal-consent-20260930.md`)。 ## 反馈与投诉 + 回复评价(2026-09-30):真实 PostgreSQL 与真机待验 - 缺什么:本机无 Docker,`npm run test:db` 跑不了;迁移 `20260930030000_user_feedback.sql` 里的函数(五次 / 小时限流、会话归属校验、管理员权限与审计写入)只有源码合同测试,没有真实库执行证据。无登录态与实体手机,弹窗与后台列表未在真实环境点过。 - 替代证据:`frontend/tests/feedback-complaints-20260930.test.tsx`(校验、错误映射、弹窗提交与限流提示、评价按文本哈希恢复、SQL 与 RBAC 合同);部署到 staging 时迁移会被真实执行一次。 - 解除条件:staging 迁移成功后,用受控账号提交一条反馈、连续提交第 6 条看到限流提示、在后台把它改为「已解决」并在审计日志看到记录;点赞后刷新对话仍在。 ## 自助注销账号(2026-09-30,PROGRESS-account-deletion-20260930):DB 测试、真实清除与端到端未跑 - 本机无 Docker:`frontend/tests/database-account-deletion.test.ts`(清除函数真库验证)skipped,需 `npm run test:db`。全量 `npm test` 的 24 条 DB / 部署套件失败与基线逐条同名。 - 迁移 `20260930020000_account_deletion_requests.sql` 只在 staging 部署时首次应用;清除任务的真实执行要等 7 天,或在 staging 库把测试账号的 `scheduled_for` 调早后观察。 - 无受控 staging 账号:注销 → 各端退出 → 重登见「账号注销中」→ 撤销注销,这条链路未在浏览器走过。 - 运营主体与联系邮箱仍是 `lib/legal-entity.ts` 占位值。 - 未推送、未部署。 ## 合规轮 · 敏感内容审核(2026-09-30) - **阿里云内容安全账号与密钥**:需产品开通「内容安全 · 大模型输入/输出审核(TextModerationPlus,llm_query_moderation / llm_response_moderation)」并提供 `ALIYUN_GREEN_ACCESS_KEY_ID` / `ALIYUN_GREEN_ACCESS_KEY_SECRET`(可选 `ALIYUN_GREEN_ENDPOINT`),再设 `MODERATION_PROVIDER=aliyun`。适配器按公开 API 文档写成、签名有单测,但**未对真实服务调用过**;接入后需在 staging 用受控账号发一条命中样例验证。缺钥匙时只用本地词表(启动日志警告一次)。 - **本地词表需法务审定**:`frontend/src/lib/moderation/lexicon.ts`(五类、保守短语),以及自伤求助句里的热线号码 12356。 - **数据库测试**:新表 `moderation_events` 与函数 `complete_consultation_moderated`(`20260930040000_moderation_events.sql`)未跑 `npm run test:db`(本机无 Docker);函数由 `complete_consultation_free` 逐行复制,仅改 responseKind、长度上限与释放原因。部署到 staging 时的迁移步骤是第一次真实执行。 - **真机**:命中后的前端表现(输入被拦的提示条、回答被整段替换)未在浏览器实测。 ## TASK-chart-surface-polish:受控登录、实体手机与基线全量失败(2026-09-29) - 本轮 Chrome、Edge、Docker 均可用,不套用历史“无 Chrome / 无 Docker”。真实 Chrome + golden 的本地组件验收及骨架高度修复后复验已完成(70+8 项通过);没有受控线上登录账号、实体手机和读屏实测;不能代替完整账户/人物/请求链路。清单见 `docs/testing/chart-surface-polish-20260929.md`。 - Linux 保真基线全量前端 4369 项,4340 通过 / 29 失败 / 0 cancelled / 0 skipped,exit 1;两个既有生命周期测试文件均报 `tailwind-merge/dist/bundle-mjs.mjs:99:50 Parse error`,定向及关闭 tsx 缓存仍复现。final-r2 为 4386 项、4357 通过 / 29 失败 / 0 cancelled / 0 skipped,exit 1;逐名逐原因核对无新增失败、无诊断变化。根因未定,直接 import 同包正常,不能称包损坏;不改依赖或测试消红,不声称全量通过。证据见本轮 PROGRESS 和 `artifacts/chart-surface-polish-validation-20260929/baseline-test-summary.json`。 - 本轮 pre_work_check exit 1:远端 verified、适配器成功,但碎片扫描 90 秒、focused tests 45 秒超时。未伪造历史镜像、未清其他会话目录。 - 真实 Chrome 前后对照发现既有印度盘多星同宫的个别字形边缘裁切,基线/实现坐标相同、可见中心仍能触发正确说明。本轮没有引入或修复该布局欠账;不将“无新增裁切”说成“全部字形无裁切”。证据见本轮 PROGRESS 的 `vedicVisibleAudit`。 - 前次任务书文档推送认证失败尚未解除;本轮只实施与本地验收,未提交、未推送、未部署,不借用任何凭据。 ## ~~TASK-birth-sky-cover T5:报告封面没有可靠的出生资料绑定(2026-09-28)~~ → 已解除:产品 2026-09-28 选 A → 2026-09-29 产品决定去掉报告封面(TASK-mobile-chart-and-confirmed-edit-20260929 M5;生成时写入的 `subject.birthFingerprint` 保留) - ~~任务书要求「只有报告生成时的出生资料与现在一致时才显示封面」。逐项查过,报告侧**没有任何出生资料指纹**:~~ - ~~`personal_reports` 表列(`20260806010000_personal_reports.sql` 及其后 `add column`):`chart_profile_id`、`request_fingerprint`、`calculation_hash`、`evidence_hash` 等,没有出生资料快照或 `profileFingerprint`。~~ - ~~`request_fingerprint` 只哈希 `reportType / presentationMode / depth / themes / sessionId / chartProfileId`(`personal-report-route-core.ts` `computeRequestFingerprint`),不含出生资料。~~ - ~~`calculation_hash`:普通报告取引擎 `result_hash`(含计算结果,不是出生资料指纹,且 BUG-693/694 记过哈希含墙钟);长报告取 markdown 全文的 sha256(`personal-report-longform-cover.ts`)。两者都不能和当前 `profileFingerprint` 比。~~ - ~~报告文档 `subject` 只有 `displayName / birthTimeStatus / birthPlaceLabel`;`personal_report_jobs`、`personal_report_sections`、`personal_report_longform_appendices` 也没有出生资料。~~ - ~~仓库里 `result_binding` 只出现在 Python 的 `calculation_profile_contract.py` / `full_report_quality_gate.py`,不进报告行。~~ - ~~按任务书:本单**不显示**报告封面,不拿当前资料冒充当时资料;`reportView` 未改、报告页未改、打印样式未改,旧报告不补算不补写库。~~ - ~~解除需要一个产品决定(二选一,都不改表结构):① 生成报告时把当时的 `profileFingerprint`(`resolveServerOwnedChartBirth(...).fingerprint`)写进报告文档(如 `subject.birthFingerprint`,v2 schema 加可选字段),只对新报告生效,旧报告永远无封面;② 接受「当前资料」作为封面依据并在封面上说明——与任务书红线冲突,需产品推翻。~~ - ~~`draw.ts` 的 `paper` palette 已实现并有单测(打印用),解除后报告封面可直接复用。~~ - 同单其余环境缺口:无登录态与真机(星盘页按钮、保存 / 分享、首次揭幕按 `docs/testing/birth-sky-cover-checklist.md` 走);无 Docker(24 条 DB / 部署套件失败与基线逐条同名)。未推送、未部署。 - **已解除(2026-09-28,TASK-birth-sky-followup-20260928 F1–F3)**:产品选方案 A。新生成的报告在 `subject.birthFingerprint` 写入生成时的出生资料指纹(与星盘页 `profileFingerprint` 同一算法、同取存储行);`GET /api/reports/:id` 在服务端比对当前指纹,只下发 `coverSubject`(人物 id 或 null),不下发指纹与出生资料。旧报告没有该字段,永远不显示封面,不补算不回填;不改表结构。 ## TASK-site-button-contrast(BUG-1079):真机、登录态与两条待决发现(2026-09-28) - 无受控登录账号与真机:各页实心按钮只在 harness(新 build CSS + 无头 Chrome,样本按源码类名渲染)上测,页面级走查按 `docs/testing/site-button-contrast-20260928.md`。 - 本机无 Docker:`npm test` 的 24 条 DB / 部署套件失败与开工基线逐条同名(PROGRESS 附 diff)。 - 待产品决定(未修,不在任务书范围):① 后台管理路由(`src/app/admin/layout.tsx`)只加载 `antd/dist/reset.css` 与 `admin.css`、不加载 `globals.css`,其中 52 个 shadcn `