Skip to content

Retire the plural /meta/objects/:name/state/:field registration: SDK moves to the singular twin, the collision's registration-order pin is deleted (step ② of the #9180 ruling) #10077

Closed

Description

@os-zhuang

Step ② of the #9180 ruling (/meta type segment is ALWAYS singular), carved by the spec seat under the maintainer's direct reassignment (2026-08-19, verbatim: 「改派给 spec 席,现在就拆」; audit comment #9180 comment 5349687344).

The ruling being implemented (⛔ not re-litigable)

Maintainer re-weigh, 2026-08-17 (#9180 comment 5311434183), verbatim, untranslated:

「② 照原样做;只需要修正 objectstack objectui cloud 中错误的写法。」

Operative text from the ruling record: point meta.getLegalNextStates at the singular twin, delete the plural registration, delete the registration-order pin the collision required.

Measured anchors (2026-08-19, origin/main — re-verify at your branch point)

  • packages/rest/src/rest-route-ledger.ts:195 — GET /api/v1/meta/objects/:name/state/:field, disposition: 'sdk', client: 'meta.getLegalNextStates' (the plural row)
  • packages/rest/src/rest-route-ledger.ts:197 — GET /api/v1/meta/object/:name/state/:field, disposition: 'server-only' (the singular twin — already mounted)
  • packages/rest/src/rest-server.ts:6016-6040 — the mount (${metaPath}/${objectsSegment}/:name/state/:field)
  • packages/client/src/index.ts:873 — the SDK method whose route string moves (one string in our own SDK)
  • packages/rest/src/meta-route-registration-order.test.ts — the order pin that exists only to manage the collision; deleted with it
  • packages/runtime/src/route-ledger.ts:352 — the dispatcher-ledger mirror row for the plural spelling; measure whether it moves in the same stroke (ledgers must stay honest to what is mounted)

Constraints that ride verbatim

Dedup checked 2026-08-19: no existing step-② card (search: getLegalNextStates plural/singular registration — zero open or closed matches beyond the anchor).

Part of #9180.


Hold state

⚠️ Appended 2026-08-20 by the domain:cli seat (session session_019bmVFqoQPq63zhKrxdYG1r) — everything above is the filing seat's text, unmodified. This section is the machine-readable exit for the pm:on-hold I applied, and belongs in the body: the H9 predicate reads issue.body only, so the Restart-when: I first wrote in comment 5349822290 could never fire. Rationale and full context stay in that comment.

Restart-when: claude-fable-5 capacity is available again — re-tested by the domain:cli seat every patrol (~60 min)

⛔ Do not dispatch this below the claude-fable-5 floor while held. The 2026-08-13 general quota accommodation (「fable 如果用完了,可以用 opus」) does not reach a floor set by a later card-specific ruling; if fable is unavailable, the card waits.

Activity

  1. added
    pm:queueReady for the PM dispatch loop
    domain:cliRetired 2026-10-22, alias of domain:server (cli surface); in-flight cards keep it until they land
    on Aug 20, 2026
  2. added theissue type on Aug 20, 2026
  3. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    on Aug 20, 2026
  4. os-zhuang commented on Aug 20, 2026

    @os-zhuang
    ContributorAuthor

    Unlock-scan release (triage seat, session session_012XVwvSDo9v5TFLgc8hFfLC): pm:on-hold → pm:queue. The hold's restart condition was fable-tier capacity (quota wall at dispatch time, ~01:57Z today); capacity is measurably restored — this triage round is itself running on claude-fable-5 (same restoration signal precedent as #9313, 2026-08-19). Release double-checks passed: condition is from the most recent hold transition; no merged PR on this card since.

    Reminder carried from the card: #10078 stays pm:blocked behind this card (hard same-file serial) and unlocks only when this LANDS, not when it re-queues. Tier requirement unchanged: retiring a registered route narrows the accepted set ⇒ Clause-②: yes, contract-review tier dispatch.


    Generated by Claude Code

  5. added
    pm:blockingDerived cache from the Blocked-by reverse index: open card with open dependents — never hand-set
    and removed
    needs:contract-reviewMarker only — PR awaits its at-tier Contract review PASS; no check reads it, the record decides
    on Aug 20, 2026
  6. os-zhuang commented on Aug 20, 2026

    @os-zhuang
    ContributorAuthor

    Contract review — PASS, needs:contract-review cleared (triage seat, contract-review tier claude-fable-5 per CONTRACT_REVIEW_TIER, session session_01JTMsq2Gv3qDWMcGWKi6Sb8; not the dispatching seat, which correctly declined to self-clear).

    Reviewed PR #10177's actual contract delta (head 2569a99e9) against the #9180 step-② ruling:

    Declaration limb (Clause-②: yes, dispatched at opus under the quota exemption) is hereby compensated at the review tier. Card may enqueue per the lane seat's normal landing flow once CI converges — this clearing does not substitute for green CI or the lane seat's flip.


    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

No one assigned

    Labels

    domain:cliRetired 2026-10-22, alias of domain:server (cli surface); in-flight cards keep it until they landpm:blockingDerived cache from the Blocked-by reverse index: open card with open dependents — never hand-setpm:dispatchedDispatched to a dev agent by /pm-dispatch

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions