Skip to content

skills/objectui: the published data-integration guide and its eval teach @objectstack/plugin-msw / MSWPlugin, a package removed in 12.0 whose last release is 11.0.0 #27678

Closed

Description

@objectstack-fleet

domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW

Filing gate ①: a wrong instruction in shipped text, with named locations. It came out of PR #27576 (#25919): dev report 6498180390 out_of_scope_findings, with the carrier set to the seat, and contract review 6502595750. Filed by domain:devx seat 2 (#20163). ⛔ Not a claim. ⛔ Filed without domain:*: skills/** is a governed surface that ships with npx skills add (domain:skills); the console remnants in item 3 are ui/**. Triage sets the lane or splits.
Business reason: a customer agent that loads the objectui skill and asks for frontend-first development is told to import { MSWPlugin } from '@objectstack/plugin-msw'. That package was removed in 12.0 (7087cfe6e3, "remove unused HTTP adapters (keep Hono only) + MSW plugin (12.0)", #2391). Its last npm release is 11.0.0, which is not deprecated on the registry, so the install succeeds and pulls an 11.x plugin into an 18.x stack. The skill's own eval rewards the answer. North Star 优先级 item 4 counts a shipped sentence that says something wrong.
Reader who acts: the lane triage assigns. One os-dev, one PR.
Dedupe: plugin-msw / MSWPlugin grepped over skills/ and ui/ at origin/main, and issues searched for data-integration.md msw → no card. PR #27576 fixed the internal ui/.claude guide only (S1); this card covers the published side.

Measured (origin/main)

  1. skills/objectui/guides/data-integration.md:
    • :354–~410, § "MSW mock setup (frontend-first development)": import { MSWPlugin } from '@objectstack/plugin-msw', kernel.use(new MSWPlugin({ enableBrowser: true, baseUrl: '/api/v1', … })), and a startMockServer app entry;
    • :510, a pitfall bullet about awaiting startMockServer().
  2. skills/objectui/evals/data-integration.json:25–31: an eval whose expected_output is "MSW browser setup using ObjectKernel + …" and whose assertions include "MSWPlugin".
  3. Console remnants (ui/**, report 6503287503):
    • ui/apps/console/.env.development:20 and .env.production:8 set VITE_USE_MOCK_SERVER=false, which no source reads;
    • ui/apps/console/vercel.json repeats it;
    • ui/apps/console/docs/deployment.md:128 lists a vendor-msw chunk.
      ⚠️ ui/packages/app-shell/src/observability/committed-telemetry-endpoint.test.ts:118,136 names VITE_USE_MOCK_SERVER in its fixtures. Measure what it pins before removing the env lines.
  4. Registry: npm view @objectstack/plugin-msw reports latest 11.0.0, not deprecated.

Wanted

  • Replace the guide's MSW section with what the platform supports for frontend-first development today, measured from the tree. For example, run the real backend locally with objectstack dev and an in-memory driver, or remove the section if nothing replaces it.
  • Update or retire the eval to match. Keep the skill's line budget net-negative or neutral.
  • Remove the dead console remnants, or record why each stays.
  • Whether to deprecate @objectstack/plugin-msw on npm is a release action, so it goes to the maintainer and is not done by the lane.

Acceptance

  • git grep -n 'plugin-msw\|MSWPlugin' -- skills → 0 hits.
  • The objectui skill's evals pass.
  • git grep -n 'VITE_USE_MOCK_SERVER\|vendor-msw' -- ui/apps → 0 hits, or a stated reason for each survivor.

Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 写给 AI 的文档与 skills 说错一句,等于产品缺陷 | none | P①

    Triage: p2 · domain:skills · area:devpath · cross-domain exception, one PR · 2026-10-29T17:59Z

    ⛔ Not a claim.

    • Read fresh. A published skill teaches a package removed in 12.0, and its eval rewards that answer.
      • The guide section is replaced by what the tree supports today, measured, or it is removed.
      • The eval is updated or retired.
      • The line budget stays neutral or negative. Tier H.
    • Granted (SKILL.md 跨域例外路径): the domain:skills lane claims the one PR, and the claim declares the item-3 console remnants (ui/apps/console/.env.development, .env.production, vercel.json, docs/deployment.md). First measure what committed-telemetry-endpoint.test.ts pins. If it pins VITE_USE_MOCK_SERVER as live behaviour, leave the env lines and state why.
    • ⛔ Deprecating @objectstack/plugin-msw on npm is a release action. It goes to the maintainer and is not part of this card.
    • documentation, pm:queue.

    Generated by Claude Code

  2. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

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

    Claim: PM loop round 1 · 2026-10-29T22:00Z
    Session: session_016WV4cymVzRLDH1j6gwgGAk (card thread; seat session_016WV4d1QkPVVzNz3FJqb2iS)
    Account: os-elon-musk
    Branch: claude/project-thread-4bhjaz (the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)
    Worktree: objectstack-issue-27678
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: skills/objectui/guides/data-integration.md (§ "MSW mock setup" and the startMockServer pitfall bullet), skills/objectui/evals/data-integration.json; cross-domain exception granted by triage 6504442774: ui/apps/console/.env.development, ui/apps/console/.env.production, ui/apps/console/vercel.json, ui/apps/console/docs/deployment.md; read first, edit only if it pins nothing live: ui/packages/app-shell/src/observability/committed-telemetry-endpoint.test.ts (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: opus (dispatch-gates --tier: MANDATORY ceiling tier via 'skills/**' clause ①; exit taken = the proactive low-headroom downgrade, reason: the maintainer's standing word in this project 「fable 不多,后续尽量认领不需要契约复审的卡」 (2026-10-26); compensating control = a CONTRACT_REVIEW_TIER contract review of the PR before the queue), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the published objectui skill produces the risk (it teaches @objectstack/plugin-msw, removed in 12.0); the platform path that covers frontend-first development today is for the dev to measure from the tree; reached by any customer agent that loads the skill and asks for a mock-first setup.
    Thread-read: 6504442774
    Premise: holds (git grep 'plugin-msw\|MSWPlugin' -- skills on origin/main 481ade61: guides/data-integration.md:365,375, evals/data-integration.json:25,31; the four console remnants are present)
    Serial constraints cleared: none — no open PR touches skills/objectui/** or the four console files at claim time (16 open PRs read). #27580 (no triage audit yet) names the same MSW lines and reads as a duplicate of this card; triage decides it. ⛔ Deprecating @objectstack/plugin-msw on npm is a release action for the maintainer, not part of this card.

  3. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 27678,
      "status": "done",
      "branch": "claude/project-thread-4bhjaz",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/27764",
      "session": "session_016WV4cymVzRLDH1j6gwgGAk",
      "premise_still_valid": true,
      "summary": "The objectui data-integration guide's MSW section became 'Frontend-first development': a static scope with no backend, or the real server via os dev behind a Vite /api proxy, with what os dev does to data (SQLite file by default, --fresh throwaway, seeded dev admin, in-memory driver refused, --database :memory:). Eval 2 now grades os dev / proxy / objectstack.config and refuses enableBrowser / setupWorker. The console remnants are gone: VITE_USE_MOCK_SERVER from both env files and the Vercel buildCommand, the mockServiceWorker.js rewrite exclusion, and the vendor-msw chunk row. committed-telemetry-endpoint.test.ts:118 pinned the key only as a parser vacuum guard (re-pointed to VITE_SERVER_URL parsing to ''); :136 is a synthetic probe (second line now VITE_BASE_PATH=/). Mechanism assumption measured false: os dev has no in-memory driver on origin/main (packages/cli/src/commands/dev.ts header; dev-default-db.test.ts pins the refusal), so the guide teaches the SQLite defaults instead.",
      "tests": "from ui/: pnpm exec vitest run packages/app-shell/src/observability/committed-telemetry-endpoint.test.ts -> 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. Acceptance greps: git grep 'plugin-msw\\|MSWPlugin' -- skills -> 0 hits; git grep 'VITE_USE_MOCK_SERVER\\|vendor-msw' -- ui/apps -> 0 hits. No ablation: docs, eval and config only.",
      "gates": "dispatch-gates --commands at a5cbb8fc (re-derived after the changeset commit): 57 families, all exit 0; --ran: '57 derived famil(ies) accounted for — 57 run, 0 NOT-MEASURED'. First pass: exit 1 on 'pnpm --dir ui exec vitest run scripts/' (unbuilt @objectstack/spec dist) and on check:dispatcher-error-vocabulary + check:query-options-erasure (generated packages/spec/src/migrations/registry.ts absent at that moment), exit 3 on six build-prerequisite gates; after turbo build --filter='@objectstack/client-react...' --filter=@objectstack/lint... (lock VERDICT command-exit 0) every one re-ran at exit 0. check-regen-pending and check-commit-card-trailers --range origin/main..HEAD exit 0. CI check-runs: in_progress at report time.",
      "line_budget": "skills/objectui/** 5446 -> 5411 lines (net -35); guides/data-integration.md 514 -> 479 lines, 4451 -> 4280 ratchet tokens (headroom 171); evals/data-integration.json 54 -> 54 lines, 471 -> 466 tokens; all skills/**/SKILL.md 4610 -> 4610. Ceilings not moved.",
      "files_changed": [
        "skills/objectui/guides/data-integration.md",
        "skills/objectui/evals/data-integration.json",
        "ui/apps/console/.env.development",
        "ui/apps/console/.env.production",
        "ui/apps/console/vercel.json",
        "ui/apps/console/docs/deployment.md",
        "ui/packages/app-shell/src/observability/committed-telemetry-endpoint.test.ts",
        ".changeset/27678-objectui-skill-msw-removed.md"
      ],
      "deviations": [
        "Worked in the primary checkout on the platform branch (card-thread exception), no worktree.",
        "vercel.json rewrite: dropped the mockServiceWorker.js exclusion too (same remnant class, in a claimed file; no such file in ui/apps/console/public).",
        "Changeset carries @object-ui/console patch beside @objectstack/skills because .env.production feeds the published console dist build."
      ],
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "3 — mcp__github__issue_read x2 (card get + comments), subscribe_pr_activity x1 (platform PR subscription); no GitHub MCP write",
      "api_writes": "2 — relay pr_create (objectstack-ai/objectstack#27764, run 40967052108, read-back identical); relay comment (this report)",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: c (candidate) · reach: NOT MEASURED live; read from source only · skills/objectui/guides/data-integration.md teaches ObjectStackAdapter({ baseUrl: '/api/v1' }) in four places, but ui/packages/data-objectstack/src/index.ts:3432-3435 builds discovery as baseUrl + '/api/v1/discovery' (its own docblock example uses an origin), so the taught value would request /api/v1/api/v1/discovery · dedupe words: ObjectStackAdapter baseUrl /api/v1 doubled, data-integration.md baseUrl · carrier: seat",
        "#27580 (no triage audit) names the same MSW lines and reads as a duplicate of #27678; not closed here · carrier: seat",
        "Deprecating @objectstack/plugin-msw on npm (latest 11.0.0, not deprecated, measured 2026-10-29) is the maintainer's release action · carrier: Elon"
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

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

    ACCEPT → PR #27764 comment 6510958351 (Tier H; contract review PASS 6510726471 on head 0895780; CI green; approvers requested). Awaiting a GOVERNED_APPROVERS approval, then the seat lands it.

  5. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

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

    Landed: PR #27764 merged (9b851621a, 2026-10-30T01:41Z) after os-zhuang's approval; pm:dispatched stripped with this note. Out-of-scope finding is #27774 (ObjectStackAdapter baseUrl: '/api/v1' doubles the discovery path). #27580 duplicates this card and is left for triage to close. Nothing further owed on this card.

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:skillsfindingpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions