Skip to content
lentagoPublic

About

Uvularia — the Lentago Labs records vault: a client-owned Obsidian-compatible vault of public records with obligations-as-code, a grounded Ask box that answers only from the records, and a live "Is it posted?" compliance board. Three repos, three pipelines. Bellwort: the bell is the announcement.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

uvularia — Records and deadlines · grounded Ask, live board

main License

Markdown Obsidian GitHub Actions Claude

uvularia

Uvularia (bellwort, a New England native) is the Lentago Labs codename for the records vault: the bell is the announcement. Born 2026-10-03 under ADR-0009.

Your organization's public records — minutes, notices, bylaws, policies, filings, announcements — kept as a plain Markdown vault in your own GitHub, with the rules about what must be posted and when kept right next to them. Merge a change and three things happen without anyone touching a server: the records publish, a public "Is it posted?" board updates, and an Ask box that answers only from those records picks up the new facts. Firing us is a fork.

Authorship: the code, prompts, and documentation in this repo are co-written with Claude (Anthropic). Chris directs the work and reviews the output; Claude writes the code and prose. Chris is an infrastructure operator, not a software engineer. Please don't read this repo as a portfolio of coding ability.

Status: Phase 0 complete, with a receipt; Phases 1 and 2 built; Phase 1's receipt recorded in part, Phase 2's not yet. The vault and board stand as a Kit: the first timed dry-run (receipt) reached its first green row in under fifteen minutes and found four adoption-path defects, all filed; the one-repository rung was timed on 2026-10-12 at 6 min 09 s to the first green row (receipt), with one defect filed. The Ask box (#37, #45, #49) and the operator pane's push step and alerts (#58, #60) are merged and in the tree; Phase 1's receipt is recorded in part and Phase 2's not at all, and the Phases table says what each receipt is. The demonstration client is live: the board, its vault, its site. Adoption is a ladder (ADR-0002): the first rung is one repository, uvularia-records-template, which publishes its own plain board; the site, the Ask box and the operator pane are the next three rungs. See ADOPTION.md.

Who this is for

The one tech person at an organization with posting obligations: a condo or HOA board, a nonprofit with a board, a town committee under the Massachusetts Open Meeting Law, a land trust. You need to add a record or correct one in minutes, with a small blast radius, and you need to show, live, that what had to be posted was posted on time.

The shape

Three repositories in your GitHub organization, created from templates here. Each has its own reviewers, its own required checks, and its own blast radius.

Repo What it holds What a merge does
<org>-records the Obsidian-compatible vault: one file per record with provenance frontmatter, originals with checksums, obligations/*.yaml, an intake/ folder that is never built, append-only receipts/ validates schema, links, privacy tripwires, and obligations; publishes a digest-named corpus bundle, a standing file, a feed, a receipt with a server-side timestamp, and a provenance attestation
<org>-ask-rules how the Ask box answers: frozen instructions, allowed subjects, refusal policy, caps, a kill switch, manual incident overrides, golden evals runs the evals against the currently published corpus; cuts a versioned release the Ask function pins
<org>-site presentation only: pages, theme, the Ask widget, the public board builds from the published bundle, never from the vault; deploys to your GitHub Pages

A corpus change cannot alter a rule. A rule change cannot alter a fact. A site change cannot smuggle either.

The Ask box is mitchella's engine with two added signals: an obligation in breach becomes an incident on its subjects, and active announcements surface first. The box therefore cannot claim compliance the board denies. The Ask function is the first swing at a front desk (an assistant that answers from your own records and refuses what they don't say): mitchella's engine, boxed in and run serverless in your own AWS account. mitchella is meant to be the production front desk, the one that will answer through many front ends: Slack, a website widget, email or a ticket system such as RT, the command line.

Phases

Phase Scope Receipt
0 · Vault + board vault template, schema, validator, obligation evaluator, Issue-form intake, publish receipts and attestation, the public board on Pages, the demonstration client, ADOPTION.md, a timed dry-run recorded (2026-10-03): the board live for the demonstration client; a dry-run receipt with elapsed time
1 · Ask box rules repo and eval gate, mitchella signal providers, a hardened serverless module, the widget with verified citations recorded in part (2026-10-12): a live answer that cites a record, and a live refusal of a legal question; the refusal during a manufactured breach is still open. Built in #37, #45, #49
2 · Operator pane an Actions-to-Loki push step, the left-to-right pipeline dashboard in your Grafana Cloud free tier, alerts that open Issues not yet recorded: the dashboard in a fresh free-tier stack. Built in #58, #60 here and the dashboard in drosera
3 · Consumers the funder-report pipeline and the good-standing reconciliation reading the same vault not started: one number committed once, cited in three outputs

Phase 0 has no AI in it and is where the add-quickly, correct-quickly, low-blast-radius requirement is met. Everything later attaches to a vault that already works.

The demonstration client

Stillwater Brook Watershed Alliance, a fictional land trust from the lupinus stories. Its identity lives in one file, org.yaml, and its seed records are generated from templates by a script that reads that file. Renaming or rebranding the demo is one edit and one re-run, and CI fails if the name appears anywhere else. A real client starts from an empty vault; the seed is a demonstration and a lab fixture, not a starting point.

Layout

Path Purpose
docs/concept.md the architecture, the four nouns, the three pipelines, the boundaries
docs/adr/ product-local decisions; the fleet-level decision is ADR-0009 in lentago/.github
ADOPTION.md the adoption ladder: rung 1 (one repository) in full, rungs 2 to 4 pointed at their guides; costs, exits, traps
DRY-RUN.md the checkpointed drill from "Use this template" to a green board, with a receipt
receipts/ uvularia's own adoption receipts; the tier picker cites the latest
templates/ the records, site and ask-rules templates, and the Ask function a rules repo vendors as ask-function/
core/ the record and obligation schemas, the validator, the evaluator, the bundle format
demo/ org.yaml and the seed generator for the demonstration client

🌱 Lentago Labs is a pro-bono operations practice for organizations that run on volunteers, donations, and one overworked tech person. Everything here is free to take, and we practice what we publish: our own estate runs this way, in the open. Start at the org profile.

About

Uvularia — the Lentago Labs records vault: a client-owned Obsidian-compatible vault of public records with obligations-as-code, a grounded Ask box that answers only from the records, and a live "Is it posted?" compliance board. Three repos, three pipelines. Bellwort: the bell is the announcement.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Generated from lentago/repo-template