Skip to main content

plan-auditor

plan-audit gate

Independent deterministic verification for AI coding-agent work.

plan-auditor answers one question:

Did the AI actually complete the user's requirements and approved plan, or did it only say that it did?

PASS is not based on the agent's narration. It requires explicit requirements, real behavioral checks, dependency/output proof, formal plan validation when enabled, an intact seal, fresh execution evidence, and an aggregate gate across every active plan.

Use it directly by skill name

In a skill-capable coding environment, call:

plan-auditor

or:

plan-auditor: implement this change and prove it is complete

The normal skill workflow handles the internal plan, automatic formalization, sealing, evidence, and final audit. The user does not need to hand-write STRIPS/PDDL or auditor metadata.

Automatic formalization

For non-trivial multi-step work, Plan Auditor can now compile the structured plan into a conservative STRIPS contract automatically:

plan-auditor-formalize compile .

The compiler does not ask an LLM to invent symbolic semantics. It derives only from explicit Plan Auditor structure:

  • must / should requirement IDs,
  • step covers bindings,
  • depends_on,
  • named outputs,
  • requires_outputs,
  • deterministic verification checks.

Generated facts are limited to:

formalization-source:<SHA256>
step-completed:<STEP-ID>
output-available:<STEP-ID>:...
requirement-satisfied:<REQ-ID>

A generated contract is checked twice:

  1. STRIPS reachabilityplan-auditor-formal verify proves the symbolic plan can reach all goals while respecting dependencies and dataflow.
  2. Independent deterministic recompilationplan-auditor-formalize verify rebuilds the expected contract from the current structured plan and requires exact equality.

This blocks a generated formal model from silently omitting a requirement, dropping an output precondition, weakening a goal, or becoming stale after the plan changes—even if someone recomputes the contract SHA.

Manual domain-specific STRIPS contracts remain supported and are never overwritten by the automatic compiler.

Completion model

Host-owned request + acceptance checks
        |
        v
Explicit requirements + covers
        |
        v
Dependency / output dataflow DAG
        |
        v
Deterministic auto-formalizer
        |
        +--> source SHA-256
        +--> requirement goals
        +--> output facts / preconditions
        +--> one action per step
        |
        v
Independent deterministic recompilation
        |
        v
Grounded STRIPS reachability
        |
        +--> PDDL / Fast Downward (optional)
        |
        v
Format-v4 sealed verification contract
        |
        v
Real subprocess/filesystem checks
        |
        v
Hash-chained fresh evidence
        |
        v
Aggregate supervisor gate
        |
        v
PASS / FAIL / UNKNOWN

What PASS requires

In Supervisor Mode, every active plan must satisfy the full contract, including:

  • valid plan schema,
  • explicit non-empty requirements,
  • complete must/should coverage,
  • real behavioral verification for every step,
  • valid dependency DAG,
  • concrete requires_outputs backing for explicit dependency edges,
  • successful formal reachability when a formal anchor is present,
  • canonical requirement-to-formal-goal binding,
  • exact deterministic recompilation for auto-generated formal contracts,
  • intact format-v4 seal,
  • unchanged sealed supervisor environment/policies,
  • fresh full-audit plan/workspace fingerprints,
  • valid active and archived evidence chains,
  • valid agent registry,
  • required tools present,
  • no blocking policy result.

A passing default plan cannot hide an unfinished named plan.

Example structured plan

{
  "task": "build and consume a verified artifact",
  "created": "2026-09-06T00:00:00Z",
  "requirements": [
    {"id": "REQ-001", "description": "produce the artifact", "priority": "must"},
    {"id": "REQ-002", "description": "consume the artifact", "priority": "must"}
  ],
  "steps": [
    {
      "id": 1,
      "title": "produce",
      "depends_on": [],
      "covers": ["REQ-001"],
      "verify": [{"type": "run", "argv": ["python", "tests/build.py"]}],
      "outputs": [
        {
          "name": "artifact",
          "verify": [{"type": "file_exists", "path": "result.json"}]
        }
      ]
    },
    {
      "id": 2,
      "title": "consume",
      "depends_on": [1],
      "requires_outputs": [{"step": 1, "name": "artifact"}],
      "covers": ["REQ-002"],
      "verify": [{"type": "run", "argv": ["python", "tests/use.py"]}]
    }
  ]
}

Then:

plan-auditor validate .
plan-auditor-formalize compile .
plan-auditor plan verify .
plan-auditor audit .

The auto-formalizer runs before sealing and refuses to mutate an already sealed plan.

Classical STRIPS / PDDL

The built-in grounded STRIPS-style planner is local and CPU-only.

  • no-delete contracts use deterministic forward reasoning,
  • delete-effect contracts use bounded state-space search,
  • state-limit exhaustion returns UNKNOWN/REVISE rather than PASS,
  • every Plan Auditor step must execute exactly once in the formal solution.

PDDL export:

plan-auditor-formal export-pddl . \
  --contract-sha <sha256> \
  --output ./pddl-proof

Optional Fast Downward cross-check can be embedded during automatic compilation:

plan-auditor-formalize compile . \
  --fast-downward auto \
  --require-fast-downward

For reviewed domain-specific models, manual contracts can still be wrapped with:

plan-auditor-formal make-check formal-contract.json

See docs/formal-planning.md.

Deterministic checks

Prefer structured argv:

