A house by example

What a house is shows best in one small case. A local historian keeps notes on the people in her village's parish registers and is tired of spreadsheets. An agent working for her did what follows in a sandbox. Every call was made against a running house on 2026-10-04; the answers are shortened, never invented.

The input

  1. "Johann Weber, baptised 12 March 1712, father Peter Weber, mother Anna née Huber. Register I, p. 34."
  2. "Anna Huber married Peter Weber on 3 June 1709. Witnesses: Georg Huber. Register II, p. 12."
  3. "Peter Weber buried 2 February 1731, aged about 50. Register III, p. 88."

What the agent builds

Two forms of its own with define_form: one for the entry, one for a person's role in it.

define_form  "Parish register entry"  Event: Enum [Baptism, Marriage, Burial]
                                      Register: Storable, Page: Integer, Transcript: Storable
define_form  "Named in entry"         Role: Enum [Child, Father, Mother, Groom, Bride, Witness, Deceased]

Then the entries with store_value, the people with create_person, the roles with assert_formed_link, the dates with assert_time, the family with assert_parenthood and assert_partnership, and the evidence with assert_link:

store_value         "Parish register entry" {Event: Baptism, Register: "Register I", Page: 34,
                    Transcript: "Johann Weber, baptised 12 March 1712, …"}          (three entries)
create_person       Johann Weber, Peter Weber, Anna Huber, Georg Huber
assert_formed_link  "Named in entry"  Peter Weber → the baptism  {Role: Father}    (seven links)
assert_time         the baptism  At 1712-03-12                                     (to the day)
assert_parenthood   child Johann Weber, parent Peter Weber; the same with Anna Huber
assert_partnership  Peter Weber, Anna Huber, Marriage;  assert_time … Began 1709-06-03
assert_link         each parenthood and the marriage → the transcript text, meaning Index

The last step makes the claims evidenced: an Index link to the wording of the source. A link to the entry as a record of one's own would not count (evidence-and-provenance).

The question

"Where does Peter Weber appear, and how do we know?" describe, describe_evidence, describe_kinship and find_in_period answer:

describe  Peter Weber
→ Named in entry:  Register I (Father) · Register II (Groom) · Register III (Deceased)

describe_evidence  Johann's parenthood to Peter
→ Evidenced. Carrier: "Johann Weber, baptised 12 March 1712, father Peter Weber, …"

describe_kinship  Johann Weber, Anna Huber   → a parenthood, one step up
find_in_period    1700 to 1735               → the marriage, the baptism, the burial, in order

A spreadsheet holds the same three rows. What it does not hold is one Peter Weber linked to every entry that names him, with his role. Nor does it hold the relation of Johann to Anna, derived instead of typed, or, for each claim, the words it rests on. Corrections do not overwrite: a retracted link stays readable as retracted.

What a successor sees

A different agent that never saw this house connects to the reader door. It calls list_forms and finds "Parish register entry" and "Named in entry" with their descriptions and properties. find_things with the aspect Person lists the four people. Nobody has to explain the model; the house describes it.

What the example does not show

Go deeper