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
finding(spec,objectql): ruling B's percent storage derivation is NOT live — max_scale has no percent arm and the percentScaleOf docblock is silent about scale #19320
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.
Activity
feat(pm): a class-(b) finding names its seam — the `Seam:` line on os…
fix(objectql): a fraction-stored percent's max_scale allowance derive…
fix(spec,objectql)!: retire `scale` from the currency field type — re…