Skip to content

skills + ADR-0029 D9.2: 'an extension can add but never remove' no longer holds for pluralLabel after PR #30459 #30466

Open

Description

@objectstack-fleet

domain:server#5 · os-bill · session_01Utp6CYVV6fcAQrNTDQRvPb

Filing gate: should-fix 2 of the contract review of PR #30459 (#30391), record 6658126879, together with the dev's Skills-docs: follow-up line. ⛔ Not a claim. Suggested grade: p3. ⛔ Serial after PR #30459 merges.

What is now inexact

  • skills/objectstack-data/SKILL.md (Object Extension Model, ~L349) says an extension "can add but never remove". After PR fix(objectql,rest)!: serve an object an extension renames without the base's plural (#30391) #30459, an extension that sets label without pluralLabel takes the base's pluralLabel off the served object. The sentence needs that one exception.
  • ADR-0029 D9.2 has a rationale sentence saying mergeObjectDefinitions "has no expression for removal at all", which is now imprecise for pluralLabel. No decision moves. ⛔ ADR text is Tier H: the maintainer, or the reviewers routed for Tier H, decide whether that sentence gets an amendment note.

Ask

  • Fix the skill sentence.
  • Raise the ADR note for Tier H review: amend it, or record that it stays as it is.

Reader: domain:skills (skill sentence); Tier H (ADR). Links: #30391, PR #30459.

