Repository navigation
fix(cli): os package publish sends the manifest's listing tags, and uses a top-level tagline only as a missing description - #27573
Conversation
…ine, and words the platform-decided keys (red) Claude-Session: https://claude.ai/code/session_01L6bhgXcN9HaZYSEUdJWEjw Co-authored-by: Claude <noreply@anthropic.com>
… platform-decided keys, maps tagline to a missing description Claude-Session: https://claude.ai/code/session_01L6bhgXcN9HaZYSEUdJWEjw Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckThis PR changes 1 package(s): 11 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
⛔ 3 release-owned page(s) also name something this change touched. These are read-only:
What this run could not see
Coarse fallback — 35 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 056650bf55cc3d688f3a2bdcb709dc31710c4edb && git checkout 056650bf55cc3d688f3a2bdcb709dc31710c4edb
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 1ed33609731b0bc3b2da81c97242e9c8582d003d 94a3512f57dc0aef7b63579268f662f46c61d885 && git checkout -B drift-repro 1ed33609731b0bc3b2da81c97242e9c8582d003d && git merge --no-ff 94a3512f57dc0aef7b63579268f662f46c61d885
node scripts/docs-audit/affected-docs.mjs --json 1ed33609731b0bc3b2da81c97242e9c8582d003d
|
…latform-decided; tagline only as a missing description Claude-Session: https://claude.ai/code/session_01L6bhgXcN9HaZYSEUdJWEjw Co-authored-by: Claude <noreply@anthropic.com>
|
domain:server#1 · os-sales · session_01L6bhgXcN9HaZYSEUdJWEjw 维护者速读(席位终稿)
席位意见:接受。这次修改让本已过时的两页文档变得明确错误,所以按 os-dev 规则在同一 PR 里改正(认领修正 6498466275),没有拖成后续卡。 席位核对 — ACCEPT · domain:server#1 · head 94a3512 · 2026-10-29T14:42Z
|
domain:server#1 · os-sales · session_01L6bhgXcN9HaZYSEUdJWEjw
Requested by Sales · project thread
Fixes #27364
Clause-②: no
Metadata-protocol: none
Skills-docs: updated here — content/docs/deployment/marketplace-handbook.mdx, content/docs/deployment/cli.mdx (commit 94a3512, claim amendment 6498466275)
维护者速读
os package publish现在把清单里的tags原样发给云端;警告改口:publisher、isStarter由平台决定、作者写了不生效(不再说「暂未携带」);顶层tagline只在没有 description 时充当 description,否则不发并提示。tags(cloud#3361),CLI 还在丢弃它,警告也说错了原因;tagline云端没有这一列,一直白发。packages/cli/src/commands/package/publish.ts(pkgBody.tags与 tagline/description 那一段、uncarriedManifestWarnings);packages/cli/test/package-publish-uncarried-manifest-keys.test.ts。pnpm --filter @objectstack/cli exec vitest run --project unit test/package-publish-uncarried-manifest-keys.test.ts,预期 14 个用例全绿。What changes
packages/cli/src/commands/package/publish.ts, one command:tagsis sent. Whenobjectstack.manifest.jsondeclarestags, the package POST carriestagsas written. The hosted route owns the shape and the bounds; the CLI keeps no copy of them and pre-checks nothing, so a refused list comes back as the server's 400 and is printed as the server wrote it (the existing failure path). An absent key leaves the stored tags alone;[]clears them.tagsleavesUNCARRIED_MANIFEST_KEYS.publisherandisStarterget their own warning: decided by the platform, an author's value has no effect, so publish does not send them. ⛔ Neither is ever sent.previewkeeps the "hosted catalog does not carry yet" warning with the tracking link;visibilitykeeps its flag warning.tagline. With no--descriptionflag and no manifestdescription, the trimmed tagline is sent asdescription. Otherwise the tagline is not sent, and a warning names it (dropping an authored key silently is the defect this module's warnings exist for). The per-localetranslations.LOCALE.taglinepath is unchanged.Importers of the two exported constants:
UNCARRIED_MANIFEST_KEYSandCATALOG_SEND_ISSUEare imported only bypackages/cli/test/package-publish-uncarried-manifest-keys.test.ts(repo-wide grep at the branch head).One changeset,
@objectstack/clipatch.Tests
packages/cli/test/package-publish-uncarried-manifest-keys.test.tsdrives the real command (PackagePublish.run) against a stubbedfetchand reads the request body it sends:[]sent; no key when undeclared; 21 over-long tags reach the wire unchanged, and the server's 400 message reaches the output, exit 1, no version POST.descriptionwhen none is given; not sent and named in a warning when the manifest or the flag gives one; per-locale tagline untouched.publisher/isStarterplatform-decided and never sent;previewstill not carried, with the link;visibilityseparate; quiet when only sent keys are declared.tagsto SENT.Acceptance notes
94a3512f, file surface extended by claim amendment 6498466275).content/docs/deployment/marketplace-handbook.mdx: the warn callout no longer saystagsis not sent (publisher/isStarterare platform-decided, never sent, warned), and the key table gains atagsrow.content/docs/deployment/cli.mdx: the keys-read list namestags(sent as written) in place oftagline, and says a top-leveltaglineis used only as a missing description.Verification
All readings below are at head
083edf170d(fixfadb51292fplus one merge oforigin/main), except the red leg and the ablation, which name their commit.Red first (test commit f2c48fc, source unchanged)
Failing: the three tags-sent cases, the three tagline cases, the platform-decided wording, the quiet case, and the partition.
Green
The
integrationlayer is declared to CI (the diff touches no spawn entry).Ablation (scripts/ablation-replace.mjs, at fadb512)
The test imports the command from
src/, so no build sits between the mutation and the run. The tagline and wording changes are evidenced by the red leg against the unchanged source.Generated by Claude Code
🤖 Generated with Claude Code
https://claude.ai/code/session_01L6bhgXcN9HaZYSEUdJWEjw