context-infra 检查与复盘infra.guiming.net · 全内容自包含呈现 · 生成于 2026-07-21 16:28 UTC

interim · hook 超时热修记录

Z3 全文↑ Z2 条目

轮次报告全文 · 逐字真源投影

← 返回报告库 · 重构 program · 回到 interim 轮次卡

本页是轮次报告的逐字投影(仅隐私清洗,零改写)。渲染不了的元素退化为代码块原文。

时点提示:本页是仓内文件 adhoc_jobs/context_infra_migration_20260709/runs/interim_20260716_hook_timeout_fix/RECORD.md 的逐字投影(仅做隐私清洗:仓库根绝对路径→相对路径、家目录→~/;除此零改写)。若源文件后续有修订,以仓内真源为准。

报告元数据(frontmatter)
doc_type: interim_maintenance_record
program: context_infra_migration_20260709
date: 2026-07-16(r012 收口后同日晚)
session_id: 2c406f57-d22f-4910-aa31-5920a7805eff
kind: 旧根维护修复(run 间隙,非 rNNN run,不承担 RUN_TEMPLATE 收口义务)
append_only: true

Interim 记录:旧根 UserPromptSubmit hook 超时修复(P-011 冻结的用户当次授权例外)

1. 授权与例外边界

用户 2026-07-16 报告「UserPromptSubmit hook timed out after 10s — output discarded」反复出现,并指示:在 context-infra 内部处理该问题以确保内部准确性;不接受仅靠延时解决,优先保证实现效率,必要时可以延时,但必须让预期的 hook 工作正常进行;同时要求评估此修改对重构现状说明与后续迁移过程的影响。

P-011 冻结约束(迁移期旧仓功能面零修改,program 记录区 append 除外)对本次修复构成例外场景:本次修改由用户当次指示授权,例外仅覆盖本记录列出的变更清单,不构成对冻结约束的一般性放松。r012 FINAL_REPORT 及其 claim 覆盖矩阵中「旧根功能面零修改(三维独立复核)」诸声明的有效边界 = r012 收口时刻;其后的变更以本记录为准。

2. 根因判定(证据锚)

3. 变更清单(例外的全部范围)

  1. tools/skill_router_hook/route_on_prompt.py:新增 deliver-then-persist——main() 收集 deferred closures,stdout flush 后才执行全部消费型状态写;route_prompt(deferred=None) 保持旧行为(bridge tools/hook_bridge/governance.py subprocess 路径自动获得新语义且兼容)。新增 _run_or_defer_pending_correction_directive / _auto_arm_directive 增加 deferred 参数。phase cursor 推进(_phase_directives 内部)保持 inline:超时丢一轮指令但下轮自愈,其内 correction 清除属过时边注,不做 defer(判定记录于代码注释)。
  2. tools/skill_router_hook/test_route_on_prompt.py:修复 2 个存量失败测试(test_reassessment_adds_missing_skill_before_phase_directive / test_reassessment_prompt_epoch_allows_repeated_prompt_next_epoch,补 RUNTIME_REASSESS_SHADOW=0 隔离——它们自仓库 runtime_config.json 翻转 shadow=true 起就在挂,属测试隔离缺陷非本次引入);新增 2 个 deliver-then-persist 契约测试。49/49 全绿(修复前基线 45 passed / 2 failed)。
  3. ~/.claude/settings.json(全局,不在任何 git 仓库):17 处 hook timeout 10→30s(UserPromptSubmit route_on_prompt、SessionStart 全部含 _MANDATORY 注入器、PreToolUse git_guard、PostToolUse usage_hook、SessionEnd reap)。Stop hooks 维持 30/60 不变。
  4. context-infra/.claude/settings.json:2 处 PostToolUse(fa11_capture、bash_test_record)timeout 10→30s。

未改动:注入内容与 v3 形态、dao 路由逻辑、新根 ~/infra 全部文件(route_hint.py 未动)、Stop hook 链路。

4. 对重构现状说明与迁移过程的影响评估

5. 负载源观察(未处置,留用户决断)

