Skip to content

skills/docs (currency): four texts teach that a dataset measure's own currency always wins over a fixed field; after #27579 a contradicting code is refused #27994

Closed

Description

@objectstack-fleet

domain:server#3 · os-elon-musk · session_016WV4czuTWNgKR22fKv7jia

Filing gate: ① skills and docs text that will contradict the runtime at named locations. Found by the #27579 card thread (PR #27991) and filed by the domain:server seat, because these files are outside the server lane's surface. ⛔ Not a claim.

Drift (lands with PR #27991)

PR #27991 (#27579, maintainer ruling 6486427200, ADR-0144 Open item 12 letter A) adds two fixed-currency refusals to dataset compile, both DATASET_INVALID / 400:

  • a measure currency that differs from its aggregated field's fixed code (restating the same code stays legal);
  • a derived measure, any op, whose monetary operands resolve to two different fixed codes.

Not judged, unchanged: a fixed code against the tenant currency, and a measure currency over a dynamic field.

These texts teach the old rule or only the record-mode refusals from #27338:

  1. skills/objectstack-data/rules/field-types.md:185: "Under 'fixed'/'dynamic' a measure's own currency wins." This becomes false for a contradicting fixed code.
  2. skills/objectstack-ui/rules/dashboards.md:298-300: the currency-chain comment.
  3. content/docs/data-modeling/currency.mdx:165-168 (Roll-ups and datasets): lists only the record-mode refusals.
  4. content/docs/api/data-api.mdx:498-505: the currency chain.

Grep used: git grep -n -iE "measure.{0,40}currency|currency.{0,40}measure" -- 'skills/**' 'content/docs/**'.

Wanted

State the two fixed refusals and their fixes next to the record-mode ones, in the words each file already uses. The fix for the first is to delete the measure's currency, so the column takes the field's code. The fix for the second is to derive from measures in one currency, or to drop the operand in the other. Keep the two not-judged cases explicit.

⛔ Do not edit before PR #27991 merges. Until then the texts are still true.

Dedupe

#27579 / PR #27991 (runtime), #27338 (record-mode arms), epic #8345 (the ADR-0144 dated note stays with the epic PM). No open card covers these lines.

Blocked-by: #27991

Activity

  1. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 写给 AI 的文档与 skills 说错一句,等于产品缺陷 | none | P①

    Triage: p2 · domain:skills · area:reports · pm:blocked on PR #27991 · cross-domain exception · 2026-10-30T06:57Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    area:reportsBusiness reporting — dashboards, reports, the numbers a manager reads
    documentationImprovements or additions to documentation
    on Oct 30, 2026
  3. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Claim: PM loop round 1 · 2026-10-30T07:19Z
    Session: session_016WV4czgqyQbG9VgmyNYDNt (card thread; seat session_016WV4d1QkPVVzNz3FJqb2iS)
    Account: os-elon-musk
    Branch: claude/project-thread-4nhwwo (the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)
    Worktree: objectstack-issue-27994
    Domain: domain:skills (cross-domain exception granted by triage 6516910471: two devx content/docs files declared here)
    Seat: domain:skills#2 (seat 1 vacant on #7623; p2 rung)
    File surface: skills/objectstack-data/rules/field-types.md (:185), skills/objectstack-ui/rules/dashboards.md (:298-300), content/docs/data-modeling/currency.mdx (:165-168), content/docs/api/data-api.mdx (:498-505) — the two fixed-currency dataset refusals and their fixes next to the record-mode ones, the two not-judged cases explicit; a .changeset/ file for @objectstack/skills; scripts/check-skills-token-ratchet.mjs rows only under the standing path — stop on breach; explain in the report
    Container & model: S, mode:thread, model: opus (dev; skills/** low-headroom downgrade, fable at review); effort: medium; skills/** owes a CONTRACT_REVIEW_TIER review (fable) before the approver
    Clause-②: no
    Metadata-protocol: none
    Responsibility: after PR #27991 (#27579) dataset compile refuses a measure currency that contradicts its field's fixed code and a derived measure mixing two fixed codes, but four texts still teach that a measure's own currency always wins, so an AI author writes a dataset the compiler refuses.
    Thread-read: 6516910471 (triage: p2; cross-domain exception for the two devx docs; one rule in four places in each file's own words; Tier H)
    Premise: holds (origin/main f4826f810: field-types.md:185 「a measure's own currency wins」; PR #27991 merged 2026-10-30T07:17Z, so Blocked-by: #27991 is spent and the card leaves pm:blocked with this claim)
    Serial constraints cleared: no open PR touches these four files at claim time (#27958 edits other objectstack-data / objectstack-ui files; #27954 edits datasources.md). Landing tier is read off the register at PR time; triage graded Tier H.

  4. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4czgqyQbG9VgmyNYDNt
    os-dev-report

    {
     "issue": 27994,
     "status": "pr_open",
     "pr": 28015,
     "branch": "claude/project-thread-4nhwwo",
     "head": "946f6b44",
     "session": "session_016WV4czgqyQbG9VgmyNYDNt",
     "premise_still_valid": true,
     "summary": "Two skills files and two docs pages state the two fixed-currency dataset refusals from #27991 (measure currency other than the field's fixed code; derived measure over two different fixed codes), each fix, and the two not-judged cases. Register: Tier H (skills/** x2). Contract review owed.",
     "gates": {
      "derived": 85,
      "run": 84,
      "exit0": 84,
      "not_measured": [
       "pnpm check:dual-build-cjs-loads (exit 3, needs whole-tree dist)"
      ],
      "unrun": 0,
      "ran_reconciliation": "85 derived, 84 run, 1 NOT-MEASURED, 0 UNRUN (re-derived after the merge commit: identical)",
      "extra": {
       "pnpm turbo run build --filter=@objectstack/docs": 0,
       "node scripts/check-published-list-mirrors.mjs": 0,
       "pnpm check:changeset-fixed": 0,
       "pnpm check:engine-double-contract": 0,
       "pnpm check:i18n-stale-fill": 0,
       "node scripts/docs-audit/check-affected-docs.mjs": 0,
       "pnpm check:published-readme-exports": "3 (not measured, needs built dists)",
       "lychee offline link check": "not run (no link added)",
       "pnpm lint": "not run (no code)"
      }
     },
     "line_budget": {
      "skills/objectstack-data/rules/field-types.md": {
       "tokens": "3158 -> 3207 (+49)",
       "paid_down": "Formula example returnType comment restating the Calculated table"
      },
      "skills/objectstack-ui/rules/dashboards.md": {
       "tokens": "6221 -> 6262 (+41)",
       "paid_down": "metric example colorVariant comment restating Widget options; currency comment's measure example shrunk to its currency key"
      },
      "path": "standing ruling 2026-10-27 「A:先削重复,余额按实测提高」, recognised path per record 6513306068; quoted in the PR body and beside each ratchet row"
     },
     "deviations": [
      "field-types.md has no record-mode refusal text to sit beside; the fixed refusals sit in the Currency resolution paragraph where the old 'measure currency wins' sentence was."
     ],
     "files_changed": [
      ".changeset/27994-fixed-currency-measure-refusals.md",
      "content/docs/api/data-api.mdx",
      "content/docs/data-modeling/currency.mdx",
      "scripts/check-skills-token-ratchet.mjs",
      "skills/objectstack-data/rules/field-types.md",
      "skills/objectstack-ui/rules/dashboards.md"
     ],
     "out_of_scope_findings": [],
     "api_writes": {
      "count": 2,
      "endpoints": [
       "relay pr_create -> #28015",
       "relay comment os-dev-report on #27994"
      ]
     },
     "git_push": 2,
     "mcp_calls": {
      "writes": 0,
      "reads": 2
     }
    }
  5. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    ACCEPT → PR #28015 (register Tier H, skills/**; contract review PASS on head 946f6b4; CI green; approvers requested). Awaiting a GOVERNED_APPROVERS approval, then the seat lands it. Runtime gap found in review → #28019.

  6. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Landed: PR #28015 merged (21b2a103e, 2026-10-30T08:35Z), Tier H, approved and queued by os-zhuang, on contract review PASS 6518287213 (ACCEPT 6518288120). pm:dispatched is stripped with this note.

    From this commit the skills and docs no longer teach that a dataset measure's own currency always wins over a fixed field. They teach the two fixed-currency refusals that #27579 introduced. The runtime gap the review surfaced, derived-measure currency, is filed separately as #28019 for the server lane. Nothing further owed on this card.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:reportsBusiness reporting — dashboards, reports, the numbers a manager readsdocumentationImprovements or additions to documentationdomain:skillspriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions