pbl_runtime_ext/tests/evidence/rtx0005_round3_localdb_run_20260922.txt
agent.develop d8664874cf test(PBL-RTX-0005): 测试本体补 A8 组回归断言并自提收口(响应 QC #25/#5)
- tests/test_m11b1a_ddl_runtime.py(15489B, +2020B): layer_a() 新增 A8 组 5 条真实断言
  1) append_only_sql 过程体非法 RETURN 检出数==0(根因形态)
  2) full_script 全文 ^\\s*RETURN 命中==0
  3) 守卫未弱化: SIGNAL SQLSTATE 45000 >=3 + IF p_table + BEFORE UPDATE/DELETE 在位
  4) DELIMITER 配对完整(_delimiter_integrity_errors 零错, $$ / ; 均在产物)
  5) 门禁自检: 还原 RETURN; 坏样本必须被 _procedure_body_return_errors 检出(防永真假门禁)
- tests/evidence/rtx0005_round3_localdb_run_20260922.txt: run_m11b1a_localdb.sh 原样落盘
  rc=0, 34 项 PASS 34 FAIL 0(DDL 装载 rc=0 无 1064, 分区 7->11, prune 保 pmax, UPDATE/DELETE 被拒)
- tests/evidence/rtx0005_round3_gate_regression_20260922.txt: --verify rc=0 / pytest 9 passed /
  selftest 110 PASS 0 FAIL / 产物 grep RETURN=0,五段带 EXIT_CODE 原样输出
- docs/work-log-2026-09-22-rtx0005-round3.md: 本轮改动点与实跑结果归档
- 选择性 git add 4 项(未使用 git add -A);scripts/ 修复本体工作树与 HEAD 无差异,
  其入库在前序 dfffebb(引擎代收口),本轮不制造虚假差异
2026-09-22 17:01:19 +08:00

