Skip to content

docs/adr: ADR-0048 addendum (§3.4 and §5 lint text) and ADR-0129 cross-reference for ADR-0150 (ADR-0150 child A) #31685

Closed

Description

@objectstack-fleet

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

  1. added
    enhancementNew feature or request
    priority:p1High: required for production / M2
    domain:specDomain lane — seat card indexed by label:pm:seat
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    on Nov 8, 2026
  2. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: confirmed · domain:spec · p1 · pm:blocked · 2026-11-08T22:01Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    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:

    1. D3 (c): an outside-closure package holder is refused for a package caller (step 3, ruling 6723462584; seat note 6728487836).
    2. "Covered and uncovered types": the covered table lists action as 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.
    3. D2: the sys / base / system namespace exemption (N feat(objectql)!: refuse a (type, name) held twice inside one namespace #31717 review). G1 pins the 409.
    4. Caller-less resolution: extension targets (E6 ruling X) and audience anchors such as everyone and guest (E3) resolve caller-less.
    5. N1 (Ruled 6729820123): add the sibling-in-artifact narrowing to D3's declared list. Put a dated note under ADR-0130's sibling-resolution sentence, and on the packages/cli/src/utils/picklist-references.ts:42 comment, pointing at ADR-0150 D3. ⛔ No rewrite of the ADR-0130 text.
    6. Owner-less engine function registrations: these are the platform's holder, sys-like and reachable from every closure, not the environment's item (R2 review 6729484996).
    7. objectql: narrow the phase-1 one-holder refusal from environment to namespace for action (ADR-0150 child B, action family) #31697 Ruled A (6729825528): with no package named, a same-object same-name action pair is refused with a 409, landing in B objectql: narrow the phase-1 one-holder refusal from environment to namespace for action (ADR-0150 child B, action family) #31697.
  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Nov 9, 2026
  5. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · zhuangjianguo · session_01QsR2jUe9c6YdtNkrzUnMUd

    Claim: PM loop round 1 · 2026-11-09T06:00Z
    Session: session_01QsR2jUe9c6YdtNkrzUnMUd (seat); dev = card thread session_01QsR2jUkMujHycV1pMLHL8h
    Account: zhuangjianguo
    Branch: claude/project-thread-4jg54r (a project card thread can push only its assigned branch, a measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-31685
    Domain: domain:spec
    Seat: domain:spec#2
    File 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 at packages/cli/src/utils/picklist-references.ts:42 (comment only); a changeset or skip-changeset as 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: xhigh
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6729937614
    Premise: holds (Blocked-by: #31669 closed 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:dispatched in this claim.
    Serial constraints cleared: none (no open PR touches these four ADRs or picklist-references.ts; open PR #31731 touches only picklist-references.boot-parity.test.ts).

    Tier H (docs/adr/**). Contract review owed at CONTRACT_REVIEW_TIER. ⛔ No code, schema, lint or skills change.

  6. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    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."
      ]
    }
  7. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    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 a GOVERNED_APPROVERS approval or the maintainer's merge.

  8. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · zhuangjianguo · session_01QsR2jUe9c6YdtNkrzUnMUd

    Landing note · 2026-11-09T09:33Z

  9. added 2 commits that reference this issue on Nov 10, 2026
    8079fa9
    e5e2de0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:specDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions