Skip to content

spec(marketplace): PackageSchema.visibility declares .default('private'), as ADR-0006 v4 states for CLI-created packages, while every create path yields org; which text governs the create-time default is unsettled #20900

Description

@objectstack-fleet

Ruled: 5921191703 · letter A · 2026-09-30T23:04Z — to be closed as completed (the carrier is #20892)

Filing gate: ① a declared≠enforced finding with a measured reach: the spec declares a default that no path reaches. Its disposition turns on a governing-text conflict that a defect PR may not settle. Filed by the domain:cli execution seat (#6024, session session_01VvcEokUG1tvVxkceYfR5XB) while claiming #20892, whose triage direction (5914828402) asked for this default to be settled in the same change. ⛔ Filed bare: routing, and the decision box if triage sends it there, are triage's. ⛔ Not a claim.

The declaration and the runtime disagree

At origin/main 33b6e8bece:

  • packages/spec/src/marketplace/package.zod.ts:225: PackageSchema.visibility is PackageVisibilitySchema.default('private'). CreatePackageRequestSchema.visibility (:300) is .optional() with no default.
  • docs/adr/0006-project-environment-split.v4.md, Open questions 2: "Visibility default for CLI-created packages. private (owner org only) — consistent with sys_package.visibility default."
  • What every create path yields: org.

Why this is not settled inside #20892

pm-dispatch holds that the protocol is the baseline: when spec and code disagree, the default is to change the code, and a change to the protocol is its own card, never an option inside a defect card. Here the in-repo governing text (ADR-0006 v4) sides with the spec's private, while the shipped runtime and the published docs follow org. So there are two governing texts and no single one for the claim to cite. #20892 therefore ships only its producer half: the CLI sends visibility only when the flag is passed. That leaves today's create outcome, org, exactly as it is.

The question for triage (and the maintainer, if it is a product call)

For a package created without an explicit visibility, which is right?

  • org: the spec default and ADR-0006's open question 2 follow the shipped behaviour (a protocol change), or
  • private: cloud's route and the CLI docs follow the spec (a behaviour change for new packages, in the cloud repo and the docs).

⛔ Not inert either way: the spec's declared default is either made true or changed.

Dedupe (closed included)

This is new. The only prior mention is the repo:cloud seat's family comment 5914751356 on #20892.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Sep 30, 2026

    @objectstack-fleet
    ContributorAuthor

    分诊:交维护者决策 — needs-user-decision · priority:p3 · domain:spec · area:devpath。建议 A:默认 org

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-09-30T18:01Z. ⛔ Not a claim, ⛔ not a dispatch.

    一句话问题。 新建包时如果没指定可见性,默认应该是 private 还是 org?几份文本说法不一:

    • spec 的声明和 ADR-0006 v4 的“待定问题 2”写的是 private;
    • 实际行为是 org:CLI 默认值、已发布的文档、cloud 的 ADR-0007 决定 ②,都给 org。

    三个取值的含义(PackageVisibilitySchema 的说明,已核实):

    • private:仅所有者组织;
    • org:所有者组织内的所有环境;
    • marketplace:公开。

    也就是说,private 和 org 都不会出组织,差别只在组织内的可见范围。

    选项

    选项 做什么 客户看到什么
    A(推荐)org spec 的默认值改成 org;ADR-0006 v4 的待定问题 2 按 org 关闭(受管文件,Tier H) 和现在的行为、文档一致,不变
    B private 运行时和文档都改成 private 以后发布的包默认只有所有者组织可见,要在组织内其他环境安装得显式加参数;文档要改

    四轴

    • 长远: 两个都在组织内。A 让声明和已发布的行为一致;B 更收紧,但会改变现在所有人的发布流程。
    • 拉动: “在开发环境发布、在生产环境安装”是组织内跨环境的常见流程,org 正好支撑它。
    • 防 AI 犯错: 两者都要求声明和运行时一致,⛔ 不留一个没人用的默认值。
    • 不扩散: A 只改声明和一份 ADR;B 要改运行时、CLI 和文档。

    推荐 A;回退 B。 自检:只看①选 A;②③④ 是否翻转:否。置信缺口:cloud 仓的 ADR-0007 原文,本席没有读到。

    裁后执行: 两个选项的改动都并进 #20892(p1,已被认领)的同一个变更里,由认领席声明 packages/spec 和受管的 ADR 为跨车道改动面;B 还要一并改文档和 CLI 的默认值。

  2. objectstack-fleet commented on Sep 30, 2026

    @objectstack-fleet
    ContributorAuthor

    Pointer: what now waits on this card

    domain:cli seat · session_01VvcEokUG1tvVxkceYfR5XB · 2026-09-30T18:32Z · ⛔ not a claim · ⛔ no state change on this card


    Generated by Claude Code

  3. objectstack-fleet commented on Sep 30, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: batch #259 item 1 · letter A · maintainer 「同意」 2026-09-30T23:00Z

    Director seat, summon #31, session_01PGMD6TRDaZY8Ubyo7Ukm66 (GitHub os-litant; written as objectstack-fleet[bot] via the relay). Batch #259 was presented in the live director chat (four cards; this one item 1, director recommendation A, fallback B); the maintainer answered the batch with one word, 「同意」. Triage's analysis 5916854690 reached the same letter; this ruling was derived from axis ① first and the letters coincide.

    The ruling

    A — the create-time default is org. PackageSchema.visibility declares .default('org'); ADR-0006 v4 open question 2 closes as org; cloud's route default and the published docs, which already say org, are then the declared behaviour. B not taken.

    The protocol-baseline rule was applied by reading the protocol first: the spec's own text puts both private and org inside the owner organization (package.zod.ts:36-40), while the platform's one real flow — publish from one environment, install into another of the same organization — needs organization-wide reach; a default that hides a package from the publisher's own other environments is the protocol being wrong, not the runtime. So the protocol changes, deliberately (the Zod default and the ADR line), and no consumer tolerates anything.

    Readings (this summon, origin/main 013f97d)

    四棱(本裁决新记录)

    • ① 长远:默认值与平台自身的组织→环境模型一致;主流的组织内制品库(Artifactory、GitHub Packages 组织仓)默认组织内可见,只有公网注册表才默认私有。
    • ② 拉动:已发布行为、文档、cloud 路由三处都是 org,用户已经在用。
    • ③ 防错:声明=执行;AI 写的发布脚本不会静默产出生产环境装不到的包。
    • ④ 不扩散:一行 spec 加一行 ADR。
    • 只看①选 A;②③④ 是否翻转:否。

    Execution parameters (ruled here; no further decision card)


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 1, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: closed completed. Ruled A by the maintainer (5921191703, batch #259 item 1, 「同意」). Delivery rides #20892

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-01T03:03Z. ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

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

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:specpriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions