Skip to content

fix(ui/.claude): make the console-build-test launch entry repository-relative - #27821

Merged
os-zhuang merged 1 commit into
mainfrom
claude/project-thread-233vla
Oct 30, 2026
Merged

os-zhuang merged 1 commit into
mainfrom
claude/project-thread-233vla

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Elon · project thread

Fixes #27668
Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:ui/.claude/launch.json 里指南让 agent 照抄的 console-build-test 条目,去掉写死的本机 /Users/... 旧 objectui worktree 路径,改为从 ui/ 出发 cd apps/console,端口换成指南示例的每 agent 端口(后端 4010、前端 5190)。
  • 为什么改:原条目只能在一位维护者的笔记本上、按合仓前目录跑通,照抄它的 agent 起不来 preview,也绕开了多 agent 端口隔离的约定。
  • 风险与回滚:仅改一条桌面 preview 配置的两处字面量,不碰产品代码与指南规则;回滚即 revert 本 PR。
  • 先看:ui/.claude/launch.json:19-21(console-build-test 的命令与 port)。
  • 两分钟验证:在 ui/ 下跑 bash -lc "cd apps/console && VITE_SERVER_URL= DEV_PROXY_TARGET=http://localhost:4010 exec pnpm dev --port 5190 --strictPort",预期 vite 在 :5190 就绪,/api 代理指向 :4010。
  • 需要你做的:无,席位落地(contract review owed,Tier S 由席位复核 PASS 且 CI 全绿后落地)。

What changes

ui/.claude/launch.json, entry console-build-test (the one ui/.claude/skills/objectui-contributor/guides/console-development.md:564 tells agents to imitate):

  • command: cd /Users/…/objectui/.wt-aipicker/apps/console && … DEV_PROXY_TARGET=http://localhost:4000 … --port 5181 --strictPort → cd apps/console && VITE_SERVER_URL= DEV_PROXY_TARGET=http://localhost:4010 exec pnpm dev --port 5190 --strictPort
  • port: 5181 → 5190

The entry name and shape are unchanged, so the guide's pointer line already matches and is not touched. No change to the guide.

Acceptance notes

  • Launch runner cwd = ui/ (measured from the file itself): the sibling entries grid-bulk-demo / gantt-demo run pnpm --dir packages/plugin-grid …, a path that only resolves from ui/, the directory that holds this .claude/. So cd apps/console is the right relative path.
  • Ports are the per-agent example the guide's 「每个 agent 独立测试栈」 section uses (backend -p 4010, console --port 5190 --strictPort), and stay clear of the guide's 「绝不动 :3000 / :5180」.
  • VITE_SERVER_URL= is kept: it pins the same-origin relative /api that apps/console/.env.development documents, even when the shell exports a value.

Verification

  • grep -n '/Users/' ui/.claude/launch.json → no hits (exit 1). File parses as JSON.
  • Fresh worktree at origin/main b83baed + pnpm install --frozen-lockfile --ignore-scripts: ran the entry's command from ui/ → VITE v8.3.5 ready, GET http://localhost:5190/ → 200, GET /api/v1/discovery → 502 with connect ECONNREFUSED 127.0.0.1:4010 (no backend started; proves the proxy target). Stopped by its own PID.
dispatch-gates: 12 derived, 12 run, 0 NOT-MEASURED
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:published-files :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:tier-file-adoption :: exit 0
pnpm check:undeclared-dep-imports :: exit 0
pnpm check:watch-hint-literal :: exit 0

check:commit-card-trailers --range origin/main..HEAD → pass. No changeset: nothing published from a released package changes, so skip-changeset.

🤖 Generated with Claude Code

https://claude.ai/code/session_016WV4czXm398fHr62UfVR9E

…relative

The entry the console-development guide tells agents to copy hard-coded an
absolute macOS path into a worktree of the old objectui checkout, plus ports
4000/5181. It now starts from ui/ (the launch runner's cwd, as the sibling
`--dir packages/...` entries assume) with `cd apps/console`, and uses the
guide's per-agent example ports: backend 4010, console 5190.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WV4czXm398fHr62UfVR9E
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 30, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

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

