Observe

Testing Health

Not how many tests exist, but whether a regression would be caught. A suite can grow forever while the share of behaviour it actually pins falls, and no count of tests can show that. Every metric here belongs to one of three questions; anything belonging to none is volume, and is deliberately absent.

Needs attention

MetricQuestionValueWhat to do
Enrolled RFCs with zero test-proven requirementsQ235 / 181Pick the largest and complete a pair, or accept it is a single-polarity claim.
Tests with no reachable failure callQ1134 / 29425 (floor 132)Add a real assertion, or annotate with `// test-asserts-nothing: <why>` when the oracle is genuinely implicit (a must-not-panic smoke test).
Logged known-failing testsQ32Fix or delete the oldest entry; a permanently logged failure is a deleted test with extra steps.

Sensitivity

If the code were wrong, would something go red?

Tests with no reachable failure call

134 / 29425 (floor 132) Needs attention

134 of 29425 (0.5%)

These execute code and pass unconditionally. Breaking the code under test would not turn them red.

If this degrades: Add a real assertion, or annotate with `// test-asserts-nothing: <why>` when the oracle is genuinely implicit (a must-not-panic smoke test).

filetest
internal/chaos/chaos_test.goTestChaosConcurrency
internal/chaos/watchdog/watchdog_test.goTestWatchdogRouteRegression
internal/component/bfd/api/registry_test.goTestSetGetService_ConcurrentNoRace
internal/component/bfd/metrics_test.goTestMetricsHookStateChangeCounters
internal/component/bfd/metrics_test.goTestRefreshSessionsGauge
internal/component/bgp/plugins/bmp/event_test.goTestBMPPeerUpSkippedOnCacheMiss
internal/component/bgp/plugins/bmp/event_test.goTestHandleSenderNoSenders
internal/component/bgp/plugins/bmp/route_action_test.goTestProcessRouteMonitoring_MonitorMode_StoresInBMPRIB
internal/component/bgp/plugins/bmp/route_action_test.goTestProcessRouteMonitoring_ShortUpdate_Skipped
internal/component/bgp/plugins/filter_irr/filter_irr_test.goTestRefreshSwapsAtomically

time.sleep() calls in .ci tests

0 (floor 52) Within threshold

A sleep is a guess about timing that hides the race it was added to mask. The ratchet allows the count to fall, never rise.

If this degrades: Replace a sleep with a payload-predicate wait (wait_until, dispatch_until), then lower the floor in the same change.

Intent coverage

Are the things that matter checked, or only the happy path?

Enrolled RFCs with zero test-proven requirements

35 / 181 Needs attention

35 of 181 (19.3%)

Enrolled and gate-green, but no requirement is proven by BOTH polarities. Some of these do carry positive-only tests; none carries a pair.

If this degrades: Pick the largest and complete a pair, or accept it is a single-polarity claim.

RFC MUST requirements proven by test, over the RFCs ze implements

1834 / 3047 Within threshold

1834 of 3047 (60.2%)

60.2% of the 3047 gated MUSTs the 146 RFCs ze implements carry are proven by a tagged test: both polarities, or one polarity whose annotation records that no input drives the other side. The gate holds a wider set -- 3309 gated MUSTs across 181 enrolled RFCs -- and of the 1796 of those not proven in both polarities: 827 not-applicable (recorded as not binding ze; the owner ruling of 2026-08-31 presumes most of these need re-homing, so they stay inside the denominator above rather than being subtracted from it), 498 known gap (unimplemented, genuinely untested), 374 single-polarity -- those DO have a passing tagged test, just one side of the pair, and the RFC gate fails if that test is missing -- 26 met by a layer under ze on state ze installs, which the annotation names with the producer that installs it: those are MET and are not proven by ze, so they count in the denominator above and never in the share, 2 conditional on an optional feature ze does not offer, each quoting the RFC sentence that makes it optional: the condition is false, so nothing is owed, and 62 with no test and no annotation at all, which is what `./le rfc check` is red about. Only the gap column and that last one are untested work.

If this degrades: Write a test for a {gap} requirement, or for one carrying no test and no annotation. A single-polarity requirement is already counted as proven, and not-applicable needs no test.

gatedrfc
38rfc7871
34rfc2132
23rfc4213
18rfc4761
17rfc3032
17rfc7166
16rfc4862
13rfc2003
13rfc9514
13draft-ietf-idr-linklocal-capability

In-repo test inventory

29459 test functions Within threshold

3987 Go test files, 83 fuzz targets, 133 benchmarks, 2012 .ci scenarios, 170 .et editor tests. Counts cover internal, cmd, pkg, test only: vendor/ and gokrazy/modcache/ are third-party module trees and are excluded.

If this degrades: This is volume, not health. It is here to state the counting boundary, because a count that silently includes vendored tests inflates by ~6x.

Test files that expect a specific error

1434 / 3987 Within threshold

1434 of 3987 (36.0%)

Counts files using an error-expectation token (wantErr, ErrorIs, assert.Error, ...), with comments stripped. Setup guards of the form `if err != nil { t.Fatal(err) }` are deliberately NOT counted: those assert the happy path. Blind spot: expecting *an* error is weaker than pinning the right one.

If this degrades: Take the lowest-ranked subsystem and add malformed-input or fault-injection cases.

areafilesnegativepercent
internal/chaos/report600.0
internal/chaos/web1000.0
internal/core/rib1300.0
internal/core/stats500.0
internal/le/hookruntime500.0
internal/plugins/completion500.0
internal/chaos/peer1119.1
internal/plugins/ddos3139.7
internal/component/doctor20210.0
internal/component/sysrib20210.0

Technique adoption by package age

2 age buckets Within threshold

A technique adopted only forward from its introduction shows here as a step: recent buckets carry it, older ones never do.

If this degrades: Back-fill the oldest bucket, or record the uncovered remainder as tracked backlog (ai/rules/testing.md, Back-Fill New Test Types).

Package first commitPackages with testsWith a fuzz targetWith an RFC-tagged testWith a .ci scenario
20251000
20266243210235

Integrity

When something goes red, does it stop the line?

Logged known-failing tests

2 Needs attention

Reds logged rather than fixed, one shard file per live failure (42 entries archived in plan/known-failures/RESOLVED.md are not counted). Structural gates may never be logged here, but a live entry is not necessarily flaky: some are deterministic product bugs awaiting a fix.

If this degrades: Fix or delete the oldest entry; a permanently logged failure is a deleted test with extra steps.

Test files no native test action can build

0 (floor 0) Within threshold

No registered Go test action supplies these build tags, so the tests exist but never run.

If this degrades: Add the tag to a native Go test action, or delete the file. Either way the false inventory shrinks.