Skip to main content

overseer 1.1.0 copy "overseer: ^1.1.0" to clipboard
overseer: ^1.1.0 copied to clipboard

Human-in-the-loop testing for generated media and AI output, with YAML matrices, interactive checklists, resumable reviews, and Markdown or JSON reports.

overseer #

A Dart human-in-the-loop (HitL) testing framework for manually verifying backend artifacts - videos, audio clips, images, and AI-generated output.

Features #

  • Matrix Engine - define parameter permutations in a YAML file; expand them automatically.
  • Execution Wrapper - pass each parameter set to your custom generation logic.
  • Interactive Prompter - auto-opens the artifact, walks you through a checklist, supports hot-retry (r) and save-and-quit (q).
  • Reporter - compiles your answers into a Markdown or versioned JSON test report.
  • Resume / Lock File - quit at any point and pick up exactly where you left off.

Quick Start #

import 'package:overseer/overseer.dart';

void main() async {
  final runner = OverseerRunner(
    matrixPath: 'tests/my_test.matrix.yaml',
    generator: (testCase) async {
      // Your generation logic here
      final outputPath = await myGenerateVideo(testCase.params);
      return ArtifactResult(path: outputPath);
    },
  );

  await runner.run();
}

Try the Example #

From the package root:

dart pub get
dart run example/overseer_example.dart

This self-contained demo writes text artifacts for four parameter combinations and walks you through reviewing them. No API keys or external services are needed. Open each displayed artifact path manually; use r to regenerate or q to save and quit. Run the same command again to resume at the first unfinished case.

Reports are saved under example/output/reports/. See the example walkthrough for retry behavior, partial reports, resume details, and adapting the generator.

Matrix YAML #

name: "video_quality_check"
version: '1.0.0' # optional matrix revision tag
parameters:
  resolution: [720, 1080]
  bitrate: [low, high]
mode: permutations # or: list
checklist:
  - "Video plays without artefacts"
  - "Audio is in sync"
  - "No black frames at start"

mode: permutations produces the cartesian product of all parameter lists (4 cases above).
mode: list zips parameter lists row-by-row (all lists must be the same length).

Add an optional quoted version, such as '1.0.0', to track matrix revisions in prompts and reports. Update it when changing parameters or checklist items.

CLI Shortcuts #

Key Action
y Pass this checklist item
n Fail this checklist item
s Skip this checklist item
r Hot-retry - regenerate this artifact
q Save progress and quit

Report Output #

A Markdown report is written to reports/overseer_report_<timestamp>.md at the end of the run (or on quit).

JSON reports for CI #

Select JSON when creating the runner. run() returns the .json report path:

final runner = OverseerRunner(
  matrixPath: 'tests/my_test.matrix.yaml',
  reportFormat: ReportFormat.json,
  generator: generateArtifact,
  // Optional: commitSha: 'full Git commit SHA',
);
final reportPath = await runner.run();

New reports use schema version 3. Validate a decoded report:

final report = jsonDecode(await File(reportPath).readAsString());
validateReport(report); // Throws ReportException for an invalid structure.

Reports include every expected case, review outcomes, commit SHA, and matrix SHA-256. successful requires every checklist item in every case to pass. CI should also compare the commit SHA, matrix hash, and expected case count with the checkout being tested. Field descriptions are in the schema.

Resume requires matching commit and matrix provenance, so older lock files start a fresh review.

1
likes
150
points
143
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Human-in-the-loop testing for generated media and AI output, with YAML matrices, interactive checklists, resumable reviews, and Markdown or JSON reports.

Repository (GitHub)
View/report issues

Topics

#testing #human-in-the-loop #cli #ai

License

Apache-2.0 (license)

Dependencies

ansi_styles, characters, crypto, json_schema, path, termunicode, yaml

More

Packages that depend on overseer