Skip to content

release: v0.11.0(收编 #31 hardening 批次 + 门禁扫描剔除/审计明细批次整合) - #33

Closed
loong10k wants to merge 4 commits into
mainfrom
release/v0.11.0
Closed

loong10k wants to merge 4 commits into
mainfrom
release/v0.11.0

Conversation

@loong10k

Copy link
Copy Markdown
Contributor

内容

整合两条已验证的批次(真合并提交,使 #31 关联落账):

  • fix(gate): 会话实测 6 项——守卫绕过闭环 + 提交面收窄 + 报告指令前置(叠于 v0.10.1) #31 / fix/gate-hardening-from-session-feedback(f7e64bc):守卫绕过闭环、提交面 lanes 收窄、报告指令前置等 6 项 + test_session_fixes 26 用例
  • 门禁扫描剔除批次(本会话 ddd4j-boot 实战驱动):FULL_SCAN_EXCLUDES 单一事实源 + find 型 gate 幂等注入 -not -path(修 javadoc.sh 误红);delta 回退全量路径同剔除;shellcheck severity 钉扎契约;skipGate 审计明细;java 依赖解析行动指引 + test_full_scan_excludes 15 用例

整合处理

  • 版本收敛:0.8.3/0.10.1 → 0.11.0(4 manifest + ref/icon 钉 v0.11.0)
  • ruff 清理:fingerprint 未用 hashlib 局部导入、E741 ×2

验证

  • run_all.py 141 通过;test_session_fixes 26 绿;test_full_scan_excludes 15 绿;test_hardening 29 绿;ruff 全绿

来自真实多仓修复会话的反馈批次(门禁在主工作树拦 3 次、又被 4 种命令形态
静默绕过、长报告把指令段截掉):

1) 守卫绕过闭环(4 形态实测漏网 + 0.8.2 roots 层击穿)
   - 切段扫描前展开 $(...) 与反引号内层文本(ro=$(git push…) 实测静默放行)
   - 段首归一化剥 shell 控制引导词 if/then/else/elif/while/until/do/!
     (if git push; then、for x; do git push; done 实测静默放行)
   - resolve_project_roots 与 is_guarded 同源判定 + git -C <path> 显式仓边界:
     0.8.2 ①只修了 _guarded_mode,roots 层仍用原始 tokens[0]——git -C /
     FOO=1 git / sudo git 三形态 is_guarded=True 但 roots=[] → main 静默放行
2) commit 面按命令链收窄(staging_intent)
   - 纯 git commit → 仅 staged;add -A/-a/-u 或 commit -a → 扩到未暂存/未跟踪;
     git add <paths> → 并入 extra(PreToolUse 时 add 未执行、暂存区是旧的);
     并行会话的未暂存 WIP 不再拦无关提交(本会话实测误拦点)
   - lanes/extra 进缓存键(窄面 pass 被宽面复用 = 绕过);extra 按仓根换算 +
     各仓存在性过滤;UPS 保持三路宽口径(软门无命令可预测,注释+协议已改)
3) 报告结构:整调用声明/skipGate/同意边界前置到首行综述紧后;总长硬上限
   REPORT_MAX_CHARS=3000;超限保头保尾截细节(尾部日志路径不截掉)
4) 存量归因:delta 下项目级命令报错文件全部在改动集外 → skipped + 完整日志
   (防"历史债不还就永远提交不了 → 只能 skipGate"的信誉清零)
5) append_files=false:java/kotlin/rust/go/csharp/vbnet/terraform/protobuf/elm
   九个项目级命令不再被追加文件路径(mvn javadoc:jar foo.java → Unknown
   lifecycle phase 假失败)
6) SessionStart 版本积压检测(version_backlog_note 纯函数)+ 缓存指纹轻量化
   (name-only+stat 替代全仓全文 diff,staged 由 index mtime 兜底)

契约同 commit 同步:__protocol__.md §4(归一化/同源判定/指令前置/上限/存量
skip/lanes 语义)+ openspec hook-protocol(MUST 扩写 + 新 Requirement: The
commit face SHALL match the actual staging surface + 3 Scenario);README 双语
与 4 份 manifest → 0.8.3。

验证:unittest 120 OK(+26:tests/test_session_fixes_20260922.py)、
run_all 141/0、validate_languages_json 11 规则、README/manifest 一致性全绿
…back

并行会话先合入 #30(v0.10.0) 与 #32(v0.10.1),本分支叠上去。冲突解法:
- 4 份版本 manifest 取 theirs(0.10.1,不回退已发布版本号)
- README 双语版本行对齐 0.10.1(#30/#32 未更新该行,顺手修正既存偏差)
- scripts/languages.json 自动合并:他们的 find 门禁 -not -path/xargs -r
  与本分支 append_files= false ×9 共存(9+13 处断言通过)
- hooks/gate_lib.py:scope_cmd 调用双参数并存
  (本分支 append_files=append + 上游 full_excludes=not uses_delta_files)
- scripts/scope.py:模块 docstring 合并双意图描述

验证:unittest 135/135(含上游新增用例)、run_all 141/0、schema 11 规则
- 收编 fix/gate-hardening-from-session-feedback(6 项:守卫绕过闭环、
  提交面 lanes 收窄、报告指令前置等,test_session_fixes 26 用例)
- ruff 清理:fingerprint 函数未使用 hashlib 局部导入、E741 歧义变量名 ×2
- 4 manifest 0.10.1 -> 0.11.0(ref/icon 钉 v0.11.0)
@loong10k

Copy link
Copy Markdown
Contributor Author

superseded: #31 已并入 main,本 PR 重新收敛为最小增量(见 release/v0.11.0 新分支)

@loong10k loong10k closed this Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant