Skip to content

Package naming rule: name a new package by its kind (service-*, connector-*, ...) and freeze the plugin- prefix at today's ten (AGENTS.md roles rows + pm-dispatch order line) #29709

Closed

Description

@objectstack-fleet

domain:server#2 · os-warren · session_01JQwxbXKRzgnVvjzxaYxLUf

立卡门类别: ③ 维护者直派. 出处: Warren, project thread "Decide push channel package name", 2026-11-03T02:11:43Z 「应该用 service-*,包括如何制定仓库规则,避免类似的问题」 and 02:12:01Z 「plugin- 太笼统,是不是建议逐渐退役这个名字。」; decision card answered 02:14:54Z "coordinator dispatches a seat"; dispatched by domain:server#2 at the coordinator's routing (02:16Z).
业务理由: ③ — the maintainer's words above. Without a written rule and a gate, the next package an ADR names gets the generic plugin- prefix again (ADR-0012 §4 still says plugin-notification-push), and a published name cannot be taken back without a major.
动手的读者: a domain:skills card thread dispatched by domain:server#2: AGENTS.md roles rows and one pm-dispatch reference line, at the governed register's tier for those paths. Suggested-grade: p2 · maintainer-directed rule; the gate is its devx sibling card.
查重 (gh api search/issues, includes closed, 2026-11-03T02:17Z): title "package name" ADR precedent 0, naming rule packages 0, plugin prefix naming 0, package naming gate 3 (all closed, dispatch-gates / lock-family findings, unrelated), "service-" prefix 4 (service-storage / service-sms behaviour, unrelated). Nearest open neighbour #29663 (pm-dispatch: a new key or export NAME settled by precedent is the seat's call) covers authorable keys and exports, not package names; 0 duplicates. #29041 is the consumer (service-push).

Context

  • Push channel: build the device registry routes (/notifications/devices) and the APNs + FCM transport that ADR-0012 marks "MUST ship M1" #29041 asked for the push channel. ADR-0012 §4 names it plugin-notification-push; os-zhuang asked on the card (6592963202) whether a kernel service should be service--prefixed. Warren ruled service-push + amend ADR-0012 (fable thread, 2026-11-03T02:11Z) and then: 「应该用 service-*,包括如何制定仓库规则,避免类似的问题」, 「plugin- 太笼统,是不是建议逐渐退役这个名字」.
  • Measured at 3d5933a9: no plugin-notification-* package exists; ADR-0012's inbox/email/webhook names were never built either. The channels that shipped are sms-channel.ts / email-channel.ts in service-messaging delegating to @objectstack/service-sms / @objectstack/plugin-email. packages/plugins already holds kind-named packages with no plugin- prefix (embedder-openai, knowledge-memory, knowledge-ragflow, organizations). The only written placement rule is the AGENTS.md roles table (packages/plugins/** | Implements spec contracts, packages/services/** | Kernel-managed services), which does not say how a new package is named or what wins when an ADR and the tree disagree.
  • The ten plugin-* packages are published names with 15–392 references each outside their own directory (plugin-security 392, plugin-auth 259, plugin-hono-server 183, plugin-audit 157, plugin-sharing 126, plugin-approvals 93, plugin-email 79, plugin-webhooks 48, plugin-dev 22, plugin-pinyin-search 15). Renaming any of them is a public break (ADR-0087 tombstone, check-changeset-no-major), so the prefix is retired for NEW names only.

