Repository navigation
Commit 2bf79b3
bench: add flask, the first target that can falsify a ranking change (#86)
Measuring ties in #83 exposed that every target here scores its labels inside a
tied band. click's perfect 4/4 has a lower bound of 2/4; pluggy's 3/3 has a lower
bound of 0/3. A benchmark of seven targets had, in effect, no regression guard —
the two designated canaries could not falsify anything on their own.
flask 3.1.2 was picked by measuring candidate distributions first, not by taste.
Its ranking is graded rather than flat — 3 candidates at 1.00, 6 at 0.90, then
exactly ONE at the rank-10 cutoff — so its recall@10 has no tie bounds at all:
worst case equals best case. It is the only target of the eight whose number is
pure evidence.
flask 3.1.2 | 98 candidates | 6 labels | ranks 2, 3, 10, 38, 39, 98 | 3/6
Aggregate 18/34 -> 21/40, bounds 6..23 -> 9..26. All six new labels are tie-free,
so the tie-decided share falls from 17/34 to 17/40.
What it already says, recorded in benchmarks/README.md:
- MethodView ranks 98 of 98, dead last. Arguably Flask's most-used class-based
extension point, and every existing signal is blind to it.
- DefaultJSONProvider ranks 1st while JSONProvider — the class the docstring
explicitly says to subclass — ranks 10th. Role-suffix and base-role reward the
concrete implementation over the contract it implements.
- Dynamic imports take ranks 4-9 and push Flask and Blueprint below them: the
pygments failure again, on a package with no plugin registry at all.
Labels quote the docstrings shipped in the 3.1.2 wheel, per the rule about
preferring docs pinned to the measured version. Two exclusions are recorded with
their reasons: Flask itself (its shipped docstring never invites subclassing) and
Blueprint (you construct one and register the instance — calling an API).
Flask's largest extension surface, the before_request / errorhandler /
template_filter decorators, cannot be labelled at all: they are methods on the
app object and the parser only takes top-level defs as seams. That blind spot is
now written down in the labels file instead of being an unwritten limitation.
Labels only — no ranking code touched, as the gate requires.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>1 parent f2f2819 commit 2bf79b3
3 files changed
Lines changed: 98 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
506 | 506 | | |
507 | 507 | | |
508 | 508 | | |
| 509 | + | |
509 | 510 | | |
510 | 511 | | |
511 | | - | |
| 512 | + | |
512 | 513 | | |
513 | 514 | | |
514 | 515 | | |
| |||
517 | 518 | | |
518 | 519 | | |
519 | 520 | | |
520 | | - | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
521 | 524 | | |
522 | 525 | | |
523 | 526 | | |
| |||
549 | 552 | | |
550 | 553 | | |
551 | 554 | | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
552 | 613 | | |
553 | 614 | | |
554 | 615 | | |
| |||
659 | 720 | | |
660 | 721 | | |
661 | 722 | | |
662 | | - | |
| 723 | + | |
| 724 | + | |
663 | 725 | | |
664 | 726 | | |
665 | 727 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
188 | 188 | | |
189 | 189 | | |
190 | 190 | | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
191 | 222 | | |
192 | 223 | | |
193 | 224 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
0 commit comments