Skip to content

0.5.0: a run is a graph with its critical path; Markdown reports; what each case used; run fixtures and components - #7

Merged
Sunrisepeak merged 2 commits into
mainfrom
release/0.5.0
Nov 8, 2026
Merged

Sunrisepeak merged 2 commits into
mainfrom
release/0.5.0

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

Summary

  • A run is a directed acyclic graph. Its nodes are a program's build, each process that runs a program's cases, and each run fixture's serving and end; its edges are what made one wait for another (build, worker, exclusive resource, machine, fixture). The critical path is the graph's binding chain ending at the node that ended last, each step the predecessor that ended last before the node began. mtest analyze path returns it with the wait between its members, no longer only the slowest program.
  • Markdown reports. mtest report --format md, mtest run --md <file> and mtest ci annotate write a summary, failures, the slowest cases, what each case used, the graph (mermaid flowchart, the critical path marked) and the schedule (mermaid gantt, a section per worker). Sections, scope (local / overall), grouping and the runs aggregated are chosen by option or by [report]; mtest ci report --group and mtest ci timeline aggregate a CI run's jobs.
  • What each case used. [monitor] level / MTEST_MONITOR: off, basic (default: CPU time and peak memory per case), detailed (I/O, load), trace (samples at MTEST_MONITOR_SAMPLE). The library reports a usage event per case; mtest measure measures a level-0 program from outside.
  • Scheduling. [run] split = "auto" schedules a program's cases across processes by their recorded times; memory = "auto" admits processes by their recorded peak.
  • Run fixtures, pools and components. A run_fixture is served once for every case that uses it (MTEST_SERVE, MTEST_FIXTURE_<NAME>, [fixtures.<name>] command); resource_pool admits N holders; a Component registers a reusable part with the framework and is listed with the program.
  • Protocol: P2 variables, P5 usage/component events, P6.6, P7.3, P10–P12 (the store). Version 0.5.0 everywhere; depends on mcpplibs.os 0.4.1.

Tests

  • engine/tests/engine.cpp: the graph and its critical path, the Markdown report and its sections, split, memory admission, a run fixture served once, a level-0 program measured from outside.
  • lib/tests/machine.cpp: usage reporting, components, the fixture endpoint.
  • Local: mcpp test passes for every member of the workspace.

Co-authored-by: speak-agent [email protected]

Sunrisepeak and others added 2 commits November 9, 2026 06:53
…t each case used; run fixtures and components

- The engine models a run as a directed acyclic graph (builds, processes, run
  fixtures; build, worker, resource, machine and fixture edges) and its critical
  path is the graph's longest binding chain (`mtest analyze path`).
- `mtest report --format md`, `mtest run --md` and `mtest ci annotate` write
  Markdown with mermaid (the graph with its critical path, the schedule as a
  gantt); sections, scope and grouping are chosen by option or `[report]`.
- Resource monitoring per case: off, basic (default), detailed, trace
  (`[monitor]`, `MTEST_MONITOR`); the `usage` event; `mtest measure` measures a
  program that does not speak the protocol.
- `[run] split` schedules a program's cases across processes; `memory` admits
  processes by their recorded peak.
- Run fixtures served once for their users (`run_fixture`, `MTEST_SERVE`,
  `MTEST_FIXTURE_<NAME>`), resource pools and reusable components.
- Depends on mcpplibs.os 0.4.1.

Co-authored-by: speak-agent <[email protected]>
…skip where the system reports no use

Co-authored-by: speak-agent <[email protected]>
@Sunrisepeak
Sunrisepeak merged commit 064fb7f into main Nov 8, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant