Roadmap¶
This page tracks what Edictum has shipped, what is actively being built, and what is planned. Items move through three stages: [Shipped], [In Progress], and [Planned].
[Shipped] Core Pipeline (v0.5.x)¶
The foundation is production-usable today as an in-process library (v0.6.0).
- Enforcement pipeline with preconditions, postconditions, and session contracts
- 7 framework adapters: LangChain, OpenAI Agents SDK, CrewAI, Agno, Semantic Kernel, Claude Agent SDK, Nanobot
- YAML contract engine with JSON Schema validation and SHA-256 versioning
- CLI tools:
edictum validate,edictum check,edictum diff,edictum replay,edictum test - OpenTelemetry span emission with OTel Collector support
- Observe mode for shadow-testing contracts against live traffic before enforcing
- Postcondition findings interface with remediation callbacks (
on_postcondition_warn) - Automatic secret redaction in audit events via
RedactionPolicy - Built-in contract templates:
file-agent,research-agent,devops-agent
[Shipped] YAML Extensibility & Adapter Lifecycle (v0.9.0)¶
The contract engine and adapters are now extensible without forking.
- Custom operators — register domain-specific condition operators (e.g.,
valid_iban,pii_free) viacustom_operatorsparameter - Custom selectors — register custom value selectors for YAML conditions via
custom_selectorsparameter metadata.*selector — contracts can reference bundle metadata fields in conditionstemplate_dirs— load templates from custom directories alongside built-in onesfrom_yaml_string()— load contracts from string/bytes input for dynamic scenarioson_deny/on_allowcallbacks — lifecycle hooks on every decision for logging, alerting, or approval gatessuccess_checkparameter — custom tool success detection for postcondition evaluationset_principal()/principal_resolver— mutable principal for mid-session role escalation (analyst -> operator)CompositeSink— fan-out audit events to multiple sinks simultaneously- CLI
--json— machine-readable output oncheck,validate, anddifffor CI/CD integration - CLI
--environment— pass environment variables toedictum testcases - OTel TLS support —
insecureparameter onconfigure_otel()for development collectors
[Planned] PII Detection¶
Tool outputs often contain personally identifiable information that should not propagate back to the LLM or appear in logs. Basic PII finding classification already exists in findings.py (classify_finding returns pii_detected for contracts matching PII-related terms), but the full pluggable detection system is not yet implemented.
- What exists today:
classify_finding()in findings.py classifies postcondition failures aspii_detectedbased on contract ID and message heuristics. Postcondition contracts can match PII patterns via YAMLmatches:operator and useeffect: redactto strip them. - What's planned:
PIIDetectorprotocol in core -- a pluggable detection interface decoupled from postcondition contractsRegexPIIDetectorin core -- built-in regex patterns (SSN, email, phone, etc.) for immediate use- ML-based detectors (Presidio) will be available as optional dependencies:
PresidioPIIDetector(ML/NER via Presidio),CompositePIIDetector(multiple detectors with configurable thresholds) - YAML
pii_detectionshorthand for declaring PII checks directly in contract bundles
[Shipped] Bundle Composition & Dual-Mode Evaluation (v0.8.0)¶
Teams can now compose multiple YAML bundles and shadow-test contract changes against live traffic.
from_yaml(*paths)-- pass multiple YAML files; bundles are composed left-to-right with deterministic merge semanticscompose_bundles()-- low-level composition primitive with replace-by-ID for contracts, deep merge for tools/metadata, later-wins for defaults/limits/observabilityobserve_alongside: true-- dual-mode evaluation where a second bundle's contracts run as shadows, producing audit events without affecting real decisionsCompositionReport-- reports overridden and shadow contracts; available viareturn_report=Trueonfrom_yaml()- CLI support --
edictum validateandedictum diffsupport multi-file composition with override/shadow reports
[Planned] Production Observability¶
Stdout and File (.jsonl) sinks ship today in core for development and local audit. Production deployments need audit data flowing to existing infrastructure.
- Network audit sinks -- Webhook, Splunk HEC, Datadog as core sink implementations or via server-managed ingestion for compliance-grade audit trails
- Finding notifications -- notifications on abnormal patterns (denial spikes, PII detections, session exhaustion)
- Deployment recipes -- end-to-end guides for OTel to Grafana, Datadog, and Splunk
[Planned] Advanced Contracts¶
Single-call contracts cover most enforcement scenarios. Some problems require looking across multiple calls or letting non-engineers author contracts.
- Sequence-aware contracts -- detect suspicious patterns across multiple tool calls, not just single calls (e.g., read credentials then call external API)
- NL -> YAML authoring -- compliance officers describe a contract in English, system generates the YAML contract
[In Progress] edictum-server¶
Single-agent, in-process enforcement covers most use cases today. For organizations running fleets of agents, the next step is centralized contract management. The server will be published as an open-source project.
Shipped: Server SDK client (pip install edictum[server]):
EdictumServerClient-- async HTTP client with Bearer auth, agent ID headers, exponential backoff retry,envandbundle_namefor multi-bundle targetingServerApprovalBackend-- implementsApprovalBackendprotocol via server approval queue (POST to create, poll GET until resolved)ServerAuditSink-- implementsAuditSinkprotocol with batched event ingestion; includesbundle_nameandenvironmentin every event payloadServerBackend-- implementsStorageBackendprotocol for distributed session stateServerContractSource-- SSE client for receiving contract bundle updates with auto-reconnect; passesenv,bundle_name, andpolicy_versionas query params for server-side filtering and drift detectionEdictum.from_server()-- one-line wiring of all server SDK components from a URL and API keyEdictum.reload()-- atomic contract swap from new YAML bundle (fail-closed on errors)Edictum.close()-- graceful shutdown of SSE watcher, contract source, HTTP client, and audit sink
Coming soon: edictum-server:
- Central policy server -- agents pull contracts on startup, with versioning and hot-reload
- Governance dashboard -- visualize contract evaluations, denial rates, and contract drift across agents
- RBAC for contract management -- control who can create, modify, and deploy contracts
- SSO integration -- Okta, Azure AD
- JWT/OIDC principal verification -- server verifies the agent's claimed identity instead of trusting the caller
- Production approval workflows -- require human sign-off before specific tool calls execute (webhooks, Slack/Teams, review dashboard)
- Cross-agent session tracking -- correlate tool calls across multiple agents in a single workflow