homestead-law
Homestead · Affairs — module one. The household handling its own deeds and disputes. Prose name: Law Gazelle.
A self-contained desktop module: it ships to a self-represented parent or a
legal-aid clinic who double-clicks it, so its store is embedded SQLite — a
linked library, not a server (the face's 2026-08-04 "no listening socket"
decision holds; SQLite binds no port). The record layer is the engine's now:
store.py is a thin binding — homestead.keep.store's adapter contract on a
SQLite backing, in the law database. The invariants (I-6/I-7/I-9/I-11) are the
engine's, tested there against every backing; this module only chooses the
backing and the database. It pins the engine from PyPI —
homestead-affairs>=0.1.0,<1.0 (the distribution name; import homestead is
unchanged) — and shares the ~/.homestead root with the ledger, because a
household's affairs are one thing.
The shared Postgres engine on the fleet side (the Willow side of the die) is
a sync target, reached through the egress gate — never a runtime dependency of
the shipped app. Sync is an S4 egress: an L5 record never crosses, and what
lands in the shared store is only what the household chose to expose.
Status: bite 3 — runnable end to end on SQLite. The store (bite 1), the custody pack and registry (bite 2), and now the app — the two S1 surfaces (
app/window,app/view), the cover's re-identification check (app/cover, I-31), the surfaced advisory matcher (app/advisories), and the citation extractor (patterns, I-18) — all reading the SQLite store. The chokepoint (I-16) guards the app: only the store reaches a payload, and no surface reflects.python -m homestead_law --demoprints the whole store→gate→surface pipeline headless. And the queue (queue) — what the season owes — deadlines across every matter, iteratingall_matters()(the registry, not a hand-kept list — BUG-6's fix), computing urgency withhomestead.keep.dates, surfacing an unparseable date as a gap (I-8), dropping a sealed deadline, and feeding the cover's re-identification check (I-31). The queue is wired into the app: the resting cover shows only counts that survive re-identification (nothing, over a single matter), a "What's due" view lists the queue, and--demoprints it headless. Suite: 85 passed. The "prove one app on SQLite end to end" milestone is met; the adapter seam and the gated Postgres sync generalize from here.
What is enforced here today
The record invariants, carried from homestead.keep.record and held more
tightly by the database.
| I-6 | The canonical record is read-only, enforced by type. Canonical reads the canonical table and has no put/update/delete; Sidecar writes its own. The Postgres sync target is the shared canonical on the fleet side. |
| I-7 | One key. (matter, item_type, item_id) is the composite primary key, computed once by key(), shared by read and write. Two call sites cannot derive it two ways (BUG-11). |
| I-9 | Writes never silently overwrite. A first write is an INSERT; the primary key makes a racing second write an IntegrityError, refused — race-safe by the database, no lock. An explicit overwrite reports what it replaced. |
| I-11 | Absence fails closed to L5 at the storage boundary. A row whose rung is missing, unreadable, or whose payload will not decode reads L5 on the way out — never L1 — using the same rungs._read_rung the gate uses. |
The method
Test-first, as in homestead: every claim is a check somebody can run. From a
cold checkout — the engine (homestead.keep) resolves from PyPI as
homestead-affairs, no sibling checkout needed:
pip install -e . # pulls homestead-affairs (homestead.keep) from PyPI
pytest -q
Apache-2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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 homestead_law-0.1.0.tar.gz.
File metadata
- Download URL: homestead_law-0.1.0.tar.gz
- Upload date:
- Size: 72.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f52269f5e8d6529d887967b5748ee6cebefb3dda912b0a743f50a7bdb4a30a5f
|
|
| MD5 |
038febee6e53268710b30e142c4ecada
|
|
| BLAKE2b-256 |
c0af6fb18b6d48420a8bf84e84452c52125cdb56ef11cc68936a62b4e8335db0
|
Provenance
The following attestation bundles were made for homestead_law-0.1.0.tar.gz:
Publisher:
release.yml on rudi193-cmd/homestead-law
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
homestead_law-0.1.0.tar.gz -
Subject digest:
f52269f5e8d6529d887967b5748ee6cebefb3dda912b0a743f50a7bdb4a30a5f - Sigstore transparency entry: 2416254813
- Sigstore integration time:
-
Permalink:
rudi193-cmd/homestead-law@0a7b95ba1710c0d486362c8bb1a3e3a609389973 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/rudi193-cmd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0a7b95ba1710c0d486362c8bb1a3e3a609389973 -
Trigger Event:
push
-
Statement type:
File details
Details for the file homestead_law-0.1.0-py3-none-any.whl.
File metadata
- Download URL: homestead_law-0.1.0-py3-none-any.whl
- Upload date:
- Size: 35.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
846139b88b67f20d19581761b25b9e09dbdaf2bc2618bec823204b16a57e2d9a
|
|
| MD5 |
6663418d10367adf84cd4e579ec49994
|
|
| BLAKE2b-256 |
bff4d84c35a5d5a85026ab0dddb0484a5f47cd87f20459bd862eb8379c8729cd
|
Provenance
The following attestation bundles were made for homestead_law-0.1.0-py3-none-any.whl:
Publisher:
release.yml on rudi193-cmd/homestead-law
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
homestead_law-0.1.0-py3-none-any.whl -
Subject digest:
846139b88b67f20d19581761b25b9e09dbdaf2bc2618bec823204b16a57e2d9a - Sigstore transparency entry: 2416254945
- Sigstore integration time:
-
Permalink:
rudi193-cmd/homestead-law@0a7b95ba1710c0d486362c8bb1a3e3a609389973 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/rudi193-cmd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@0a7b95ba1710c0d486362c8bb1a3e3a609389973 -
Trigger Event:
push
-
Statement type: