Skip to content

docs(skills): the objectui data-integration guide stops teaching the MSW plugin removed in 12.0 - #27764

Merged
os-zhuang merged 3 commits into
mainfrom
claude/project-thread-4bhjaz
Oct 30, 2026
Merged

os-zhuang merged 3 commits into
mainfrom
claude/project-thread-4bhjaz

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Elon · project thread

Fixes #27678

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:已发布的 objectui 技能不再教 12.0 已删除的 MSW 插件;数据集成指南的「前端先行开发」一节改教树上真有的两条路(无后端用静态 scope,或本地 os dev 起真服务 + Vite 代理 /api),对应 eval 改判这个答案;顺手删掉 console 里没人读的 VITE_USE_MOCK_SERVER 等 MSW 残留。
  • 为什么改:客户 agent 加载技能后照抄会去装 11.0.0 的旧插件(npm 上未弃用、能装上),装进 18.x 栈;eval 还给这个错答案打满分。
  • 风险与回滚:纯文档、eval 与 console 构建配置,无运行时行为变化;回滚即 revert 本 PR。技能净减 35 行、约 171 token。
  • 先看:skills/objectui/guides/data-integration.md(新「Frontend-first development」一节的每条事实)、skills/objectui/evals/data-integration.json(eval 2)、ui/apps/console/vercel.json(rewrite 正则少了 mockServiceWorker.js 排除项)。
  • 两分钟验证:git grep -n 'plugin-msw\|MSWPlugin' -- skills; git grep -n 'VITE_USE_MOCK_SERVER\|vendor-msw' -- ui/apps 两条都无输出;node ui/scripts/check-skill-eval-tokens.mjs 退出 0。
  • 需要你做的:受管面(skills/**),席位契约复核通过后请批准;npm 上是否弃用 @objectstack/plugin-msw 是发版动作,另由你定。

What changes

  • skills/objectui/guides/data-integration.md: the section "MSW mock setup (frontend-first development)" (a browser kernel built on the MSW plugin package, removed in 12.0 by 7087cfe6e3) becomes "Frontend-first development". It names the two paths the tree supports today:
    • no backend: the existing "Static data (no backend)" scope;
    • a real API locally: os dev from the ObjectStack app, with the Vite dev server proxying /api to http://localhost:3000 so page and API share one origin (the same shape ui/apps/console/vite.config.ts uses).
      It also states what os dev does with data: it persists to a SQLite file, --fresh gives a throwaway database, a dev admin is seeded on an empty database, the retired in-memory driver is refused, and --database :memory: is SQLite's in-memory database. The two MSW pitfall bullets are removed.
  • skills/objectui/evals/data-integration.json, eval 2: the prompt asks for a working local API before the backend is deployed. must_contain is os dev, proxy, objectstack.config; must_not_contain is enableBrowser and setupWorker (the MSW plugin option and the MSW worker API).
  • Console remnants (cross-domain exception granted by triage 6504442774):
    • VITE_USE_MOCK_SERVER=false leaves ui/apps/console/.env.development, .env.production and the Vercel buildCommand. No source reads the key: git grep VITE_USE_MOCK_SERVER -- ui outside these files, the test below and the CHANGELOG finds one comment in ui/playwright.import-console.config.ts.
    • The Vercel rewrite stops excluding mockServiceWorker.js; ui/apps/console/public holds no such file.
    • The vendor-msw row leaves the chunk table in ui/apps/console/docs/deployment.md; vite.config.ts declares no such chunk.
  • ui/packages/app-shell/src/observability/committed-telemetry-endpoint.test.ts, measured first as the card asked:
    • :118 is a vacuum guard that the parser reads real assignments out of .env.production. It used VITE_USE_MOCK_SERVER only as a known line, not as live behaviour. It now asserts VITE_SERVER_URL parses to the empty string.
    • :136 is a synthetic negative probe that reads no file; its second line becomes VITE_BASE_PATH=/.
  • Changeset 27678-objectui-skill-msw-removed.md: @objectstack/skills and @object-ui/console patch.

Published-skills readings

reading before after
skills/objectui/guides/data-integration.md lines / ratchet tokens 514 / 4451 479 / 4280 (ceiling 4451, headroom 171)
skills/objectui/evals/data-integration.json lines / ratchet tokens 54 / 471 54 / 466 (ceiling 471, headroom 5)
skills/objectui/** lines 5446 5411
all skills/**/SKILL.md lines 4610 4610

Ceilings are left where they are; the shrink shows as headroom.

Tests

  • pnpm exec vitest run packages/app-shell/src/observability/committed-telemetry-endpoint.test.ts (from ui/): Test Files 1 passed, Tests 5 passed.
  • node ui/scripts/check-skill-eval-tokens.mjs: exit 0, "Every must_contain token is taught by its own skill bundle."
  • node ui/scripts/check-skills-paths.mjs: exit 0 (85/86 stated paths resolve, 1 baselined, unchanged).

Acceptance notes

  • git grep -n 'plugin-msw\|MSWPlugin' -- skills: 0 hits.
  • git grep -n 'VITE_USE_MOCK_SERVER\|vendor-msw' -- ui/apps: 0 hits.
  • Survivors outside ui/apps, out of scope: ui/CHANGELOG.md:392 (history, not edited) and a comment in ui/playwright.import-console.config.ts:24 that sets the variable in a recipe.
  • The dispatch's mechanism assumption ("objectstack dev with an in-memory driver") did not hold on origin/main: the in-memory engine is no longer a boot store (packages/cli/src/commands/dev.ts header; dev-default-db.test.ts pins the refusal). The guide teaches what the tree does instead.
  • npm view @objectstack/plugin-msw version deprecated on 2026-10-29: 11.0.0, not deprecated. Deprecating it is the maintainer's release action and is not part of this PR.

Verification

dispatch-gates: 57 derived families, all exit 0, at a5cbb8f

node scripts/pm/dispatch-gates.mjs --ran: "57 derived famil(ies) accounted for — 57 run, 0 NOT-MEASURED". The first pass recorded exit 1 on pnpm --dir ui exec vitest run scripts/ (unbuilt @objectstack/spec dist) and on two gates that read the generated packages/spec/src/migrations/registry.ts before it existed, plus exit 3 on six build-prerequisite gates. After turbo run build --filter='@objectstack/client-react...' --filter=@objectstack/lint..., every one of them re-ran at exit 0. The pre-push checks check-regen-pending and check-commit-card-trailers --range origin/main..HEAD both exit 0.

🤖 Generated with Claude Code

https://claude.ai/code/session_016WV4cymVzRLDH1j6gwgGAk


Generated by Claude Code

…xy in the objectui data guide

The objectui data-integration guide and its eval taught the MSW plugin,
removed in 12.0. The guide now teaches the two supported frontend-first
paths (a static scope, or the real server via os dev behind a Vite /api
proxy), the eval grades that answer, and the dead console mock-server
remnants (VITE_USE_MOCK_SERVER, the vendor-msw chunk row, the
mockServiceWorker.js rewrite exclusion) are gone.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WV4cymVzRLDH1j6gwgGAk
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tests tooling labels Oct 29, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

Contract-review-claim: session_016WV4d1QkPVVzNz3FJqb2iS · head a5cbb8f · 2026-10-29T22:38Z

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: a5cbb8fc64385836bae72ce41e11418b7e05ad36
Local-runs: none
Scope: skills/objectui/evals/data-integration.json, skills/objectui/guides/data-integration.md + packages/cli/src/commands/dev.ts, packages/cli/src/commands/serve.ts, packages/cli/src/utils/database-driver-flag.ts, packages/cli/src/commands/dev-default-db.test.ts, packages/cli/package.json, packages/runtime/src/resolve-project-database.ts, ui/apps/console/vite.config.ts, ui/packages/cli/src/commands/dev.ts, ui/packages/data-objectstack/src/index.ts, packages/client/src/index.ts, skills/objectui/SKILL.md, skills/objectui/guides/project-setup.md, skills/objectui/guides/testing.md, skills/objectstack-platform/references/operations.md, ui/scripts/check-skill-eval-tokens.mjs, scripts/check-skills-token-ratchet.mjs, packages/skills/scripts/sync-catalog.mjs

① Derived judgments

  • Accept-set: none moves. No schema, no spec key, no runtime code in the diff. Right.
  • Published surface @objectstack/skills (packages/skills/scripts/sync-catalog.mjs copies skills/** into its dist): § "MSW mock setup (frontend-first development)" becomes § "Frontend-first development"; the two MSW pitfall bullets go; eval 2 is re-graded. Right — packages/plugins/ on main holds no plugin-msw, and git grep 'plugin-msw\|MSWPlugin' -- skills on the head is 0 hits (card acceptance 1). Nothing else in the tree links the old heading or startMockServer (repo-wide grep on the head: only CHANGELOG / RELEASE_NOTES history, one runtime docblock, and ui/'s own "there is no plugin-msw" lines).
  • Eval 2 grading — must_contain os dev / proxy / objectstack.config, must_not_contain enableBrowser / setupWorker. Right: every must_contain token is a whole token the bundle teaches (the bundle-wide oracle of ui/scripts/check-skill-eval-tokens.mjs; CI's Lint UI ran it green), and the refusals name the removed plugin's option and MSW's browser worker API — guides/testing.md:326-330 teaches setupServer from msw/node, never setupWorker, so the bundle's own text cannot trip them. One thinness carried to ④.
  • Token ratchet: guide 4280 against ceiling 4451, eval 466 against 471 (scripts/check-skills-token-ratchet.mjs:1175,1202), ceilings untouched; the shrink is headroom. Right. Card's line-budget acceptance met (net −35 lines).
  • Lane remainder at TIER_DEFAULT (read, not reviewed): VITE_USE_MOCK_SERVER has no reader under ui/ on main outside the two env files, vercel.json, the telemetry test and a recipe comment in ui/playwright.import-console.config.ts:24; ui/apps/console/public/ holds no mockServiceWorker.js; ui/apps/console/vite.config.ts declares no vendor-msw chunk. One note for the lane seat: committed-telemetry-endpoint.test.ts:118 now asserts VITE_SERVER_URL parses to '', and both env files carry exactly that one empty assignment, so the "parses real assignments" vacuum guard no longer proves the parser reads a VALUE, only a key — a weaker guard than the 'false' it replaced. Not a finding of this record.

② Semver level

  • .changeset/27678-objectui-skill-msw-removed.md: @objectstack/skills patch, @object-ui/console patch; Clause-②: no and Metadata-protocol: none on the PR body and the changeset body alike. Matches the diff: @objectstack/skills ships the changed text; @object-ui/console is public, in the fixed group, and .env.production is a build input of its published dist — nothing behavioural moves, so patch is the floor, and skip-changeset would be wrong for a released package whose content changes.
  • Metadata-protocol: none is right: nothing an author can write changes. Clause-②: no is right: no published accept-set widens or narrows. Not breaking; no ADR-0087 disposition owed.

③ Boundary flags

Dev report 6510080703: open_questions: [] — none owed. Deviations and findings, each answered:

  • Deviation — primary checkout on the platform branch. Recorded as the card-thread exception in claim 6509324636; acknowledged, nothing for this record.
  • Deviation — vercel.json drops the mockServiceWorker.js rewrite exclusion. Right: ui/apps/console/public/ on main holds favicon.svg, logo.svg, manifest.json, vite.svg only. Lane seat's file.
  • Deviation — console patch changeset. Right, see ②.
  • Out-of-scope finding 1 — ObjectStackAdapter({ baseUrl: '/api/v1' }) doubles the prefix. Read from source and upgraded from candidate to finding. ui/packages/data-objectstack/src/index.ts:3432-3435 builds discovery as baseUrl + '/api/v1/discovery' with no suffix strip, while the adapter's own search / data / export / meta paths (:3765-3769, :5162-5167, :5294-5298, :5463-5467) do strip a trailing /api/vN — the adapter disagrees with itself; the underlying ObjectStackClient (packages/client/src/index.ts:1704, :1733, and every route as ${this.baseUrl}${route} where discovery's routes are absolute /api/v1/... paths) takes an ORIGIN; and every adapter read and write awaits connect() first (:3656, :3844, :4378, …). So baseUrl: '/api/v1' sends discovery to /api/v1/api/v1/discovery, the REST layer answers 404, connect() rejects, every call fails. The console passes VITE_SERVER_URL || '' (ui/apps/console/src/App.tsx:105). The guide on the head carries baseUrl: '/api/v1' at :133, :155, :218, :461 — all on main before this PR, none in this diff. Escalated: a card for domain:skills (carrier: seat), with its ui/** half (the discovery line against the four suffix-tolerant methods) named in the same card for triage to split. Not charged to this PR: its scope is the MSW section, and Prime Directive chore: version packages #10 says file, never expand.
  • Out-of-scope finding 2 — [skills] skills/objectui teaches @objectstack/plugin-msw / MSWPlugin, a package that does not exist, and its data-integration eval rewards that answer #27580 reads as a duplicate. Triage's; noted.
  • Out-of-scope finding 3 — deprecating @objectstack/plugin-msw on npm. The maintainer's release action, as triage 6504442774 ruled; noted.
  • Dispatch mechanism assumption ("objectstack dev with an in-memory driver") measured false by the dev and confirmed here: packages/cli/src/commands/dev.ts:70-75 (in-memory engine is no longer a boot store), packages/cli/src/utils/database-driver-flag.ts (the oclif allowlist derives from DATABASE_DRIVER_SELECTION_IDS, from which memory has left), dev-default-db.test.ts:69-94 (pins the resolution refusal). The guide teaches what the tree does. Right.

④ Design judgment

skills/objectui/guides/data-integration.md — every claim of the new section read against main:

  • "No mock-server plugin; removed in 12.0; npm still serves 11.x — do not install": packages/plugins/ holds no plugin-msw; the registry reading is the card's item 4. Holds.
  • "No backend: static scope": § "Static data (no backend)" at :160 with PredicateScopeProvider. Holds.
  • os dev on http://localhost:3000, busy port → banner: packages/cli/package.json exposes both os and objectstack; dev.ts:537 requestedPort = port ?? '3000'; dev.ts:539-570 probes with getAvailablePort ahead of the compile and prints formatDevPortShiftNotice (serve.ts:481-490: "Port N is in use — serving on M instead"). Holds.
  • os dev --fresh throwaway database, deleted on exit: dev.ts:706-716 (mkdtemp under the OS tempdir, data/objectstack.db inside it, rmSync on exit), flag text :394. Holds; the flag's own caveat (cwd-relative datasource files survive) is the detail the pointer to objectstack-platform carries.
  • Vite proxy snippet: the same shape as ui/apps/console/vite.config.ts:1508-1510 ('/api': { target: DEV_PROXY_TARGET || 'http://localhost:3000', changeOrigin: true }). Holds.
  • "persists to a SQLite file": dev.ts:66-70 unified default data/objectstack.db under the state dir; dev-default-db.test.ts:38. Holds as the default.
  • "seeds a dev admin admin@objectos.ai / admin123 on an empty database": dev.ts:396-407 (--seed-admin default on, acts only while no login exists); skills/objectstack-platform/references/operations.md:11 says the same. Holds.
  • "no in-memory driver; --database-driver memory is refused": database-driver-flag.ts header and allowlist; dev-default-db.test.ts:69-78. Holds.
  • "--database :memory: is SQLite's in-memory database": dev.ts:367 flag help; packages/runtime/src/resolve-project-database.ts:104-113, :302. Holds.
  • "Commands and flags: the objectstack-platform skill": operations.md:11 (os dev, --seed-admin, --fresh, the credentials), :63-78 (port resolution); the objectui SKILL.md Scope table already defers bootstrap and drivers there. Holds.

Against the card's eval prompt: an agent loading the bundle answers os dev plus the /api proxy plus the Todo object in objectstack.config.ts (project-setup.md:195); that is a working local API, and nothing in the bundle leads it to enableBrowser or setupWorker. Holds.

Findings — none must-fix:

  • should-fix — the "Real API, locally" bullet never says where the objects come from. The eval's expected answer names objectstack.config, and after this diff the only place the whole bundle teaches that token is the heading at project-setup.md:195; the eval's own guide no longer says it. One clause ("run os dev in the ObjectStack app whose objectstack.config.ts declares the object") makes the eval answerable from its own guide; the 171-token headroom covers it.
  • should-fix — the proxy recipe fits a project that runs Vite itself. objectui dev (ui/packages/cli/src/commands/dev.ts:77-94) builds an inline Vite config with root: tmpDir, server.port and no proxy, so a project on the objectui dev path that project-setup.md:165-192 also offers cannot apply the vite.config.ts snippet as written. Say which dev server the snippet is for, in a clause.
  • nit — "persists to a SQLite file" is the default; OS_DATABASE_URL or a config-declared datasource overrides it (dev.ts:66-70). "by default" would be exact.
  • The verified baseUrl: '/api/v1' defect (③) is the guide's, pre-existing, on four lines outside this diff: carded, not charged here.

skills/objectui/evals/data-integration.json — the prompt now describes the scenario the tree supports; expected_output names the taught path; the must_contain tokens are whole tokens the bundle teaches; the must_not_contain pair refuses the old answer by its two most distinctive tokens, and neither appears in the bundle's own text. Holds. nit: os dev rewards one of the two bin spellings (objectstack dev would fail the eval); the guide teaches os dev, so an agent following it passes.

Gates on the head: 46 check-runs success, 8 skipped, Test Core (1/8) still in progress and the aggregate Test Core context not yet reported when this record was rendered; every other required context is green (Lint & Repo Gates, TypeScript Type Check, Build Core, Governed Surface Queue Guard, Lint UI, Type Check UI, Test UI, Build & E2E UI, Live E2E UI). Landing is Tier H (skills/**): the maintainer's approval lands it; this record is the compensating control the claim named, not the landing.

Implemented-by: claude/project-thread-4bhjaz
Reviewed-by: session_016WV4d1QkPVVzNz3FJqb2iS

VERDICT: PASS

… from and which dev server the proxy is for

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WV4cymVzRLDH1j6gwgGAk
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

Contract-review-claim: session_016WV4d1QkPVVzNz3FJqb2iS · head 0895780 · 2026-10-29T23:09Z

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 0895780ae213da6ade8c65bbd9fb95f9cf342595
Local-runs: none
Scope: skills/objectui/guides/data-integration.md + skills/objectui/evals/data-integration.json, skills/objectui/guides/project-setup.md, packages/cli/src/commands/dev.ts, packages/cli/src/utils/artifact-precedence.ts, ui/packages/cli/src/commands/dev.ts, ui/scripts/check-skills-paths.mjs, ui/scripts/check-skill-eval-tokens.mjs, scripts/check-skills-token-ratchet.mjs

Delta review over record 6510354851 (PASS on a5cbb8fc64385836bae72ce41e11418b7e05ad36). One commit on top of that head, one file, +7 −6, skills/objectui/guides/data-integration.md only; its parent is a5cbb8fc, so the net diff against main is the reviewed diff plus this delta. Everything 6510354851 judged on the untouched files stands as written; only the delta is judged here.

① Derived judgments

  • Accept-set: none moves. Prose only. Right.
  • Published surface @objectstack/skills: the "Real API, locally" bullet and the os dev paragraph are reworded; no heading, code block or eval changes. Right.
  • Eval 2's objectstack.config token is now taught in the eval's own guide (data-integration.md:361, objectstack.config.ts in a code span) as well as project-setup.md:195; the bundle-wide oracle of ui/scripts/check-skill-eval-tokens.mjs can only get greener. Right.
  • Gate exposure of the new code span: ui/scripts/check-skills-paths.mjs:166 counts a backtick token as a stated path only when it opens with one of PATH_PREFIXES followed by /; objectstack.config.ts and objectui dev open with neither, so the paths gate does not read them. Right.
  • Budgets: guide 479 → 480 lines (514 on main, still net −34, card acceptance held); the three edits add on the order of twenty ratchet tokens against the 171-token headroom under ceiling 4451 (scripts/check-skills-token-ratchet.mjs:1202, untouched). Right; Lint · repo & tooling gates is the gate of record and is still running.

② Semver level

Unchanged from 6510354851: the changeset is untouched, its "Now" paragraph describes the section at the level of the two paths and the os dev facts, which this delta keeps; @objectstack/skills patch, @object-ui/console patch, Clause-②: no, Metadata-protocol: none still match a prose-only diff.

③ Boundary flags

No new dev report on this head; the commit message names the two should-fixes it carries. Each finding of 6510354851, checked against the delta:

  • should-fix 1 (where the objects come from) — applied: "run os dev in the ObjectStack app whose objectstack.config.ts declares your objects". Right against the tree: os dev resolves objectstack.config.ts in its cwd (packages/cli/src/commands/dev.ts:436-437, flag text :320 and :342, the refusal at :585 when neither it nor --artifact exists; artifact-precedence.ts:8 ranks the cwd config in the boot order).
  • should-fix 2 (which dev server the proxy is for) — applied: "In a project that runs Vite itself (not objectui dev), proxy /api to it". Right against the tree: ui/packages/cli/src/commands/dev.ts:77-94 builds an inline Vite config with root: tmpDir, server.port, server.host, server.open, server.fs.allow and no proxy, so a project on the objectui dev path cannot apply a vite.config.ts proxy; objectui dev is the command project-setup.md:165-192 teaches, so the name is one the bundle's reader knows.
  • nit ("by default") — applied: "By default os dev persists to a SQLite file…". Right (dev.ts:66-70: --database / --fresh, then the env URLs, then a config-declared datasource, then the unified default file).
  • The escalated baseUrl: '/api/v1' card (6510354851 ③) is unaffected: the four lines are untouched, as intended; still the seat's to file.

④ Design judgment

skills/objectui/guides/data-integration.md (the delta's only hit) — the three reworded sentences read against the code they cite (above) and against the card's eval prompt: an agent now finds os dev, objectstack.config.ts, the /api proxy and the Vite-only caveat in one bullet of the eval's own guide, which is the scenario eval 2 grades; the must_not_contain pair is untouched. The sentence structure stays one bullet per path; the two code blocks and the objectstack-platform pointer are unchanged. Nothing wrong is introduced: no claim in the delta names a flag, path, command or default the tree does not carry. No must-fix, no should-fix, no nit remaining.

Gates on the head (read when this record was rendered): 10 check-runs success — among the required set Governed Surface Queue Guard and Live E2E UI — 8 skipped, 0 failed, 34 still running: Build Core, Lint UI, Type Check UI, Build & E2E UI, every Lint · and Type Check · lane, Test Core (1/8), Test Core (2/8) and all sixteen Test UI shards; the aggregate Lint & Repo Gates, TypeScript Type Check, Test Core and Test UI contexts are not yet reported. The delta is prose in one governed file, so the gates it can move are the skill gates named in ① (token ratchet, eval tokens, stated paths), each judged green by reading above; the running set is for the landing seat to read to conclusion before the maintainer's approval lands this Tier H PR.

Implemented-by: claude/project-thread-4bhjaz
Reviewed-by: session_016WV4d1QkPVVzNz3FJqb2iS

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

维护者速读

  • 改了什么:已发布的 objectui 技能不再教 12.0 已删除的 MSW 插件;「前端先行开发」一节改教树上真有的两条路(无后端用静态 scope;或在声明对象的 ObjectStack 应用里跑 os dev,自己跑 Vite 的项目把 /api 代理过去),eval 2 改判这个答案;同 PR 删掉 console 里没人读的 VITE_USE_MOCK_SERVER 等 MSW 残留。
  • 为什么改:客户 agent 照抄会装上 npm 上未弃用的 11.0.0 旧插件,混进 18.x 栈;旧 eval 还给这个错答案打满分。
  • 风险与回滚:纯技能文本、eval 与 console 构建配置,无运行时行为变化;revert 本 PR 即回滚。技能净减 34 行,token 天花板未动。
  • 先看:skills/objectui/guides/data-integration.md 新「Frontend-first development」一节,skills/objectui/evals/data-integration.json 的 eval 2。
  • 两分钟验证:git grep -n 'plugin-msw\|MSWPlugin' -- skills 与 git grep -n 'VITE_USE_MOCK_SERVER\|vendor-msw' -- ui/apps 均无输出。
  • 需要你做的:受管面 Tier H,请批准本 PR(契约复核 PASS 6510726471,Head-sha: 0895780ae213da6ade8c65bbd9fb95f9cf342595);npm 上是否弃用 @objectstack/plugin-msw 是发版动作,另由你定。

席位意见:ACCEPT。契约复核两轮(全量 6510354851 PASS,两条 should-fix 与一处措辞已在 0895780a 落实,增量 6510726471 PASS),CI 全绿;批准后由席位落地。

席位核对

  • 形态: one PR, Fixes #27678, 8 files (+41/−66 at the reviewed head plus the 1-file delta); skills/objectui/** net −34 lines, guide 4303 / 4451 tokens, eval 466 / 471; ceilings unmoved. Tier H (skills/**); under the 3000-line threshold.
  • 前提实测: plugin-msw / MSWPlugin present in skills/ on origin/main 481ade61 (guide :365, :375; eval :25, :31); the four console remnants present. The dispatch's mechanism assumption (objectstack dev with an in-memory driver) was measured false by the dev and confirmed by the review (packages/cli/src/commands/dev.ts:70-75, database-driver-flag.ts); the guide teaches the SQLite default, --fresh and --database :memory: instead.
  • 门禁 check-runs: head 0895780ae213da6ade8c65bbd9fb95f9cf342595: 56 check-runs, 48 success, 8 skipped (path-scheduled), 0 failed, 0 pending; Lint & Repo Gates, TypeScript Type Check, Test Core, Test UI, Build Core, Lint UI, Type Check UI, Build & E2E UI, Live E2E UI, Check Changeset, Governed Surface Queue Guard green.
  • 接受的偏差: vercel.json drops the mockServiceWorker.js rewrite exclusion (no such file in ui/apps/console/public); @object-ui/console patch changeset (.env.production is a build input of its dist); committed-telemetry-endpoint.test.ts guard re-pointed from VITE_USE_MOCK_SERVER to VITE_SERVER_URL (the review notes it now proves a key is parsed, not a value; accepted, not a finding).
  • 范围外去向: ObjectStackAdapter({ baseUrl: '/api/v1' }) doubling discovery → filed skills/objectui teaches ObjectStackAdapter({ baseUrl: '/api/v1' }), which sends discovery to /api/v1/api/v1/discovery, so connect() fails and every adapter call with it #27774; [skills] skills/objectui teaches @objectstack/plugin-msw / MSWPlugin, a package that does not exist, and its data-integration eval rewards that answer #27580 reads as a duplicate of this card → triage; npm deprecation of @objectstack/plugin-msw → the maintainer's release action. Skills-docs: n/a (Metadata-protocol: none).
  • 落地条款: Tier H: a GOVERNED_APPROVERS approval, then the seat lands (clear label, ready, auto-merge) under the maintainer's landing grant for this term (seat thread, 2026-10-29 22:04Z).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m tests tooling

Projects

None yet

2 participants