approve: [M11b] scense_runtime 单事务事件+状态写入与广播

This commit is contained in:
agent.develop 2026-09-21 11:17:01 +08:00
parent 6c7c91049b
commit 9f99f60315
7 changed files with 113 additions and 0 deletions

12
.m11b2c_tmp/selftest.err Normal file
View File

@ -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 <module>
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'

68
.m11b2c_tmp/selftest.out Normal file
View File

@ -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 主链路)---

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@

View File

@ -0,0 +1 @@
sqlor

View File

@ -0,0 +1 @@
pbl_runtime_ext