Uh oh!
There was an error while loading. Please reload this page.
docs(deployment): rewrite publish-and-preview to name both ways a metadata app reaches the platform - #8962
Merged
Conversation
`publish-and-preview` documented catalog publish/install and said nothing about `OS_ARTIFACT_URL`; `self-hosting` documented the artifact-pinned boot and said nothing about the catalog. Neither page told a reader the other option existed, let alone which one they wanted. Rewrite this page as the one whose subject is "a metadata app is a separate thing from the platform; here is how it gets in": the independence framing up front, both mechanisms side by side, and a stated rule for choosing between them. The compile -> publish -> install -> preview flow is kept and framed, not replaced. The combination behaviour is measured from the sources rather than assumed: the install surface mounts independently of how the runtime obtained its own app, two sources naming the same manifest id answer 409 MANIFEST_CONFLICT instead of merging, and artifact sources have a fixed precedence (--artifact > OS_ARTIFACT_URL > OS_ARTIFACT_PATH > cwd/dist). `OS_ARTIFACT_URL`'s operational detail stays in `self-hosting` and is linked, not moved. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011RB4waLuNbdruCo6X9oobm
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
os-project-manager
marked this pull request as ready for review
August 16, 2026 03:10
os-project-manager
enabled auto-merge
August 16, 2026 03:10
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#8910
content/docs/deployment/publish-and-preview.mdxdocumented catalog publish/install and never mentionedOS_ARTIFACT_URL;self-hosting.mdxdocumented the artifact-pinned boot and never mentioned the catalog. A reader landing on either page could not learn the other option existed. This rewrites this page as the one whose subject is "a metadata app is a separate thing from the platform; here is how it gets in."What the page now does
Opens with the independence — the app compiles to its own versioned artifact and is released by you; the platform is released on its own train. The only place the two clocks touch is the artifact's declared
engines.protocolrange.Names both mechanisms side by side in one comparison table, then states the rule for choosing. The rule is the deliverable, not the table:
Plus three tie-breakers (auditable bytes ⇒ pin; no-restart / several apps ⇒ install; air-gapped ⇒ both work, so decide on the first two).
Keeps compile ⇒ publish ⇒ install ⇒ preview. The flow is correct and is framed, not replaced. Section 3 now names both install targets (a Cloud environment, and a running runtime via
os package install), because "install" was the half the choosing rule needed defined.OS_ARTIFACT_URL's operational detail stays inself-hosting.mdx(Axis A, owned by #8911) and is linked via the stable#artifact-pinned-boot-os_artifact_urlanchor — the same anchorcli.mdxandenvironment-variables.mdxalready use. NoOption Nheading text is referenced. Nothing was moved across the card boundary;self-hosting.mdxis untouched here.Measured before writing (the issue text was treated as a clue, not a spec)
The card asked whether the two mechanisms can be combined and what happens when both are configured. Read from source, not inferred:
resolveCloudUrl(), or the offline arm) inpackages/cli/src/commands/serve.ts— never gated on the artifact-pinned boot resolved earlier in the same file. A runtime booted fromOS_ARTIFACT_URLstill accepts catalog installs of other apps.findConflictinpackages/cloud-connection/src/marketplace-install-local-plugin.tsreturnsuser-codefor any manifest id present in the engine registry atkernel:readybefore ledger rehydration — where a booted artifact's app lands — and the install answers 409MANIFEST_CONFLICT. Pinned bymarketplace-install-local-conflict.test.ts.--artifact⇢OS_ARTIFACT_URL⇢OS_ARTIFACT_PATH⇢cwd/dist/objectstack.json, andOS_ARTIFACT_URLalso outranks a localobjectstack.config.ts.{ success, data }API envelope; the artifact resolver unwraps only the{ schemaVersion, metadata }build envelope. Called out in a callout so nobody pastes one into the other.engines.protocolincompatibility is a refusal on every seam — boot (artifact-pinned), load/install (assertProtocolCompatthrows), rehydrate (package skipped).The card's framing holds;
premise_still_valid: true.Verification
Gates run at the pushed head
b46c28da8:pnpm check:docs-audit-scope— scope in sync, 177 hand-written docspnpm check:role-word— 43 baselined files, no new occurrences (this page carries 0)pnpm check:nul-bytes— 5935 files scanned, no raw control bytespnpm check:doc-anchors— 218 internal fragment links across 395 files all resolve (not in the dispatched list; re-derived and run because this change adds anchor links)node scripts/pm/dispatch-gates.mjs content/docs/deployment/publish-and-preview.mdxre-derived exactly the dispatched families and added none.Docs-only ⇒
skip-changeset.Generated by Claude Code
Generated by Claude Code