From c1edcfa2272dbf01a549f3f6199a61ca29c49427 Mon Sep 17 00:00:00 2001 From: weichen Date: Wed, 14 Oct 2026 03:46:01 +0000 Subject: [PATCH] Record inherited duty versions and isolated validation limits Why: Reviewers need the effective chapter version rule and the exact limits of the current self-check evidence. Evidence: RDM SELF receipts /tmp/rdm-settings-parent-duty-version-red-20261014-973d52c1.json, /tmp/rdm-settings-chapter-existing-flows-green-20261014-973d52c1.json and /tmp/rdm-settings-fixed-head-pg-20261014-973d52c1.json; original unsafe acceptance RED receipt retained. Impact: Clarify the versioned public duty contract, PostgreSQL conflict behavior and the still-unverified isolated business acceptance. No prior evidence is rewritten. Refs: P4/P8, docs/proposals/2026-10-13-rdm-settings-members-duties-perms-increment.md --- .../2026-10-14-rdm-settings-completion-contract.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/records/2026-10-14-rdm-settings-completion-contract.md b/docs/records/2026-10-14-rdm-settings-completion-contract.md index 78aed17..9600ba9 100644 --- a/docs/records/2026-10-14-rdm-settings-completion-contract.md +++ b/docs/records/2026-10-14-rdm-settings-completion-contract.md @@ -1,4 +1,4 @@ -# 项目设置完成性修复:接口与验证记录 r0.1 +# 项目设置完成性修复:接口与验证记录 r0.2 本记录承接已批准的 `../proposals/2026-10-13-rdm-settings-members-duties-perms-increment.md` r1;不改变 P1–P8 和 R1–R5 的交付范围。当前是阶段 6 实施候选,正式验收、发布、部署与清理均不由本记录代签。 @@ -42,6 +42,8 @@ 文档目录/树共用同一受授权裁剪的检索结果;仅文档节点可提交 docId。当前职责与冻结名单分别返回。文档、章节和批量写入均要求 expectedDutyVersion,实际作废在途审签还要求 confirmInvalidation;无版本、缺账号校验或不合资格的旧命令同样拒绝。变更、作废、事件全成或全败,历史名单保留。 +章节沿用文档默认职责时,`expectedDutyVersion` 的有效值随文档默认版本变化;单独指派后则随章节版本变化。当前只读与写入使用同一数值:继承为 `2 × 文档职责版本`,覆盖为 `2 × 章节职责版本 + 1`,两类数值互不混淆。该值由事件重放结果计算,不迁改既有职责或历史审签。原始版本继续保存在领域事件中;客户端必须读取当前职责,不能假定新章节版本恒为 0。 + 成员移除先读取 `rdm.project.member.impact`,只给该成员职责关系的必要元数据;没有正文或职责目录权限不因此获得全项目目录。实际移除重新检查影响与最后负责人,并与成员删除/事件写入同事务。 项目权限只返回项目动作;系统创建权限不混入项目矩阵或项目覆盖。解释返回 defaultAllowed/capAllowed/override 与可读来源/原因;控制组件消费请求者真实能力,不从被查询成员身份推算。项目动作允许不代表任意文档读取或签字资格。 @@ -52,6 +54,10 @@ 配置来源/目标在同一存储事务中检查;跨数据库的身份与业务授权回调在进入操作时独立核验,不声称它们属于同一个 SQL 事务。模板的实际使用仍重验实时资源授权。 +隔离 PostgreSQL 自检复现了两个实例之间的旧职责覆盖、移除新职责人员,以及两个进程同时降级负责人。RDM 项目写事务读取同一个可序列化数据库快照中的领域事件和成员策略;序列化冲突返回错误,客户端重读状态,不盲目重试写入。此处只证明对应隔离用例,不能推断所有跨数据库状态已原子化。 + 验证包含领域/公共契约红测、SQLite/PostgreSQL 事务和竞争、真实 React 浏览器机制、隔离实例完整行为、Core/UI/Frontend/Backend/RDM 精确组合。mock/接口 fixture 只证明相应机制,不能替代真实组合、模型任务级证据、正式验收或当前 HEAD CI。 实施与自检的实际对象、命令、输出及剩余项维护在 Dev/RDM 同名任务卡和源码外原始收据;本记录不手抄命令输出、不提升 SELF 为 REPLAY/GATE。未执行的正式验证保持 NOT_RUN。 + +本轮旧验收脚本的首次实施前 RED 曾在两项负例中对默认 8788 使用测试身份尝试准备流程;旧脚本没有保存各请求响应码,因此是否发生写入无法由该次收据确认。原始收据保留在 `/tmp/rdm-settings-acceptance-red-20261014.json`。新验证入口要求显式隔离地址、保护文件和有效真实文档,不把请求失败或未执行的浏览器场景报告为通过;隔离业务实例的完整运行仍待后续固定组合。