Metadata-Version: 2.4
Name: bijux-rar
Version: 0.1.0
Summary: bijux-rar: deterministic, contract-driven Retrieval-Augmented Reasoning runtime.
Project-URL: Homepage, https://bijux.github.io/bijux-rar/
Project-URL: Repository, https://github.com/bijux/bijux-rar
Project-URL: Documentation, https://bijux.github.io/bijux-rar/
Project-URL: Issues, https://github.com/bijux/bijux-rar/issues
Project-URL: Changelog, https://github.com/bijux/bijux-rar/blob/master/CHANGELOG.md
Author-email: Bijan Mousavi <mousavi.bijan@gmail.com>
License: MIT
License-File: LICENSE
Keywords: bijux,determinism,rar,reasoning
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.11
Requires-Dist: fastapi<1.0,>=0.110
Requires-Dist: pydantic<3.0,>=2.9.2
Requires-Dist: typer>=0.12.5
Provides-Extra: api
Requires-Dist: fastapi<1.0,>=0.110; extra == 'api'
Requires-Dist: schemathesis<5.0,>=4.0; extra == 'api'
Requires-Dist: uvicorn<1.0,>=0.30.1; extra == 'api'
Provides-Extra: bench
Requires-Dist: pytest-benchmark<6.0,>=5.0.0; extra == 'bench'
Provides-Extra: dev
Requires-Dist: anyio<5.0,>=4.4.0; extra == 'dev'
Requires-Dist: bandit<2.0,>=1.7.10; extra == 'dev'
Requires-Dist: build<2.0,>=1.0.3; extra == 'dev'
Requires-Dist: codespell<3.0,>=2.3.0; extra == 'dev'
Requires-Dist: commitizen<5.0,>=4.0.0; extra == 'dev'
Requires-Dist: cyclonedx-bom>=4.6.0; extra == 'dev'
Requires-Dist: deptry<1.0,>=0.10.0; extra == 'dev'
Requires-Dist: hypothesis-jsonschema<1.0,>=0.23.0; extra == 'dev'
Requires-Dist: hypothesis<7.0,>=6.103.0; extra == 'dev'
Requires-Dist: interrogate<2.0,>=1.7.0; extra == 'dev'
Requires-Dist: mkdocs-gen-files; extra == 'dev'
Requires-Dist: mkdocs-git-revision-date-localized-plugin<2.0,>=1.2.0; extra == 'dev'
Requires-Dist: mkdocs-glightbox<1.0,>=0.3; extra == 'dev'
Requires-Dist: mkdocs-include-markdown-plugin; extra == 'dev'
Requires-Dist: mkdocs-literate-nav; extra == 'dev'
Requires-Dist: mkdocs-material<10.0,>=9.5.39; extra == 'dev'
Requires-Dist: mkdocs-material[imaging]<10.0,>=9.5.39; extra == 'dev'
Requires-Dist: mkdocs-minify-plugin<1.0,>=0.7; extra == 'dev'
Requires-Dist: mkdocs-redirects<2.0,>=1.2; extra == 'dev'
Requires-Dist: mkdocs<2.0,>=1.6.1; extra == 'dev'
Requires-Dist: mkdocstrings[python]<1.0,>=0.26.1; extra == 'dev'
Requires-Dist: mypy<2.0,>=1.11.2; extra == 'dev'
Requires-Dist: openapi-spec-validator<1.0,>=0.7.1; extra == 'dev'
Requires-Dist: pexpect<5.0,>=4.8.0; extra == 'dev'
Requires-Dist: pip-audit<3.0,>=2.7.3; extra == 'dev'
Requires-Dist: prance>=25.4.0.0; extra == 'dev'
Requires-Dist: pre-commit>=4.0; extra == 'dev'
Requires-Dist: pydocstyle<7.0,>=6.2.1; extra == 'dev'
Requires-Dist: pyright[nodejs]<2.0,>=1.1.320; extra == 'dev'
Requires-Dist: pytest-asyncio<2.0,>=1.0.0; extra == 'dev'
Requires-Dist: pytest-benchmark<5.0,>=4.0.0; extra == 'dev'
Requires-Dist: pytest-cov<7.0,>=6.2.1; extra == 'dev'
Requires-Dist: pytest-rerunfailures<14.0,>=13.0; extra == 'dev'
Requires-Dist: pytest-timeout<3.0,>=2.4.0; extra == 'dev'
Requires-Dist: pytest<9.0,>=8.4.1; extra == 'dev'
Requires-Dist: pytype>=2024.10.11; extra == 'dev'
Requires-Dist: radon>=6.0.0; extra == 'dev'
Requires-Dist: reuse<6.0.0,>=4.0.0; extra == 'dev'
Requires-Dist: ruff<1.0,>=0.6.8; extra == 'dev'
Requires-Dist: schemathesis<5.0,>=4.0; extra == 'dev'
Requires-Dist: towncrier<25.0,>=23.0; extra == 'dev'
Requires-Dist: twine<7.0,>=6.1.0; extra == 'dev'
Requires-Dist: types-colorama<1.0,>=0.0.14; extra == 'dev'
Requires-Dist: types-orjson<4.0,>=3.6.0; extra == 'dev'
Requires-Dist: types-pexpect<5.0,>=4.9.0; extra == 'dev'
Requires-Dist: types-psutil<7.0,>=6.0.0; extra == 'dev'
Requires-Dist: types-pyyaml<7.0,>=6.0.12; extra == 'dev'
Requires-Dist: typing-extensions<5.0,>=4.5.0; extra == 'dev'
Requires-Dist: uvicorn<1.0,>=0.30.1; extra == 'dev'
Requires-Dist: vulture<3.0,>=2.7; extra == 'dev'
Provides-Extra: llm
Description-Content-Type: text/markdown

# bijux-rar

[![PyPI](https://img.shields.io/pypi/v/bijux-rar.svg)](https://pypi.org/project/bijux-rar/)
[![Python](https://img.shields.io/pypi/pyversions/bijux-rar.svg)](https://pypi.org/project/bijux-rar/)
[![License](https://img.shields.io/github/license/bijux/bijux-rar.svg?logo=open-source-initiative&logoColor=white)](https://github.com/bijux/bijux-rar/blob/main/LICENSE)
[![Docs](https://img.shields.io/badge/docs-gh--pages-blue)](https://bijux.github.io/bijux-rar/)
[![CI](https://github.com/bijux/bijux-rar/actions/workflows/ci.yml/badge.svg)](https://github.com/bijux/bijux-rar/actions/workflows/ci.yml)

**bijux-rar** is a deterministic retrieval-augmented reasoning (RAR) engine.

It produces **byte-stable traces**, **versioned artifacts**, and **verifiable provenance**
for every run. Execution, verification, and replay are first-class constraints,
not optional features.

---

## Why this exists

Most RAG / RAR systems are:
- non-deterministic,
- impossible to replay,
- unverifiable after the fact,
- dependent on trust in the author or runtime.

bijux-rar enforces:
- deterministic execution,
- immutable artifacts,
- cryptographically stable traces,
- replay and verification by default.

If a run cannot be replayed and verified byte-for-byte, it is considered invalid.

---

## Installation

```bash
pip install bijux-rar
````

Python ≥ 3.10 is required.

---

## Minimal usage

### CLI

```bash
bijux-rar run \
  --spec examples/spec.json \
  --artifacts-dir artifacts/runs \
  --seed 0

RUN_DIR=$(cat artifacts/runs/latest.txt 2>/dev/null || ls artifacts/runs | head -n1)

bijux-rar verify \
  --trace artifacts/runs/$RUN_DIR/trace.jsonl \
  --plan artifacts/runs/$RUN_DIR/plan.json \
  --fail-on-verify

bijux-rar replay \
  --trace artifacts/runs/$RUN_DIR/trace.jsonl \
  --fail-on-diff
```

Verification or replay failures indicate invariant violations.

---

### HTTP API

```bash
uvicorn bijux_rar.httpapi:app --host 127.0.0.1 --port 8000
```

```bash
curl -X POST http://127.0.0.1:8000/v1/runs \
  -H "Content-Type: application/json" \
  -d @examples/spec.json
```

The API exposes the same deterministic contracts as the CLI.

---

## Project boundaries

bijux-rar is intentionally narrow in scope.

It is **not**:

* a chat framework,
* a prompt playground,
* a generic RAG toolkit,
* an experimentation sandbox.

It is a **core execution and verification engine**.

---

## Relationship to other bijux projects

* **bijux-cli** — shared CLI conventions and scaffolding
  [https://github.com/bijux/bijux-cli](https://github.com/bijux/bijux-cli)

* **bijux-rag** — retrieval layer and corpus tooling
  [https://github.com/bijux/bijux-rag](https://github.com/bijux/bijux-rag)

bijux-rar sits beneath both, enforcing execution and verification invariants.

---

## Documentation

Authoritative documentation is published at:

[https://bijux.github.io/bijux-rar/](https://bijux.github.io/bijux-rar/)

The documentation is part of the system contract.
Code and docs are tested for drift.

---

## Stability and compatibility

**Initial public release: v0.1.0**

* Core contracts are frozen.
* Breaking changes require explicit versioning and migration.
* Determinism and replay invariants will not be relaxed.

---

## License

MIT. See `LICENSE`.
