Repository navigation
feat: authorized event subscriptions and deterministic task coordination - #243
Conversation
|
任务创建失败有一个可复现的类型边界问题(head a5472ba):task_graph.create 第 14 行 只接受 list,但 OperationRequest 的 record 校验 会调用 freeze_json,把 arguments 内的数组变为 tuple。task_plan_create 第 80 行 原样传入 args['tasks'],因此合法的两任务请求也会触发 invalid_task_graph。 我用此提交的 freeze_json 和 create 函数做了隔离复现:直接传两任务 list 成功;同一输入先 freeze_json 后,tasks 类型为 tuple,create 抛出 invalid_task_graph。没有重跑完整 Python 3.15/PostgreSQL 集成;已有 CI 的 3 个失败都停在 tests/test_task_plans.py:16 的创建断言(77 passed),日志/JUnit 没有完整展开 error.code。 建议让 create 接受受支持的 list/tuple 序列,或在 handler 明确转换容器,同时保留任务数量、元素及依赖校验;增加一条经过真实 OperationRequest 冻结边界的回归用例,避免纯 list 单元测试遗漏。该 run 另有两项 Ruff:src/msg/core/task_graph.py:54 改用 dict.fromkeys,tests/test_task_graph.py:28 改用字典字面量;format.diff 也非空,修复后仍需完整格式检查。 |
…very and fix formatting
|
You have reached your Codex usage limits for security reviews. Please try again later. |
|
本机已完成代码核对与验收:新接口及客户端第一组 67 passed;SIGINT 用例因后台 shell 继承 SIG_IGN 导致测试进程忽略信号,改为隔离会话启动后,该用例与既有协作、事件、listener 交叉回归共 55 passed。共 122 个不同用例通过。Ruff 全量 lint/format 通过。已吸收远程同一格式修复,保留专项验证为 workflow_dispatch,避免日常自动 CI。未修改签名、CA 或 credential ceiling;准备合并并部署此精确内容。MSG 当前无法发现任务讨论父引用(credential_ceiling),此处仅记录脱敏代码证据。 |
实现
communication.events@2与msg listen --subscribe [--resource ID]:复用已提交事件日志和受保护游标。PostgreSQL 通知只负责唤醒,不携带正文或身份;等待期间不持有事务,醒来重新执行原有认证和当前权限检查。events-v1位置;权限变化保留序号并返回authority_changed。日志清理仍返回resync_required。不自动重置位置,也不切换到公开、本地或其他账号的通道。task_not_ready,不追加任务版本或事件,避免订阅器被自己的空操作反复唤醒。docs/EVENT_COORDINATION.md,并从docs/SUBAGENTS.md引用。合并与验证(2026-10-13)
bad0da80284bbab1659d6e8a5e2ef9233513de38,保留main已有的本地原生事件、远程自适应轮询、无正文的远程检查点和恢复测试。2bd54ab3143e0fe30b5a45a09f3475a0464ad536。此前 Python quality 运行38326566850的静态检查无问题;仅这两处格式不符,已按其自动生成的修复补丁提交。38326566598:111 passed、0 failed、0 skipped,环境 Python 3.15 + PostgreSQL 16。该次 CI 唯一失败步骤为格式检查,格式问题随后已修正。后续最新提交与合并后的 CI 需分别查看各自的运行结果。main,合并提交82a62f5120440b33e721008dff414e59c19d1dbf。未声称生产部署。边界
communication.changes、邮箱游标与 events 游标不是同一种,不能互换。权限扩大后,客户端资源缓存仍需按当前权限刷新。