Repository navigation
Description
Maintainer ruling (2026-08-10)
「同意」— ruling on the PM's proposal that execution cards live in the repo where the fix lands, with the existing transfer-lane stock migrated via GitHub issue transfer. Full ruling context and the standing-rule amendment are in #7165. This card does NOT wait for #7165's SKILL PR to merge — its authority is the maintainer ruling directly (same pattern as #6904); #7165 is the durable record.
Scope
All OPEN issues in objectstack-ai/objectstack labeled repo:objectui or repo:cloud, EXCEPT seam cards. Snapshot 2026-08-10: 47 repo:objectui + 2 repo:cloud (#6954, #5852) — re-enumerate at execution time; the two label queries are the authoritative worklist.
Seam criterion (stay in objectstack): the card's content is the cross-repo ordering itself — contract-first chains (a spec/contract change whose objectui/cloud adaptation must wait on an objectstack PR), console-bump linkage chores (#6162 family), anything whose Blocked-by line against an objectstack artifact is the substance. Test per card: would the body still make sense if objectstack did not exist? Yes = transfer; no = seam, stays. Blocked cards #7100 / #6955 / #6954 and any card carrying a Blocked-by on an objectstack issue/PR need this judgment individually; when in doubt, leave in place and note why.
Mechanics
- GitHub issue transfer within the org (GraphQL transferIssue mutation, e.g. via gh api graphql; the MCP toolset has no transfer tool). Requires issues enabled on target — they are.
- Thread, assignees and same-named labels carry over (pm:queue / finding / needs-user-decision / pm:blocked / target:v17 all exist in objectui and cloud). The repo:objectui / repo:cloud labels do not exist in the targets and are dropped automatically — correct, they are meaningless there.
- Transferred issues get NEW numbers; old URLs redirect permanently, so existing references keep resolving.
- Post-transfer checks: (a) spot-check open PRs whose bodies reference transferred numbers with closing keywords (Fixes #N) — repoint to the full new reference if the keyword must still auto-close; (b) verify no transferred card kept a dangling Blocked-by pointing at a same-repo shorthand number that now means something else — rewrite such lines to full owner/repo#number form.
Post-transfer grading
The objectui and cloud whole-repo seats grade the arrivals into their own backlogs — including the target:v17 four-class check per #6903's one-producer-per-backlog clause. Coordination with #6904 (objectui one-time v17 clearing): whichever of the two runs second must cover the transferred cards, and should say so in its completion comment.
Executor
Triage seat (transfer is a routing action — single-producer territory), with the sibling seats doing post-transfer grading. Audit comment on each transferred issue is not required (the transfer event itself is the audit trail); one summary comment on this card listing old-number → new-number pairs is.
No domain:* label on this card — routing is the triage seat's single-producer territory.
Activity
os-zhuang commentedon Aug 10, 2026
Routing:
domain:devxapplied directly by the PM session under the maintainer's standing directive (this session, 2026-08-10):「以后你应该直接路由」. Lane precedent: #6903.Note for the devx lane PM: per the body's executor clause, the transfer operations themselves are routing actions executed by the triage seat — this card sits in the devx lane for inventory and coordination. Do not dispatch a dev agent onto the transfers; the dispatchable remainder (if any) is the post-transfer reference-repair checks. The body's closing line ("No domain:* label applied") predates the directive and is superseded by this comment.
Session: 01JaVVMrSxt7Tgi1uwEuDtH7
Generated by Claude Code
os-zhuang commentedon Aug 10, 2026
Claim. Taken by the maintainer-facing PM session under the maintainer's direct-dispatch directive (2026-08-10):「7165、#7167 你直接帮我派发处理」.
Generated by Claude Code
os-zhuang commentedon Aug 10, 2026
Migration complete — 42/42 cards moved, 6 stayed by design. Closing as completed.
Deviation from the body's mechanics (recorded)
Native GitHub issue transfer is unavailable to this session's credential — the REST transfer endpoint returns 404 for fine-grained/app tokens (measured; other REST writes succeed). Executed as recreate-and-close instead: destination card = verbatim title + provenance header + original body with bare
#NNNreferences rewritten toobjectstack-ai/objectstack#NNN; every created body was byte-diffed against the transformed raw-API original (the MCP write path sanitizes angle-bracket fragments — five cards were repaired from raw-API ground truth and re-verified); source closed not-planned with a crosslink comment, thread retained there as authoritative history. No labels were dropped;target:v17survived on objectui#4044, objectui#4051 and cloud#1222.Old → new mapping (42)
Stayed in objectstack (6, seam criterion / in-flight guard)
permission.rowLevelSecurity.priorityis a retiredKey tombstone, but objectui's PermissionAdvancedFacets still types it and seedspriority: 0on every newly added RLS policy #7130, finding: liveness dashboard.jsonwidgets.actionUrlclosure claim ("Nothing anywhere readwidget.actionUrl") no longer measures true — objectui's widget config panel reads and authors the widget-level key #7129 —pm:dispatched, in flight; never transfer mid-dispatch, they exit via their PRs._unpublished; the App Switcher keeps filtering onhidden(#4829 A1 objectui half) #6955, cloud: the AI materialization path stamps_unpublished: trueinstead ofhidden: true(#4829 A1 cloud half) #6954 —pm:blockedseam cards; their objectstack halves (global_navaction location renders nowhere in the running app — the ⌘K palette never reads action metadata, but Studio previews a command-palette frame for it #6888, rest: filterAppForUser treats app hidden flag as builder-only access gate — built-in account app returns 404 for all normal users #4829-A1) are live cross-repo ordering.WidgetManifest/WidgetSource后,parity tripwire 按设计打红,packages/types/src/widget.ts的锚点注释指向不存在的名字 #6275 —pm:on-hold; restart condition sits on the objectstack side (ADR-0049 enforce-or-remove: ui/widget.zod.ts 全文件 + ui/i18n.zod.ts 五个形状实测无门(#4001 批 16 改判) #5055 parity tripwire).wherevspartial、枚举里的brin—— 阻塞 #4001 对 IndexSchema 的收紧 #5247 — reverse seam: it blocks in-flight objectstack#4001; moving it would break that Blocked-by shorthand.Notes for follow-up (small, non-blocking)
hotlong; the recreated objectui#4051 has no assignee — re-claim if that assignment was live.Post-transfer grading of arrivals now falls to the objectui / cloud whole-repo seats per #6903's one-producer-per-backlog clause (labels carried over, so the cards are already in their local state machines). Standing rule lands via #7165 / PR #7185.
Session: 01JaVVMrSxt7Tgi1uwEuDtH7
Generated by Claude Code
os-zhuang commentedon Aug 10, 2026
Arrival-grading coverage statement (per this card's coordination clause with #6904 — the migration ran second, so the transferred cards'
target:v17four-class check is declared here).All 42 arrivals graded on 2026-08-10 under the maintainer's directive 「objectui 任务你帮我现在执行 v17 补判」:
DashboardWidget.chartConfig在 dashboard 元数据面只有showLegend落地 —— 12 个已声明键里 11 个惰性,liveness 台账那一行高估了证据 #5175), objectui#4051 (ex Conditional-visibility predicates (visibleWhen/visibleOn) fail OPEN and silently — a broken predicate is indistinguishable from no predicate #5149), cloud#1222 (ex ADR-0057 hierarchy DEPTH: the resolver's tenant isolation never engages — plugin-sharing passesorganizationId: nullwhile the active org rides intenantId#5852) — board labels survived the migration.body发布为设计器槽;page:section/footer/sidebar 三个注册项没有 inputs,设计器无法授权 children #6325 — designer registry still publishes the retiredbodyslot) and objectui#4041 (ex object-grid 的 inputs 声明filters(复数),渲染器只读filter(单数):按已发布词汇写筛选条件静默无效 #7119 — publishedfiltersvocabulary silently ineffective; also a decision card, so the ruling is board-priority).Grid/Galleryswitcher,Avg:/Sum:aggregate footer) and the form dialog's a11y fallback text are hardcoded English #5084/Console:AddressFieldsub-labels and placeholders are hardcoded English literals — an address field is untranslatable on any non-English console #5083/Analytics surfaces resolve select-option labels but never apply the i18n bundle — reports and dashboards show English while lists and forms show the translation #5076/Console: number cell/display renderers hardcode a groupingIntl.NumberFormat('en-US')— an ordinalField.number(a year) always renders2,026, and no field property can turn it off #5067/Record activity feed prints the untranslated English field label and the raw lookup ID (Rating Owner: ∅ → oBK25BVuz…) #5142/Report charts render the raw dataset measurenameas the axis title, ignoring the measure'slabel— the same measure on a dashboard chart resolves correctly #5141 …), tooling/lint gates, observations/findings, adaptation and feature cards all stay off by the standing default (improvements, refactors, observations, internal tooling, cosmetic polish do not block). No full objectui rescan was run — incremental-only posture respected.objectui local board after this pass: 8 open
target:v17; cloud: 1.Session: 01JaVVMrSxt7Tgi1uwEuDtH7
Generated by Claude Code
os-zhuang commentedon Aug 10, 2026
Correction to the arrival-grading comment above: the board figures I quoted were an estimate, not a measurement.
I wrote "objectui local board after this pass: 8 open
target:v17; cloud: 1". The objectui figure was never measured — I asserted it from arithmetic on the pass rather than querying the label. Measured at 2026-08-10 ~05:00Z,label:target:v17 is:openper repo:ActionDef's[key: string]: anyabsorbs every retired and misspelled action key — removing a spec key produces no compile error #4075, fix(driver-sql,service-analytics): bare-day upper bounds cover the whole day on Field.datetime (#3777) #4041, feat(runtime): route ledger + conformance guard for the dispatcher↔client surface (#3563) #3569, fix(create-objectstack): ship a .gitignore in scaffolded projects #3129_unpublished; the App Switcher keeps filtering onhidden(#4829 A1 objectui half) #6955, cloud: the AI materialization path stamps_unpublished: trueinstead ofhidden: true(#4829 A1 cloud half) #6954,global_navaction location renders nowhere in the running app — the ⌘K palette never reads action metadata, but Studio previews a command-palette frame for it #6888, finding:/meta/_draftsserves DRAFT object schemas unmasked — the one ADR-0106 outlet left uncovered #6599, objectui 配套:#5055 退役 spec 的WidgetManifest/WidgetSource后,parity tripwire 按设计打红,packages/types/src/widget.ts的锚点注释指向不存在的名字 #6275Three of the arrival-pass marks are legitimately no longer on the open board, and none of it is a labeling failure:
target:v17removed by the objectui whole-repo seat and was moved topm:on-hold— that seat is this backlog's board producer per pm-dispatch SKILL: give the objectui local backlog its own target:v17 producer (release-board coverage gap) #6903, so this is its call, correctly exercised.Also note the objectstack board fell 14 → 6 over the same window: the five finding-triage promotions marked this morning (#7130, #7129, #7057, #7049, #6964) all landed and closed.
The grading itself stands as reported; only the summary count was wrong. Recording the correction here rather than editing the comment, so the error stays visible.
Session: 01JaVVMrSxt7Tgi1uwEuDtH7
Generated by Claude Code
docs(pm-dispatch): issues live where the fix lands — narrow repo:* to…