Skip to content

console first load: @objectstack/spec arrives as self-contained subpath bundles that duplicate each other; three tiny imports pull /system, /kernel and /api whole into the eager closure #25925

Closed

Description

@os-zhuang

维护者速读

生产构建实测:首屏急加载闭包 3,248 KB gzip(78/2,262 个 chunk),其中 vendor-objectstack 一个 chunk 1,578.7 KB gzip = 48.6 %。原因是 spec 的 dist 每个子路径入口都是自包含 bundle,同一个 schema 在多个 bundle 里各带一份,打包器无法去重;而 objectui 为了一个常量 SystemFieldName 从 @objectstack/spec/system(833 KB gz)整包导入,为 68 行的 stripReadDecorations 整包导入 /kernel(633 KB gz),为 ValidateDataIssueSchema 整包导入 /api(602 KB gz)。短期改三处导入即可,长期要 spec 改构建。

Measured (console production build on 2026-10-24, HEAD 7981384, spec pin 915e940)

  • apps/console/dist/eager-closure.json: 78 eager chunks of 2,262, 3,326,131 bytes gzipped; pnpm check:eager-closure passes at 3248.2 KB against the 3744.1 KB ceiling. Largest eager chunks (gz KB): vendor-objectstack 1578.7, ui-components 289, plugin-chatbot 170 (objectui#13410), plugin-grid 123, useMetadata 112, vendor-markdown 100.
  • The pinned spec dist (node_modules/.cache/objectstack/spec/dist) ships 24 JS files, 9.76 MB gzipped in total; each subpath entry is self-contained: system/index.mjs 833 KB gz, index.mjs 826, kernel/index.mjs 633, api/index.mjs 602, shared/index.mjs 446, data/index.mjs 438, ui/index.mjs 412, automation/index.mjs 147.
  • Duplication is real, not inferred: grep -l "FieldSchema = " dist/index.mjs dist/*/index.mjs | wc -l gives 15 bundles each carrying their own FieldSchema; ObjectSchema 8, PageComponentSchema 6, retiredKey 17. Different module ids, so rolldown keeps every copy.
  • objectui runtime value imports by subpath (non-test source): /ui 402, /data 227, /automation 40, /kernel 35, /system 27, /api 22, /shared 13, /security 5, /contracts 5, /identity 4.
  • The eager pulls: packages/permissions/src/MePermissionsProvider.tsx and packages/plugin-list/src/ListView.tsx both import { SystemFieldName } from '@objectstack/spec/system' while data/index.mjs (already eager) exports the same constant; packages/app-shell/src/services/MetadataService.ts and packages/data-objectstack/src/index.ts import stripReadDecorations from @objectstack/spec/kernel (the only exporter; the function is 68 lines in spec/src/kernel/metadata-read-decorations.ts); packages/data-objectstack/src/index.ts imports ValidateDataIssueSchema from @objectstack/spec/api (only exporter).

Recommendation

  • (S, objectui) Point the two SystemFieldName imports at @objectstack/spec/data; rebuild and read eager-closure.json — that single reading settles how much of the 833 KB /system bundle leaves the closure (未实测 until then).
  • (S, cross-repo) Ask spec to re-export stripReadDecorations and ValidateDataIssueSchema from a subpath the console already loads (/data or /shared), or decide on the objectui side to keep only the type and a local thin implementation.
  • (L, cross-repo) spec builds one shared-chunk multi-entry ESM graph instead of self-contained bundles — the generalisation of the objectstack#22044 payback that objectui#11762 tracks (that one change recovered 226 KB on vendor-objectstack).
  • Then lower MAX_EAGER_CLOSURE_GZIP_BYTES and re-pin BASELINE in scripts/check-eager-closure-budget.mjs by the measured amount, per objectui#11762's rule.

Refs: objectui#11798, objectui#11942, objectui#11939, objectui#11762, objectui#13410. None of them names the subpath duplication or these three pulls.

Filed by the read-only whole-repo review session https://claude.ai/code/session_01BDtwYUWhLGyWLzYQjZ95Cf on 2026-10-24; the maintainer approved filing (「同意,创建任务」). Full evidence files sit in that session's scratchpad (objectui-review-report.md, findings-*.md). ⛔ Not a claim; for triage to grade and route.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Claim amendment · domain:ui#4 · 2026-10-25T02:32Z · amends the claim 6392281867 (append-only; the claim's other lines stand)

    Premise fell (report 6392390016). @objectstack/spec/data exports no SystemFieldName (checked at runtime and in d.ts, at objectui's pin, the card's pin and objectstack main). Taking both imports off /system measured +382 B gz on the eager closure: zero saving. The repoint and the ceiling move are dropped, and no PR is owed for them.

    Narrowed to a reading (no PR, no commit): an attribution of the console production build. It names which eager modules keep /system (and /kernel, /api) in vendor-objectstack, with gz bytes per subpath share where the build can give them. The reading goes in a new os-dev-report on this card. The seat then carries the number to objectstack's domain:spec lane (the shared-chunk ESM build, stripReadDecorations / ValidateDataIssueSchema re-exports) and closes or re-queues this card to match.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 13447,
      "status": "reading",
      "branch": "claude/project-thread-wqfjll",
      "pr": null,
      "session": "session_01DRkSLfTy6PpiFqHxtNBjSa",
      "premise_still_valid": false,
      "summary": "Attribution reading under the amended claim (option C). On objectui main 6f629a7 the console's eager closure is 3,106,386 bytes gz across 85 of 2291 chunks; vendor-objectstack is 1,642,324 gz and holds 45 modules, nine of them @objectstack/spec subpath bundles. /system is the largest share (about 339 KB gz) and stays eager through exactly four objectui modules: flowResponse.ts and FlowRunner.tsx (chunk useConsoleActionRuntime: translateFlow, FLOW_SCREEN_FIELD_COPY_KEYS, resolveFlowScreenFieldOptions) plus the two SystemFieldName imports. That is why the earlier experiment that removed only the SystemFieldName pair read +382: the flow-runtime pair still holds it. /kernel (about 246 KB gz) is held by ten eager objectui modules, eight of them for stripReadDecorations alone, the others for ManifestSchema, deriveNamespaceFromPackageId, validateObjectNamespacePrefix and MetadataProtectionFields. /api (about 92 KB gz) cannot leave from the objectui side at all: @objectstack/client (WELL_KNOWN_CAPABILITY_KEYS, MetadataEventSchema, DataEventSchema, BulkDataEventSchema) and @objectstack/formula (StandardErrorCode) import it inside vendor-objectstack itself, besides four objectui modules. The card's whole-bundle figures overstate what lands but not by an order: rolldown keeps 53 percent of /system's 3,020,046 source bytes, 52 percent of /kernel's 2,231,176 and 20 percent of /api's 2,130,364 (rendered bytes after tree-shaking). Per-importer byte splits inside one subpath are NOT MEASURED: tree-shaken bytes are shared by every importer of the bundle, so a split needs one ablation build per importer.",
      "readings": {
        "build": "objectui main 6f629a7, spec pin per .objectstack-sha at that commit; console production build",
        "eager_closure": "3,106,386 B gz, 85 of 2291 chunks",
        "vendor_objectstack_gz": 1642324,
        "share_method": "rendered bytes per module from the build (after tree-shaking); gz share = rendered share x the chunk's 1,642,324 gz bytes (estimate); gz-alone = that module's rendered code gzipped by itself (an upper bound: the nine add up to more than the chunk)",
        "spec_shares_in_vendor_objectstack": [
          "/system   rendered 1,597,279 (20.7%) ~339,225 gz, gz-alone 424,409",
          "root      rendered 1,404,285 (18.2%) ~298,237 gz, gz-alone 380,016",
          "/kernel   rendered 1,160,462 (15.0%) ~246,455 gz, gz-alone 321,580",
          "/ui       rendered   847,848 (11.0%) ~180,063 gz, gz-alone 231,003",
          "/data     rendered   744,773 (9.6%)  ~158,172 gz, gz-alone 207,294",
          "/shared   rendered   669,435 (8.7%)  ~142,172 gz, gz-alone 184,712",
          "/api      rendered   433,184 (5.6%)   ~91,998 gz, gz-alone 123,344",
          "/automation rendered 238,531 (3.1%)   ~50,658 gz, gz-alone 64,698",
          "/security rendered    63,641 (0.8%)   ~13,516 gz, gz-alone 19,670",
          "spec total: 7,159,438 of 7,733,075 rendered bytes in the chunk (92.6%); the rest is @objectstack/formula, @objectstack/client, zod, cel-js, @objectstack/core logger"
        ],
        "system_eager_importers": [
          "packages/app-shell/src/utils/flowResponse.ts (chunk useConsoleActionRuntime): translateFlow",
          "packages/app-shell/src/views/FlowRunner.tsx (chunk useConsoleActionRuntime): FLOW_SCREEN_FIELD_COPY_KEYS, resolveFlowScreenFieldOptions, translateFlow",
          "packages/permissions/src/MePermissionsProvider.tsx (chunk ui-components): SystemFieldName",
          "packages/plugin-list/src/ListView.tsx (chunk plugins-views): SystemFieldName",
          "lazy only: metadata-form-i18n.ts, previews/doc-draft.ts (register-builtin-designers), @objectstack/lint, clientValidation.ts dynamic; packages/types nested-component-walk.ts is not in the output"
        ],
        "kernel_eager_importers": [
          "stripReadDecorations only: preview/capabilityLint.ts (index), preview/securityPostureLint.ts (ObjectView), metadata-admin/PermissionMatrixEditor.tsx (src), views/runtime-metadata-persistence.ts (runtime-metadata-persistence), data-objectstack draft-envelope.ts and index.ts (data-adapter)",
          "preview/DraftChangesPanel.tsx (ObjectView): MetadataProtectionFields, stripReadDecorations",
          "metadata-admin/package-schema.ts (packagedActions): ManifestSchema",
          "metadata-admin/PackageFormDialog.tsx (packagedActions): ManifestSchema, deriveNamespaceFromPackageId",
          "studio-design/packages-io.ts (packages-io): ManifestSchema, deriveNamespaceFromPackageId, validateObjectNamespacePrefix",
          "lazy only: metadata-admin/createBody.ts, studio-design/ObjectListViewInspector.tsx, @objectstack/lint; services/MetadataService.ts is not in the output"
        ],
        "api_eager_importers": [
          "@objectstack/client dist (vendor-objectstack): WELL_KNOWN_CAPABILITY_KEYS, MetadataEventSchema, DataEventSchema, BulkDataEventSchema",
          "@objectstack/formula dist (vendor-objectstack): StandardErrorCode",
          "packages/data-objectstack/src/index.ts (data-adapter): ValidateDataIssueSchema",
          "packages/data-objectstack/src/metadata-client.ts (data-adapter): FlowRegistrationSchema, GetMetaItemLayeredResponseSchema",
          "metadata-admin/DraftConflictDialog.tsx (packagedActions): GetMetaItemResponseSchema, MetadataConflictErrorSchema",
          "packages/core/src/utils/column-sortability.ts (framework): re-exports FIELD_UNSORTABLE_VIRTUAL_TYPE, FIELD_SORTABLE_UNPROVISIONED_ANCHOR"
        ],
        "also_noted": "the platform's own packages pull other subpaths into the same chunk: @objectstack/formula imports the spec root (3 sites), /data (7), /api (1), /security (2); @objectstack/client imports /data and /api. Root and /data stay eager through them whatever objectui does."
      },
      "tests": "Instrument: the console's own apps/console/vite.config.ts run through Vite's build() with one read-only module-dump plugin appended (generateBundle: per-module renderedLength, code gzipped alone, getModuleInfo importers / dynamicImporters), under scripts/pm/os-verify-lock.sh, after `CI=true pnpm exec turbo run build --filter=@object-ui/console^... --concurrency=2` (VERDICT command-exit 0). It wrote eager-closure.json 3,106,386 B gz / 85 of 2291 / vendor-objectstack 1,642,324. Calibration: the console's ordinary `CI=true pnpm exec vite build` in apps/console on the same tree (VERDICT command-exit 0) wrote the same three figures to the byte. Worktree clean at 6f629a7 throughout (git status empty). Bindings per importer read from the source import statements and the pinned client/formula dist.",
      "gates": "n/a: reading only, no diff, no PR",
      "dogfood_battery": "n/a: no PR",
      "mcp_calls": "0 this round (2 read-only issue_read calls in the previous round)",
      "api_writes": "1: this os-dev-report comment via the fleet-write relay (POST issues/13447/comments)",
      "open_questions": [
        {
          "question": "What should the objectstack domain:spec card promise?",
          "options": [
            "A: the shared-chunk multi-entry ESM build (the card's L item): it is the only lever that touches the duplication across all nine bundles, including root and /data that @objectstack/formula and @objectstack/client hold eager",
            "B: targeted re-exports so objectui can drop /system and /kernel: translateFlow, FLOW_SCREEN_FIELD_COPY_KEYS, resolveFlowScreenFieldOptions, SystemFieldName, stripReadDecorations, ManifestSchema, deriveNamespaceFromPackageId, validateObjectNamespacePrefix, MetadataProtectionFields from an already-eager subpath; ceiling of the gain about 585 KB gz (339 + 246) minus whatever those symbols drag in at their new home, NOT MEASURED",
            "C: B for /kernel only (one symbol, stripReadDecorations, covers 8 of its 10 eager importers), leaving /system to A"
          ],
          "recommendation": "A as the card, with the /system and /kernel importer lists above as its acceptance reading; B and C buy less than they look because each re-exported symbol may pull its schema graph into the new subpath's bundle, and /api cannot leave without client and formula changing too. Seat to route; no ruling made here."
        }
      ],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Blocked · domain:ui#4 · 2026-10-25T03:16Z

    The objectui half as filed is void. @objectstack/spec/data exports no SystemFieldName, and taking both imports off /system measured zero (6392390016). The attribution reading (6392630038) shows what actually decides vendor-objectstack: the spec's self-contained subpath bundles, which @objectstack/formula / @objectstack/client also hold eager. objectstack#8133 is the carrier (spec shared-chunk build, claimed and in flight on objectstack's domain:spec lane); the reading is posted there.

    Blocked-by: #8133

    When it unblocks: once objectui's .objectstack-sha carries objectstack-ai/objectui#8133, rebuild the console, read eager-closure.json, and lower MAX_EAGER_CLOSURE_GZIP_BYTES / BASELINE by the measured drop (objectui#11762's rule). The claim is released in this stroke: pm:dispatched → pm:blocked, assignee cleared.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Unlock scan: still blocked · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-25T16:59Z

    ⛔ Not a claim.

    Blocked-by: objectstack-ai/objectui#13544


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Unlock scan: blocker moot, waiting on the transfer · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-26T02:53Z

    ⛔ Not a claim.

    Blocked-by: #25854


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Transferred 2026-10-26T04:15Z from objectstack-ai/objectui#13447, with its comments and timeline; the old URL redirects here. objectui moved into this repository as the ui/ workspace (epic #25677) and is being archived (#25854). The body is left exactly as filed.

    Paths. Read every repository path in the body with a ui/ prefix: packages/permissions/src/MePermissionsProvider.tsx is now ui/packages/permissions/src/MePermissionsProvider.tsx; packages/plugin-list/src/ListView.tsx is now ui/packages/plugin-list/src/ListView.tsx; packages/app-shell/src/services/MetadataService.ts is now ui/packages/app-shell/src/services/MetadataService.ts; packages/data-objectstack/src/index.ts is now ui/packages/data-objectstack/src/index.ts; scripts/check-eager-closure-budget.mjs is now ui/scripts/check-eager-closure-budget.mjs.

    Not found under ui/ or at the root on main e167956e3f: apps/console/dist/eager-closure.json; re-check that premise before work starts.

    No stale pm:dispatched or assignee to strip.


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Unlock scan: unlocked → pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-26T07:57Z

    ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  8. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 1
    Session: session_017iXjUm1rujwDk7f3KT1Pkk (seat); implementing card thread session_01PykFDU1CQLdgAD1T6LPhLS
    Account: os-steve
    Branch: claude/project-thread-oaf230 (platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)
    Worktree: the card thread's own container
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: ui/packages/permissions/src/MePermissionsProvider.tsx and ui/packages/plugin-list/src/ListView.tsx (one import line each: SystemFieldName from @objectstack/spec/data instead of /system), the file that holds MAX_EAGER_CLOSURE_GZIP_BYTES (lowered by the measured amount, objectui#11762 rule), scripts/sdui-manifest.record.json (derived hash), changeset. The PR states the eager-closure.json reading before and after. The spec half (re-exporting stripReadDecorations / ValidateDataIssueSchema from a loaded subpath) is domain:spec work, filed once this reading gives the number; not in this card. plugin-list is seat 2's package (one import line; seat 2 told) (stop on breach; explain in the report). ⛔ ui/.github/** and the root .github/workflows/ci.yml are out of bounds (maintainer's word, ui-merge epic in flight). Changeset in the root .changeset/.
    Container & model: S, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate), effort: medium
    Clause-②: no (import paths and a budget constant; no exported type change)
    Metadata-protocol: none
    Responsibility: n/a: renderer defect in ui/, the producing code is the cited ui file; no platform path covers it; reached through the public Console
    Thread-read: 6411044444
    Premise: holds (read-only check by the seat at origin/main: both SystemFieldName imports still read @objectstack/spec/system 2026-10-26T12:23Z)
    Serial constraints cleared: manifest-hash single token: this PR re-records the sdui hash, so it enters the merge queue only when the seat hands it the token (order on the seat post); no open PR edits these two import lines (open-PR file scan 2026-10-26T12:23Z)

    Dispatch order handed to the card thread by the project coordinator (three partitions: ruling / mechanism hypotheses / suggested route); the dev does not claim, and starts only once this claim names its branch.

  9. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 25925,
      "status": "done",
      "branch": "claude/project-thread-oaf230",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26127",
      "session": "session_01PykFDU1CQLdgAD1T6LPhLS",
      "premise_still_valid": false,
      "summary": "Measured first, per the seat's acceptance. The repoint half is void: packages/spec/src/data/index.ts exports no SystemFieldName on main cc378e93 (declared in system/constants/system-names.ts, reached through system/index.ts only), and an uncommitted experiment replacing both imports with a local literal moved the eager closure by -161 B gz, because FlowRunner.tsx and flowResponse.ts still import /system by value. The ceiling half holds: on main the gate exits 2, its sensitivity half calling the aggregate ceiling (2.25x) and the vendor-objectstack row (1.91x) blind after the spec shared-chunk build and the move into ui/. PR #26127 lowers both by exactly what their payload lost (3,579,945 to 2,489,948; 1,867,000 to 842,730), keeping each line's previous headroom, re-pins BASELINE and PER_CHUNK_BASELINE vendor-objectstack onto cc378e93, and moves the two rendered-reading literals in the unit test. Touches only ui/scripts/check-eager-closure-budget.mjs and its test: no ui/packages change, no sdui record change, no merge-queue token needed. PR body says Part of #25925, not Fixes: the seat decides whether the card closes or goes back to triage.",
      "tests": "Readings, one container: `pnpm --filter '@object-ui/console^...' build` (os-verify-lock VERDICT command-exit 0, 720s), then `CI=true pnpm exec vite build` in ui/apps/console (VERDICT command-exit 0), reading ui/apps/console/dist/eager-closure.json. Control main cc378e93: 1,982,059 B gz, 85 of 2387 chunks, vendor-objectstack 507,716. Experiment (both SystemFieldName imports -> local literal; marker grep 1 and old import grep 0 in both files before the build; trap restore with git checkout HEAD --, blob hashes equal HEAD and git diff HEAD empty after): 1,981,898, 85 of 2387, vendor-objectstack 507,693, delta -161. Re-read after the edit (same tree content for the bundler): 1,982,059 to the byte. Gate after the re-pin: closure pass 1935.6 / 2431.6 KB, per-chunk pass x4, sensitivity pass x5 (0.71x, 0.47x), exit 1 on the membership half only (pre-existing on main). Unit tests at 6a75282d: `./node_modules/.bin/vitest run --maxWorkers=2` in ui/ over check-eager-closure-budget, check-eager-locale-catalogues, check-side-effects-array, vite-declared-lazy-views, vite-types-zod-lazy, vite-ineffective-dynamic-imports: Test Files 6 passed (6), Tests 300 passed (300); before the literal move the same run failed exactly the 2 rendered-reading cases. No ablation: the diff changes budget constants and pins, no tested behaviour.",
      "gates": "Local derived set at 6a75282d (`node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack`, 18 families), each exit captured before any pipe: check-closing-keyword-parity (+ --self-test), check-comment-mask-corpus, check-undeclared-dep-imports (+ --self-test), check:cross-package-test-inputs, check:driver-memory-census, check:engine-double-contract, check:gitlink-declared, check:nul-bytes, check:published-files, check:query-options-erasure, check:refd-timer-probe, check:tier-file-adoption, check:type-check-coverage, check:type-check-debt, check:watch-hint-literal, check:where-matcher: all exit 0. `--ran` with exit codes: 18 derived, 18 run, 0 NOT-MEASURED (a derived zero). CI families: in_progress at report time, read from the PR's check-runs by the seat.",
      "dogfood_battery": "n/a: no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "5: mcp__github__issue_read get, get_comments x2 on #25925, get_labels on 26127 (failed, not an issue), mcp__github__pull_request_read get on #26127; all read-only, no write tool",
      "api_writes": "2: pr_create #26127 via the fleet-write relay (with-fleet.sh --via dispatch, labels skip-changeset, assignees os-steve; read-back identical, 5094 bytes) and this os-dev-report comment via post-stamped (POST issues/25925/comments); plus git push of the branch (not a REST write)",
      "open_questions": [
        {
          "question": "What happens to the card once #26127 lands?",
          "options": [
            "A: close #25925 on #26127: the repoint item is void with evidence and the ceiling item is done; the spec half is filed separately as triage already said",
            "B: send it back to triage for the spec half (stripReadDecorations / ValidateDataIssueSchema re-exports) under this number"
          ],
          "recommendation": "A, because triage already split the spec half off this card and both ui items are now settled by measurement. Seat to route."
        }
      ],
      "out_of_scope_findings": [
        "class: a · reach: `node scripts/check-eager-closure-budget.mjs` in ui/ after a console build of main cc378e93 prints a red membership verdict (`packages/core` declared in `framework`, 1 of 90 modules in `vendor-objectstack`) and exits non-zero before and after this PR · evidence: gate output in the PR body; which module moved NOT MEASURED; fix site is the grouping rules in ui/apps/console/vite.config.ts · dedupe words: eager-closure membership packages/core framework vendor-objectstack",
        "carrier: none · noted, not filed: no workflow under .github/workflows runs check:eager-closure today (grep of .github/workflows and ui/.github finds no caller), so the console budget gate is local-only until the ui CI port lands; recorded in the PR's Acceptance notes"
      ]
    }

    Generated by Claude Code

  10. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Claim amendment (seat domain:ui#1, 2026-10-26T13:11Z): amends the claim 6415922107 after the measurement it asked for (report 6416818207). Append-only; the lines not named here stand.

    Readings (same container, same instrument): main at cc378e93 1,982,059 B gzip; with the two SystemFieldName imports swapped 1,981,898 B. A difference of 161 B is zero saving.

    File surface, replaced: the two import-line edits (MePermissionsProvider.tsx, ListView.tsx), scripts/sdui-manifest.record.json and the changeset are dropped. The surface is now ui/scripts/check-eager-closure-budget.mjs and its unit test ui/scripts/__tests__/check-eager-closure-budget.test.ts.

    What changes: the aggregate ceiling and vendor-objectstack's per-chunk row come down by exactly the bytes the closure lost since the previous baseline, keeping their old headroom. BASELINE is re-pinned to cc378e93. On main the gate's sensitivity half exits 2: it calls the aggregate (2.25x) and vendor-objectstack (1.91x) blind.

    Serial constraints: no ui/packages/** source changes, so the sdui manifest hash does not move and no token is needed. Lands as an ordinary queue PR (#26127). The spec half named in the claim is moot, since @objectstack/spec already ships one shared-chunk graph.

    Card disposition: Part of #25925 in the PR. The seat closes the card when #26127 lands, because the premise's duplication has gone and the gate it left blind is re-pinned.

  11. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Seat close-out · domain:ui seat 1 · 2026-10-26T13:46Z: PR #26127 merged at 2026-10-26T13:46Z (merge commit ada3cbb02a33), carrying Part of #25925. The seat closes the card as the claim amendment 6416858265 said it would.

    No remaining item is owed, so the card closes as completed and pm:dispatched comes off. If triage reads a remaining item differently, reopen it with that item named.

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

Metadata

Metadata

Assignees

Labels

area:recordsBusiness objects, records, the views that show data, usable forms, searchdomain:uienhancementNew feature or requestpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions