Commit: 35a4932
Version: 3.4dev-20260818_021212
MB660 starts the second half of the test-efficiency work that began with the MB650 profiler.
The goal is deliberately conservative: before attempting faster execution, Mediabot now knows what kind of tests it has.
No parallel execution is introduced yet.
The full Mediabot suite has grown to roughly 14–15 minutes.
That is acceptable as a global checkpoint, but too expensive to run after every small development round.
MB650 already gave us timing data. MB660 adds the missing structural layer: classification.
The test runner can now describe test files using the roadmap vocabulary:
PURE
FILESYSTEM
PROCESS
DB
NETWORK
These are capability classifications, not parallel-safety certifications.
That distinction is intentional.
On the reviewed test tree, MB660 reports:
725 discovered test files
Primary class
-------------
PURE 306
FILESYSTEM 27
PROCESS 115
DB 248
NETWORK 29
Capability tags may overlap:
PURE 306
FILESYSTEM 97
PROCESS 181
DB 257
NETWORK 29
A test can therefore touch more than one kind of resource even though it has one primary classification.
t/test_commands.pl now supports deterministic classification-oriented selection:
--class
--exclude-class
--class-summary
--list-selected
For example:
perl t/test_commands.pl --class-summary
prints the classification inventory without running the suite.
A caller can also select a subset such as:
perl t/test_commands.pl --class PURE
or exclude a capability:
perl t/test_commands.pl --exclude-class NETWORK
These are selection primitives only.
MB660 deliberately adds no:
--jobs
--parallel
automatic test reordering
implicit fast mode
silent test skipping
The normal default suite behaviour remains unchanged.
This is important: speed is not useful if it creates a false sense of coverage.
The classifier is based on source touchpoints and tries to avoid simplistic categorisation.
For example, merely reading a file or using File::Spec is not enough to call a test FILESYSTEM.
The filesystem classification is aimed at tests that actually create or mutate filesystem state, temporary paths, directories, renames, removals and similar operations.
Likewise, process, database and network indicators are treated as capabilities that can overlap.
MB660 was validated with a representative runner regression covering the existing crash guards, isolation contracts, MB650 profiling support and the new classifier itself.
Result:
PASSED : 235/235
RC=0
Runtime:
26s
The source guards also passed:
OK: roadmap capability vocabulary is present
OK: include/exclude/summary/list CLI paths are present
OK: classification explicitly refuses parallel-safety claims
OK: MB660 adds no --jobs/--parallel executor
OK: MB650 profiler contract remains intact
MB660_SOURCE_GUARD=OK
A full 14–15 minute suite was intentionally not run for this round.
The purpose of MB660 is precisely to build the infrastructure that will make full-suite runs a checkpoint rather than a reflex after every small change.
MB660 introduces:
no database schema change
no migration
no runtime configuration change
no service change
no systemd change
no production deployment change
Committed scope:
CHANGELOG.md
README.md
VERSION
t/test_commands.pl
t/lib/TestClassifier.pm
t/cases/842_mb660_test_classification.t
35a4932
🧪 Classify the Test Suite Before Making It Faster
Version:
3.4dev-20260818_021212
Mediabot’s test suite is not faster yet.
But for the first time, we have a structured map of what it is safe to reason about next.
You must be logged in to reply.