fix(M11b-3/4): rbac_seed traceability 改为 grep 实测函数名/所在文件(响应 QC #20)
- 8 条 permissions[].traceability 原声称 pbl_runtime_ext/api.py::api_<契约名>, 实测 grep -rn 'api_pbl_' --include=*.py . 零命中:api.py 内函数无 api_ 前缀 - 逐条改写为「契约名 → pbl_runtime_ext/<实际文件>::<实际函数名>(行号)→ load_path.py PATHS[i]」 - broadcast_pull/stats 两条落 m11b_api.py:45/:83(api.py:265 经 from .m11b_api import 再导出) - 顺手修 --check 成功行 print 中误写的 '%%'(非 % 格式化上下文,原样打出双百分号) - 回归:python3 scripts/m11b34_rbac_seed.py --check rc=0(permissions=8 errors=0)
This commit is contained in:
parent
e141be2b9d
commit
b54ff004af
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"module": "pbl_runtime_ext",
|
"module": "pbl_runtime_ext",
|
||||||
"milestone": "M11b-3 / M11b-4",
|
"milestone": "M11b-3 / M11b-4",
|
||||||
"note": "PBL 运行时广播/轮询端点 RBAC 权限种子清单(逐条显式登记,禁止 % / * 通配符)。由 scripts/m11b34_rbac_seed.py 导入 permission/rolepermission,并把 scripts/load_path.py --check 收敛到 rc=0。",
|
"note": "PBL 运行时广播/轮询端点 RBAC 权限种子清单(逐条显式登记,禁止 % / * 通配符)。由 scripts/m11b34_rbac_seed.py 导入 permission/rolepermission,并把 scripts/load_path.py --check 收敛到 rc=0。traceability 中的函数名与所在文件均为 grep 实测值(响应 QC #20)。",
|
||||||
"default_role": "logined",
|
"default_role": "logined",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{
|
{
|
||||||
@ -12,7 +12,7 @@
|
|||||||
"endpoint": "wwwroot/api/pbl_runtime_event_append.dspy",
|
"endpoint": "wwwroot/api/pbl_runtime_event_append.dspy",
|
||||||
"milestone": "M11b-2",
|
"milestone": "M11b-2",
|
||||||
"title": "运行时事件追加(单事务事件+状态写入)",
|
"title": "运行时事件追加(单事务事件+状态写入)",
|
||||||
"traceability": "契约 pbl_runtime_event_append → pbl_runtime_ext/api.py::api_pbl_runtime_event_append → scripts/load_path.py PATHS[0]"
|
"traceability": "契约 pbl_runtime_event_append → pbl_runtime_ext/api.py::pbl_runtime_event_append(api.py:44)→ scripts/load_path.py PATHS[0]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pbl_runtime_event_poll",
|
"name": "pbl_runtime_event_poll",
|
||||||
@ -22,7 +22,7 @@
|
|||||||
"endpoint": "wwwroot/api/pbl_runtime_event_poll.dspy",
|
"endpoint": "wwwroot/api/pbl_runtime_event_poll.dspy",
|
||||||
"milestone": "M11b-4",
|
"milestone": "M11b-4",
|
||||||
"title": "运行时事件 3s 轮询兜底拉取",
|
"title": "运行时事件 3s 轮询兜底拉取",
|
||||||
"traceability": "契约 pbl_runtime_event_poll → pbl_runtime_ext/api.py::api_pbl_runtime_event_poll → scripts/load_path.py PATHS[1]"
|
"traceability": "契约 pbl_runtime_event_poll → pbl_runtime_ext/api.py::pbl_runtime_event_poll(api.py:74)→ scripts/load_path.py PATHS[1]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pbl_entity_state_get",
|
"name": "pbl_entity_state_get",
|
||||||
@ -32,7 +32,7 @@
|
|||||||
"endpoint": "wwwroot/api/pbl_entity_state_get.dspy",
|
"endpoint": "wwwroot/api/pbl_entity_state_get.dspy",
|
||||||
"milestone": "M11b-4",
|
"milestone": "M11b-4",
|
||||||
"title": "实体状态读取(服务端权威 state_version)",
|
"title": "实体状态读取(服务端权威 state_version)",
|
||||||
"traceability": "契约 pbl_entity_state_get → pbl_runtime_ext/api.py::api_pbl_entity_state_get → scripts/load_path.py PATHS[2]"
|
"traceability": "契约 pbl_entity_state_get → pbl_runtime_ext/api.py::pbl_entity_state_get(api.py:90)→ scripts/load_path.py PATHS[2]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pbl_entity_state_apply",
|
"name": "pbl_entity_state_apply",
|
||||||
@ -42,7 +42,7 @@
|
|||||||
"endpoint": "wwwroot/api/pbl_entity_state_apply.dspy",
|
"endpoint": "wwwroot/api/pbl_entity_state_apply.dspy",
|
||||||
"milestone": "M11b-2",
|
"milestone": "M11b-2",
|
||||||
"title": "实体状态变更申请(客户端禁写 state_version)",
|
"title": "实体状态变更申请(客户端禁写 state_version)",
|
||||||
"traceability": "契约 pbl_entity_state_apply → pbl_runtime_ext/api.py::api_pbl_entity_state_apply → scripts/load_path.py PATHS[3]"
|
"traceability": "契约 pbl_entity_state_apply → pbl_runtime_ext/api.py::pbl_entity_state_apply(api.py:111)→ scripts/load_path.py PATHS[3]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pbl_world_broadcast",
|
"name": "pbl_world_broadcast",
|
||||||
@ -52,7 +52,7 @@
|
|||||||
"endpoint": "wwwroot/api/pbl_world_broadcast.dspy",
|
"endpoint": "wwwroot/api/pbl_world_broadcast.dspy",
|
||||||
"milestone": "M11b-3",
|
"milestone": "M11b-3",
|
||||||
"title": "服务端世界广播(提交后广播 ≤300ms)",
|
"title": "服务端世界广播(提交后广播 ≤300ms)",
|
||||||
"traceability": "契约 pbl_world_broadcast → pbl_runtime_ext/api.py::api_pbl_world_broadcast → scripts/load_path.py PATHS[4]"
|
"traceability": "契约 pbl_world_broadcast → pbl_runtime_ext/api.py::pbl_world_broadcast(api.py:175)→ scripts/load_path.py PATHS[4]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pbl_session_member_add",
|
"name": "pbl_session_member_add",
|
||||||
@ -62,7 +62,7 @@
|
|||||||
"endpoint": "wwwroot/api/pbl_session_member_add.dspy",
|
"endpoint": "wwwroot/api/pbl_session_member_add.dspy",
|
||||||
"milestone": "M11b-3",
|
"milestone": "M11b-3",
|
||||||
"title": "会话成员加入(广播订阅名单维护)",
|
"title": "会话成员加入(广播订阅名单维护)",
|
||||||
"traceability": "契约 pbl_session_member_add → pbl_runtime_ext/api.py::api_pbl_session_member_add → scripts/load_path.py PATHS[5]"
|
"traceability": "契约 pbl_session_member_add → pbl_runtime_ext/api.py::pbl_session_member_add(api.py:211)→ scripts/load_path.py PATHS[5]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pbl_runtime_broadcast_pull",
|
"name": "pbl_runtime_broadcast_pull",
|
||||||
@ -72,7 +72,7 @@
|
|||||||
"endpoint": "wwwroot/api/pbl_runtime_broadcast_pull.dspy",
|
"endpoint": "wwwroot/api/pbl_runtime_broadcast_pull.dspy",
|
||||||
"milestone": "M11b-4",
|
"milestone": "M11b-4",
|
||||||
"title": "广播增量拉取(3s 轮询兜底)",
|
"title": "广播增量拉取(3s 轮询兜底)",
|
||||||
"traceability": "契约 pbl_runtime_broadcast_pull → pbl_runtime_ext/api.py::api_pbl_runtime_broadcast_pull → scripts/load_path.py PATHS[6]"
|
"traceability": "契约 pbl_runtime_broadcast_pull → pbl_runtime_ext/m11b_api.py::pbl_runtime_broadcast_pull(m11b_api.py:45,由 api.py:265 经 _m11b 导入再导出)→ scripts/load_path.py PATHS[6]"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pbl_runtime_broadcast_stats",
|
"name": "pbl_runtime_broadcast_stats",
|
||||||
@ -82,7 +82,7 @@
|
|||||||
"endpoint": "wwwroot/api/pbl_runtime_broadcast_stats.dspy",
|
"endpoint": "wwwroot/api/pbl_runtime_broadcast_stats.dspy",
|
||||||
"milestone": "M11b-4",
|
"milestone": "M11b-4",
|
||||||
"title": "广播时延统计(裁决/广播/端到端指标)",
|
"title": "广播时延统计(裁决/广播/端到端指标)",
|
||||||
"traceability": "契约 pbl_runtime_broadcast_stats → pbl_runtime_ext/api.py::api_pbl_runtime_broadcast_stats → scripts/load_path.py PATHS[7]"
|
"traceability": "契约 pbl_runtime_broadcast_stats → pbl_runtime_ext/m11b_api.py::pbl_runtime_broadcast_stats(m11b_api.py:83,由 api.py:265 经 _m11b 导入再导出)→ scripts/load_path.py PATHS[7]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"role_grants": {
|
"role_grants": {
|
||||||
|
|||||||
@ -295,7 +295,7 @@ def main():
|
|||||||
print(' FAIL ' + e)
|
print(' FAIL ' + e)
|
||||||
if not ok:
|
if not ok:
|
||||||
return 1
|
return 1
|
||||||
print(' OK 全部路径逐条显式登记(无 %% / * 通配符);'
|
print(' OK 全部路径逐条显式登记(无 % / * 通配符);'
|
||||||
'种子 ↔ 磁盘 .dspy ↔ load_path.PATHS 三方一致')
|
'种子 ↔ 磁盘 .dspy ↔ load_path.PATHS 三方一致')
|
||||||
|
|
||||||
if args.check:
|
if args.check:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user