Wanted (rule text; the gate is the domain:devx sibling card filed beside this one)

  1. AGENTS.md roles table, two rows rewritten in place (zero line growth; the 1117-line ceiling holds):
    • packages/services/**: every new kernel-managed service (fills a core-services slot, registers a service, or holds transports/credentials) is @objectstack/service-<name> in packages/services/service-<name>.
    • packages/plugins/**: kind-named extensions (connector-*, driver-*, embedder-*, knowledge-*, ...); the plugin- prefix is frozen to the ten packages that carry it today and is not coined again.
    • One sentence (either row, or the ADR index README line 7): a package name in an ADR is a proposal; when the tree's precedent differs, the PR that creates the package follows the precedent and amends the ADR status line in the same change.
  2. pm-dispatch reference (the dev-order reference): the dev measures precedent before creating a package; an order that creates a package names the directory and the npm name explicitly.
  3. Not wanted: renaming any existing plugin-* package or moving its directory. A later card may add service-* alias packages (service-auth → plugin-auth, service-email → plugin-email) if the published-name break is ever paid for by a major.

Acceptance

  • AGENTS.md line count unchanged or lower; the AGENTS.md line ratchet green.
  • The rule text names the same frozen set of ten that the devx gate ratchets.

Activity

  1. added
    enhancementNew feature or request
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Nov 3, 2026
  2. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#2 · os-warren · session_01JQwxbXKRzgnVvjzxaYxLUf

    Claim: PM loop round 1 · card thread · 2026-11-03T02:21Z
    Session: session_01JQwxbXKRzgnVvjzxaYxLUf (the seat); the card thread is session_01JQwxbWzSjXRKg3dUCvmJgB
    Account: os-warren
    Branch: claude/project-thread-e4t02f
    Worktree: the card thread's own container checkout
    Domain: domain:skills (maintainer-directed ③, routed to domain:server#2 by the coordinator)
    Seat: domain:server#2
    File surface: AGENTS.md (two roles rows, in place), one pm-dispatch dev-order reference line under .claude/skills/pm-dispatch/references/; docs/adr/ only if the ADR-precedence sentence cannot sit in the AGENTS.md row
    Container & model: card thread, mode:thread, model: TIER_DEFAULT (--tier names no path mandate; the governed rule text owes a CONTRACT_REVIEW_TIER review of record before landing), effort: project default
    Clause-②: no
    Metadata-protocol: none
    Responsibility: AGENTS.md roles table + pm-dispatch dev orders | no rule says how a new package is named or what wins when an ADR and the tree disagree | every future package author; reachable today (#29041's push channel)
    Thread-read: none
    Premise: holds (seat measured on origin/main before filing: no naming rule in AGENTS.md roles rows; ten @objectstack/plugin-* packages)
    Serial constraints cleared: none owed; sibling gate card #29710 runs in parallel and must freeze the same ten names

    Order: project file pm-orders/server/seat2/order-29709.md.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#2 · os-warren · session_01JQwxbWzSjXRKg3dUCvmJgB
    os-dev-report

    {
      "issue": 29709,
      "status": "done",
      "branch": "claude/project-thread-e4t02f",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29717",
      "session": "session_01JQwxbWzSjXRKg3dUCvmJgB",
      "premise_still_valid": true,
      "summary": "AGENTS.md roles table: the packages/services and packages/plugins rows rewritten in place. A new kernel-managed service is @objectstack/service-NAME in packages/services/service-NAME; a new plugins-dir package is named by its kind and the plugin- prefix is frozen to the ten that carry it today (approvals, audit, auth, dev, email, hono-server, pinyin-search, security, sharing, webhooks), none renamed; the ADR-precedence sentence sits in the services row, so docs/adr is untouched. pm-dispatch execution-duties.md gains one 118-byte dispatch line (an order that creates a package names directory and npm name; the dev measures same-kind precedent first; rule lives in AGENTS.md), paid by retiring the review-section cloud-routing line that cross-repo-coordination.md lines 44 and 47 restate. Head 916228d2 (edit commit 5d342201 plus a merge of origin/main 0eb97fa4, which touches neither file).",
      "tests": "Rule text only, no tested behaviour changed, so no test or ablation is owed. Measured on c9636f1e: 18 packages under packages/services and 14 under packages/plugins, directory equals npm name for all 32; exactly ten @objectstack/plugin-* package names, the same ten as sibling #29710.",
      "gates": "dispatch-gates --commands derived 20 families; all 20 plus pnpm lint ran with exit 0 (prerequisite turbo build of formula and lint exit 0 first); --ran reconciliation: 20 derived, 20 run, 0 NOT-MEASURED, 0 UNRUN. check:pm-skill-ratchet readings: AGENTS.md 1050 lines (ceiling 1050), widest table row 768 B (pin 768); execution-duties.md 188 lines (ceiling 188); re-ran exit 0 after merging main. CI check-runs on PR 29717: in_progress at report time.",
      "line_budget": "AGENTS.md 1050 to 1050 (2 rows rewritten); execution-duties.md 188 to 188 (+1/-1); no skills/** file touched",
      "files_changed": [
        "AGENTS.md",
        ".claude/skills/pm-dispatch/references/execution-duties.md"
      ],
      "deviations": [
        "PR body: Human Minimum item 8 left unchecked because the os-dev 维护者速读 block is Chinese by definition and the retired line is quoted verbatim; the template headings were folded into the os-dev order (exception noted here)."
      ],
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "1 — relay fleet-write pr_create (run 41567184086, 7498 bytes sent and stored identical, label skip-changeset); this report comment via post-stamped.mjs makes 2",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p2 · domain:skills kept · pm:dispatched kept · 2026-11-03T02:54Z

    ⛔ Not a claim.


    Generated by Claude Code

  5. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#2 · os-warren · session_01JQwxbWzSjXRKg3dUCvmJgB
    os-dev-report

    {
      "issue": 29709,
      "status": "done",
      "branch": "claude/project-thread-e4t02f",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29717",
      "session": "session_01JQwxbWzSjXRKg3dUCvmJgB",
      "premise_still_valid": true,
      "summary": "Patch round on the seat's contract review (PASS with two should-fixes, comment 6594127895), one commit 7187a55e, then a merge of origin/main c779611e (touches neither file); head 3e04cfa8. S1: the packages/plugins row now names only the kinds that live there (embedder-*, knowledge-*) and says drivers and connectors have their own directories (packages/drivers/driver-*, packages/connectors/connector-*), measured: 6 driver-* and 5 connector-* packages there. S2: the ADR-precedence sentence now opens 'For any new package, in this row or the one above', so it governs both rows; still in the services row, no line added. Frozen ten and the execution-duties line unchanged.",
      "tests": "Rule text only, no tested behaviour changed, so no test or ablation is owed. Measured on c9636f1e: 18 packages under packages/services and 14 under packages/plugins, directory equals npm name for all 32; exactly ten @objectstack/plugin-* package names, the same ten as sibling #29710.",
      "gates": "On 7187a55e: dispatch-gates --commands derived the same 20 families as the first round; all 20 plus pnpm lint exit 0 (turbo prebuild of formula and lint exit 0 first); --ran reconciliation 20 derived, 20 run, 0 NOT-MEASURED, 0 UNRUN. check:pm-skill-ratchet: AGENTS.md 1050 lines (ceiling 1050), widest table row 768 B (pin 768; rewritten rows 565 B plugins, 473 B services); execution-duties.md 188/188. After merging main c779611e: check:pm-skill-ratchet re-ran exit 0. CI on 3e04cfa8: in_progress at report time.",
      "line_budget": "AGENTS.md 1050 to 1050 (2 rows rewritten); execution-duties.md 188 to 188 (+1/-1)",
      "files_changed": [
        "AGENTS.md",
        ".claude/skills/pm-dispatch/references/execution-duties.md"
      ],
      "deviations": [
        "PR body: Human Minimum item 8 left unchecked because the os-dev 维护者速读 block is Chinese by definition and the retired line is quoted verbatim; the template headings were folded into the os-dev order (exception noted here)."
      ],
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "1 this round — this report comment via post-stamped.mjs; first round 2 (relay pr_create, report comment 6594018852)",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [],
      "body_amendments": [
        "What changes, packages/plugins bullet: replace 'a new package is named by its kind (`connector-*`, `driver-*`, `embedder-*`, `knowledge-*`, …)' with 'a new package here is named by its kind (`embedder-*`, `knowledge-*`, …); drivers and connectors have their own directories (`packages/drivers/driver-*`, `packages/connectors/connector-*`)'.",
        "What changes, packages/services bullet: replace 'Plus the ADR-precedence sentence: a package name in an ADR is a proposal' with 'Plus the ADR-precedence sentence, which opens For any new package, in this row or the one above: a package name in an ADR is a proposal'.",
        "Surviving-home citation: replace 'lines 44 (涉 cloud 即整卡归 cloud PM … ⛔ 不拆半边等读数) and 47' with 'lines 44 (涉 cloud 即整卡归 cloud PM), 46 (⛔ 不拆半边等读数) and 47'.",
        "Verification: AGENTS.md rewritten rows now measure 565 B (plugins) and 473 B (services), not 471 B and 422 B; gates re-ran on 7187a55e, same 20 families, all exit 0."
      ]
    }

    Generated by Claude Code

  6. objectstack-fleet commented on Nov 3, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#2 · os-warren · session_01JQwxbXKRzgnVvjzxaYxLUf

    Landing record · #29709 · 2026-11-03T04:24Z


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:skillsDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions