Arxo Law (Python)
Open a pinned canon, ask a closed question, receive the evaluation document with proof.
from arxo import open
fristen = open("de.bgb.fristen@0.1.0")
r = fristen.truth("frist_ende", ["frist", "2026-03-20"], {
"legalTime": "2026-09-17",
"timezone": "Europe/Berlin",
"deadlinePolicy": "urn:de:corpus:clir:bgb-fristen#BGB_FRISTEN_TAG",
"answers": [
{"predicate": "frist_ereignis", "args": ["frist", "2026-03-06"]},
{"predicate": "frist_dauer_tage", "args": ["frist", "14 calendar_day"]},
],
})
r.evaluationStatus # "COMPUTED"
r.truthStatus # "TRUE_ONLY"
r.sources; r.proof; r.hashes; r.document
Bare values are wrapped by the declared parameter type of the canon:
"2026-03-06" is a Date, "14 calendar_day" a Quantity,
"730000 KZT" a Money, "Abschlagszahlung" the enum constant of the world,
"frist" a short entity id in the case namespace (urn:…:entity:frist),
"urn:x:y" an entity id as given. Exact types (Decimal, Money,
Quantity) take strings only; a number is a FactError. Arg objects
({"kind": …}) pass through. state defaults to "yes"; "unknown" leaves
no assertion. Wrong names raise FactError with path and nearest.
Canons
pip install arxo arxo-canon-bgb-fristen # de.bgb.fristen
pip install arxo-canon-ogpo-vts # kz.corpus.ogpovts
pip install arxo-canon-unidroit-picc # unidroit.picc
An installed canon is trusted by hash, not by name: the CLIR bytes are checked
against contentHash of its package-meta.json before use; a mismatch is an
IntegrityError.
Questions
truth, why_not, collect, deadline, calc, and positions are thin
wrappers over ask. There is no second evaluator.
fristen.why_not("frist_ende", ["frist", "2026-03-20"], case_input)
fristen.collect("frist_ende", ["frist", "?ende"], case_input) # free position
fristen.deadline({"date": "2026-03-06", "days": 14, "unit": "calendar_day"}, case_input)
fristen.positions(case_input).positions
Answer
evaluationStatus is the discriminant. truthStatus is a separate field.
Refusal is a value. document is always the engine's canonical bytes;
hashes carries program, semantic, result. via is "local".
Explain
fristen.explain(answer, node_id=None) hands the answer's own evaluation
document to the host's law_explain (https://mcp.arxo.io/mcp, or
mcpEndpoint in open options) and returns {"text", …structuredContent, "via": "mcp"}. A package opened with offline=True refuses with
TransportError.
Passport
pkg.passport() repeats the committed formalization measure of the package
(EXECUTABLE, ANCHORED, …) and in_model(predicate) tells whether a name
is in the CLIR.
Boundaries of this release
The wheel embeds law_wasm_core.wasm; Python 3.12+ and wasmtime are
required. Execution is local only: remote=True (execution on the host),
the registry source, the router and questions() are not in this release.
Everything else mirrors @arxo/law 0.2.0.
Metadata
Release files for arxo 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arxo-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / arxo-0.2.0-py3-none-any.whl
| Download URL | arxo-0.2.0-py3-none-any.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cf8689c5cfbe73033c039fddcc58c6cc07116a0b1ed8c9fd11e7e5bc6eea1be3
|
|
BLAKE2b-256 checksum How to use checksums |
52e5bba5c3c22b6358b9586dc5218801e5427edffb907c0bd5abea9d2b98630c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Security for arxo 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.