Files
trade-message-center/.trellis/tasks/09-11-remove-image-dimensions/implement.md
T

3.0 KiB
Raw Blame History

执行计划:从 OneTalk 图片链路移除宽高

1. 锁定共享 v6 无宽高合同

  1. 在写任何 symbol 前,对 OneTalkImageContentnormalizeImagemetadataFromcreateSendObservationCorrelator 和 protocol version 分别执行 GitNexus upstream impact,审查 HIGH/CRITICAL 结果后再改。
  2. 修改 shared image type、exact key list 和 guard,删除 image-dimension constant;把 v5 wire version 统一提升为 v6。
  3. 更新 contract fixtures:无宽高图片有效,带任一 canonical width/height key 无效;移除 dimension bounds cases,保留 size/URL/nullable metadata 边界。

2. 收敛 MAIN 发送、live decode 与确认

  1. 删除 raw image decoder 对 width/height 的读和校验;测试 raw image 缺字段、单字段、错误值和正常值都产出相同的无宽高 canonical content。
  2. 删除上传 metadata 与 correlator expected/match 中的 width/height;保留 tmpKey 隔离、候选 ID 优先、unique composite fallback、账号/目标 fence、45 秒 timeout 和 ambiguous failure。
  3. 更新 extension test fixtures、WebSocket tap / decoder / image-send / send-observation tests;新增“无宽高 live sent image 使实际 pending send 得到 confirmed_sent”的特征测试。

3. 清理读模型、支架和持久化数据

  1. 更新 server read-projection / websocket test images,使 v6 public result/read payload 不含 dimensions;断言旧 canonical dimensions 被 strict guard 拒绝。
  2. 更新 harness validator 与 image display,删除 dimensions 输出;只以 shared content contract 验证 v6 frames。
  3. 用 Drizzle custom migration 新增 0009 数据迁移和 journal entry:仅移除 image JSONB 顶层 dimensions。更新必要的 migration/read tests;有 TEST_DATABASE_URL 时以 60 秒硬超时运行 integration test,断言升级前数据被清理并可读。

4. 文档、质量门和真实联调

  1. 更新当前 docs 的 normalized image contract/confirmation fingerprint,明确 raw dimensions 被忽略;不重写 raw capture 或归档任务记录。
  2. 运行 targeted contract, decoder/websocket/image-send/send-observation, server read/WS tests;随后 pnpm typecheckpnpm buildpnpm testpnpm format:checkpnpm --filter @trade-message-center/server db:checkgit diff --check
  3. 执行 GitNexus detect_changes({scope:"all"}),检查变更仅落在 shared contract、MAIN observer/send、server migration/read tests、harness 与相关 docs。
  4. 在 v6 维护窗口按“停旧 server → migrate → v6 server → v6 extension/Mind client”运行。使用 Chromium 发送一张无敏感测试图片,确认 trace 经 live observation 到 confirmed_sent;没有该窗口时记录为未验证。

Rollback point

在执行 production migration 前,可回滚工作树和 release artifactmigration 执行后不回填尺寸。若要恢复旧客户端,必须先停止 v6 流量,再发布一个新的、显式记录的数据/协议迁移,不能修改或撤销已执行 migration。