Repository navigation
Description
epic:#31527#1 · os-project-manager · session_01FEkQ5mLd7pR2PHjsPwiGkz
Filing gate: ④ coordination node: child K of the epic #31527 (parent and per-layer children), as ADR-0150 (docs/adr/0150-behavioural-metadata-addressed-by-package-objects-keep-the-literal-prefix.md, merged in #31586 at 5d1382a)'s execution plan lists it. Hand-over card: filed undispatched as the epic seat signs off (maintainer 2026-11-08T16:34Z 「专题卡当前任务处理完,合并后就下班」). ⛔ Not a claim.
Ruling-ref: per-type table A (6723462584); epic A 「立专题」 (6723499113); division of labour A 「留核心,其余交车道」 (6723571682); Q3 (6724530715); ADR-0150 accepted by merge (#31586, 2026-11-08T21:16Z).
Business reason: inherited from the parent #31527. Behavioural metadata is addressed by (package, name), so two installed packages can each ship an item of the same name and every reader answers the right one, or refuses with the candidates, instead of silently taking the first match.
Reader: the next domain:server seat picks it from the queue (pm-dispatch selection) and accepts its PR against the red lines below.
Dedupe (open AND closed): namespace equal object name (428; top hits #31527(open) #21821(open) #27196(open), none on point: they are this epic, its parent #30806, or unrelated cards).
class: d · type: Feature
Grade: p1, inherited from the parent (self-graded under 「定级你可以自己决定」).
Blocked-by: #31669
维护者速读
命名空间和对象名永远不能相同(你 17:13 裁定的 Q3 = A):在 defineStack、os validate、安装和 Studio 发布四个入口双向拒绝,并拒绝短名为 custom 的对象。判断函数在规格卡 P 里,这张卡把它接到各入口。第一方实测 0 处命中。
What to build
Wire P's predicate (kernel/namespace-prefix.ts) into every object door: defineStack, os validate, install (installPackage) and Studio publish (MetadataManager.publishPackage(), save door protocol-save-door-refusals.ts). Refused in both directions (a new namespace equal to an existing object name; a new object name equal to an existing namespace), naming both spellings; also an object short-named custom. defineStack/os validate compare with the stack's own namespace, its declared dependencies' namespaces and the NS_custom corollary; install and publish compare with the environment's namespaces and object names. Lands before G1, G2 and C.
Surface
- Expected file surface: cli validate; objectql
registry.ts(installPackage); metadata-protocol (publishPackage);stack.zod.tswiring. - Clause-②: no.
- Narrowing: yes: a namespace equal to an object name, and an object short-named
custom(measured first-party: 0).
Acceptance — the epic's three red lines (every child shares them)
- Resolution never loosens. No first-registered fallback, no environment-wide guess for a caller with a package, no silent pick.
- Ambiguity is reported, never guessed. Every refusal and every migration report names every candidate.
- Independently releasable (red line 3). The PR proves it with ADR-0150's four readings: (a) the phase-1 one-holder tests stay green; (b) bare-name behaviour (URLs, MCP, SDK) is unchanged for every name with one holder, except this card's declared narrowing; (c) any migration is re-runnable and never guesses; (d) its
Clause-②:declaration and, where it changes the protocol, its ADR-0087 migration entry. - The epic seat is off duty after hand-over: the accepting lane seat checks these lines itself, and a narrowing beyond the declared one goes to the maintainer before landing.
Parent: #31527.
Activity
objectstack-fleet commentedon Nov 8, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: confirmed ·
domain:server· p1 ·pm:blocked· 2026-11-08T21:59Z⛔ Not a claim.
epic:#31527#1is online, and the maintainer ruled 「留核心,其余交车道」. The children live in lane queues withoutpm:epic, which matches [Decision] Epic-driven delivery as the next working mode: one epic = parent + epic seat + milestone table; children as sub-issues withpm:epic+Blocked-by:; rolling split; mandatory hand-over when an epic seat leaves; a cap on concurrent epics #31502 A′.domain:server, by package ([Decision] Keepdomain:devxanddomain:serveras separate lanes, or merge them? Measured load and boundary friction, 2026-11-08 #31424 rule 1).Generated by Claude Code