{
  "type": "run",
  "argv": ["python", "-m", "pytest", "tests/", "-q"],
  "expect_exit": 0
}

Shell interpretation is disabled by default. "shell": true is an explicit trust-boundary opt-in. Verifier output is bounded.

Sealing and evidence

Seal the complete verification contract with:

plan-auditor plan verify .

The v4 seal binds requirements, coverage, tools, step identity, checks, dependencies, outputs, generated/manual formal-planning data, and supervisor environment/policy fingerprints.

Evidence is append-only JSONL with SHA-256 chain continuity across rotations. Optional external-key HMAC authenticates evidence, checkpoints, registry state, seals, and integrity metadata.

# set PLAN_AUDITOR_HMAC_KEY or PLAN_AUDITOR_HMAC_KEY_FILE first
plan-auditor integrity init .
plan-auditor audit .

The key file must resolve outside the workspace.

Multi-plan and multi-agent state

Default plan:

.plan-auditor/plan.json

Named plans:

.plan-auditor/plans/<name>.json

The aggregate gate includes every active plan.

Agent registry modes:

  • serial
  • parallel-warn
  • parallel-strict

Ownership paths are canonicalized to prevent alternate-path conflict bypasses.

Snapshot / rollback

Default snapshots capture product state while excluding .git, .plan-auditor, and cache metadata. Manifests include file type, mode, and hash. Full-scope rollback restores the snapshot and removes files introduced afterwards.

CLI

plan-auditor validate <dir> [--plan NAME]
plan-auditor plan verify <dir> [--plan NAME] [--reseal]
plan-auditor plan inspect <dir> [--plan NAME]
plan-auditor run <dir> [step ids ...] [--plan NAME]
plan-auditor audit <dir> [--plan NAME]
plan-auditor evidence verify <dir>
plan-auditor integrity init|status <dir>
plan-auditor doctor <dir>
plan-auditor task list <dir>
plan-auditor agents list|register|heartbeat|claim|release ...
plan-auditor supervisor start|stop|status ...

plan-auditor-formalize compile <dir> [--plan NAME]
plan-auditor-formalize verify <dir> --contract-sha <sha256>

plan-auditor-formal make-check <formal-contract.json>
plan-auditor-formal verify <dir> --contract-sha <sha256>
plan-auditor-formal export-pddl <dir> --contract-sha <sha256> --output <dir>

Cross-platform packaging

CI builds and installs real wheels in clean environments on:

  • Ubuntu,
  • Windows,
  • macOS.

Python compatibility is tested on 3.10, 3.11, 3.12, and 3.13.

Architecture

The project combines deterministic requirement alignment, workspace observation, rule/policy evaluation, explicit plan DAGs, BDI-inspired goal state, grounded STRIPS planning, Soar-like lifecycle control, subsumption-inspired authority, cryptographic sealing, evidence integrity, watchdog supervision, and multi-agent coordination.

See:

  • docs/architecture.md
  • docs/dependency-graph.md
  • docs/formal-planning.md
  • docs/threat-model.md
  • references/plan-format.md

Trust boundary

Plan Auditor verifies completion; it is not an OS sandbox.

Automatic formalization removes the need to trust an LLM-generated symbolic model for the structural layer, but it does not claim perfect arbitrary natural-language theorem formalization. The host-owned request and deterministic acceptance checks remain authoritative. Domain semantics that cannot be derived mechanically should be reviewed explicitly rather than guessed.

A malicious same-OS-user process that can read external integrity key material remains outside the local integrity guarantee; use a separate OS account, container, or VM when that attacker is in scope.

Version

Latest stable release: 2.4.0
Current source version: 2.4.0

License

MIT

Download files

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

Source Distribution

plan_auditor-2.4.0.tar.gz (156.1 kB view details)

Uploaded Source

Built Distribution

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

plan_auditor-2.4.0-py3-none-any.whl (123.4 kB view details)

Uploaded Python 3

File details

Details for the file plan_auditor-2.4.0.tar.gz.

File metadata

  • Download URL: plan_auditor-2.4.0.tar.gz
  • Upload date:
  • Size: 156.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for plan_auditor-2.4.0.tar.gz
Algorithm Hash digest
SHA256 b88f5caf3da1e8edd8dddbb3fd8a4df230bf9a13deaa5133dd44ee99ed538f19
MD5 bc3ac6809c2acc6b7ec6b78c14bac47e
BLAKE2b-256 332035ad26f34e411afeab7cd034113dee3de364f0d1f1e410868f376a3e4d4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for plan_auditor-2.4.0.tar.gz:

Publisher: release.yml on Furox-Art/plan-auditor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file plan_auditor-2.4.0-py3-none-any.whl.

File metadata

  • Download URL: plan_auditor-2.4.0-py3-none-any.whl
  • Upload date:
  • Size: 123.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for plan_auditor-2.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a6c8f05cf5e6f249716cce981c231f29bc63ca2eb52771203da31f9cfae32e3
MD5 7c1a3e77e5b95dfdbf328a768824f367
BLAKE2b-256 a877dbf072a88da35f142af148305206d360872024012d313835addb6bcae84c

See more details on using hashes here.

Provenance

The following attestation bundles were made for plan_auditor-2.4.0-py3-none-any.whl:

Publisher: release.yml on Furox-Art/plan-auditor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.4.0 This release

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.2

2 files

2.0.1

2 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