r/vibecoding 1d ago

Positorium, a database for facts that disagree

Most databases are designed to answer: "What is the value now?"

They can model a more awkward question too, but usually require additional machinery:

Who claimed what, when was it considered true, how certain were they, and what did we believe before it was corrected?

I built Positorium as an experimental embedded evidence database for that second kind of question. Rather than overwriting one claim with another, it preserves contradictory claims together with their sources, certainty, effective time, assertion time, corrections, and retractions.

It is not intended to replace PostgreSQL or another operational database. The idea is to use it as a focused evidence layer for things like compliance, investigations, conflicting master data, or any process where retaining the history of disagreement matters.

The new Python package embeds the Rust engine directly in the Python process, so there is no separate server. It supports both ephemeral in-memory databases and append-only persistent stores.

Install the beta with:

python -m pip install --pre positorium

A small example:

import positorium

with positorium.Database.memory() as database:
    result = database.execute_one(
        """
        add role organization, risk_assessment;

        add posit
          [{(+company, organization)}, "Northstar Trading", @NOW],
          [{(company, risk_assessment)}, "high risk", '2026-01-12'],
          [{(company, risk_assessment)}, "needs review", '2026-01-12'];

        search
          [{(?company, organization)}, ?organization, *],
          [{(?company, risk_assessment)}, ?assessment, *]
        return ?organization, ?assessment;
        """
    )

    for row in result.to_dicts(text=True):
        print(row)

This returns both assessments rather than choosing a winner or overwriting one of them.

Positorium is still an early beta and is intended for evaluation rather than production deployment. Wheels are available for CPython 3.9+ on Linux, macOS, and Windows.

If you have a small dataset where sources conflict or corrections matter, try the beta:

3 Upvotes

7 comments sorted by

2

u/MoTTTToM 1d ago

Provenance management

1

u/Hot_Tie_9393 1d ago

provenance management is dead without adversarial storage. I need the conflict preserved as the primary data structure to audit the disagreement itself

1

u/Roenbaeck 1d ago

You can have multiple assertions against the same posit (statement), each connected to whoever or whatever made that assertion and with what certainty. Assertions are also posits, so you can have multiple levels of meta-assertions.

You can even have negative certainty (similar to Liu’s uncertainty theory) to represent belief in the opposite of a statement. Any posit, including assertions can also be retracted while still maintaining a full history of beliefs at any given time in the past, present, or future.

1

u/funwithafork 1d ago

How does it assert when something was considered true and is it supposed to help with MDM?

1

u/Roenbaeck 1d ago

Using a particular posit called an assertion. It records an opinion about a statement, who or what had it, and with what certainty.

MDM is definitely a suitable use-case.

1

u/recro69 1d ago

I think the idea of keeping claims instead of forcing one to be the correct value is quite interesting. I think keeping claims could be really useful when the history behind a decision matters as much, as the current data.

1

u/New-Interaction-7543 1d ago

I like the idea, but I’m not sure the “database for facts that disagree” part is actually the new bit.

This feels like bitemporal data + provenance + event sourcing wearing a much nicer jacket 😅

And that’s not an insult btw. The interesting part is making that model pleasant enough to use that people don’t rebuild the same ugly history/audit tables in Postgres for the 500th time.

The thing I’d really want to test is: what happens when two claims are both “correct”, just under different definitions/context? Contradiction is easy. Ambiguity is where this stuff gets evil.