Skip to content

确认旧 LedgerAccount/escrow 存量是否仍适用;适用时验证隔离迁移 #65

Open

Description

@LIghtJUNction

当前范围 · 2026-10-03

源码迁移已经完成并随当前主线通过:固定旧源码生成的真实 PostgreSQL/v4 备份覆盖账项与签署 receipt 原字节、sequence、余额/总量、历史引用、并发启动,以及每个迁移阶段中断后的完整回滚和原库重试。无需继续把这些实现写成未完成。

本 issue 只保留实际旧库是否仍适用及该快照的隔离验收。下一步是只读盘点 legacy escrow 和保留旧快照;有对象才做经批准的隔离守恒/回滚演练。若当前部署和保留数据已无此类旧库,本项应按不再计划关闭,而不是永久要求不存在的现场快照。

剩余完成条件

  • 先做经授权只读存量盘点:部署schema/版本、legacy_escrow_identities以及是否有仍需迁移的旧快照;公开只写数量/摘要,不公开行值或备份。
  • 若确有旧数据,取得保护manifest/来源/冻结时间后,仅在全新隔离PG验证该快照守恒与失败回滚;若没有适用旧库或保留快照,可将此现场专项按not_planned关闭并保留源码兼容回归。

本轮依据当前主线 105c2cf716c1179d49bc79224f10f44a3b031163、已完成 CI 和只读部署盘点更新范围。没有执行新的生产迁移、删除、Root/CA 变更或资金操作。旧的全章/全客户端人工矩阵不再作为本项永久门槛。

历史需求与旧验收记录(保留供查阅;当前待办以上述范围为准)

2026-09-28 核验:迁移代码与旧版本 fixture 已有证据;真实存量库验收 blocked

当前核查 main 13c562ea05d273e618b1ea06b9e452da79d4439f、CI 36384948145 success;四分片完整回归证据见 #83。代码级修复不能替代生产清单、受保护备份或现场迁移/回滚批准。

已完成,不能重做或回退

  • Validate semantic escrow references and real legacy backup migration #87 的 PostgreSQL LedgerAccount/旧 escrow Subject 分阶段迁移:检查直接列与有类型 JSON 身份引用,未知权威引用/未知相关表 fail closed;在既有事务/advisory lock 中完成。
  • 使用真实固定旧代码 ac083b3666b1b5268d90115129e2cc4e0dd11521 生成数据库和 v4 备份,非当前 schema 伪造旧库;原 28 项定向证据按原提交保留。
  • 既有回归覆盖重复/并发初始化、故障注入和完全回滚、账项/receipt 原字节、sequence、余额/总量、订单/bounty/claim/history 及不可变约束;后续主线的有类型 settlement 引用分类必须保留。

剩余验收

  • 经授权取得真实生产版本、schema/主体/账户/引用清单与受保护备份 manifest,记录数据时间点与来源。
  • 在全新隔离目录/空 PostgreSQL 上恢复真实快照,先 preflight;比对所有账项字段、精确签名 receipt、sequence、总量、各主体余额、订单/托管/悬赏与历史引用。
  • 使用该快照执行中断/回滚/重试/并发启动演练,确认无悬空引用、负余额、系统账户被身份/凭据/恢复激活;未知来源继续拒绝。
  • 对照新市场 schema 验证引用分类,无财务及签署历史重写;隔离恢复不能激活外发、写入或旧授权。与 [P1] 一致备份恢复后重放撤销与退役事实 #69 的 quarantine/replay 及 生产容量与适用快照、独立授权检查点及隔离恢复记录 #84 现场验收联合核对。

任务 A

主责存量迁移、备份与 preflight;storage/ledger_migration.py 的身份引用约束由 A 维护,任务 B 的新增市场引用通过窄补丁/明确表语义接入,禁止放宽 unknown-table 拒绝。公共 PostgreSQL DDL 接线按 #83 由 C 串行整合。

