cfdaily
6ea43d76e3
[moz] impl(§17): issue_assigned steps git 操作具体化 + ToolchainApiSection Git 说明
...
CI / lint (pull_request) Successful in 10s
CI / test (pull_request) Successful in 27s
CI / frontend (pull_request) Successful in 11s
CI / notify-on-failure (pull_request) Successful in 0s
改动 1: issue_assigned 编码路径 steps 改为具体 git 命令
(checkout main → pull → checkout -b → add/commit → push)
改动 2: ToolchainApiSection 新增 Git 操作说明段落(含开发目录路径)
改动 3: 测试更新(issue_assigned 断言 + 3 个 Git 说明测试)
466 passed
2026-06-19 13:53:44 +08:00
cfdaily
f74ae30d41
[moz] impl(§17): CI/部署失败 steps 分支指引 + 基础设施 Issue 转交流程
...
CI / lint (pull_request) Successful in 10s
CI / test (pull_request) Successful in 27s
CI / frontend (pull_request) Successful in 13s
CI / notify-on-failure (pull_request) Successful in 0s
改动 1: ci_failure steps 增加分支指引(代码问题自己修/基础设施问题提Issue给姜维)
改动 2: deploy_failure steps 同上分支指引(2处定义都改)
改动 3: issue_assigned handler 按 type/infrastructure label 分流
- infrastructure label → infrastructure_failure event_type(运维排查 steps)
- 其他 → 原有编码 steps
改动 4: ToolchainApiSection 新增「需要创建 Issue 时」API 指引段落
改动 5: Red Flags 新增「不是我代码的问题」条目
测试: 8 个新测试,463 passed
2026-06-19 13:18:11 +08:00
cfdaily
9ec601d747
[moz] feat: Runaway Guard per-task dispatch 上限
...
CI / lint (pull_request) Successful in 8s
CI / test (pull_request) Successful in 29s
CI / frontend (pull_request) Successful in 12s
CI / notify-on-failure (pull_request) Successful in 1s
§15 Runaway Guard — per-task dispatch_count 上限,防止无限循环 dispatch
问题:mail/toolchain task 走 handler auto-working(跳过 claim),不受
claim_timeout 3 次重试兜底保护。如果反复 spawn 但永远到不了 done/failed,
会无限循环消耗资源(实际案例:2026-06-15 mention 重复投递事件)。
设计:
- tasks 表新增 dispatch_count 字段
- 每次 ticker 成功 dispatch 时递增
- dispatch_count >= 10 时自动标 failed(reason=runaway_guard)
- 覆盖所有非终态(pending/working/claimed)
- 参考 Hermes v0.13 §3 Per-Task 重试上限
改动文件:
- src/blackboard/db.py: _safe_add_column dispatch_count
- src/blackboard/models.py: Task dataclass 加 dispatch_count
- src/daemon/ticker.py: dispatch 递增 + _check_timeouts runaway guard
- docs/design/15-runaway-guard.md: 设计文档
- tests/integration/test_ticker_integration.py: E13 测试 3 个
测试:456 passed, 3 skipped
2026-06-16 23:10:27 +00:00
cfdaily
f55a037c98
[moz] docs: §18 API 聚合重构 + 工具链 Tab 设计文档
...
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 28s
CI / notify-on-failure (pull_request) Successful in 1s
- 18-api-refactor-and-toolchain-tab.md: 主设计(9章+实施约束)
- 后端拆分方案 B(task_routes + task_relation_routes + shared)
- expand 细粒度聚合(comments/events 带 limit+total_count)
- 任务列表搜索参数 q
- 工具链 Tab 设计(仿 MailPanel + 搜索栏)
- GATE 门控 + 委派原则 + wiki 查询规则
- 司马懿已审(mail-1781415763066)
- 18-test-design.md: 测试用例详细设计(34 个用例 + CI 集成)
- tests/scripts/verify_api_compat.sh: 路由兼容性验证脚本
2026-06-14 13:53:56 +08:00
cfdaily
3bca794902
fix: M2 on_failure assignee 从 tasks 表读取 + infrastructure 防递归(司马懿 Review #65)
...
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Failing after 9s
CI / notify-on-failure (pull_request) Successful in 1s
M2: on_failure 中 assignee = meta.get('from', '') 读到 'system' 而非实际 Agent
→ 改为 SELECT must_haves, assignee FROM tasks 直接读 tasks.assignee 字段
附带:infrastructure failure 改为直接 DB INSERT,不走 _send_toolchain_task 防递归
2026-06-13 23:47:12 +08:00
cfdaily
c89863a288
feat: §17 ToolchainHandler 强约束实现(Step 1-4)
...
CI / lint (pull_request) Failing after 7s
CI / test (pull_request) Has been skipped
CI / notify-on-failure (pull_request) Successful in 1s
Step 1: 基础设施
- prompt_composer.py: PromptContext 新增 action_type + action_steps 字段
- spawner.py: handler 路径提取 action_type/action_steps 传入 PromptContext
- db.py: comments CHECK 约束加入 action_report
Step 2: ToolchainHandler 强化
- ToolchainContextSection: 加 steps 渲染 + action_hint(按 action_type)
- ToolchainApiSection: 改为 action_report 提交指引 + Gitea 协作指引
- ToolchainConstraintsSection: 5 条强约束 + Red Flags 防self-rationalization
- verify_completion: action_report → output → comment 三层 fallback
- review_merged 始终通过(纯通知)
- infrastructure_failure 始终通过(防递归)
- 修复 LENGTH(content) → LENGTH(body) bug
- on_failure 三分路: 业务→Gitea PR comment / 系统→Gitea Issue / 基础设施→toolchain task
Step 3: toolchain_routes 改造
- 新增 _toolchain_db_path() + _send_toolchain_task()
- 所有 8 个 handler 改为 _send_toolchain_task
- _send_mail 保留但不再被 toolchain handler 调用
- _send_deploy_failure_mail → _send_deploy_failure_task
Step 4: 测试
- 29 个单元测试全部通过
- 全量 456 passed, 3 skipped, 0 failures
2026-06-13 23:36:44 +08:00
cfdaily
7fb4d988ec
fix: lint 修复 + api_error 测试更新
...
CI / lint (pull_request) Successful in 6s
CI / test (pull_request) Successful in 8s
CI / notify-on-failure (pull_request) Successful in 0s
- mail_notify: f-string 反斜杠修复、行过长修复、unused import
- test_classify_outcome: api_error should_retry 改 True
2026-06-13 09:29:52 +08:00
cfdaily
e7f28cd36e
fix(mention): address PR #45 review feedback (M1-M3, S1-S3)
...
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 8s
CI / notify-on-failure (pull_request) Successful in 0s
M1: Remove '帮忙' from help_keywords to fix keyword priority bug
M3: Add unit tests for mention_utils (§25.7)
S1: Merge two 'if action == opened' blocks in _handle_issues
S2: Extract _send_review_mentions helper to deduplicate @mention code
S3: Remove redundant 'import re' inside conditional block
2026-06-12 18:56:54 +08:00
cfdaily
fe541f6c89
fix(spawner): §24 v4 仲达review M1(双staticmethod) + S1(TC11)
CI / lint (pull_request) Successful in 7s
CI / test (pull_request) Successful in 9s
CI / notify-on-failure (pull_request) Successful in 0s
2026-06-12 00:04:10 +08:00
cfdaily
3c2c0f3175
fix(spawner): §24 v4 compact检测 - trajectory prompt.submitted 替换 gateway rotation
CI / lint (pull_request) Failing after 7s
CI / test (pull_request) Has been skipped
CI / notify-on-failure (pull_request) Successful in 0s
2026-06-11 23:57:09 +08:00
cfdaily
bcb8ced17a
fix(spawner): address PR#36 review feedback (M1+M2+S1+S2)
CI / lint (pull_request) Successful in 8s
CI / test (pull_request) Successful in 9s
CI / notify-on-failure (pull_request) Successful in 0s
2026-06-11 21:40:09 +08:00
cfdaily
b90b7b37c7
fix(test): e2e test 在 collection 阶段跳过(不 import 安装目录)
...
CI / lint (pull_request) Successful in 8s
CI / test (pull_request) Successful in 8s
CI / notify-on-failure (pull_request) Successful in 1s
根因: test_e2e_v27.py 的 skipif 只标记了函数级别,pytest collection 阶段
仍会 import 该文件,触发 sys.path.insert 指向安装目录的 spawner.py。
如果安装目录有 merge conflict 残留,整个 test job crash。
修复: 将 skipif 加入 pytestmark 级别,collection 阶段即跳过。
2026-06-10 07:52:41 +08:00
cfdaily
5bb220d237
fix(spawner): A13 exit=0 always completed, not agent_error
...
exit=0 means process exited normally. Trust the exit code regardless
of stdout/JSON output or task_status. Old logic misclassified inform
Mail completions as agent_error, causing infinite retry loops.
Includes test update: test_task_status_pending expects completed.
2026-06-09 23:41:53 +08:00
cfdaily
f7fbdac89c
chore: simayi-approved changes - lint fixes, toolchain improvements, healthz
...
All changes reviewed and APPROVED in PR #12 (Review ID: 40):
- toolchain_routes: webhook repo/org format compat, content dedup (sha256), closed issue filter
- dispatcher: inform mail crash 误标 done 修复
- ticker: cleanup and improvements
- healthz endpoint
- conftest: integration/e2e deselect markers
- docs: design docs, test-guide updates
- various lint/whitespace fixes across 30 files
2026-06-09 23:41:53 +08:00
cfdaily
7e1bdec0b2
auto-sync: 2026-06-07 08:23:57
Deploy / ci (push) Waiting to run
Deploy / deploy (push) Blocked by required conditions
Deploy / notify-deploy-failure (push) Blocked by required conditions
2026-06-07 08:23:57 +08:00
cfdaily
363879f80d
auto-sync: 2026-06-05 23:36:26
2026-06-05 23:36:26 +08:00
cfdaily
df54cf9f2b
auto-sync: 2026-06-05 23:25:51
2026-06-05 23:25:51 +08:00
cfdaily
83e1d3b252
auto-sync: 2026-06-05 23:24:58
2026-06-05 23:24:58 +08:00
cfdaily
9c455f8660
auto-sync: 2026-06-05 23:22:03
2026-06-05 23:22:03 +08:00
cfdaily
de4f708f82
auto-sync: 2026-06-05 23:19:24
2026-06-05 23:19:24 +08:00
cfdaily
40ad214c0f
auto-sync: 2026-06-05 23:19:09
2026-06-05 23:19:09 +08:00
cfdaily
bf77187633
auto-sync: 2026-06-05 23:18:33
2026-06-05 23:18:33 +08:00
cfdaily
8bcd0429f5
auto-sync: 2026-06-05 18:46:02
2026-06-05 18:46:02 +08:00
cfdaily
e23aa1fed2
auto-sync: 2026-06-05 18:45:24
2026-06-05 18:45:24 +08:00
cfdaily
76945a47d6
auto-sync: 2026-06-05 18:41:47
2026-06-05 18:41:47 +08:00
cfdaily
3573a6db9c
auto-sync: 2026-06-05 14:09:49
2026-06-05 14:09:49 +08:00
cfdaily
d8e25734d1
auto-sync: 2026-06-05 13:29:53
2026-06-05 13:29:53 +08:00
cfdaily
9b85039865
auto-sync: 2026-06-05 13:29:28
2026-06-05 13:29:28 +08:00
cfdaily
3c693d1ac9
auto-sync: 2026-06-05 13:29:00
2026-06-05 13:29:00 +08:00
cfdaily
204b3a6640
auto-sync: 2026-06-05 13:28:23
2026-06-05 13:28:23 +08:00
cfdaily
3e8e9e6d9c
auto-sync: 2026-06-05 13:27:55
2026-06-05 13:27:55 +08:00
cfdaily
e867d4e985
auto-sync: 2026-06-05 13:27:30
2026-06-05 13:27:30 +08:00
cfdaily
0c1f89a43a
auto-sync: 2026-06-05 13:27:20
2026-06-05 13:27:20 +08:00
cfdaily
6a649aba07
auto-sync: 2026-06-05 11:03:30
2026-06-05 11:03:30 +08:00
cfdaily
9e76bc6e76
auto-sync: 2026-06-03 08:06:31
2026-06-03 08:06:31 +08:00
cfdaily
4155d565cd
auto-sync: 2026-06-03 08:05:44
2026-06-03 08:05:44 +08:00
cfdaily
ef3824369c
auto-sync: 2026-06-03 08:04:50
2026-06-03 08:04:50 +08:00
cfdaily
ab87957629
auto-sync: 2026-06-03 08:04:11
2026-06-03 08:04:11 +08:00
cfdaily
90a6396efa
auto-sync: 2026-06-03 08:03:53
2026-06-03 08:03:53 +08:00
cfdaily
788a76d9ed
auto-sync: 2026-06-03 08:03:32
2026-06-03 08:03:32 +08:00
cfdaily
94b737f950
auto-sync: 2026-06-03 08:02:08
2026-06-03 08:02:08 +08:00
cfdaily
d14662fa22
auto-sync: 2026-06-02 07:56:13
2026-06-02 07:56:13 +08:00
cfdaily
a6cdbc382a
auto-sync: 2026-06-02 07:56:02
2026-06-02 07:56:02 +08:00
cfdaily
c16e5fb5f6
auto-sync: 2026-06-02 07:55:45
2026-06-02 07:55:45 +08:00
cfdaily
f74629e58c
auto-sync: 2026-06-02 07:55:04
2026-06-02 07:55:04 +08:00
cfdaily
5417168828
auto-sync: 2026-06-02 07:54:11
2026-06-02 07:54:11 +08:00
cfdaily
0859669aaf
auto-sync: 2026-06-02 07:53:28
2026-06-02 07:53:28 +08:00
cfdaily
7effd92832
auto-sync: 2026-06-02 07:53:07
2026-06-02 07:53:07 +08:00
cfdaily
22e4b7389e
auto-sync: 2026-06-02 07:51:58
2026-06-02 07:51:58 +08:00
cfdaily
389d99e67e
auto-sync: 2026-06-02 07:51:37
2026-06-02 07:51:37 +08:00