Repository navigation
docs(adr): ADR-0048 §5 describes the namespace-prefix lint as it now ships - #30988
Conversation
…ships The §5 bullet still said `naming/namespace-prefix` warns on seven types and only exempts the namespace-named app and `sys_` names. Under ruling C on #30798 it warns on every bare package-authored name in every manifest collection. The bullet now names what the rule leaves to other checks, what counts as carrying the namespace (including the `<ns>.<short>` capability names, maintainer ruling 2026-11-06T11:08Z), the platform-requested `guest_portal` exemption (maintainer ruling 2026-11-06T14:57Z), and that the refusal is phase 3 (#30806). Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4cyadQ5Zhih2y1GNTQm
|
domain:devx#1 · os-elon-musk · session_016WV4cymvo9YoyLwKCXXBNw Contract reviewServed-tier: Independence: this review ran in a sub-agent at CONTRACT_REVIEW_TIER, separate from the drafter (card-thread session Face: ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Attempts to break it: a package that declares no Findings:
No must-fix. The bullet holds against the cited code and against the scenario it is accepted against (the §5 phasing list telling a reader, and the phase-3 dev, what Implemented-by: VERDICT: PASS |
|
domain:devx#1 · os-elon-musk · session_016WV4cymvo9YoyLwKCXXBNw 维护者速读
席位核对 · ACCEPT · #30804 · 2026-11-06T15:59ZHead-sha:
|
…ing and the namespace guard reach The contract review on the bullet found it said the duplicate finding covers every collection, while it runs only for apps, pages, dashboards, flows, actions, reports and datasets. The bullet now says so, says a package with no `manifest.namespace` is not judged, and describes the dot clause as the dotted `<ns>.<short>` shape rather than capabilities alone, which is what the predicate checks. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4cyadQ5Zhih2y1GNTQm
|
domain:devx#1 · os-elon-musk · session_016WV4cymvo9YoyLwKCXXBNw Contract reviewServed-tier: Independence: delta review by the same sub-agent reviewer that rendered the PASS record on Delta: one commit ( ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Findings: none. No must-fix, no should-fix. The bullet now matches the code on every claim the first record checked and the three it corrected. Implemented-by: VERDICT: PASS |
|
domain:devx#1 · os-elon-musk · session_016WV4cymvo9YoyLwKCXXBNw 席位核对 · ACCEPT (delta) · #30804 · 2026-11-06T16:10ZHead-sha:
|
Requested by Elon · project thread
domain:devx#1 · os-elon-musk · session_016WV4cyadQ5Zhih2y1GNTQm
Fixes #30804
Clause-②: no
Metadata-protocol: none
维护者速读
naming/namespace-prefix一致。sys_」;fix(cli):os lintwarns on every bare package-authored metadata name, andos generatewrites them prefixed #30842 与 refactor(examples): every example-authored metadata name carries its package namespace #30927 合并后已不是这样。skip-changeset)。回滚即 revert。docs/adr/0048-cross-package-metadata-collision.md的 §5 第一条。packages/cli/src/commands/lint.ts的NAME_JUDGED_ELSEWHERE、carriesPackageNamespace和PLATFORM_REQUESTED_BARE_NAMES读一遍新条目。docs/adr的 Tier H 改动,需要 os-zhuang 或 hotlong 批准后合并。What changes
ADR-0048 §5's first bullet described the old
naming/namespace-prefix: a warning on seven types (app,page,dashboard,flow,action,report,dataset) that exempted only the namespace-named app andsys_names. It now describes the rule as it ships after #30842 and #30927:fix;defineStackrefuses those), views, docs (docs/namespace-prefix), extensions, translation bundles, fields,functionsandoverridesitems to other checks;<ns>_, is a<ns>.<short>capability name, or starts withsys_;guest_portalis exempt, because the public form doors request it by that bare name (ADR-0138), and the exemption is namedPLATFORM_REQUESTED_BARE_NAMES;The bullet links both maintainer rulings it rests on:
guest_portalis exempt, 2026-11-06T14:57Z, recorded in #30804 comment 6687835712.No other line of the ADR changes. Its status, decision and addenda are untouched.
Why
Ruling C on #30798 (maintainer, verbatim 「同意 c」): every package-authored metadata name carries its namespace, phased. Phase 2 (#30804) shipped as #30842 (the lint and
os generate) and #30927 (the example renames and theguest_portalexemption). This one-file PR brings the ADR's phasing list in line and closes the card.Acceptance notes
docs/adr/**, so it needs a governed approver (os-zhuang or hotlong). Auto-merge is not armed.skip-changesetlabel.os lintrule "keeps authoring hygiene") and the paragraph after it (a package shipping twopage/homeitems "stays covered by thenaming/namespace-prefixlint") are both still true.Verification
mainat9d313f3ac:NAME_JUDGED_ELSEWHERE,carriesPackageNamespaceandPLATFORM_REQUESTED_BARE_NAMES.node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackat3329301dederived 21 commands. All 21 ran and exited 0, and--ranreconciles 21 derived / 21 run / 0 NOT-MEASURED.Gates run at 3329301 (21)
Human Minimum
packages/specholds no runtime logic. (packages/specnot touched.)pnpm lintpasses. (Markdown only.)main, one pull request.skip-changeset.)packages/spectouched: its generated artifacts are regenerated and committed. (n/a)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_016WV4cyadQ5Zhih2y1GNTQm