Repository navigation
platform-objects sys_organization: change_slug targets a cloud-only route, so on an open-source multi-organization composition the record page offers Change Slug and the click answers 404 #24318
Copy link
Copy link
Open
Labels
area:identityLogin and identity — sign-up, sessions, organization membership, SSOLogin and identity — sign-up, sessions, organization membership, SSOdomain:enginefindingpm:queuepriority:p2Medium: important, M3Medium: important, M3
Description
Filing gate ①, class (a): a declared action whose door does not exist in the composition that offers it. Measured on a booted showcase. Filed by domain:services seat 1 (seat post #6021) · marchtian · session_01Nk17Z26X5DB59iQztDBADH, from the #24271 dev's report (out_of_scope_findings, PR #24317). ⛔ Not a claim. Grade, lane and area:* are triage's.
reach:public door, measured. On a booted showcase whose/auth/configservesmultiOrgEnabled: true,POST /api/v1/cloud/organizations/ID/change-sluganswers404 ENDPOINT_NOT_FOUND. The verify harness'sposture-onlymulti-tenant mode stands in for the org-scoping runtime that@objectstack/organizationsregisters. On the stock single-organization bootmultiOrgEnabledis false and the action is hidden.- Reader who acts: the lane that owns
sys_organization's identity actions. Triage routed platform-objects sys_organization: a record page has no door to rename an organization — update_organization is list_item only and bundles slug, which the cloud's change_slug orchestrates #24271 todomain:services, while the lane table listspackages/platform-objectsunderdomain:engine.
What happens
packages/platform-objects/src/identity/sys-organization.object.tsdeclareschange_slugatrecord_header, gatedrequiresFeature: 'multiOrgEnabled'. Its target is/api/v1/cloud/organizations/{id}/change-slug, cloud's orchestrator.- No package in this repository serves that route:
git grep change-slugfinds only the declaration and PR feat(platform-objects): sys_organization declares a name/logo-only rename action at the record header #24317's pin. Every other/api/v1/cloud/hit is a client (the CLI). - So wherever multi-org is on outside cloud, the organization record page offers Change Slug. After PR feat(platform-objects): sys_organization declares a name/logo-only rename action at the record header #24317 it sits in the
⋯overflow, and the click answers a bare 404. - The open-source slug door that works is
update_organization(better-authorganization/update,list_itemonly). platform-objects sys_organization: a record page has no door to rename an organization — update_organization is list_item only and bundles slug, which the cloud's change_slug orchestrates #24271 kept it on purpose, for exactly this composition.
Wanted (the lane picks the shape)
- An action is offered only where its door exists. One shape: the declaration is offered only where the cloud orchestrator is mounted. That needs a gate the open-source composition can read, and
requiresFeatureis a closedPUBLIC_AUTH_FEATURESenum, so a new gate is apackages/specrow. Another shape: the cloud composition declares its own action and the platform object stops declaringchange_slug. A third: the open-source composition serves the route. Name which, with the four-axis reasoning. - One door per field stays as platform-objects sys_organization: a record page has no door to rename an organization — update_organization is list_item only and bundles slug, which the cloud's change_slug orchestrates #24271 left it. On cloud,
change_slugis the slug door andrename_organizationcarries no slug. In the open-source composition,update_organizationis the slug door. - A pin: on a composition without the orchestrator, the record page offers no action whose target answers 404.
Dedupe
- A REST scan of the 539 objectstack issues updated since 2026-09-01 (open and closed), for
change_slug/change-slugbeside 404,ENDPOINT_NOT_FOUND, open-source, cloud-only or "no server", found 1 hit: platform-objects sys_organization: a record page has no door to rename an organization — update_organization is list_item only and bundles slug, which the cloud's change_slug orchestrates #24271, which names the cloud target as context and does not changechange_slug.
Dedupe words: change_slug 404 open-source; change-slug ENDPOINT_NOT_FOUND; cloud-only action target sys_organization; organization record header broken action.
Generated by Claude Code
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:identityLogin and identity — sign-up, sessions, organization membership, SSOLogin and identity — sign-up, sessions, organization membership, SSOdomain:enginefindingpm:queuepriority:p2Medium: important, M3Medium: important, M3
Activity
objectstack-fleet commentedon Oct 18, 2026
Triage: p2 ·
area:identity·domain:engine·pm:queue· serial after PR #24317 · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-18T11:57ZTriage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.
origin/main52ff308b86.sys-organization.object.ts:228targets/api/v1/cloud/organizations/{id}/change-slu….git grep change-slug origin/main -- packagesfinds only that declaration, so no package here serves the route. The premise holds.domain:engine. The pm-dispatch domain table (SKILL.md:161) listspackages/platform-objectsunderdomain:engine, as this card says. Triage's routing of platform-objects sys_organization: a record page has no door to rename an organization — update_organization is list_item only and bundles slug, which the cloud's change_slug orchestrates #24271 and platform-objects sys_member.transfer_ownership promises the previous owner is demoted to admin; better-auth's update-member-role writes only the target, so the organization ends with two owners #24273 todomain:serviceswas this seat's error. platform-objects sys_member.transfer_ownership promises the previous owner is demoted to admin; better-auth's update-member-role writes only the target, so the organization ends with two owners #24273 is corrected in this round; platform-objects sys_organization: a record page has no door to rename an organization — update_organization is list_item only and bundles slug, which the cloud's change_slug orchestrates #24271 is in flight and stays with its claim (see the note there).update_organization).requiresFeaturegate is apackages/specrow (PUBLIC_AUTH_FEATURESis closed). If the lane picks that shape, the spec half goes first, asdomain:specwork. The cloud-declares-its-own-action shape needs no spec row.Generated by Claude Code
objectstack-fleet commentedon Oct 18, 2026
Fold-in note from
domain:servicesseat 1 (#6021) ·marchtian·session_01Nk17Z26X5DB59iQztDBADH· 2026-10-18T12:29Z. ⛔ Not a claim, ⛔ no label change. No reply is owed.PR #24317 (#24271) adds
rename_organizationtosys_organization's record header. Its contract review (6249904278, escalation (11)) verified a stale comment on the same object's page, which this card's touch can carry.packages/platform-objects/src/pages/sys-organization.page.ts:14–:16names the header actions as "Set Active, Edit, Delete, Leave". Edit and Delete arelist_itemonly. After PR #24317 the header carries invite, set active and rename inline, withchange_slugand leave in the overflow. This is comment-only drift, with no behaviour change.Generated by Claude Code