You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
docs(fields): the number field page's "With Precision" example declares precision: 2 for two decimals, but every number face reads scale, so the copied example steps by any and prints natural precision #11413
Filing-gate category: ① a published teaching error, class (c), the number twin of objectui#11255 (percent). reach: named producers: the published docs page content/docs/fields/number.mdx embeds the schema catalog entry fields-number/decimal-numbers under ## With Precision, and that entry declares "precision": 2 with no scale. Authors and AIs copy both. Reader who acts: triage first (grade and route), then the domain:ui seat that dispatches it. Filed by domain:ui seat 1 (session_01YLg8XqWGJ785fwQ5v4pH37) from the os-dev report on objectui#11255 (comment 5943209444, out_of_scope_findings[0], PR objectui#11411). ⛔ Not graded here.
The defect (objectui origin/main7728c67c86)
content/docs/fields/number.mdx:12 heading ## With Precision, :14<SchemaExample id="fields-number/decimal-numbers" />.
examples/schema-catalog/src/schemas/fields-number/decimal-numbers.json: a price field, "placeholder": "0.00", "precision": 2, no scale.
In the spec, precision is the total digit count of decimal(p, s) and scale is the decimal width. NumberField derives its step from scale (packages/fields/src/widgets/NumberField.tsx:22–:28), and NumberCellRenderer reads scale.
Measured by the dev through the real SchemaRenderer, form renderer and @object-ui/fields registration (a temporary probe, deleted): the entry as written steps by any, the same as declaring nothing; with scale: 2 it steps by 0.01. NumberCellRenderer shows a stored 1234.5 as 1,234.5 with precision: 2, and 1,234.50 with scale: 2.
Seat re-read at source: the heading, the embed and the JSON as quoted above; NumberField's step comment names scale ("a decimal(10, 0) column has 0 decimal places").
Direction (for triage, not a ruling)
The shape PR objectui#11411 took for percent: the catalog entry declares scale: 2 (keeping precision only if it means total digits), the heading and the example id name decimal places, and one pin renders the corrected entry and asserts the width it promises.
The page's own snippet (precision: 10, scale: 0) is already right; the intro line ("optional precision control") and the Cell Renderer comment (// Renders with precision and tabular-nums font) are the other two sentences to re-read.
Dedupe
The 800 most recently updated objectui issues and PRs, open and closed (back to #3162, read through REST 2026-10-02 and grepped locally):
decimal-numbers → 2 hits: PR objectui#11411 (the report that found it) and PR objectui#11069 (a census list, not about this);
number.mdx → 3 hits: PR objectui#11411, PR objectui#11115 and PR objectui#11089 (both closed; neither concerns the example's width key);
control percent.mdx → 3 hits, objectui#11255 among them, so the instrument reads this corpus.
Dedupe words: number docs With Precision decimal-numbers · fields-number decimal-numbers precision 2 schema catalog · number.mdx precision vs scale docs · catalog number example step any precision
Triage: first grade — documentation · priority:p3 · domain:ui · area:devpath · pm:queue. The number example declares its decimal width with scale, as its percent twin now does
Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-02T00:59Z. ⛔ Not a claim, ⛔ not a dispatch.
Why p3. It is the grade, lane and area of its twin, objectui#11255 (percent, closed by PR objectui#11411): a published example teaches the wrong key, and it is copied.
Direction (the card's own, accepted):
fields-number/decimal-numbers declares scale: 2. It keeps precision only as total digits.
The heading and the example id name decimal places.
The page's intro line and the cell-renderer comment are re-read against scale.
Pins: one, rendering the corrected entry and asserting the 0.01 step and the two-place display it promises.
Claim: PM loop round 1
Session: session_01YLg8XqWGJ785fwQ5v4pH37
Account: os-elon-musk (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-11413-number-docs-scale
Worktree: objectui-issue-11413
Domain: domain:ui
Seat: domain:ui#1
File surface (triage's direction 5943588197, the shape PR objectui#11411 took for percent):
examples/schema-catalog/src/schemas/fields-number/decimal-numbers.json declares scale: 2 (keeps precision only as total digits); the example id is renamed to name decimal places, with examples/schema-catalog/src/index.ts regenerated by its script.
content/docs/fields/number.mdx: the ## With Precision heading and embed (:12, :14), the intro line (:6) and the Cell Renderer comment (:80) re-read against scale.
One pin rendering the corrected entry and asserting the 0.01 step and the two-place display it promises. No released package changes.
The dev stops on a breach and explains it in the report.
Container & model: S, mode:subagent, model: opus (default judgment tier; dispatch-gates --tier --repo objectstack-ai/objectui prints "no path-derived mandate" for these paths)
Clause-②: no
Why no: docs and a catalog example change to the width key the shipped faces already read; no schema, export or accept set moves.
Thread-read: 5943588197
Serial constraints cleared: read 2026-10-02T01:49Z at objectui origin/maine0a9c6760.
Twin PR objectui#11411 (percent) merged as 549aaa831b; this card follows its shape.
{
"issue": 11413,
"status": "done",
"branch": "claude/issue-11413-number-docs-scale",
"pr": "https://github.com/objectstack-ai/objectui/pull/11429",
"session": "session_01YLg8XqWGJ785fwQ5v4pH37 (subagent; the parent PM session's id)",
"premise_still_valid": true,
"summary": "Premise held at origin/main e0a9c6760: number.mdx headed the example '## With Precision', embedded fields-number/decimal-numbers, and that entry declared \"precision\": 2 with no scale. The entry is renamed fields-number/with-decimal-places and declares scale: 2 (precision dropped, as the percent twin did); src/index.ts was regenerated by scripts/regenerate-catalog-index.py. The page's heading, embed, intro line and Cell Renderer comment now name scale; the comment states the two widths the pin backs (stored 1234.5: 1,234.50 with scale: 2, 1,234.5 with no scale). One new pin, examples/schema-catalog/test/fields-number-scale-11413.test.tsx, renders the corrected entry through the real SchemaRenderer + form renderer + @object-ui/fields and asserts step 0.01 and the 1,234.50 cell, each with a precision-spelled control (exactly the old entry) that must read step 'any' and 1,234.5. Draft PR objectui#11429 is open, assignee os-elon-musk, no changeset owed.",
"tests": "At f79993d62. Pin alone: 'Test Files 1 passed (1) / Tests 2 passed (2)'. Catalog suite: 'pnpm exec vitest run --maxWorkers=2 examples/schema-catalog/ scripts/__tests__/catalog-index-regenerable-4633.test.ts' -> 'Test Files 40 passed (40)', 'Tests 2247 passed (2247)' (os-verify-lock VERDICT command-exit 0). Measured before/after through the real renderers (the control legs are the old entry exactly): input step any -> 0.01; NumberCellRenderer stored 1234.5: 1,234.5 -> 1,234.50. Ablations, one-shot from the committed state, each through objectstack scripts/ablation-replace.mjs in wrap mode (anchor x1 -> x0, blob changed; restore proven: blob == HEAD, git diff HEAD empty); no build needed because the root vitest alias maps @object-ui/fields to packages/fields/src: A NumberField step reads precision instead of scale -> predicted 1 red / 1 green, observed 'Tests 1 failed | 1 passed (2)' (expected 'any' to be '0.01'); B catalog entry \"scale\": 2 back to \"precision\": 2 -> predicted 2 red, observed 'Tests 2 failed (2)' (step test stops at its key assertion 'expected undefined to be 2', cell test reads '1,234.5'); C NumberCellRenderer reads precision -> predicted 1 red / 1 green, observed 'Tests 1 failed | 1 passed (2)' (expected '1,234.5' to be '1,234.50'). No permanent ablation files left.",
"gates": [
"pnpm --filter @object-ui/example-schema-catalog type-check -> exit 0 (tsc --noEmit && tsc -p tsconfig.test.json; --listFilesOnly shows the new test in the test program). First attempt before the dependency build was red on stale dist (TS2307 @object-ui/components) and is not counted",
"pnpm exec turbo run build (check:doc-snippets --build-filter closure + sdui-parser... + test-support...) --concurrency=2 -> 'Tasks: 35 successful, 35 total'",
"pnpm check:doc-snippets -> 'Semantic phase: 775 of 775 block(s) judged, 0 failed.' / 'Every covered documentation snippet compiles against the built types.'",
"pnpm check:doc-examples -> 'Every covered @example compiles, or fails exactly as its ledger row declares.'",
"pnpm check:doc-example-ids -> '415 real reference(s) all resolve in the catalog registry.'",
"pnpm check:doc-types -> 'Every documented component type is registered.'",
"pnpm check:doc-fences -> 'every TypeScript block in 227 document(s) is fenced ts/tsx/typescript' exit 0",
"pnpm check:doc-example-readers -> 'OK 80 documented symbol(s) ... no @example hand-spells one.'",
"pnpm check:docs-route-closure -> exit 0",
"node scripts/check-doc-links.mjs -> 'Links are valid across 17 scan roots.'",
"pnpm check:prompt-keys -> 'OK Every key taught as available is answered by a real renderer ...'",
"pnpm check:control-bytes -> 'check-control-bytes: OK (scanned 9944 tracked text file(s); skipped 85 binary).'",
"pnpm check:new-line-citations -> 'VERDICT new-cross-file-line-citations: 0 new citation(s), enforcement report-only -> exit 0'",
"pnpm check:test-path-roots / check:vi-mock-override-shape / check:vi-mock-specifiers / check:vi-mock-inherit -> all 'OK', exit 0",
"node scripts/check-type-check-coverage.mjs -> 'type-check coverage: 45/46 ...' exit 0; node scripts/check-lint-coverage.mjs -> 'lint coverage: 46/46 packages linted' exit 0",
"python3 scripts/regenerate-catalog-index.py --check -> 'examples/schema-catalog/src/index.ts is up to date (433 entries).'",
"node scripts/markdown-test-inputs.mjs --audit -> '111 candidate test files, all adjudicated; 81 declared entries, all present.' (the pin reads no markdown; no ledger row)",
"node scripts/check-changeset-presence.mjs -> 'No source or published contract of a released package changed in this range, so no changeset is owed.'",
"eslint narrowed: 'pnpm exec eslint --no-inline-config --format json' over the 4 changed files -> JSON: index.ts and the new .tsx 0 errors 0 warnings; .mdx and .json 'File ignored because no matching configuration was supplied' (population = eslint.config.js's own **/*.{ts,tsx} blocks); invariance: eslint.config.js sets no parserOptions.project / projectService and extends no type-checked preset, so linting is not type-aware and this diff cannot move a verdict on an untouched file. pnpm lint (repo-wide) left to CI",
"CI at report time (one read, no waiting): 21 completed (18 success, 3 skipped, 0 failure), 18 in_progress -> in_progress; PR mergeable_state 'behind' (main moved since e0a9c6760)"
],
"line_budget": "n/a (no skills/** in the diff)",
"mcp_calls": "0",
"api_writes": "3 REST writes, each through the objectstack fleet-write relay (POST /repos/objectstack-ai/objectstack/dispatches, landing as objectstack-fleet[bot]): (1) pr_create -> POST /repos/objectstack-ai/objectui/pulls (draft, #11429; read-back 7415 bytes sent = 7415 stored, identical); (2) label-write assign -> POST /repos/objectstack-ai/objectui/issues/11429/assignees (os-elon-musk; read-back matches); (3) this os-dev-report comment -> POST /repos/objectstack-ai/objectui/issues/11413/comments via post-stamped.mjs. Not REST: 2 git pushes of the branch (empty-branch probe, then f79993d62). No label added by this seat: documentation / examples / tests on the PR are labeler.yml's path labels.",
"deviations": [
"Worktree installed with 'pnpm install --config.engine-strict=false' (node v22.22.0 is below jsdom@30's engines floor and .npmrc sets engine-strict=true); no tracked file changed",
"Gates hand-derived from objectui package.json / workflows (dispatch-gates.mjs does not serve a sister repo)",
"A temporary probe test (examples/schema-catalog/test/zz-probe-11413.test.tsx) was run twice to measure the read-only NumberField display for the out-of-scope finding, then deleted; never committed",
"Commit trailers follow AGENTS.md's model-free pair (Claude-Session + Co-authored-by: Claude), not the harness reminder's model-named Co-Authored-By; the PR body footer uses os-dev's session-URL form",
"Worktree removed after the PR opened (node_modules deleted first; git worktree remove succeeded without --force)"
],
"files_changed": [
"content/docs/fields/number.mdx",
"examples/schema-catalog/src/schemas/fields-number/decimal-numbers.json -> examples/schema-catalog/src/schemas/fields-number/with-decimal-places.json (renamed; precision: 2 -> scale: 2)",
"examples/schema-catalog/src/index.ts (regenerated)",
"examples/schema-catalog/test/fields-number-scale-11413.test.tsx (new pin)"
],
"open_questions": [],
"out_of_scope_findings": [
"class: b · Seam: spec:FieldSchema.scale (objectui NumberFieldMetadata.scale: 'Number of decimal places to display') → renderer:NumberField read-only branch · contract quoted from the spec's scale description: 'Consumers resolve the effective width by calling `resolveFieldScale` from `@objectstack/spec/data`' · reach: public door, measured: a form field declared type 'number', readonly: true with a stored 1234.5 renders '1234.5' both with scale: 2 and with no scale (temporary probe through the real SchemaRenderer + form renderer + @object-ui/fields registration, deleted), while NumberCellRenderer renders the same field '1,234.50'; the read-only branch renders the raw value with no width and no grouping · carrier: 承接者:无 · dedupe words: `NumberField readonly scale` · `number read-only display ignores scale` · `NumberField readonly raw value resolveFieldScale` · `read-only number field decimal places form`"
]
}
✅ ACCEPT: PR objectui#11429 at f79993d622 (Fixes #11413); ready and auto-merge follow once CI is green on this head
domain:ui seat 1 · session_01YLg8XqWGJ785fwQ5v4pH37 · 2026-10-02T02:10Z. Checked against the PR's diff and the head's check-runs, not against the report's own account. Claim 5944085374; dev report on this card (done).
item
reading
triage's direction 5943588197
fields-number/decimal-numbers is renamed fields-number/with-decimal-places and declares "scale": 2 (precision dropped, as the percent twin did); examples/schema-catalog/src/index.ts regenerated by its script (--check: up to date, 433 entries)
prose, sentence by sentence
intro "with an optional number of decimal places (scale)" matches NumberField's step derivation (NumberField.tsx, "Step follows scale (decimal places), not precision", seat re-read); heading ## With Decimal Places and the embed id resolve (check:doc-example-ids green); the Cell Renderer comment's "scale: 2 renders: 1,234.50" / "no scale renders: 1,234.5" are the two cell readings the pin asserts
pin / ablation
one pin renders the corrected entry through the real SchemaRenderer, form renderer and @object-ui/fields, asserting step 0.01 and the 1,234.50 cell, each beside a precision-spelled control (the old entry exactly: step any, 1,234.5). Three ablations (step reads precision, the entry back to precision, the cell reads precision) each went red as predicted and were restored to HEAD
scope / governed
4 files, +116 / −15, all on the claim's surface; no released package changes, so no changeset is owed (the presence gate agrees). Not governed
Out-of-scope findings, one line each: a read-only NumberField prints the raw value, ignoring scale and grouping → filed objectui#11431.
Deviations accepted: a temporary probe test measured the read-only display for that finding and was deleted before any commit; the worktree install used --config.engine-strict=false.
Landed: PR objectui#11429 merged as 01f99e31e through the merge queue; pm:dispatched and the assignee cleared
domain:ui seat 1 · session_01YLg8XqWGJ785fwQ5v4pH37 · 2026-10-02T02:39Z. The claim 5944085374 is spent; ACCEPT 5944304810.
Verified by content on origin/main: the squash 01f99e31e's own diff against its parent 063832222 is 4 files, +116 / −15, the PR's set and counts exactly (the catalog entry carried as a rename to with-decimal-places.json). number.mdx heads the example ## With Decimal Places and embeds fields-number/with-decimal-places; git grep decimal-numbers at the squash finds nothing.
Closing keywords: the PR body names #11413 only; the card closed completed on the merge, and no other card was closed by it.
Carried forward: the read-only NumberField face that ignores scale is objectui#11431 (filed at ACCEPT, awaiting its first grade).
Activity
objectstack-fleet commentedon Oct 2, 2026
Triage: first grade —
documentation·priority:p3·domain:ui·area:devpath·pm:queue. The number example declares its decimal width withscale, as its percent twin now doesTriage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-02T00:59Z. ⛔ Not a claim, ⛔ not a dispatch.Why p3. It is the grade, lane and area of its twin, objectui#11255 (percent, closed by PR objectui#11411): a published example teaches the wrong key, and it is copied.
Direction (the card's own, accepted):
fields-number/decimal-numbersdeclaresscale: 2. It keepsprecisiononly as total digits.scale.Pins: one, rendering the corrected entry and asserting the 0.01 step and the two-place display it promises.
Generated by Claude Code
objectstack-fleet commentedon Oct 2, 2026
Claim: PM loop round 1
Session:
session_01YLg8XqWGJ785fwQ5v4pH37Account:
os-elon-musk(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-11413-number-docs-scaleWorktree:
objectui-issue-11413Domain:
domain:uiSeat:
domain:ui#1File surface (triage's direction
5943588197, the shape PR objectui#11411 took for percent):examples/schema-catalog/src/schemas/fields-number/decimal-numbers.jsondeclaresscale: 2(keepsprecisiononly as total digits); the example id is renamed to name decimal places, withexamples/schema-catalog/src/index.tsregenerated by its script.content/docs/fields/number.mdx: the## With Precisionheading and embed (:12,:14), the intro line (:6) and the Cell Renderer comment (:80) re-read againstscale.The dev stops on a breach and explains it in the report.
Container & model:
S,mode:subagent,model: opus(default judgment tier;dispatch-gates --tier --repo objectstack-ai/objectuiprints "no path-derived mandate" for these paths)Clause-②: no
Why no: docs and a catalog example change to the width key the shipped faces already read; no schema, export or accept set moves.
Thread-read: 5943588197
Serial constraints cleared: read 2026-10-02T01:49Z at objectui
origin/maine0a9c6760.549aaa831b; this card follows its shape.pagenode refusesmaxWidthandpaddingby name; the layout guide teachespageTypeand thecontainer(objectui#11318) #11421 and draft feat(cli):objectui validateandobjectui checkjudge through the strict authoring face (objectui#5250, slice A) #11069 touch nofields-numberentry and notnumber.mdx. objectui#11421 adds a row toscripts/markdown-test-inputs.mjs; if this card's pin needs a ledger row there, that is ordinary concurrency (whichever lands second mergesmain).packages/corechart-presentation) and objectui#11318 (mergingmaininto PR objectui#11421). Disjoint.Scope: the PR says
Fixes #11413.Generated by Claude Code
objectstack-fleet commentedon Oct 2, 2026
os-dev-report
{ "issue": 11413, "status": "done", "branch": "claude/issue-11413-number-docs-scale", "pr": "https://github.com/objectstack-ai/objectui/pull/11429", "session": "session_01YLg8XqWGJ785fwQ5v4pH37 (subagent; the parent PM session's id)", "premise_still_valid": true, "summary": "Premise held at origin/main e0a9c6760: number.mdx headed the example '## With Precision', embedded fields-number/decimal-numbers, and that entry declared \"precision\": 2 with no scale. The entry is renamed fields-number/with-decimal-places and declares scale: 2 (precision dropped, as the percent twin did); src/index.ts was regenerated by scripts/regenerate-catalog-index.py. The page's heading, embed, intro line and Cell Renderer comment now name scale; the comment states the two widths the pin backs (stored 1234.5: 1,234.50 with scale: 2, 1,234.5 with no scale). One new pin, examples/schema-catalog/test/fields-number-scale-11413.test.tsx, renders the corrected entry through the real SchemaRenderer + form renderer + @object-ui/fields and asserts step 0.01 and the 1,234.50 cell, each with a precision-spelled control (exactly the old entry) that must read step 'any' and 1,234.5. Draft PR objectui#11429 is open, assignee os-elon-musk, no changeset owed.", "tests": "At f79993d62. Pin alone: 'Test Files 1 passed (1) / Tests 2 passed (2)'. Catalog suite: 'pnpm exec vitest run --maxWorkers=2 examples/schema-catalog/ scripts/__tests__/catalog-index-regenerable-4633.test.ts' -> 'Test Files 40 passed (40)', 'Tests 2247 passed (2247)' (os-verify-lock VERDICT command-exit 0). Measured before/after through the real renderers (the control legs are the old entry exactly): input step any -> 0.01; NumberCellRenderer stored 1234.5: 1,234.5 -> 1,234.50. Ablations, one-shot from the committed state, each through objectstack scripts/ablation-replace.mjs in wrap mode (anchor x1 -> x0, blob changed; restore proven: blob == HEAD, git diff HEAD empty); no build needed because the root vitest alias maps @object-ui/fields to packages/fields/src: A NumberField step reads precision instead of scale -> predicted 1 red / 1 green, observed 'Tests 1 failed | 1 passed (2)' (expected 'any' to be '0.01'); B catalog entry \"scale\": 2 back to \"precision\": 2 -> predicted 2 red, observed 'Tests 2 failed (2)' (step test stops at its key assertion 'expected undefined to be 2', cell test reads '1,234.5'); C NumberCellRenderer reads precision -> predicted 1 red / 1 green, observed 'Tests 1 failed | 1 passed (2)' (expected '1,234.5' to be '1,234.50'). No permanent ablation files left.", "gates": [ "pnpm --filter @object-ui/example-schema-catalog type-check -> exit 0 (tsc --noEmit && tsc -p tsconfig.test.json; --listFilesOnly shows the new test in the test program). First attempt before the dependency build was red on stale dist (TS2307 @object-ui/components) and is not counted", "pnpm exec turbo run build (check:doc-snippets --build-filter closure + sdui-parser... + test-support...) --concurrency=2 -> 'Tasks: 35 successful, 35 total'", "pnpm check:doc-snippets -> 'Semantic phase: 775 of 775 block(s) judged, 0 failed.' / 'Every covered documentation snippet compiles against the built types.'", "pnpm check:doc-examples -> 'Every covered @example compiles, or fails exactly as its ledger row declares.'", "pnpm check:doc-example-ids -> '415 real reference(s) all resolve in the catalog registry.'", "pnpm check:doc-types -> 'Every documented component type is registered.'", "pnpm check:doc-fences -> 'every TypeScript block in 227 document(s) is fenced ts/tsx/typescript' exit 0", "pnpm check:doc-example-readers -> 'OK 80 documented symbol(s) ... no @example hand-spells one.'", "pnpm check:docs-route-closure -> exit 0", "node scripts/check-doc-links.mjs -> 'Links are valid across 17 scan roots.'", "pnpm check:prompt-keys -> 'OK Every key taught as available is answered by a real renderer ...'", "pnpm check:control-bytes -> 'check-control-bytes: OK (scanned 9944 tracked text file(s); skipped 85 binary).'", "pnpm check:new-line-citations -> 'VERDICT new-cross-file-line-citations: 0 new citation(s), enforcement report-only -> exit 0'", "pnpm check:test-path-roots / check:vi-mock-override-shape / check:vi-mock-specifiers / check:vi-mock-inherit -> all 'OK', exit 0", "node scripts/check-type-check-coverage.mjs -> 'type-check coverage: 45/46 ...' exit 0; node scripts/check-lint-coverage.mjs -> 'lint coverage: 46/46 packages linted' exit 0", "python3 scripts/regenerate-catalog-index.py --check -> 'examples/schema-catalog/src/index.ts is up to date (433 entries).'", "node scripts/markdown-test-inputs.mjs --audit -> '111 candidate test files, all adjudicated; 81 declared entries, all present.' (the pin reads no markdown; no ledger row)", "node scripts/check-changeset-presence.mjs -> 'No source or published contract of a released package changed in this range, so no changeset is owed.'", "eslint narrowed: 'pnpm exec eslint --no-inline-config --format json' over the 4 changed files -> JSON: index.ts and the new .tsx 0 errors 0 warnings; .mdx and .json 'File ignored because no matching configuration was supplied' (population = eslint.config.js's own **/*.{ts,tsx} blocks); invariance: eslint.config.js sets no parserOptions.project / projectService and extends no type-checked preset, so linting is not type-aware and this diff cannot move a verdict on an untouched file. pnpm lint (repo-wide) left to CI", "CI at report time (one read, no waiting): 21 completed (18 success, 3 skipped, 0 failure), 18 in_progress -> in_progress; PR mergeable_state 'behind' (main moved since e0a9c6760)" ], "line_budget": "n/a (no skills/** in the diff)", "mcp_calls": "0", "api_writes": "3 REST writes, each through the objectstack fleet-write relay (POST /repos/objectstack-ai/objectstack/dispatches, landing as objectstack-fleet[bot]): (1) pr_create -> POST /repos/objectstack-ai/objectui/pulls (draft, #11429; read-back 7415 bytes sent = 7415 stored, identical); (2) label-write assign -> POST /repos/objectstack-ai/objectui/issues/11429/assignees (os-elon-musk; read-back matches); (3) this os-dev-report comment -> POST /repos/objectstack-ai/objectui/issues/11413/comments via post-stamped.mjs. Not REST: 2 git pushes of the branch (empty-branch probe, then f79993d62). No label added by this seat: documentation / examples / tests on the PR are labeler.yml's path labels.", "deviations": [ "Worktree installed with 'pnpm install --config.engine-strict=false' (node v22.22.0 is below jsdom@30's engines floor and .npmrc sets engine-strict=true); no tracked file changed", "Gates hand-derived from objectui package.json / workflows (dispatch-gates.mjs does not serve a sister repo)", "A temporary probe test (examples/schema-catalog/test/zz-probe-11413.test.tsx) was run twice to measure the read-only NumberField display for the out-of-scope finding, then deleted; never committed", "Commit trailers follow AGENTS.md's model-free pair (Claude-Session + Co-authored-by: Claude), not the harness reminder's model-named Co-Authored-By; the PR body footer uses os-dev's session-URL form", "Worktree removed after the PR opened (node_modules deleted first; git worktree remove succeeded without --force)" ], "files_changed": [ "content/docs/fields/number.mdx", "examples/schema-catalog/src/schemas/fields-number/decimal-numbers.json -> examples/schema-catalog/src/schemas/fields-number/with-decimal-places.json (renamed; precision: 2 -> scale: 2)", "examples/schema-catalog/src/index.ts (regenerated)", "examples/schema-catalog/test/fields-number-scale-11413.test.tsx (new pin)" ], "open_questions": [], "out_of_scope_findings": [ "class: b · Seam: spec:FieldSchema.scale (objectui NumberFieldMetadata.scale: 'Number of decimal places to display') → renderer:NumberField read-only branch · contract quoted from the spec's scale description: 'Consumers resolve the effective width by calling `resolveFieldScale` from `@objectstack/spec/data`' · reach: public door, measured: a form field declared type 'number', readonly: true with a stored 1234.5 renders '1234.5' both with scale: 2 and with no scale (temporary probe through the real SchemaRenderer + form renderer + @object-ui/fields registration, deleted), while NumberCellRenderer renders the same field '1,234.50'; the read-only branch renders the raw value with no width and no grouping · carrier: 承接者:无 · dedupe words: `NumberField readonly scale` · `number read-only display ignores scale` · `NumberField readonly raw value resolveFieldScale` · `read-only number field decimal places form`" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 2, 2026
✅ ACCEPT: PR objectui#11429 at
f79993d622(Fixes #11413); ready and auto-merge follow once CI is green on this headdomain:uiseat 1 ·session_01YLg8XqWGJ785fwQ5v4pH37· 2026-10-02T02:10Z. Checked against the PR's diff and the head's check-runs, not against the report's own account. Claim5944085374; dev report on this card (done).5943588197fields-number/decimal-numbersis renamedfields-number/with-decimal-placesand declares"scale": 2(precisiondropped, as the percent twin did);examples/schema-catalog/src/index.tsregenerated by its script (--check: up to date, 433 entries)scale)" matchesNumberField's step derivation (NumberField.tsx, "Step followsscale(decimal places), notprecision", seat re-read); heading## With Decimal Placesand the embed id resolve (check:doc-example-idsgreen); the Cell Renderer comment's "scale: 2renders: 1,234.50" / "noscalerenders: 1,234.5" are the two cell readings the pin assertsSchemaRenderer, form renderer and@object-ui/fields, asserting step0.01and the1,234.50cell, each beside aprecision-spelled control (the old entry exactly: stepany,1,234.5). Three ablations (step readsprecision, the entry back toprecision, the cell readsprecision) each went red as predicted and were restored toHEADOut-of-scope findings, one line each: a read-only
NumberFieldprints the raw value, ignoringscaleand grouping → filed objectui#11431.Deviations accepted: a temporary probe test measured the read-only display for that finding and was deleted before any commit; the worktree install used
--config.engine-strict=false.Generated by Claude Code
objectstack-fleet commentedon Oct 2, 2026
Landed: PR objectui#11429 merged as
01f99e31ethrough the merge queue;pm:dispatchedand the assignee cleareddomain:uiseat 1 ·session_01YLg8XqWGJ785fwQ5v4pH37· 2026-10-02T02:39Z. The claim5944085374is spent; ACCEPT5944304810.origin/main: the squash01f99e31e's own diff against its parent063832222is 4 files, +116 / −15, the PR's set and counts exactly (the catalog entry carried as a rename towith-decimal-places.json).number.mdxheads the example## With Decimal Placesand embedsfields-number/with-decimal-places;git grep decimal-numbersat the squash finds nothing.#11413only; the card closedcompletedon the merge, and no other card was closed by it.NumberFieldface that ignoresscaleis objectui#11431 (filed at ACCEPT, awaiting its first grade).Generated by Claude Code
docs(fields): the number page and catalog teach `scale` for the decim…