65 lines
5.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PBL-RTX-0005 第3轮收口:一次性本地 MariaDB 全量门禁回归(run_m11b1a_localdb.sh)
# 采集时间: 2026-09-22T16:59:10+08:00
# git HEAD: f91aa2e7c6b6eb7eab191eae4f4c8b2ac77b1e37
# 命令: bash tests/run_m11b1a_localdb.sh
---------------------------------------------
[runner] datadir=/tmp/m11b1a_localdb_6 port=13306
[runner] mariadbd ready (2s)
[runner] db=pbls user=pbls 就绪(一次性库,与项目 test/prod 无关)
[runner] full_script() 渲染 12346 bytes -> /tmp/m11b1a_localdb_6/full.sql
[runner] 装载 DDL(mariadb CLI + DELIMITER)
note
m11b-1 migrate: 人工执行,见注释
[runner] DDL 装载 rc=0(stderr 见下,应为空)
harness: /d/pipeline/workspaces/0/sdlc_general/modules/pbl_runtime_ext/scripts/pbl_runtime_event_ddl.py
[A] 离线层(% 转义 + 判定逻辑静态核验)
PASS A1 maintenance_sql 渲染不抛异常(QC#1) rc=0, 3424 bytes(修复前 rc=1 ValueError: unsupported format character 'Y')
PASS A2 维护段含完整对象 pbl_runtime_event_ensure_partitions 3 处
PASS A2 维护段含完整对象 pbl_runtime_event_prune_partitions 2 处
PASS A2 维护段含完整对象 ev_pbl_runtime_event_partition_maintain 2 处
PASS A2 DATE_FORMAT 参数为单 %% 形式('%Y-%m-01') 命中 5 处单 % 形式
PASS A2 无 '%%Y' 双写转义残留 grep -c '%Y' = 0
PASS A3 full_script() rc=0 rc=0
PASS A3 %(dbname)s/%(app_user)s 已被替换 残留 0 处
PASS A3 REVOKE 主机通配符为单 %%('pbls'@'%') 命中 'pbls'@'%' = 1,'@%' = 0
PASS A3 break-glass ctx 原样输出 6 处
PASS A4 create_table_sql sha256 == 修复前基线 30a83c8a9d729db9…
PASS A5 源码无 'EXPLAIN PARTITIONS ' 废弃语法 grep 命中 0
PASS A5 无未使用查询结果的空转 for 循环 row[3] 命中 0,for k in 命中 0
PASS A6 分区清单来自 information_schema.PARTITIONS+ORDINAL OK
PASS A6 落分区判定用 PARTITION(p) 反查 + EXPLAIN FORMAT=JSON OK
PASS A6 探针清理 break-glass 逻辑保留 guard_ctx 设置 2 处 / 复位 1 处
PASS A7 CLI --verify rc=0 末行: VERIFY PASS
PASS A7 CLI --print rc=0 末行: );
PASS A7 CLI --print-guard rc=0 末行: -- REVOKE UPDATE, DELETE ON `%(dbname)s`
PASS A7 CLI --print-maintain rc=0 末行: DO CALL pbl_runtime_event_ensure_partiti
PASS A7 CLI --emit rc=0 3 文件: 20260919_m11b_01_create_pbl_runtime_event.sql,20260919_m11b_02_pbl_runtime_event_append_only.sql,20260919_m11b_03_pbl_runtime_event_partition_maintenance.sql
PASS A7 --emit 维护段 DATE_FORMAT 单 % 3647 bytes
PASS A8 append_only_sql 过程体无非法 RETURN(PBL-RTX-0005 根因) 检出 0 条: 无
PASS A8 渲染产物全文无裸 RETURN 语句 grep -i '^\s*RETURN' 命中 0 处
PASS A8 append-only 守卫未弱化:正向条件 + 单语句 SIGNAL + 双触发器均在位 SIGNAL 3 处 / IF p_table 1 处
PASS A8 过程段 DELIMITER 配对完整(_delimiter_integrity_errors 零错) DELIMITER $$ / DELIMITER ; 配对 OK
PASS A8 自检:坏样本(还原 RETURN;)被 _procedure_body_return_errors 检出 检出 1 条: ["[bad_sample] L15 过程体出现非法 RETURN 语句(MariaDB 仅 FUNCTION 可用 RETURN,且该分号会使 CLI 提前切分语句 -> ERROR 1064): 'RETURN;'"]
[B] 实库层(一次性本地 MariaDB,不触碰项目 test/prod 库)
PASS B1 CLI(mariadb+DELIMITER) 装载 full_script() 后对象齐备 分区 7 个 / 维护过程 2 个 / 触发器 2 个
[verify-db] env=test+harness db=pbls
PASS 分区数 实际 7(含 pmax)
PASS MAXVALUE 兜底 p202609,p202610,p202611,p202612,p202701,p202702,pmax
PASS 跨月插入 2 条探针行(不同月份)
PASS 跨月落不同分区 m11bprobe000000_a -> p202609 | m11bprobe000000_b -> pmax
PASS 分区裁剪 命中 1/7 分区: p202609
PASS UPDATE 被拒 (-20535, 'PBL_APPEND_ONLY_DENIED')
PASS DELETE 被拒 (-20535, 'PBL_APPEND_ONLY_DENIED')
PASS B2 verify_db() rc=0 全项 PASS(QC#6) verify-db rc=0
PASS B3 CALL ensure_partitions(9) 补建出新月分区 新增 p202703,p202704,p202705,p202706(分区数 7→11)
PASS B4-setup REORGANIZE 拆出过期历史月分区 p202001(保留期语义不变) 分区清单含 p202001=True
PASS B4 CALL prune_partitions(2) DROP 旧月分区且保留 pmax DROP p202001(剩余 11 个)
PASS B5 _explain_partitions 解析出分区清单 命中 p202609(表内共 11 分区)
PASS B6 _locate_row_partition 定位到 information_schema 清单内的分区 h_a -> p202609(清单 p202609,p202610,p202611,p202612,p202701,p202702,p202703,p202704,p202705,p202706,pmax)
[汇总] 共 34 项,PASS 34,FAIL 0
HARNESS PASS
[runner] harness rc=0
EXIT_CODE=0