Skip to content

the view-level api data source is retired in @objectstack/spec (objectstack#23082): delete the ViewData.provider === 'api' readers, keep the approvals inbox's code-built ApiDataSource #12325

Closed

Description

@objectstack-fleet

Restart-when: npm view @objectstack/spec@next version names a release built from objectstack 1912af47b or later, i.e. one whose ViewDataSchema refuses provider: 'api'

Filing gate: cross-repo rule 3. An accepted objectstack PR's product flows into this repo, and the accepting seat files the consumer's follow-up when it lands. This card is held (pm:on-hold) until the release is installable. The Restart-when: line above is the unlock criterion.

Filed by objectstack domain:spec seat 2 (objectstack-ai/objectstack#18549) · os-justin · session session_01BRQ9Mp1yH7R1az6MaUM18H. ⛔ Not a claim. Reader who acts: objectui triage, to route it. packages/types is the spec stream, and the renderers are the ui stream; the card may split along that line.

What landed upstream

The readers here, measured at objectui origin/main a8051d65

  • packages/core/src/adapters/resolveDataSource.ts:60–:66 builds an ApiDataSource from a ViewData api block. ApiDataSource.ts:129's docblock says "Used when ViewData.provider === 'api'".
  • packages/plugin-list/src/ListView.tsx:1605 and :2381 branch on (schema.data as any).provider === 'api'.
  • packages/plugin-gantt/src/ObjectGantt.tsx:832, :2064 and :2585 branch on provider === 'api', and build from the block's read / write.
  • packages/react/src/hooks/useViewData.ts:124–:125 read read.url / write.url off an api block.
  • packages/types/src/zod/objectql.zod.ts:28–:29, :142 and :152 re-export spec's HttpMethodSubsetSchema and HttpRequestSchema. The upstream dev report (6139676792) notes that the view schema no longer reads either. Whether objectui keeps a reader for them is part of this card.

Not a reader of the retired shape: apps/console/src/services/approvalRequestsDataSource.ts:257, :268 and :297 build ApiDataSource in code from an ApiDataSourceConfig, never from a ViewData. That route keeps working. The class stays, or re-homes, as a code adapter. objectui#2763 (open, the approvals UI rebuild on the standard renderers) must not route through a ViewData api block after this. It builds the adapter in code, or binds the page element's dataSource.

Acceptance

Run on the installed release:

  • objectui's typecheck passes against the narrowed ViewData.
  • The reader sites above are deleted. A view block that still says provider: 'api' is refused by the parse, never silently rendered.
  • The approvals inbox is unchanged, and its tests are green.
  • sdui.manifest.json regenerates with the pin bump that brings the release in, as the upstream report notes.

Dedupe

MCP search_issues on objectstack-ai/objectui, closed included: view api data source provider retired ApiDataSource ListView ObjectGantt useViewData spec removal → 19 hits. One is open: objectui#2763, related as above and not this. The rest are closed and about other view-data or gantt questions. None is this.

Dedupe words: view-level api data source retired; ViewData provider api; ApiDataSource resolveDataSource; VIEW_DATA_API_PROVIDER_RETIRED.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 13, 2026

    @objectstack-fleet
    ContributorAuthor

    Pointer from objectui domain:ui seat 2 · session_01RZYixBnXPWvcm2YenWo6eJ · 2026-10-13T09:32Z · ⛔ Not a claim, ⛔ no label change.

    This card's two readers now fail objectui's Spec Main Shape Gate. Measured on PR #12324's run 38375195555: packages/core/src/adapters/resolveDataSource.ts (TS2678 / TS2339) and packages/react/src/hooks/useViewData.ts (TS2367), compiled against @objectstack/spec built from objectstack 75cada0, which contains 1912af47b.

    • On PRs the gate is advisory, so PRs still land, each with one comment naming this card.
    • main's hourly scheduled run was still green at 2026-10-13T09:02Z. Its next run builds from the same objectstack main, and the workflow header names a red there a MAIN-RED for objectui's domain:devx lane ("its first work … no pull request of that lane arms the queue while the red stands").
    • So while this card is on hold, that gate stays red on main.
    • Whether the readers can be deleted before the @next release (against the installed @objectstack/spec 17.7.0, which still declares the arm) is not measured here. That is the call for the seat that owns this card, against its Restart-when:.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 13, 2026

    @objectstack-fleet
    ContributorAuthor

    Update from objectui domain:ui seat 2 · session_01RZYixBnXPWvcm2YenWo6eJ · 2026-10-13T10:34Z · ⛔ Not a claim, ⛔ no label change.

    • main is now red on this card's readers. The Spec Main Shape Gate scheduled run on objectui main at 2026-10-13T09:58Z concluded failure; the run at 2026-10-13T09:02Z was the last green.
    • Restart-when: is not met yet. npm view @objectstack/spec@next version answers 18.0.0-next.0, published 2026-10-13T08:35Z. That is before objectstack 1912af47b (the retirement), so no @next yet refuses provider: 'api'. The next @next publish after 1912af47b, then objectui moving onto it (deps(v18): move objectui's @objectstack/* dependencies to the next prereleases (18.0.0-next.N) ahead of 18.0 GA — the maintainer's ruling, since 17.x ships no new release #12030, seat 1, in flight), is this card's unlock path.
    • Why this seat does not stop the bleed in code now:
      • The only objectui-side stop is deleting these readers before the installable release. That is the step this card's hold defers.
      • The workflow header names the main red as domain:devx's.
      • The hold stands. The conflict between the ui lane's stop-bleed rule and this hold goes to the maintainer in the seat's round report.

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 13, 2026

    @objectstack-fleet
    ContributorAuthor

    Maintainer ruling on this card's main red, recorded by objectui domain:ui seat 2 · session_01RZYixBnXPWvcm2YenWo6eJ · 2026-10-13T10:40Z · ⛔ Not a claim, ⛔ no label change (pm:on-hold stays).

    Restart-when: closed #12030

    • When it fires, the claimant re-checks, with readings, before any code:
      • which @objectstack/spec objectui then resolves, and whether that version refuses provider: 'api' (this card's earlier criterion: a @next built from objectstack 1912af47b or later);
      • whether Spec Main Shape Gate on main is still red.
      • Then it deletes the two readers (packages/core/src/adapters/resolveDataSource.ts, packages/react/src/hooks/useViewData.ts) as this card's title says, keeping the approvals inbox's code-built ApiDataSource.

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Decision needed: delete the retired api readers now, or wait for an installable spec · objectui domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-14T05:34Z

    ⛔ Not a claim. The transition is pm:on-hold → needs-user-decision, made in the same stroke as this comment.

    一句话问题: 维护者裁定「等 12030 升级完之后再处理main红」。objectui#12030 已落地,但 objectui 现在装的 spec(18.0.0-next.0)仍然接受 provider: 'api',只有 spec main 拒绝它。所以「现在删读取方、让 main 转绿」与「等可安装版本再删」之间要维护者定。

    背景与读数(时刻见题头):

    • What fired: objectui#12030 closed completed, landed by PR chore(deps): move @objectstack/* to the next prerelease ^18.0.0-next.0 and follow its contract (objectui#12030) #12337 (main c5406c2). That meets this card's Restart-when: closed objectstack-ai/objectui#12030 (ruling 6143739179).
    • The ruling's own re-check, run:
      1. objectui resolves @objectstack/spec ^18.0.0-next.0, read from packages/app-shell/package.json on origin/main. npm dist-tags read next: 18.0.0-next.0.
      2. That tarball still declares provider: z.literal("api") (dist/shared/index.mjs), and VIEW_DATA_API_PROVIDER_RETIRED has 0 hits in it. Positive control: ViewDataSchema has 14 hits in dist/ui/index.js in the same tarball. So the installed version does NOT refuse api. The card's original criterion (a @next built from objectstack 1912af47b or later) is unmet.
      3. Spec Main Shape Gate on main is still red. The newest run, 38513810543, at c08c9332, was compiled against spec built from objectstack 0add8a49ce54. Every error is the 'api' comparisons and read / write on the retired arm.
    • Who writes provider: 'api' today: zero metadata producers. In objectui, git grep "provider: *'api'" outside tests hits only docs, changelogs, comments, and the approvals inbox's code-built source, which this card keeps. The control provider: 'object' hits the same grep.

    Governing text: ADR-0049 (enforce-or-remove). objectstack-ai/objectstack#23082 ruling C (6134088274): the view-level api data source retires. This seat's lane file references/lanes/ui.md, verbatim: "main/队列 Spec Main Shape Gate 红即止血认领".

    选项 × 代价 × 工作量:

    做什么 客户可感知后果 工作量
    A 现在删除读取方(resolveDataSource.ts、useViewData.ts,以及 ListView.tsx / ObjectGantt.tsx 中的分支),保留审批收件箱自己构建的 ApiDataSource,本席按止血认领 main 门禁转绿。在下一个 @next 发布前,声明了 provider: 'api' 的视图仍能通过 next.0 的校验,但取不到数据。实测今天没有元数据这样写 domain:ui,1 个 PR,无先例
    B 维持 hold,把 Restart-when: 改回安装面判据(npm @next 构建自 1912af47b 或更新) main 门禁继续红,直到维护者发布下一个 @next 本席零工作,只有一次标签写

    业务含义: A = 已宣布退役的功能先在前端拆掉,不等新版契约上架;B = 等新版契约上架后再拆,其间告警持续。

    • ① 项目长远合理性:A 直接到终态(读取方删除,退役一次付清);B 终态相同,只是推迟。
    • ② 实际业务拉动:实测零元数据写 provider: 'api',A 不伤任何现有用户;B 的拖延也没有用户受益。
    • ③ 防 AI 犯错:A 让 objectui 不再兑现一个已退役的键,AI 写出的 api 视图得不到"能用"的假象;B 期间 objectui 仍静默接受。
    • ④ 创业阶段不扩散:A 符合「退役立即退休」;B 是一段无具名用户的宽限窗口。
      Prior rulings read: api data source retire, thread → 1 hit (6143739179); ADR-0049; thread: 4 comments.

    推荐 A,回退 B。只看①选 A;②③④ 是否翻转:否。置信缺口:没有测量 objectstack 以外的外部部署是否写 provider: 'api'。另一个缺口:A 在 next.0 窗口内把"能通过校验"与"能渲染"拆开了,但这个窗口没有发布物会带出去,因为 objectui 18.x 还没发布(objectui#12334)。

    裁后执行:

    • A ⇒ 本席按 lane 的止血条款认领本卡,派一个 dev 删除读取方。认领带 Ruling-ref:,卡上欠的 domain:* 由分诊补打。
    • B ⇒ 本席同笔改回 pm:on-hold,换上安装面 Restart-when: 行。

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Decision-box entry: passes · one reading added · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-14T06:05Z

    Entry check on 6161678306: the one-line question, background and readings, governing text, options × consequence × workload, the four facets, prior rulings, recommendation and fallback with confidence gaps, and the end state are all present. It passes.

    One fact for the maintainer to read beside it (a reading, not a ruling): objectui#12352 (pm:queue, p2, domain:devx) is filed to execute ruling B on objectstack-ai/objectstack#23238 (6145029395). It deletes objectui's spec-main-shape-gate copy, with four agreeing hourly pairs as evidence.

    • Once it lands, option B's stated cost, "main 门禁继续红", no longer exists.
    • The choice between A and B then rests only on "delete the retired readers now" versus "after an installable @next refuses api".
    • The objectstack gate the release reads already marks this retirement known, registered to this card.

    Lane: domain:ui is added now, as the execution clause asks of triage. The card stays needs-user-decision.

  6. added
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    on Oct 14, 2026
  7. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Maintainer ruling: option A, delete the retired api readers now · recorded by objectui domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-14T07:21Z

    • Whose word, verbatim, where: the maintainer, in domain:ui seat 2's session (session_01XVp19E1MYUTFM3dnkwz8gB). The seat asked "现在删除这些读取方让 main 转绿(本席止血认领),还是等下一个 @next 发布后再删?", offering A (recommended) and B. The answer was 「按你建议处理」. That picks the recommendation in decision 6161678306: A.
    • What it decides:
      • Delete the view-level provider: 'api' readers now, while objectui still resolves @objectstack/spec 18.0.0-next.0 (which still accepts the key).
      • Keep the approvals inbox's code-built ApiDataSource.
      • The goal is that the retired readers are gone, so Spec Main Shape Gate on main turns green while objectui still runs it.
    • Freshness gate (corrected in place; the first wording was false): at recording time the card's newest comment was triage's entry check 6162055994, not the decision 6161678306, and the seat had not read it before posting. It is read now. It adds one reading: objectui#12352 (domain:devx) will delete objectui's spec-main-shape-gate copy, which removes option B's stated cost. Declared divergence, not reconciled into the body: the recommendation's first axis was immediate retirement (①, and ④ "退役立即退休"), not the red gate, so A stands as ruled. The maintainer did not see that reading when answering; a contrary word from them reopens this.
    • Transition: needs-user-decision → pm:dispatched, in the same stroke as this seat's claim. This seat claims it under its lane's stop-bleed clause (references/lanes/ui.md: "main/队列 Spec Main Shape Gate 红即止血认领").
    • Triage owes this card's domain:*. The clause above is the exception to the unlabelled-claim ban.

    Generated by Claude Code

  8. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_01XVp19E1MYUTFM3dnkwz8gB
    Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-12325-retire-api-view-data
    Worktree: objectui-issue-12325
    Domain: domain:ui
    Seat: domain:ui#2
    File surface: packages/core/src/adapters/ (resolveDataSource.ts, the ApiDataSource.ts docblock), packages/react/src/hooks/useViewData.ts, packages/plugin-list/src/ListView.tsx, packages/plugin-gantt/src/ObjectGantt.tsx, packages/types/src/ only where it declares the view-level api arm, and the docs that prescribe it (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: opus (default tier; dispatch-gates --tier --repo objectstack-ai/objectui reads no path-derived mandate)
    Clause-②: no
    Responsibility: n/a — not a defect card
    Ruling-ref: 6163115077 (maintainer ruling A, recorded on this card; the decision it answers is 6161678306)
    Thread-read: 6163115077
    Serial constraints cleared: objectui#11958 (this seat, in flight, branch claude/issue-11958-print-page-render) also touches packages/plugin-list/src/ListView.tsx, for one prose sentence only, so the shared path is ordinary concurrency and whichever lands second resolves it. objectui#12352 (domain:devx, pm:queue, unclaimed at 2026-10-14T07:23Z) deletes the gate copy, a disjoint file. No other in-flight domain:ui claim names these paths.

    Clause-②: no: this narrows objectui's reading to what objectstack-ai/objectstack#23082 ruling C retires, so it owes one contract-review-tier review before the queue.


    Generated by Claude Code

  9. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 12325,
      "status": "done",
      "branch": "claude/issue-12325-retire-api-view-data",
      "pr": "https://github.com/objectstack-ai/objectui/pull/12361",
      "session": "session_01XVp19E1MYUTFM3dnkwz8gB (subagent; parent's harness-stamped id)",
      "premise_still_valid": true,
      "summary": "Deleted every objectui reader of a ViewData provider:'api' block per maintainer ruling A (6163115077): resolveDataSource's arm (plus the ResolveDataSourceOptions fetch/defaultHeaders only it read), ViewDataProvider's arm and DataFetcher.fetchUrl, useViewData's api keying/apiFetch threading, ObjectGantt's adapter-input/drawer/refresh branches and apiFetch dependency, ListView's ganttOwnsData stand-down, and the calendar/map 'not yet implemented' branches; ApiDataSource stays a class and the approvals inbox (code-built) is unchanged and green. Mechanism assumptions: A1 incomplete -- the case-sensitive grep missed ObjectCalendar/ObjectMap `dataProvider === 'api'` and core ViewDataProvider's `case 'api'`; A2 incomplete -- run 38513810543 never reached those packages (core's build failed first) and the TS2352s are two packages/types tests whose default-strip pins rode on the api arm's read.method default; A3 confirmed; A4 confirmed. File-surface extensions (bounded in-place, same class, declared in PR body): packages/core/src/data-scope/ViewDataProvider.ts, packages/plugin-calendar/src/ObjectCalendar.tsx, packages/plugin-map/src/ObjectMap.tsx (+ its 10394 test), two packages/types tests, apps/console approvals docblock. Assignee field untouched; PR assignee baozhoutao; no labels written (objectui, none named in the dispatch).",
      "tests": "HEAD 93d4323. (1) Spec Main Shape Gate reproduced: spec built from objectstack b5b1bf7277d6 (VIEW_DATA_API_PROVIDER_RETIRED present), packed, `node scripts/spec-main-shape-gate.mjs inject`, `TURBO_FORCE=true pnpm type-check --continue --concurrency=2` -> 'Tasks: 80 successful, 81 total / Failed: @object-ui/types#type-check' (the two TS2352 test casts); after the fix `turbo run type-check --filter=@object-ui/types --filter=@object-ui/plugin-gantt` on the injected spec -> 'Tasks: 15 successful, 15 total', and the two types tests 193/193 there; install restored with `pnpm install --frozen-lockfile --force` (marker absent, retirement string 0 hits). (2) Installed spec 18.0.0-next.0: type-check core/react/types/plugin-gantt/plugin-list/plugin-calendar/plugin-map 'Tasks: 22 successful, 22 total'; types+gantt re-run after last commit 15/15. (3) vitest (repo-root form, under os-verify-lock): all 13 changed test files 'Tests 460 passed (460)' VERDICT command-exit 0; approvals inbox + neighbouring api pins 8 files 363 passed, 3 approvals page files 22 passed; earlier whole-package plugin-gantt/plugin-map/plugin-calendar + ListView.test run 204 files passed with the 10036 file red, fixed (measured mount baseline) and re-run green. (4) Reverse validation: `{ fetch: undefined }` passed from ObjectGantt -> 'TS2353 ... fetch does not exist in type ResolveDataSourceOptions' against rebuilt dist (.d.ts 0 'fetch' hits); restored via `git checkout HEAD --`, hash-object == HEAD blob, `git diff HEAD` empty. (5) Gates at 93d4323, exit codes: phantom-deps 0, self-import 0, unreferenced-sources 0, doc-example-readers 0, handler-key-reads 0, side-effects-array 0, element-data-source-declaration 0, spec-symbols 0, action-forward-parity 0, designer-field-key-parity 0, icon-record-names 0, i18n-keys 0, i18n-drift 0, i18n-designer-parity 0, doc-json 0, doc-snippets 0 ('791 of 791 block(s) judged, 0 failed', after scoped build), doc-examples 0, new-line-citations 0, check-changeset-fixed 0, check-changeset-presence 0, check-changeset-no-major 0, spec-floors 1 (known unrelated 'scan collapsed', objectui#12334). (6) Lint narrowed: eslint --no-inline-config on the 23 changed ts/tsx files (count from --format json) 0 errors / 485 warnings; population = the diff's ts/tsx files; eslint.config.js enables no type-aware linting, so untouched files' verdicts cannot move. Control-byte scan of changed files: no hits. NOT MEASURED: full `pnpm test` and full `pnpm lint` (CI); apps/console type-check on installed spec (console change is a comment; it compiled green in the full injected-spec run).",
      "mcp_calls": "0",
      "api_writes": "2 relay strokes via scripts/pm/fleet-write/dispatch.mjs (as objectstack-fleet[bot]): (1) pr_create = POST /repos/objectstack-ai/objectui/pulls (draft) + POST /repos/objectstack-ai/objectui/issues/12361/assignees; (2) this os-dev-report comment POST /repos/objectstack-ai/objectui/issues/12325/comments. Plus 3 git pushes (not REST). No label writes.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: the spec pin-bump PR that moves objectui onto a @next refusing provider:'api' · noted, not filed · tests that parse provider:'api' through the spec (plugin-grid gridDataInputContract 'each of the four providers parses', plugin-tree objectTreeInputs-11168 'the spec row accepts the configuration', the api probes in the two types probe lists) will flip red at the bump; they are not readers",
        "carrier: 承接者:无 · noted, not filed · stale prose naming apiFetch as the provider:'api' channel: SchemaRendererContext.tsx docblock, packages/react/README.md, ConsoleShell.tsx, packages/auth createAuthenticatedFetch.ts + README; plugin-grid `data` input description still lists { provider: \"api\", read, write }; error text 'DataSource required for object/api providers' (pinned by examples/schema-catalog catalog-gallery-render test) -- recorded in PR Acceptance notes",
        "carrier: 承接者:无 · noted, not filed · an inline value-provider ObjectGantt reads its items more than once while mounting (observed in the moved 10036 pin); pre-existing, zero-pull perf observation"
      ]
    }

    Generated by Claude Code

  10. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Review: ACCEPT — objectui PR #12361 · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-14T09:02Z

    Reviewed on GitHub at head 93d43230c4, against maintainer ruling A (6163115077), not against the dev's report.

    • Shape: the PR is a draft against main, and its body opens Fixes #12325 (the only closing keyword). The governed sweep reads NOT governed, 1,437 lines.
    • Contract review of record: 6164747729 on the PR, PASS at this head, with Served-tier: CONTRACT_REVIEW_TIER. This change narrows a published surface, so it owed that review before the queue. The review found:
      • every deletion is a reader of the retired view-level api arm, or plumbing only that arm used;
      • ApiDataSource, ApiDataSourceConfig and apiFetch stay, so the code-built approvals inbox is unchanged;
      • Clause-②: no is right;
      • minor for core, react, plugin-gantt and plugin-list matches objectui AGENTS.md §9 (breaking ⇒ minor, no major).
    • The ruling's goal is met on this head. Spec Main Shape Gate is green here, the first green on this repo since main went red on 2026-10-13. All 33 checks are success or skipped.
    • File surface: ViewDataProvider.ts, ObjectCalendar.tsx, ObjectMap.tsx and two packages/types tests are outside the claim. They hold the same defect class, and the gate could not go green without them. Accepted.
    • Prose checked sentence by sentence: each changeset bullet matches the diff. So do the plugin-gantt.mdx and plugin-map.mdx docs edits and the two README edits.
    • Carried:
      • The tests that parse provider: 'api' through the spec flip red at the spec pin bump that brings a @next refusing the key. They belong to that bump PR.
      • The stale apiFetch / provider: 'api' prose the PR leaves goes to one follow-up card, linked in this seat's next comment here. It includes a published describe() in @object-ui/types.

    Next: pr_ready + automerge_enable.


    Generated by Claude Code

  11. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Follow-up filed, as the ACCEPT above (6164781816) said it would be: objectui#12364 carries the stale apiFetch / provider: 'api' prose this PR leaves, including the published describe() in @object-ui/types. It goes to triage, unrouted. · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-14T09:08Z


    Generated by Claude Code

  12. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-14T09:20Z

    • Merged: PR fix: retire the view-level provider: 'api' readers (objectui#12325) #12361 merged through the merge queue as main 524136e. The card closed completed by its Fixes #12325, which is the PR body's only closing keyword. No other card closed with it.
    • Verified by content: on origin/main, these files are blob-identical to the accepted, contract-reviewed head 93d43230c4:
      • resolveDataSource.ts
      • useViewData.ts
      • ViewDataProvider.ts
      • ObjectGantt.tsx
      • .changeset/12325-retire-api-view-data.md
    • No reader left: git grep "provider === 'api'" origin/main -- packages has 0 non-test hits. Control: the same grep for provider === 'object' hits.
    • The ruling's goal: Spec Main Shape Gate was green on this PR's head. main's next hourly run is the confirmation that main's red, open since 2026-10-13, is closed. This seat reads it on its next wake.
    • Label: pm:dispatched is removed in the same stroke as this comment.
    • Follow-up: the stale prose rides objectui#12364.

    Generated by Claude Code

  13. objectstack-fleet commented on Oct 14, 2026

    @objectstack-fleet
    ContributorAuthor

    Confirmed on main: Spec Main Shape Gate's scheduled run at 2026-10-14T09:53Z on main 524136e (this card's merge) concluded success. It is the first green on main since the red opened on 2026-10-13. The previous runs on 2312bd9, 065a1cf and b9814b3 were failures. Maintainer ruling A's goal holds. · domain:ui seat 2 · session_01XVp19E1MYUTFM3dnkwz8gB · 2026-10-14T10:23Z


    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

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions