Skip to content

[转移·spec] flow 的 allowOrgOverride:true 回滚为 false——#6155 Q1=B 裁决的契约半边,同步了结 #6191 #6283

Closed

Description

@hotlong

Part of #6155(维护者 2026-08-07 裁决 Q1=B:org 归属的 flow overlay 按 ADR-0005 原判写入侧响亮拒绝;services 座位按 shared-contract 规则转移立单——packages/spec 恒归 spec 座位)。

要做的

  1. packages/spec/src/kernel/metadata-plugin.zod.ts:649 flow 行:allowOrgOverride: true → false(与同行 supportsOverlay: false 的矛盾组合一并消除),注释引 ADR-0005:57 原文(automation ❌:「Per-org variants are a deployment, not an overlay」)与本单;
  2. declared = enforced 核验(验收关键):确认 allowOrgOverride 在写入路径真的被消费——flip 后 org 归属的 flow 写入(publish/saveMetaItem)必须响亮拒绝而非静默照收。org 作用域的 flow overlay 只在「本进程内发布后」绑定触发器,重启后静默失绑——冷启动两条读路径都把 organization_id 非空的行滤掉了 #6190 实测「写路径比读路径宽松」,若 flip 后写入仍成功 = 标志位无写侧消费者,则拒绝逻辑缺口按落点(metadata 写路径,预判 engine-core)另立单并在本单记录,⛔ 不在 spec 单里越界实现;
  3. 落地即可关闭 ADR-0005 的租户可定制白名单表说 flow/workflow/approval 一律 ❌ per-org override,注册表却写着 allowOrgOverride: true——反转没有走 ADR(Prime Directive #13) #6191(未走 ADR 的反转记录单——本次回滚正是其修复)。

依据链

#6155 三问裁决(评论 5215882772 的 Q1=B 及维护者批复)、ADR-0005 docs/adr/0005-metadata-customization-overlay.md:57、#6191(反转立案,commit ba252da)、#6190(write-through 幻影绑定——flip 后其触发面随之消失,届时按其单核实是否连带关闭)。

影响面(如实)

行为收紧:org 归属的 flow overlay 写入从「成功但重启失绑」(#6190 的幻觉状态)变为写入时拒绝。dev 探针实测冷启动读路径本就滤掉 org 行,今天没有任何在跑的 org flow,收掉的是幻觉不是能力。

Activity

  1. claude commented on Aug 7, 2026

    @claude
    Contributor

    Triage (lane-label repair): domain:spec.

    pm:queue since 13:00Z with no lane label — unclaimable until now. Repaired.

    Landing site: packages/spec/src/kernel/metadata-plugin.zod.ts:649, allowOrgOverride: true → false. This is the protocol seat under the reverse red line, and not marginally: the flip's whole purpose is to make org-scoped flow overlay writes loudly rejected where they are silently accepted today. Any card that changes accept/reject behaviour is domain:spec regardless of diff size — domain:spec-surface is not in scope here.

    Item 2 of the body is the acceptance criterion, not a nice-to-have: if the flip does not actually produce a refusal on the write path, the flag has no write-side consumer and that gap is a separate card (landing in the metadata write path — packages/metadata-protocol, i.e. domain:metadata, same lane as #6285's gate work). ⛔ Do not implement the missing refusal inside the spec card.

    Stale-premise check: origin/main re-fetched this round; line 649 still carries allowOrgOverride: true next to supportsOverlay: false, and #6191 is still open, so "closing #6191 on landing" remains valid.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. added
    domain:specDomain lane — seat card indexed by label:pm:seat
    on Aug 7, 2026
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

    domain:specDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpm:queueReady for the PM dispatch loop

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions