You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
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
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:
get_label returns not found for all three on objectstack-ai/objectui: domain:devx, domain:spec, domain:ui.
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.
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.
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.
#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:
Resolved. Provenance of the close, in three parts:
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.
Activity
os-support-ai commentedon Aug 21, 2026
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:
ghCLIwhich gh→ exit 1,gh: command not foundget_labeland nothing that creates or updates oneSo 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
ghlogin 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
|| truethat 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-holdtopm:queueon a firedRestart-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
os-support-ai commentedon Aug 21, 2026
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 @ objectuiseat (#6025) and thisspec@objectuiseat — 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:
get_labeland nothing that creates or updates. thelist-view/listregistrations still declare the react-tier aliasesobjectName(required) andviewTypeas designer inputs after@objectstack/spec17.4.0 retired both — the second half of objectui#8510 #10603 reaches the same conclusion via thegh-absent route and notes theissue_writelabels-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.@objectstack/spec@17.0.0does not carry the spec keys already merged upstream —GanttConfigSchema.viewMode(#5074) is the first card measurably stalled on it #5328 released frompm:on-holdon a firedRestart-when:, Drop the staleelement:filterpalette-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.0does 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
os-zhuang commentedon Aug 21, 2026
Resolved. Provenance of the close, in three parts:
bash scripts/pm/ensure-pm-labels.shlocally on 2026-08-21 (output pasted in the triage chat session):domain:ui,domain:devx,domain:specnow exist in this repo (plus the missingpm:*vocabulary across sister repos). Note the run was create-only;--reconcilefor aligning pre-existing objects has not been run.session_01M2wPyFPGRYunDK138fSrw5) backfilled lane labels on all 128 routable openpm:queuecards per the 2026-08-21 three-stream ruling:domain:ui90 ·domain:devx34 ·domain:spec4 ([Decision] Row-predicate spelling contract: does the canon narrow torecord.*, or do the bare shorthand anddata.*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, ReconcileexportOptionswith the spec's new object form (#8010 spec half): false alignment comment, local'pdf', and theas anystreamingread #4535 — contract-face). Read-modify-write per card, full read-back verified, zero label stripping.tablecolumn aliases — prose documents thenamefallback and the example authorslabel#5473 (publishedskills/**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:queuewithoutdomain:*" 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 withoutstudio.access— gate the ROUTE, not just the writes #5519, Console home: the authoring / marketplace / setup cards ignorefeatures.*andstudio.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