修复只解决「风暴窗内 hook 送达」,不消除风暴本身。当日观察(ps 快照,处置均属跨 session/跨系统动作,按 DECISION_BOUNDARIES 留用户):

  1. ChatGPT.app 持续对本仓跑 git 子进程ls-files/add -u/diff 类,快照见 11 个子进程)——BUG-016 同签名,断路器建成后该 app 仍在扫描。候选处置:在 ChatGPT/Codex app 侧把本仓移出工作区,或系统级限制其文件访问。
  2. 孤儿 commit_wrapper.sh --session-ref-only:单实例跑 1h43m 仍未退出且新实例持续产生——Stop hook 60s 超时杀 hook 进程但不杀其子进程链,wrapper 成 ppid=1 孤儿继续空转 git(泄漏类,与 04-19 修过的 pathspec 死亡 bug 不同源)。候选处置:wrapper 加自杀式 watchdog(超过阈值自清)或 Stop hook 改 process-group kill;属旧根 git 功能面,未经授权本次不动
  3. 22 个常驻 codebase-explorer MCP python + 22+16 uv + 12 codex:多为各活跃 session 的 MCP 服务进程,随 session 生命周期累积;0% CPU 但加剧内存/调度压力。候选处置:清理策略进 event-cleanup cron 或 MCP 配置改按需启动。

6. Claim(A-1 四态词表)

7. 独立扫描对账(refactor-doc-scan agent,本节为收口补充)

独立 sub-agent 全程序扫描与主线自查交叉后的增量结论:

8. 第二批(2026-07-17,P-014 授权,hook×负载族 HL 立项)

P-014(ORIGINAL_PROMPT.md#P-014,逐字已录)给出五项持续优化指示+元原则(hook 修改必须锚定其产生需求)。问题域真源=design/OPEN_PROBLEMS.md(HL-1..HL-5,本节只记当日旧根变更清单,方案与证据不复制)。

当日变更(本批例外范围):

  1. tools/git/stop_hook.sh(旧根 git 功能面,P-014 ②):孤儿守卫落地——wrapper 调用包 timeout -k 5 $((45-已耗秒))sGIT_STOP_HOOK_WRAPPER_BUDGET 可调,无 timeout(1) 退化为原调用),rc=124 走既有失败引导。原始需求(turn 改动最终被捕获、绝不失败 session)不破:超时改动留工作区,下一 turn/cron 重试。验证=bash -n + 隔离语义 smoke(rc=124/env 透传/空守卫退化)+ 后续每个 session Stop 的真实运行(日志锚 orphan guard armed)。相邻存量:tests/e2e/invariant_stop_hook.sh 4 组合 FAIL 为四月存量(复测确认非本次引入),登记 HL-2。
  2. BUG-016 断路器退役(P-014 ① 条件式指示,条件评估成立;非 repo 功能面):daemon pid 14837 停止、live crontab keepalive 行摘除(备份 ~/.cache/context-infra/crontab_backup_before_breaker_removal_20260717_003714.txt)、config/CRONTAB.md 同步(含恢复路径)。判据=锚定 Codex.app 已不在系统、末杀 07-09、8 天零击杀、风暴期自盲。ChatGPT.app 残差=HL-1 OPEN(量化先行)。
  3. 现存孤儿 wrapper 清理:07-17 复查 ppid=1 孤儿已全部自行退出,零陈锁(lock_watchdog 亲核)。
  4. 程序记录面:ORIGINAL_PROMPT.md append P-014;新建 design/OPEN_PROBLEMS.md(问题域登记簿,README 已加指针行并修 P 范围)。
  5. HL-3 已执行(P-014 ③,非 repo 功能面):双注册点全摘——~/.claude.json user-global mcpServers 键(备份 claude_json_backup_before_mcp_removal_.json,其余 22 server 完好)+ [codex-path] [mcp_servers.codebase-explorer] 段(备份 codex_config_backup_before_mcp_removal_.toml;第二注册点系独立调研 agent 交叉验证发现,主线初查漏此点)+ 常驻实例 TERM 清零(21-22 对 uv/python)。判据=tool_use 调用 0(30 天窗口,末次真实调用=06-17 E2E 验证跑)+ receipts 0 + 零运行依赖。实现目录保留。细节见 OPEN_PROBLEMS #HL-3。
  6. HL-4 已执行(现状说明更新,旧根文档面):tools/INDEX.md skill_router_hook/stop_hook 两条目(补 30s+deliver-then-persist+孤儿守卫、删过时 revert detection 声明)、tools/git/AGENT_GUIDE.md Flags 节(修失效行号锚+新增 GIT_STOP_HOOK_WRAPPER_BUDGET 文档)、tools/phase_state/README.md:31-33(10s→历史口径;主线初判不动被独立盘点 agent 复核推翻后采纳)。判定不动清单见 OPEN_PROBLEMS #HL-4。

← 返回报告库 · 重构 program · 回到 interim 轮次卡