Skip to content

docs(language): relations get a page of their own, and the operators page stops restating how a call reads one - #543

Merged
FBumann merged 6 commits into
claude/relation-rules-docs-1x2fr9from
docs/relations-page
Sep 18, 2026
Merged

FBumann merged 6 commits into
claude/relation-rules-docs-1x2fr9from
docs/relations-page

Conversation

@FBumann

@FBumann FBumann commented Sep 18, 2026

Copy link
Copy Markdown
Contributor

Prompt: I feel like the whole dimensions, relations and operators docs could be made much easier to read! Should dimensions and relations be separated? Either relations on their own, or as a preamble for operators?

Note

The following content was generated by AI.

What this changes

Relations get a page of their own, relations.md, and the operators page stops restating how a call reads one. Docs only. Third in the stack, on #539.

  • relations.md holds the declaration, the key claim, roles and the data supply first, then one section, "How a relation is read", with walks, the six rules, partitions and a where. That section is now the one home for the frame law.
  • dimensions.md keeps the axis: the fields, where the members come from, and the "dimension, relation or parameter?" triage.
  • The sum, at and shift(by=) sections on the operators page keep one sentence and a link each. The dimension-combination table on the expressions page links the six rules rather than restating the walk's refusals in a cell.
  • The row for by= on the expressions page named sum and at only; it now covers every operator that takes one, and names within= beside over= and into=.
  • Every link into the old anchors is repointed, and the nav and the language index gain the page.

Why

The reference pages follow the file's keys, and dimensions: and relations: are two keys. The relations half was 230 of the page's 340 lines, and 150 of those described what an operator does with a relation. The same facts were also stated on the operators page and in the expressions table, so three copies could drift. One page, one copy.

A preamble to operators was the other option, and it was refused: the declaration syntax, the key claim and the data supply are the file's business, and a reader navigating by the file's keys would not look for them under "Operators".

Gates

pixi cannot be installed here, since the egress proxy refuses pixi.sh, so the gates ran from a uv venv on Python 3.13.

gate result
pytest tests/test_docs.py 33 passed
mkdocs build --strict clean, with the unreachable docs.python.org inventory dropped from the config for the run; this is what proves no repointed link is dead
prettier on docs/, typos clean
compile-tex not run; no model changed

Sentence length: relations n 105, avg 16.7, median 16, 16 over 25. Dimensions n 29, avg 16.8, median 18, 2 over 25. Operators n 99, avg 15.6, median 15, 10 over 25, against 102, 15.9, 15 and 10 on the base.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Q2gdGgMAdJ5ZVe8VM8tDTk


Generated by Claude Code

The six rules agreed for sum and at through a relation are written once,
under one heading, each with the example and the refusal that shows it.
The bullets that stated three of them in other words are folded in, so
no rule is on the page twice. A table beside the worked example shows
what each of its three calls consumes, joins on and produces. The
partition section says which of the six it keeps.

Sentence length on the page: n 125, avg 17.1, median 16, 21 over 25,
against n 105, avg 17.0, median 17, 13 over 25 before. Eight of the
over-25 count are a bold lead-in and its first sentence counted as one.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q2gdGgMAdJ5ZVe8VM8tDTk
…a relation may gain one without changing the call

`within=` is required whenever `shift`, `sum_back` or `position` names a
`by=`. Omitted, it meant every value column, so a calendar that gained a
`week` column regrouped every `shift` through it with nothing failing to
load (#538). The refusal names the rewrite, in the words the walk's own
refusal uses. Every call in the tree names its group; the typeset math
does not move, so the golden outputs are unchanged.

Closes #538

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q2gdGgMAdJ5ZVe8VM8tDTk
With within= required beside by=, a value column added to a relation is
not read by any partition, so the page says a partition keeps rule 3 in
full rather than only where the call wrote within=.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q2gdGgMAdJ5ZVe8VM8tDTk
…page stops restating how a call reads one

The relations half of the dimensions page moves to relations.md: the
declaration, the key claim, roles and the data supply first, then one
section on how a relation is read, holding walks, the six rules,
partitions and a where. The dimensions page keeps the axis and the
triage table. The sum, at and shift(by=) sections on the operators
page keep one sentence and a link each, and the dimension-combination
table on the expressions page links the six rules rather than restating
the frame law.

Sentence length: relations n 105, avg 16.7, median 16, 16 over 25;
dimensions n 29, avg 16.8, median 18, 2 over 25; operators n 99,
avg 15.6, median 15, 10 over 25.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q2gdGgMAdJ5ZVe8VM8tDTk
@FBumann
FBumann added this pull request to stack #541 September 18, 2026 14:46
…9' into docs/relations-page

# Conflicts:
#	docs/reference/language/dimensions.md
#	docs/reference/language/expressions.md
#	docs/reference/language/operators.md
@read-the-docs-community

read-the-docs-community Bot commented Sep 18, 2026 •

Copy link
Copy Markdown

@FBumann
FBumann merged commit 7e9a572 into main Sep 18, 2026
5 checks passed
@FBumann FBumann added the docs Documentation pages, guides, reference and README label Sep 24, 2026 — with Claude
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Documentation pages, guides, reference and README

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants