explico 0.7.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1409 -1
- package/README.md +60 -15
- package/dist/compiler/astro.d.ts +6 -1
- package/dist/compiler/cli.d.ts +54 -3
- package/dist/compiler/cli.js +80 -6
- package/dist/compiler/collections.d.ts +35 -2
- package/dist/compiler/collections.js +84 -8
- package/dist/compiler/course-config.d.ts +3 -194
- package/dist/compiler/course-config.js +78 -5
- package/dist/compiler/exports/standalone-html.d.ts +6 -1
- package/dist/compiler/knowledge-version.js +1 -1
- package/dist/compiler/lesson-derivation.d.ts +27 -10
- package/dist/compiler/lesson-derivation.js +23 -8
- package/dist/compiler/logging.d.ts +14 -1
- package/dist/compiler/logging.js +6 -2
- package/dist/compiler/manifest.d.ts +204 -31
- package/dist/compiler/manifest.js +270 -55
- package/dist/compiler/resolution-report.d.ts +6 -1
- package/dist/course-config-Dsnri9Tk.d.ts +464 -0
- package/dist/reference/base-accents.d.mts +26 -0
- package/dist/reference/base-accents.mjs +31 -0
- package/dist/reference/base-roman-labels.d.mts +2 -2
- package/dist/reference/base-roman-labels.mjs +2 -2
- package/dist/reference/consistency.d.ts +14 -2
- package/dist/reference/consistency.js +108 -4
- package/dist/reference/delimiter-size.d.ts +21 -11
- package/dist/reference/delimiter-size.js +15 -39
- package/dist/reference/diagrams-validate.d.ts +7 -2
- package/dist/reference/diagrams-validate.js +9 -1
- package/dist/reference/equations-validate.d.ts +8 -5
- package/dist/reference/equations-validate.js +1 -0
- package/dist/reference/equations.d.mts +69 -34
- package/dist/reference/equations.mjs +90 -44
- package/dist/reference/examples-validate.d.ts +31 -0
- package/dist/reference/examples-validate.js +48 -0
- package/dist/reference/figures-validate.d.ts +1 -1
- package/dist/reference/figures-validate.js +4 -1
- package/dist/reference/folds-validate.d.ts +33 -0
- package/dist/reference/folds-validate.js +32 -0
- package/dist/reference/gate-abbreviations.d.ts +3 -1
- package/dist/reference/gate-abbreviations.js +3 -2
- package/dist/reference/gate-course-rules.d.ts +32 -0
- package/dist/reference/gate-course-rules.js +85 -0
- package/dist/reference/gate-heading-length.d.ts +5 -2
- package/dist/reference/gate-heading-length.js +47 -23
- package/dist/reference/gate-heading-structure.d.ts +41 -0
- package/dist/reference/gate-heading-structure.js +113 -0
- package/dist/reference/gate-math-punctuation.d.ts +71 -0
- package/dist/reference/gate-math-punctuation.js +251 -0
- package/dist/reference/gate-math.d.ts +44 -6
- package/dist/reference/gate-math.js +63 -10
- package/dist/reference/gate-part-pages.d.ts +50 -0
- package/dist/reference/gate-part-pages.js +118 -0
- package/dist/reference/gate-prose-notation.d.ts +32 -11
- package/dist/reference/gate-prose-notation.js +30 -8
- package/dist/reference/katex-delimiters.d.mts +15 -0
- package/dist/reference/katex-delimiters.mjs +138 -0
- package/dist/reference/katex-options.mjs +4 -0
- package/dist/reference/keyed-float-validate.d.ts +27 -10
- package/dist/reference/keyed-float-validate.js +15 -1
- package/dist/reference/keyed-jsx-floats.d.mts +11 -5
- package/dist/reference/keyed-jsx-floats.mjs +73 -20
- package/dist/reference/knowledge-checks-validate.d.ts +1 -1
- package/dist/reference/knowledge-checks.d.mts +3 -1
- package/dist/reference/knowledge-checks.mjs +9 -4
- package/dist/reference/lab-math-scope.d.ts +1 -0
- package/dist/reference/lab-math-slot.d.ts +34 -0
- package/dist/reference/lab-math-slot.js +6 -0
- package/dist/reference/math-glyphs.d.mts +80 -4
- package/dist/reference/math-glyphs.mjs +588 -39
- package/dist/reference/page-notation.d.ts +6 -1
- package/dist/reference/raw-floats-validate.js +1 -1
- package/dist/reference/raw-floats.mjs +1 -1
- package/dist/reference/rehype-heading-anchors.d.mts +14 -0
- package/dist/reference/rehype-heading-anchors.mjs +116 -17
- package/dist/reference/rehype-table-header-labels.d.mts +6 -1
- package/dist/reference/rehype-table-header-labels.mjs +21 -3
- package/dist/reference/remark-asides.d.mts +3 -0
- package/dist/reference/remark-asides.mjs +180 -0
- package/dist/reference/remark-memo.d.mts +3 -1
- package/dist/reference/remark-memo.mjs +42 -11
- package/dist/reference/remark-notation.d.mts +60 -10
- package/dist/reference/remark-notation.mjs +387 -36
- package/dist/reference/render-lab-math.d.ts +4 -26
- package/dist/reference/render-lab-math.js +5 -5
- package/dist/reference/sections-validate.d.ts +27 -0
- package/dist/reference/sections-validate.js +41 -0
- package/dist/reference/sections.d.mts +97 -0
- package/dist/reference/sections.mjs +306 -0
- package/dist/reference/tables-validate.d.ts +1 -1
- package/dist/reference/types.d.ts +24 -1
- package/dist/reference/unit-words.d.ts +37 -0
- package/dist/reference/unit-words.js +170 -0
- package/dist/rules/catalog.d.ts +176 -0
- package/dist/rules/catalog.js +983 -0
- package/dist/rules/course-rules.d.ts +115 -0
- package/dist/rules/course-rules.js +292 -0
- package/dist/rules/course-rules.schema.json +138 -0
- package/dist/rules/in-effect.d.ts +53 -0
- package/dist/rules/in-effect.js +142 -0
- package/dist/rules/rules.schema.json +1072 -0
- package/dist/rules/settings.d.ts +3 -0
- package/dist/rules/settings.js +290 -0
- package/dist/rules/waivers.d.ts +53 -0
- package/dist/rules/waivers.js +132 -0
- package/dist/session/PreferenceStore.d.ts +5 -0
- package/dist/session/PreferenceStore.js +9 -0
- package/docs/VERSIONING.md +2 -2
- package/docs/authoring/README.md +232 -40
- package/docs/authoring/agents.md +55 -9
- package/docs/authoring/components.md +178 -22
- package/docs/authoring/migrating.md +1324 -2
- package/docs/authoring/notation.md +616 -344
- package/docs/authoring/prose.md +551 -0
- package/docs/authoring/retired.md +35 -0
- package/docs/authoring/structure-rules.md +422 -40
- package/docs/authoring/structure.md +445 -62
- package/docs/authoring/versioning.md +20 -28
- package/docs/authoring/visualizations.md +142 -20
- package/docs/katex-bracket-scaling.md +191 -0
- package/package.json +3 -2
- package/src/compiler/cli.ts +139 -6
- package/src/compiler/collections.ts +144 -10
- package/src/compiler/course-config.ts +273 -34
- package/src/compiler/knowledge-version.ts +1 -1
- package/src/compiler/lesson-derivation.ts +54 -15
- package/src/compiler/logging.ts +21 -4
- package/src/compiler/manifest.ts +573 -104
- package/src/components/BlockHeading.astro +113 -0
- package/src/components/CourseContents.astro +221 -0
- package/src/components/CurriculumMap.astro +5 -6
- package/src/components/FloatIndex.astro +200 -0
- package/src/components/HoverPanel.astro +431 -79
- package/src/components/PartBridge.astro +27 -0
- package/src/components/PartOverview.astro +401 -0
- package/src/components/PartScope.astro +27 -0
- package/src/components/abbreviation/AbbreviationLayer.astro +49 -51
- package/src/components/assessments/AssessmentRunner.tsx +8 -5
- package/src/components/assessments/AssessmentSet.astro +23 -26
- package/src/components/block-heading.ts +146 -0
- package/src/components/card-arrow.ts +243 -0
- package/src/components/card-drag.ts +631 -0
- package/src/components/card-jump.ts +45 -0
- package/src/components/card-manager.ts +1589 -0
- package/src/components/card-memory.ts +177 -0
- package/src/components/card-placement.ts +504 -0
- package/src/components/card-side.ts +336 -0
- package/src/components/card-travel.ts +197 -0
- package/src/components/citation/CitationLayer.astro +77 -76
- package/src/components/diagram/Diagram.astro +161 -316
- package/src/components/disclosure/course-disclosure.ts +24 -0
- package/src/components/disclosure/hover-preview.ts +122 -42
- package/src/components/disclosure/persisted-disclosure.ts +3 -3
- package/src/components/disclosure/print-as-shown.ts +252 -0
- package/src/components/examples/CompactExample.astro +3 -1
- package/src/components/examples/CompactExamples.astro +101 -94
- package/src/components/figure/Figure.astro +174 -274
- package/src/components/figure/FloatCaption.astro +87 -0
- package/src/components/figure/figure-state.ts +58 -0
- package/src/components/figure/figure-tools.ts +87 -0
- package/src/components/float-name.ts +101 -0
- package/src/components/fold/Fold.astro +125 -0
- package/src/components/fold/fold-id.ts +40 -0
- package/src/components/memo/Memo.astro +162 -231
- package/src/components/memo/ShortNote.astro +6 -6
- package/src/components/notation/NotationFormula.astro +5 -1
- package/src/components/notation/NotationGlossary.astro +24 -14
- package/src/components/notation/NotationLayer.astro +169 -162
- package/src/components/notation/NotationMath.astro +10 -1
- package/src/components/notation/render-notation-math.ts +111 -10
- package/src/components/reference/FloatRefLayer.astro +485 -423
- package/src/components/starlight/AboutPanel.astro +22 -6
- package/src/components/starlight/CollapsibleSections.astro +207 -93
- package/src/components/starlight/DiagramEnhancer.astro +15 -138
- package/src/components/starlight/HeadingAnchorEnhancer.astro +193 -1
- package/src/components/starlight/KeyedFloatEnhancer.astro +100 -9
- package/src/components/starlight/LayoutHeader.astro +298 -19
- package/src/components/starlight/LayoutPageSidebar.astro +99 -12
- package/src/components/starlight/LayoutPageTitle.astro +120 -0
- package/src/components/starlight/LayoutSidebar.astro +229 -11
- package/src/components/starlight/LessonExportActions.astro +53 -72
- package/src/components/starlight/LessonFooter.astro +26 -4
- package/src/components/starlight/section-parts.ts +15 -2
- package/src/components/starlight/section-summary.ts +181 -0
- package/src/components/table/Table.astro +95 -76
- package/src/components/table/TableOverflowExpander.astro +65 -28
- package/src/content-config.ts +40 -4
- package/src/reference/base-accents.mjs +31 -0
- package/src/reference/base-roman-labels.mjs +2 -2
- package/src/reference/consistency.ts +176 -5
- package/src/reference/delimiter-size.ts +40 -61
- package/src/reference/diagrams-validate.ts +17 -1
- package/src/reference/equations-validate.ts +10 -5
- package/src/reference/equations.mjs +90 -44
- package/src/reference/examples-validate.ts +97 -0
- package/src/reference/figures-validate.ts +6 -1
- package/src/reference/folds-validate.ts +65 -0
- package/src/reference/gate-abbreviations.ts +3 -2
- package/src/reference/gate-course-rules.ts +134 -0
- package/src/reference/gate-heading-length.ts +68 -37
- package/src/reference/gate-heading-structure.ts +193 -0
- package/src/reference/gate-math-punctuation.ts +381 -0
- package/src/reference/gate-math.ts +119 -12
- package/src/reference/gate-part-pages.ts +217 -0
- package/src/reference/gate-prose-notation.ts +74 -13
- package/src/reference/katex-delimiters.mjs +138 -0
- package/src/reference/katex-options.mjs +4 -0
- package/src/reference/keyed-float-validate.ts +45 -11
- package/src/reference/keyed-jsx-floats.mjs +73 -20
- package/src/reference/knowledge-checks-validate.ts +1 -1
- package/src/reference/knowledge-checks.mjs +9 -4
- package/src/reference/lab-math-slot.ts +36 -0
- package/src/reference/math-glyphs.mjs +588 -39
- package/src/reference/raw-floats-validate.ts +1 -1
- package/src/reference/raw-floats.mjs +1 -1
- package/src/reference/rehype-heading-anchors.mjs +116 -17
- package/src/reference/rehype-table-header-labels.mjs +21 -3
- package/src/reference/remark-asides.mjs +180 -0
- package/src/reference/remark-memo.mjs +42 -11
- package/src/reference/remark-notation.mjs +387 -36
- package/src/reference/render-lab-math.ts +17 -32
- package/src/reference/sections-validate.ts +81 -0
- package/src/reference/sections.mjs +306 -0
- package/src/reference/tables-validate.ts +2 -1
- package/src/reference/types.ts +24 -0
- package/src/reference/unit-words.ts +233 -0
- package/src/rules/catalog.ts +1298 -0
- package/src/rules/course-rules.ts +456 -0
- package/src/rules/in-effect.ts +235 -0
- package/src/rules/settings.ts +448 -0
- package/src/rules/waivers.ts +249 -0
- package/src/session/PreferenceStore.ts +15 -0
- package/src/styles/global.css +1471 -163
- package/src/styles/surfaces.css +182 -0
- package/src/components/hover-panel.ts +0 -339
- package/src/components/popup-stack.ts +0 -345
package/docs/authoring/prose.md
CHANGED
|
@@ -6,6 +6,41 @@ meets in running text rather than in a symbol, a figure, or a heading.
|
|
|
6
6
|
See [README.md](README.md) for what "strong recommendation", "Build-enforced",
|
|
7
7
|
and "Review-only" mean here, and how to amend a rule.
|
|
8
8
|
|
|
9
|
+
## The goal is clarity
|
|
10
|
+
|
|
11
|
+
An explico page — a lesson in a set of lecture notes, or a page of technical
|
|
12
|
+
documentation — is read to learn from and to look things up. A reader studies
|
|
13
|
+
it, rereads it to find one definition or one step, and checks each claim. The
|
|
14
|
+
main text is written so that each sentence has one reading. When clarity
|
|
15
|
+
conflicts with variety or entertainment, clarity wins: a repeated term is
|
|
16
|
+
better than a synonym, a literal statement is better than a metaphor, and a
|
|
17
|
+
plain sentence is better than a lively one.
|
|
18
|
+
|
|
19
|
+
"Lesson" below means any content page, whatever the site is for; "course"
|
|
20
|
+
means the whole site. Both are the engine's own terms.
|
|
21
|
+
|
|
22
|
+
[P2](#p2)–[P9](#p9) adapt the controlled-language principles of ASD-STE100
|
|
23
|
+
(Simplified Technical English) to scientific and technical writing. They keep its
|
|
24
|
+
aims — one term for each concept, one meaning for each term, simple explicit
|
|
25
|
+
sentences — but not its restricted dictionary: a course uses the full
|
|
26
|
+
established vocabulary of its field.
|
|
27
|
+
|
|
28
|
+
## Main text and asides
|
|
29
|
+
|
|
30
|
+
Some rules below apply only to the main text.
|
|
31
|
+
|
|
32
|
+
- **Main text** is everything a reader must read to follow the lesson:
|
|
33
|
+
headings, paragraphs, list items, table cells, figure and table titles and
|
|
34
|
+
captions, derivation justifications ([N18](notation.md#n18)), and
|
|
35
|
+
assessment prompts and explanations.
|
|
36
|
+
- An **aside** is optional material that a reader can skip: the body of a
|
|
37
|
+
`<ShortNote>` or a `<Memo>` ([components.md](components.md#short-asides-and-detours)).
|
|
38
|
+
|
|
39
|
+
The main text must be complete without its asides. A reader who never opens
|
|
40
|
+
an aside still gets every definition and every step of the argument. An
|
|
41
|
+
aside can hold an analogy, a historical remark, or industry jargon
|
|
42
|
+
([P6](#p6)), which the main text excludes.
|
|
43
|
+
|
|
9
44
|
---
|
|
10
45
|
|
|
11
46
|
## P1
|
|
@@ -62,3 +97,519 @@ alternative.
|
|
|
62
97
|
_Exceptions._ A quotation, a source title, or a code identifier that contains
|
|
63
98
|
"or" is left as written. So is "or" inside an assessment answer choice that
|
|
64
99
|
really offers alternatives.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## P2
|
|
104
|
+
|
|
105
|
+
**Use one term for each concept, and repeat it.**
|
|
106
|
+
|
|
107
|
+
Each concept in a course has one canonical term. The main text uses that term
|
|
108
|
+
every time it refers to the concept, also when the repetition sounds heavy.
|
|
109
|
+
Do not replace the term with a synonym, a near-synonym, or a paraphrase to
|
|
110
|
+
avoid repetition.
|
|
111
|
+
|
|
112
|
+
```md
|
|
113
|
+
<!-- Four names for one quantity. Is "how far the ball travels" the range? -->
|
|
114
|
+
|
|
115
|
+
The range depends on the launch angle. The horizontal distance is largest at
|
|
116
|
+
$45^\circ$, and past that a steeper throw shortens how far the ball travels.
|
|
117
|
+
The reach at $30^\circ$ matches the reach at $60^\circ$.
|
|
118
|
+
|
|
119
|
+
<!-- One name for each concept, repeated. -->
|
|
120
|
+
|
|
121
|
+
The range depends on the launch angle. The range is largest at a launch angle
|
|
122
|
+
of $45^\circ$. Above $45^\circ$, a larger launch angle gives a smaller range.
|
|
123
|
+
The range at $30^\circ$ equals the range at $60^\circ$.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
_Rationale._ General writing style teaches authors not to repeat a word, so
|
|
127
|
+
they rotate synonyms. In technical text, a reader takes a new word as a
|
|
128
|
+
signal of a new concept. "Horizontal distance" really can name a different
|
|
129
|
+
quantity: the horizontal position at any moment of the flight, of which the
|
|
130
|
+
range is only the final value. A reader who meets three names must stop to
|
|
131
|
+
check whether they mean the same thing, or assume that they do and sometimes
|
|
132
|
+
be wrong. Repetition costs the reader nothing.
|
|
133
|
+
|
|
134
|
+
_How to apply._
|
|
135
|
+
|
|
136
|
+
- **Choose the canonical term.** When the concept has a notation entry, its
|
|
137
|
+
`label` is the canonical term (`motion.range` → "range"). Otherwise use the
|
|
138
|
+
term of the lesson that defines the concept, which is normally the
|
|
139
|
+
established term of the field ([P4](#p4)).
|
|
140
|
+
- **Keep it across the course, not only the page.** Readers move between
|
|
141
|
+
lessons in any order. A term that changes between two lessons looks like a
|
|
142
|
+
new concept.
|
|
143
|
+
- **Introduce a second name once, if the reader needs it.** When other
|
|
144
|
+
sources, software, or data sets use another established name, give it once,
|
|
145
|
+
at the definition, with "also called" ([P1](#p1)). Do not use it again in
|
|
146
|
+
the main text. When the other name is informal industry jargon, it goes in
|
|
147
|
+
an aside instead ([P6](#p6)).
|
|
148
|
+
- **Verbs count too.** If the lesson says "substitute", it does not later say
|
|
149
|
+
"plug in" or "insert" for the same operation.
|
|
150
|
+
- **Symbols and pronouns are not synonyms.** "The range" in one sentence and
|
|
151
|
+
$R$ in the next refer to one notation entry; that is correct. A pronoun or a
|
|
152
|
+
short form ("the launch angle … this angle") is also correct when its
|
|
153
|
+
antecedent is clear ([P7](#p7)).
|
|
154
|
+
|
|
155
|
+
_Enforcement._ Review-only. Whether two words name the same concept depends
|
|
156
|
+
on what the author means, so no gate can decide it. A useful review pass:
|
|
157
|
+
list every noun phrase on the page that names a quantity, and compare each
|
|
158
|
+
one with the `label` of its notation entry.
|
|
159
|
+
|
|
160
|
+
_Exceptions._ A quotation or a source title keeps its own wording. A second
|
|
161
|
+
name introduced once at the definition, as above, is the purpose of
|
|
162
|
+
[P1](#p1), not a breach of this rule.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## P3
|
|
167
|
+
|
|
168
|
+
**Give each term one meaning, and keep it.**
|
|
169
|
+
|
|
170
|
+
After a term has a meaning in the course, it has that meaning everywhere in
|
|
171
|
+
the course. Do not use the same word for a second concept. Do not use a
|
|
172
|
+
technical term of the field in its everyday sense.
|
|
173
|
+
|
|
174
|
+
```md
|
|
175
|
+
<!-- "Range" names two concepts in one sentence. -->
|
|
176
|
+
|
|
177
|
+
We vary the launch angle over the range $0^\circ$ to $90^\circ$ and record
|
|
178
|
+
the range at each launch angle.
|
|
179
|
+
|
|
180
|
+
<!-- "Range" names one concept. -->
|
|
181
|
+
|
|
182
|
+
We vary the launch angle from $0^\circ$ to $90^\circ$ and record the range
|
|
183
|
+
at each launch angle.
|
|
184
|
+
|
|
185
|
+
<!-- Statistics course: "significant" in its everyday sense. Large, or p < α? -->
|
|
186
|
+
|
|
187
|
+
The new method gives a significant improvement.
|
|
188
|
+
|
|
189
|
+
<!-- The size and the test result, each stated in its own words. -->
|
|
190
|
+
|
|
191
|
+
The new method halves the mean error. The reduction is statistically
|
|
192
|
+
significant ($p < 0.05$).
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
_Rationale._ This is [N4](notation.md#n4) — one meaning per glyph — applied
|
|
196
|
+
to words. A reader who has learned a definition applies it at every
|
|
197
|
+
occurrence of the word. When "range" also means an interval of angles, the
|
|
198
|
+
reader must decide at each occurrence which meaning applies, or apply the
|
|
199
|
+
wrong definition without noticing. Everyday senses cause most failures,
|
|
200
|
+
because the author does not notice them: "significant", "normal", "error",
|
|
201
|
+
"bias", and "confidence" in statistics; "weight", "work", "power",
|
|
202
|
+
"velocity", and "acceleration" in physics.
|
|
203
|
+
|
|
204
|
+
_How to apply._
|
|
205
|
+
|
|
206
|
+
- Use a different word for the second concept: "from … to" or "interval" for
|
|
207
|
+
a set of angles; "large", or a number, for a size.
|
|
208
|
+
- Treat the technical terms of the course's field as reserved in the main
|
|
209
|
+
text, also in lessons that come before the term's definition. A reader who
|
|
210
|
+
has met the term elsewhere reads it in its technical sense.
|
|
211
|
+
- When the field itself gives one word two established technical meanings
|
|
212
|
+
(the range of a projectile, the range of a function), use one meaning
|
|
213
|
+
unqualified in the course, and qualify the other at every occurrence ("the
|
|
214
|
+
range of the function $f$").
|
|
215
|
+
- When two cited sources define a term differently, choose one definition,
|
|
216
|
+
state it in the main text, and note the other definition in an aside.
|
|
217
|
+
|
|
218
|
+
_Enforcement._ Review-only. [N4](notation.md#n4) is build-enforced because
|
|
219
|
+
every glyph is bound to a notation key. A word is bound to nothing, so a
|
|
220
|
+
reviewer checks it.
|
|
221
|
+
|
|
222
|
+
_Exceptions._ A sentence about the word itself, rather than one that uses
|
|
223
|
+
it, may name the everyday sense: "In everyday English, 'significant' means
|
|
224
|
+
'large'; in this course it means …". A quotation keeps its own wording.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## P4
|
|
229
|
+
|
|
230
|
+
**Use the established term, and define it where the argument first needs it.**
|
|
231
|
+
|
|
232
|
+
When the field has an established term for a concept, use it. Do not invent a
|
|
233
|
+
new name, and do not replace the term with a paraphrase that the reader cannot
|
|
234
|
+
find in other sources. Define each term that the reader cannot be assumed to
|
|
235
|
+
know, at the point where the argument first depends on it.
|
|
236
|
+
|
|
237
|
+
```md
|
|
238
|
+
<!-- An invented name, used before it is defined. -->
|
|
239
|
+
|
|
240
|
+
The trip time doubles when the launch speed doubles.
|
|
241
|
+
(Two paragraphs later.) By trip time we mean the time from launch to landing.
|
|
242
|
+
|
|
243
|
+
<!-- The established term, defined where it is first needed. -->
|
|
244
|
+
|
|
245
|
+
The time of flight is the time from launch to landing. The time of flight
|
|
246
|
+
doubles when the launch speed doubles.
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
_Rationale._ An established term connects the lesson to every textbook,
|
|
250
|
+
paper, and search that the reader uses later. An invented name or a
|
|
251
|
+
paraphrase breaks that connection. A definition given where the argument
|
|
252
|
+
first needs it is read together with the context that makes it meaningful. A
|
|
253
|
+
definition given much earlier is forgotten before it is used, and a
|
|
254
|
+
definition given later leaves a gap that the reader fills with a guess.
|
|
255
|
+
|
|
256
|
+
_How to apply._
|
|
257
|
+
|
|
258
|
+
- "Cannot be assumed to know" means: not covered by the lesson's
|
|
259
|
+
`assumptions` frontmatter, and not defined in an earlier lesson. For a term
|
|
260
|
+
from an earlier lesson, a link to its definition replaces a new definition.
|
|
261
|
+
- A definition is one of: a sentence in the main text that says what the
|
|
262
|
+
term means; the `[[key]]` card of a notation entry ([N4](notation.md#n4));
|
|
263
|
+
or an abbreviation entry ([N14](notation.md#n14)). A definition that exists
|
|
264
|
+
only inside an aside does not count, because the main text must be complete
|
|
265
|
+
without its asides.
|
|
266
|
+
- Define terms one at a time, in the sentence that first needs them. Do not
|
|
267
|
+
collect definitions in a list at the start of the lesson, for the same
|
|
268
|
+
reason that [N4](notation.md#n4) excludes a trailing notation list.
|
|
269
|
+
- Use the term as the field's textbooks and the course's cited sources
|
|
270
|
+
(`content/sources/`) use it. When the field has two established terms,
|
|
271
|
+
choose one ([P2](#p2)) and give the other once with "also called"
|
|
272
|
+
([P1](#p1)).
|
|
273
|
+
- When no established term exists and the lesson needs a name, say that the
|
|
274
|
+
name belongs to the course: "We call this the _level-ground case_; the name
|
|
275
|
+
is not a standard term."
|
|
276
|
+
|
|
277
|
+
_Enforcement._ Review-only for words. Symbols and abbreviations have their own
|
|
278
|
+
build-enforced rules: a symbol needs a notation binding ([N4](notation.md#n4)),
|
|
279
|
+
and an abbreviation-shaped word needs an entry ([N14](notation.md#n14)).
|
|
280
|
+
|
|
281
|
+
_Exceptions._ An overview page (a part overview, the course contents) may
|
|
282
|
+
name a term before the lesson that defines it, if it links to that lesson.
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## P5
|
|
287
|
+
|
|
288
|
+
**Write the main text literally: no idioms, metaphors, colloquialisms,
|
|
289
|
+
buzzwords, or entertainment.**
|
|
290
|
+
|
|
291
|
+
The main text states what happens in literal, precise words. It does not use:
|
|
292
|
+
|
|
293
|
+
- **Idioms and colloquialisms** — "boils down to", "kicks in", "in a
|
|
294
|
+
nutshell", "ballpark", "a ton of", "pretty much".
|
|
295
|
+
- **Metaphors and personification** — "gravity wins the tug-of-war", "the
|
|
296
|
+
ball wants to keep going", "the formula hides a square".
|
|
297
|
+
- **Buzzwords** — "powerful", "game-changing", "cutting-edge", "leverage",
|
|
298
|
+
"unlock". A buzzword that is also a technical term of the field, such as
|
|
299
|
+
"robust" in statistics, is used only in its technical sense ([P3](#p3)).
|
|
300
|
+
- **Entertainment devices** — jokes, teasers, "Let's dive in!", a sentence
|
|
301
|
+
that ends with an exclamation mark, a rhetorical question that the next
|
|
302
|
+
sentence answers.
|
|
303
|
+
- **Vague qualifiers and empty adverbs** — "much larger" when the text can say
|
|
304
|
+
"four times larger"; "obviously", "clearly", "simply", and "just", which
|
|
305
|
+
make no claim and hide a step.
|
|
306
|
+
|
|
307
|
+
```md
|
|
308
|
+
<!-- Entertainment and figurative language. What changes, and by how much? -->
|
|
309
|
+
|
|
310
|
+
Let's dive in! The launch angle is the secret sauce here: crank it past
|
|
311
|
+
$45^\circ$ and the ball burns its energy climbing, so it lands way short.
|
|
312
|
+
|
|
313
|
+
<!-- Literal statements. -->
|
|
314
|
+
|
|
315
|
+
The launch angle determines the horizontal and the vertical component of the
|
|
316
|
+
launch velocity. Above $45^\circ$, a larger launch angle gives a smaller
|
|
317
|
+
horizontal component, a longer time of flight, and a smaller range.
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
_Rationale._ A figurative expression must be translated into a literal claim
|
|
321
|
+
before a reader can use it, and the translation can fail. "The ball burns its
|
|
322
|
+
energy climbing" does not say which quantity gets smaller, and read
|
|
323
|
+
literally it is wrong: without air resistance, the mechanical energy is
|
|
324
|
+
conserved. Idioms and colloquialisms are the most difficult part of English
|
|
325
|
+
for readers whose first language is not English, and machine translation
|
|
326
|
+
handles them worst. Entertainment devices add words that make no claim. On a
|
|
327
|
+
page that a reader rereads to find one definition or one step, each such word
|
|
328
|
+
is one more word to read past.
|
|
329
|
+
|
|
330
|
+
_How to apply._
|
|
331
|
+
|
|
332
|
+
- Replace a figure of speech with the claim it stands for, and name the
|
|
333
|
+
quantity and the direction of change: "gravity wins" → "the vertical
|
|
334
|
+
velocity component decreases to zero".
|
|
335
|
+
- Replace a vague qualifier with a number or an exact relation when one is
|
|
336
|
+
available ([P8](#p8)): "much larger" → "four times larger".
|
|
337
|
+
- Replace a rhetorical question with the statement it introduces: "Why does
|
|
338
|
+
$45^\circ$ give the largest range?" → "This section shows why $45^\circ$
|
|
339
|
+
gives the largest range."
|
|
340
|
+
- Delete "obviously", "clearly", "simply", and "just". If a step needs
|
|
341
|
+
support, state the reason ([P7](#p7)).
|
|
342
|
+
- Put an analogy that helps intuition in an aside, and label it as an analogy
|
|
343
|
+
(for example `title="(an analogy)"` on a `<ShortNote>`). The main text
|
|
344
|
+
still states the literal claim without it.
|
|
345
|
+
|
|
346
|
+
_Enforcement._ Review-only. A phrase list could flag common idioms, but
|
|
347
|
+
figurative language is open-ended, and many established terms look
|
|
348
|
+
figurative ("tail", "noise"). Such a list would miss real cases and flag
|
|
349
|
+
correct terms.
|
|
350
|
+
|
|
351
|
+
_Exceptions._
|
|
352
|
+
|
|
353
|
+
- An established technical term with a figurative origin is a term, not a
|
|
354
|
+
metaphor: "white noise", "the tail of a distribution", "gradient descent",
|
|
355
|
+
"field line". The test is whether the field's textbooks use the expression
|
|
356
|
+
as a term.
|
|
357
|
+
- An aside may contain an analogy that is labelled as one, as above.
|
|
358
|
+
- A quotation keeps its own wording.
|
|
359
|
+
|
|
360
|
+
---
|
|
361
|
+
|
|
362
|
+
## P6
|
|
363
|
+
|
|
364
|
+
**Keep industry jargon out of the main text. Put jargon that the reader must
|
|
365
|
+
recognize in an optional "Industry jargon" aside.**
|
|
366
|
+
|
|
367
|
+
_Industry jargon_ is an informal expression that practitioners of a trade or
|
|
368
|
+
a field use without a standard definition in the field's textbooks,
|
|
369
|
+
standards, or the course's cited sources. Examples: "hang time" (sports),
|
|
370
|
+
"ground truth" (machine learning), "p-hacking" (applied statistics).
|
|
371
|
+
|
|
372
|
+
The main text explains each concept with its established term ([P4](#p4)).
|
|
373
|
+
It never uses jargon as an explanation ("the time of flight, basically the
|
|
374
|
+
hang time"). When the reader needs to recognize a jargon expression — because
|
|
375
|
+
they will meet it at work, in software, in data, or in the media — add an
|
|
376
|
+
aside for it:
|
|
377
|
+
|
|
378
|
+
```mdx
|
|
379
|
+
The time of flight is the time from launch to landing <ShortNote id="jargon-hang-time" title="(industry jargon: hang time)" description="What the sports expression 'hang time' means, and how it relates to the time of flight.">
|
|
380
|
+
|
|
381
|
+
**Industry jargon: "hang time".** Sports commentators use "hang time" for
|
|
382
|
+
the time that a kicked ball or a jumping athlete stays in the air. It is
|
|
383
|
+
roughly the time of flight, but it has no standard definition. For a kicked
|
|
384
|
+
ball it is usually timed from the kick to the catch, not to the landing.
|
|
385
|
+
|
|
386
|
+
</ShortNote>.
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
_Rationale._ Jargon has no fixed definition, so a concept explained with
|
|
390
|
+
jargon takes on its vagueness. But readers do meet jargon — at work, in
|
|
391
|
+
software, in the media — and a course that never mentions it leaves them
|
|
392
|
+
unable to connect it with what they learned. A labelled, optional aside
|
|
393
|
+
serves both needs: the main text stays exact, and the reader who needs the
|
|
394
|
+
connection finds it, together with an honest statement of how loosely the
|
|
395
|
+
expression is defined.
|
|
396
|
+
|
|
397
|
+
_How to apply._
|
|
398
|
+
|
|
399
|
+
- **Tell jargon from terminology.** An expression is established terminology
|
|
400
|
+
when the field's textbooks, standards, or the course's cited sources
|
|
401
|
+
(`content/sources/`) define it. It is jargon when practitioners use it
|
|
402
|
+
without such a definition. When in doubt, check the cited sources: if none
|
|
403
|
+
of them defines the expression, treat it as jargon.
|
|
404
|
+
- **Choose the aside.** Use a `<ShortNote>` for one expression that needs one
|
|
405
|
+
paragraph; its `title` names the expression, as in "(industry jargon: hang
|
|
406
|
+
time)", so the reader can decide whether to open it. Use a `<Memo>` titled
|
|
407
|
+
"Industry jargon: …" for a longer explanation, or for several expressions
|
|
408
|
+
from one field, and cite it with `[[memo-…]]` from the sentence that
|
|
409
|
+
introduces the concept.
|
|
410
|
+
- **State three things in the aside:**
|
|
411
|
+
1. _Approximate meaning_, in the course's canonical terms ("roughly the
|
|
412
|
+
time of flight").
|
|
413
|
+
2. _Context of use_: who uses the expression, and where.
|
|
414
|
+
3. _Standardization_: whether the expression has a standard definition,
|
|
415
|
+
and whether uses differ. If uses differ, say how.
|
|
416
|
+
- **Do not make vague jargon precise.** Describe an inherently vague
|
|
417
|
+
expression approximately ("roughly", "usually", "in most uses"). Do not
|
|
418
|
+
give it an equation or a formal definition that its users do not give it:
|
|
419
|
+
"Hang time is defined as $T = 2 v_0 \sin(\theta) / g$" is wrong, because no
|
|
420
|
+
practitioner defines it that way.
|
|
421
|
+
- **The aside is still prose.** [P3](#p3) and [P7](#p7) apply inside it; only
|
|
422
|
+
the jargon expression itself is exempt from [P2](#p2) and [P5](#p5). An
|
|
423
|
+
acronym-shaped expression ("SOTA") still needs an abbreviation entry
|
|
424
|
+
([N14](notation.md#n14)).
|
|
425
|
+
|
|
426
|
+
_Enforcement._ Review-only. Whether an expression has a standard definition
|
|
427
|
+
depends on the field's literature, which no gate can read.
|
|
428
|
+
|
|
429
|
+
_Exceptions._ An expression that the field's standard references now define
|
|
430
|
+
is terminology, not jargon, and [P4](#p4) applies: "bootstrap" in
|
|
431
|
+
statistics started as a figure of speech and is now defined in every
|
|
432
|
+
statistics textbook. A quotation keeps its own wording.
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
## P7
|
|
437
|
+
|
|
438
|
+
**Write one claim per sentence, and state every logical link.**
|
|
439
|
+
|
|
440
|
+
Write the main text in short, explicit, declarative sentences. Each sentence
|
|
441
|
+
states one claim or one step, and a word states how it relates to the
|
|
442
|
+
sentence before it.
|
|
443
|
+
|
|
444
|
+
```md
|
|
445
|
+
<!-- Four claims in one sentence. How do they depend on each other? -->
|
|
446
|
+
|
|
447
|
+
Since the horizontal component, which is $v_0\cos(\theta)$, stays constant
|
|
448
|
+
because gravity is vertical, and the time of flight grows with
|
|
449
|
+
$\sin(\theta)$, the range, which is their product, peaks at $45^\circ$, where
|
|
450
|
+
the two balance.
|
|
451
|
+
|
|
452
|
+
<!-- One claim per sentence. A word states each link. -->
|
|
453
|
+
|
|
454
|
+
Gravity acts only vertically. So the horizontal velocity component
|
|
455
|
+
$v_0\cos(\theta)$ is constant during the flight. The time of flight is
|
|
456
|
+
proportional to $\sin(\theta)$. The range is the product of the horizontal
|
|
457
|
+
component and the time of flight, so the range is proportional to
|
|
458
|
+
$\sin(\theta)\cos(\theta)$. This product is largest at $\theta = 45^\circ$.
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
_Rationale._ A sentence with one claim can be checked on its own. A sentence
|
|
462
|
+
with four nested claims must be parsed before it can be checked, and the
|
|
463
|
+
reader must keep every open clause in memory until the main verb arrives. An
|
|
464
|
+
unstated link makes the reader guess the relation, and a wrong guess changes
|
|
465
|
+
the argument: a consequence read as a cause is a different argument. A reader
|
|
466
|
+
who rereads a page to find one step depends on short, explicit sentences to
|
|
467
|
+
find it.
|
|
468
|
+
|
|
469
|
+
_How to apply._
|
|
470
|
+
|
|
471
|
+
- **One claim or one step per sentence.** Split a sentence that states two
|
|
472
|
+
independent claims. Put three or more parallel items — conditions, cases,
|
|
473
|
+
assumptions — in a list.
|
|
474
|
+
- **Name the relation.** Link a sentence to the one before it with a word
|
|
475
|
+
that states the relation: "because", "so", "therefore", "if … then", "but",
|
|
476
|
+
"for example". Two sentences placed side by side do not show whether the
|
|
477
|
+
second is a cause, a consequence, an example, or a contrast.
|
|
478
|
+
- **Put a condition before the claim it limits.** "If air resistance is
|
|
479
|
+
ignored, the range is largest at $45^\circ$" — not the claim first and the
|
|
480
|
+
condition at the end, or in a later sentence.
|
|
481
|
+
- **Give "this", "that", and "it" a noun** when more than one antecedent is
|
|
482
|
+
possible: "this result", "this assumption", "this product".
|
|
483
|
+
- **Name the actor when it matters.** Use the active voice when the passive
|
|
484
|
+
voice hides who or what causes the change: "gravity decreases the vertical
|
|
485
|
+
component", not "the vertical component is decreased".
|
|
486
|
+
- **Do not stack more than three nouns.** Write "the sensitivity of the range
|
|
487
|
+
to the launch angle", not "the launch angle range sensitivity".
|
|
488
|
+
- **Use sentence length as a signal.** ASD-STE100 limits a descriptive
|
|
489
|
+
sentence to 25 words. A main-text sentence of more than 25 words (count an
|
|
490
|
+
inline math span as one word) is a candidate to split. Keep it only when it
|
|
491
|
+
holds one claim that cannot be divided, such as a definition together with
|
|
492
|
+
its conditions.
|
|
493
|
+
|
|
494
|
+
_Enforcement._ Review-only. Sentence length can be measured, but it is only
|
|
495
|
+
a signal; whether a sentence holds one claim is a judgment.
|
|
496
|
+
|
|
497
|
+
_Exceptions._ A definition or a theorem whose conditions must stay together
|
|
498
|
+
is one claim, however long. A quotation keeps its own wording.
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
|
|
502
|
+
## P8
|
|
503
|
+
|
|
504
|
+
**Words that state a relation say exactly what the mathematics says.**
|
|
505
|
+
|
|
506
|
+
When the main text states a mathematical relation in words — to introduce an
|
|
507
|
+
equation, to interpret it, or in place of it — the words match the relation
|
|
508
|
+
exactly. Do not use a looser word when the exact one is available.
|
|
509
|
+
|
|
510
|
+
| Relation | Say | Do not say |
|
|
511
|
+
| --- | --- | --- |
|
|
512
|
+
| $a = b$ | "$a$ equals $b$", "$a$ is $b$" | — |
|
|
513
|
+
| $a \approx b$ | "$a$ is approximately $b$" | "$a$ is $b$", "$a$ equals $b$" |
|
|
514
|
+
| $a \propto b$ | "$a$ is proportional to $b$" | "$a$ grows with $b$", "$a$ scales with $b$" |
|
|
515
|
+
| $a \propto b^2$ | "$a$ is proportional to the square of $b$" | "$a$ grows with $b$", "$a$ doubles when $b$ doubles" |
|
|
516
|
+
| $a \le b$ | "$a$ is at most $b$", "$a$ is less than or equal to $b$" | "$a$ is less than $b$" |
|
|
517
|
+
| $f$ strictly increasing | "$f$ increases" | "$f$ does not decrease" (a weaker claim) |
|
|
518
|
+
| $f$ non-decreasing | "$f$ does not decrease" | "$f$ increases" (a stronger claim) |
|
|
519
|
+
|
|
520
|
+
```md
|
|
521
|
+
<!-- Vague, and the second claim is false. -->
|
|
522
|
+
|
|
523
|
+
The range grows with the launch speed, so doubling the launch speed doubles
|
|
524
|
+
the range.
|
|
525
|
+
|
|
526
|
+
<!-- Matches the range formula: the range is proportional to the square of the launch speed. -->
|
|
527
|
+
|
|
528
|
+
The range is proportional to the square of the launch speed, so doubling the
|
|
529
|
+
launch speed makes the range four times larger.
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
_Rationale._ An equation is exact, but most readers remember the sentence
|
|
533
|
+
around it. When the words are looser than the mathematics, the reader learns
|
|
534
|
+
the looser claim, and a loose claim invites a wrong inference: "grows with"
|
|
535
|
+
does not exclude linear growth, so a reader can conclude that doubling the
|
|
536
|
+
launch speed doubles the range. The words and the equation must give the same
|
|
537
|
+
answer to every question that a reader can ask of them.
|
|
538
|
+
|
|
539
|
+
_How to apply._
|
|
540
|
+
|
|
541
|
+
- Read each sentence that describes an equation next to the equation, and
|
|
542
|
+
check each relation word against its relation sign.
|
|
543
|
+
- Say "depends on" only when the form of the dependence is unknown or not
|
|
544
|
+
relevant. When the form is known, state it.
|
|
545
|
+
- State a direction of change together with its interval when the direction
|
|
546
|
+
is not the same everywhere: "the range increases with the launch angle for
|
|
547
|
+
$0^\circ < \theta < 45^\circ$", not "the range increases with the launch
|
|
548
|
+
angle".
|
|
549
|
+
|
|
550
|
+
_Enforcement._ Review-only.
|
|
551
|
+
|
|
552
|
+
_Exceptions._ A quotation keeps its own wording.
|
|
553
|
+
|
|
554
|
+
---
|
|
555
|
+
|
|
556
|
+
## P9
|
|
557
|
+
|
|
558
|
+
**Introduce a display equation with a sentence that says what it gives and
|
|
559
|
+
where it comes from.**
|
|
560
|
+
|
|
561
|
+
The sentence before a display equation names:
|
|
562
|
+
|
|
563
|
+
1. **What the equation gives**, with the canonical term of its result
|
|
564
|
+
([P2](#p2)): "the time of flight", "the range".
|
|
565
|
+
2. **Where it comes from**: the operation (substitute, solve, differentiate,
|
|
566
|
+
rearrange) and its inputs. Link another display equation with
|
|
567
|
+
`[[eq-…]]`; name an assumption.
|
|
568
|
+
3. **What kind of statement it is**: "is defined as" for a definition, "we
|
|
569
|
+
assume" for an assumption, "gives" or "is" for a result.
|
|
570
|
+
|
|
571
|
+
"We get:", "Thus:", "So:", and "This gives:" name none of these.
|
|
572
|
+
|
|
573
|
+
```md
|
|
574
|
+
<!-- The reader must find out what T is and where it came from. -->
|
|
575
|
+
|
|
576
|
+
Then we get:
|
|
577
|
+
|
|
578
|
+
$$
|
|
579
|
+
T = \frac{2 v_0 \sin(\theta)}{g}
|
|
580
|
+
$$
|
|
581
|
+
|
|
582
|
+
<!-- The sentence names the result, its source, and the operation. -->
|
|
583
|
+
|
|
584
|
+
Setting the vertical position in [[eq-vertical-position]] to zero and solving
|
|
585
|
+
for the time gives the time of flight:
|
|
586
|
+
|
|
587
|
+
$$
|
|
588
|
+
T = \frac{2 v_0 \sin(\theta)}{g}
|
|
589
|
+
\label{eq:time-of-flight}
|
|
590
|
+
$$
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
_Rationale._ A display equation interrupts the text, and a reader who scans
|
|
594
|
+
the page reads each display together with the sentence directly above it.
|
|
595
|
+
When that sentence names the result and its source, the equation can be
|
|
596
|
+
understood and checked where it stands. "We get:" makes the reader search
|
|
597
|
+
back for the operation and forward for the meaning of the left-hand side.
|
|
598
|
+
The kind of statement tells the reader what to do with the equation: a
|
|
599
|
+
definition is a choice to accept, and a result is a claim to check.
|
|
600
|
+
|
|
601
|
+
_How to apply._
|
|
602
|
+
|
|
603
|
+
- For a multi-step chain, the sentence introduces the whole chain, and the
|
|
604
|
+
justifications inside the chain name the fact each step uses
|
|
605
|
+
([N18](notation.md#n18)).
|
|
606
|
+
- Introduce a symbol that is new to the page with `[[key]]` before the
|
|
607
|
+
equation ([N4](notation.md#n4)), not in a "where …" clause after it.
|
|
608
|
+
- The colon that ends the introducing sentence stays in the prose, outside
|
|
609
|
+
the math ([N12](notation.md#n12)).
|
|
610
|
+
|
|
611
|
+
_Enforcement._ Review-only.
|
|
612
|
+
|
|
613
|
+
_Exceptions._ Displays that one sentence introduces together — for example,
|
|
614
|
+
the horizontal and the vertical component of the velocity — need one
|
|
615
|
+
introducing sentence, not one each.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Retired rules
|
|
2
|
+
|
|
3
|
+
A rule that is no longer in force, with the ID it keeps forever.
|
|
4
|
+
|
|
5
|
+
IDs are permanent, so a commit message, a review comment or a waiver that names
|
|
6
|
+
`N3` stays unambiguous years later. That is the *only* reason this page exists.
|
|
7
|
+
A retired rule is deliberately nowhere else: not in the
|
|
8
|
+
[rule index](README.md#rule-index), not in a rule page under `docs/authoring/`,
|
|
9
|
+
not in the course settings schema, and not in `build/rules-in-effect.md` — so
|
|
10
|
+
nobody drafting a lesson today reads a word of it, and an agent that lists the
|
|
11
|
+
rules in effect never sees it. Look here only when an old reference sends you.
|
|
12
|
+
|
|
13
|
+
Two rules that turn out to be one idea are merged, not deleted: the text moves
|
|
14
|
+
into the rule that keeps its ID, and the other lands in the table below with a
|
|
15
|
+
pointer to it. A course that still has a `rules.<ID>` block for one gets a
|
|
16
|
+
`config-retired-rule` warning naming the successor, and the block does nothing.
|
|
17
|
+
A migration guide ([migrating.md](migrating.md)) links here rather than
|
|
18
|
+
repeating the table.
|
|
19
|
+
|
|
20
|
+
The table is generated from `RETIRED` in `src/rules/catalog.ts` by
|
|
21
|
+
`scripts/agent/gen-rules.mjs`, and `--check` (in `scripts/agent/verify` and CI)
|
|
22
|
+
fails when it is stale.
|
|
23
|
+
|
|
24
|
+
<!-- RETIRED-RULES:BEGIN (generated by scripts/agent/gen-rules.mjs from src/rules/catalog.ts — do not edit inside) -->
|
|
25
|
+
|
|
26
|
+
| ID | The rule it was | Retired | Now part of | Why |
|
|
27
|
+
| --- | --- | --- | --- | --- |
|
|
28
|
+
| N1 | The normal distribution is `\mathcal{N}`. | 2026-09-26 | [N2](README.md#rule-index) | One spelling fixed to one meaning is one rule; `\mathcal{N}(\mu, \sigma^2)` is a line in N2’s `reserved` table, which a course can edit. |
|
|
29
|
+
| N3 | Multi-letter roman labels use `\mathrm{…}`. | 2026-09-26 | [N10](README.md#rule-index) | Writing a label as `\mathrm{…}` and explaining it are two halves of one rule, and N10 is where both are checked. |
|
|
30
|
+
| N6 | Probability is `\mathbb{P}` — double-struck `P`. | 2026-09-26 | [N2](README.md#rule-index) | `\mathbb{P}` is a line in N2’s `reserved` table. |
|
|
31
|
+
| N7 | The differential `d` is upright `\mathrm{d}`. | 2026-09-26 | [N2](README.md#rule-index) | `\mathrm{d}` is a line in N2’s `reserved` table. |
|
|
32
|
+
| N16 | In AI-generated mathematical content, alternate delimiter types for nested grouping when their shape is stylistic; preserve every conventional or semantic delimiter shape. | 2026-09-26 | [N17](README.md#rule-index) | Folded into N17 with the preference dropped: a delimiter’s shape carries its meaning, so depth is shown by size — which this engine handles automatically — not by alternating shapes. The rule also scoped itself to “AI-generated” content, which is not a property of the page. |
|
|
33
|
+
| C4 | On a release, move `## [Unreleased]` to `## [x.y.z] - YYYY-MM-DD` and bump `about.version` in the same commit. | 2026-09-26 | [C3](README.md#rule-index) | The release procedure and the invariant it keeps are one rule, and `knowledge-changelog-missing` (owned by C3) was already the check that fired on a half-finished release. |
|
|
34
|
+
|
|
35
|
+
<!-- RETIRED-RULES:END -->
|