Metadata-Version: 2.4
Name: cyandoor
Version: 0.1.0
Summary: Typed, verifiable candidate-set manifests for AI agent decisions
Project-URL: Repository, https://github.com/cyandoor/cyandoor
Project-URL: Issues, https://github.com/cyandoor/cyandoor/issues
Author: CyanDoor
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: ai-agents,decision-evidence,decision-intelligence
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: pydantic<3,>=2
Requires-Dist: rfc8785<1,>=0.1
Description-Content-Type: text/markdown

<p align="center">
  <img src="docs/assets/cyandoor-wordmark.svg" alt="CyanDoor" width="360">
</p>

<p align="center"><strong>Decision intelligence for AI agents.</strong><br>Better decisions, learned from outcomes.</p>

<p align="center">
  <a href="https://github.com/cyandoor/cyandoor/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/cyandoor/cyandoor/actions/workflows/ci.yml/badge.svg"></a>
  <img alt="Python 3.12+" src="https://img.shields.io/badge/python-3.12%2B-101820">
  <a href="LICENSE"><img alt="Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-087F89"></a>
</p>

CyanDoor is building an outcome-trained decision layer for AI agents: connect decision-time evidence and eligible candidate actions with downstream outcomes, then use trustworthy history to guide the next choice.

## Current release

Version 0.1.0 is an early, deliberately narrow Decision-Evidence foundation. It provides typed, deterministic candidate-set manifests: describe candidate identities, freeze the ordered set before outcomes are observed, calculate its canonical digest, and verify later that the sealed manifest has not changed.

It does **not** yet include runtime connectors, persistence, Decision Audit/headroom, policy learning, cloud sync, or automatic agent optimization. Coding agents are the initial evidence environment, not the long-term product boundary.

## Install

Requires Python 3.12 or newer.

```bash
pip install cyandoor
```

## Real example

```python
from datetime import UTC, datetime

from cyandoor import (
    CandidateSetMember,
    DraftCandidateSetManifest,
    seal_candidate_set,
    verify_candidate_set,
)

now = datetime.now(UTC)
draft = DraftCandidateSetManifest(
    candidate_set_id="verification-strategies",
    candidate_set_version="1",
    decision_space_id="execution_strategy",
    members=(
        CandidateSetMember(
            order_index=0,
            candidate_id="run-tests-first@1",
            action_identity_digest="sha256:" + "1" * 64,
        ),
        CandidateSetMember(
            order_index=1,
            candidate_id="inspect-failure-first@1",
            action_identity_digest="sha256:" + "2" * 64,
        ),
    ),
    created_at=now,
)

sealed = seal_candidate_set(
    draft,
    eligibility_rule_id="default",
    eligibility_rule_version="1",
    evidence_eligibility_cutoff_at=now,
    sealed_at=now,
)

assert verify_candidate_set(sealed)
```

## Why Decision Evidence?

Traces reconstruct a run. CyanDoor focuses on the choice inside it: what was available and eligible, what was selected, what evidence existed at the cutoff, and whether that record remains verifiable after the outcome is known.

The long-term relationship is:

```text
decision-time evidence + eligible candidate actions + historical outcomes
-> better next decision
```

Product breadth belongs in neutral architecture. Public availability belongs only in tested capabilities.

## Design principles

- agent-agnostic contracts, with integrations claimed only after validation;
- explicit provenance and evidence-strength states;
- immutable, strictly validated models;
- deterministic canonical serialization and digests;
- no causal or improvement claim without supporting evidence.

The public website and expanded documentation are being developed in [`cyandoor/cyandoor-web`](https://github.com/cyandoor/cyandoor-web). Until its canonical domain is live, this README remains the release-accurate technical starting point.

## Contributing and status

The repository is in early alpha. Use [GitHub Issues](https://github.com/cyandoor/cyandoor/issues) for focused bug reports and technical discussion.

## License

CyanDoor is licensed under the [Apache License 2.0](LICENSE).

> Evidence is the beginning. Better decisions are the outcome.
