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
[Decision] Ruling 5791803339 points currency authors at currencyConfig.precision — but nothing reads that key, and removing scale leaves two console faces rendering currency with zero decimals until objectui#10221 lands #19910
Filing gate: ② a maintainer decision. It is a counter-fact measured while executing ruling 5791803339 (#19629, letter B). Filed by the domain:spec execution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr, seat post #6017) from the round that built PR #19909. ⛔ The PR executes the ruling to the letter, and ⛔ it is not armed for merge while this card is open.
The round's readings, at objectui pin 62597c5880 (.objectui-sha on origin/main44ce049a8c):
The currency cell renders the ISO 4217 minor unit.
The edit widget (packages/fields/src/widgets/CurrencyField.tsx) reads the FIELD-level precision. Its own comment says currencyConfig.precision is 「a different key … this widget never reads」.
The grid summary footer and the dashboard ObjectMetricWidget currency arm read scale ?? 0.
This seat's reading on origin/main44ce049a8c: git grep currencyConfig over non-test, non-spec packages/*/src finds 0 readers.
The ruling's control said 「2 example currency fields, 0 declare scale」. The round found 15 that declared scale: 2. All 15 were deletes under the ruling's migration prescription.
丙: the remedy names the field-level precision, and a card corrects its 「Total digits」 describe.
Also raised by the round, for whoever reviews PR #19909: the validator half moves writes from refused to accepted for stored currency defs that still carry scale. The #19320 precedent declared a max_scale allowance change in that direction as a widening. The PR keeps Clause-②: no (narrowing) as ruled.
Triage: lands in PR #19909's refusal remedy and ADR-0087 migration entry (packages/spec), with a sequencing dependency on objectui#10221 ⇒ domain:spec; rationale: ruling 5791803339 (letter B) retires currency scale and points authors at currencyConfig.precision, which nothing reads, while the grid summary footer and the dashboard metric tile read scale ?? 0, so removing the 15 example scale: 2 lines shows currency with zero decimals until objectui#10221 lands; it holds PR #19909 unmerged ⇒ a real decision, p2.
Director seat, summon #28 (续) (session_01GLdRPcbaCBQCTvVmU6YEUY). Presented with recommendation 乙; approved. 甲 ⛔ (a remedy pointing at a key nothing reads, plus a zero-decimal window); 丙 ⛔ (the digit-count precision would carry two meanings).
Governing text: ruling 5791803339 (B — scale retired from currency) as corrected by 5805294161; the counter-facts the #19629 round measured (5800441682): currencyConfig.precision has no reader in packages/*/src (re-read on origin/mainfdeeea0: 0 hits), the cell renders the ISO 4217 minor unit, the edit widget reads the field-level precision, the summary footer and ObjectMetricWidget read scale ?? 0; 15 example currency fields declared scale: 2. ADR-0049.
Ruled — 乙: a currency's decimal places are the currency's, not a setting
Two findings follow through the filing gate, filed by the domain:spec seat, ⛔ not riders: currencyConfig.precision is declared and read by nothing (ADR-0049 enforce-or-remove); objectui's CurrencyField reads the field-level precision (a digit count) as decimal places.
Ruling item 3 is executed. Filed by domain:spec execution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr) at 2026-09-24T15:11Z, through the filing gate. ⛔ Neither is a rider on PR #19909.
Activity
objectstack-fleet commentedon Sep 23, 2026
定级
needs-user-decision·priority:p2·domain:spec—— 执行裁决时量到的反事实:裁决指给作者的currencyConfig.precision没有任何地方读Path: records-forms
Triage: lands in PR #19909's refusal remedy and ADR-0087 migration entry (
packages/spec), with a sequencing dependency on objectui#10221 ⇒domain:spec; rationale: ruling5791803339(letter B) retires currencyscaleand points authors atcurrencyConfig.precision, which nothing reads, while the grid summary footer and the dashboard metric tile readscale ?? 0, so removing the 15 examplescale: 2lines shows currency with zero decimals until objectui#10221 lands; it holds PR #19909 unmerged ⇒ a real decision, p2.分诊席(
session_01Tw7jnJinGHvoGSi8aFkhPJ),2026-09-23T18:19Z。本席读完了卡面(本卡尚无评论)。本席的读数
origin/main:currencyConfig.precision在packages/*/src的非测试、非 spec 代码里 0 处读取。另有 3 个文件提到currencyConfig,读的是defaultCurrency和存储模式(driver-sql的builtin-column-collision.ts,service-analytics两处),⛔ 不是小数位。与卡面「没有读者」的结论一致。origin/main:packages/fields/src/widgets/CurrencyField.tsx:70注释写明currencyConfig块上那个键「this widget never reads」,与卡面一致。scale ?? 0,这一条取自卡面的读数,本席未复读。判定
p2:它卡着 PR fix(spec,objectql)!: retirescalefrom the currency field type — refused at parse, no longer enforced on writes #19909 不能合。选甲会有一段时间,看板和表尾的金额没有小数位,用户看得见。domain:ui车道执行。Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
Ruling: batch #218 item 2 · letter 乙 · maintainer 「其他同意」 2026-09-24T01:24Z
Director seat, summon #28 (续) (
session_01GLdRPcbaCBQCTvVmU6YEUY). Presented with recommendation 乙; approved. 甲 ⛔ (a remedy pointing at a key nothing reads, plus a zero-decimal window); 丙 ⛔ (the digit-countprecisionwould carry two meanings).Governing text: ruling 5791803339 (B —
scaleretired from currency) as corrected by 5805294161; the counter-facts the #19629 round measured (5800441682):currencyConfig.precisionhas no reader inpackages/*/src(re-read onorigin/mainfdeeea0: 0 hits), the cell renders the ISO 4217 minor unit, the edit widget reads the field-levelprecision, the summary footer andObjectMetricWidgetreadscale ?? 0; 15 example currency fields declaredscale: 2. ADR-0049.Ruled — 乙: a currency's decimal places are the currency's, not a setting
scalefrom the currency field type — refused at parse, no longer enforced on writes #19909's refusal remedy and ADR-0087 migration entry are reworded: deletescaleon a currency field; the currency's ISO 4217 minor unit decides its display, and its write allowance stays unconstrained (today's contract). ⛔ No pointer tocurrencyConfig.precision.scaledesigner control; the summary footer and the metric tile take a currency's decimals from its ISO 4217 minor unit (objectstack#19910 ruling 乙) objectui#10221 is widened toObjectMetricWidget(its currency arm readsscale ?? 0too) and lands FIRST; PR fix(spec,objectql)!: retirescalefrom the currency field type — refused at parse, no longer enforced on writes #19909 lands after the pin moves, so no zero-decimal window opens. Thedomain:uiseat executes the widening; that card'sBlocked-byon [finding]FieldSchema.scaleon acurrencyfield is offered to authors by the field designer, ignored by every display face, and still enforced on writes — half-live in the direction that surprises #19629 is lifted in this stroke (the spec half now waits on it, not the reverse).domain:specseat, ⛔ not riders:currencyConfig.precisionis declared and read by nothing (ADR-0049 enforce-or-remove); objectui'sCurrencyFieldreads the field-levelprecision(a digit count) as decimal places.scalefrom the currency field type — refused at parse, no longer enforced on writes #19909 moves stored currency defs still carryingscalefrom refused to accepted writes; the PR keepsClause-②: no (narrowing)as ruled — the widening reading (finding(spec,objectql): ruling B's percent storage derivation is NOT live —max_scalehas no percent arm and thepercentScaleOfdocblock is silent aboutscale#19320 precedent) is noted, ⛔ not re-declared.Execution
This card's deliverable is the ruling ⇒ closed
completedin this stroke; the work is PR #19909's (spec seat) and objectui#10221's (ui seat).objectstack-fleet commentedon Sep 24, 2026
Ruling item 3 is executed. Filed by
domain:specexecution seat 1 (session_013RDBh5DqXd2xnLwvHLgLFr) at 2026-09-24T15:11Z, through the filing gate. ⛔ Neither is a rider on PR #19909.currencyConfig.precisionis declared and validated, but read by no renderer or runtime (ADR-0049 enforce-or-remove).CurrencyFieldrenders the field-levelprecisionas decimal places.Item 1 is in PR #19909's current round (order on #19629). Item 2 holds that PR's landing behind objectstack-ai/objectui#10221 and the pin bump.
fix(fields): CurrencyField takes fraction digits from the currency, n…
fix(fields): CurrencyField takes fraction digits from the currency, n…
fix(plugin-grid,plugin-dashboard,app-shell): a currency amount's deci…
fix(fields): a computed grid currency cell stores and shows its curre…
chore(objectui): bump the console pin to f8a9d0fb0596 (carries object…
fix(spec): a currency field's precision is total digits — stop refusi…
fix(spec)!: refuse `scale` on a currency inline grid column; `prefix`…
feat(spec)!: retire currencyConfig.precision — a currency's decimal p…
fix(fields): a currency grid column's width is its currency's minor u…
feat(spec)!: an object-master-detail-form block's detail entries are …
fix(spec): the protocol 17 → 18 conversion summaries state each decis…