Skip to main content

Zu plugin-test gate: contract/interop gates + the adversarial red-team agent and out-of-band verdict observers

Project description

zu-redteam

The plugin-test gate and the adversarial red team — the machinery behind the capability-envelope philosophy and the red-team design (in the published docs). The red team is itself a Zu agent: Zu is the runtime on both sides of the gate.

This is test/CI infrastructure — it is not loaded by a deployed agent. Run it with zu test-plugin <pkg> (install via pip install 'zu-runtime[test]').

What it does

A plugin is not "done" when its unit tests pass — it is done when it cooperates with other plugins and withstands an adversary inside a real Zu runtime. The gate runs the graded gates in order and renders one verdict:

zu test-plugin zu-tools
  ✅ unit         PASS
  ✅ contract     PASS — port shape + declared capability envelope
  ✅ interop      PASS — stood up with >= 3 cross-category neighbours
  ✅ adversarial  PASS — frozen corpus + directed probes; envelope held
  ⊘ container    SKIP — Docker not present (production form of the same run)

The pieces

Module Role
verdict.py The out-of-band, deterministic judge: egress / exfil / provenance / resources / neighbour-health observers. The attacker never certifies.
corpus.py The frozen regression corpus — the §4 attacks as deterministic runs. Only ever grows.
attacker.py The attacker agent + tools + fleet. ScriptedAttacker (deterministic, CI); LiveAttacker (opt-in frontier discovery, ZU_REDTEAM_LIVE=1).
harness.py Stands a target up in a real in-process Zu run and captures it for the observers.
contract.py Port/contract conformance (shape, types, declared envelope).
gate.py Orchestrates the gates → GateReport; the entry point zu test-plugin calls.

Determinism

Discovery (a live frontier attacker) is non-deterministic by design; a discovered breach is frozen into corpus.py and replayed deterministically thereafter — so CI stays reproducible while the corpus only grows. The container gate is the production form of the same in-process run (same observers, same verdict).

Tests

uv run pytest packages/zu-redteam — offline, deterministic. The suite proves the gate both passes a safe plugin and fails an unsafe one (a tool that under-declares egress, or leaks a planted secret).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zu_redteam-0.5.0.tar.gz (56.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zu_redteam-0.5.0-py3-none-any.whl (48.8 kB view details)

Uploaded Python 3

File details

Details for the file zu_redteam-0.5.0.tar.gz.

File metadata

  • Download URL: zu_redteam-0.5.0.tar.gz
  • Upload date:
  • Size: 56.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for zu_redteam-0.5.0.tar.gz
Algorithm Hash digest
SHA256 08831e62f63e1dab0aab706150712cdd359fb2b1e0ae011b29b8f2ec7608c770
MD5 ab05e41994e3e1fd3a7426f1d72544f9
BLAKE2b-256 fe73fa1376bce10f4e954a6e6b86af306b302d1efcc3f16e6bb13a3a61a740c9

See more details on using hashes here.

File details

Details for the file zu_redteam-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: zu_redteam-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 48.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for zu_redteam-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a400d16279816f01703799dc55f3dd0f484a22efb983291eb5bffe39ba0e15ef
MD5 48edf7dbc705a677f9e39f5c060e0fb7
BLAKE2b-256 f1c436f74dea1466cdd7d2a74f002dab8c98862b580dd091f79c5c8858d79c61

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page