main
tag: launch-2026-06-01
tag: magicmirror-v0.1.1
tag: magicmirror-v0.3.0
tag: mnw-cli-v0.1.2
tag: mnw-cli-v0.1.3
tag: mnw-cli-v0.1.4
tag: pom-v0.4.1
tag: pom-v0.4.2
tag: pom-v0.4.3
tag: pom-v0.4.4
tag: pom-v0.4.5
tag: wam-v0.3.0
tag: wam-v0.3.1
Files
Commits
Tags
Notes
Issues
Stop the load report's status bucketing tripping the loose-status seal
b73a7dd7 added a seventh loose status site in the load report builder,
taking test_hygiene over LOOSE_STATUS_HIGH_WATER. It is not an assertion:
it buckets observed statuses into errors and rejections, so it counts what
a run saw rather than what a handler promised, and there is no code to pin.
Bind the status to a local, the shape scenarios.rs already uses for the
same reason, and record in the seal's doc where the line sits: read a
status to classify or branch and bind it with a why, assert one and pin
the code. The high water stays at 6.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
2 files changed,
+14 insertions,
-4 deletions
56
56
/// `tests/load/scenarios.rs` is left alone deliberately. Its `is_success()` calls
57
57
/// are a virtual user deciding whether to continue a cycle, not assertions, and
58
58
/// they do not match the pattern below anyway (the receiver is a local, not
59
-
/// `.status`). This file excludes itself for the obvious reason: the strings it
60
-
/// searches for are in its own source.
59
+
/// `.status`). `tests/load/metrics.rs` is the same case and takes the same shape:
60
+
/// its report builder buckets observed statuses into errors and rejections, which
61
+
/// counts what a run saw rather than asserting what a handler promised. That is
62
+
/// the line to hold when a new site appears in the load harness. Read a status to
63
+
/// classify or to branch, bind it to a local and say why; assert one, and pin the
64
+
/// code. This file excludes itself for the obvious reason: the strings it searches
65
+
/// for are in its own source.
61
66
const LOOSE_STATUS_HIGH_WATER: usize = 6;
62
67
63
68
/// `test_`-prefixed test functions across `src/` and `tests/`: 176 on 2026-08-03.
59
59
let mut rejected_by_label: HashMap<String, usize> = HashMap::new();
60
60
for m in metrics.iter() {
61
61
by_label.entry(m.label.clone()).or_default().push(m.latency);
62
-
if m.status.is_server_error() || m.status == StatusCode::TOO_MANY_REQUESTS {
62
+
// Classification, not an assertion: this counts whatever the run
63
+
// observed, so there is no contracted code to pin. Bound to a local
64
+
// for the same reason `scenarios.rs` is, so the loose-status seal in
65
+
// `test_hygiene.rs` reads only sites that really do assert.
66
+
let status = m.status;
67
+
if status.is_server_error() || status == StatusCode::TOO_MANY_REQUESTS {
63
68
*errors_by_label.entry(m.label.clone()).or_default() += 1;
64
-
} else if m.status.is_client_error() {
69
+
} else if status.is_client_error() {
65
70
*rejected_by_label.entry(m.label.clone()).or_default() += 1;
66
71
}
67
72
}