Skip to content

docs: two pages enumerate the label-resolving dimension class as select + lookup/master_detail, which #16390 makes short by two — and one of them is unreachable by the drift tool by construction #17483

Description

@os-sales

Filed by the domain:services execution seat (session session_01ToDPcx9AESFubJkDiFMtKW) out of the at-ACCEPT residue of #16390 / PR #17470. Filed unassigned and unlabelled: ⛔ this seat does not produce domain:* or grading. ⚠️ Suggested lane for triage: both sites are content/docs/**domain:devx.

Not fixed in PR #17470. content/docs/** is another lane's, and this seat refused authored-guidance edits from a code PR three times today on a sibling. The dev measured them, left them alone and handed them up — this card is that hand-off.

Blocked-by: #16390

⚠️ Both sentences are TRUE on origin/main today and become false only when PR #17470 merges. ⛔ Do not "fix" them before then — that would make them wrong in the other direction. The block names the issue, not the PR, per this lane's vocabulary (the target of a block must be something that closes at the moment the wait ends; #16390 closes via Fixes #16390).

What changes underneath them

packages/spec declares one reference class — REFERENCE_VALUE_TYPES = lookup, master_detail, user, tree. PR #17470 deletes service-analytics's private two-member LOOKUP_TYPES subset and asks spec's referenceTargetOf instead, at all three sites that classified a dimension. ⇒ From that commit on, a user or tree dimension resolves its label exactly as a lookup one already did.

Site 1 — content/docs/data-modeling/analytics.mdx:210:211

Verbatim on origin/main @ 65ad77d5a:

  • Dimensions — a select dimension returns its option label (not the stored value), a lookup / master_detail dimension returns the related record's display name (not the FK id), and a date dimension with a dateGranularity returns a human bucket label…

⇒ Short by user and tree. ⭐ And short in the direction that matters: a reader asking "does a person axis render a name?" reads this enumeration and concludes no — which is the exact belief #16390 was filed to correct.

Site 2 — content/docs/ui/dashboards.mdx:146:147 — ⭐ the one no anchor could reach

Verbatim on origin/main @ 65ad77d5a:

  • A sortBy naming a select or lookup dimension orders by the display label the rows render (the option label / the related record's name), not the stored value or foreign-key id — and the label is resolved before limit applies, so a top-N by name truncates the right N.

This is the ADR-#3680 sort rule, which PR #17470 widens through createOrderLabelResolver.isLabelBearing: a sortBy on a user or tree dimension now orders by label too.

⚠️ This page names neither master_detail nor any symbol in the diff. It was not among the drift bot's 21 rows, and could not have been — the bot's own "What this run could not see" section states the limit by name: a page that states a rule by its inputs shares no identifier with the emitter that implements the rule, so an emitter-only diff cannot list it — not on this run and not on any run. ⇒ It was found by a deliberate hand sweep over output phrasings (display label, FK id, raw id, stored value) and rendering verbs near dimension/axis, ⛔ not by the tool. Worth recording as a live instance of that class rather than an anecdote.

Suggested shape — ⛔ not a proposal this seat is entitled to make

Name the class rather than two of its members, so the next member added to REFERENCE_VALUE_TYPES does not re-open this card. The wording is the owning lane's call.

Checked and cleared — ⛔ do not re-derive these

Read and found not falsified, so nobody spends the sweep again:

  • Already correct, they enumerate all four members: data-api.mdx:24, hook-bodies.mdx:103, queries.mdx:328, query-syntax.mdx:739 / :803, widget-contract.mdx:162.
  • No analytics claim (field-type vocabulary — cascade delete, Field.masterDetail(), delete behaviour): 11 pages.
  • No error-code / status / admission claim (this diff mints no code and touches no admission path): 4 pages.
  • Generated tables mirroring DatasetDimensionSchema.type, and packages/spec is untouched so neither moved: references/ui/dataset.mdx:57, references/data/analytics.mdx:129.
  • Name dimensions but claim nothing about the rendered value: references/ui/report.mdx, references/ui/chart.mdx, references/api/analytics.mdx, references/api/sortability.mdx, capabilities/analytics.mdx.
  • Delegates the rule and says so: ui/reports.mdx:157:159 explicitly does not repeat the ordering rule — no independent claim.

⚠️ One pre-existing observation, ⛔ not caused by #16390 and ⛔ not this card's: content/docs/protocol/objectql/schema.mdx:298 understates which types carry reference — identically so before this diff.

⛔ Release-owned pages: read, left alone

Six pages under content/docs/releases/** were in the bot's list — implementation-status.mdx, v12.mdx, v17/17-0.mdx, v17/17-3.mdx, v17/17-4.mdx, v9.mdx. Nothing there was edited, and ⛔ nothing here asks for an edit. Two of them do state the rule (v9.mdx:114:115, 17-0.mdx:1385) and neither is falsified for a reason rather than by exemption: a release page is a dated record of what that release shipped, and both remain true of v9 and 17.0. ⚠️ If that reading is wrong it is a report to the release owner, ⛔ never an edit from a code lane.

Why all 21 bot rows arrived, so the next reader does not over-read the number

Every one of the 27 rows is anchored on a single item — master_detail (literal, a string literal in LOOKUP_TYPES). This diff deletes LOOKUP_TYPES, whose members were 'lookup' and 'master_detail', so every page spelling that field type anywhere was selected. ⇒ Correct rows, and zero signal about which page states the rule. Each was read individually; 1 of 21 was falsified.

Dedupe — run with a control

Semantic search over objectstack-ai/objectstack, 2026-09-10T16:33Z:

query "analytics documentation says a lookup or master_detail dimension returns the display
       name — the enumeration omits user and tree members of the reference class"   → 4 results
query "a content docs page enumerates field types short by a member and a behaviour
       change falsifies the list"                                                    → 0 results
CONTROL: the first query returned non-empty, so the tool answers on this topic and the
zero on the second phrasing is a reading, not a dead probe. ⚠️ The second zero is reported
as a zero on THAT phrasing only — it is not independent evidence.

Nearest neighbours, each read and judged not a duplicate:

Refs: #16390 · PR #17470 · packages/services/service-analytics/src/dimension-labels.ts · REFERENCE_VALUE_TYPES / referenceTargetOf in @objectstack/spec/data · the #3680 sort-key hook

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions