补充SQL配置切换联合故障验收记录
Some checks are pending
Security Checks / security (push) Waiting to run

This commit is contained in:
smail 2026-09-22 01:58:42 +08:00
parent 5e7b57d754
commit aa78d3e731

View File

@ -32,7 +32,7 @@
- [✓] 修复自动 DNS 证书加载与导出遗漏根域名校验,保留整改前云端失败反例;新候选的证书专项与三库回归通过。
- [✓] SQLite 同引擎及双 SQL 同引擎、跨引擎切库后的真实进程重启与目标不可用恢复;分阶段证据见后文。
- [✓] 涉及 SQLite 的四个跨引擎应用级方向分阶段通过;不同候选与资源配置的证据不合并为最终候选统一矩阵。
- [ ] SQL 中断及 SQLite 提交/配置切换临界点恢复。
- [✓] MySQL、PostgreSQL 的 SQL 提交与配置切换临界点恢复;SQLite 相关中断项仍按独立专项记录,不与 SQL 联合故障结果合并。
- [ ] 最新候选浏览器初始化、账号恢复及完整用户操作闭环。
- [!] Windows 提权本地通道验收需要管理员会话,当前终端未提权。
- [!] 生产 DNS 自动续期需要安全注入有效且已轮换的最小权限凭据,当前为手动托管证书。
@ -375,7 +375,7 @@ PostgreSQL → SQLite 两次在初始化恢复码生成时发生 30 秒 HTTP 读
22:56 独立复核 40 份实机证据、两份程序及两组八个工具的远端摘要一致,709 份构建输入(含 619 份 Go 源文件)未漂移;六个测试账号锁定,PostgreSQL 建库权限撤销,测试库连接及本轮测试进程归零。正式六服务和程序未变,用户原全项目报告没有编辑或暂存。本项复审通过,但未替换正式部署。
事务提交和配置切换临界点、跨引擎复制中断及最终完整发行候选统一验收仍未关闭;其他生产门禁维持原状态,不将本轮双 SQL 结果扩展为整体生产放行。
跨引擎复制中断和最终完整发行候选统一验收仍未关闭;本轮双 SQL 结果已覆盖 MySQL、PostgreSQL 的提交与配置切换临界点,但不扩展为整体生产放行。
### 9 月 21 日晚启动的配置事务崩溃恢复补充
@ -388,3 +388,29 @@ PostgreSQL → SQLite 两次在初始化恢复码生成时发生 30 秒 HTTP 读
最新后端候选 `89e115d94ef2f12fd2ab082888f22517460e87cbe9e1b5a98d32f55ae38426b8` 在 `20260921-235814` 隔离实例完成 SQLite 正常迁移、内部与进程重启、目标库故障失败关闭及恢复后的邮件正文和附件验证。最终活动库为 `migrated.db`,业务与配置历史同库,源库及占用目标仅作为离线证据保留。前端及插件资源复用,不宣称完整发行包重构建,也未替换正式部署。
独立复核 21 份远端程序、工具与日志文件摘要一致、710 份构建输入未漂移,六个已核查测试单元均停止,隔离应用活动事务和暂存区为空。正式六服务及程序、用户原全项目报告未变。本轮专项范围复审通过;完整应用 SQL 提交与配置切换联合故障点、恢复过程再次中断、最终统一发行候选及其他生产门禁继续未关闭。
### MySQL、PostgreSQL SQL 提交与配置切换联合故障补充
本节记录工作区现有的四份联合故障结果,不覆盖或改写用户原有的 `docs/云端全项目测试报告.md`。测试使用同一份隔离候选主程序,SHA-256 为 `0daae897a5272f53ff78c23ef47f043e5ec18e6795424a271bb568fe159de223`;正式 `/opt/smail` 实例未替换、未重启、未清库,同机其他服务未停止。
| 数据库 | 故障边界 | 结果文件 | 结果 |
| --- | --- | --- | --- |
| MySQL | 根配置原子替换前 | `test-log/production-remediation-20260921/switch-fault-result-20260922-010951.json` | 通过 |
| MySQL | 根配置原子替换后 | `test-log/production-remediation-20260921/switch-fault-result-20260922-012102.json` | 通过 |
| PostgreSQL | 根配置原子替换前 | `test-log/production-remediation-20260921/switch-fault-result-20260922-013137.json` | 通过 |
| PostgreSQL | 根配置原子替换后 | `test-log/production-remediation-20260921/switch-fault-result-20260922-013651.json` | 通过 |
四份结果共同确认:
- SQL 目标库可见完整已提交邮件数据,配置历史已提交且摘要一致,事务清单的 `sections_committed` 阶段和根配置替换边界均被真实观测。
- 只有在应用线程全部停止后才终止隔离进程;强制终止后,正式配置管理器可自动恢复,历史邮件、新邮件、正文、附件以及再次进程重启均可读取或通过。
- 源库内容未变化,源库连接归零,目标库成为唯一活动数据库;完整性结果为 `sqlite_files: 0`,配置记录为 1,清理错误和资源错误均为空。
- PostgreSQL 临时建库权限已撤销,随机测试数据库账号已锁定;正式服务的 `ActiveState`、`MainPID`、`InvocationID` 和 `NRestarts` 在结果证据中保持不变。
此前修复前捕获的失败结果 `switch-fault-result-20260922-003538.json` 保留为真实反例:它记录了原子写临时文件误判导致的启动恢复阻断,不能改写为通过,也不计入四个通过场景。
上述四个结果只关闭 SQL 提交与配置切换联合故障专项,不等同于最终生产放行。浏览器完整验收、外部邮件投递与恢复邮件、插件调用及密钥边界、Windows 提权本地 IPC、自动续期与换证、容量长稳、异机灾备、真实公网 DNS/泛域名证书及最终统一发行候选仍未关闭。
本次继续执行期间尝试再次进行云端只读收尾复核,但 SSH 返回 `Authentication failed`;未使用不安全的主机密钥或 TLS 绕过,也未对云端执行任何变更。因此本节引用的是已保存的隔离结果和既有收尾证据,不能把本次失败的即时连接尝试表述为新的云端复核通过。
结果文件名含 `20260922`,而当前会话适用日期为 2026 年 9 月 21 日;本节仅如实登记工作区现有文件内容,不据此伪造本会话的执行时间线。日期一致后仍应使用严格 SSH 凭据重新执行只读收尾复核。