diff --git a/backend/internal/repository/recovery_disposition_mysql_test.go b/backend/internal/repository/recovery_disposition_mysql_test.go index 0e31045..fcd9196 100644 --- a/backend/internal/repository/recovery_disposition_mysql_test.go +++ b/backend/internal/repository/recovery_disposition_mysql_test.go @@ -5,6 +5,8 @@ import ( "strings" "testing" + "github.com/go-sql-driver/mysql" + "git.pcux.cn/xuans/Scert/backend/internal/database" "git.pcux.cn/xuans/Scert/backend/internal/deployment" "git.pcux.cn/xuans/Scert/backend/internal/testsupport/mysqltest" @@ -56,7 +58,12 @@ func TestRecoveryDispositionMySQLReal(t *testing.T) { t.Fatal(err) } if auditFailure { - if _, err := raw.ExecContext(t.Context(), `CREATE TRIGGER reject_finish BEFORE INSERT ON recovery_events FOR EACH ROW SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'injected'`); err != nil { + parsed, err := mysql.ParseDSN(cfg.DSN) + if err != nil || !strings.HasPrefix(parsed.DBName, "scert_test_") { + t.Fatal("invalid isolated database configuration") + } + schema := "`" + strings.ReplaceAll(parsed.DBName, "`", "``") + "`" + if _, err := server.Admin().ExecContext(t.Context(), `CREATE TRIGGER `+schema+`.reject_finish BEFORE INSERT ON `+schema+`.recovery_events FOR EACH ROW SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'injected'`); err != nil { t.Fatal(err) } } diff --git a/doc/Linux生产流程测试记录.md b/doc/Linux生产流程测试记录.md index 625ebe2..7eca998 100644 --- a/doc/Linux生产流程测试记录.md +++ b/doc/Linux生产流程测试记录.md @@ -1,5 +1,14 @@ # Linux 生产流程测试记录 +## 2026年10月3日20:04 MySQL 修复复测与磁盘复核 + +- [x] 原任务 `scert-disposition-extra-20261003-1945.service` 已失败终止:补充竞态通过,MySQL 迁移十二场景通过;仓储三个审计注入因错误 1419 失败。原日志保留,不记整组通过。 +- [x] 修复任务 `scert-disposition-fix-20261003-2000.service` 成功结束;`disposition-mysql-fix.log` 显示三动作及三个审计失败回滚全部通过,`DISPOSITION_MYSQL_FIX_EXIT=0`,仓储约 32.197 秒。 +- [x] 故障触发器仅由本次隔离实例管理连接创建,限定测试数据库;仓储继续使用受限业务连接,严格 TLS 与回环监听保持。 +- [x] 第二台 `45.136.13.241` 根分区 29 GB,已用 2.9 GB,可用 26 GB,使用率 10%,inode 3%;Scert、scert-nginx、nginx、mysql、pmail 均 active,`nginx -t` 通过。本次只读复核。 +- [ ] 上述证据仅证明专项和主机状态,不代表正式安装包、公共 HTTPS 或生产验收通过。 + + ## 2026年10月3日19:43 自动回归及实机边界 本节覆盖先前仍标运行中的结果;这些是第一台隔离目录中的原生 Linux Go 回归,不是正式候选包验收。未清理生产数据库、未手工改历史事务、未创建辅助验收脚本。 diff --git a/doc/Scert开发任务清单.md b/doc/Scert开发任务清单.md index 254620f..98c3fc4 100644 --- a/doc/Scert开发任务清单.md +++ b/doc/Scert开发任务清单.md @@ -1,5 +1,13 @@ # Scert 开发任务清单 +## 2026年10月3日20:04 开发与回归状态 + +- [x] MySQL 审计故障注入改用隔离实例管理连接,受限业务连接仍执行全部仓储操作;六场景复测通过。 +- [x] MySQL 迁移十二场景及补充竞态通过;`17eb2fc` 已推送。 +- [~] 开发部署全生命周期互斥和持久化人工占用防护,包含取消及并发回归。 +- [ ] 一次性本机确认、真实动作执行、本机交互、PostgreSQL 实库及最新后端全量仍待完成;不宣称生产可上线。 + + ## 2026年10月3日19:43 当前开发进度 - [x] R3 只读准备与重新核验基础已编码并通过 Linux 三包竞态;HTTP 全包竞态与完整静态检查通过。原后端最新全量也已通过。 diff --git a/doc/Scert整改任务执行清单.md b/doc/Scert整改任务执行清单.md index 5d076eb..90f9723 100644 --- a/doc/Scert整改任务执行清单.md +++ b/doc/Scert整改任务执行清单.md @@ -1,5 +1,13 @@ # Scert 整改任务执行清单 +## 2026年10月3日20:04 当前执行状态 + +- [x] 隔离 MySQL 迁移十二场景通过,仓储三动作及三个审计失败回滚场景修复后通过。 +- [x] 补充竞态通过;此前权限失败日志未覆盖,未放宽生产数据库权限。 +- [~] 接入部署完整互斥及自动恢复占用检查,随后执行最新全量。 +- [ ] R3/R4 整体与 R5 正式包、真实邮件、三数据库首次流程及双机验收仍未完成。 + + ## 2026年10月3日19:43 当前执行状态 - [x] 修改前检查点 `ed0c97b` 已提交并推送,根目录 `=` 未暂存、未删除。 diff --git a/doc/Scert整改合并优化清单.md b/doc/Scert整改合并优化清单.md index cb8f25a..50237da 100644 --- a/doc/Scert整改合并优化清单.md +++ b/doc/Scert整改合并优化清单.md @@ -1,5 +1,16 @@ # Scert 整改、合并与优化清单 +## 2026年10月3日20:04 最新执行进度 + +本节覆盖下方历史状态;仍仅处理 Linux,生产验收未通过。 + +- [x] MySQL 迁移 22—24 的十二个中断重入与结构冲突场景通过;补充数据库重开及准备绑定竞态专项通过。 +- [x] MySQL 三动作正向及三个审计失败回滚场景全部通过,修复后专项退出码零,约三十二秒。原权限失败记录保留;仅隔离实例管理连接创建触发器,业务账户权限未提升。 +- [x] 检查点 `17eb2fc` 推送重试成功;第二台实机复核根分区可用 26 GB,五项服务运行,Nginx 配置通过,本次未再删文件。 +- [~] R4 下一批:进程内互斥覆盖普通部署、HTTPS 校验、恢复和收尾;自动恢复识别持久化人工占用,查询失败时拒绝操作且不改原事务。 +- [ ] R3 一次性本机确认、动作执行器及本机协议接入,R4 PostgreSQL 实库与完整回归,R5 正式候选包及生产门禁仍待完成。 + + ## 2026年10月3日19:43 最新执行进度 本节覆盖下方历史状态。范围仍为 Linux;第一台部署测试,第二台仅证书推送,Smail 地址为 `web.cdis.cn`。状态标记:[ ] 未开始;[~] 进行中;[x] 已完成等待复审;[✓] 复审通过;[!] 阻塞。 diff --git a/doc/部署事务人工处置设计.md b/doc/部署事务人工处置设计.md index 76157ae..8ce4b60 100644 --- a/doc/部署事务人工处置设计.md +++ b/doc/部署事务人工处置设计.md @@ -1,5 +1,13 @@ # 部署事务人工处置设计 +## 2026年10月3日20:04 实现与待接入边界 + +- [x] 持久化 MySQL 迁移十二场景、仓储三动作及审计失败回滚六场景通过。 +- [~] 下一步把普通部署、HTTPS 核验、异常收尾和自动恢复纳入可取消的进程内互斥;人工执行器必须复用同一互斥。 +- [~] 自动恢复遇到持久化占用或占用查询失败时不连接远端、不更新原事务,保留人工处置绑定及现场。 +- [ ] 进程内互斥不替代数据库占用和远端文件锁;一次性确认、动作专属核验、协议接入及多进程/重启验证仍需完成。 + + ## 2026年10月3日19:43 持久化基础实现状态 - [x] 准备与重新核验基础已通过原生 Linux 竞态;HTTP 全包竞态与完整静态检查通过,准备对象仍不代表执行授权。 diff --git a/doc/部署事务人工核查任务清单.md b/doc/部署事务人工核查任务清单.md index 2f7ed4a..8f67e53 100644 --- a/doc/部署事务人工核查任务清单.md +++ b/doc/部署事务人工核查任务清单.md @@ -1,5 +1,12 @@ # 部署事务人工核查任务清单 +## 2026年10月3日20:04 最新任务状态 + +- [x] 持久化补充竞态、MySQL 迁移十二场景和仓储六场景通过;仓储审计故障注入权限问题已在测试夹具层修复。 +- [~] R4-A:完整部署互斥、自动恢复占用识别及失败关闭;尚未形成执行器端到端链路。 +- [ ] R3 一次性本机确认和三类动作、本机协议与终端接入、PostgreSQL 实库及正式包验收仍待完成。 + + ## 2026年10月3日19:43 最新任务状态 - [x] R1/R2 底层及本机入口的最新 Linux 三包竞态、完整静态检查、HTTP 全包竞态通过;仍待正式包复审。