Skip to content

feat(board): add event history and scoped invitation notifications - #98

Merged
wefio merged 1 commit into
mainfrom
feat/board-event-main
Oct 20, 2026
Merged

wefio merged 1 commit into
mainfrom
feat/board-event-main

Conversation

@wefio

@wefio wefio commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

变更描述

What(改了什么):黑板从"任务单元 + 世界消息"扩展为带协调事件记录的协作空间:事件、频道、关系与生命周期可回看;通知拆成点名/频道/事件三类受众,显式订阅组通知、邀请即订阅、退订与再邀请都有明确身份;Agent 的公开忙闲状态由任务 owner 派生。

Why(为什么改 / 解决什么问题):原来跨 Agent 协作只有世界频道加任务条目,谁该被叫醒、谁已经退订、某次邀请有没有真的送达都没有权威记录;改成把事件记录和通知投递做成一次 Store 事务内的可追溯事实,同时不让每句讨论都变成全员广播。

Changes(关键改动点,按文件或模块列出):

  • src/core/coordination-events.ts、src/core/board-notifications.ts、src/core/store/{coordination,coordination-schema,board-notifications}.ts:事件记录、带版本历史、订阅、退订、邀请、通知去重与合并、归档策略的存储与判定。
  • src/integration/{state,coordination-state,board-wake,agent-surface,tool-contract}.ts、src/cli/*:nmg_state space=board 的 subscribe/unsubscribe/event 等操作、共享 RPC 契约与 capability 门控。
  • 宿主适配:.pi/extensions/nmg/index.ts、opencode-plugin/*(含 boardControlResult 抽取)、dsh/dsh-nmg/src/plugin/index.ts、claude-plugins/nmg-memory/agents/memory-copilot.ts —— 统一用同一份协议,不再各自实现广播。
  • 文档按 docs: complete bilingual reader rollout and documentation rules #93 结构归位:design/board-event-records.md 拆出 board-event-records/event-subscription-and-notification.md(双语 + terms)承载通知受众与邀请规则;design/task-unit-semantics/shared-layer-and-task-board.md 加设计基线句;completion-audit/requirement-matrix.md 该行改为"核心与隔离集成已验证";hidden-features-registry/feature-register.md 登记 board-events;skills/nmg-memory/references/board.md 的操作说明同步更新。

未验证项

Not verified(没验证什么):

  • 未部署、未重启共享 daemon、未改默认开关;运行中宿主是否加载本版本未核实。
  • 没有空闲宿主实时唤醒证据,也没有自然协作收益或成本证据。
  • 本地 advisory 套件 verify:research / verify:chaos 未运行;GitHub Research characterization 检查已通过,Windows chaos 检查为 SKIPPED。
  • 本地完整门禁只在 Windows 上执行;GitHub Linux CI 的 Static、Product、Node 22 检查现已通过。
  • 通知链长、轮数不设硬上限是设计选择,未证明任意 Agent 行为下不存在回执循环。

完成检查项

本地质量检查

  • 完整门禁 --full --require-clean:runId 3c93cd0e-d712-4dab-9687-ddef5549e239,16 项阻断 pass,2 项 advisory skipped,head 29079b48,工作树干净
  • 定向测试 48 项 pass(事件记录、通知、成员、CLI/state、OpenCode/DSH/MCP 适配、cluster DAG)
  • complexity:gate 通过:opencode-plugin 的 boardToolResult 曾从 21 涨到 22,已把 rename/subscribe 分派抽成 boardControlResult,恢复为不增长
  • docs:check 729 files、0 errors、0 warnings;文档组 364、0 errors
  • 未改依赖或 lockfile
  • 未提交可再生产物

RCP(Repository Control Plane)

  • 证据目录 .nmg/verification/board-event-main-20261020/(clean.json、clean.log)
  • 已用 nmg-rcp forge-status --pr 98 --json 确认 CI:All checks passed、Static、Product、Node 22、CodeFactor 均为 SUCCESS;Windows chaos 为 SKIPPED
  • 只提交本改动拥有的文件

CI 完成确认

  • nmg-rcp forge-status 的 All checks passed 为 SUCCESS
  • CodeFactor 通过
  • Static job 通过(含 Dependency audit)

Persist event revisions, independent subscriptions and task-derived Agent status. Commit invitation enrollment, stable retry identity and notification outbox atomically; keep opt-out, quiet acknowledgements and audience scopes independent without collaboration-round limits.

Route shared state and wake delivery through CLI, Pi, OpenCode, MCP and DSH. Verify all 16 blocking checks on the integrated source (a2f6ac84-01c5-4a86-b2be-7a46dffc58a2); isolated fixtures do not claim live-host deployment or natural collaboration benefit.
@wefio
wefio marked this pull request as ready for review October 20, 2026 08:10
@wefio
wefio merged commit 83fdbe2 into main Oct 20, 2026
7 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