Commit 2b5dbbe
committed
Point 4: the clinical / evidence-synthesis form vocabulary
`design-by-topic.md` has listed "Medicine / biotech / clinical" as a first-class
domain for a long time, and EVERY row in that table is an aesthetic row — which
preset, which anti-pick. None of them changes the FORM vocabulary. Measured by
grep across references/ + scripts/ + agents/ before this commit: zero hits for
kaplan-meier, forest plot, CONSORT, PRISMA, Bland-Altman, ROC. The two
vocabularies that did exist are business-analytics (designed_charts: waterfall,
marimekko, pareto, radar) and undergraduate-physics (schematic-diagrams:
free-body, optics, circuits). So the skill could STYLE a clinical deck and could
not DRAW one, and the author's only option was a hand-rolled scatter.
Five forms, each owning a rule that is wrong BY DEFAULT when hand-rolled — which
matters because a wrong chart is a perfectly well-formed set of shapes and no
geometry lint in this repo can see one:
deckkit.consort_flow participant flow whose ARITHMETIC IS ENFORCED —
every stage's count minus its documented exclusions
must equal the next stage's, and it raises with the
sum spelled out. This is the only claim of its kind
in the skill: the lints measure geometry, the critic
reads pixels, and both pass a diagram that loses
fourteen patients between two boxes.
designed_charts.forest_plot ratios on a LOG axis (a linear axis draws a
ratio-symmetric CI lopsided) with plain-number
ticks, since matplotlib renders the null as "10^0"
and a reader should not decode an exponent to find
the line at ONE. Also the general form for "the same
comparison measured several times" — subgroups,
regression coefficients, per-segment A/B lifts.
designed_charts.km_curve a STEP from raw (times, events) — the estimator runs
here — plus censoring ticks and numbers at risk.
designed_charts.bland_altman bias +/- 1.96*SD of the DIFFERENCES. Two methods
can correlate almost perfectly and still disagree by
a fatal constant, so a correlation is the classic
wrong answer.
designed_charts.roc_curve square canvas, chance diagonal, AUC in the legend.
A confusion matrix is routed to the existing heat_matrix rather than given a new
component, and the reference states what it does NOT supply (phylogeny, reaction
scheme, theorem-proof) instead of implying coverage.
Estimators checked against hand-computable answers, not just "it runs": the KM
ladder reproduces the textbook 6-MP series exactly (0.6667 / 0.5556 / 0.4167 /
0.2778 / 0.1389 / 0), the AUC reproduces the published worked example (0.7500),
the Bland-Altman bias and SD match statistics.mean/stdev. Every render was then
LOOKED at, which is what caught two defects numbers could not: scientific-notation
ticks on the forest axis, and the KM risk-table labels colliding with the first
count ("Control20") because the tick at x=0 is centred on the spine.
Routed from SKILL.md (layer 1, which is what a non-Claude runtime reads), from
form-selection.md (where the form is chosen), data-viz.md (where the chart type
is chosen) and design-by-topic.md — where the LOOK-vs-FORM limit is now named
explicitly, because a matched preset reads as "the deck fits the domain" and does
not. component_audit can name a guarantee for all five, so a hand-rolled one is
reportable. 37 assertions, wired into CI.
ALSO: the fonts gate is now REPORT-ONLY on both paths. As a blocker it broke four
CI runs across three unrelated suites, and the reason is conceptual, not a bug —
it runs on the machine doing the GATING, which need not be the machine that did
the MEASURING, and nothing in a .pptx says which was which. A deck authored on a
Mac with Helvetica Neue was measured correctly; re-gating it on Linux would refuse
a deck with nothing wrong with it. The finding still prints on both paths and
rides in --json (it was a print() in lint_layout before, gating nothing); --strict
makes the CLI fatal for a caller that owns both the build and the gate.1 parent a3396fe commit 2b5dbbe
14 files changed
Lines changed: 927 additions & 18 deletions
File tree
- .github/workflows
- skills/slide-maker
- references
- scripts
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
679 | 679 | | |
680 | 680 | | |
681 | 681 | | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
682 | 693 | | |
683 | 694 | | |
684 | 695 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
275 | 275 | | |
276 | 276 | | |
277 | 277 | | |
278 | | - | |
| 278 | + | |
279 | 279 | | |
280 | 280 | | |
281 | 281 | | |
| |||
288 | 288 | | |
289 | 289 | | |
290 | 290 | | |
| 291 | + | |
291 | 292 | | |
292 | 293 | | |
293 | 294 | | |
| |||
1487 | 1488 | | |
1488 | 1489 | | |
1489 | 1490 | | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
1490 | 1507 | | |
1491 | 1508 | | |
1492 | 1509 | | |
| |||
Lines changed: 88 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
248 | 248 | | |
249 | 249 | | |
250 | 250 | | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
74 | 97 | | |
75 | 98 | | |
76 | 99 | | |
| |||
0 commit comments