Repository navigation
chore(examples): declare @objectstack/organizations in the showcase so a walled os serve boots without a temporary edit - #25418
Merged
Conversation
…o a walled os serve boots Claude-Session: https://claude.ai/code/session_01CxBKycaiUpA1yGx1XyoGqX Co-authored-by: Claude <noreply@anthropic.com>
…case needs Claude-Session: https://claude.ai/code/session_01CxBKycaiUpA1yGx1XyoGqX Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
席位核对ACCEPT ·
Generated by Claude Code |
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 free
to 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.
Requested by Sales · project thread
Fixes #25365
Clause-②: no
What changed
examples/app-showcase/package.jsondeclares@objectstack/organizations(workspace:*, the open Apache-2.0 build, ADR-0132 D3: the host manifest decides which build of the name a deployment gets). The card's option (a).pnpm-lock.yaml: the one importer link that declaration adds (+3 lines, no other churn).examples/app-showcase/README.md: a "Booting it walled" section naming the env a production walledos serveneeds.The showcase is
private: true, so nothing publishes:skip-changeset.Mechanism, measured on
origin/main830a63apackages/cli/src/commands/serve.ts:multiTenant = tenancyPosture !== 'single'; only then is@objectstack/organizationsimported, throughimportFromHost(resolved from the served app's ownnode_modules). Import failure under a walled posture exits 1 unlessOS_ALLOW_DEGRADED_TENANCY. Undersinglethe import is never reached. All three premises hold.Boot readings (head 0cc7b77,
NODE_ENV=production, fresh database each run,OS_CLOUD_URL=off)Common env:
OS_AUTH_SECRET,OS_SECRET_KEY,OS_DATABASE_URL=file:./.objectstack/data/app.db; walled runs addOS_PLATFORM_OWNER_EMAILandOS_AUTH_MEMBERSHIP_POLICY=invite-only.single, dependency declaredTenancy: single,Plugins: 50 loaded, noOrganizations;/auth/configmultiOrgEnabled:falsesingle, control: package link removed from the showcase'snode_modulesPlugins: 50 loaded; plugin list byte-identical (same md5) to the row aboveisolated, README recipe verbatim (pnpm exec objectstack serve)Tenancy: isolated,Plugins: 51 loaded,Organizationsin the list;/auth/configdegradedTenancy:falsegroup, README recipe verbatimTenancy: group,Plugins: 51 loaded,Organizations;degradedTenancy:falseisolated, control: package link removedFATAL: tenancy posture 'isolated' was requested but @objectstack/organizations could not be loadedisolated, no membership policyFATAL: tenancy posture 'isolated' is walled, but this deployment never declared a membership policy(the organizations plugin's own gate: the package loaded)isolated, noOS_SECRET_KEY[LocalCryptoProvider] Refusing to start in production without a stable encryption keyisolated, noOS_PLATFORM_OWNER_EMAILtenancy posture 'isolated' requires OS_PLATFORM_OWNER_EMAIL to be setThe last three rows are why each variable is in the README recipe. Every other example is untouched, so its
singleboot is unchanged by construction.Gates (local, head 0cc7b77)
node scripts/pm/dispatch-gates.mjs --commands: 47 commands; 46 exit 0,pnpm check:dual-build-cjs-loadsexit 3 (PREREQUISITE NOT MET: needs a full build) = NOT MEASURED locally, CI runs it.--ranreconciliation: 47 derived, 46 run, 1 NOT-MEASURED, 0 UNRUN.pnpm --filter @objectstack/example-showcase run typecheck && … run test: VERDICT command-exit 0, Test Files 37/37, Tests 443/443.pnpm lint: VERDICT command-exit 0.Acceptance notes
WARN [security] audience-binding suggestion sync failed(no organization with slugdefaultand more than one organization, so the deployment-level acceptance must come from the security plugin'sacceptedDefaultPermissionSets). Observation only; the boot is green and this card does not change it.Generated by Claude Code