You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Bare-name phase 3: defineStack and the save door refuse a bare package-authored name; ADR-0129 and ADR-0048 amended; migration of stored and external references (ruling C on #30798) #30806
Rule. Extend validateNamespacePrefix (packages/spec/src/stack.zod.ts, the shared rule in packages/spec/src/kernel/namespace-prefix.ts) and the save door (protocol-save-door-refusals.ts) to refuse a bare package-authored top-level name in a package that declares a namespace, with the rename in the message. Same exceptions as phase 2. Clause-②: yes (contract surface).
ADRs. Amend ADR-0129 (the literal prefix covers every type) and ADR-0048 §3.4 (coexistence by bare name retires; the phase 1 refusal remains as the backstop).
Migration, designed before code; the plan goes in the PR or a design comment first:
first-party packages (hotcrm, templates, examples, the showcase) migrate in the same release; the phase 2 baseline gives the size;
stored references in live environments: user permission-set assignments hold bare names, so renaming a set without migrating them removes access. List every stored by-name reference (assignments, activation switches, flow and action references in records, AI agent prompts naming tools) and migrate each one;
external references: inbound webhook ids, connector ids and api item names may be called from outside. List them and decide an alias or an exclusion for each; never break silently;
third-party packages: a deprecation window (warn, then refuse) or an ADR-0087 load-time conversion; the lane's design call, stated in the plan;
Studio: a name typed in Studio gets the package or pair namespace prefixed automatically (ADR-0146 pairs); decide what a package-less environment item uses;
length: a 20-character namespace plus _ plus the short name must fit the item-name pattern and the storage identifier limit; refuse with a clear message.
Tests: one refusal per type family, the exceptions, the migration of a stored assignment, and a two-package install that now cannot collide.
Reader: the domain:engine lane seat (with domain:spec for the rule), from pm:queue once both blockers close.
Seat note for phase 3 · 2026-11-08T05:09Z · ⛔ Not a claim.
The contract review of #30803's closing PR (#31375, record 6717571232) measured two readings outside ruling 6688041914's nine types. Phase 3's design should know about both:
tool is served first-registered at GET /meta/tool/NAME when two packages ship one bare tool name. A third package installed after the boot answers 200 and is shadowed. That is the same defect class phase 1 closed for the nine types, but it is not on their list. Phase 3's namespaced names resolve it; until then it is open. If the maintainer wants it closed in phase 1's way first, that is a new card, by ruling.
The kernel metadata service, as read by MCP agent_prompt, sees no package-shipped agent, while GET /meta/agent/NAME serves one. The two readers of "an agent by name" disagree (ADR-0063 §2 direction). Name the one reader when phase 3 rewrites agent resolution.
Both blockers closed: #30803 (phase 1, the registration refusal) and #30804 (phase 2, the lint and templates). pm:blocked → pm:queue for the domain:server lane. Ruling C on #30798 stands: the migration plan (stored references, external references, third-party window, Studio auto-prefix, length) comes before code.
Activity
objectstack-fleet commentedon Nov 6, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit ·
domain:engine→domain:server· p1 kept · 2026-11-06T04:56Z⛔ Not a claim.
domain:engineis a retired alias ofdomain:server. This card is part of the bare-name / unmanaged-install programme following [decision] A non-object metadata name shared by two installed packages often resolves to one package silently: which naming contract replaces ADR-0048 §3.4? #30798, and keeps the p1 it was filed with. Any ADR text it touches is Tier H.Generated by Claude Code
objectstack-fleet commentedon Nov 8, 2026
domain:server#5 · os-project-manager · session_01FEkQ5o8PE7ZtVjcor51wBZ
Seat note for phase 3 · 2026-11-08T05:09Z · ⛔ Not a claim.
The contract review of #30803's closing PR (#31375, record 6717571232) measured two readings outside ruling 6688041914's nine types. Phase 3's design should know about both:
toolis served first-registered atGET /meta/tool/NAMEwhen two packages ship one bare tool name. A third package installed after the boot answers 200 and is shadowed. That is the same defect class phase 1 closed for the nine types, but it is not on their list. Phase 3's namespaced names resolve it; until then it is open. If the maintainer wants it closed in phase 1's way first, that is a new card, by ruling.metadataservice, as read by MCPagent_prompt, sees no package-shipped agent, whileGET /meta/agent/NAMEserves one. The two readers of "an agent by name" disagree (ADR-0063 §2 direction). Name the one reader when phase 3 rewrites agent resolution.Generated by Claude Code
objectstack-fleet commentedon Nov 8, 2026
epic:#3600#1 · hotlong · session_01Q4EjjPXwX1YfHyKJUh4agu
Both blockers closed: #30803 (phase 1, the registration refusal) and #30804 (phase 2, the lint and templates).
pm:blocked→pm:queuefor thedomain:serverlane. Ruling C on #30798 stands: the migration plan (stored references, external references, third-party window, Studio auto-prefix, length) comes before code.