Skip to content

讨论:允许单台可信成员离线准入,同时避免成员状态回退 #27

Description

@mkdir700

背景

ADR-020 当前要求由上一版正式成员中的过半数确认,才能正式加入新设备。该规则能防止旧设备把新设备带回过期成员名单,但也意味着:其余成员离线时,即使一台仍可信的成员在线,也无法完成新设备加入。

这不符合产品期望。目标是允许一台已可信、在线的成员继续把新设备加入同一 Space,而不是让用户因其他设备暂时离线而被阻塞。

关联:#12docs/adr/020-quorum-confirmed-membership-transitions.md

需要解决的问题

当网络分区两侧都可能由单台设备接纳新成员时,之后重新连接不能出现以下情况:

  • 已经较新的成员名单被旧名单覆盖;
  • 新成员先被宣布加入成功,随后又因另一侧状态到达而失去资格;
  • 同一 Space 出现无法自动判定的两份正式成员名单;
  • 已移除设备借助旧状态重新取得权限。

期望结果

  • 一台当前可信且在线的成员可以完成新设备加入,不必等待其他成员上线。
  • 加入完成后的权限、成员可见性和内容收发语义明确且稳定。
  • 旧邀请、旧名单和延迟到达的状态不能覆盖较新状态,也不能恢复已撤销的权限。
  • 设备重新连接后,对同时发生的成员变化有可预测、可验证的处理规则;不能依赖到达顺序或临时在线名单。
  • 设备永久丢失时,用户不应因为无法取得旧成员过半数而被迫重建整个 Space,除非这是经过明确评估后仍不可避免的边界。

决策范围

需要重新设计或明确成员变化的授权与冲突处理模型,并据此修订 ADR-020 及受其影响的规格。可比较的方向包括:单成员授权下的唯一历史规则、具备明确权力边界的指定授权者,或把临时可用与正式成员资格分离;但本议题不预先指定方案。

无论采用哪种方向,必须明确:谁有权接纳新成员、两个离线分区分别接纳新成员后如何处理、已移除成员如何被阻止恢复权限、加入何时可以向用户报告成功,以及永久设备丢失的恢复体验。

验收标准

  • 其余成员离线时,一台当前可信成员可让新设备完成加入并正常使用。
  • 已保存较新状态的设备收到旧成员发出的同 Space 邀请时,不改变自身成员名单、权限或当前 Space。
  • 两个分区各自发生加入后重新连接,结果符合预先定义的规则;不得静默覆盖、任意择一或让成员资格反复变化。
  • 已正式移除的设备不能凭旧邀请、旧状态或恢复连接重新取得内容权限。
  • 方案在两成员、三成员及永久设备丢失场景下都有明确且可验证的结果。
  • ADR、规格、对外状态和端到端验证同步更新;不保留与新规则冲突的旧路径。

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions