explico 0.14.0 → 0.15.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 +112 -1
- package/dist/compiler/cli-main.d.ts +61 -4
- package/dist/compiler/cli-main.js +77 -36
- package/dist/compiler/cli-reference.d.ts +50 -0
- package/dist/compiler/cli-reference.js +213 -0
- package/dist/compiler/cli-verbs.d.ts +45 -0
- package/dist/compiler/cli-verbs.js +224 -0
- package/dist/compiler/cli-verify.d.ts +51 -0
- package/dist/compiler/cli-verify.js +151 -0
- package/dist/compiler/cli.d.ts +19 -50
- package/dist/compiler/cli.js +45 -6
- package/dist/compiler/content-release.d.ts +49 -0
- package/dist/compiler/content-release.js +63 -0
- package/dist/compiler/content-schemas.d.ts +2 -2
- package/dist/compiler/manifest.js +29 -24
- package/dist/compiler/page-versions.d.ts +25 -1
- package/dist/compiler/page-versions.js +19 -0
- package/dist/compiler/validate-content.js +2 -2
- package/dist/reference/consistency.js +7 -1
- package/dist/reference/diagram-fit.d.ts +5 -1
- package/dist/reference/diagram-fit.js +5 -1
- package/dist/rules/catalog.js +16 -0
- package/dist/rules/in-effect.d.ts +1 -1
- package/dist/rules/in-effect.js +5 -4
- package/dist/rules/rules.schema.json +21 -0
- package/docs/authoring/README.md +2 -0
- package/docs/authoring/agents.md +18 -11
- package/docs/authoring/cli-reference.json +2172 -0
- package/docs/authoring/cli.md +887 -0
- package/docs/authoring/deck.md +24 -0
- package/docs/authoring/migrating.md +168 -18
- package/docs/authoring/versioning.md +2 -1
- package/docs/course-agent/AGENTS.md +10 -7
- package/docs/course-agent/agents/rules-reviewer.md +2 -2
- package/docs/course-agent/skills/draft-lesson/SKILL.md +7 -6
- package/docs/course-agent/skills/migrate-course/SKILL.md +5 -4
- package/docs/course-agent/skills/release-content/SKILL.md +5 -3
- package/docs/diagram-scaling.md +2 -2
- package/package.json +1 -1
- package/src/compiler/cli-main.ts +135 -47
- package/src/compiler/cli-reference.ts +285 -0
- package/src/compiler/cli-verbs.ts +270 -0
- package/src/compiler/cli-verify.ts +241 -0
- package/src/compiler/cli.ts +77 -17
- package/src/compiler/content-release.ts +91 -0
- package/src/compiler/manifest.ts +34 -24
- package/src/compiler/page-versions.ts +42 -0
- package/src/compiler/validate-content.ts +5 -2
- package/src/reference/consistency.ts +13 -2
- package/src/reference/diagram-fit.ts +18 -4
- package/src/rules/catalog.ts +17 -0
- package/src/rules/in-effect.ts +5 -4
package/docs/authoring/deck.md
CHANGED
|
@@ -586,3 +586,27 @@ that says what the student can now do.
|
|
|
586
586
|
_Enforcement._ Review-only: the engine writes both frames.
|
|
587
587
|
|
|
588
588
|
_Exceptions._ None.
|
|
589
|
+
|
|
590
|
+
## D11
|
|
591
|
+
|
|
592
|
+
**A deck is flagged when its chapter changed, by rule C5’s version, after the deck itself last did.**
|
|
593
|
+
|
|
594
|
+
Two files mean the chapter and the deck can drift apart with nothing to notice
|
|
595
|
+
it: `deck-stale` is an info diagnostic naming a lesson's own deck whose
|
|
596
|
+
chapter's version (rule C5) is newer than the deck's.
|
|
597
|
+
|
|
598
|
+
_Rationale._ The deck recalls the chapter's results and follows its argument; a
|
|
599
|
+
chapter that moved on is easy to miss from inside the deck file, which never
|
|
600
|
+
changed itself.
|
|
601
|
+
|
|
602
|
+
_How to apply._ When `deck-stale` names a deck, read what changed in the
|
|
603
|
+
chapter since, and judge whether the deck's frames, notes or recalls need the
|
|
604
|
+
same update. A deck the lecturer knows is still correct needs nothing further;
|
|
605
|
+
there is no build failure to clear.
|
|
606
|
+
|
|
607
|
+
_Enforcement._ Build-enforced (`page-versions.ts`, `pnpm validate:content`):
|
|
608
|
+
`deck-stale`, info. Needs rule C5 on — it is what gives a chapter and a deck
|
|
609
|
+
each their own version to compare.
|
|
610
|
+
|
|
611
|
+
_Exceptions._ A part's deck, which covers more than one chapter: it has no
|
|
612
|
+
single chapter to compare against, so it is never flagged.
|
|
@@ -30,9 +30,11 @@ The pattern every time:
|
|
|
30
30
|
4. Make every required course-side change named by those sections, including
|
|
31
31
|
changes under `content/`, Astro/source configuration, and course scripts; do
|
|
32
32
|
not stop after changing the dependency declaration.
|
|
33
|
-
5. `pnpm
|
|
34
|
-
`build/resolution/*` and fails only on a report git tracks that
|
|
35
|
-
|
|
33
|
+
5. `pnpm content verify` (0.15 and later), or by hand: `pnpm validate:content`
|
|
34
|
+
(it rewrites `build/resolution/*` and fails only on a report git tracks that
|
|
35
|
+
it had to rewrite: a course whose `build/` is git-ignored passes on the
|
|
36
|
+
first run, one that commits it commits the rewritten reports and runs it
|
|
37
|
+
again), then `pnpm content check --changed`, then `astro check`, then
|
|
36
38
|
`astro build`.
|
|
37
39
|
Each stage names what it doesn't like; fix and re-run.
|
|
38
40
|
|
|
@@ -41,6 +43,128 @@ required config block throws with the section of this file to read.
|
|
|
41
43
|
|
|
42
44
|
---
|
|
43
45
|
|
|
46
|
+
## 0.14.0 → 0.15.0
|
|
47
|
+
|
|
48
|
+
**No course changes required.** This release adds verbs (`content help
|
|
49
|
+
<verb>`, `content verify`, `content release`, `content fix --all`), rule D11's
|
|
50
|
+
`deck-stale` info, and better messages; the manifest schema stays v37. Two
|
|
51
|
+
steps are conditional: a course that ran `content move --write` on 0.14.0
|
|
52
|
+
(step 4), and a course whose tests read the CLI's text output (step 6).
|
|
53
|
+
|
|
54
|
+
### 1. Update the dependency
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pnpm add explico@<this version>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
pnpm 11 holds back a release younger than its `minimumReleaseAge`: either
|
|
61
|
+
`pnpm add` stops with `ERR_PNPM_NO_MATURE_MATCHING_VERSION`, or pnpm adds an
|
|
62
|
+
`explico@<version>` line to `minimumReleaseAgeExclude` in
|
|
63
|
+
`pnpm-workspace.yaml` itself. Add that line when it does not, and commit it.
|
|
64
|
+
|
|
65
|
+
### 2. Rule D11: a deck whose chapter moved on — nothing to do
|
|
66
|
+
|
|
67
|
+
Rule D11 adds an info diagnostic, `deck-stale`, naming a lesson's own deck
|
|
68
|
+
whose chapter changed, by rule C5's version, after the deck itself last did. A
|
|
69
|
+
part's deck covers several chapters and is never flagged. Nothing to
|
|
70
|
+
configure; a course without decks sees nothing.
|
|
71
|
+
|
|
72
|
+
### 3. Optional: let `pnpm content verify` be the course's verification
|
|
73
|
+
|
|
74
|
+
`pnpm content verify` runs `validate:content`, `content check --changed`,
|
|
75
|
+
`astro check`, the course's `test` script and `astro build` (with `--e2e`, its
|
|
76
|
+
`test:e2e` script too), and answers at once on a tree its last pass covered. It
|
|
77
|
+
reaches a course through the `scripts/content.ts` shim of 0.14.0 step 14 and
|
|
78
|
+
needs nothing else. Where the course's `AGENTS.md`, README or `package.json`
|
|
79
|
+
spells that sequence out by hand, it can say `pnpm content verify` instead; a
|
|
80
|
+
`verify` script becomes `"verify": "pnpm content verify"`. The pass record and
|
|
81
|
+
the logs go to `node_modules/.cache/explico/verify/`, never into the tree.
|
|
82
|
+
`astro check` is skipped, by name, when `@astrojs/check` is not installed.
|
|
83
|
+
|
|
84
|
+
### 4. Only if you ran `content move --write` on 0.14.0: the card's placeholder body
|
|
85
|
+
|
|
86
|
+
0.14.0's `content move` wrote every card it created a placeholder body,
|
|
87
|
+
"Promoted from `<lesson>`'s `notation.local`; the meaning above is what that
|
|
88
|
+
page said. Extend this body with what a glossary reader needs.", which the
|
|
89
|
+
glossary publishes. Find them:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
grep -rl "Extend this body with what a glossary reader needs" content/notation
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Replace each with what a reader needs beyond the meaning, or delete the body
|
|
96
|
+
(a card needs none). Check those cards' `domain:` too: 0.14.0 wrote `general`
|
|
97
|
+
for a key without a prefix. From this release `move` writes no body, takes the
|
|
98
|
+
domain the course's own cards use, and says what the author still owes.
|
|
99
|
+
|
|
100
|
+
### 5. Rule N4's lints: better advice, and the run log counts them — nothing to do
|
|
101
|
+
|
|
102
|
+
`definition-repeated` on a local entry whose glyph a shared card already owns
|
|
103
|
+
no longer says "move one copy to `content/notation/`": the entry is a reused
|
|
104
|
+
letter (rule N4), and promoting it would put two shared cards on one glyph. It
|
|
105
|
+
says how to acknowledge the copies instead (`definition-repeated:<key> — <why>`
|
|
106
|
+
in `lint-ignore.yml`), and `content move` cautions before writing such a card.
|
|
107
|
+
`validate:content`'s run log records each consistency warning at WARNING now,
|
|
108
|
+
so the `Run log: (… warning(s))` line it prints matches `pnpm content status`
|
|
109
|
+
where it used to say 1; nothing fails on a warning.
|
|
110
|
+
|
|
111
|
+
The `explain-redundant` infos an upgrade to 0.14.0 left (a thousand, in one
|
|
112
|
+
course) clear in one plan: `pnpm content fix --all` shows the diff and
|
|
113
|
+
`--write` applies it. It edits lessons, so it is a content change: a bullet in
|
|
114
|
+
`content/CHANGELOG.md` (rule C1) and the version bump rule C2 asks for.
|
|
115
|
+
|
|
116
|
+
### 6. Only if a course test reads the CLI's text output
|
|
117
|
+
|
|
118
|
+
The `--json` reports did not change; a test that reads them keeps passing, and
|
|
119
|
+
`pnpm content help <verb> --json` now prints each one's JSON Schema. The text
|
|
120
|
+
did change:
|
|
121
|
+
|
|
122
|
+
- `pnpm content help`: every usage line ends in `[--json]`; `release`,
|
|
123
|
+
`verify` and `help` are listed, and `fix` reads `<lesson>… | --all`.
|
|
124
|
+
- `content check`: a lesson's info is one line counted by code
|
|
125
|
+
(`+ 28 info (…)`); errors and warnings are listed as before.
|
|
126
|
+
- `content status`: at most six of the pages with unreleased changes, then
|
|
127
|
+
`… N more in --json`.
|
|
128
|
+
- `content context`: `diagnostics: N (M in <file>, K in the shared cards it
|
|
129
|
+
shows)` when some come from the cards.
|
|
130
|
+
- `content init-agent`: `new` or `differs from the engine's copy` where it
|
|
131
|
+
said `installed` or `refreshed from the engine`; after `--write` every edit
|
|
132
|
+
verb prints a `next:` line.
|
|
133
|
+
- `dia-too-wide` on `<CurriculumMap>`'s graph (rule V8) names the map's props.
|
|
134
|
+
|
|
135
|
+
Match the `--json` instead of the text.
|
|
136
|
+
|
|
137
|
+
### 7. Optional: refresh the agent procedures; content releases with `content release`
|
|
138
|
+
|
|
139
|
+
`pnpm content release [major|minor|patch]` cuts a content release (rule C3):
|
|
140
|
+
`## [Unreleased]` in `content/CHANGELOG.md` becomes a dated `## [x.y.z]` and
|
|
141
|
+
`about.version` becomes `x.y.z`, as a diff that `--write` applies. With no
|
|
142
|
+
argument the bump is what the section's headings imply under rule C2
|
|
143
|
+
(`### Breaking` or `### Removed` a MAJOR, `### Added` a MINOR, else a PATCH);
|
|
144
|
+
check it against the rule. Then `pnpm validate:content` and commit the three
|
|
145
|
+
files together. 0.14.0's `release-content` skill called
|
|
146
|
+
`pnpm release:content`, a script only the playground had; a course that wrote
|
|
147
|
+
its own can make it `"release:content": "pnpm content release --write"`.
|
|
148
|
+
|
|
149
|
+
`pnpm content init-agent --write` refreshes the installed skills:
|
|
150
|
+
`draft-lesson` and `migrate-course` now end on `pnpm content verify`, and
|
|
151
|
+
`release-content` runs `pnpm content release`. It never edits an existing
|
|
152
|
+
`AGENTS.md`; the shipped baseline
|
|
153
|
+
(`node_modules/explico/docs/course-agent/AGENTS.md`) shows the two lines to
|
|
154
|
+
copy: `pnpm content verify` before handing back (step 3), and
|
|
155
|
+
`pnpm content help <verb>`, which prints a verb's flags and the shape of its
|
|
156
|
+
`--json` ([`cli.md`](cli.md) has every verb).
|
|
157
|
+
|
|
158
|
+
### 8. Verify
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
pnpm content verify # add --e2e when the course has browser tests
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
The manifest schema did not move, so a course that commits
|
|
165
|
+
`build/resolution/` sees no rewritten report, and `content/versions.json`
|
|
166
|
+
changes only where step 4 or step 5 edited content.
|
|
167
|
+
|
|
44
168
|
## 0.13.1 → 0.14.0
|
|
45
169
|
|
|
46
170
|
**One course change is required, two are recommended, and a rare page needs
|
|
@@ -95,16 +219,24 @@ warning needs no course workaround.
|
|
|
95
219
|
|
|
96
220
|
### 1. Update the dependency
|
|
97
221
|
|
|
222
|
+
**A course on 0.13.0 or 0.13.1, first:** delete the downstream patch that
|
|
223
|
+
added `dist/components/float-name.js` to the installed package
|
|
224
|
+
(`patches/explico@0.13.1.patch`) and its `patchedDependencies` entry, in
|
|
225
|
+
`pnpm-workspace.yaml` or under `pnpm` in `package.json`, and any test that
|
|
226
|
+
pins the old path. This release compiles the module as
|
|
227
|
+
`dist/reference/float-name.js`, which the export serializers import, and
|
|
228
|
+
pnpm refuses the upgrade with `ERR_PNPM_UNUSED_PATCH` while an entry names a
|
|
229
|
+
patch for a version no longer installed. Then:
|
|
230
|
+
|
|
98
231
|
```bash
|
|
99
232
|
pnpm add explico@<this version>
|
|
100
233
|
```
|
|
101
234
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
entry, reinstall, and delete any test that pins the old path.
|
|
235
|
+
pnpm 11 holds back a release younger than its `minimumReleaseAge`: either
|
|
236
|
+
`pnpm add` stops with `ERR_PNPM_NO_MATURE_MATCHING_VERSION`, or pnpm adds an
|
|
237
|
+
`explico@<version>` line to `minimumReleaseAgeExclude` in
|
|
238
|
+
`pnpm-workspace.yaml` itself. Add that line when it does not, and commit it
|
|
239
|
+
with the upgrade.
|
|
108
240
|
|
|
109
241
|
**Coming from 0.12.0 or earlier:** apply "0.13.0 → 0.13.1" and "0.12.0 →
|
|
110
242
|
0.13.0" below first.
|
|
@@ -358,7 +490,10 @@ until the commit carries the file. The first record has no history to draw
|
|
|
358
490
|
on: while `## [Unreleased]` holds bullets, every page reads "with changes after
|
|
359
491
|
version `x.y.z`, not yet released", `x.y.z` being `about.version`, until the
|
|
360
492
|
next release stamps them all; with an empty `## [Unreleased]`, every page reads
|
|
361
|
-
"unchanged since version `x.y.z`". Earlier releases are not reconstructed.
|
|
493
|
+
"unchanged since version `x.y.z`". Earlier releases are not reconstructed. So
|
|
494
|
+
the order matters: write the first record before adding the upgrade's own
|
|
495
|
+
bullet under `## [Unreleased]` (rule C1), or every page reads "not yet
|
|
496
|
+
released" although none changed.
|
|
362
497
|
|
|
363
498
|
What counts as a page's content: its file, its `.checks.yml` and the
|
|
364
499
|
assessments it lists, the shared notation entries its text uses, the sources
|
|
@@ -580,7 +715,9 @@ now fails only on a report git tracks that it had to rewrite, so a course whose
|
|
|
580
715
|
`build/` is git-ignored passes on the first run; delete any "run it twice"
|
|
581
716
|
instruction from the course's own AGENTS.md. A course that commits
|
|
582
717
|
`build/resolution/` (credit-and-derivatives) keeps committing the rewritten
|
|
583
|
-
files with the change, as before
|
|
718
|
+
files with the change, as before — and this upgrade rewrites every one (the
|
|
719
|
+
schema version moved), so its first run fails with a `[resolution-report] …
|
|
720
|
+
out of date` line per report. Commit them; the next run passes.
|
|
584
721
|
|
|
585
722
|
Optional, in `scripts/content.ts`: print diagnostics through
|
|
586
723
|
`formatCliDiagnostic` (and `ownerTag` in the `check` case), both exported from
|
|
@@ -832,6 +969,10 @@ To write a part's deck:
|
|
|
832
969
|
declared exception and is no longer reported, so every
|
|
833
970
|
`glyph-unique-in-corpus:<glyph> — …` line in `lint-ignore.yml` that
|
|
834
971
|
acknowledged a page-local reuse can be deleted (they are harmless if kept).
|
|
972
|
+
It can also report a pair 0.13.1 did not: two shared cards on one glyph
|
|
973
|
+
where one card is named only in the other's `formula:` (data-science-I's
|
|
974
|
+
`\pi`, a prior density and the circle constant). Give one a different glyph,
|
|
975
|
+
or acknowledge the pair.
|
|
835
976
|
- `definition-repeated` (warning): one `notation.local` key declared in two
|
|
836
977
|
or more chapters (a deck beside its chapter never counts). Run
|
|
837
978
|
`pnpm content diagnostics warning --code definition-repeated`; each line
|
|
@@ -849,6 +990,14 @@ To write a part's deck:
|
|
|
849
990
|
is for a compound or a colliding glyph. Optional to clear.
|
|
850
991
|
- `gloss-wants-promoting` is gone; delete any `lint-ignore.yml` line for it.
|
|
851
992
|
|
|
993
|
+
Nothing reports a `lint-ignore.yml` line that no longer matches: search the
|
|
994
|
+
file for `glyph-unique-in-corpus` and `gloss-wants-promoting` yourself. A
|
|
995
|
+
course test that pins the list of consistency codes, or exercises
|
|
996
|
+
`gloss-wants-promoting`, needs the new list. And reread the course's own
|
|
997
|
+
notation guidance (its AGENTS.md, a style guide): advice such as "gloss
|
|
998
|
+
first", or a local entry as the default for a new symbol, now contradicts N4 —
|
|
999
|
+
one shared card per glyph, a local entry or a gloss only for a reused letter.
|
|
1000
|
+
|
|
852
1001
|
### 21. The glossary: nothing to do, unless your CSS or tests read it
|
|
853
1002
|
|
|
854
1003
|
The glossary page gains a section "On one page only" (`.glossary-page-meanings`)
|
|
@@ -942,11 +1091,9 @@ editUrl: false
|
|
|
942
1091
|
|
|
943
1092
|
import { LinkButton } from '@astrojs/starlight/components';
|
|
944
1093
|
|
|
945
|
-
<
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
</LinkButton>
|
|
949
|
-
</div>
|
|
1094
|
+
<LinkButton href={import.meta.env.BASE_URL} icon="left-arrow" iconPlacement="start">
|
|
1095
|
+
Return to the course
|
|
1096
|
+
</LinkButton>
|
|
950
1097
|
```
|
|
951
1098
|
|
|
952
1099
|
`import.meta.env.BASE_URL` points home from the originally requested URL and
|
|
@@ -990,8 +1137,11 @@ shadow, a step lighter than the page in the dark theme (`appearance.slides:
|
|
|
990
1137
|
darker than before, so it stays visible on the grey. The manifest schema is
|
|
991
1138
|
now v37, with `appearance`.
|
|
992
1139
|
|
|
993
|
-
No course change is required
|
|
994
|
-
|
|
1140
|
+
No course change is required, except in a browser test that compares a
|
|
1141
|
+
sidebar's background with the page's: they now differ by a step of grey (in
|
|
1142
|
+
the dark theme `rgb(32, 35, 42)` against `rgb(23, 24, 28)`), so the test reads
|
|
1143
|
+
the zone's own colour or the course sets `"zones": "none"`. To choose another
|
|
1144
|
+
look, add the block to `content/course.settings.json`:
|
|
995
1145
|
|
|
996
1146
|
```json
|
|
997
1147
|
"appearance": { "zones": "paper", "slides": "edge" }
|
|
@@ -97,7 +97,8 @@ one commit:
|
|
|
97
97
|
`content/versions.json`, where every page changed since the last release
|
|
98
98
|
takes `x.y.z` ([C5](#c5)); commit it in the same commit.
|
|
99
99
|
|
|
100
|
-
`pnpm release
|
|
100
|
+
`pnpm content release [major|minor|patch]` does steps 2 and 3 for you: it
|
|
101
|
+
shows the diff, and `--write` applies it.
|
|
101
102
|
|
|
102
103
|
_Enforcement._ Build-enforced (Tier-3, `knowledge-version.ts`
|
|
103
104
|
`resolveKnowledgeVersion`). `pnpm validate:content` emits
|
|
@@ -10,15 +10,18 @@ https://danieltuzes.github.io/explico/start/ ([`sources.json`](https://danieltuz
|
|
|
10
10
|
|
|
11
11
|
## The loop
|
|
12
12
|
|
|
13
|
-
- `pnpm content help` lists the CLI
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
- `pnpm content help` lists the CLI, and `pnpm content help <verb>` gives one
|
|
14
|
+
verb's flags and the shape of its `--json`. Start every task there, not with
|
|
15
|
+
a file hunt: `content context <lesson>` for a lesson's scope,
|
|
16
|
+
`content rules [--element …]` for the rules this course has on,
|
|
17
|
+
`content rule <ID>` for one of them whole, `content symbol <latex>` before
|
|
18
|
+
declaring any notation.
|
|
17
19
|
- While writing math: `content equation "<latex>" --lesson <id>`; after:
|
|
18
20
|
`content bindings <lesson>` and `content check <lesson>`.
|
|
19
|
-
- Before handing back: `pnpm
|
|
20
|
-
`content
|
|
21
|
-
`
|
|
21
|
+
- Before handing back: `pnpm content verify` — `validate:content`,
|
|
22
|
+
`content check --changed`, `astro check`, the course's tests, `astro build`;
|
|
23
|
+
`--e2e` adds the browser tests. A rerun on an unchanged tree answers at once. Commit
|
|
24
|
+
`content/versions.json` if `validate:content` changed it.
|
|
22
25
|
- Every content change adds a bullet under `## [Unreleased]` in
|
|
23
26
|
`content/CHANGELOG.md` (rule C1).
|
|
24
27
|
- Upgrading `explico`: `pnpm content migrate` prints exactly the sections to
|
|
@@ -22,8 +22,8 @@ with `pnpm -s content …`.
|
|
|
22
22
|
read the lesson file (`content/docs/<slug>.mdx`) with line numbers.
|
|
23
23
|
3. `pnpm -s content rules --enforcement guide` lists the rules this course has
|
|
24
24
|
on that no script checks, by element, each with a one-line summary. Apply
|
|
25
|
-
only those; a rule absent from the list is off. Open
|
|
26
|
-
<ID>` only when a summary does not settle a doubt.
|
|
25
|
+
only those; a rule absent from the list is off. Open
|
|
26
|
+
`pnpm -s content rule <ID>` only when a summary does not settle a doubt.
|
|
27
27
|
4. Read the lesson once, rule list beside it, and note each place a guide-only
|
|
28
28
|
rule is not followed: the rule id, the line, what you saw, the fix in one
|
|
29
29
|
clause. A JSX prop string (`caption="…"`) is not prose for the math rules.
|
|
@@ -13,9 +13,9 @@ whose `package.json` has the `content` script); `pnpm content help` lists them.
|
|
|
13
13
|
notation, references, assumptions and sources (a new lesson:
|
|
14
14
|
`pnpm content new lesson <id>` scaffolds it).
|
|
15
15
|
2. **Rules.** `pnpm content rules --element <prose,table,…>` lists only the
|
|
16
|
-
rules this course has on, with enforcement and codes;
|
|
17
|
-
<ID>` prints one whole, example included. A rule absent
|
|
18
|
-
off: neither apply it nor flag it.
|
|
16
|
+
rules this course has on, with enforcement and codes;
|
|
17
|
+
`pnpm content rule <ID>` prints one whole, example included. A rule absent
|
|
18
|
+
from the list is off: neither apply it nor flag it.
|
|
19
19
|
3. **Notation, one question per symbol: is it already defined?**
|
|
20
20
|
`pnpm content symbol <latex>`. A card with this meaning exists → reference
|
|
21
21
|
it: `[[key]]` once in prose, bare math after; `\explain{key}{…}` only for a
|
|
@@ -32,6 +32,7 @@ whose `package.json` has the `content` script); `pnpm content help` lists them.
|
|
|
32
32
|
for the rest; the counts come first, the lines on request.
|
|
33
33
|
6. **Record.** A bullet under `## [Unreleased]` in `content/CHANGELOG.md`
|
|
34
34
|
(rule C1); `pnpm validate:content` rewrites `content/versions.json`, which
|
|
35
|
-
is committed with the change (rule C5). Guide-only rules
|
|
36
|
-
guide`) have no check: before handing back, have the
|
|
37
|
-
agent review the lesson, or review the draft against them
|
|
35
|
+
is committed with the change (rule C5). Guide-only rules
|
|
36
|
+
(`enforcement guide`) have no check: before handing back, have the
|
|
37
|
+
`rules-reviewer` agent review the lesson, or review the draft against them
|
|
38
|
+
yourself, and run `pnpm content verify`.
|
|
@@ -23,9 +23,10 @@ work or says no course changes are required.
|
|
|
23
23
|
whose `scripts/content.ts` predates the shim), read the sections from
|
|
24
24
|
`node_modules/explico/docs/authoring/migrating.md`; the section that
|
|
25
25
|
introduced the shim says how to switch to it.
|
|
26
|
-
4. The checks each section ends with, then
|
|
27
|
-
its first run; commit `content/versions.json`
|
|
28
|
-
`
|
|
29
|
-
|
|
26
|
+
4. The checks each section ends with, then `pnpm content verify --e2e`:
|
|
27
|
+
`validate:content` (passes on its first run; commit `content/versions.json`
|
|
28
|
+
if it changed), `content check --changed`, `astro check`, the course's
|
|
29
|
+
tests, `astro build` and its browser tests. An engine older than the
|
|
30
|
+
`verify` verb: run those by hand.
|
|
30
31
|
5. Commit the dependency change, the migration edits and the generated files
|
|
31
32
|
together, naming the versions in the message.
|
|
@@ -15,9 +15,11 @@ each page's own version in `content/versions.json` (rule C5).
|
|
|
15
15
|
2. Pick the bump (rule C2): MAJOR when a lesson, competency or notation key
|
|
16
16
|
was removed or renamed or a stated outcome changed; MINOR for something
|
|
17
17
|
new; PATCH for a fix or clarification.
|
|
18
|
-
3. From the course package: `pnpm
|
|
19
|
-
|
|
20
|
-
`about.version` to match in
|
|
18
|
+
3. From the course package: `pnpm content release [major|minor|patch]` shows
|
|
19
|
+
the release as a diff: `[Unreleased]` moved to a dated `## [x.y.z]`
|
|
20
|
+
heading and `about.version` set to match, in one change (rule C3). With no
|
|
21
|
+
bump it takes the one the section's headings imply; check that it agrees
|
|
22
|
+
with step 2. Add `--write` to apply it.
|
|
21
23
|
4. `pnpm validate:content`: no `knowledge-*` warning; it rewrites
|
|
22
24
|
`content/versions.json` — commit that file with the release, never edit it
|
|
23
25
|
by hand.
|
package/docs/diagram-scaling.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Diagram scaling on touch screens
|
|
2
2
|
|
|
3
|
-
> **Status.**
|
|
3
|
+
> **Status.** Released in [0.14.0](../CHANGELOG.md).
|
|
4
4
|
> Checked in Chromium, in the end-to-end suite and by measurement. **Not
|
|
5
5
|
> checked in WebKit** (Safari, every iOS browser): no WebKit build is available
|
|
6
6
|
> to the agent sessions that wrote it. It uses the technique the print path
|
|
7
7
|
> already uses for WebKit, but a person should look at a diagram on an iPhone
|
|
8
|
-
>
|
|
8
|
+
> to confirm it ([Checking it](#checking-it)).
|
|
9
9
|
|
|
10
10
|
A diagram is drawn in px at build time. On a phone, the reader's own text-size
|
|
11
11
|
menu shrinks the whole drawing, boxes and text together, so that a wide diagram
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "explico",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Build-time engine for prerequisite-aware, notation-rigorous course content: one validated content model, a semantic notation/citation/equation system with a completeness gate, and a deterministic JSON manifest.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "UNLICENSED",
|