Skip to main content

qa-orchestrator

Inject faults into a substrate, drive captures, and check that the referee — the program being graded — reached the verdict it should have. The harness knows nothing about any domain: tiers, verbs, referees and report shapes are registered by verticals, and the first vertical (bmc-sensor-audit over BMC firmware) is one of them, loaded through the same door as any other.

pip install -e '.[dev]'

qa-orchestrator list           # what this process can name

# The first vertical's scenarios live with the first vertical.
qa-orchestrator check src/qa_orchestrator/verticals/bmc_scenarios/
qa-orchestrator run   src/qa_orchestrator/verticals/bmc_scenarios/sensor-removed.yaml

PATH=examples/paper/bin:$PATH \
qa-orchestrator --plugin examples/paper/vertical.py run examples/paper/withdrawn.yaml

The last line grades a proposal's requirements with a checker that has never seen a BMC: positional arguments where the first vertical's tool takes flags, issues where it keeps findings, and a report of what it did not check, which the scenario asserts on.

Released — 0.3.4, tagged v0.3.4, Apache-2.0, on PyPI as qa-orchestrator.

0.3.4 admits the referee's 0.3 line in the bmc extra. It held bmc-sensor-audit below 0.3 for eighteen days after 0.3.0, so installing the extra resolved a 0.2 referee on a 0.1 engine while the rest of the family had moved on. Nothing here needed the ceiling -- the vertical imports only the referee's mock BMC -- and the suite passes on referees 0.2.7, 0.3.0 and 0.3.5. And the sdist ships the tools its own tests read, so its suite runs from the artifact.

0.3.3 reads a referee's report the way its profile says it is written. findings resolves a dotted path, which declines and checked already did -- a referee keeping its findings nested reported zero of them and the scenario was green. A profile may now answer a ReportSchema per mode, the way judge_argv and json_argv already vary by mode, so a tool naming its list differently in two modes can be described without renaming a published key. And a run with no machine-readable report says which of its three causes it had, rather than asserting one.

0.3.2 follows the referee's wording. bmc-sensor-audit 0.2.5 reworded the finding a removed sensor produces -- from the machine to the capture -- and sensor-removed.yaml still expected the old text, so the scenario shipped in 0.3.1 fails against every referee from 0.2.5 on. The bmc extra now floors that dependency at 0.2.5, because everything below it emits the wording the file no longer expects.

0.3.1 corrects a pointer. Two source files named a test file that does not exist as the guard for the domain-free claim -- the central claim here -- and 0.3.0 shipped that way, so a reader who followed it found nothing and could not tell whether the guard had been renamed, deleted or never written. Both now name tests/test_registries.py and its class. A check was added that refuses any test path this package names and cannot resolve, because the two were found by scanning for the shape rather than by reading the one that was reported, and the scan found one more than the report did.

0.3.0 is the domain-free rewrite. Tiers, verbs, referees and report shapes come from registries and the core names none of them; the BMC tool, its tiers and its scenarios are a vertical loaded through an entry point, like any other would be. A qa-scenario/1 file written for 0.2.x still reads and still runs.

Exit codes are the referee's own three: 0 every expectation held, 1 a verdict disagreed, 2 the run could not be completed. 2 never reads as clean.

DESIGN.md says what was locking the harness to one domain, where each lock went, the contract a vertical must meet, the scenario format, how to write a vertical, and what changed from 0.2.x for anyone with code written against it.

Apache-2.0.

Release files for qa-orchestrator 0.3.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qa-orchestrator 0.3.4
File Size Uploaded
qa_orchestrator-0.3.4.tar.gz 118.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qa-orchestrator 0.3.4
File Interpreter ABI Platform
qa_orchestrator-0.3.4-py3-none-any.whl Python 3 none any Details

Total release size: 180.5 kB

Release files / qa_orchestrator-0.3.4.tar.gz

Download URL qa_orchestrator-0.3.4.tar.gz
Size 118.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c2f22e629d7211167bc77d10f368c81d9cc4196a594c72c255cef18a1243e4eb
BLAKE2b-256 checksum
How to use checksums
3e51ca455a094831a41195d70d446e5eb39147983705d09e8fe1ec243e78bb91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release files / qa_orchestrator-0.3.4-py3-none-any.whl

Download URL qa_orchestrator-0.3.4-py3-none-any.whl
Size 62.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a9b048412d1f7c8e6741bfe50d0ab2606b81bc8a02d99f9b216615f0694517a1
BLAKE2b-256 checksum
How to use checksums
ec2c447f9a671c844e21cf5253637ed20772a6588961088ddbe55cd9d1d01b1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.3.4 This release

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page