Skip to content

pdks

Rust pdks is the covenant judge. Homebrew, crates.io, npm, and PyPI distribute the executable. The npm package is named polydeukes; consumers run the pdks command. See installation.

Command Purpose
pdks init Project configuration
pdks explain Assembled registrations
pdks covenant check Input IR on stdin
pdks covenant check --diff Unified diff on stdin
pdks docs Embedded documentation
pdks --version Executable version

See the command references for arguments and exit codes.

IR input selects the session surface and assembles disciplines plus sessionDisciplines. Diff input selects the change-set surface and assembles disciplines plus changeSetDisciplines. The IR session field carries observed history; it does not select a surface. File tools and diffs supply different content boundaries. Read the judgment model.

pdks <name> [args...] finds pdks- on PATH, forwards arguments, and inherits stdin, stdout, and stderr. Names contain ASCII letters, digits, underscores, or hyphens and do not start with a hyphen. Built-in commands take precedence. Use pdks memory search ..., pdks claude-code init, or pdks codex init. A missing extension produces an installation diagnostic and an error.

Judgment compares declarations with supplied evidence. Protected file paths, protected-path mentions in shell commands, and transcript protection can block session calls. Even a read-only shell command can be blocked when it mentions a protected path. Shell writes without content evidence are skipped by content disciplines with no-observation. Check the finished change through a diff.

Command assembly reads configuration and declaration-named files, then supplies evidence to the judge. Telemetry is written to .polydeukes/roi.log. An assembly failure, a violation, and a skipped observation are different outcomes. Use troubleshooting to interpret them.

The repository schema directory contains configuration, declaration, input IR, and memory-search schemas. TypeScript, Rust, and Python SDKs provide process invocation and result handling. Start with the input contract.