[CTR] 冻结 Sense/Brain→Bell 标准事件与证据引用契约 v1 #150
Closed
opened 2026-08-29 21:04:54 +08:00 by ila
·
5 comments
No Branch/Tag Specified
dev
feat/183-bell-contact-schedule
docs/171-coordination-e2e-wiki
feature/155-coordination-e2e
docs/168-sync-coordination-wiki
feature/154-coordination-deployment
docs/152-153-connectors
feature/153-event-evidence-connector
feature/152-brain-control
docs/151-machine-identity-acceptance
task/151-machine-identity
docs/150-contract-acceptance
docs/148-149-contract-acceptance
feature/149-runtime-status-contract
feature/150-event-evidence-contract
feature/148-source-config-contract
docs/8-mvp-acceptance
feature/145-sense-e2e-isolation-cleanup
feature/134-bell-independent-e2e
feature/142-bell-ui-shell-startup
feature/140-bell-minimal-admin-menu
feature/138-bell-production-captcha
feature/133-bell-alert-lifecycle
feature/132-bell-rule-alert
feature/131-bell-event-receipt
feature/16-brain-local-events
feature/15-brain-rules
feature/14-brain-vision
feature/13-brain-decode
feature/11-brain-input
main
feat/sense-79-ops-alerts
feat/sense-78-outbox
feat/77-sense-media-shards
feat/76-sense-edge-node-status
feat/75-sense-quota-capacity
feature/74-sense-operations
feature/73-sense-local-events
feature/72-sense-bulk-provisioning
feature/113-record-parallel-acceptance
feature/113-sync-parallel-implementation-docs
feature/71-sense-e2e-regression
feature/62-bell-goadmin-skeleton
feature/10-brain-python-cuda-skeleton
feature/108-sync-devharness
feature/90-sense-root-launcher
feature/106-supervisor-sense
fix/101-sense-layout-shell
feature/104-sense-login-30-days
docs/99-acceptance
feature/99-sense-app-config
feature/70-sense-windows-delivery
fix/95-sense-media-path-constraint
feature/97-sense-password-login
docs/92-acceptance
fix/92-sense-capabilities-jsonb
docs/69-acceptance
feature/69-sense-area
feature/68-sense-liveview
feature/67-sense-mediamtx-reconcile
feature/66-sense-onvif-admission
feature/65-sense-device-credential
feature/64-sense-auth-rbac-audit
feature/61-sense-goadmin-source-baseline
docs/acceptance-batch-20260814
coordination/58-finalize-branch-governance
explore
agent/codex/56-sense-device-edit-payload
agent/codex/54-sense-liveview-on-demand
agent/codex/51-sense-auto-liveview
agent/codex/50-sense-split-camera-credentials
agent/codex/48-sense-onvif-digest
agent/codex/46-sense-env-loader
agent/codex/44-sense-empty-navigation
agent/codex/42-sense-password-length-only
agent/codex/40-sense-password-min-6
agent/codex/37-sense-windows-package
agent/codex/36-bell-docs
agent/codex/9-bell-mvp
agent/codex/21-sense-mvp
agent/codex/28-current-prototypes
agent/codex/5-goadmin-baseline
agent/codex/3-go-admin-ui-reuse
agent/codex/1-collaboration-rules
No results found.
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: ila/yovision#150
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
状态
已完成(2026-08-31,用户验收通过)
基本信息
contracts/events/v1/**、contracts/evidence/v1/**目标
冻结匿名安全事件和证据逻辑引用契约 v1,使 Bell 以
(producer_id, source_event_id)永久幂等接收,并保持 Event 不可变、Alert/ack/close 仍由 Bell 独占。已确认边界与拟议设计
非目标
不共享 Alert 状态机、用户/RBAC、数据库表、通知状态或运维告警;不实现证据存储、机器身份、connector、通知升级或 UI。
精确 write_paths
contracts/events/v1/**contracts/evidence/v1/**contracts/tests/events-v1/**contracts/tests/evidence-v1/**禁止写入:
Sense/**、Brain/**、Bell/**、其他contracts/**、根级部署和docs/**。验收标准
验证
Schema/OpenAPI 校验、规范化/幂等向量、敏感字段拒绝、生产者与消费者 fixture 兼容、未知版本与证据降级测试。
风险与回退
错误幂等或事件语义会制造重复/漏报。协议未冻结不得上线 connector;回退保留旧版本接入,停用新版本生产者,不删除 Event/Receipt/Outbox 事实。
设计与文档影响
非 UI 任务,以事件/API/数据设计作为确认门禁;冻结后更新 Product-Requirements、Architecture、Business-Rules 和验证 Wiki。
设计确认(2026-08-29)
用户在 #124 验收闭环后的下一步中明确回复“已确认”。按上一条明确建议,本次确认覆盖 #148、#149、#150 的协议/状态设计与兼容、回退边界;工单进入“待实施”。
本次只放行后续实施,不代表功能验收,不关闭工单,也不扩展为对高风险 #151 机器身份认证、轮换和吊销方案的确认。
实施完成证据(2026-08-31)
最终差异
contracts/events/v1/**冻结 Event、接收结果、problem JSON Schema 与 OpenAPI,规定原始(producer_id, source_event_id)永久幂等、RFC 8785/JCS + SHA-256 规范化、重复返回原 Event、载荷冲突稳定409并审计、未知版本422。contracts/evidence/v1/**冻结逻辑证据引用及查询 OpenAPI,覆盖pending、processing、available、failed和 404/410 降级;不授予对象访问,也不允许路径、凭据或签名 URL。验证结果
python contracts/tests/events-v1/test_contract.py:7/7 通过。python contracts/tests/evidence-v1/test_contract.py:4/4 通过。python dev_scripts/harness.py check --strict:通过。python -m unittest discover -s tests -v:48/48 通过。git diff --check与暂存差异检查:通过。contracts/**路径;未修改 Sense、Brain、Bell、其他 contracts、根级部署或 docs。提交与评审
2a395aa12604baa641798d2ee73fca2635ea7b30feature/150-event-evidence-contract→dev未验证内容
尚未接入真实 Brain/Sense mapper、relay、Bell mapper 或 connector,未执行跨进程/并发幂等和生产证据存储验证;这些属于后续 connector/E2E 工单。机器身份和访问授权仍由未确认的 #151 处理。当前环境未安装第三方 JSON Schema/OpenAPI 校验器,已用受控关键词的依赖零契约测试验证全部样例、条件分支和引用。
文档影响
协议冻结会影响长期 Product-Requirements、Architecture、Business-Rules 和验证 Wiki。按三份并行契约工单的协调约定,本工单不并发修改 Wiki/
docs/**,由根协调 agent 在 #148–#150 汇总后串行更新、回读并同步镜像;未创建任务归档。联合检查修订证据(2026-08-31)
联合检查发现首版提交把证据成功态写成
available,与 #150 验收措辞及 Sense 既有pending/success/failed边界不一致,会给 mapper 引入无必要转换。现已在原范围内统一修订:pending | processing | success | failed;success严格要求content_type和integrity;failed、pending、processing的互斥约束保持不变;available,并分别验证success缺少content_type或integrity时失败。追加提交:
359c553,已推送到 PR #158。重新验证:events 7/7、evidence 4/4、仓库 48/48、DevHarness strict、
git diff --check和暂存差异检查均通过。工单继续保持待验收,PR 未合并,工单未关闭。根协调联合复核(2026-08-31)
将 #148、#149、#150 的最终提交按完整提交链临时叠加到同一隔离 review worktree 后复核,未合并或推送 review 分支。
yovision.source-config/v1、yovision.runtime-status/v1、yovision.event/v1、yovision.evidence-reference/v1。config_id + integer revision改为多配置流configurations[],不存在单一 revision 歧义。success,保留processing中间态;旧available被测试拒绝。git diff --check通过;旧命名标记扫描为 0。dev,尚未合并。#150 最终 PR:#158,head
359c553452e0b91a532e07af8c9108e3436eb7bb。用户验收通过(2026-08-31 10:05 +08:00)
用户明确回复:
#150通过。合并与验证证据
359c553452e0b91a532e07af8c9108e3436eb7bbdev23a85278cb882f417a91e85c312b701b8e32e470python dev_scripts/harness.py check --strict:通过git diff --check:通过长期文档
已更新并在线回读:
c9970b0ee8b677b6be13f31af67b3206a3faf956812e822990d8c8e82445bd19ced67aca8c10aba4bc4a1a7be268028fa85717b71f48f7dd75cc7e52d11757b202117e028878802e1e8a9ba9df1a8e89核心镜像提交:
b548b05874788342d95aa307b21bf57f8df386b5;PR #161 已合并,合并提交:573113eb3b12567bb0de1b85f0ffa07bc85db1bf。镜像一致性检查通过。边界
#153 产品 mapper/relay/ingress 和 #151 机器身份尚未实施;#151 仍为高风险安全设计,需单独人工确认。本次未创建任务归档。