Skip to content

[Epic] v17 bug focus — Seat B: console bugs (objectui + repo:objectui) #8668

Description

@hotlong

Theme charter for the post-v17 priority regime — sibling of #8667 (Seat A: platform bugs). Filed by the (former) skills PM seat, session session_018WuTtyckQa1VcXwgd52JpN, on maintainer instruction. Authority rulings are quoted verbatim on #8667 and apply to both seats identically (scope = objectstack + objectui only; marker = target:v17; epics ordered by 「把两张主题卡(epic)开出来」).

Scope

The console/UI surface, spanning two trackers:

  1. objectui repo — all open bug-labeled cards (9 at filing): metadata-admin declares an object "provided by an installed package, so it is read-only" even in a writable package — Studio treats the same object as editable and the server accepts the PUT objectui#4308, feat(plugin-hono-server)!: 删除 CRUD/discovery 便利面 —— 插件回归纯传输适配器(#4073 终点) #4296, 补上 defineHook():hook 的作者侧工厂(defineDatasource 范式),并修正 object.zod.ts 两处引用不存在函数的错误处方 #4269, fix(rest): GET /data/:object/export honours a search term #4230, docs(adr): ADR-0105 status flip — Phase 2 D8/D9 implemented; D8's role channel closed by ADR-0108 #4028, fix(driver-sql): Field.time 规范化存储 — HH:MM:SS[.fff] 墙钟文本,三方言统一 (#3994) #4020, docs(adr): ADR-0102 D3 (precompile WASM) — DEFERRED after API verification (#3297) #3318, plus the two already marked dispatched (fix(runtime,rest): advertise mcp only when it is actually serveable #4032, fix(i18n): clear the accumulated drift in the generated translation bundles #3670 — see orphan re-verification below).
  2. objectstack repo — open bugs/P0s labeled repo:objectui: 详情页**页头动作**的 visible CEL:当前用户与 lookup 字段比不出来,且求值抛错静默 fail-open —— RecordDetailView 的求值面没被 #5149 的响亮化覆盖(17.0.0-rc.6) #8500, userActions.edit.visibleWhen 对详情页页头内建【编辑】不生效 —— 同一份声明里 delete 生效、edit 不生效(17.0.0-rc.6) #8499, console: accept-invitation page names neither the organization nor the role — the routed implementation is the thin duplicate, while the detailed one ships unrouted #8282, [finding] single-org users have no UI path to the workspace manage pages — the ?manage=1 avatar-menu entry the code describes does not exist #8096, [finding] workspace owner lacks manage_metadata in the EE multi-org deploy, but 构建应用 is a primary home CTA — dead-ends at submit #8270, recordIdField is not harvested into the grid's $selectsys_session "Revoke Session" reports success and revokes nothing #8018.

Workability rule is the same default flip as #8667: only target:v17 cards are workable; the PM nominates second-batch candidates on this epic and the maintainer approves before they enter the queue.

First batch (pending the maintainer's P0 rulings)

Before dispatching anything — two mandatory pre-work items

  1. Re-verify the 8 orphaned pm:dispatched cards in objectui (the repo:objectui lane seat, [PM seat] repo:objectui — 🟢 yinlianghui #6025, has been silent since 2026-08-10; its dispatches are unaccounted for): chore: raise the @objectstack/spec pin from ^17.0.0-rc.6 to 17.0.0 GA (lockfile resolution + green-keeping adaptations) objectui#4636, Import dry run green-lights a row the write then rejects: structured value shapes (address / location) are not pre-checked #4633, fix(runtime,rest): advertise mcp only when it is actually serveable #4032, fix(i18n): clear the accumulated drift in the generated translation bundles #3670, feat(plugin-hono-server): registerStandardEndpoints 默认翻 false —— 便利面改为显式 opt-in(#4073 第一步) #4280, feat(core,runtime): plugin ordering is a declared, kernel-enforced contract (ADR-0116, #4131) #4163, fix(spec,service-analytics): the matrix's token axis + its sixth consumer, and the dropped $between it found (ADR-0053 D-A3.1) #4109, docs(adr): propose ADR-0114 — layered master data: group template rows and organization overrides (ADR-0105 D10) #4036. loadMetaFromDb object branch reads record.packageId from a snake_case row — always undefined, every object overlay registers under the 'sys_metadata' sentinel at boot #4636 first — it raises the @objectstack/spec pin from ^17.0.0-rc.6 to 17.0.0 GA. Until it lands, every console-side bug verification runs against rc.6, so it gates the whole theme.
  2. Grade the bare-card backlog the triage seat flagged three consecutive rounds (memo on [PM seat] repo:objectui — 🟢 yinlianghui #6025, 2026-08-13T05:54Z): 7 ungraded cards in objectui including feat(spec,lint)!: give bulkActionDefs a shape, and lint the aggregate name it references #4508 (needs-user-decision — chart null-category identity collisions, pending a maintainer sentence), datasource 是注册的 metadata type,却不在 liveness 账本的 GOVERNED 里 —— 两个 PR 手工挖出 6 个死键,正是因为没有闸门看着它 #4487, 读副本路由(read/write splitting):真要做的话,从查询路径开始,而不是从 datasource 上加个字段(#4468 移除 readReplicas 后的正式立项位) #4479. Grade for one question only: is it a v17 bug? If yes, nominate for target:v17; if no, freeze.

Operating rules

Identical to #8667: WIP ≤3; pull order priority:p0 > pm:blocking > security > age; bug-fix PRs ride the normal merge queue with auto-merge allowed (objectui repo conventions and worktree-first per its own AGENTS.md/CLAUDE.md); claim discipline, os-dev dispatch protocol, model tiering, union-after-final-commit with quoted HEAD all unchanged. Round reports on this epic; the lane seat post #6025 stays ⏳ vacant and points here; the PM session registers with a claim comment and de-registers on stand-down.

Done means

Every in-scope target:v17 bug is closed (fixed, or ruled defer/void with the ruling recorded); the four console P0s carry an explicit maintainer disposition; the 8 orphaned dispatches are each closed out or cleanly re-dispatched; the 7-card grading backlog is zero.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions