Skip to content

kb init(jiuwenswarm): deepen - #277

Merged
tzhouam merged 1 commit into
mainfrom
kb/init-jiuwenswarm-deepen
Sep 30, 2026
Merged

tzhouam merged 1 commit into
mainfrom
kb/init-jiuwenswarm-deepen

Conversation

@tzhouam

@tzhouam tzhouam commented Sep 30, 2026

Copy link
Copy Markdown
Collaborator

kb init stage deepen for jiuwenswarm (openJiuwen-ai/jiuwenswarm).

  • Upstream pin: f0a69728c96b5961d993449f1a901cbd2f4dac5b
  • Knowledge base: 856f3adf8e0e9acb30dbdd0a2f21c8fda158a152
  • Model spend (accounted): $20.49

Human-merged. Rules were screened by the docs redundancy filter, checked at the pin, and given an advisory verdict; fail rules are already removed.

rule page verdict
JIUWENSW-I1 repos/jiuwenswarm/components/common-core/rules.md unsure
JIUWENSW-I4 repos/jiuwenswarm/components/common-core/rules.md unsure
JIUWENSW-I13 repos/jiuwenswarm/components/common-core/rules.md pass
JIUWENSW-I17 repos/jiuwenswarm/components/common-core/rules.md unsure
JIUWENSW-I21 repos/jiuwenswarm/components/extensions-plugins/rules.md unsure
JIUWENSW-I23 repos/jiuwenswarm/components/extensions-plugins/rules.md pass
JIUWENSW-I24 repos/jiuwenswarm/components/extensions-plugins/rules.md unsure
JIUWENSW-I25 repos/jiuwenswarm/components/extensions-plugins/rules.md unsure
JIUWENSW-I26 repos/jiuwenswarm/components/extensions-plugins/rules.md unsure
JIUWENSW-I27 repos/jiuwenswarm/components/extensions-plugins/rules.md unsure
JIUWENSW-I31 repos/jiuwenswarm/components/extensions-plugins/rules.md unsure
JIUWENSW-I32 repos/jiuwenswarm/components/gateway-channels/rules.md pass
JIUWENSW-I36 repos/jiuwenswarm/components/gateway-channels/rules.md unsure
JIUWENSW-I37 repos/jiuwenswarm/components/gateway-channels/rules.md pass
JIUWENSW-I39 repos/jiuwenswarm/components/gateway-channels/rules.md unsure
JIUWENSW-I41 repos/jiuwenswarm/components/gateway-channels/rules.md unsure
Dropped rules
  • JIUWENSW-I5: advisory judge: fail {"faithful": "The rule overstates the evidence. Decryption can fail or have no crypto provider, leaving the stored value unchanged (config.py L79-L90, L1462-L1493). save_models_candidate deep-copies the candidate and adds missing business IDs before writing it, so it does not write it unchanged (L
  • JIUWENSW-I7: advisory judge: fail {"faithful": "所引 config.py L171-L244 显示缓存字典以文件路径字符串为键,(st_mtime_ns, st_size) 是用于判断缓存是否有效的文件标记;规则称该元组为“缓存键”并不准确。其余关于深拷贝、仅缓存解析结果、无法取得标记时绕过缓存及解析错误重试的描述有代码支持。", "non_contradictory": "所列周边规则没有要求缓存环境变量替换或运行时规范化结果,也没有与该规则的深拷贝或重试要求冲突。", "actionable": "config.py L171-L244 给出了可检查的具体缺陷:缓存命中或写入时缺少 deepcopy、无法取得
  • JIUWENSW-I9: advisory judge: fail {"faithful": "所引 config.py 支持默认值替换、按变量名尝试解密,以及保留 MCP 凭据子树的描述。但“未按规则命名,读到的就是密文”说得过满:代码只是跳过解密并返回环境变量原值;原值也可能是明文。", "non_contradictory": "与所示规则没有冲突;I5 关于运行时环境变量展开和密钥解密的描述也与此一致。", "actionable": "规则给出了可检查的替换条件、MCP 条目识别条件和需保留的字段;审查相关改动时可据此发现占位符被清空等缺陷。"}
  • JIUWENSW-I14: advisory judge: fail {"faithful": "config.py:L1547-L1621 显示:无变化时返回 None 的是 migrate_model_business_ids 内的 _mutate;migrate_model_business_ids 本身返回 changed,即 False。此外,config.py:L1496-L1540 只在 model_config_obj 是字典时写入 _source,并非无条件写入。", "non_contradictory": "所示规则中没有冲突。I1 也规定 mutator 返回 None 时跳过写盘;I5 对 `
  • JIUWENSW-I15: advisory judge: fail {"faithful": "所引 chat_final.py L23–L31 显示,已有非空 final_mode 时 annotate_chat_final 会提前返回,不一定补上 event_type。证据也只说前端优先读取 final_mode,未证实前端直接比对这些字符串值。", "non_contradictory": "所列其他规则涉及配置、HTTP bridge、客户端接口等;未见与这条 chat.final 规则冲突的内容。", "actionable": "所引 chat_final.py L16–L47 给出了默认值、保留已有值及 event_type 限制;审查者可据此检
  • JIUWENSW-I16: advisory judge: fail {"faithful": "规则称未注入上传基址时端口总是 WS 端口加 1,但端口无法转换为整数时,代码会直接使用原端口(agent_http_bridge.py:L70-L90)。所给证据也只展示了上传调用方回退到 resolve_agent_upload_base,未展示下载调用方回退到 resolve_agent_http_base(L150-L210)。", "non_contradictory": "周边规则涉及配置、接口和清理等其他约束;所给文本中没有与本规则冲突的要求。", "actionable": "规则给出了可检查的缺陷条件,包括未验签 payload 控制出站目标、re
  • JIUWENSW-I18: advisory judge: fail {"faithful": "The rule overstates the evidence. Changing AGENT_ID alone changes which file prefix is matched; the cited code does not show that this would delete active logs. The fallback value 30 is also not established because DEFAULT_CLEANUP_PERIOD_DAYS is not shown. See cleanup.py:L29-L39 and L8
  • JIUWENSW-I19: advisory judge: fail {"faithful": "证据中 resolve_coding_memory_project_name 确实使用清洗后的 basename、canonical 路径的 SHA-256 前 12 位及所述截断方式。但“改动其中任何一个,已有项目都会映射到新目录”过于绝对:例如修改 _INVALID_DIRECTORY_CHARS 只会影响名称含相关字符的项目。见 coding_memory_paths.py:L14-L80。", "non_contradictory": "所示 I1、I4、I5、I7、I9、I13–I18 均未对 coding memory 目录键提出冲突要求。",
  • JIUWENSW-I20: advisory judge: fail {"faithful": "bridge.py:L19-L86 中,settle 只检查 checkpoint_open 是否为 False,并未验证此前执行过 close;未知动作也会在 store.replay 之前被拒绝。因此规则的这两处表述比代码更绝对。", "non_contradictory": "所示 I21 的重放去重要求及 I22 的状态上报顺
  • JIUWENSW-I22: advisory judge: fail {"faithful": "checkpoint.py:L12-L70 compares managed_task_request with self.request_id, not task["request_id"] as the proposed text states. The supplied evidence also does not show the claimed AgentServer-side dependency. The before_model sequence and managed_task_change key are supported by the s
  • JIUWENSW-I28: advisory judge: fail {"faithful": "证据 task_adapter.py:L376-L423 显示,超过 12000 字节后的回退结果除 fields 中的键外,还包含 question、details_omitted 和 artifact_status;因此“只保留 fields 元组里的键”不准确。", "non_contradictory": "所示周边规则 I20–I27、I29–I31 没有与这条输出预算和 interaction 处理规则冲突的要求。", "actionable": "证据 task_adapter.py:L376-L423、L590-L602、L623-L635 给出了可
  • JIUWENSW-I29: advisory judge: fail {"faithful": "The rule says every error sent to the browser passes through _safe_upstream_error, but the configuration-error path sends str(exc) directly to _send_gateway_error. That helper does not sanitize its message. Evidence: qwen_omni_gateway.py:L42-L79 and L104-L175.", "non_contradictor
  • JIUWENSW-I30: advisory judge: fail {"faithful": "settings.py L56-L112 显示 _persist_env_updates 仅对非空值使用 json.dumps;空值写成 KEY=。规则称值都用 json.dumps 加引号,与代码不符。此外,_provider() 将多种环境变量组合映射为 joyai,因此它与 update_settings 并非严格的互逆运算。", "non_contradictory": "所示 I20–I29、I31 分别约束任务、网关和 JoyAI 等行为;没有与这条设置持久化规则冲突的要求。", "actionable": "settings
  • JIUWENSW-I33: advisory judge: fail {"faithful": "app.py L282–321 显示 create 先渲染、写结果,再以 AFTER_RESULT_DELIVERY commit,并记录而不重新抛出 commit 异常;L364–389、L421–446 显示 switch/fork 先以 BEFORE_RESULT_DELIVERY commit,再写结果、渲染事件。", "non_contradictory": "JIUWENSW-I39 称结果文件交换的是“已提交的状态”;新增规则却要求 create 在 commit 前写结果文件,且未明确取代 I39 的这一表述。", "actionable": "规则
  • JIUWENSW-I34: advisory judge: fail {"faithful": "规则称带频道语义的方法都先校验频道、再转发给 Runtime,但 describe_session 先调用 Runtime,取得 descriptor 后才校验频道(client.py:L151-L166)。其余关于 commit、abort、权限快照及会话归属检查的描述有相应代码支持。", "non_contradictory": "所列相邻规则 I32、I33、I35–I43 没有提出与该规则冲突的要求。", "actionable": "规则给出了可检查的缺陷条件:新增 Runtime 调用时核对频道校验;switch、fork、delete 调用前核对
  • JIUWENSW-I35: advisory judge: fail {"faithful": "标题称收尾“每一步都有时限”,但 app.py:L697-L702 显示 live_input.close() 未经过 _bounded_cleanup。其余关于取消请求、异常分支和内层 finally 的描述分别得到 L566-L582、L867-L888、L908-L929 支持。", "non_contradictory": "所示周边规则没有要求放宽 chat 专属的 cleanup_session 条件,也没有要求跳过取消或关闭步骤;I37 对控制器 close() 的要求与本规则所列步骤没有直接冲突。", "actionable":
  • JIUWENSW-I38: advisory judge: fail {"faithful": "app.py L100-L103 and L816-L818 support the matching expressions, but L613-L622 returns 4 when an interaction arrives and interactive is false; it does not establish that every mismatch causes that outcome. L530-L563 supports the request methods and parameters, but does not show a cal
  • JIUWENSW-I40: advisory judge: fail {"faithful": "规则称停止后“直接抛出错误”,但 _pump 仅在 error is not None 时才抛出;没有错误时不会抛出。证据:duplex_control.py:L173-L200。", "non_contradictory": "所示其他规则没有与队列上限、停止顺序或流任务清理要求冲突的内容。", "actionable": "审查者可据此检查队列上限、stop_input 的清队列顺序,以及 consume 和 close_streams 是否妥善处理任务。证据:duplex_control.py:L67-L70、L244-L251、L287-
  • JIUWENSW-I42: advisory judge: fail {"faithful": "The cited consume code requires final, root_terminal, or explicit before setting completed = True. The proposed rule gives the no-pending and not-suspended guards but omits that required completion signal; it also omits event.is_complete from the root_terminal condition (L2
  • JIUWENSW-I43: advisory judge: fail {"faithful": "The claim that all errors go through _fail is too broad: a concurrent read raises RuntimeError directly (duplex_input.py:L215-L220). The cited excerpts also do not show how read_document uses _reading.", "non_contradictory": "The surrounding rules I32–I42 address session, runti

Coverage:

metric before after
PR-weighted, routed 100.0% 100.0%
PR-weighted, rule-bearing 65.7% 85.3%

Hot paths without rules:

  • jiuwenswarm/channels/desktop/desktop_app.py (11 PRs)
  • jiuwenswarm/runtime/service.py (10 PRs)
  • jiuwenswarm/runtime/session/coordinator.py (4 PRs)
  • jiuwenswarm/runtime/session_input.py (4 PRs)
  • jiuwenswarm/symphony/service.py (4 PRs)
  • jiuwenswarm/runtime/cron/models.py (3 PRs)
  • jiuwenswarm/runtime/cron/store.py (3 PRs)
  • jiuwenswarm/common/auth/service.py (2 PRs)
  • jiuwenswarm/instance_manager/lock.py (2 PRs)
  • jiuwenswarm/observability/config.py (2 PRs)
  • jiuwenswarm/observability/sink.py (2 PRs)
  • jiuwenswarm/observability/store.py (2 PRs)
  • jiuwenswarm/runtime/cron/cron_job_mutations.py (2 PRs)
  • jiuwenswarm/runtime/cron/etcd_store.py (2 PRs)
  • jiuwenswarm/runtime/cron/store_base.py (2 PRs)
  • jiuwenswarm/runtime/session/model.py (2 PRs)
  • jiuwenswarm/runtime/session_provisioner.py (2 PRs)
  • jiuwenswarm/symphony/adapter.py (2 PRs)
  • jiuwenswarm/symphony/config.py (2 PRs)
  • jiuwenswarm/symphony/evolution/service.py (2 PRs)
  • jiuwenswarm/symphony/evolution/session_consumer.py (2 PRs)
  • jiuwenswarm/acp/stdio_client.py (1 PRs)
  • jiuwenswarm/acp/subprocess_env.py (1 PRs)
  • jiuwenswarm/app.py (1 PRs)
  • jiuwenswarm/common/auth/account_kit.py (1 PRs)
  • jiuwenswarm/common/auth/apig.py (1 PRs)
  • jiuwenswarm/common/auth/model_catalog.py (1 PRs)
  • jiuwenswarm/common/auth/passthrough.py (1 PRs)
  • jiuwenswarm/common/auth/remote_config.py (1 PRs)
  • jiuwenswarm/common/auth/session_owners.py (1 PRs)

Notes:

  • deepen stopped: coverage target 85% reached; 32 hot group(s) left as they are
  • 4 hot group(s) skipped: their owner already bears rules

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-30T21:58:07.845690Z 49b6a37 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 49b6a371c9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

| PR 描述在做什么 | 精确规则 | 第一批 live 源码 |
|---|---|---|
| common、config、配置、模型选择、model catalog、mode、工作区、cron、updater、doctor、hooks、kv cache… | 入口 | `jiuwenswarm/common/_build_config.py`、`jiuwenswarm/common/chat_final.py`、`jiuwenswarm/common/cleanup.py` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Route Direct reviews to the new rule pages

For changes such as jiuwenswarm/common/config.py, _routes.yaml still routes Direct to this _index.md; the returned quick map is marked ok/read_required: false and contains only the generic 入口 row plus this link, not any of JIUWENSW-I1/I4/I13/I17. The same problem affects the new extension and process-CLI rules, so the Direct contract stops navigation without presenting any of the 16 rules even though this commit enables the lifecycle. Point the owner routes at the new rule pages or embed their rule rows in the routed quick maps.

AGENTS.md reference: knowledge/AGENTS.md:L16-L16

Useful? React with 👍 / 👎.


## JIUWENSW-I39 — _write_worker_result 是 worker 与父 REPL 之间的接口,字段和写入时机都不能随意改

- worker 和父 REPL 之间没有传输层,只通过 `_session_result_file`(内容只有 session_id)和 `_worker_result_file`(JSON,字段为 `operation`、`session_id`、`mode`、`work_mode`、`project_dir`)交换已提交的状态。改字段名、删字段、换编码,都会破坏父进程这一侧的解析。

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Describe pre-commit create results accurately

In the pinned app.py create flow (lines 282–321), _write_worker_result runs before the AFTER_RESULT_DELIVERY commit, and a commit failure is logged rather than rethrown; therefore the parent can receive a result for a session that has not been committed. Calling these files an exchange of only “已提交的状态” gives reviewers the wrong lifecycle invariant and contradicts the required early write in the next bullet. Distinguish create from the switch/fork paths instead of labeling every exchanged result committed.

Useful? React with 👍 / 👎.

@tzhouam
tzhouam merged commit 2d4c237 into main Sep 30, 2026
2 checks passed
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