Skip to content

class-closure(currency-mode): every site that reads or teaches defaultCurrency without the currencyMode 'fixed' condition, or cites ADR-0053 for currency — spec describe, dashboards skill, data-api docs, analytics comments #20126

Description

@objectstack-fleet

Filing-gate category: ① — class b (a declared contract contradicted at several sites), filed as the family's class-closure card under the reachability / closure rule (maintainer 「同意」 on #20088, landing as PR #20110): one card covers every site of the family with one enumerating pin; ⛔ no further single-site cards for this family — a new site is appended here. Filed by the domain:skills#1 seat (session_0148fenvVvyQV9HYxgVDQ33q, os-tesla) from the os-dev-report 5827983271 on #20090 (PRs #20118 / #20120). ⛔ Not graded, not routed: domain:*, priority:* and type are triage's; the sites span the spec, skills, devx and services lanes, so triage may split them into lane sub-issues under this card.

Reach: exception — release-frozen wrong text on published surfaces (the spec describe ships in the published @objectstack/spec typings and in the auto-generated content/docs/references/data/field.mdx; skills/objectstack-ui/rules/dashboards.md ships by npx skills add). The runtime member #20091 was measured by its filer: analytics faces show a dynamic field's defaultCurrency while field faces show the tenant currency since objectui#10461 merged.

The contract (read on origin/main 7a13e05)

  • packages/spec/src/data/field-value.zod.ts :23 / :63 — a currency value is a bare number; the currency code lives in field config.
  • packages/spec/src/data/field.zod.ts :439–:440 — currencyMode: 'dynamic' | 'fixed' (default dynamic), defaultCurrency default 'CNY'; the FieldSchema guidance: a fixed currency is { currencyMode: 'fixed', defaultCurrency }, a field without one uses the tenant default at runtime.
  • docs/adr/0104-field-runtime-value-shape-contract.md :60 — all treat currency as a bare number. docs/adr/0053-* is the date / datetime semantics record and never names currency.

Sites — each reads or teaches defaultCurrency without the fixed condition, or cites ADR-0053 for currency

  1. packages/spec/src/data/field.zod.ts :439 — the currencyMode describe says 「dynamic (user selectable)」: no key, ADR or runtime seam provides a per-record selection (ADR-0104 D1: the code lives in field config, not per value). Surfaces verbatim in content/docs/references/data/field.mdx (2 rows, gen:docs). Fix = one describe phrase + gen:docs. Lane: spec.
  2. skills/objectstack-ui/rules/dashboards.md :304–:308 — teaches 「resolves measure currency → the aggregated field's currencyConfig.defaultCurrency → the tenant localization.currency default (ADR-0053)」: no mode, wrong ADR. Lane: skills (published catalog, Tier H).
  3. content/docs/api/data-api.mdx :467 — the same unconditioned chain with the 「ADR-0053」 citation. Lane: devx.
  4. packages/services/service-analytics/src/plugin.ts :1070 and src/analytics-service.ts :1792 — comments cite ADR-0053 for the currency chain, and the chain reads mc.currency ?? meta?.defaultCurrency ?? context?.currency with no mode condition — this is finding(service-analytics): a measure's currency is resolved without currencyMode, so a dynamic field's defaultCurrency shows on analytics faces while field faces show the tenant currency #20091's runtime half (services lane, pm:dispatched).

Members already fixed or in flight: #20090 (skills/objectstack-data/rules/field-types.md + content/docs/data-modeling/{field-types,fields}.mdx — PRs #20118 / #20120, the seat's ACCEPT); #20091 (the analytics runtime, in flight).

Enumerating pin (the closure test; ⛔ no new check-* gate — a test in the owning package or an existing self-test case, added by whichever PR closes the last site)

Dedupe

search_issues (open + closed) on 「currencyMode defaultCurrency read unconditionally without fixed mode tenant default currency ADR-0053 citation dashboards skill analytics measure chain user selectable describe」 → 6 hits: #20091 (open, the runtime member), #20090 (open, the docs / skill member, this card's origin), #19992 (open, currencyConfig.precision liveness — a different key), #8163 / #19910 / #15387 (closed, other currency questions). No closure card exists for this family. Dedupe words: currency-mode class closure · defaultCurrency fixed condition sites · ADR-0053 currency citation · dynamic user selectable describe · dashboards.md currency chain


Generated by Claude Code

Blocked-by: #20196

Activity

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, searchbugSomething isn't workingdocumentationImprovements or additions to documentationdomain:specpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions