Metadata-Version: 2.4
Name: esthien_argus_sdk
Version: 1.0.0
Summary: Argus SDK: safety-supervised inference for physical systems - profile compilation, regression evaluation, and evidence packages
License-Expression: Apache-2.0
Project-URL: Homepage, https://esthien.com
Project-URL: Documentation, https://esthien.com/docs/argus-sdk
Project-URL: Repository, https://github.com/Esthien-Labs/argus-sdk
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: 3.15
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: THIRD_PARTY_NOTICES.md
Requires-Dist: PyNaCl<1.7.0,>=1.6.2
Requires-Dist: numpy>=1.26
Requires-Dist: scipy>=1.12
Requires-Dist: scikit-learn>=1.4
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: cocotb>=1.9; extra == "dev"
Dynamic: license-file

# Argus SDK

Argus SDK is Esthien's developer toolkit for the Argus decision boundary. The 0.8
release line provides the enforcement-boundary protocol stack: typed proposals,
the policy language with load, validate, diff and compose, and the attestation
and evidence chain, with a Python API, the `argus` command-line interface, five
language bindings, and a ROS 2 safety node.

## Releases

| Version | Status | Where |
|---|---|---|
| 0.8 | Current release line | PyPI, package `esthien-argus-sdk` |
| 0.7.4 | Previous release | PyPI, package `esthien-argus-sdk` |

The command surface of the 0.8 line is `runtime-info`, `regression-eval`,
`evaluate`, `policy check`, `policy diff`, `evidence verify`, and `evidence
export`. Install the current patch release with
`pip install esthien-argus-sdk`.

The release process validates these host tuples:

| Operating system | Architectures |
|---|---|
| Windows | x64, arm64 |
| macOS | x64, arm64 |
| Linux | x64, arm64 |

Each tuple has a recorded installation, CLI, Python API, and evaluation result.
Host validation in continuous integration is a supported-host record, not a
hardware support claim. No physical board, sensor, or instrument is part of the
programme inventory, and a passing tuple does not establish measured hardware or
field performance.

Release files carry Sigstore bundles named `<artifact>.sigstore.json`, verified
with `scripts/verify_signature.py`. The Windows installer is distributed
unsigned; Authenticode signing is an open item and requires no change to the
Python package.

## Current evidence boundary

- The default evaluation path writes `digital_source_verification` evidence.
- Output source hashes provide integrity traceability. They are not release
  signatures or a safety certification.
- The SDK does not establish hardware timing, thermal, power, functional-safety
  certification, production silicon, or customer-system qualification.
- Measured-evidence classes require a separately controlled measurement record
  and are not asserted by any release.

## Distribution boundary

The product distribution path exposes a deliberately narrow command surface.
It does not claim source-code secrecy, package encryption, hardware binding,
security certification, or production key custody. Those controls require
separately approved technical and operational evidence. Release signing is
described under Releases.

## Local development

Requirements:

- Python 3.11 or later
- A supported Python environment with NumPy, SciPy, and scikit-learn

```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install ".[dev]"
argus --version
argus runtime-info
argus regression-eval --sample --out out\smoke
```

The default regression profile is packaged with the SDK, so the sample command
works without relying on a source-tree-relative configuration path.

## Python API

```python
from argus import ConfidenceCoupledSafetyEnvelope, ProfileCompiler

compiler = ProfileCompiler()
envelope = ConfidenceCoupledSafetyEnvelope()
```

The public Python imports are versioned with the package. Product packages do
not expose internal research, hardware-design, or roadmap material.

## CLI

```text
argus --version
argus runtime-info
argus regression-eval --sample --out <directory>
argus --help
```

`runtime-info` reports the detected host, the validation matrix, and the evidence
boundary of the installed release.

## Candidate-release build

The candidate builder creates a controlled wheel, dependency inventory, and a
machine-readable release manifest. It does not create a public source archive,
sign an artifact, or approve distribution. Native packages are built and validated
per host tuple.

```powershell
python -m pip install build==1.6.1
python scripts\build_release.py --out C:\temp\argus-sdk-release-candidate
```

Any distribution remains blocked until the required host tuples pass, the
dependency inventory receives security review, the artifact is signed with an
approved release key, and a release-approval record is complete.

## Repository layout

```text
src/argus/                 Python API and CLI
src/argus/resources/       Packaged reference profiles
tests/                     Unit, integration, conformance, and formal checks
config/                    Source configuration and research inputs
scripts/build_release.py   Controlled candidate artifact builder
packaging/windows/         Windows installer source and command wrapper
.github/workflows/         Host verification and candidate-build workflows
```

## The 0.8 surface

| Component | Description |
|---|---|
| Proposal protocol | Typed ProposedAction schema, canonical binary encoding, provenance chain |
| Policy language | Load, validate, evaluate, diff, and compose, with typed decisions and clauses |
| Authority capabilities | Scoped, expiring, single-use capability tokens checked at the boundary |
| Attestation protocol | Merkle-chained evidence records with signed batch roots and offline verification |
| Evidence export | The versioned exchange bundle an external evaluator verifies offline at L1, L2 and L3 |
| ROS 2 safety node | Subscribes to controller proposals, publishes bounded commands, exposes envelope state |

Each component ships with a recorded evidence class; the release that contains a
component is the release that carries its claim.

## License and contact

This repository is proprietary. Access does not grant a redistribution or
commercial-use license. Contact Esthien Labs for evaluation or licensing
discussion.
