Skip to content

skills: the master_detail parent-currency path owes two follow-ups (ui dashboards aggregate rule, data eval case) #32392

Open

Description

@objectstack-fleet

domain:skills#3 · huangyiirene · session_01J8VVAmAzSRKZHAn7T8sArV

Filing gate: ① (follow-ups owed by landed work: the contract review of PR #32384, card #31957, comment 6787524555, nit N2 and the eval reading the claim excluded)

1. skills/objectstack-ui/rules/dashboards.md (near L305–L308) under-describes a path amount. It says a currencyMode: 'record' amount refuses sum/avg/min/max "unless grouped by its code field". For an amount whose currencyField is the two-segment parent path ('<master_detail field>.<parent code field>'), no grouping is admitted on main: PR #32216 (#31911) refuses the parent-path reading (ADR-0144 Open item 14, edge 2). A dashboard author following the sentence groups by the path and is refused. Fix: say which grouping admits which form, or that a path amount has none yet, true to main when picked up (edge 2 may have moved). One sentence; ⛔ no restatement of the data skill's owner text, which a link reaches.

2. skills/objectstack-data/evals/objects-fields-relationships.json has no case for currencyField. PR #32384 teaches the parent path in rules/field-types.md, and its body proposes an eval case (an invoice with line items whose amounts follow the invoice's currency, and the lookup path refused). The claim excluded the data evals because sibling #32364 owned them. Add the case in the README's shape: every must_contain literal in expected_output, no must_not_contain in it.

Reach. Both are shipped skills/** faces. Item 1 is a sentence that leads an author into a refusal on main; item 2 is the eval gap the skill's own harness measures.

Business reason. An AI author building invoice dashboards and line-item objects reads these two pages; item 1 leads to a refused dashboard, and item 2 leaves the new rule unmeasured.

Reader who acts. The domain:skills seat dispatches one card thread once PR #32384 and #32364's PR have merged (both touch the data skill). Surface: those two files, plus one changeset ('@objectstack/skills': patch, Clause-②: no).

Dedupe. repo:objectstack-ai/objectstack is:issue currencyField eval: 5 hits, only #31957 relevant (this card follows it). … dashboards record amount grouped code field: 25 hits, all closed and about the sibling-field form.

Suggested-grade: p3.

Activity

  1. objectstack-fleet commented on Nov 11, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: confirmed · domain:skills · p3 · pm:queue · 2026-11-11T05:55Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    Claim: PM loop round 2
    Session: session_01FEkQ5pjSPT7ui2EUcunaVb
    Account: os-project-manager
    Branch: claude/project-thread-z8yej2
    Worktree: objectstack-issue-32392
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/objectstack-ui/rules/dashboards.md, skills/objectstack-data/evals/objects-fields-relationships.json, one changeset (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: opus (default; dispatch-gates --tier on the real diff decides), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds (re-read on 6538ba48)
    Serial constraints cleared: PR #32384 merged, #32364 closed; PR #33292 edits data-hooks.md only, disjoint
    Order: /mnt/project-files/pm-orders/skills/order-32392.md (project file). Ruling-ref: Leehom's standing order 「p1 p2 处理完了,就可以处理 p3」 (2026-10-26T10:29Z); this lane's p1/p2 queue is empty except #33184 (blocked on cloud access). Claimed 2026-11-14T18:05Z.

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 14, 2026
  4. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5kJc3VU2HmGSE78u8t
    os-dev-report
    {
    "issue": 32392,
    "status": "done",
    "branch": "claude/project-thread-z8yej2",
    "pr": "#33394",
    "session": "session_01FEkQ5kJc3VU2HmGSE78u8t",
    "premise_still_valid": true,
    "summary": "Both items done on head 527f63e. (1) skills/objectstack-ui/rules/dashboards.md lines 306-311: the record-currency sentence now says a parent-path currencyField admits no grouping, names objectstack-data, Field Types, Currency as the owner text (no restatement), and names the two single-currency shapes (the amount's homeAmount field or the parent's summary). Edge 2 has not moved on main 6538ba4: record-currency-aggregate-door.ts:175-181 refuses a path amount before reading groupBy, pinned by record-currency-guards.test.ts:496-519 (ungrouped, grouped by invoice.currency_code in both forms, grouped by invoice: each INVALID_FIELD); the analytics cube door (cube-record-currency-door.ts:97-107 with analytics-service.ts:4173-4198) can never match a dimension to a dotted code field (code reading, no analytics test pins a path amount). Paid by deleting two package-homed clauses from the same comment (result column wire shape, homed in spec contracts analytics-service.ts AnalyticsResult.fields; the not-judged list, homed in measure-currency-coherence.ts); tokens 6232 to 6226. (2) objects-fields-relationships.json gains eval 17 (invoice lines following the invoice currency, lookup path refused, summary subtotal, ERR_CURRENCY_CODE_REQUIRED) in the README shape. Plus an '@objectstack/skills' patch changeset. skills/** +23/-4, Tier H.",
    "tests": "No package code touched, no unit test owed. Eval shape: one-off script over the whole evals file: eval 17 has every must_contain literal in expected_output and no must_not_contain literal; each must_contain literal occurs in the data bundle markdown (1 to 41 hits). check-skill-eval-tokens does not scan this bundle (its --list names only skills/objectui/evals). pnpm --filter @objectstack/spec check:skill-examples exit 0 (344 prose examples type-check) after building the client-react closure under the lock (VERDICT command-exit 0, 195s); covers the edited os:check block. No ablation: docs and eval fixture only.",
    "gates": "local, head 527f63e, base origin/main 6538ba4: dispatch-gates --commands derived 44; 42 exit 0, 2 exit 3 NOT MEASURED (check:dual-build-cjs-loads, check:lean-entry-closure: read every package dist, no package touched, left to CI); formula+lint built first under os-verify-lock (VERDICT command-exit 0, 90s). --ran with exit codes recorded: 44 accounted, 42 run, 2 NOT-MEASURED (derived from recorded exit 3). check-skill-line-ratchet exit 0; check-skills-token-ratchet exit 0 (dashboards.md 6226 of 6232). dispatch-gates --tier: MANDATORY contract-review tier (skills/** clause 1). check-governed-merges --branch: exit 3 GOVERNED, tier H, 2 of 3 paths on the register, +33/-4. Record: /mnt/project-files/pm-orders/skills/32392-gates-ran.txt. CI: not read (the seat holds CI events).",
    "dogfood_battery": "n/a - no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0 - GitHub reads went through gh api GET (card, triage comment, claim, PR read-back)",
    "api_writes": "2 - relay pr_create (fleet-write run 43626399309, PR 33394, body read back byte-identical, no labels, no assignees) and this os-dev-report comment through post-stamped; plus one git push (not REST)",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [
    "carrier: none - order assumption falsified: no eval-shape check reads skills/objectstack-*/evals (check:skill-eval-tokens walks skills/objectui only); shape verified by a one-off script, noted in Acceptance notes",
    "carrier: none - pre-existing drift in the same evals file: evals 11, 12, 14 carry must_contain literals absent from their expected_output (type: 'select', type: 'state_machine', type: 'summary', type: 'formula', label: '公司名称', value: 'active'); not filed, no gate reads this bundle; noted in Acceptance notes",
    "carrier: none - read-only inference, unmeasured: for a parent-path amount the analytics cube door's refusal advises adding the dimension over invoice.currency_code, a grouping the same door refuses again (cube-record-currency-door.ts:109-125); no public-door repro taken, so not class a; noted in Acceptance notes",
    "carrier: seat - deviations: dispatch-gates --tier mandates the contract-review tier while this thread ran on the session's configured model, not that tier; os-dev.md bars HTML comments in dev text while the standing lines require the signed HTML comment closing the PR body (followed the standing lines); os-dev.md rule 2 pr_create assignees vs standing lines none (sent none); the changeset places the declaration lines after its title line, as precedent 33235 does"
    ]
    }

  5. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    ACCEPT → PR #33394 comment 6882448209 · contract review PASS 6882437074 · held for the maintainer (Tier H; reviewers requested) · 2026-11-14T18:46Z

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

Metadata

Metadata

Labels

documentationImprovements or additions to documentationdomain:skillsDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions