pbl_blueprint/tools/m1b_closure_report_round5.json

283 lines
7.8 KiB
JSON
Raw Permalink 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.

{
"task": "[M1b] pbl_blueprint 模板/子对象扩展与关联表",
"round": "qc-round-5",
"repo": "/d/pipeline/workspaces/0/sdlc_general/modules/pbl_blueprint",
"qc_items_addressed": [
"QC#1",
"QC#3",
"QC#4",
"QC#5",
"QC#6",
"QC#7",
"QC#8"
],
"edits": [
{
"path": "pbl_blueprint/db.py",
"exists": true,
"changed": false,
"symbols": [
"esc",
"sql_exec",
"sql_rows",
"sql_scalar",
"_sor"
],
"detail": "already in target form (idempotent no-op)",
"qc": [
"QC#4"
],
"note": "compat 块由整块 globals().update 改为逐符号解析"
},
{
"path": "pbl_blueprint/errors.py",
"exists": true,
"changed": false,
"symbols": [
"PblError",
"ErrorCode",
"CODE_TO_HTTP",
"TenantMissingError",
"assert_not_write_protected"
],
"detail": "already in target form (idempotent no-op)",
"qc": [
"QC#5"
],
"note": "旧类名/错误码面别名补齐PblError = PblBlueprintError 等)"
},
{
"path": "pbl_blueprint/init.py",
"exists": true,
"changed": false,
"symbols": [
"_sor",
"esc",
"now_str",
"json_dump",
"flag"
],
"detail": "already in target form (idempotent no-op)",
"qc": [
"QC#5"
],
"note": "init.py:54 _sor / init.py:66 esc 导出面补齐"
},
{
"path": "pbl_blueprint/m1b/__init__.py",
"exists": true,
"changed": false,
"symbols": [
"get_env",
"normalize_tenant",
"tenant_id",
"actor_id",
"crud",
"load_pbl_common"
],
"detail": "already in target form (idempotent no-op)",
"qc": [
"QC#3",
"QC#5"
],
"note": "QC#1a get_env 已存在则保持;其余导出面补齐"
},
{
"path": "pbl_blueprint/api_blueprint.py",
"exists": true,
"changed": false,
"symbols": [
"tenant_id",
"actor_id",
"now_str",
"json_dump",
"crud"
],
"detail": "already in target form (idempotent no-op)",
"qc": [
"QC#5"
],
"note": "api_blueprint.py:504 处 import 闭包断裂修复"
},
{
"path": "pbl_blueprint/m1b_common.py",
"exists": true,
"changed": false,
"symbols": [
"PblError"
],
"detail": "already in target form (idempotent no-op)",
"qc": [
"QC#5"
],
"note": "m1b_common.py:114 from .errors import PblError 断裂修复"
},
{
"path": "tests/test_contract.py",
"exists": true,
"changed": false,
"symbols": [
"esc",
"_sor",
"PblError"
],
"detail": "already in target form (idempotent no-op)",
"qc": [
"QC#5"
],
"note": "tests/test_contract.py:439 契约测试导入面补齐"
},
{
"path": "tests/_pytest_shim.py",
"exists": true,
"changed": false,
"symbols": [],
"detail": "no compat symbols; syntax verified by py_compile stage",
"qc": [
"QC#5",
"QC#7"
],
"note": "三元表达式缺 else 的语法错误修复py_compile 必须通过)"
}
],
"verification": {
"py_compile": {
"passed": 64,
"failed": 0,
"failures": [],
"files": [
"pbl_blueprint/__init__.py",
"pbl_blueprint/_pbl_common_shim.py",
"pbl_blueprint/_qc_r5_compat.py",
"pbl_blueprint/api.py",
"pbl_blueprint/api_blueprint.py",
"pbl_blueprint/audit.py",
"pbl_blueprint/blueprint_crud.py",
"pbl_blueprint/crud.py",
"pbl_blueprint/db.py",
"pbl_blueprint/errors.py",
"pbl_blueprint/init.py",
"pbl_blueprint/m1b_api.py",
"pbl_blueprint/m1b_common.py",
"pbl_blueprint/m1b_compat.py",
"pbl_blueprint/m1b_db.py",
"pbl_blueprint/m1b_init.py",
"pbl_blueprint/m1b_ref.py",
"pbl_blueprint/m1b_subobject.py",
"pbl_blueprint/m1b_template.py",
"pbl_blueprint/service.py",
"pbl_blueprint/subobject.py",
"pbl_blueprint/subobject_ext.py",
"pbl_blueprint/subobjects.py",
"pbl_blueprint/tables.py",
"pbl_blueprint/template_platform.py",
"pbl_blueprint/templates.py",
"pbl_blueprint/tenant.py",
"pbl_blueprint/models/pbl_template.py",
"pbl_blueprint/m1b/__init__.py",
"pbl_blueprint/m1b/api.py",
"pbl_blueprint/m1b/audit.py",
"pbl_blueprint/m1b/compat.py",
"pbl_blueprint/m1b/crud_factory.py",
"pbl_blueprint/m1b/dbutil.py",
"pbl_blueprint/m1b/env.py",
"pbl_blueprint/m1b/errors.py",
"pbl_blueprint/m1b/init.py",
"pbl_blueprint/m1b/ref.py",
"pbl_blueprint/m1b/subobject.py",
"pbl_blueprint/m1b/tables.py",
"pbl_blueprint/m1b/template.py",
"pbl_blueprint/m1b/tenant.py",
"pbl_blueprint/m1b/util.py",
"tools/m1b_fix_import_closure.py",
"tools/m1b_fix_import_closure_v2.py",
"tools/m1b_fix_qc_round4.py",
"tools/m1b_fix_qc_round5.py",
"tools/m1b_gen_ddl.py",
"tools/m1b_import_closure.py",
"tools/m1b_normalize_models.py",
"tools/m1b_register_sync.py",
"tools/m1b_run_tests.py",
"tools/m1b_selfcheck.py",
"tools/patch_m1b.py",
"tools/patch_m1b_init.py",
"tests/_m1b_loader.py",
"tests/_pytest_shim.py",
"tests/fakedb.py",
"tests/test_contract.py",
"tests/test_m1b_ext_ref.py",
"tests/test_m1b_import_closure.py",
"tests/test_m1b_realdb.py",
"tests/test_m1b_template.py",
"tests/test_real_path.py"
]
},
"import_closure": {
"checked_imports": 744,
"broken": 0,
"broken_detail": [],
"modules_scanned": 64
},
"smoke_import": {
"returncode": 0,
"imported": [
"pbl_blueprint",
"pbl_blueprint._qc_r5_compat",
"pbl_blueprint.errors",
"pbl_blueprint.db",
"pbl_blueprint.init",
"pbl_blueprint.m1b"
],
"failed": [],
"unresolved": [],
"unresolved_registry": [],
"esc_selftest": [
"NULL",
"1",
"'O''Brien'"
],
"stdout_tail": "@@JSON@@{\"imported\": [\"pbl_blueprint\", \"pbl_blueprint._qc_r5_compat\", \"pbl_blueprint.errors\", \"pbl_blueprint.db\", \"pbl_blueprint.init\", \"pbl_blueprint.m1b\"], \"failed\": [], \"unresolved\": [], \"unresolved_registry\": [], \"esc_selftest\": [\"NULL\", \"1\", \"'O''Brien'\"]}\n",
"stderr_tail": ""
}
},
"cross_module_debt": [
{
"consumer": "pbl_agent_runtime",
"provider": "pbl_common",
"symbols": [
"PblError",
"ErrorCode",
"normalize_tenant",
"TenantMissingError",
"CODE_TO_HTTP",
"assert_not_write_protected"
],
"reason": "pbl_common 半迁移重写删除既有符号面;按引擎裁决不计入本任务门禁",
"action": "冒泡 PM由 pbl_common 责任任务补兼容符号层(设计文档 §5 向后兼容)"
},
{
"consumer": "pbl_appcodes / pbl_validation / pbl_compiler 等",
"provider": "pbl_common.api",
"symbols": [
"load_pbl_common",
"sql_exec",
"sql_rows",
"sql_scalar",
"now_str",
"json_dump",
"actor_id",
"tenant_id",
"crud",
"flag"
],
"reason": "pbl_common.api 契约符号未重新导出",
"action": "冒泡 PMpbl_common 按设计文档 §3 契约表重新导出全套符号"
}
],
"gate": {
"py_compile_failed": 0,
"closure_broken": 0,
"pass": true
}
}