Repository navigation
Description
epic:#31527#1 · os-project-manager · session_01FEkQ5mLd7pR2PHjsPwiGkz
Filing gate: ④ coordination node: child A 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); 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:spec seat picks it from the queue and accepts its PR against the red lines below.
Dedupe (open AND closed): ADR-0048 addendum ADR-0129 (7; top hits #30798(closed) #22307(closed) #25403(closed), 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
维护者速读
把 ADR-0048 和 ADR-0129 里过时的说法改成指向 ADR-0150(包括 §5 的前缀 lint 条目,P 撤掉 lint 之后它就过时了)。只改文档。
What to build
ADR status lines: an ADR-0048 addendum (its §5 [done] lint bullet and §3.4's lint sentence, which go stale once P retires the bare-name warning and #30806 phase 3 is withdrawn) and an ADR-0129 cross-reference to ADR-0150. ADR-0028's and ADR-0048's status-line pointers already landed with #31586.
Surface
- Expected file surface:
docs/adr/(Tier H, maintainer merge). - Clause-②: no.
- Narrowing: no.
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:spec· p1 ·pm:blocked· 2026-11-08T22:01Z⛔ 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:spec, by package ([Decision] Keepdomain:devxanddomain:serveras separate lanes, or merge them? Measured load and boundary friction, 2026-11-08 #31424 rule 1).domain:devxanddomain:serveras separate lanes, or merge them? Measured load and boundary friction, 2026-11-08 #31424 rule 2). The ADR text is Tier H, landed by the maintainer's hand.Generated by Claude Code
objectstack-fleet commentedon Nov 9, 2026
epic:#31527#1 · os-steve · session_01ADHkmP7o3uDTti21wLTfPf
What child A owes, accumulated from rulings so far · 2026-11-09T01:16Z
These are carried into A's ADR-0150 text, on top of the card's original §5 and §3.4 items:
actionas object-less only. The sentence "no two package holders of a name exist while its refusal stands" does not hold for deployments sealed before phase 1 (webhooks, connectors, email templates on (package, name) (ADR-0150 child E5) #31677 Q1 Ruled A, 6729831159); list that narrowing.sys/base/systemnamespace exemption (N feat(objectql)!: refuse a (type, name) held twice inside one namespace #31717 review). G1 pins the 409.packages/cli/src/utils/picklist-references.ts:42comment, pointing at ADR-0150 D3. ⛔ No rewrite of the ADR-0130 text.sys-like and reachable from every closure, not the environment's item (R2 review 6729484996).objectstack-fleet commentedon Nov 9, 2026
domain:spec#2 · zhuangjianguo · session_01QsR2jUe9c6YdtNkrzUnMUd
Claim: PM loop round 1 · 2026-11-09T06:00Z
Session:
session_01QsR2jUe9c6YdtNkrzUnMUd(seat); dev = card threadsession_01QsR2jUkMujHycV1pMLHL8hAccount:
zhuangjianguoBranch:
claude/project-thread-4jg54r(a project card thread can push only its assigned branch, a measured platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-31685Domain:
domain:specSeat:
domain:spec#2File surface:
docs/adr/0048-cross-package-metadata-collision.md,docs/adr/0129-object-name-is-the-canonical-id.md,docs/adr/0130-release-artifact-as-co-ownership-boundary.md(one dated note only, ⛔ no rewrite),docs/adr/0150-behavioural-metadata-addressed-by-package-objects-keep-the-literal-prefix.md(the seven items carried in 6729937614), the comment atpackages/cli/src/utils/picklist-references.ts:42(comment only); a changeset orskip-changesetas the gate requires (stop on breach; explain in the report)Container & model:
M,mode:thread,model: default tier — dispatch-gates --tier on origin/main 732def59 says MANDATORY claude-fable-5-1 (the docs/adr/** hit, no one-line exit, effort floor xhigh); reason: the maintainer's standing rule 「后续不再派 fable 卡」 (2026-10-27) puts builds on the default tier; the review is owed at CONTRACT_REVIEW_TIER on an isolated sub-agent (rule 2026-11-08 16:12Z 「有 fable 车道就可以契约复审啊」),effort: xhighClause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card
Thread-read: 6729937614
Premise: holds (
Blocked-by: #31669closed by PR #31765, merged 2026-11-09T05:53:31Z, d9a232f; ADR-0048 §3.4 and §5 still describe the retired bare-name warning on origin/main 732def5).pm:blocked→pm:dispatchedin this claim.Serial constraints cleared: none (no open PR touches these four ADRs or
picklist-references.ts; open PR #31731 touches onlypicklist-references.boot-parity.test.ts).Tier H (
docs/adr/**). Contract review owed at CONTRACT_REVIEW_TIER. ⛔ No code, schema, lint or skills change.objectstack-fleet commentedon Nov 9, 2026
domain:spec#2 · zhuangjianguo · session_01QsR2jUkMujHycV1pMLHL8h
os-dev-report
{ "issue": 31685, "status": "pr_open", "branch": "claude/project-thread-4jg54r", "pr": 31841, "head": "ca23ce32cd53f905904f2faf772b6e89e9f0e4ce", "session": "session_01QsR2jUkMujHycV1pMLHL8h", "premise_still_valid": true, "summary": "Docs only. ADR-0150 records the seven carried items (D3 (c) incl. undeclared siblings; caller-less extension target and everyone/guest anchors; D2 shareable namespaces; D4 owner-less engine function; covered-types narrowing for the sealed pre-phase-1 clash and the same-object action pair; releasability names D3 (c); TL;DR 7). ADR-0048 §5 lint bullet rewritten in place, dated note under §3.4. ADR-0129 cross-reference and note under D4. ADR-0130 note under D1. Comment note in picklist-references.ts.", "tests": "none: docs-only (skip-changeset)", "gates": { "dispatch_gates_derived": 56, "run": 56, "exit_0": 56, "not_measured": 0, "unrun": 0, "measured_on": "bfc1d99b", "post_merge_head": "ca23ce32", "post_merge_rerun": { "check:adr-index": 0, "check-adr-links": 0, "check-adr-anchors": 0 }, "prebuild_verdict": 0, "full_build_verdict": 0, "first_pass_exit3_prereqs_rerun_green": 6, "body_gates": { "check-closing-keyword-parity": 0, "check-changeset-no-major": 0, "check:adr-0087-registration": 0, "check-partof-closing-keyword": 0 } }, "dogfood_battery": "n/a", "mcp_calls": { "issue_read": 7, "pull_request_read": 6, "writes": 0 }, "api_writes": { "via_relay": [ "pr_create #31841" ], "via_post_stamped": [ "this report" ] }, "line_budget": { "files": 5, "insertions": 104, "deletions": 25, "total": 129 }, "files_changed": [ "docs/adr/0048-cross-package-metadata-collision.md", "docs/adr/0129-object-name-is-the-canonical-id.md", "docs/adr/0130-release-artifact-as-co-ownership-boundary.md", "docs/adr/0150-behavioural-metadata-addressed-by-package-objects-keep-the-literal-prefix.md", "packages/cli/src/utils/picklist-references.ts" ], "deviations": [ "ADR-0048 §3.4 noted, not amended: its lint sentence still holds (DUPLICATE_KEYED_TYPES ships; ADR-0150 D9); §5 bullet rewritten in place. Seat agreed.", "ADR-0130 note placed under D1's first paragraph (no resolution sentence exists in ADR-0130). Seat agreed." ], "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "ADR-0150 still counts 12 covered types and lists tool as uncovered, though tool joined phase 1 (#31661) and BARE_NAME_ONE_HOLDER_TYPES lists it.", "ADR-0150 status line still reads Proposed; ADR-0048's pointer still says 'takes effect when ADR-0150 is accepted'. Left as written." ] }objectstack-fleet commentedon Nov 9, 2026
domain:spec#2 · zhuangjianguo · session_01QsR2jUe9c6YdtNkrzUnMUd
ACCEPT → PR #31841 comment 6734613012 · 2026-11-09T07:27Z · head
0a18e768. Tier H (docs/adr/**): contract review PASS 6734267031, delta 6734337758 on this head. Waiting on aGOVERNED_APPROVERSapproval or the maintainer's merge.objectstack-fleet commentedon Nov 9, 2026
domain:spec#2 · zhuangjianguo · session_01QsR2jUe9c6YdtNkrzUnMUd
Landing note · 2026-11-09T09:33Z
os-zhuangmerged PR docs(adr): ADR-0150 records its children's rulings; ADR-0048 §5, ADR-0129 and ADR-0130 point at it (ADR-0150 child A) #31841 at 2026-11-09T09:32:44Z through auto-merge (merge commit8079fa9b5c). The merged head is0a18e768, the head the reviews covered: contract review PASS 6734267031, delta 6734337758, ACCEPT 6734613012.Fixesclosed this card.pm:dispatchedis removed here, andpm:awaiting-mergeis removed from the PR.B1…B13, should beB1…B14), and N2 (L300/L302 "other 10", should be 9).Blocked-by: #31685. os validate: a field naming a sibling package's picklist without a declared dependency passes the author-time door, then is refused at install (ADR-0150 D3) #31832 (domain:server) asks that thepicklist-references.tsmodule header follow this card's ADR-0130 note. That note is now onmain, so os validate: a field naming a sibling package's picklist without a declared dependency passes the author-time door, then is refused at install (ADR-0150 D3) #31832 can cite it.toolis on design(metadata): address behavioural metadata by package — key flows, actions, jobs and other non-object types by (package, name); re-open ADR-0028 (replaces #30806 phase 3 renames) #31527, in the seat note that posted earlier this round.docs(adr): ADR-0150 records its children's rulings; ADR-0048 §5, ADR-…
docs(adr-0150, adr-0151): dated amendment notes for what G1 and its f…