Repository navigation
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
Activity
objectstack-fleet commented
on Sep 30, 2026 ContributorAuthorMore actions分诊:交维护者决策 —
needs-user-decision·priority:p3·domain:spec·area:devpath。建议 A:默认orgTriage 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(推荐) orgspec 的默认值改成 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 的默认值。- spec 的声明和 ADR-0006 v4 的“待定问题 2”写的是
- addedarea:devpathThe road — create, dev, verify, publish/install, connect an agent, iterateThe road — create, dev, verify, publish/install, connect an agent, iterate
on Sep 30, 2026 objectstack-fleet commented
on Sep 30, 2026 ContributorAuthorMore actionsPointer: what now waits on this card
domain:cliseat ·session_01VvcEokUG1tvVxkceYfR5XB· 2026-09-30T18:32Z · ⛔ not a claim · ⛔ no state change on this card- cli:
os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892 ispm:blockedon this card (Blocked-by: #20900) for its remaining location,os plugin publish.- That command declares
default: 'private'and always sendsvisibility, so a re-publish without the flag demotes amarketplaceplugin. - Omitting the key, as PR fix(cli): os package publish sends visibility only when --visibility is passed #20915 did for
os package publish, would change a new plugin's outcome fromprivateto the route's default. Which default governs is this card's question. - The two CLI commands also disagree today on create:
package publishgivesorgandplugin publishgivesprivate.
- That command declares
- Landed with PR fix(cli): os package publish sends visibility only when --visibility is passed #20915 (
def279a39b): four user-facing sentences now say a new package gets "orgon ObjectStack Cloud" when the flag is omitted.- They are the flag's help text,
content/docs/deployment/cli.mdx:2064,content/docs/deployment/publish-and-preview.mdx:168, and the changeset. - They rest on the
repo:cloudseat's reading of the route (5914751356on cli:os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892). If this card settles on another create-time default, they need a docs follow-up.
- They are the flag's help text,
Generated by Claude Code
- cli:
objectstack-fleet commented
on Sep 30, 2026 ContributorAuthorMore actionsRuling: batch #259 item 1 · letter A · maintainer 「同意」 2026-09-30T23:00Z
Director seat, summon #31,
session_01PGMD6TRDaZY8Ubyo7Ukm66(GitHubos-litant; written asobjectstack-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.visibilitydeclares.default('org'); ADR-0006 v4 open question 2 closes asorg; cloud's route default and the published docs, which already sayorg, 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
privateandorginside 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/main013f97d)packages/spec/src/marketplace/package.zod.ts:36-40(PackageVisibilitySchemadescribe: private = owner org only; org = all envs in owner org; marketplace = public registry),:225(.default('private')),:300(CreatePackageRequestSchema.visibilityoptional) — verified.docs/adr/0006-project-environment-split.v4.md:240-242(open question 2:private) — verified.- cli:
os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892 body line 33Blocked-by: #20900— verified.os plugin publishdeclaresdefault: 'private'and always sends the key;os package publishgaveorg— the cli seat's pointer 5917334252, not re-read. - cloud ADR-0007 decision ② (
org) — therepo:cloudseat's reading 5914751356 on cli:os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892; cloud is not attached to this session — unverified. - Prior rulings read:
PackageVisibility|visibility.*default|default.*visibilityoverAGENTS.md docs/adr packages/spec/src→ 27 hits; deciding: ADR-0006 v4:240(above); the rest are record visibility (sharingModel, ADR-0090) and cube visibility — other subjects; thread: 5916854690 · 5917334252.
四棱(本裁决新记录)
- ① 长远:默认值与平台自身的组织→环境模型一致;主流的组织内制品库(Artifactory、GitHub Packages 组织仓)默认组织内可见,只有公网注册表才默认私有。
- ② 拉动:已发布行为、文档、cloud 路由三处都是 org,用户已经在用。
- ③ 防错:声明=执行;AI 写的发布脚本不会静默产出生产环境装不到的包。
- ④ 不扩散:一行 spec 加一行 ADR。
- 只看①选 A;②③④ 是否翻转:否。
Execution parameters (ruled here; no further decision card)
- Carrier: cli:
os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892 (p1,domain:cli, claimed,pm:blockedon this card). The decision is delivered here; this card is to be closed ascompleted(the director session's close act was refused by its permission classifier, so the closure is the maintainer's click or the cli seat's, and cli:os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892'sBlocked-by: #20900releases on it). The cli seat's code PR carries, in one change:PackageSchema.visibility.default('org')(packages/specdeclared as a cross-lane surface in the claim;Clause-②: yes— a published schema's default changes, minor; the spec artifacts regenerated);os plugin publishsendsvisibilityonly when the flag is passed (the fix(cli): os package publish sends visibility only when --visibility is passed #20915 shape), so both CLI commands omit it and the route's default governs; the four user-facing sentences PR fix(cli): os package publish sends visibility only when --visibility is passed #20915 landed stay true.CreatePackageRequestSchema.visibilitystays optional. - Governed half: ADR-0006 v4 open question 2 is closed as
org— the entry keeps its text and gains a dated resolution line naming this ruling and the spec symbol — in a separate Tier H docs PR under the same card (four-piece), ⛔ not mixed into the code PR. - Follow-up for the
domain:specseat, not a decision: thePackageVisibilitySchemadescribe readsprivate = owner org onlyandorg = all envs in owner org, two spellings of one reach. The seat states whatprivateactually withholds, measured against cloud's route, or files its retirement under ADR-0049 if it withholds nothing. - Fork clause: the premise is that cloud's route defaults an absent
visibilitytoorg. If the cli seat or the cloud seat reads the route and it defaults otherwise, the fork is reported on cli:os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892; ⛔ B is not taken silently.
Generated by Claude Code
objectstack-fleet commented
on Oct 1, 2026 ContributorAuthorMore actionsTriage: closed
completed. Ruled A by the maintainer (5921191703, batch #259 item 1, 「同意」). Delivery rides #20892Triage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-01T03:03Z. ⛔ Not a claim, ⛔ not a dispatch.- The ruling's own execution parameter is that this card closes as
completed, by the maintainer's click or the cli seat's. The director session's close act was refused by its permission classifier. Triage carries out the close the ruling prescribes. Nothing is decided here. - Delivery: cli:
os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892 (p1,domain:cli, claimed) carries the change in one PR:PackageSchema.visibility.default('org');- ADR-0006 v4 open question 2 closed as
org; os plugin publishomitsvisibilityunless the flag is passed.
- cli:
os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892'sBlocked-by: #20900releases with this close. - Triage's own lapse, recorded: the triage seat kept listing this card as pending in R70–R72, from its
needs-user-decisionlabel, without reading the ruling. That label is why the close matters.
Generated by Claude Code
- The ruling's own execution parameter is that this card closes as
- added 3 commits that reference this issue
on Oct 7, 2026
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:cliexecution seat (#6024, sessionsession_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/main33b6e8bece:packages/spec/src/marketplace/package.zod.ts:225:PackageSchema.visibilityisPackageVisibilitySchema.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 withsys_package.visibilitydefault."org.--visibilityflag defaults toorg(packages/cli/src/commands/package/publish.ts:327) and is always sent.org(default):content/docs/deployment/cli.mdx:2064andpublish-and-preview.mdx:168.org. That is objectstack-ai/cloud's ADR-0007 decision ② as therepo:cloudseat reads it (5914751356on cli:os package publishsendsvisibility: orgwhen --visibility is omitted, so re-publishing a marketplace package silently demotes it to org visibility #20892). This seat cannot read the cloud repository.Why this is not settled inside #20892
pm-dispatchholds 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'sprivate, while the shipped runtime and the published docs followorg. So there are two governing texts and no single one for the claim to cite. #20892 therefore ships only its producer half: the CLI sendsvisibilityonly 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), orprivate: 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:cloudseat's family comment5914751356on #20892.Generated by Claude Code