12 Commits

Author SHA1 Message Date
agent.develop
bf00609c15 approve: 修复当前迭代 2 个功能 Bug(pbls-初始迭代) 2026-09-30 18:15:25 +08:00
agent.develop
d2cf64dd7f fix(pbls): 修复 Bug Yr4Gv908T4B6yhA7DtE_0(第9轮 3/5 绿)种子注入段 async 调用缺陷 + QC 退回 #1/#2 收口
【1】Bug Yr4Gv908T4B6yhA7DtE_0 根因(a):build.sh 第 12 步种子注入段以同步方式调用
async def seed_all(modules/pbl_appcodes/pbl_appcodes/seed.py:460)→
RuntimeWarning: coroutine 'seed_all' was never awaited + TypeError: Object of type
coroutine is not JSON serializable,r12 BUILD_RC=1,种子未注入 → 应用未起 → 9380 无
LISTEN → healthz=000(本轮红项①②)。修法:asyncio.run() 驱动协程,两轮各自独立事件
循环,幂等对比口径不变。

【2】连带缺陷:原断言用 groups_inserted/items_inserted/idempotent 三个键,而 seed_all
真实返回契约(seed.py:494-499)是 ok/groups/items/inserted/updated/skipped/per_group
→ 协程修好后必然 KeyError。改按真实返回键断言(第1轮 8组74项、第2轮 inserted==0 且
updated==0),幂等语义不变。

【3】QC 退回 #1:build.sh.r11bak 系误提交(149dd5c 中为 A 状态,实测 4 files changed /
879 insertions,此前摘要声称「未纳入 / 3 files 451 insertions」与实测矛盾)。处置:
git rm --cached 移出仓库(本地文件保留供排障),.gitignore 新增 *.bak / *.r[0-9]*bak /
*.orig / *.rej / *.old / *.tmp 六条模式,一并清出历史遗留的 build.sh.r4bak、
build.sh.r8bak、requirements.txt.r4bak、requirements.txt.r6bak、
scripts/ddl/pbls_tables.sql.bak、scripts/ddl/pbls_tables.sql.r11bak(共 7 个)。

【4】QC 退回 #2:收口 build.sh 工作区未提交变更(种子段 asyncio.run 补丁),交付摘要
按实测字节/行数如实填写,不再声称「全部已收口」。

【5】同类问题全仓扫描(任务要求「不能只修报出来的那一个」):AST 提取 490 个 async def
函数名,扫全部 apps/*/build.sh、*.sh、modules/*/*.sh 内嵌 python heredoc 的裸同步调用
→ 命中 modules/pbls/build.sh:377,379 同型缺陷(同一仓库的第二工作副本),已同步修复;
apps/scense/build.sh:129 与 scripts/fix_scense_access.sh:53 的 main() 是 shell 函数定义
非 python 调用,误报排除。修复后两副本去注释代码行 diff 为空(CODE_IDENTICAL_OK)。

【自检】bash -n apps/pbls/build.sh OK;bash -n modules/pbls/build.sh OK;两副本内嵌
PYEOF 块(各 2 块)ast.parse 全 OK;硬门禁 6.6 PASS(2 个 requirements 文件 / 20 项声明
/ 基座 7 包与 wheelhouse 逐字一致 / 40 个模块 pyproject 零幻影依赖,rc=0);DDL 表数
grep -c 'CREATE TABLE IF NOT EXISTS' = 37(期望 37)。

【责任边界·不造假声明】未声称已部署、未声称 healthz=200、未声称 37 表已落库、未声称
测试通过。红项①②的执行落地(以 pbl 身份跑 build.sh 建 venv → DDL → 种子 → 起进程监听
9380 → 自证 healthz=200)属 agent.deploy_test 职责,develop 无部署机执行权限。
2026-09-26 11:04:16 +08:00
agent.develop
b832258689 approve: 修复当前迭代 1 个功能 Bug(pbls-初始迭代) 2026-09-25 18:30:32 +08:00
agent.develop
bc4aaa2463 fix(pbls): [deploy-Q4] build.sh gate 6.4 strip comments/COMMENT strings before scanning + table count 36 to 37
Defect (deploy_test round 3, Q4 / deploy-evidence E15):
1. Gate 6.4 grepped the raw DDL for dialect keywords and was killed by 3 false positives
   that are pure documentation text: L6 header line comment, L220 business word
   "references" inside a COMMENT string, L891 contract self-check block that literally
   lists FOREIGN KEY / REFERENCES / ENUM( / SERIAL / BIGSERIAL / nextval / TIMESTAMP.
   The gate lost all discriminating power (false positive die) and real violations
   would be hidden in the noise.
2. Table count assertion 36 != actual DDL 37 (grep -c CREATE TABLE IF NOT EXISTS = 37;
   the 37th table is pbl_compile_task, pbl_compiler domain 4 to 5). Related: the
   AUTOINC assertion used a literal multi-space pattern and missed the UNSIGNED single
   space variant of pbl_compile_task (counted 36, accidentally matching the old assert);
   L210 post-create information_schema assertion was also 36.

Fix:
- Add scripts/ddl_gate_check.py: strip_sql_noise() single-pass char scanner removing
  block comments, -- / # line comments (-- must be followed by whitespace, so a--b is
  safe) and single/double quoted string literals (with doubled and backslash escapes)
  replaced by a placeholder, so COMMENT strings and DEFAULT strings no longer interfere.
  Assertions run only on the denoised DDL body: zero dialect keyword hits (prints
  keyword + line number + line text), CREATE TABLE count = 37 (plus duplicate table and
  non pbl_ prefix checks), BIGINT [UNSIGNED] NOT NULL AUTO_INCREMENT = 37 (table option
  AUTO_INCREMENT=n excluded first). Ships --selftest with 9 minimal unit checks (no
  pytest needed) and --dump-body for debugging; expected values are module constants.
- Rewrite build.sh gate 6.4: step 4a runs --selftest first (if the scanner is not
  trustworthy its verdict is not accepted), step 4b runs the gate with
  --expect-tables 37 --expect-autoinc 37; return codes captured explicitly (not via
  "if ! cmd" which resets $? to 0); missing scanner file dies and forbids falling back
  to raw grep. Header comment and L210 actual table assertion synced 36 to 37.
- pbls_tables.sql trailing contract self-check block: total tables 36 to 37
  (pbl_compiler 4 to 5, new pbl_compile_task); the zero-hit section now describes the
  forbidden constructs in prose instead of listing SQL keywords verbatim (defence in
  depth against a future regression to naive grep).
- projects/pbls/env/test.json gate.build_sh text "36 tables" to "37 tables"
  (json.load validity self-check passed).

Verification (real local run output, details in
projects/pbls/docs/02-develop/dev-notes-deploy-q4-build-gate64.md):
- --selftest 9/9 PASS, including a negative fixture proving real violations are still
  caught, idempotency of denoising, and that -- / # inside strings do not truncate.
- Real DDL: denoising strips 10974 chars / 89 line comments / 493 string literals;
  dialect zero hits, CREATE TABLE = 37, AUTO_INCREMENT = 37, RESULT PASS rc=0.
- build.sh gate sections 0-4 sliced into a temporary harness and executed as a whole
  inside apps/pbls, rc=0 (6.1/6.2/6.4 all pass). Sections 7+ not entered: no MariaDB,
  no venv deps, port 9300 unavailable - honestly declared in the dev notes.
- bash -n build.sh passes; no live assertion still says 36 (only 2 comment lines).

No real table structure, app entry, conf/config.json, requirements or modules/pbl_*
were modified.
2026-09-25 08:37:51 +08:00
agent.develop
0f1cad86c3 approve: [M3a] pbl_compiler 编译核心与确定性产物 2026-09-18 19:04:05 +08:00
agent.develop
d9cd9a4221 approve: [M1b] pbl_blueprint 模板/子对象扩展与关联表 2026-09-17 23:15:55 +08:00
agent.develop
9582c9880a deliver: 交付收口(引擎代为提交) 2026-09-16 19:57:39 +08:00
agent.develop
f7b93ad1f7 deliver: 交付收口(引擎代为提交) 2026-09-16 15:32:49 +08:00
agent.develop
a80c83289e deliver: 交付收口(引擎代为提交) 2026-09-16 12:51:49 +08:00
agent.develop
9745e6be0f develop(pbls): QC退回整改#5-#18 — self_check.py落库+load_path语法修复+DDL禁用token清零+入口注释去框架名 2026-09-16 12:47:27 +08:00
agent.develop
8d99405f8f develop(pbls): QC 退回整改——补齐 self_check/真实可编译代码/config processors/requirements 依赖 2026-09-16 11:46:13 +08:00
pbls-bot
a494bd23e6 feat(pbls): 初始提交 - pbls 项目模块代码入库 2026-09-15 17:39:29 +08:00