This release is a pre-release and may not be stable for production use.
Positorium
A database for facts that disagree.
Positorium preserves conflicting claims instead of forcing them into one current value. Every assertion can retain its source, certainty, appearance time, and assertion time, so corrections never erase the evidence that came before.
It is an experimental embedded evidence database with an immutable posit model, the Traqula query language, an append-only native store, Python bindings, a trusted-local HTTP service, and an in-browser WASM testbed.
The repository is preparing 0.1.4-beta.2; the latest tagged release is
0.1.4-beta.1.
Beta means the documented language, storage, transfer, and interface versions
have explicit compatibility rules; it does not mean an Internet-facing or
production-ready service.
Run the 60-second browser example · Get started · Browse all documentation
Python
The source tree contains an embedded Python package for CPython 3.9+ on Linux, macOS, and Windows. It needs no separate Positorium server. Until beta.2 is published to PyPI, install it from a source checkout with Rust available:
python -m pip install .
After beta.2 is published, the prerelease install will be:
python -m pip install --pre positorium
import positorium
with positorium.Database.memory() as database:
result = database.execute_one(
'add role name; add posit [{(+person, name)}, "Ada", @NOW]; '
'search [{(?person, name)}, ?name, *] return ?person, ?name;'
)
print(result[0]["person"].text, result[0]["name"].text)
Use Database.open("positorium.store") for an append-only persistent store.
Results retain each cell's kind and exact entered text. See the
Python guide for typed parameters, Terrain, Pandas,
exceptions, and lifecycle rules.
Why Positorium?
Most databases converge on one current value. Positorium preserves evidence:
- contradictory posits remain available instead of overwriting each other;
- expressed time precision is part of the stored fact;
- assertions record who ascertained a posit, with signed certainty and time;
- snapshots and
in effectqueries make resolution policy explicit; and - exact entered literals survive native storage, HTTP, SSE, and WASM results.
This is useful for compliance evidence, investigations, conflicting master data, and other domains where evidence accumulates and is revised. Positorium can serve as a focused evidence layer alongside existing operational systems; it does not need to replace them.
Five-minute source checkout
Install rustup, then build and start the trusted-local server from the repository root:
cargo build --release --locked
./target/release/positorium
In another terminal, resolve or create one identity:
curl --fail-with-body --silent --show-error \
http://127.0.0.1:8080/v1/query \
-H 'content-type: application/json' \
--data '{"traqula_version":1,"script":"add role name; search [{(?person, name), ...}, \"Ada\", *] return ?person or add posit [{(+person, name)}, \"Ada\", @NOW];","stream":false}'
The response should have "status":"ok" and one thing result cell. Stop the
server with Ctrl-C. The default creates positorium.store and reopens it on the
next start.
For release archives, checksum verification, Windows commands, persistence checks, backup, Query Studio setup, and troubleshooting, follow Getting started.
Beta boundaries
- The native server binds to
127.0.0.1by default and has no authentication. Never expose it to an untrusted network. - One process owns a store and executes scripts serially.
- The append-only store detects committed corruption but is not a tamper-proof audit log.
- Authentication, replication, distributed execution, and container packaging are outside the current beta.
- Independent contract versions are listed in Contracts.
Current capabilities
- Immutable Things, Roles, appearance sets, posits, and assertion envelopes
- Lossless literal tokens and precision-aware temporal relations
- Traqula joins, union, safe
not exists, snapshots, typed predicates,in effect, parameters, distinctness, ordering, and limits - Atomic durable mutation batches with deterministic replay and recovery
- Inspection, physical backup, logical export/import, and identity remapping
- Structured Rust, buffered HTTP, SSE, and WASM results
- Embedded Python 3.9+ bindings with structured lossless results
- Query Studio and authoritative Terrain structural reports
Documentation
| Start here | Purpose |
|---|---|
| Getting started | Install, run, query, restart, back up, and troubleshoot |
| Python | Install the wheel, embed a database, bind parameters, and consume results |
| The Blackthorn Ruby | Interactive detective story and full Query Studio/Terrain showcase |
| Traqula | Language and query reference |
| Cookbook | Worked modeling and maintenance recipes |
| Operations | Durability, recovery, limits, and deployment posture |
| Core model | Identity, literal, temporal, and snapshot semantics |
| Storage | Append-only format contract |
| Transfer | Backup, export, import, and identity remapping |
| Terrain | Structural report and visualization contract |
| Theory | Philosophical foundations |
| Roadmap | Remaining and post-beta work |
The documentation index also links compatibility decisions, benchmarks, and maintainer specifications. The original paper, Modeling Conflicting, Unreliable, and Varying Information, provides additional background.
Development checks
The repository pins the stable Rust toolchain and runs native checks on Linux, macOS, and Windows plus a browser WASM suite.
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features --no-fail-fast
cargo test --all-targets --no-default-features --no-fail-fast
node tests/terrain_client.test.js
See Extending Traqula before changing the language or synchronized editor grammar.
License
Dual-licensed under Apache 2.0 or MIT, at your option.
SPDX-License-Identifier: Apache-2.0 OR MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file positorium-0.1.4b2.tar.gz.
File metadata
- Download URL: positorium-0.1.4b2.tar.gz
- Upload date:
- Size: 676.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec9fa3671afd36e2602500b3b2637e4c9ce3898590405df27687e6a7639fd10a
|
|
| MD5 |
2d4eb363968494c18a2e28529c11b405
|
|
| BLAKE2b-256 |
27afb0c06d44d28722f9000a815f7bc23eedbf01a8805d20d2f68b99b206caf9
|
Provenance
The following attestation bundles were made for positorium-0.1.4b2.tar.gz:
Publisher:
python.yml on Roenbaeck/positorium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
positorium-0.1.4b2.tar.gz -
Subject digest:
ec9fa3671afd36e2602500b3b2637e4c9ce3898590405df27687e6a7639fd10a - Sigstore transparency entry: 2674486482
- Sigstore integration time:
-
Permalink:
Roenbaeck/positorium@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Branch / Tag:
refs/tags/v0.1.4-beta.2 - Owner: https://github.com/Roenbaeck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python.yml@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Trigger Event:
push
-
Statement type:
File details
Details for the file positorium-0.1.4b2-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: positorium-0.1.4b2-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 889.9 kB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fca1697c1abedf3dd3b8e636488524c3ff90566044551679ca4fcb8ecc10eb33
|
|
| MD5 |
1c55d19b814ed682947618eb48b5260d
|
|
| BLAKE2b-256 |
70e77ac0137ab524ff0e56ab75bc63689167f1be489a593a9c9c2d647ebd680f
|
Provenance
The following attestation bundles were made for positorium-0.1.4b2-cp39-abi3-win_amd64.whl:
Publisher:
python.yml on Roenbaeck/positorium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
positorium-0.1.4b2-cp39-abi3-win_amd64.whl -
Subject digest:
fca1697c1abedf3dd3b8e636488524c3ff90566044551679ca4fcb8ecc10eb33 - Sigstore transparency entry: 2674486513
- Sigstore integration time:
-
Permalink:
Roenbaeck/positorium@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Branch / Tag:
refs/tags/v0.1.4-beta.2 - Owner: https://github.com/Roenbaeck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python.yml@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Trigger Event:
push
-
Statement type:
File details
Details for the file positorium-0.1.4b2-cp39-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: positorium-0.1.4b2-cp39-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5df16f612ccb7d8a4f47025d631a36f2ff36ac2301a6cd5f89c277a806822b88
|
|
| MD5 |
60e1a515904baffde9eda7c36f6bc382
|
|
| BLAKE2b-256 |
6699ef30269e4842bc50d32df610d56fe18cf172a23dafa83e557a0c844d9aa1
|
Provenance
The following attestation bundles were made for positorium-0.1.4b2-cp39-abi3-musllinux_1_2_x86_64.whl:
Publisher:
python.yml on Roenbaeck/positorium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
positorium-0.1.4b2-cp39-abi3-musllinux_1_2_x86_64.whl -
Subject digest:
5df16f612ccb7d8a4f47025d631a36f2ff36ac2301a6cd5f89c277a806822b88 - Sigstore transparency entry: 2674486647
- Sigstore integration time:
-
Permalink:
Roenbaeck/positorium@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Branch / Tag:
refs/tags/v0.1.4-beta.2 - Owner: https://github.com/Roenbaeck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python.yml@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Trigger Event:
push
-
Statement type:
File details
Details for the file positorium-0.1.4b2-cp39-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: positorium-0.1.4b2-cp39-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 1.1 MB
- Tags: CPython 3.9+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc44504e7330af16c949e309befa25bb442e4524d56f0c24af7e919ea8237f5a
|
|
| MD5 |
3983843b8d5e35331546d6173be779e3
|
|
| BLAKE2b-256 |
3c56143df2742459c962d4dd5ecc3884b60022615efa2bb9d830568f0f665374
|
Provenance
The following attestation bundles were made for positorium-0.1.4b2-cp39-abi3-musllinux_1_2_aarch64.whl:
Publisher:
python.yml on Roenbaeck/positorium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
positorium-0.1.4b2-cp39-abi3-musllinux_1_2_aarch64.whl -
Subject digest:
fc44504e7330af16c949e309befa25bb442e4524d56f0c24af7e919ea8237f5a - Sigstore transparency entry: 2674486586
- Sigstore integration time:
-
Permalink:
Roenbaeck/positorium@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Branch / Tag:
refs/tags/v0.1.4-beta.2 - Owner: https://github.com/Roenbaeck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python.yml@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Trigger Event:
push
-
Statement type:
File details
Details for the file positorium-0.1.4b2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: positorium-0.1.4b2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 968.8 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fe3d25fea8b748b6d8fb5c6c03b901b976cd9a614c03e49a19cf36000023cae
|
|
| MD5 |
84053493aae7b4ef84c4089625520f31
|
|
| BLAKE2b-256 |
b989102b75f6da26d85ef67721a0291ca4f926e886903116b160096da4da29d4
|
Provenance
The following attestation bundles were made for positorium-0.1.4b2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
python.yml on Roenbaeck/positorium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
positorium-0.1.4b2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
7fe3d25fea8b748b6d8fb5c6c03b901b976cd9a614c03e49a19cf36000023cae - Sigstore transparency entry: 2674486551
- Sigstore integration time:
-
Permalink:
Roenbaeck/positorium@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Branch / Tag:
refs/tags/v0.1.4-beta.2 - Owner: https://github.com/Roenbaeck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python.yml@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Trigger Event:
push
-
Statement type:
File details
Details for the file positorium-0.1.4b2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: positorium-0.1.4b2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 900.0 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c37b40ad3effb807e8e6748da8974bf0ed35698eb70abb907ed6977fc8b6034
|
|
| MD5 |
c4c3600251e7378e1919f1fa2a1a05d8
|
|
| BLAKE2b-256 |
7e340f10ae470a5648684db06fc34671dbf8356f9dbf4f3b736ae2f276f89b51
|
Provenance
The following attestation bundles were made for positorium-0.1.4b2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
python.yml on Roenbaeck/positorium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
positorium-0.1.4b2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
1c37b40ad3effb807e8e6748da8974bf0ed35698eb70abb907ed6977fc8b6034 - Sigstore transparency entry: 2674486683
- Sigstore integration time:
-
Permalink:
Roenbaeck/positorium@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Branch / Tag:
refs/tags/v0.1.4-beta.2 - Owner: https://github.com/Roenbaeck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python.yml@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Trigger Event:
push
-
Statement type:
File details
Details for the file positorium-0.1.4b2-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: positorium-0.1.4b2-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 874.0 kB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5db2d4ea4a4e06314e4b1db33b0b4a588affb07cdb014fc99a2197b6f6a79e6e
|
|
| MD5 |
52c989c99c9114dfe9a774316b26933b
|
|
| BLAKE2b-256 |
7f395df891bf140249ca31e80f9b49a14472e2ac6bd9b2ff79760e05b7458d55
|
Provenance
The following attestation bundles were made for positorium-0.1.4b2-cp39-abi3-macosx_11_0_arm64.whl:
Publisher:
python.yml on Roenbaeck/positorium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
positorium-0.1.4b2-cp39-abi3-macosx_11_0_arm64.whl -
Subject digest:
5db2d4ea4a4e06314e4b1db33b0b4a588affb07cdb014fc99a2197b6f6a79e6e - Sigstore transparency entry: 2674486716
- Sigstore integration time:
-
Permalink:
Roenbaeck/positorium@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Branch / Tag:
refs/tags/v0.1.4-beta.2 - Owner: https://github.com/Roenbaeck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python.yml@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Trigger Event:
push
-
Statement type:
File details
Details for the file positorium-0.1.4b2-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: positorium-0.1.4b2-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 929.6 kB
- Tags: CPython 3.9+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de2504666196c412d7d44c55fd720259067f930add8fb4c165a8c7f4ce10950f
|
|
| MD5 |
f9f42cd6bd17edc30818da01fe70a3c3
|
|
| BLAKE2b-256 |
793b7723dbf50326277853d199fa1368a84e047cdc0073b53b42e62191f9d12a
|
Provenance
The following attestation bundles were made for positorium-0.1.4b2-cp39-abi3-macosx_10_12_x86_64.whl:
Publisher:
python.yml on Roenbaeck/positorium
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
positorium-0.1.4b2-cp39-abi3-macosx_10_12_x86_64.whl -
Subject digest:
de2504666196c412d7d44c55fd720259067f930add8fb4c165a8c7f4ce10950f - Sigstore transparency entry: 2674486619
- Sigstore integration time:
-
Permalink:
Roenbaeck/positorium@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Branch / Tag:
refs/tags/v0.1.4-beta.2 - Owner: https://github.com/Roenbaeck
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python.yml@c4cf913f5682f17c8af06b8e252c7c3b25390443 -
Trigger Event:
push
-
Statement type: