| 34 |
34 |
|
/// areas is the thing this seal exists to refuse. If you genuinely need to add
|
| 35 |
35 |
|
/// one, the honest move is to write the test, not to bump the constant.
|
| 36 |
36 |
|
///
|
| 37 |
|
- |
/// # 2 is the floor, and it is not a to-do
|
|
37 |
+ |
/// # 5 is the floor, and it is not a to-do
|
| 38 |
38 |
|
///
|
| 39 |
|
- |
/// The two files left are `routes/stripe/mod.rs` and `db/synckit/mod.rs`. Both
|
| 40 |
|
- |
/// are declaration-only: `mod` and `pub use`, plus a route table. Neither holds
|
| 41 |
|
- |
/// behaviour a test could observe that is not already observed by testing the
|
| 42 |
|
- |
/// thing it declares, and a test written to move this number would be theatre
|
| 43 |
|
- |
/// inside a seal whose only value is that it is dumb and honest.
|
|
39 |
+ |
/// Every file left is declaration-only: `mod` and `pub use`, a route table, or
|
|
40 |
+ |
/// serde wire types. None holds behaviour a test could observe that is not
|
|
41 |
+ |
/// already observed by testing the thing it declares, and a test written to
|
|
42 |
+ |
/// move this number would be theatre inside a seal whose only value is that it
|
|
43 |
+ |
/// is dumb and honest.
|
| 44 |
44 |
|
///
|
| 45 |
|
- |
/// Excluding them by rule was considered and declined. The rule is one sentence
|
| 46 |
|
- |
/// long ("how many files in these areas contain no test"), and a second concept
|
| 47 |
|
- |
/// bolted on to spare two files costs more than it saves; a floor of 2 that says
|
| 48 |
|
- |
/// why is more honest than a rule with a carve-out in it. So: do not drive this
|
| 49 |
|
- |
/// to 0, and do not treat 2 as work outstanding.
|
| 50 |
|
- |
const UNTESTED_HIGH_WATER: usize = 2;
|
|
45 |
+ |
/// - `routes/stripe/mod.rs` and `db/synckit/mod.rs`, the original two.
|
|
46 |
+ |
/// - `routes/synckit/mod.rs` (31 lines, doc comment and eleven `mod` lines),
|
|
47 |
+ |
/// `routes/synckit/routes.rs` (the router: one function, 94 `.route(` calls
|
|
48 |
+ |
/// and nothing else) and `routes/synckit/wire.rs` (six serde types shared by
|
|
49 |
+ |
/// `sync` and `groups`). These three are what the 2026-09-04 decomposition
|
|
50 |
+ |
/// left behind when `routes/synckit/mod.rs` was cut into eleven files; the
|
|
51 |
+ |
/// handlers that carried the behaviour went to `sync.rs`, `keys.rs`,
|
|
52 |
+ |
/// `billing.rs` and `blobs.rs`, which carry their tests with them.
|
|
53 |
+ |
///
|
|
54 |
+ |
/// So the rise from 2 to 5 is not new untested behaviour, which is the thing
|
|
55 |
+ |
/// this seal exists to refuse. It is one covered file becoming one covered set
|
|
56 |
+ |
/// plus three declarations. Raising the number for any other reason is the
|
|
57 |
+ |
/// dishonest move: write the test instead.
|
|
58 |
+ |
///
|
|
59 |
+ |
/// Excluding declaration-only files by rule was considered and declined twice.
|
|
60 |
+ |
/// The rule is one sentence long ("how many files in these areas contain no
|
|
61 |
+ |
/// test"), and a second concept bolted on to spare five files costs more than
|
|
62 |
+ |
/// it saves; a floor that says why is more honest than a rule with a carve-out
|
|
63 |
+ |
/// in it. So: do not drive this to 0, and do not treat 5 as work outstanding.
|
|
64 |
+ |
const UNTESTED_HIGH_WATER: usize = 5;
|
| 51 |
65 |
|
|
| 52 |
66 |
|
/// Anything that moves money or decides what someone is entitled to.
|
| 53 |
67 |
|
const MONEY: &[&str] = &[
|