ymq
12f8384d49
fix(import_closure): 破M1b无限退回死循环——globals()运行时注入逃逸阀+责任范围过滤(2026-09-17 pbls实锤)
根因1(逃逸阀缺口): agent用工具脚本生成db.py compat块(globals()[_name]=_val逐符号注入)修import闭包断裂,
运行时实测全通(pbl_blueprint.db/api/blueprint_crud/subobjects/templates import OK,PblError/require_tenant/
get_env全True),但ast静态量不出Subscript下标赋值→门禁恒报20处断裂→QC按'声称修复vs引擎实测断裂直接矛盾'
判造假证据→4轮退回达上限→fault→项目paused。与PEP562 __getattr__同类:静态不可判定即保守放行。
识别三形态: globals()[k]=v(含For/Try嵌套walk_top可达) / globals().update({...}) / _g=globals()别名。
函数体内globals()不算模块级注入(walk_top只走模块级stmts,不误放行)。
根因2(责任范围过宽): 依赖方向拉进来的外部文件(pbl_agent_runtime/api.py因import pbl_blueprint入范围)的
断裂源在pbl_common(半迁移存量欠账114处,别的任务的账)——违背门禁自己声明的'任务未触碰的包存量断裂不拦,
防死锁'原则,M1b实测26处里6处是pbl_common欠账,小任务永远修不完全空间账。
修: problems过滤 source.split('.')[0] in owned_pkgs(只拦涉及仓库自有包的契约断裂)。
原pbl_common事故形状防护不受影响: 重写pbl_common的任务owned_pkgs含pbl_common,断裂全保留。
修后M1b剩余真实断裂仅1处: m1b_common.py:114 from .errors import PblError而errors.py只有
PblBlueprintError——门禁拦它是对的(补一行别名即闭环),FAIL消息可行动。
本地走查6例通过(注入3形态识别/普通模块不误伤/函数内globals不误放行/真实compat块形状)。
2026-09-17 22:13:51 +08:00
..
2026-09-02 15:26:18 +08:00
2026-09-01 09:26:46 +08:00
2026-09-17 17:47:48 +08:00
2026-09-17 15:44:56 +08:00
2026-08-16 23:43:40 +08:00
2026-09-17 15:44:56 +08:00
2026-08-23 21:52:49 +08:00
2026-09-11 15:30:30 +08:00
2026-09-11 12:58:26 +08:00
2026-09-15 16:52:43 +08:00
2026-09-16 13:38:57 +08:00
2026-08-17 11:00:10 +08:00
2026-08-13 18:07:16 +08:00
2026-08-22 11:48:47 +08:00
2026-09-15 14:53:17 +08:00
2026-08-25 18:22:03 +08:00
2026-08-25 18:22:03 +08:00
2026-08-17 07:10:28 +08:00
2026-09-08 23:13:06 +08:00
2026-09-15 15:01:27 +08:00
2026-09-17 17:47:48 +08:00
2026-06-11 17:30:06 +08:00
2026-09-15 21:51:22 +08:00
2026-06-16 11:05:45 +08:00
2026-09-17 22:13:51 +08:00
2026-09-16 12:17:22 +08:00
2026-09-04 17:05:42 +08:00
2026-08-24 12:18:27 +08:00
2026-09-04 16:33:15 +08:00
2026-09-16 17:58:14 +08:00
2026-09-11 15:30:30 +08:00
2026-09-17 17:47:48 +08:00
2026-09-11 15:30:30 +08:00
2026-09-15 15:01:27 +08:00
2026-08-16 23:51:55 +08:00
2026-09-12 08:04:17 +08:00
2026-08-28 21:46:27 +08:00
2026-09-15 17:32:39 +08:00
2026-09-08 23:59:24 +08:00
2026-09-15 00:11:56 +08:00
2026-09-17 18:04:12 +08:00
2026-09-11 12:58:26 +08:00
2026-09-10 17:09:45 +08:00
2026-08-16 18:19:40 +08:00
2026-08-08 10:36:04 +08:00
2026-06-16 11:05:45 +08:00
2026-08-17 18:13:05 +08:00
2026-09-10 17:09:45 +08:00
2026-09-16 18:21:19 +08:00
2026-09-03 16:41:27 +08:00
2026-08-17 11:00:10 +08:00
2026-08-17 11:00:10 +08:00
2026-09-08 23:13:06 +08:00
2026-08-28 21:10:36 +08:00
2026-09-08 16:01:15 +08:00