diff --git a/.m11b2c_tmp/selftest.err b/.m11b2c_tmp/selftest.err new file mode 100644 index 0000000..3ea06f0 --- /dev/null +++ b/.m11b2c_tmp/selftest.err @@ -0,0 +1,12 @@ +Traceback (most recent call last): + File "/d/pipeline/workspaces/0/sdlc_general/modules/pbl_runtime_ext/scripts/m11b_selftest.py", line 555, in + sys.exit(main()) + File "/d/pipeline/workspaces/0/sdlc_general/modules/pbl_runtime_ext/scripts/m11b_selftest.py", line 542, in main + suite_memory() + File "/d/pipeline/workspaces/0/sdlc_general/modules/pbl_runtime_ext/scripts/m11b_selftest.py", line 473, in suite_memory + asyncio.new_event_loop().run_until_complete(run()) + File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete + return future.result() + File "/d/pipeline/workspaces/0/sdlc_general/modules/pbl_runtime_ext/scripts/m11b_selftest.py", line 299, in run + r1 = await wtx.apply_runtime_event( +TypeError: apply_runtime_event() got an unexpected keyword argument 'client_key' diff --git a/.m11b2c_tmp/selftest.out b/.m11b2c_tmp/selftest.out new file mode 100644 index 0000000..2bada90 --- /dev/null +++ b/.m11b2c_tmp/selftest.out @@ -0,0 +1,68 @@ + +--- A. 离线单元 --- +partitions | partitions PASS:跨年命名 ['p202611', 'p202612', PASS partitions PASS:跨年命名 ['p202611', 'p202612', 'p202701', 'p202702'] +partitions | partitions PASS:下月边界 2027-01-01 PASS partitions PASS:下月边界 2027-01-01 +partitions | partitions PASS:已存在分区 skip、缺失分区 add PASS partitions PASS:已存在分区 skip、缺失分区 add +partitions | partitions PASS:DDL ALTER TABLE pbl_runtime PASS partitions PASS:DDL ALTER TABLE pbl_runtime_event ADD PARTITION (PARTITION p202602 VALUES LESS THAN (DATE'2026-03-01')) +partitions | partitions.self_check PASS PASS partitions.self_check PASS +partitions.self_check 整体 PASS +broadcast | broadcast PASS:after_cursor=4 只回 1 条 PASS broadcast PASS:after_cursor=4 只回 1 条 +broadcast | broadcast PASS:环形缓冲溢出报 truncated=True PASS broadcast PASS:环形缓冲溢出报 truncated=True +broadcast | broadcast PASS:通道按 tenant.world 隔离 PASS broadcast PASS:通道按 tenant.world 隔离 +broadcast | broadcast PASS:订阅者扇出成功 PASS broadcast PASS:订阅者扇出成功 +broadcast | broadcast PASS:stats published=6 p95=0.016ms PASS broadcast PASS:stats published=6 p95=0.016ms 越界=0 +broadcast | broadcast PASS:通道命名 pbl.world.7.1 PASS broadcast PASS:通道命名 pbl.world.7.1 +broadcast | broadcast.self_check PASS PASS broadcast.self_check PASS +broadcast.self_check 整体 PASS +latency | latency PASS:裁决 120ms ≤ 200ms 未越界 PASS latency PASS:裁决 120ms ≤ 200ms 未越界 +latency | latency PASS:裁决 450ms > 200ms 记越界 PASS latency PASS:裁决 450ms > 200ms 记越界 +latency | latency PASS:summary avg=285.0 p95=450.0 breac PASS latency PASS:summary avg=285.0 p95=450.0 breaches=1 +latency | latency PASS:轮询兜底 3000ms 已配置 PASS latency PASS:轮询兜底 3000ms 已配置 +latency | latency PASS:p95=10 PASS latency PASS:p95=10 +latency | latency PASS:Timer 实测 5.1ms PASS latency PASS:Timer 实测 5.1ms +latency | latency.self_check PASS PASS latency.self_check PASS +latency.self_check 整体 PASS +tx_write | tx_write PASS:幂等键同参同键、异参异键、≤32 字符(bebdba41666 PASS tx_write PASS:幂等键同参同键、异参异键、≤32 字符(bebdba416666…) +tx_write | tx_write PASS:client_event_id 原样透传(重放同键) PASS tx_write PASS:client_event_id 原样透传(重放同键) +tx_write | tx_write PASS:pbl_runtime_event 禁 UPDATE/DELE PASS tx_write PASS:pbl_runtime_event 禁 UPDATE/DELETE/TRUNCATE +tx_write | tx_write PASS:基表写保护生效(world 等 6 张) PASS tx_write PASS:基表写保护生效(world 等 6 张) +tx_write | tx_write PASS:pbl_runtime_event 用到的 13 列与 mod PASS tx_write PASS:pbl_runtime_event 用到的 13 列与 models 定义一致 +tx_write | tx_write PASS:pbl_entity_state 用到的 9 列与 model PASS tx_write PASS:pbl_entity_state 用到的 9 列与 models 定义一致 +tx_write | tx_write PASS:pbl_world_state_snapshot 用到的 9 PASS tx_write PASS:pbl_world_state_snapshot 用到的 9 列与 models 定义一致 +tx_write | tx_write PASS:3 协程契约 + 1 同步守卫签名正确 PASS tx_write PASS:3 协程契约 + 1 同步守卫签名正确 +tx_write | probe| PASS P1 正常写入(事件+2状态+快照)单事务提交:stmt=8 事件 PASS probe| PASS P1 正常写入(事件+2状态+快照)单事务提交:stmt=8 事件行=1 状态行=2 快照行=1 广播在commit后=True 占位符违规=0 +tx_write | probe| PASS P2 幂等重放:dedup=True 事件行数=1 广播次数=0( PASS probe| PASS P2 幂等重放:dedup=True 事件行数=1 广播次数=0(重放不重复写、不重复广播) +tx_write | probe| PASS P3 乐观锁冲突回滚:错误码=PBL-STATE-CONFLICT PASS probe| PASS P3 乐观锁冲突回滚:错误码=PBL-STATE-CONFLICT commit=-1 rollback=5 事件行残留=0 广播=0 +tx_write | probe| PASS P4 中途故障原子性:抛出=RuntimeError rollba PASS probe| PASS P4 中途故障原子性:抛出=RuntimeError rollback=5 已提交事件行=0 已提交状态行=0 广播=0 +tx_write | probe| PASS P5 append-only:UPDATE/DELETE/TRUN PASS probe| PASS P5 append-only:UPDATE/DELETE/TRUNCATE 被代码守卫拦截=True 引擎兜底拦截=True +tx_write | probe| PASS P6 占位符/参数数门禁生效:'SELECT 1'+2参数 被拒( PASS probe| PASS P6 占位符/参数数门禁生效:'SELECT 1'+2参数 被拒(错误码=PBL-RTX-0005) +tx_write | probe| PASS P7 契约三处同步:6/6 对齐 PASS probe| PASS P7 契约三处同步:6/6 对齐 +tx_write | probe| m11b_probe PASS:7 项探针(state_updates 非空 PASS probe| m11b_probe PASS:7 项探针(state_updates 非空端到端 P1~P4 + 守卫 P5 + 门禁有效性 P6 + 三处同步 P7) +tx_write | tx_write.self_check PASS PASS tx_write.self_check PASS +tx_write.self_check 整体 PASS +m11b_api | m11b_api PASS:5 个协程契约齐备 PASS m11b_api PASS:5 个协程契约齐备 +m11b_api | m11b_api PASS:assert_append_only 同步守卫可调用 PASS m11b_api PASS:assert_append_only 同步守卫可调用 +m11b_api | m11b_api PASS:contracts 清单 8 项与注册表一致 PASS m11b_api PASS:contracts 清单 8 项与注册表一致 +m11b_api | m11b_api.self_check PASS PASS m11b_api.self_check PASS +m11b_api.self_check 整体 PASS +rtx_db | rtx_db PASS:仅用 sor.C/U/R/sqlExe + sqlorContext PASS rtx_db PASS:仅用 sor.C/U/R/sqlExe + sqlorContext(无模块级猜测签名) +rtx_db | rtx_db PASS:事务原语探测 sor/conn/sql 三级 PASS rtx_db PASS:事务原语探测 sor/conn/sql 三级 +rtx_db | rtx_db PASS:无 begin/commit/rollback → 探测返回 Non PASS rtx_db PASS:无 begin/commit/rollback → 探测返回 None(上层抛 PBL-RTX-0002) +rtx_db | rtx_db PASS:库名不可得即抛 PBL-RTX-0001(不猜默认库) PASS rtx_db PASS:库名不可得即抛 PBL-RTX-0001(不猜默认库) +rtx_db.self_check 整体 PASS +A[三处同步] apply_runtime_event PASS impl=True export=True register=True +A[三处同步] poll_events PASS impl=True export=True register=True +A[三处同步] read_states PASS impl=True export=True register=True +A[三处同步] assert_append_only PASS impl=True export=True register=True +A[三处同步] pbl_runtime_broadcast_pull PASS impl=True export=True register=True +A[三处同步] pbl_runtime_broadcast_stats PASS impl=True export=True register=True +A[包出口可导入] pbl_runtime_broadcast_pull PASS +A[包出口可导入] pbl_runtime_broadcast_stats PASS +A[包出口可导入] apply_runtime_event PASS +A[包出口可导入] poll_events PASS +A[包出口可导入] read_states PASS +A[包出口可导入] assert_append_only PASS +A[M11b 注册清单完整(fail-closed 门禁)] FAIL missing=['pbl_runtime_event_append', 'pbl_runtime_event_poll', 'pbl_entity_state_get', 'pbl_entity_state_apply', 'pbl_world_broadcast', 'pbl_session_member_add'] total=12 +A[M11a 注册·环境受限未验证(pbl_common 不可导入)] PASS missing=['pbl_runtime_event_append', 'pbl_runtime_event_poll', 'pbl_entity_state_get', 'pbl_entity_state_apply', 'pbl_world_broadcast', 'pbl_session_member_add'](真实宿主有 pbl_common,load 时 fail-closed 核对) + +--- B. 内存事务引擎端到端(真实 apply_runtime_event 主链路)--- diff --git a/pbl_runtime_ext.egg-info/PKG-INFO b/pbl_runtime_ext.egg-info/PKG-INFO new file mode 100644 index 0000000..d0bc2cd --- /dev/null +++ b/pbl_runtime_ext.egg-info/PKG-INFO @@ -0,0 +1,6 @@ +Metadata-Version: 2.4 +Name: pbl_runtime_ext +Version: 1.0.0 +Summary: scense_runtime 薄扩展:单事务事件+状态写入与广播(M11a/M11b) +Requires-Python: >=3.8 +Requires-Dist: sqlor diff --git a/pbl_runtime_ext.egg-info/SOURCES.txt b/pbl_runtime_ext.egg-info/SOURCES.txt new file mode 100644 index 0000000..5e44eec --- /dev/null +++ b/pbl_runtime_ext.egg-info/SOURCES.txt @@ -0,0 +1,24 @@ +README.md +pyproject.toml +pbl_runtime_ext/__init__.py +pbl_runtime_ext/api.py +pbl_runtime_ext/broadcast.py +pbl_runtime_ext/context.py +pbl_runtime_ext/db.py +pbl_runtime_ext/idempotency.py +pbl_runtime_ext/init.py +pbl_runtime_ext/latency.py +pbl_runtime_ext/m11b_api.py +pbl_runtime_ext/m11b_config.py +pbl_runtime_ext/m11b_probe.py +pbl_runtime_ext/partitions.py +pbl_runtime_ext/rtx_db.py +pbl_runtime_ext/tables.py +pbl_runtime_ext/tx_event.py +pbl_runtime_ext/tx_write.py +pbl_runtime_ext.egg-info/PKG-INFO +pbl_runtime_ext.egg-info/SOURCES.txt +pbl_runtime_ext.egg-info/dependency_links.txt +pbl_runtime_ext.egg-info/requires.txt +pbl_runtime_ext.egg-info/top_level.txt +tests/test_m11b1a_ddl_runtime.py \ No newline at end of file diff --git a/pbl_runtime_ext.egg-info/dependency_links.txt b/pbl_runtime_ext.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/pbl_runtime_ext.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/pbl_runtime_ext.egg-info/requires.txt b/pbl_runtime_ext.egg-info/requires.txt new file mode 100644 index 0000000..68b15ea --- /dev/null +++ b/pbl_runtime_ext.egg-info/requires.txt @@ -0,0 +1 @@ +sqlor diff --git a/pbl_runtime_ext.egg-info/top_level.txt b/pbl_runtime_ext.egg-info/top_level.txt new file mode 100644 index 0000000..7558cd2 --- /dev/null +++ b/pbl_runtime_ext.egg-info/top_level.txt @@ -0,0 +1 @@ +pbl_runtime_ext