Repository navigation
deps: bump objectui's @objectstack/* to 17.7.0 — eight held cards' conditions are met on npm, and objectui's lockfile still resolves 17.6.0 #11717
Description
Filing gate: ④ a coordination node. One change unblocks many held cards. Filed by the triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015, session_01AavokzJ5DndAwitDXvKy4U) at the unlock scan after @objectstack/spec 17.7.0 reached npm (published 2026-10-06T12:22Z). objectstack-ai/objectstack#21352 merged at 2026-10-06T11:49Z, and the tag commit is 4e4e881427. The shape is objectui#11438's, the 17.6.0 bump. ⛔ Not a claim.
Why one card
These objectui cards are pm:on-hold on "an @objectstack/* release that carries X, and objectui resolves it". Each X was tested against the 17.7.0 tag commit 4e4e881427 with git merge-base --is-ancestor.
| card | its condition | 17.7.0 |
|---|---|---|
| objectui#11649 | carries f5b8e29e37 (PR objectstack-ai/objectstack#21890) |
✅ in tag |
| objectui#11645 | carries 48297ad980 (PR objectstack-ai/objectstack#21833) |
✅ in tag |
| objectui#11545 | carries 6dd99b82c3 (PR objectstack-ai/objectstack#21566) |
✅ in tag |
| objectui#11439 | carries 39119014dc (PR objectstack-ai/objectstack#21344) |
✅ in tag |
| objectui#11428 | carries dcc5ef4c5a (PR objectstack-ai/objectstack#21256) |
✅ in tag |
| objectui#11389 | carries 99e1912afc (PR objectstack-ai/objectstack#21342) |
✅ in tag |
| objectui#11334 (p1) | carries 32d5769080 |
✅ in tag |
| objectui#11417 | carries 32d5769080 |
✅ in tag |
Not released by 17.7.0: objectui#11168 (it waits on a maintainer ruling), objectui#10971 (a producer measurement), objectui#6152, objectui#5144, objectui#3592 and objectui#2763 (each waits on something other than a release).
objectui origin/main still declares "@objectstack/spec": "^17.6.0" in packages/types/package.json, and pnpm-lock.yaml resolves @objectstack/spec@17.6.0 (read at filing). Every row above names "objectui resolves it" as half its trigger. Eight claimants each bumping the lockfile would collide, so this card does it once.
The change
- Update objectui's
@objectstack/*dependencies to 17.7.0, and regeneratepnpm-lock.yamlwith the repository's own tooling. ⛔ Never edit it by hand. - Where a package will import a 17.7.0-only export, raise that package's declared floor (
^17.7.0). The consuming card may do this instead: say which in the PR. - The mirror rides this PR. objectui#11334's placement ruling (
5956401275) says the PR that bumps@objectstack/speccarries the mirror, re-attachingcheckDashboardWidgetChartMeasureArityunder its new name by import. objectui#11417 closes with it. ⛔ No second copy of the check. - Run the full gate set. 17.7.0 also carries changes objectui did not ask for. A gate that goes red on one is fixed here if it is mechanical, and reported here by row if it is not.
One red the bump will meet, by design
This is from the cross-lane memo of domain:spec @ objectui (objectstack-ai/objectstack#6015, comment 6016611286).
- objectui#11624 (landed as
1c2e2c46) pinssortFieldon theobject-master-detail-formdetailsentry as accepted. 17.7.0 carries6ec54f00, which retires that key, so those rows go red at the bump. - The bump flips them to refused, with the spec's retired-key message. It also updates the prose that calls the retirement unreleased:
- the
MasterDetailDetailConfigdocblock inMasterDetailForm.tsx; - the header of
masterDetailDetailsMembers-8071.test.tsxand the header of the types pin; - the
detailsregistration description inplugin-form'sindex.tsx; - the console parity row
object-master-detail-form.details.
- the
After it lands
Each row above then has its Restart-when: met. Triage's next unlock scan releases each hold, after re-reading its own condition on the merged ref. ⛔ No hold is released by this card's own act.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 6, 2026
Claim: PM loop round 1 (maintainer direct dispatch)
Session:
session_01XgevVHGcN8dnegiiY3v75VAccount:
os-support-ai(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-11717-objectstack-17-7-0Worktree:
objectui-issue-11717Domain:
domain:devxSeat:
domain:devx#2(objectui#10917, round-open marker6019163160)File surface: the
@objectstack/*ranges in objectui'spackage.jsonfiles, andpnpm-lock.yamlregenerated by the repository's own tooling (⛔ never by hand). The card's three named riders: the objectui#11334 mirror inpackages/types/src/zod/complex.zod.ts, with its census row inspec-object-refinements-7715.test.tsand the threeOWED TO objectui#11334bookings it strikes; objectui#11417's single-series arm pin; the objectui#11624sortFieldflips in the five places the card lists. Plus the mechanical fixes for gates that 17.7.0 turns red, each named by row in the PR. A non-mechanical red is reported by row, not fixed. Stop on breach and explain in the report.Container & model:
M,mode:subagent,model: opus(default tier;dispatch-gates --tier --repo objectstack-ai/objectuiprinted "no path-derived mandate")Clause-②: yes
Thread-read: none
Serial constraints cleared: PR objectui#11721 (objectui#11686) also edits
pnpm-lock.yamlandpackages/plugin-tree/package.json. That is ordinary concurrency: the later lander mergesmainand regenerates the lockfile with tooling. PR objectui#11600 is the release PR, and PR objectui#11069 (objectui#5250, parked) touches none of this surface. All eight held cards in the body arepm:on-holdwith no assignee, so none is in flight.pnpm-lock.yamlis not aSINGLE_CLAIM_PATHSentry.Clause-②amended fromnotoyesby this seat, after report6024525892. The claim delegated the answer to the dev's measurement on the built declaration closure of@object-ui/types. Report6024525892and PR objectui#11742 measureyes: the emitted zod declarations inline 17.7.0's shapes, and four.d.tsfiles differ in declarations; the two chained checks also narrow the runtime accept set. An at-tier contract review is owed before landing, and it is running.Authority. The maintainer's words in this seat's session chat, verbatim: 「11717 最优先」 and 「11717 如果衍生出相关的阻塞卡片,你也负责派发处理」. Cards derived from this one that block it are dispatched by this seat, each with its own claim.
Placement rulings carried in: objectui#11334
5925828806(triage: the PR that bumps@objectstack/speccarries the mirror) and5956401275(chain the renamedcheckDashboardWidgetChartMeasureArity). Precedent: objectui#11438 (17.6.0), rulings A′5965062249and A″5968177777.Stamp: 2026-10-06T15:08Z · read against objectui
origin/main7300fca; npm@objectstack/speclatest= 17.7.0 (published 2026-10-06T12:22Z), and the lockfile resolves 17.6.0Generated by Claude Code
objectstack-fleet commentedon Oct 6, 2026
This amends my filing body above. Its "Not released by 17.7.0" line lists objectui#6152, and that is wrong. objectui#6152's condition is an
@objectstack/specrelease on npm that refusesresizableColumnsonobject-grid. 17.7.0 does: measured at this write, with{ resizable: true }as the lit control. So objectui#6152 waits on this card, like the eight rows in the table.Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-06T16:20Z. ⛔ Not a claim. ⛔ No scope change for the claim6019218018.For this PR: nothing new to do. objectui#6152's four strokes stay on objectui#6152, which is claimed afresh after this card lands.
A pointer for the claimant: objectui#6152's comment
5961014236lists, as measured at pin89cad75d55, the objectui places that 17.7.0'sobject-gridrow (PR feat(spec)!: an object-grid page block types the seven members the grid reads, and resizableColumns retires for resizable (#21445) objectstack#21463) turns red:operations, which becomes strict:readandimportare refused, the rootREADME.mdexample included;conditionalFormatting;apps/console'sregistry-inputs-spec-parity.test.tsrow forobject-grid.resizableColumns.This card's own rule covers them: fix a mechanical red here, and report a non-mechanical one by row.
objectstack-fleet commentedon Oct 6, 2026
os-dev-report
{ "issue": 11717, "status": "done", "branch": "claude/issue-11717-objectstack-17-7-0", "pr": "https://github.com/objectstack-ai/objectui/pull/11742", "session": "session_01XgevVHGcN8dnegiiY3v75V", "premise_still_valid": true, "summary": "pnpm-lock.yaml resolves @objectstack/* 17.7.0 (pnpm-only regeneration, census: only the seven packages move). The card's three riders are done: the objectui#11334 mirror (checkDashboardWidgetChartMeasureArity chained by import, the census row named, and all three OWED TO objectui#11334 bookings struck by flipping rows to the refusal), objectui#11417's single-series arm pinned, PR objectui#11433's door assertions flipped, DASHBOARD_WIDGET_MULTI_MEASURE_TYPES imported in place of a restated list, and the objectui#11624 sortField rows flipped to refused with the spec's retired-key message, with prose updated in the five places. Every other gate 17.7.0 turned red was fixed here as mechanical, by row; checkPageRequiresKind was attached under ruling B1. One red stays, and it is not mechanical: check:eager-closure (Bundle Analysis), vendor-objectstack +182,909 gzip bytes over main's control. Floors: @object-ui/types ^17.7.0, @object-ui/plugin-dashboard ^17.6.0. Clause-②: measured yes.", "tests": "(1) Full root suite under the lock on the lockfile-only commit 60ed1ad: Test Files 24 failed | 4458 passed | 7 skipped (4489); Tests 41 failed | 60842 passed | 359 skipped (61242). All 24 are rows in the PR. (2) Full root suite under the lock on the PR head 50ed869: Test Files 4 failed | 4494 passed | 7 skipped (4505); Tests 5 failed | 61065 passed | 359 skipped (61429). Two are CI shard 7's rows, fixed in c7bbce48 (twins-spec-by-reference-9736 Page control; exclusion-reason-truthfulness vacuity row). Two are not this branch's: record-details.hideFieldsUncast-9965 timed out at 15000ms under full load and passes alone; date-only-zone-pins-10183 fails only with this worktree's vitest results cache present. Moving node_modules/.vite/vitest/.../results.json aside, the same head passes 27/27, and a control worktree at main 02a38967 passes 27/27. (3) After the fixes: packages/types/ + app-shell previews/ + the two files, 456/457 files green, the date-zone file red with the cache; the three changed or timed-out files rerun 24/24 green. (4) PR CI on 50ed869: 39 success, 3 failure (Test shard 7/8 with its Test aggregate, Bundle Analysis), 3 skipped. Spec Main Shape Gate, Lint, Type Check, Build & E2E, Live E2E (informational, backend 17.7.0) and the other 7 shards are green. CI on c7bbce48 at report time: 24 success, 17 in_progress, 3 skipped, 0 failure. The CI state is in_progress. No ablation was owed: the reverse proofs are the census and cap rows themselves, which went red on the bump-only tree and green with the mirror.", "gates": [ { "cmd": "pnpm install --frozen-lockfile (engine-strict, merged head 25251a80)", "exit": 0 }, { "cmd": "pnpm install (lockfile byte-identical after)", "exit": 0 }, { "cmd": "turbo run build --filter=!@object-ui/site --concurrency=2 (25251a80, 43/43)", "exit": 0 }, { "cmd": "turbo run type-check --concurrency=2 --continue (81/81, on 47b0ff99's tree)", "exit": 0 }, { "cmd": "turbo run lint --concurrency=2 --continue (47/47, 0 errors; 50ed869)", "exit": 0 }, { "cmd": "pnpm exec vitest run (full, 60ed1ad bump-only)", "exit": 1 }, { "cmd": "pnpm exec vitest run (full, 50ed869)", "exit": 1 }, { "cmd": "vitest targeted reruns after fixes (c7bbce48 tree)", "exit": 0 }, { "cmd": "check:lockfile-integrity", "exit": 0 }, { "cmd": "check:lockfile-dedupe", "exit": 0 }, { "cmd": "check:spec-floors", "exit": 0 }, { "cmd": "check:spec-symbols", "exit": 0 }, { "cmd": "check:installed-pin-claims", "exit": 0 }, { "cmd": "check:component-surface-parity (report-only)", "exit": 0 }, { "cmd": "check:doc-snippets", "exit": 0 }, { "cmd": "check:doc-types", "exit": 0 }, { "cmd": "check:doc-examples", "exit": 0 }, { "cmd": "check:readme-exports", "exit": 0 }, { "cmd": "check:new-line-citations", "exit": 0 }, { "cmd": "check:control-bytes", "exit": 0 }, { "cmd": "check:test-path-roots", "exit": 0 }, { "cmd": "check:changeset-claims", "exit": 0 }, { "cmd": "check:pending-changeset-literals", "exit": 0 }, { "cmd": "node scripts/check-changeset-presence.mjs", "exit": 0 }, { "cmd": "node scripts/check-changeset-no-major.mjs", "exit": 0 }, { "cmd": "check:eager-closure", "exit": 1 }, { "cmd": "check:eager-locale-catalogues", "exit": 0 }, { "cmd": "check:skill-examples / prompt-keys / sdui-registration-pins / i18n-keys / i18n-drift / i18n-dead-keys / action-forward-parity / designer-field-key-parity / phantom-deps / unused-deps / registry-bare-names / handler-key-reads / metadata-write-doors / doc-fences / doc-example-ids", "exit": 0 } ], "line_budget": { "additions": 942, "deletions": 574, "files": 85, "against": "merge-base 02a38967 (GitHub reads the same on the PR at c7bbce48); under the 5,000 human-merge line" }, "files_changed": 85, "eager_closure_measurement": { "instrument": "the console build's apps/console/dist/eager-closure.json (emitEagerClosureReport, gzipBytes per eager chunk), read by pnpm check:eager-closure; control = main 02a38967 built with turbo run build --filter=@object-ui/console... in its own worktree (spec 17.6.0); head = 25251a80 (shipped source identical to c7bbce48), same command family; 331 eager chunks on both", "chunk_rows_gzip_bytes": [ { "chunk": "vendor-objectstack", "control": 1421565, "head": 1604474, "delta": 182909 }, { "chunk": "ui-components", "control": 282560, "head": 282557, "delta": -3 }, { "chunk": "framework", "control": 74652, "head": 74670, "delta": 18 }, { "chunk": "src", "control": 176055, "head": 176052, "delta": -3 }, { "chunk": "i18n-locale-en", "control": 44497, "head": 44525, "delta": 28 }, { "chunk": "everything else (326 names)", "control": 1406387, "head": 1406376, "delta": -11 }, { "chunk": "aggregate", "control": 3405716, "head": 3588654, "delta": 182938 } ], "ceilings_that_fired": "MAX_EAGER_CLOSURE_GZIP_BYTES 3,410,284: head over by 178,370. PER_CHUNK_GZIP_CEILINGS vendor-objectstack 1,439,157: head over by 165,317 (PER_CHUNK_BASELINE 1,420,958). ui-components, framework and i18n-locale-en pass. The control passes all of them, with 4.5 KB aggregate headroom.", "attribution_below_chunk": "Instrument: raw and gzip-9 byte sizes of each ESM entry file in the installed @objectstack/spec 17.7.0 against the npm 17.6.0 tarball. Gzip deltas for the entries objectui's shipped code imports: shared +152,445 (raw +522,843; same 79 exports, while the bundle inlines 71 more strictObject( and 58 more lazySchema( call sites); browser (root) +66,383; browser/system +61,940; ui +42,688; browser/kernel +23,229; api +17,065; browser/data +11,196; ai +3,004; identity +956; security +355; contracts +115; automation -862. migrations grew +203,315, but no shipped objectui import names it (only tests do). Other @objectstack packages are small by comparison: lint +9,125, types +6,089, core +1,497, formula +929, client 0, sdui-parser -33. Prose proxy: 211 long string literals (80 chars or more) new in 17.7.0 are found in the head vendor chunk, 57,905 chars, about 19,830 gzip bytes on their own, roughly 11% of the growth.", "not_measured": "Which entries and modules the vendor chunk actually keeps after tree-shaking: the build emits no module-level sizes or sourcemaps for the chunk. So the split of the remaining growth, about 163 KB gzip, is NOT MEASURED. Whether any of it is code the first screen does not need, a lazy-load candidate on the objectui side versus a payback on the objectstack side, is also NOT MEASURED. The shared entry's growth behind an unchanged export list is the strongest objectstack-side payback lead.", "handling": "Left red. MAX_EAGER_CLOSURE_GZIP_BYTES, BASELINE, PER_CHUNK_BASELINE and the headroom constants are untouched, per the PM's guidance and the 11088 precedent (raised only on an explicit maintainer ruling)." }, "clause_2": "yes, by measurement. The @object-ui/types dist .d.ts files were compared, with comments dropped and line order ignored, between main 7300fca (spec 17.6.0, its own worktree) and this branch (17.7.0). 13 files differ, and 4 differ in declarations: zod/index.zod.d.ts (2,498 lines), zod/objectql.zod.d.ts (3,324), zod/public-blocks.zod.d.ts (374) and zod/layout.zod.d.ts (54). The emitted zod declarations inline spec shapes in both directions: typed action:group / action:menu members, new enum members (new-tab, separator-before), new optional keys (ast, bodyExtra), and ai:chat_window leaving the page component type unions. The two chained checks also narrow the runtime accept set. The claim said Clause-② no, and the PR body carries yes.", "mcp_calls": "0", "api_writes": "3 relay strokes, each sent as POST /repos/objectstack-ai/objectstack/dispatches and executed as objectstack-fleet[bot]: (1) pr_create, POST /repos/objectstack-ai/objectui/pulls (draft #11742); (2) label-write assign, POST /repos/objectstack-ai/objectui/issues/11742/assignees (os-support-ai); (3) this os-dev-report comment, POST /repos/objectstack-ai/objectui/issues/11717/comments. git push is not counted. Reads used unauthenticated REST through the proxy.", "open_questions": [], "deviations": [ "PR body and later measurements: the PR body is written once, at creation. It records the full-suite run as NOT MEASURED at PR open, and the eager-closure row in KB only. The byte-precise chunk table, the attribution and the head full-run reading are in this report. If the PR body should carry them, the seat pastes eager_closure_measurement into the Still red row, and the tests line into Tests.", "Clause-② is the measured yes, not the claim's no. The dispatch made the measurement decide.", "objectui#11334's one-dimension pie control: 17.7.0 refuses that pie through the single-series arm, so it cannot parse. The control is stated per arm: no dimensionless-arm issue on it, and a two-measure radar with one dimension parses on both faces.", "objectui#11396's pin said to drop the Omit on MasterDetailDetailConfig at this bump. The Omit is kept, because the 17.7.0 entry still lists sortField as a tombstone. The card lists prose only.", "Zone 3's owner-card searches were not run: this dev's contract leaves dedupe to the seat. Dedupe words are listed below.", "The verify lock was used for build, test, type-check and lint, as objectui AGENTS.md requires, although the dispatch said it does not apply.", "main moved again by 9 commits after the 25251a80 merge. The PR reads mergeable_state behind, and it was not re-merged. The queue rebuilds on main.", "One local full run was taken on the PR head, before the PM's guidance arrived, and it measured the same head CI did. None was started after." ], "out_of_scope_findings": [ "class: none of a/b/c (reported by row on the PR, not red) · carrier: objectui#6152 (triage 6020673439) · 17.7.0 types object-grid operations (strict, no read / import), conditionalFormatting (the list view's rules), and the object-calendar / object-kanban filter (rule array). objectui's renderers, mirrors, root README Data Grid example and several console parity pins sentences still accept or describe the older shapes; no test went red · dedupe words: object-grid operations read import, conditionalFormatting list view rules 17.7.0", "class: none (difference, reported by row) · carrier: objectui#8651 lane, for the seat · ObjectCalendarSchema.calendar keeps .passthrough() while the 17.7.0 spec slot is strict, so objectui admits an unexamined key the spec refuses (the forbidden direction of objectui#8327). The docblock now says so; following the spec by reference would narrow a published door · dedupe words: object-calendar calendar slot passthrough strict 17.7.0", "carrier: none · noted, not filed · scripts/__tests__/date-only-zone-pins-10183 goes red when a worktree's vitest results cache orders files so that a forked child carries TZ from an earlier pin into FormulaFunctions.dateOnlyZone-10866's UTC control (expected 03:00, got 11:00, Asia/Shanghai). The same head passes 27/27 with the cache moved aside; CI is green. No reach: field (test harness only) · dedupe words: date-only zone pins TZ leak forks child vitest cache order", "carrier: none · noted, not filed · ActionDef declares requiresFeature but not its 17.7.0 sibling requiresMembershipReach (both are lowered into visible by the spec's parse). It is inventoried only; whether the runner should read the raw key is unmeasured · dedupe words: requiresMembershipReach ActionDef" ], "leads_measured": "A1 confirmed (seven packages at 17.7.0 on npm, latest 17.7.0). A2 confirmed (ancestor exits: 0 for 32d5769080 / 6ec54f00 / 11d28c17df in 4e4e881427; 1 for 32d5769080 / 6ec54f00 in 617f25f8a4, with the root commit as the control leg at 0). A3(a) disproved (doc-snippets 782/782). A3(b) confirmed as a not-red difference. A3(c): no stale ledger (11344 booking: 0 hits; 11068: struck on main; 11536: still booked, parity green). A4: objectui#11334 and objectui#11417 complete, so Fixes lines for both. A5: types ^17.7.0, plus plugin-dashboard ^17.6.0 by spec-floors. A6: Clause-② yes.", "cleanup": "Control worktrees objectui-issue-11717-base and objectui-issue-11717-ctl removed (node_modules first, no --force). The work worktree /home/user/objectui-issue-11717 is kept, because the PM may continue this branch. No dev server or monitor was started.", "ci_state": "in_progress on c7bbce48 (24 success, 17 in_progress, 3 skipped at report time); Bundle Analysis is expected red (the eager-closure row)" }Session:
https://claude.ai/code/session_01XgevVHGcN8dnegiiY3v75VGenerated by Claude Code
objectstack-fleet commentedon Oct 6, 2026
[待裁] 17.7.0 升级让 console 首屏多加载约 179 KiB(gzip),超出性能预算:按 17.5.0 先例借额度先落地,还是先瘦身?
domain:devx@ objectui 席 2(session_01XgevVHGcN8dnegiiY3v75V)· 2026-10-06T20:14Z维护者速读
@objectstack/*17.7.0 后,用户每次打开 console 首屏要多下载约 179 KiB(gzip,首屏总量约 3.4 MB 的 5%)。这超出了 console 的首屏性能预算,CI 的Bundle Analysis因此红着。其余 41 项检查已绿或在跑,开发 agent 能修的红都已修完。背景与实测
c7bbce48)已完成本卡全部机械工作:锁文件升到 17.7.0;objectui#11334 的镜像与 objectui#11417 的单序列分支已接上;objectui#11624 的sortField已翻转;另修了 17.7.0 带来的十几处机械红。开发 agent 的报告是6024525892。BUDGET_CLOSURE_GZIP_KB: 3504.6,预算3330.4。main上同一检查是绿的。main02a38967,同一构建命令):增量全部落在vendor-objectstack这一块,+182,909 字节;其余 330 块合计净变化约 0。@objectstack/spec的shared入口 +152,445,导出名单没变,增长来自更多严格 schema(多出 71 处strictObject(、58 处lazySchema();其次是根入口 +66,383、ui+42,688。sortField、页面requires要求有kind、element:text退役的标题变体、审批节点配置、一批object-*成员收紧,都会当场拒收,作者或 AI 不会写出保存时才被服务端拒的元数据。同时解锁 9 张在等这次升级的卡(卡正文表里 8 张,加上分诊6020673439更正的 objectui#6152),本 PR 顺带关掉 objectui#11334 与 objectui#11417。Governing text
scripts/check-eager-closure-budget.mjs头部「Raising it」节:「Re-baselining is legitimate — it is how a ratchet advances — but it is a DECISION, so make it visible: update the constant, update the measured figure in the prose attached to it, and say in the PR what the added bytes buy.」5890854293(objectui#11088,本趟已取回):「The ceiling and the headroom assertion … are raised to the new baseline in the same commit …, the PR body states what the 413.8 KB gzip buys …, and two payback cards are filed in the same stroke. The upgrade lands now. Precedent: objectui#5531」。前提(各带复核命令)
Bundle Analysis因 eager-closure 预算失败。复核:GET /repos/objectstack-ai/objectui/commits/HEAD_SHA/check-runs?check_name=Bundle%20Analysis看 conclusion,再读 job 日志 grepBUDGET_CLOSURE_(日志须走 MCPget_job_logs)。main上同一检查是绿的。复核:对main现 head 发同一请求(席位读到d39ac2e5为 success)。vendor-objectstack。这是开发 agent 的实测,席位未重测。复核:两棵树各自构建 console,比对apps/console/dist/eager-closure.json。选项 × 真实代价
vendor-objectstack分块预算与 BASELINE,余量照旧是半个回归量;PR 写明多出的字节换来什么;同笔立回收卡(objectstack 侧:specshared入口在导出不变时涨了 152 KB gzip;是否要 objectui 侧的卡由实测决定)业务含义直译:A = 先赊账把新货上架,账单和还款计划同时写好;B = 等供应商把包装改小再上货,这期间货架上是旧版;C = 自己拆包装重装,省多少不知道。
四轴(业务立场)
os-decision-facets
① 项目长远合理性:A 借额度带具名回收卡,先例两次回收兑现;B 拉长前后端校验分歧;C 消费端绕行,收益未测。
② 实际业务拉动:9 张卡等升级(实测);维护者点名最优先。
③ 防 AI 犯错:A 编辑期响亮拒收;B/C 期间 console 静默接受服务端会拒的文档。
④ 创业阶段不扩散:A 只改既有门禁参数,不加门禁不加豁免;C 新增懒加载结构。
Prior rulings read: eager-closure budget raise → objectui#11088
5890854293(A),objectui#5531(gate header 引用,未逐字取回); ADR none; thread: 本卡60245258926020673439推荐:A,回退 B。只看①选 A;②③④ 是否翻转:否。
置信缺口:摇树后留在首屏的具体模块未测量,所以回收卡能收回多少未知;首屏是否真需要这些 schema 也未测量。
裁后执行
main;在一个提交里改MAX_EAGER_CLOSURE_GZIP_BYTES、BASELINE、PER_CHUNK_BASELINE,头部按 11088 的格式写明分块表、换来什么与回收卡号;shared入口体积;objectui 侧仅在实测指向时立;pm:blocked,Blocked-by:指向新立的 objectstack 瘦身卡;PR 保持草稿。本笔状态:
pm:dispatched→needs-user-decision。认领、assignee 与 PR 都保留;PR 保持草稿。在途的达档契约复核照常进行。Generated by Claude Code
objectstack-fleet commentedon Oct 6, 2026
✅ ACCEPT (work as delivered): PR objectui#11742 at
c7bbce48. Landing waits on the maintainer's ruling6024630321domain:devx@ objectui seat 2 ·session_01XgevVHGcN8dnegiiY3v75V· 2026-10-06T20:25Z. Reviewed against GitHub, not against the report (6024525892).Checklist
main; the first line references the card. The closing lines areFixes #11717,Fixes #11334andFixes #11417, and the body has no other closing keyword. objectui#11334's scope (chain, census row, import list,piepin) and objectui#11417's remaining item (the single-series arm) are both completed in the diff.pulls/11742), under the 5,000-line human-merge line. No path under.claude/**,skills/**,docs/adr/**,AGENTS.md,CLAUDE.md,.github/**orcontent/docs/releases/**. The mirror is chained by import inpackages/types/src/zod/complex.zod.ts, with no second copy (diff read).major.@object-ui/typesisminorfor the two narrowings, which matchesClause-②: yes. Zero-release edits ride the empty-frontmatter11717-bump-prose.c7bbce48: 41 success and 3 skipped by design (push-only coverage, actor-gated dependabot).Lint,Type Check,Spec Main Shape Gate, all eightTestshards andBuild & E2Eare green. The 1 failure isBundle Analysis, the non-mechanical row (PR comment6024667002).6024785014on the PR, PASS atc7bbce48.Clause-②is a measuredyes, and the claim line is amended to match.piecontrol stated per arm (17.7.0 refuses thatpiethrough the single-series arm); theOmitkept onMasterDetailDetailConfig(the 17.7.0 entry still lists the tombstone).Out-of-scope findings
object-grid/object-kanban/object-calendar17.7.0 shape moves (operations,conditionalFormatting,filter): Acceptance notes, carrier objectui#6152 (triage6020673439).ObjectCalendarSchema.calendarkeeps.passthrough()while the 17.7.0 slot is strict: carrier objectui#6152. The card the dev named, objectui#8651, is closed. A pointer comment on objectui#6152 is posted at landing, when the divergence reachesmain.date-only-zone-pins-10183red only with a local vitest results cache: dropped. Every CI shard is green on this head, and it has no reach beyond a local cache.ActionDeflacksrequiresMembershipReach: dropped, because noreach:was measured (the spec's parse lowers it intovisible).Landing route
main, then raisesMAX_EAGER_CLOSURE_GZIP_BYTES,BASELINEandPER_CHUNK_BASELINEin one commit in the objectui#11088 shape. The seat files the payback card(s). A contract review covers the landing head. Then ready, then auto-merge.6024630321.Generated by Claude Code
objectstack-fleet commentedon Oct 7, 2026
Ruling: A. The maintainer's answer to decision request
6024630321domain:devx@ objectui seat 2 ·session_01XgevVHGcN8dnegiiY3v75V· 2026-10-07T00:19Z6024824834. The decision request6024630321is the latest statement of the question.MAX_EAGER_CLOSURE_GZIP_BYTES),BASELINEand thevendor-objectstackrow ofPER_CHUNK_BASELINE/ its per-chunk ceiling are raised in one commit of PR objectui#11742, in the objectui#11088 shape:REGRESSION_THIS_GATE_MUST_CATCH_BYTES.A payback card is filed in the same stroke. When it lands, the ceiling and
BASELINEcome down by the amount it recovers.needs-user-decision→pm:dispatchedin this act. The claim, the assignee and PR objectui#11742 are unchanged.claude/issue-11717-objectstack-17-7-0. It mergesmain(13 commits behind), re-measures on the merged head, and raises the constants. An at-tier contract review then covers the landing head, and the PR goes ready and to auto-merge.Generated by Claude Code
objectstack-fleet commentedon Oct 7, 2026
os-dev-report
{ "issue": 11717, "round": 2, "status": "done", "branch": "claude/issue-11717-objectstack-17-7-0", "pr": "https://github.com/objectstack-ai/objectui/pull/11742", "session": "session_01XgevVHGcN8dnegiiY3v75V", "premise_still_valid": true, "summary": "Round 2 carried out ruling A (6027998226, verbatim 「A 抬预算+回收卡 (Recommended)」, answering decision request 6024630321). (1) origin/main 9b673e54 was merged as a merge commit, c1e32e96. git merged it with no conflict, the lockfile included. pnpm install --frozen-lockfile exits 0. The 43 test files the merge brought in pass against 17.7.0, so the merge brought no new red to fix. (2) The eager closure was re-measured on c1e32e96 against a 9b673e54 control built the same way in its own worktree. Aggregate +183,008, of which vendor-objectstack is +182,909. (3) One commit, b680973f, raises the line in the objectui#11088 shape. BASELINE goes to 3,591,028 over 331 of 2451 chunks on c1e32e96. MAX_EAGER_CLOSURE_GZIP_BYTES goes from 3,410,284 to 3,637,000 (baseline + 45,568, rounded to the thousand; headroom 0.50x). vendor-objectstack's PER_CHUNK_BASELINE goes from 1,420,958 to 1,604,474 and its ceiling from 1,439,157 to 1,623,000 (0.20x). A new header section, 'RAISED A FOURTH TIME, ON EXPLICIT MAINTAINER RULING (objectui#11717)', carries the ruling, the chunk table with both commits and the instrument, what the bytes buy, and payback objectstack#22044. REGRESSION_THIS_GATE_MUST_CATCH_BYTES is untouched. There is no exemption and no lazy import, and the other three per-chunk rows passed and did not move. (4) The container restarted after b680973f was committed and before it was pushed. Both commits were re-read as unverified, and every gate was re-run on b680973f before the push. The PR body was updated once.", "tests": "All on b680973f after the container restart, unless a line says otherwise. Exit codes were written to disk before any pipe. (a) Under the lock: pnpm exec vitest run --maxWorkers=2 scripts/__tests__/check-eager-closure-budget.test.ts gives 'Test Files 1 passed (1) / Tests 179 passed (179)' and 'VERDICT command-exit 0'. With scripts/__tests__/check-installed-spec-pin-claims.test.ts beside it, the result is 'Test Files 2 passed (2) / Tests 208 passed (208)', VERDICT 0. (b) The 43 test files the main merge brought in ran under the lock before the restart, on the c1e32e96 tree. The only extra state then was this round's uncommitted scripts/ and .changeset edits, which those tests do not read. Result: 'Test Files 43 passed (43) / Tests 376 passed (376)', VERDICT 0. (c) Also before the restart: the 9 suites that name the edited gate scripts gave 'Test Files 9 passed (9) / Tests 318 passed (318)', VERDICT 0. (d) The full-suite readings from round 1 are now pasted into the PR's Tests section. On 60ed1ad: 24 failed | 4458 passed | 7 skipped files; 41 failed | 60842 passed | 359 skipped tests. On 50ed869: 4 failed | 4494 passed | 7 skipped files; 5 failed | 61065 passed | 359 skipped tests. Two of those failures were fixed in c7bbce48 (CI on c7bbce48: 41 success, 3 skipped, 1 failure, Bundle Analysis only). The other two are not this branch's: a timeout under load, and the vitest results-cache artefact. No full local suite ran this round, as directed. No ablation was owed: the reverse proof is the gate itself. The retired constants red on the c1e32e96 build (check:eager-closure exit 1, round-2 measurement), and the new ones are green on the same build (exit 0).", "eager_closure_measurement": { "instrument": "pnpm exec turbo run build --filter=!@object-ui/site --concurrency=2 in each worktree under scripts/pm/os-verify-lock.sh (control: VERDICT command-exit 0, 328s; head: VERDICT command-exit 0, 372s, 43/43 tasks), then pnpm check:eager-closure, which reads apps/console/dist/eager-closure.json; same container", "control": "9b673e54 (origin/main), its own worktree, 17.6.0 resolved: 3,408,020 over 331 of 2451 chunks", "head": "c1e32e96 (merged head), 17.7.0: 3,591,028 over 331 of 2451 chunks", "rows": { "vendor-objectstack": [ 1421565, 1604474, 182909 ], "ui-components": [ 283061, 283079, 18 ], "framework": [ 74774, 74785, 11 ], "src": [ 176172, 176181, 9 ], "i18n-locale-en": [ 44592, 44620, 28 ], "everything else (326 names)": [ 1407856, 1407889, 33 ], "aggregate": [ 3408020, 3591028, 183008 ] }, "re_derived_after_restart": "Both eager-closure.json files were re-read after the restart and every row above was re-derived from them, matching to the byte.", "attribution_below_chunk": "This was not measured by a build: the build records no module-level sizes. The round-1 entry-file byte diff of the two installed releases stands. spec shared was +152,445 gzip as a standalone file, then browser root +66,383, browser/system +61,940, ui +42,688 and browser/kernel +23,229." }, "gates": [ { "cmd": "pnpm install --frozen-lockfile (c1e32e96 before the restart; b680973f after it)", "exit": 0 }, { "cmd": "pnpm check:eager-closure (b680973f, console build of c1e32e96; b680973f changes no bundler input). Prints 'Console eager closure is 3506.9 KB gzipped across 331 of 2451 chunks (budget: 3551.8 KB, headroom: 44.9 KB)', aggregate 0.50x, vendor-objectstack 1566.9 / 1585.0 KB 0.20x", "exit": 0 }, { "cmd": "pnpm check:eager-closure (c1e32e96 with the retired constants, the round-2 measurement)", "exit": 1 }, { "cmd": "vitest scripts/__tests__/check-eager-closure-budget.test.ts (179/179)", "exit": 0 }, { "cmd": "vitest check-eager-closure-budget + check-installed-spec-pin-claims tests (208/208)", "exit": 0 }, { "cmd": "pnpm check:new-line-citations: 'VERDICT new-cross-file-line-citations: 0 new citation(s), enforcement report-only'", "exit": 0 }, { "cmd": "pnpm check:control-bytes: 'OK (scanned 7745 tracked text file(s); skipped 85 binary)'", "exit": 0 }, { "cmd": "pnpm check:changeset-claims: 'No pending changeset names a file this change touches.'", "exit": 0 }, { "cmd": "pnpm check:pending-changeset-literals: 'No test source names a pending changeset.'", "exit": 0 }, { "cmd": "pnpm check:installed-pin-claims (the ledger entry for the gate file re-counted to 1 site): 'OK'", "exit": 0 }, { "cmd": "node scripts/check-changeset-presence.mjs: 70 source file(s) of 16 released package(s), 9 changeset(s) declared", "exit": 0 }, { "cmd": "node scripts/check-changeset-no-major.mjs: 'No changeset declares a major bump.'", "exit": 0 }, { "cmd": "pnpm type-check:scripts (tsc -p tsconfig.scripts.json), under the lock", "exit": 0 }, { "cmd": "vitest: 43 merged-in test files on the c1e32e96 tree (376/376)", "exit": 0 } ], "line_budget": { "round_2_commit_b680973f": "4 files, +143 / -35", "pr_against_main": "87 files, +1083 / -607 against 9b673e54, the lockfile included; under the 5,000-line human-merge line", "governed_paths": "none (.claude/**, skills/**, docs/adr/**, AGENTS.md, CLAUDE.md: 0 files)" }, "files_changed": [ "c1e32e96 (merge of origin/main 9b673e54, no conflict, no hand edits)", "scripts/check-eager-closure-budget.mjs (b680973f)", "scripts/__tests__/check-eager-closure-budget.test.ts (b680973f: rendered literal 3306.8 to 3506.9 at its two pins, and the ledger case's history comment)", "scripts/check-installed-spec-pin-claims.mjs (b680973f: LEDGER entry for the gate file, sites 2 to 1)", ".changeset/11717-objectstack-17-7-0.md (b680973f: the '@object-ui/console': patch line and bullet)" ], "changeset": "@object-ui/console is not private (no private field), is in .changeset/config.json's fixed group, and is not in ignore. Per AGENTS.md section 9, a real bump bullet is the right form, not an empty declaration. Following 6158e4c, the bump changeset 11717-objectstack-17-7-0 gains '@object-ui/console': patch and a bullet for the closure delta and the budget re-pin.", "mcp_calls": "0. No MCP tool was called this round. Reads went through gh api and curl over REST.", "api_writes": "2 relay strokes, each sent as POST /repos/objectstack-ai/objectstack/dispatches and executed as objectstack-fleet[bot]. (1) issue_patch on PATCH /repos/objectstack-ai/objectui/issues/11742 (the PR body): run 37554090575 success; read-back '23230 byte(s) sent, 23230 stored — identical'. (2) This os-dev-report comment, POST /repos/objectstack-ai/objectui/issues/11717/comments, through scripts/pm/post-stamped.mjs. git push (c7bbce48..b680973f, not forced) is not counted. No ready, auto-merge, label or assignee action was taken.", "open_questions": [], "deviations": [ "The container restarted after b680973f was committed and before it was pushed. Following the PM's recovery note, c1e32e96 and b680973f were re-read hunk by hunk as unverified, and the gates were re-run on b680973f. The console build in apps/console/dist survived the restart and was not rebuilt. It was built at c1e32e96, and b680973f touches only scripts/ and .changeset/, which no bundler reads. Both eager-closure.json files were re-read and the table re-derived to the byte.", "The 43 merged-in test files and the 9 sibling script suites ran before the restart, not after it. Their readings are cited with the tree they ran on.", "One file outside the gate and its test moved in the raise commit: scripts/check-installed-spec-pin-claims.mjs. Its LEDGER entry for the gate file counted 2 historical 17.6.0 sites, and the provenance sentence that must cite BASELINE's live commit now names the 17.7.0 build c1e32e96. check:installed-pin-claims reported 'entry says 2 site(s), the tree has 1' and was fixed by re-counting the entry. This is mechanical, and the gate is green.", "The PR title still reads '... one non-mechanical red reported by row (objectui#11717)'. Only the body was in the write budget, so the title was not touched. If the seat wants to retitle, a suggested title is: '... ; the eager-closure line raised on maintainer ruling A (objectui#11717)'.", "The worktree /home/user/objectui-issue-11717 is kept, not removed, so a patch round can continue in it, as this recovery did. The control worktree objectui-issue-11717-ctl2 was removed: node_modules first, then git worktree remove without --force, exit 0.", "The commit trailers are the model-free pair from the dispatch contract (Claude-Session and 'Co-authored-by: Claude'). A harness reminder asked for a model-named trailer. It was not followed, because the agent contract's precedence clause applies." ], "out_of_scope_findings": [ "None new in round 2. Round 1's Acceptance notes and its two 'differences no gate reads' rows (objectui#8651 lane; objectui#6152) stand unchanged." ], "cleanup": "No process of this run is alive: the restart ended all of them, and nothing was started in the background after it. ctl2 worktree removed. The objectui-issue-11717 worktree is kept for patch rounds.", "ci_state": "in_progress. PR CI on b680973f at report time: 23 success, 18 in_progress, 3 skipped, 0 failure. Bundle Analysis, Lint and Type Check are in_progress. The five Changeset checks succeeded. Per the contract, the report does not wait on CI." }objectstack-fleet commentedon Oct 7, 2026
✅ Round 2 accepted; PR objectui#11742 is ready, with auto-merge on (queue landing)
domain:devx@ objectui seat 2 ·session_01XgevVHGcN8dnegiiY3v75V· 2026-10-07T01:08Z. Reviewed against GitHub, not against report6028471471.b680973f=c1e32e96(merge oforigin/main9b673e54; its diff tomainis exactly the branch's own content) +b680973f(the raise under ruling A6027998226, 4 files +143/−35).MAX_EAGER_CLOSURE_GZIP_BYTES3,410,284 → 3,637,000, which isBASELINE3,591,028 (measured onc1e32e96) plus 45,568, rounded;vendor-objectstackbaseline 1,420,958 → 1,604,474, and its ceiling → 1,623,000;REGRESSION_THIS_GATE_MUST_CATCH_BYTESuntouched;sharedentry grew +152 KB gzip from 17.6.0 to 17.7.0 with the same exports, and objectui's console first screen carries it (the payback owed by objectui's 17.7.0 budget raise) objectstack#22044.b680973f: 42 success and 3 skipped by design (push-only coverage, actor-gated dependabot); 0 failure.Bundle Analysisis green: 3506.9 KB against 3551.8 KB (6028487050).6028656926on the PR, PASS atb680973f, the landing head.check-governed-merges --pr objectstack-ai/objectui#11742reads not governed (0 of 87 paths), 1,690 lines, under the 5,000 line;mergeableisclean;Fixes #11717,Fixes #11334andFixes #11417.pr_ready+automerge_enablethrough the relay (run 37555477827). Read back:draft: false, auto-merge on.Fixescards closed;ObjectCalendarSchema.calendarpassthrough pointer on objectui#6152, per ACCEPT6024824834.Generated by Claude Code
objectstack-fleet commentedon Oct 7, 2026
Landed: PR objectui#11742 merged through the queue as
c0862c1cdomain:devx@ objectui seat 2 ·session_01XgevVHGcN8dnegiiY3v75V· 2026-10-07T01:33Zorigin/mainby content:pnpm-lock.yamlresolves@objectstack/spec@17.7.0(2 keys), with 0 keys left at 17.6.0, which is the control;packages/types/package.jsondeclares"@objectstack/spec": "^17.7.0";complex.zod.tschains.superRefine(checkDashboardWidgetChartMeasureArity);MAX_EAGER_CLOSURE_GZIP_BYTES = 3_637_000(ruling A6027998226).completedby the PR's closing lines: this card, objectui#11334 and objectui#11417. No other objectui issue closed in that window (closed-issue list read for 01:29–01:31Z).pm:dispatchedremoved here and the claim's assignee released.pm:on-holdremoved from objectui#11334 and objectui#11417, each with a note.6020673439), now have the release half of theirRestart-when:met onmain. Triage's unlock scan releases each one after re-reading its own condition.sharedentry grew +152 KB gzip from 17.6.0 to 17.7.0 with the same exports, and objectui's console first screen carries it (the payback owed by objectui's 17.7.0 budget raise) objectstack#22044 lowers the eager-closure ceiling by what it recovers, once objectui resolves it.ObjectCalendarSchema.calendarpassthrough difference now onmainis pointed at objectui#6152 in this act.Generated by Claude Code
chore(deps): resolve @objectstack/* 17.7.0; attach the objectui#11334…