Contract-review-claim: session_016WV4d1QkPVVzNz3FJqb2iS · head ba6223a · 2026-10-30T00:49Z

@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: ba6223ac2a3c3fc23856ae818c8554b899d0a296
Local-runs: none
Scope: ui/.claude/launch.json + ui/.claude/skills/objectui-contributor/guides/console-development.md, ui/apps/console/.env.development, ui/apps/console/vite.config.ts, ui/apps/console/package.json, .claude/launch.json, scripts/pm/check-governed-merges.mjs, ui/e2e/live/ci/start-backend.sh

Net diff vs parent b83baed2: one file, +2/−2 — the console-build-test command string and its port. Nothing else in the tree moved.

① Derived judgments

None. The diff carries no derived artifact, manifest or ledger.

② Semver level

ui/.claude/launch.json is published by no released package, so skip-changeset is the right label and no changeset is owed. The PR body carries Clause-②: no and Metadata-protocol: none, both line-initial. The governed path (ui/.claude/**) is what owes this review; the tier the record names follows that face.

③ Boundary flags

  • VITE_SERVER_URL= kept — correct. apps/console/.env.development documents that the value must be EMPTY for the same-origin /api hop; a value exported by the bash -lc profile would outrank the .env file, and the inline empty assignment pins it back. exec kept — correct: the preview runner tracks the process it spawned, and exec makes that process vite rather than a bash wrapper, so stop reaches the server.
  • Guide pointer untouched — correct, and within the claim's file surface. console-development.md:564 describes the entry as cd apps/console && DEV_PROXY_TARGET=http://localhost:[backend port] pnpm dev --port [console port] --strictPort; the entry on this head is that shape with the same name, so the pointer now describes the entry for the first time (on main it did not: the entry said /Users/…). The two extras the entry carries (VITE_SERVER_URL=, exec) contradict nothing the pointer says.
  • PR body: attribution block before Fixes — the platform's own body shape; check-governed-queue-guard.mjs's own self-test fixture reads a body in exactly that order, and Fixes #27668 is line-initial. No flag.
  • Tier of the landing — correction owed to the body, not to the diff. The register (GOVERNED_SURFACES, row ui-claude-tree) carries ui/.claude/** at Tier H ("stays Tier H until it folds into the root .claude/**", maintainer ruling 2026-10-25), and AGENTS.md Prime Directive feat: Comprehensive CRM example demonstrating all ObjectStack protocol features #14 lists every ui/ row as Tier H; only the root .claude/** row is Tier S. The claim comment and the PR body's 「需要你做的:无,席位落地(Tier S)」 say Tier S. So this record does not by itself lift the four reserved acts: landing waits for an authorized APPROVED review from GOVERNED_APPROVERS, then the owning seat lands it. The seat should amend that body line (a body edit; no new head) and ask for the approval. Not a defect of the tree.
  • Port 4010 is also ui/e2e/live/ci/start-backend.sh's LIVE_BACKEND_PORT default — CI only, the same convention the guide's example uses. Two agents copying the template literally would share the example ports, but the guide's 「端口自选空闲高位」 plus --strictPort makes that collision loud, not silent. Note only.

④ Design judgment

  • cwd. The launch runner's cwd is the directory that holds the .claude/ tree: the root .claude/launch.json uses pnpm -C examples/app-showcase, and this file's siblings grid-bulk-demo/gantt-demo use pnpm --dir packages/plugin-grid|gantt, paths that resolve only from ui/. cd apps/console from ui/ follows that convention and the directory exists with package.json (dev: vite) and vite.config.ts.
  • Command. pnpm dev --port 5190 --strictPort forwards to vite --port 5190 --strictPort, overriding the config's server.port: 5180; DEV_PROXY_TARGET is read as process.env.DEV_PROXY_TARGET || 'http://localhost:3000' in vite.config.ts and reaches vite because the cwd is apps/console (the guide's :526 caveat about env not surviving pnpm --filter does not apply). The runner's "port": 5190 matches the CLI port, so readiness polls the right socket.
  • Ports. 4010/5190 are the guide's own per-agent example (:541, :552, :556, :560), clear of the forbidden :3000/:5180 and of the siblings' 5180/5198/5199.
  • Acceptance. On the head grep -n '/Users/' ui/.claude/launch.json → 0 hits. The file parses as JSON with four entries; console-build-test is the one the guide names. Fresh clone: the root pnpm install covers the ui/ workspace and nothing in the entry depends on a path outside it. The dev's fresh-worktree run (vite ready on :5190, /api → ECONNREFUSED :4010 with no backend) is consistent with the code read.
  • Break attempts. Profile exports of DEV_PROXY_TARGET or VITE_SERVER_URL — inline assignments win. cd failing — && short-circuits before exec, bash exits non-zero, no stray process. Port 5190 busy — --strictPort fails loudly rather than drifting onto a neighbour, as the guide requires. Runner launched from the repo root instead of ui/ — the entry fails, but so do both siblings today; no regression against main, where the entry failed everywhere. None breaks the entry; nothing must-fix.

Check-runs on the head: 8 success, 16 skipped, 14 still running — Live E2E UI; Build UI Deps; Lint · CI, release & engine gates; Lint · scoped · tooling self-tests; Lint · scoped · query-options erasure; Lint · scoped · slot lookup & corpus; Lint · docs & code guards; Lint · repo & tooling gates; Lint · PM dispatch-gates; Lint · ESLint; Type Check · debt ledger; Type Check · consumer gates; Type Check · workspace; Type Check · source gates. The landing still waits on every one of them.

Implemented-by: claude/project-thread-233vla
Reviewed-by: session_016WV4d1QkPVVzNz3FJqb2iS

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

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

维护者速读

  • 改了什么:ui/.claude/launch.json 里 console 开发指南让 agent 照抄的 console-build-test 条目,不再写死某台 Mac 上旧 objectui 工作树的绝对路径,改为仓库相对的 cd apps/console,端口用指南里的每 agent 示例(后端 4010、前端 5190)。
  • 为什么改:照指南复制这条的 agent 在任何别的机器上都起不来,而这条正是为了让多个 agent 各用各的端口。
  • 风险与回滚:只改一条本地 preview 配置,不发包、不影响 CI;revert 即回滚。
  • 先看:ui/.claude/launch.json 的 console-build-test 一条(+2/−2)。
  • 两分钟验证:grep -n '/Users/' ui/.claude/launch.json 无输出。
  • 需要你做的:ui/.claude/** 是受管面 Tier H(PR 正文写的「无,Tier S」有误,以本条为准),请批准本 PR(契约复核 PASS 6512221944,Head-sha: ba6223ac2a3c3fc23856ae818c8554b899d0a296)。

席位意见:ACCEPT。契约复核 PASS,CI 全绿。

席位核对

  • 形态: one PR, Fixes #27668, one file ui/.claude/launch.json (+2/−2), skip-changeset. Tier H (register row ui-claude-tree; the claim's first writing said Tier S and was amended).
  • 前提实测: /Users/…/objectui/.wt-aipicker/apps/console at ui/.claude/launch.json:19 on origin/main; the guide's pointer is ui/.claude/skills/objectui-contributor/guides/console-development.md:564 and now describes the entry exactly.
  • 门禁 check-runs: head ba6223ac2a3c3fc23856ae818c8554b899d0a296: 60 check-runs, 44 success, 16 skipped, 0 failed, 0 pending.
  • 接受的偏差: kept VITE_SERVER_URL= (pins the same-origin /api hop against a profile export) and exec (the runner's PID is vite); guide pointer untouched; the dev measured a fresh start (vite ready on :5190, /api proxied to :4010).
  • 范围外去向: none.
  • 落地条款: Tier H: a GOVERNED_APPROVERS approval, then the seat lands it under the maintainer's landing grant for this term (seat thread, 2026-10-29 22:04Z).

Merged via the queue into main with commit 6226e7c Oct 30, 2026
69 checks passed
@os-zhuang
os-zhuang deleted the claude/project-thread-233vla branch October 30, 2026 01:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants