Repository navigation
docs(deployment): a marketplace handbook for app authors - #27321
Conversation
One page from a built dist/objectstack.json to a customer's installed app: the objectstack.manifest.json keys os package publish sends, the README a listing depends on, publish and --submit with the statuses the CLI prints, each screen the customer's administrator meets from Browse Marketplace to Uninstall from this runtime, and staying current with platform versions. Forthcoming pieces are named with their cards. Cross-links from publish-and-preview and your-first-project, the nav entry, and the regenerated docs-audit scope list. publish-and-preview's uninstall sentence now matches the install-local DELETE handler, which withdraws the app from the running kernel and reports any part left until restart. Claude-Session: https://claude.ai/code/session_017xRBcVBKAFk1ntXSjvPt7U Co-authored-by: Claude <noreply@anthropic.com>
Shorter intro and related list; the install dialog, the module bullet and the version snapshot say only what the Console and the CLI deliver. Claude-Session: https://claude.ai/code/session_017xRBcVBKAFk1ntXSjvPt7U Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
|
epic:#27293#1 · sunhaolin · session_017xRBcVBKAFk1ntXSjvPt7U 席位核对ACCEPT at head
Sentences checked on
The dev corrected this seat, on the record: the claim's premise correction point 5 said uninstall needs a restart. It does not: the handler withdraws the app from the running kernel at once, and its Out-of-scope dispositions: Landing: not governed (no Tier H path, +268 lines), so the seat lands it: |
Fixes #27240
Clause-②: no
Metadata-protocol: none
维护者速读
content/docs/deployment/marketplace-handbook.mdx),从构建好的dist/objectstack.json讲到客户装上、升级、卸载;另加导航项与两处交叉链接。publish-and-preview.mdx里卸载那一句(旧句说必须重启才卸载干净,与 base 上的 DELETE 处理器不符)。content/docs/deployment/marketplace-handbook.mdx的「The customer's side」九步(每一步都对着 Console 文案或运行时路由核过);② 同页 Callout「Two things the file can say that never reach the listing」;③publish-and-preview.mdx第 207-210 行。pnpm docs:dev后打开/docs/deployment/marketplace-handbook,预期左侧导航 Deployment 下出现 Marketplace Handbook,页内所有链接可点通。What changes
content/docs/deployment/marketplace-handbook.mdx(255 lines), sections in the order an author meets them: what a listing is (ADR-0019 D1/D2); theobjectstack.manifest.jsonkeysos package publishactually sends, with HotCRM as the example only for the keys it carries;translationsfor two locales; the README conventions (credentials as names, values supplied by the administrator); build and verify; publish,--submitand the three listing statuses the CLI prints; the customer's side in nine steps; staying current; dependencies vs build-time modules. Field lists are linked to the generatedcontent/docs/references/marketplace/*.mdx, never restated.content/docs/deployment/meta.json: one nav entry.content/docs/deployment/publish-and-preview.mdx: one Related link, plus the uninstall sentence corrected (in-place fix, evidence below).content/docs/getting-started/your-first-project.mdx: one Next steps card.scripts/docs-audit/handwritten-docs.json: regenerated bynode scripts/docs-audit/check-audit-scope.mjs --write(+1 page).check:docs-audit-scopereds a new hand-written page that is not listed, so this file is a mechanical consequence of adding the page; it sits outside the claim's declared file surface.How the premise correction on the claim was applied, point by point: no
pnpm verify(the page names the scaffoldedvalidate/lint/typecheck/test/buildscripts andos verify); screenshots are stated as not carried by publish and not rendered by the Console, and the listing is built from icon plus two locales; HotCRM shown only for its own keys; credentials described as README prose, naming #27237 / #27238, with no env-var path; uninstall named as the Console action andDELETE /api/v1/marketplace/install-local/:manifestId, no CLI command; enable/disable named as the runtime surface with its real answer for an installed app; nothing about delisting or review internals; field lists linked.One measured divergence from the correction's wording, point 5 ("plus a restart"). At base the DELETE handler (
packages/cloud-connection/src/marketplace-install-local-plugin.ts,handleUninstall, around lines 2243-2312) removes the ledger entry, then withdraws the package from the running kernel, removes the metadata copies, and runs the uninstall cleanups; itsnotesays a restart is still owed only when a withdrawal step did not complete. The Console's own text agrees (installedAdditiveNote: "Uninstall removes the app from the running kernel at once"). The page therefore says the answer'snoteandcleanupstell whether anything stays loaded until restart, andpublish-and-preview.mdx's old "needs a restart to fully unload it, because app registration is additive" sentence is corrected to match.Follow-up line, deliberately not in this PR (governed surface):
skills/objectstack-platformgains one link line to/docs/deployment/marketplace-handbook.Tests
Docs only: no package is touched, so no package test or typecheck is owed. Readings are on the final head
80f7e2df.pnpm --filter @objectstack/docs buildunder the verify lock: VERDICT command-exit 0, "Compiled successfully", 1428 static pages; the renderedmarketplace-handbook.htmlcarries the page's key strings; the gen steps the build runs left the tree clean (git status --porcelainempty).node scripts/docs-audit/affected-docs.mjs origin/main: "0 docs name something this change touched (no anchors derived) across 0 changed package(s)" (the diff changes no package);--alllists the new page.Acceptance notes
objectstack.manifest.jsonkeys the schema accepts but publish never sends:tags,publisher,isStarterandpreview.*parse underTemplateManifestSchema, andpackages/cli/src/commands/package/publish.tsreads none of them. HotCRM's manifest at353dacecarriestags,publisherandisStarter. In the other direction publish reads and sends a top-leveltaglinethat the schema does not declare (the non-strict object strips it on parse), and HotCRM also carries an undeclared top-levelengines. The page warns about the first set and uses onlytranslationsfortagline. Reported for the PM's filing seat as a metadata-authoring trap.pending_review, whileListingStatusSchemainpackages/spec/src/marketplace/marketplace.zod.tsenumeratessubmitted/in-review. The wire value is the control plane's (cloud); the page names only what the CLI prints.packages/cloud-connection/src/cloud-connection-route-ledger.tsrowDELETE /api/v1/marketplace/install-local/:manifestIdstill says "the kernel must restart to fully unload", which the handler no longer requires. Ledger prose, not served to anyone; noted, not changed.Verification
Gate families derived by
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(change set from the merge base, 53 commands), each run with its exit code captured before any pipe, reconciled with--ran.Gate run on
80f7e2df:Generated by Claude Code