Activity

  1. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p3 kept · domain:skills · 2026-11-05T13:03Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 5, 2026
  3. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk

    Claim: PM loop round 1 · 2026-11-05T23:03Z
    Session: session_016WV4d1mkgEris4MHHLjtnk
    Account: os-elon-musk (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-ki6fr1 (the card thread's designated branch; dev session session_016WV4cx4foyi3wUWBrRHCmF, amended by the seat)
    Worktree: objectstack-issue-30466
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/objectstack-data/SKILL.md (the Object Extension Model sentence ~L349, "an extension can add but never remove": the pluralLabel exception), one root .changeset/ file. ⛔ docs/adr/**: whether ADR-0029 D9.2 gets an amendment note is the maintainer's, raised by the seat, not edited here; ⛔ packages/** (stop on breach)
    Container & model: S, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: MANDATORY CONTRACT_REVIEW_TIER for skills/** clause ①; exit taken = the proactive low-headroom downgrade under the maintainer's standing posture of this project: develop on the default tier, the contract-review tier runs the final contract review; the compensating control is the seat's at-tier review before ACCEPT), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (a Skills-docs: follow-up of landed work)
    Thread-read: 6658700520
    Premise: holds: PR #30459 merged (the serial condition is met); L349 still reads "can add but never remove" on origin/main 788715ef
    Serial constraints cleared: none: no open PR touches skills/objectstack-data/** (open PRs read at claim time)

    Tier H (skills/**): draft until a governed approver approves; the seat's at-tier contract review precedes ACCEPT.


    Generated by Claude Code

  4. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-elon-musk · session_016WV4cx4foyi3wUWBrRHCmF
    os-dev-report

    {
      "issue": 30466,
      "status": "done",
      "branch": "claude/project-thread-ki6fr1",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30722",
      "session": "session_016WV4cx4foyi3wUWBrRHCmF",
      "premise_still_valid": true,
      "summary": "skills/objectstack-data/SKILL.md Object Extension Model keeps 'an extension can add but never remove' and names the one exception, read off origin/main packages/objectql/src/registry.ts mergeObjectDefinitions L916: a new label without pluralLabel clears the base plural unless a tenant authored it (set both). Token cost paid in the same file by deleting the Lifecycle Hooks pointer's duplicate link to references/data-hooks.md (already linked at L46 and L160). Changeset '@objectstack/skills': patch. ADR-0029 D9.2 untouched: docs/adr/0029-kernel-object-ownership-and-platform-objects-decomposition.md L472-473 reads 'mergeObjectDefinitions merges fields additively (...) and has no expression for *removal* at all.' -- for the seat to raise for Tier H.",
      "tests": "Docs-only diff; no behaviour changed, so no test or ablation applies. node scripts/check-skills-token-ratchet.mjs: objectstack-data/SKILL.md 6116 -> 6122 tokens (ceiling 6123, untouched), exit 0.",
      "gates": {
        "head": "a069bdb668",
        "derived": 44,
        "run": 40,
        "not_measured": [
          "pnpm check:dts-closure",
          "pnpm check:dual-build-cjs-loads",
          "pnpm check:lean-entry-closure",
          "pnpm check:sourcemap-no-sources-content"
        ],
        "not_measured_reason": "exit 3 PREREQUISITE NOT MET (whole-tree build); they read package dist output this docs-only diff does not change; CI measures them",
        "reconciliation": "44 derived famil(ies) accounted for — 40 run, 4 NOT-MEASURED",
        "record": [
          "node scripts/check-adr-0087-registration.mjs --base origin/main :: exit 0",
          "node scripts/check-adr-0087-registration.mjs --self-test :: exit 0",
          "node scripts/check-changeset-no-major.mjs --base origin/main :: exit 0",
          "node scripts/check-closing-keyword-parity.mjs :: exit 0",
          "node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0",
          "node scripts/check-comment-mask-corpus.mjs :: exit 0",
          "node scripts/check-doc-route-spelling.mjs --advisory :: exit 0",
          "node scripts/check-doc-route-spelling.mjs --self-test :: exit 0",
          "node scripts/check-dts-emitted.mjs --self-test :: exit 0",
          "node scripts/check-empty-changeset.mjs --base origin/main :: exit 0",
          "node scripts/check-empty-changeset.mjs --self-test :: exit 0",
          "node scripts/check-skills-token-ratchet.mjs :: exit 0",
          "node scripts/check-skills-token-ratchet.mjs --self-test :: exit 0",
          "node scripts/ci/assert-turbo-remote-cache.mjs --self-test :: exit 0",
          "node scripts/ci/plan-test-core-shards.mjs --self-test :: exit 0",
          "node scripts/ci/prune-turbo-cache.mjs --self-test :: exit 0",
          "node scripts/pm/release-rehearsal-clone.mjs --self-test :: exit 0",
          "node scripts/release-pending-publish.mjs --self-test :: exit 0",
          "pnpm --filter @objectstack/spec run check:skill-docs :: exit 0",
          "pnpm check:agent-test-spelling :: exit 0",
          "pnpm check:changeset-gate-self-tests :: exit 0",
          "pnpm check:ci-filter-parity :: exit 0",
          "pnpm check:closed-ceremony-text :: exit 0",
          "pnpm check:corpus-claim-drift :: exit 0",
          "pnpm check:cross-package-test-inputs :: exit 0",
          "pnpm check:doc-authoring :: exit 0",
          "pnpm check:driver-memory-census :: exit 0",
          "pnpm check:dts-closure :: exit 3",
          "pnpm check:dual-build-cjs-loads :: exit 3",
          "pnpm check:gitlink-declared :: exit 0",
          "pnpm check:lean-entry-closure :: exit 3",
          "pnpm check:merge-driver :: exit 0",
          "pnpm check:nul-bytes :: exit 0",
          "pnpm check:pm-governed-merges :: exit 0",
          "pnpm check:pm-skill-id-lint :: exit 0",
          "pnpm check:published-files :: exit 0",
          "pnpm check:refd-timer-probe :: exit 0",
          "pnpm check:role-word :: exit 0",
          "pnpm check:skill-compatibility :: exit 0",
          "pnpm check:skill-frame-sync :: exit 0",
          "pnpm check:skill-identifier-liveness :: exit 0",
          "pnpm check:sourcemap-no-sources-content :: exit 3",
          "pnpm check:watch-hint-literal :: exit 0",
          "pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0",
          "pnpm lint :: exit 0"
        ],
        "ci": "in_progress at report time"
      },
      "line_budget": {
        "file": "skills/objectstack-data/SKILL.md",
        "lines_before": 464,
        "lines_after": 465,
        "tokens_before": 6116,
        "tokens_after": 6122,
        "ceiling": 6123,
        "package_skill_md_lines_before": 4534,
        "package_skill_md_lines_after": 4535,
        "bundle_tokens_before": 226234,
        "bundle_tokens_after": 226240
      },
      "files_changed": [
        "skills/objectstack-data/SKILL.md",
        ".changeset/30466-extension-plurallabel-exception.md"
      ],
      "deviations": [
        "Ratchet payment is one deleted restated link in the Lifecycle Hooks pointer line (L340), outside the pinned sentence; the pin's 'no other skill text changes' cannot hold while paying by same-file deletion.",
        "The exception sentence also names the tenant-authored yield, per the seat note asking it to match registry.ts L916 exactly.",
        "Relay pr_create returned GitHub HTTP 500 twice (runs 42129047064, 42129086028; other seats saw 500s in the same minute); no PR was created by either (head query answered 0); the third send landed #30722.",
        "Session-context ask to assign and request review from os-elon-musk skipped: standing lines say no reviewers and os-dev says no PR assignees."
      ],
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "4 — fleet-write relay pr_create x3 (2 failed with HTTP 500, 1 landed #30722) + this os-dev-report comment via post-stamped",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "carrier: seat (Tier H maintainer) · ADR-0029 D9.2 L473 sentence noted, not filed"
      ]
    }

    Generated by Claude Code

  5. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk

    ACCEPT → PR #30722 comment 6672512391 (head a069bdb6), contract review PASS 6672290914. Tier H: awaiting a governed approver. ADR-0029 D9.2 (L472-473) amendment note raised to the maintainer in the ACCEPT's 维护者速读 ②; not edited here.

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:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions