Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

The three objectui stream labels ruled on 2026-08-21 were never created as label objects — every queue card in this repo is unroutable, and the spec/devx lanes read this repo as empty #5491

Closed

Description

@os-support-ai

The 2026-08-21 maintainer ruling (「按 domain:ui 定稿」) streams this repo's workload by the domain of the surface a fix lands on: domain:devx (engineering face) and domain:spec (contract face) reuse the existing cross-repo lane names, domain:ui is the one new label for the objectui execution seat. The ruling landed in the docs and in the label script. The label objects were never created, so the routing it describes does not exist on GitHub yet.

Measured (2026-08-21T04:57Z)

Two independent readings agree:

  1. get_label returns not found for all three on objectstack-ai/objectui: domain:devx, domain:spec, domain:ui.
  2. list_issues on this repo, labels: [pm:queue], state: OPEN → 143 open queue cards, zero of which carry any domain:* label.

Counter-check for the zero-hit: the same query with a known-present term (pm:queue) returns the full 143, so the repo and the label filter path are both reachable — the zero is real, not an API artifact.

Why this is a blocker, not a cosmetic gap

The lane seats read their queue by label. With no label objects:

  • A domain:spec lane round scoped to this repo reads its queue as empty rather than unlabelled — the two are indistinguishable from the seat's side, and "empty" is the reading that makes the seat self-retire. The same holds for domain:devx.
  • The objectui execution seat's candidate query (the named consumer of domain:ui) has nothing to match.
  • Applying any of the three names by hand right now would auto-create a grey, description-less label object, which the script's default create-if-missing mode can never repair afterwards (only --reconcile can).

The two steps, in order

Step 1 — create the vocabulary. The three rows already exist in scripts/pm/ensure-pm-labels.sh (objectstack) and have simply not been run against this repo. It is idempotent and safe to rerun:

bash scripts/pm/ensure-pm-labels.sh

Where only the GitHub MCP tools are available, mirror the three gh label create rows through them — the script states the protocol is identical. Colour bfd4f2 and the exact descriptions are in the script; do not improvise them, or step 1 leaves drift that only --reconcile can fix.

Step 2 — stream the existing backlog. The script is explicit that this is not its job: "Streaming the existing objectui backlog is a triage duty once the vocabulary lands — by file-path evidence, never guessed — not this script's." 143 open queue cards need a stream label each, assigned by the file surface the fix lands on, never by symptom location; docs cards follow the surface they document. Cards whose landing surface is undetermined stay unstreamed for triage first-touch rather than guessed.

Named reader

The triage seat ([PM seat] triage (objectstack-wide), objectstack#6015) — five-repo mandate, sole producer of domain:*, and the party the script names for step 2. Step 1 needs only label-write credentials and may be done by whoever holds them at a round start.

Re-check commands

Re-run these before acting; do not carry this card's readings forward as fact.

  • Vocabulary present? gh label list -R objectstack-ai/objectui | grep -E '^domain:(devx|spec|ui)' — expect 3 rows.
  • Backfill progress? gh issue list -R objectstack-ai/objectui --label pm:queue --state open --json number,labels --limit 200 — count the entries carrying no domain:*; expect that count to fall to the genuinely-undetermined residue.

Provenance

Filed by the domain:spec execution seat running /pm-dispatch objectui 仓库 spec 车道 at 04:57Z. That round self-retired without dispatching, on two grounds: the seat-mutex read (the domain:spec seat post, objectstack#6017, carries an R1 open marker from a different session opened 04:54Z, under one round old) and this structurally-invisible queue. No card in this repo was claimed, labelled, or dispatched by that session.

Duplicate check before filing: semantic search over both objectstack-ai/objectui and objectstack-ai/objectstack for an existing card on the missing stream vocabulary returned nothing open.

Activity

  1. os-support-ai commented on Aug 21, 2026

    @os-support-ai
    CollaboratorAuthor

    Correction to step 1: it is not executable from an agent session here

    This card's step 1 repeated the script's instruction — "Where only the GitHub MCP tools are available, mirror these creations through them — the protocol is identical." Measured, that instruction does not hold in this environment. Two readings:

    capability reading
    gh CLI absent — which gh → exit 1, gh: command not found
    GitHub MCP label tools read-only — the server exposes get_label and nothing that creates or updates one

    So there is no path from an MCP-only agent session to creating the three label objects. This is not a permissions refusal that a retry or a different seat would clear — the write verb does not exist in the toolset.

    Consequence for who can do step 1: not "whoever holds label-write credentials at a round start", as the script's framing implies, but specifically someone with a gh login or a REST token — in practice the maintainer, or a session provisioned with the CLI. Any agent seat that reads the script and assumes it can mirror the rows will silently do nothing.

    Worth noting because it is the same failure shape the script already documents one level down: the || true that makes the creates idempotent also swallows an over-long -d, so a label "is NEVER created … silently, and a rerun can never repair it". Here the swallowing happens one step earlier — the agent cannot issue the call at all.

    Step 2 (streaming the backlog by file-path evidence) is unaffected and remains the triage duty; it only needs the vocabulary to exist first.

    Not blocking everything, as it turns out

    Filed alongside this card's original framing was the implication that the lane is wholly frozen until the vocabulary lands. That is too strong, and the round that filed it has since proved otherwise: the unlock scan is label-independent, and it produced real state changes today — #5328 released from pm:on-hold to pm:queue on a fired Restart-when:, and #4935's stale blocker pointer corrected. What the missing vocabulary blocks is routing and claiming, not measuring. Standby duties that read cards and verify conditions continue to work.


    Generated by Claude Code

  2. os-support-ai commented on Aug 21, 2026

    @os-support-ai
    CollaboratorAuthor

    Closing as a duplicate of objectstack-ai/objectstack#10603

    #10603 is the surviving card. It states the same two ordered steps, names the same reader (the triage seat, #6015), and gives the same executable criterion — and it is already triage-graded (pm:queue + domain:skills), which this one is not. Two open cards for one problem is exactly the shape no gate can see, so this one goes.

    Why both exist — not a dedup failure, a genuine collision

    This card was filed at ~05:02Z after duplicate-searching both repos. #10603 was filed at 05:08:56Z, roughly six minutes after that search ran. Two seats — the domain:ui @ objectui seat (#6025) and this spec@objectui seat — independently hit the same wall within minutes and each filed. Neither search could have seen the other's card.

    Worth recording because it is the twin-card failure mode the report contract warns about, arriving through seats rather than devs: concurrent seats measuring the same blocker produce near-simultaneous duplicates, and nothing mechanical catches it. What caught it here was reading the triage seat's round summary, which listed both.

    What this card measured that is worth carrying over

    #10603 already covers the substance. Two readings from here that sharpen it, for whoever picks it up:

    1. The GitHub MCP server has no label-write verb at all — it exposes get_label and nothing that creates or updates. the list-view / list registrations still declare the react-tier aliases objectName (required) and viewType as designer inputs after @objectstack/spec 17.4.0 retired both — the second half of objectui#8510 #10603 reaches the same conclusion via the gh-absent route and notes the issue_write labels-array side effect as the only available mechanism (and correctly refuses it, since it mints a grey, description-less label that create-if-missing can never repair). Both paths are closed; the two cards agree.
    2. The blocker is narrower than "the lane is frozen". Missing vocabulary blocks routing and claiming, not measuring. Standby duties that read cards and verify conditions keep working — demonstrated on this lane today: The locked @objectstack/spec@17.0.0 does not carry the spec keys already merged upstream — GanttConfigSchema.viewMode (#5074) is the first card measurably stalled on it #5328 released from pm:on-hold on a fired Restart-when:, Drop the stale element:filter palette-exclusion entry and the stale elements.tsx comment once the spec pin passes the #9220 retirement #4935's stale blocker pointer corrected, and The locked @objectstack/spec@17.0.0 does not carry the spec keys already merged upstream — GanttConfigSchema.viewMode (#5074) is the first card measurably stalled on it #5328 then claimed and dispatched under a direct maintainer instruction.

    Both seats independently declined to mint the labels themselves, on the same grounds: domain:* has one producer and it is not an execution seat.

    ⛔ No state on this card is being carried anywhere else — #10603 was already complete before this comment.


    Generated by Claude Code

  3. os-zhuang commented on Aug 21, 2026

    @os-zhuang
    Contributor

    Resolved. Provenance of the close, in three parts:

    1. Label objects created — the maintainer ran bash scripts/pm/ensure-pm-labels.sh locally on 2026-08-21 (output pasted in the triage chat session): domain:ui, domain:devx, domain:spec now exist in this repo (plus the missing pm:* vocabulary across sister repos). Note the run was create-only; --reconcile for aligning pre-existing objects has not been run.
    2. Backlog routed — the triage seat (session session_01M2wPyFPGRYunDK138fSrw5) backfilled lane labels on all 128 routable open pm:queue cards per the 2026-08-21 three-stream ruling: domain:ui 90 · domain:devx 34 · domain:spec 4 ([Decision] Row-predicate spelling contract: does the canon narrow to record.*, or do the bare shorthand and data.* spellings stay? (the uncarried "#4075 step 3" question) #5330, Migrate the remaining ListView legacy vocabulary to spec-canonical keys, and audit ObjectView/DetailView (#2231 phases 4–5) #2890, [design] Field runtime value-shape as a first-class contract (spec-owned), typed action handlers, and file-as-reference #2731, Reconcile exportOptions with the spec's new object form (#8010 spec half): false alignment comment, local 'pdf', and the as any streaming read #4535 — contract-face). Read-modify-write per card, full read-back verified, zero label stripping.
    3. Deliberately not routed — The published skills corpus teaches the retired table column aliases — prose documents the name fallback and the example authors label #5473 (published skills/** corpus): its lane ownership is the undecided key-path item flagged on the seat post; routing it would be a guess. Cards in other states (needs-user-decision, pm:blocked, pm:on-hold, dispatched) get their lane at next touch per normal triage flow, and "pm:queue without domain:*" is now a mechanically sweepable half-state shape in this repo — new arrivals (e.g. Console: /_console/studio/* renders the pillar builder to a principal without studio.access — gate the ROUTE, not just the writes #5519, Console home: the authoring / marketplace / setup cards ignore features.* and studio.access — two of them contradict a flag the server already sends as false #5521, filed mid-backfill) will be caught by the standing sweep.

    The spec/devx lanes no longer read this repo as empty. Closing as completed.


    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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions