Commit 20d9d61
committed
Point 5: a deck's GENRE declares content it is not finished without
`design-by-purpose.md` carries nine purpose recipes — Type · Palette · Density ·
Layout · Icons · Signature, one per genre. Measured by grep, NOTHING consumed
that file: a build could ignore it line by line and no gate would know, so every
per-purpose rule in it was advisory by construction. And the four genres with the
most rigid conventions were absent from the list entirely:
grant aims · feasibility · risk
committee progress · plan · ASK
journal_club attribution · critique
clinical_case presentation · investigations · management · outcome
Three of those four are among the most common decks an academic makes, and one of
them is the deck this session built by hand with no entry to follow.
THE MECHANISM IS BORROWED, NOT INVENTED. `formats.py` + `check_surface.py`
already do exactly this for SURFACES — a registry declares the sections a surface
cannot be finished without — and that precedent exists because of a measured
finding: "the billboard style that reads best is also the style that drops the two
things a passer-by cannot reconstruct". The finding generalises. The shape of a
genre is precisely what an author under time pressure drops: a committee deck
loses the ask and silently becomes a status update.
scripts/purposes.py (registry) + scripts/check_purpose.py (checker), on BOTH gate
paths (parity: 21 sections, 0 problems), block-with-waiver like check_surface.
EFFECTIVENESS — five purpose-built decks, both directions:
* complete committee deck -> clean
* same deck minus the ask -> reports exactly `ask`
* grant deck with aims only -> reports exactly feasibility + risk
* ask living only in SPEAKER NOTES -> clean (notes count; excluding them
would fire on every deck that moved its sentences where this skill says to)
* 中文 committee deck -> clean via the 中文 terms
GENERALISATION:
* multilingual term lists, with a test asserting EVERY section carries a
non-Latin synonym — a monolingual list reports every CJK deck as missing
every section
* both record schemas (shared interview.picks, Codex design.purpose, and the
audience brief when no purpose row was filled) — a floor read from one
runtime stops applying to the other, which this repo has been through
* a genre outside the registry binds to NOTHING and reports NOT CHECKED
* a language the registry does not carry is cleared by EXTENDING the terms
(design_plan.purpose_section_terms), which keeps the check alive, rather than
by waiving it away — tested with a Dutch deck
NEGATIVE BINDINGS, PINNED. The first draft bound on a bare "committee" and a bare
"proposal". That would have pulled an INVESTMENT committee, an ETHICS committee, a
steering committee and a business proposal into academic section lists — firing
three or four times at the wrong deck, which is exactly how people learn to ignore
a check. Worse, `recorded_purpose` also reads the AUDIENCE BRIEF, so a loose term
reaches far more decks than a purpose row alone. Seven negative cases are now
permanent assertions so a future loosening fails the suite.
Honest about its limit, in the docstring and in design-by-purpose.md: it asks
whether the deck NAMES the section, never whether it does it well — judging that
stays the critic's — and the OTHER purposes in that file remain prose, reported as
NOT CHECKED rather than implied to be covered.
58 assertions wired into CI · gate-batching 40/0 · gate-ergonomics 26/0 ·
surface-contract 40/0 · step1-artifacts 57/0 · critic-waiver 101/0 · timidity 21/0
· codex delivery gate and parity ok · all structural guards clean · SKILL.md
lossless 2692/2692.1 parent 5138698 commit 20d9d61
9 files changed
Lines changed: 785 additions & 1 deletion
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 | |
|---|---|---|---|
| |||
274 | 274 | | |
275 | 275 | | |
276 | 276 | | |
277 | | - | |
| 277 | + | |
278 | 278 | | |
279 | 279 | | |
280 | 280 | | |
| |||
516 | 516 | | |
517 | 517 | | |
518 | 518 | | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
519 | 534 | | |
520 | 535 | | |
521 | 536 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
313 | 313 | | |
314 | 314 | | |
315 | 315 | | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
316 | 384 | | |
317 | 385 | | |
318 | 386 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
182 | 200 | | |
183 | 201 | | |
184 | 202 | | |
| |||
0 commit comments