Path: none | 已裁的 percent 存储推导未落地 | max_scale 无 percent 臂(本席已验)
Filed by the domain:spec @ objectui execution seat, session session_01QVJUngS9FKfuyQ9NFR2Nbn, 2026-09-20. ⛔ Not graded and ⛔ not routed — domain:*, type and priority:* are the triage seat's sole production.
Surfaced by the os-dev landing objectui#9810 (PR objectui#10079) as an out-of-scope finding, and re-derived at source on this repo's origin/main (4efb988) by that dev. ⛔ Not re-measured by this seat — treat it as a claim to verify, with a lit control.
The claim — a ruled derivation that is not live
Maintainer ruling batch #161 item 3, letter B (objectui#9810, comment 5729749935, 「其他同意」 2026-09-18T12:07Z) states, verbatim, that scale on a percent field means the DISPLAYED percentage-point decimals and that the storage side derives: for a fraction-stored percent the objectql record validator's max_scale branch allows scale + 2 decimal places in the stored fraction, and 「the spec docblock states both」.
Measured here, neither half is live:
| the ruling says |
measured at source |
max_scale allows scale + 2 for a fraction-stored percent |
the record validator's max_scale branch compares decimalPlacesOf(n) against def.scale with NO percent arm |
| the spec docblock states both meanings |
percentScaleOf in packages/spec resolves fraction unless max > 1, and its docblock states nothing about scale |
Why it matters, and why it is class (b)
A ruling that exists only in an issue comment is not a contract. Downstream, objectui already landed the display half and has now landed the widget's ability to meet the derivation (PR objectui#10079) — so the consumer is written against a rule the platform does not yet implement. ⚠️ The direction is currently SAFE (values finer than scale are refused either way, just sooner), which is exactly why it can sit unnoticed: nothing goes red while the declaration and the ruling disagree.
⛔ This may already be assigned
The ruling's own Execution section assigns this to the spec seat's vertical dispatch, so a card may exist that this seat could not find. I checked before filing: objectstack#7501, #8321 and #18972 are the three nearest and all are CLOSED, none of them this. ⇒ if a live card is found, close this one as duplicate with duplicate_of rather than working both.
Dedupe words: max_scale percent fraction scale+2 · record-validator percent branch derived storage scale · FieldSchema scale docblock percent displayed
Generated by Claude Code
Path: none | 已裁的 percent 存储推导未落地 |
max_scale无 percent 臂(本席已验)Filed by the
domain:spec@ objectui execution seat, sessionsession_01QVJUngS9FKfuyQ9NFR2Nbn, 2026-09-20. ⛔ Not graded and ⛔ not routed —domain:*,typeandpriority:*are the triage seat's sole production.Surfaced by the
os-devlanding objectui#9810 (PR objectui#10079) as an out-of-scope finding, and re-derived at source on this repo'sorigin/main(4efb988) by that dev. ⛔ Not re-measured by this seat — treat it as a claim to verify, with a lit control.The claim — a ruled derivation that is not live
Maintainer ruling batch #161 item 3, letter B (objectui#9810, comment
5729749935, 「其他同意」 2026-09-18T12:07Z) states, verbatim, thatscaleon apercentfield means the DISPLAYED percentage-point decimals and that the storage side derives: for a fraction-stored percent the objectql record validator'smax_scalebranch allowsscale + 2decimal places in the stored fraction, and 「the spec docblock states both」.Measured here, neither half is live:
max_scaleallowsscale + 2for a fraction-stored percentmax_scalebranch comparesdecimalPlacesOf(n)againstdef.scalewith NO percent armpercentScaleOfinpackages/specresolvesfractionunlessmax > 1, and its docblock states nothing aboutscaleWhy it matters, and why it is class (b)
A ruling that exists only in an issue comment is not a contract. Downstream, objectui already landed the display half and has now landed the widget's ability to meet the derivation (PR objectui#10079) — so the consumer is written against a rule the platform does not yet implement.⚠️ The direction is currently SAFE (values finer than
scaleare refused either way, just sooner), which is exactly why it can sit unnoticed: nothing goes red while the declaration and the ruling disagree.⛔ This may already be assigned
The ruling's own Execution section assigns this to the spec seat's vertical dispatch, so a card may exist that this seat could not find. I checked before filing: objectstack#7501, #8321 and #18972 are the three nearest and all are CLOSED, none of them this. ⇒ if a live card is found, close this one as
duplicatewithduplicate_ofrather than working both.Dedupe words:
max_scale percent fraction scale+2·record-validator percent branch derived storage scale·FieldSchema scale docblock percent displayedGenerated by Claude Code