AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
A controller-gated REPL harness and evaluation catalogue for verified agentic execution
Developer toolsPython · HTMLGitHub @paragon-uxOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Controller-gated REPL harness and evaluation platform for verified, auditable agentic execution
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
PDLt Taskmaster & The System 2 Catalogue
Controller-gated REPL harness and evaluation platform for verified, auditable agentic execution.
PDLt is a controller-gated REPL harness where models interpret user intent into concise, human-readable pseudocode and halt for confirmation before synthesizing code. Content quoted or pasted into a task stays passive data (semantic bootstrap containment), and generated code executes strictly inside an isolated OS sandbox.Read the full README ↗A protocol harness for verified, auditable model execution: a Python library first, with an extensions SDK, an interactive REPL, a headless CLI and an MCP server on top.
PDLt sits between a request and a model.
host_verified, contract_checked or unverified.The harness is a referee, never a solver: it adds no hints, keyword gates or fabricated witnesses (guardrails).
| Use | Entry point | Read |
|---|---|---|
| Run tasks from Python (primary) | pdl_taskmaster.api: Session, TurnResult, create_worker, RunSettings | Python API |
| Add task types, verifiers or model providers | Extensions SDK: register_task_type, register_verifier, register_provider, and a conformance kit | Extensions SDK |
| Work interactively | REPL: pdlt | REPL quickstart |
| Automate (CI, scripts) | Headless: pdlt --non-interactive, with exit codes | Headless runs |
| Use PDLt from another agent | MCP server: python -m pdl_taskmaster.host.mcp_server | MCP server |
All of them go through the same library layer, and one conformance suite (tests/test_interface_conformance.py) checks that they agree on sessions, reviews, exit codes and provenance.
PDLt needs Python 3.10 to 3.14 and an OS-native sandbox, so setup differs by host. Follow the page for your machine: it gives every command, a check after each step, and troubleshooting. Agents doing the setup should follow it step by step.
| Host | Sandbox | Setup guide |
|---|---|---|
| Windows 10 or 11 | AppContainer | docs/hosts/windows.md |
| Linux, kernel 5.13 or later | Landlock | docs/hosts/linux.md |
| macOS | Seatbelt | docs/hosts/macos.md |
In short, in a virtual environment:
python -m pip install "pdl-taskmaster>=2.6.0" # from PyPI
python -m pip install -e ".[test]" # or, from a clone of this repository
Live runs need an OpenRouter key in OPENROUTER_API_KEY; the offline test suite and the sandbox check need none.
from pdl_taskmaster.api import Session, create_worker
worker = create_worker("api", model="nvidia/nemotron-3-super-120b-a12b:free")
with Session.open(worker, "pdlt-sessions/demo", no_review=True) as session:
result = session.send("Count the primes below 1000 and print the count.")
print(result.text)
print(result.stage, result.exit_status) # e.g. CLOSED_SUCCESS 0
if result.provenance: # present when a result was published
print(result.provenance["verification"]["level"])
Session.open defaults to the review route (no_review=False): send then stops at the prompt review, and confirm() moves on, or run(message, confirm=True) accepts each review for you. docs/api.md covers results, exit codes, providers, run settings, closed sessions and the sandbox.
Task types, verifiers and model providers are registered through versioned profiles (pdlt.task-type/1, pdlt.verifier/1, pdlt.provider/1). Registration validates a declaration and refuses it with every problem named; PDLt's own built-ins register the same way. check_task_type runs a declaration through real sessions offline before you rely on it. See docs/extensions.md.
bash (Linux, macOS):
export OPENROUTER_API_KEY="sk-or-v1-your-key"
pdlt --new-session # no review gates (the default)
pdlt --new-session --review # stop at the prompt and the plan for review
PowerShell (Windows):
$env:OPENROUTER_API_KEY = "sk-or-v1-your-key"
pdlt --new-session
Type a task at the > prompt, for example Count the primes below 1000 and print the count.
Command at the > prompt | Effect |
|---|---|
/confirm | Accept the prompt or plan under review |
/revise <feedback> | Ask for a revised prompt or plan |
/stop, /cancel | Cancel the task |
/no-review on|off, /fast on|off | Switch review mode |
/help, /quit | Every command; leave |
Every command, flag and mode: docs/repl.md.
Headless runs read tasks from a pipe or a file and exit with a code a script can test:
printf '%s\n' "Count the primes below 1000 and print the count." | pdlt --non-interactive --new-session
echo $?
| Exit | Meaning |
|---|---|
| 0 | Closed with a result the host established or contract-checked; a direct reply; a published boundary refusal |
| 1 | Cancelled, or failed closed |
| 2 | Stopped at a review gate |
| 3 | Waiting for input the task needs |
| 4 | Harness or provider error (never a task result) |
| 5 | Published, but not established by the host (CLOSED_UNVERIFIED) |
| 130 | Interrupted |
The PowerShell form and file input are in docs/repl.md.
The MCP server (python -m pdl_taskmaster.host.mcp_server, stdio) lets another agent run programs in PDLt's sandbox, have a deliverable checked, and read closed sessions' results with their provenance. Client configuration for each host is on the host pages; tools and resources are in docs/mcp/EXTERNAL_TOOLS.md.
| Path | What it is |
|---|---|
src/pdl_taskmaster/api/ | The library layer every interface uses |
src/pdl_taskmaster/extensions/ | Versioned extension profiles, registries and the conformance kit |
src/pdl_taskmaster/runtime/ | Session engine, workspace, provenance, run settings |
src/pdl_taskmaster/providers/ | Model workers (api_worker.py) and System 1 (sys1/) |
src/pdl_taskmaster/verification/ | Sandbox, confinement backends, output verifier |
src/pdl_taskmaster/host/ | REPL, headless CLI, MCP server |
contracts/ | Hash-pinned operation contracts and the PDL Standard (contracts/standards/) |
tests/ | The offline suite |
run_catalogue.py, graders.py, prompts/ | The evaluation plane: the 112-prompt catalogue and its graders |
docs/ | Documentation; docs/plans/LEDGER.md records every decision |
Reviewers: start with REVIEWER.md. Agents working on the code: AGENTS.md.
python run_catalogue.py --dry-run lists the 112 prompts (source checkout only). Runs are written outside the repository, to PDLt-Catalogue-Archive beside the checkout, or to $PDLT_CATALOGUE_RUNS if set (catalogue_runs.py). See docs/evaluation.md and docs/benchmarks.md.
MIT. See LICENSE and NOTICE.md.
The full documentation is published at paragon-ux.github.io/PDLt-Test, built with Zensical from docs/:
To build or preview it locally from a source checkout:
python -m pip install zensical==0.0.68
zensical build # writes site/
zensical serve # preview at http://localhost:8000