Skip to content

[P2] Resource/Organization/ShareGrant 授权来源与撤权矩阵 #76

Closed

Description

@LIghtJUNction

2026-09-28 最新状态:#105 已合并,完整授权验收继续开放

本轮先按源码更新本 issue,随后复核最新 CI、读取 #105 全部六个文件 diff 和 review 状态,将其以 expected head SHA squash 合并。

  • 合并提交:acc542ab7cbb6983c1e44d294e116d2b0eb6ed68。
  • 已验 PR head:6924cd4bc9de784185ea75cb341d07ec5fe58ef2;完整 Rewrite contracts CI 36386876605 success。
  • 合并后 tree 24010db7aecdf85b1303a029e431fc456121a985 与通过 CI 的 head tree 相同。新 main 的 push CI 是独立运行,不能预记成功。
  • 已将 PR 的自动关闭关键字改为 Refs [P2] Resource/Organization/ShareGrant 授权来源与撤权矩阵 #76,不把本总体验收提前关闭。Copilot 因配额未完成评审,不冒称外部批准。

已合入

剩余验收

  • 对完整设计矩阵逐项匹配实际测试,而非只依据 20 个新增 case:owner/group/mode、Membership、TopicBan、直接/派生 ShareGrant、ShareLink、证书/capability 当前事实、父链和上限。
  • HEAD/Range/ETag/暖缓存/所有附件与 LinkSet 等投影、错误/计数/digest/名称/facet 的不泄露矩阵;不仅比较数量,还检查必要状态/字段不被只读请求更新。
  • 各来源撤销/过期/父对象移动/退组/封禁/恢复和独立合法来源正例;不支持语义明确拒绝,不新增任意表达式/写分享契约。
  • 与 fix: recovery evidence, persistent restore quarantine and root rotation integrity (#68–70) #112 的持久 quarantine 整合:恢复未提升时全部业务读取拒绝;同时保留底层当前授权/字段裁剪的独立证据。新恢复闸与现有“恢复后可读最小投影”测试有语义交集,必须设计隔离及受控验证,不删除用例或绕过闸门。
  • 整合后完整 Python 3.15/PostgreSQL/Valkey 四分片/逐 node ID/conformance/build 成功;生产容量与适用快照、独立授权检查点及隔离恢复记录 #84 的生产矩阵仍独立未验。

任务 C

不再重新创建或再次合并 #105;从 acc542ab... 或更新 main 开始,只补剩余真实缺口并负责串行集成。security/authorization.py 由 C 主责,任务 A 的恢复闸以窄接线联合核验,任务 B 消费同一 Authorizer。详细分工、当前基线和 CI 门槛见 #83。

本轮合并已有源码修复,没有新增现场部署/Root 操作/恢复生产库/真实邮件;旧凭据和 CA 上限没有扩大。

Activity

  1. LIghtJUNction commented on Sep 27, 2026

    @LIghtJUNction
    ContributorAuthor

    推进见 #111,接续 #99 的统一 ShareGrant 来源校验,当前提交 8aa0e12,尚未合并。没有把此 issue 标记为完成。

    新增长连接/真实适配器回归 tests/test_share_transport_matrix.py:HTTP、GET path、GraphQL、MCP HTTP、CLI 子进程、MCP stdio 均使用真实签名身份和 PostgreSQL,验证群组授权→成员再分享→成员退组后,复用原凭证仍不能读取当前正文、旧修订、历史列表、缓存摘要或搜索摘要;Sync 仅返回撤销引用并要求重新同步。随后验证独立所有者授权不被失效的旧分享链否决,再撤销独立授权后拒绝读取。

    首次全量执行发现默认返回的 compact JSON 会省略 null 字段,导致客户端对默认投影算出的摘要无法复用;新矩阵改为明确相同的非空字段集,仍要求正向命中 not_modified,撤权后必须拒绝,未删减这些安全断言。一般默认投影的 null/摘要规范化不在本补丁内,不声称已修复。六入口矩阵的最终结果须看 run 36353919437,不能用此前 ShareGrant 单元测试通过代替。

    仍缺完整 Resource/组织角色/TopicRole/证书/ShareLink 组合、附件及全部通知投影、并发恢复和时间边界的验收矩阵。当前 ShareGrant@2 的非空任意 constraints 仍明确拒绝,没有为扩大覆盖率开放未实现的权限能力。

  2. added 4 commits that reference this issue on Sep 28, 2026
  3. LIghtJUNction commented on Sep 29, 2026

    @LIghtJUNction
    ContributorAuthor

    2026-09-29 当前接续(#185 已合并)

    main 5cdaeba2b7b191a27684093cce7b5a153c99c88d / tree 3ad68f2012896310abfa9bcaf800c9ab05f6c886 已实际读回,等于最终PR通过的树。18个PR工作流全部success;8份ZIP摘要/JUnit node-ID独立核验 2531 core + 8 conformance,零失败/错误/跳过。精确来源和产物摘要见 #185证据,更新索引见#83。合并后main push是独立运行,正在核验,不预记成功。

    全量与Hosting/Recovery专项重跑当前授权、撤权、字段裁剪和quarantine断言;安装包四种真实HTTP传输及doctor比较全表行值/sequence保持零变化。原owner/group/ShareGrant/祖先禁令、HEAD/Range/ETag/历史与暖缓存逐条范围保留;该轮源码回归不是实际现场授权矩阵或整章完成分母。

    各条款源码入口与独立现场材料见 docs/RELEASE_ACCEPTANCE.md。本评论更新证据归属,不降低原验收范围或扩大现场权限。

  4. LIghtJUNction commented on Oct 3, 2026

    @LIghtJUNction
    ContributorAuthor

    当前支持的授权来源与撤权实现可以收口。按 main 105c2cf7 核读源码和本轮CI逐项结果:test_authorization_matrix 覆盖九来源及真实HTTP/PathGET/GraphQL/MCP/CLI,缓存辅助断言覆盖HEAD/Range/ETag;test_authorization_recovery_boundaries 覆盖附件/LinkSet隔离、并发撤权与真实PG恢复隔离,ShareGrant父链/过期/当前组状态也有独立回归。未知约束仍明确拒绝。

    关闭已实现的功能验收,不继续把全设计任意组合的人工穷举作为本项永久关闭条件。目标部署与恢复放行仍分别归#84,本次没有新增现场操作或扩大权限。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions