scriptt

An AI harness that builds and tests a reusable model of your domain as you work with it.

This release is the world: the Python package scriptt. The harness that grows the world as you talk to it is a different package, world-harness. It is not part of this release.

Why a world

Today, AI work does not build up. What you teach an AI model about your domain stays in a chat, a prompt or the weights of a vendor. Nobody can read it, correct it, own it or build on it. A world keeps that knowledge as an asset that you own.

Facts

1 statement with its source and its dates.

Task(id="t2", title="Send the report", done=True)

Types

The fields of 1 kind of fact, as a Python class.

class Task(Fact): ...

Functions

Python functions in your code that read a view of the facts and give an answer.

def open_tasks(view): ...

A to-do world

The code keeps 3 tasks and marks 1 task done. Then a function gives the open tasks on a date.

Python 3.14

from scriptt.world import Fact, Facts, Key, World


class Task(Fact):
    id: Key[str]
    title: str
    done: bool = False


todo = World.new(Task)
for id, title in [("t1", "Buy milk"), ("t2", "Send the report"), ("t3", "Book a room")]:
    todo.add(Task(id=id, title=title), source="me",
             true_from="2 Nov 2026", known="2 Nov 2026 09:00")

report = todo.on("2 Nov 2026").one(Task, id="t2")
todo.add(report.but(done=True), source="me",
         true_from="3 Nov 2026", known="4 Nov 2026 10:00")


def open_tasks(view: World) -> Facts[Task]:
    return view.facts(Task).where(lambda task: not task.done)


print(open_tasks(todo.on("4 Nov 2026")))

Output

id  title        done
t1  Buy milk     no
t3  Book a room  no

The report is done from 3 Nov. Thus on 4 Nov the world has 2 open tasks.

What was true, and what you knew

Each fact has 2 dates. The true-from date is when the fact became true. The known time is when you got it. The log never changes an entry. Thus you can see an old answer again and find the cause of a change.

QuestionCallReport done?
Was the report done on 3 Nov, with all that you know now?todo.on("3 Nov 2026")yes
What did you know at 18:00 on 3 Nov?todo.on("3 Nov 2026").known("3 Nov 2026 18:00")no

Start

scriptt needs Python 3.14. It is not on PyPI yet. The docs show each call with its real output.