目前未取得真实生产快照/清单,也未执行生产迁移或回滚。缺少授权/材料时保持 open/blocked,交付安全的可复现实验和材料清单,不用测试 fixture 冒充真实快照、不上传任何生产备份或秘密。操作与字段边界见 docs/LEDGER_MIGRATION.md;原第 05/09/11/15 章验收范围不变。

Activity

  1. LIghtJUNction commented on Sep 28, 2026

    @LIghtJUNction
    ContributorAuthor

    Refs #65 — #116 的A增量增加只读preflight,保留现有隔离旧LedgerAccount迁移/回滚工具,不改公共DDL/初始化接线。head c97a528。

    admin/preflight.inspect_database复用_escrow_sources/_validate_identity_references/_validate_ledger,有界游标摘要原始账项文本,不重写历史receipt/签名、不把历史金融引用当用户权限;空库不建表,legacy未迁移明确blocked,未知权威引用不放宽。新增真实PG只读/no-sequence-change回归通过。

    B跨组复核仅针对#103@9dc0d3d源码:purchase_escrow保持LedgerAccount而非Subject;money_purchases.escrow_account非空FK;market迁移和旧账本迁移在同一初始化事务;store_order_events.actor属于身份引用而receipt_refs属于历史财务引用。没有把尚未合入B的DDL全文件覆盖进A。

    真实生产旧库清单、受保护快照来源/摘要、用该快照完成的隔离迁移/失败回滚/守恒证据仍未提供,不能由本地fixture或当前CI代替;本issue现场验收继续open/blocked。#116新head完整四分片会运行仓库既有真实PG/固定旧源码迁移测试,结果另在PR记录。无生产恢复/删除或部署。

  2. added 2 commits that reference this issue on Sep 28, 2026
  3. LIghtJUNction commented on Sep 29, 2026

    @LIghtJUNction
    ContributorAuthor

    2026-09-29 当前接续(#185 已合并)

    main 5cdaeba2b7b191a27684093cce7b5a153c99c88d / tree 3ad68f2012896310abfa9bcaf800c9ab05f6c886 已实际读回,等于最终PR通过的树。18个PR工作流全部success;8份ZIP摘要/JUnit node-ID独立核验 2531 core + 8 conformance,零失败/错误/跳过。精确来源和产物摘要见 #185证据,更新索引见#83。合并后main push是独立运行,正在核验,不预记成功。

    旧版本固定源码生成快照的迁移/保全/回滚回归随最终头重新通过,SQLite fixture 的连接泄漏已修复,不改变原始签署事实或迁移拒绝规则。仍缺真实存量库的合法来源、保护manifest、冻结时间及该快照的隔离迁移/回滚材料;fixture不是现场库。

    各条款源码入口与独立现场材料见 docs/RELEASE_ACCEPTANCE.md。本评论更新证据归属,不降低原验收范围或扩大现场权限。

  4. LIghtJUNction commented on Oct 3, 2026

    @LIghtJUNction
    ContributorAuthor

    源码迁移已经完成并随当前主线通过:固定旧源码生成的真实 PostgreSQL/v4 备份覆盖账项与签署 receipt 原字节、sequence、余额/总量、历史引用、并发启动,以及每个迁移阶段中断后的完整回滚和原库重试。无需继续把这些实现写成未完成。

    本 issue 只保留实际旧库是否仍适用及该快照的隔离验收。下一步是只读盘点 legacy escrow 和保留旧快照;有对象才做经批准的隔离守恒/回滚演练。若当前部署和保留数据已无此类旧库,本项应按不再计划关闭,而不是永久要求不存在的现场快照。

  5. changed the title [-][P0] 真实旧库快照验证 LedgerAccount/escrow 迁移与回滚[/-] [+]确认旧 LedgerAccount/escrow 存量是否仍适用;适用时验证隔离迁移[/+] on Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions