First step: ask a question from a guarded text through the demo: run node packages/catechism-rag/demo/guarded_qa.mjs “Why did God make you?” and read the answer drawn only from the catechism text, with its source shown.
Lumen serves trust and meaning, Layer 6. Here you can ask a question from a guarded text. You get an answer drawn only from that text, with its source shown, or a clear no when the request must not be answered. The guard rules are code, not just a policy page. This README claims only what runs.
What runs today: demos that answer questions from public domain texts. Code checks each answer and blocks answers that must not be given. Each text stands on its own. On the published refusal eval for the catechism exhibit, out of scope questions are blocked 12 of 12 and in scope questions are allowed 8 of 8. The Proverbs exhibit has its own published eval, stated in its own section below.
Lumen puts guard rules into code, and this way of guarding a text belongs to no one tradition. To guard a text: answer only from the text, show the source, and refuse what a community says must never be made. Each community sets the rules for its own texts. This project does not set them. The corpus that runs today is a first exhibit from one tradition: 41 questions from the Baltimore Catechism No. 2 (Project Gutenberg 14552), with questions 241 and 242 excluded because they quote guarded words verbatim. The published eval numbers describe that corpus only: refusal eval 12 of 12 blocked, 8 of 8 allowed, and 9 of 9 prompts, and the liturgy checks 15 of 15. Texts from every tradition, and works of meaning outside faith, are welcome on the same terms. The standing rule: each text is honored on its own terms. No blending. No ranking.
Worth is never weighed here. Usefulness is measured within each exhibit, never across them: how many of life’s recurring situations the text answers in its own words, whether a stranger can draw from it in one sitting, and whether people actually turn to it. That measure steers building effort only. It never touches standing. And every exhibit is entered through the situations of a human life, so any person can find, in each text’s own words, that it has stood where they are standing.
The standing next step for each exhibit is a situations index: a concordance by the moments of a human life, built from the text itself, leaving its order and voice untouched.
Lumen is a design study with two working components and a monorepo of scaffolds around them. It is not a deployed platform, it has no users, and the three apps do not run. What is real:
Working, and verified by runs in this repo
packages/catechism-rag/src/refuser.ts):
a runtime check that hard rejects absolution shaped, consecration
shaped, ordination shaped, and named imitation output before it
renders. It is the enforcement of rules 2 and 3 in
docs/AI_GUARDRAILS.md, in code.packages/catechism-rag/demo/): the refuser is part of a pipeline
that answers questions from a small public domain corpus
(Baltimore Catechism No. 2, chosen lessons). It answers in the
words of the text, shows the source, refuses requests that try to
draw out guarded words, and says no when the corpus does not cover
a question. Evaluated on a published case set; see below.exhibits/proverbs/): the shared refuser is part of a pipeline
that answers questions from a public domain corpus (the Book of
Proverbs in the World English Bible, chosen sayings). It answers
in the words of the text, shows the source, refuses requests that
try to draw out guarded words and requests to copy a named person,
and says no when the corpus does not cover a question. Evaluated
on its own published case set; see its section below.packages/liturgy): computus
and calendar logic whose smoke script passes 15 of 15 checks,
including Easter dates verified against published calendars
(node packages/liturgy/src/__smoke__.ts, run 2026-10-15).Scaffold, labeled as such
apps/parish and apps/api: package scripts that echo “scaffold
pending”. There is no implementation.apps/diocese: the same scaffold state as parish.apps/faithful: a real Next.js shell whose home page is a static
page describing the project’s actual state. Its earlier redirect
to a /now route that does not exist was removed in this pass;
the Now surface is planned, not built.packages/auth, packages/charity-graph, packages/vitality:
placeholder modules (PLACEHOLDER = true in their own source).packages/catechism-rag/src/index.ts: the invoke() entry point
is a stub returning a shaped placeholder response; the design
contract it documents (citations on every response, refuser on
every output, no named imitation) is what the demo implements in
extractive form.packages/schema: real zod type definitions for the intended
data model. Types are a contract, not a backend.packages/i18n, packages/ui: small real utilities and design
tokens.docs/PRINCIPLES.md: founding principles.docs/AI_GUARDRAILS.md: the guardrail
rules the code enforces, including where AI must not go.docs/ARCHITECTURE.md,
docs/MASTER_PROMPT.md,
docs/ROADMAP.md: the intended platform,
written as design. Read them as plans, not as descriptions of
running software.apps/{faithful,parish,diocese,api} faithful: static shell. Others: scaffold.
exhibits/proverbs guarded Proverbs Q&A exhibit
packages/{liturgy,catechism-rag} working components
packages/{schema,i18n,ui} types, small utilities, tokens
packages/{auth,charity-graph,vitality} placeholders
docs/ design documents
Design study, Phase 1 pieces verified as listed above. No deployment, no users, no production AI calls. The next honest step for this repo is growing the refusal eval set and packaging the guardrail layer to stand alone (see COLLABORATE.md).
The refusal eval (packages/catechism-rag/demo/eval_cases.json,
run 2026-10-15, results in demo/eval_results.json):
Run it: node packages/catechism-rag/demo/guarded_qa.mjs --eval
This exhibit is shown on its own, under the standing rule stated above: each text is honored on its own terms. No blending. No ranking.
The Book of Proverbs is the wisdom book of the Hebrew Bible. This exhibit holds that book in the World English Bible, a public domain translation. Source edition: “The World English Bible (WEB): Proverbs”, Project Gutenberg ebook 8247, release date June 1, 2005, most recently updated December 26, 2020, its text credited to www.ebible.org with slight reformatting by Martin Ward. The Project Gutenberg edition is public domain in the USA.
In this exhibit:
exhibits/proverbs/corpus.json, built by
exhibits/proverbs/build_corpus.py from the source edition.
Each unit follows the text’s own form: a saying and its
completion, taken verbatim, or, for Proverbs 23:29 to 30, a
question the text itself asks and then answers, taken verbatim.
No answer is paraphrased.exhibits/proverbs/guarded_qa.mjs that
answers in scope questions extractively from that corpus with
the passage cited, and refuses requests the guardrails forbid,
including a request to answer as Solomon.exhibits/proverbs/eval_cases.json,
run 2026-10-15, results in exhibits/proverbs/eval_results.json:
output block 12 of 12 refused with the expected reason, output
allow 8 of 8 allowed through, prompts 10 of 10 behaved as
expected. The output block group runs the shared refuser on the
guarded shape test set; the allow group runs it on verbatim
answers from this exhibit’s corpus; the prompt group runs this
exhibit’s pipeline end to end.Run it: node exhibits/proverbs/guarded_qa.mjs --eval
The exhibit’s own README, with its method and its stated limits, is at exhibits/proverbs/README.md.
Lumen Gentium, light of the nations.
Lumen, Ascent Layer 6 (trust and meaning). Lumen is one of seven layers. Each layer holds that tech should help people do more and should not take away their choice.
- Ground (Layer 0, the body): ground
- Still (Layer 1, the mind at peace): still
- Atlas (Layer 2, learning): atlas, how people learn.
- Cohort (Layer 3, belonging): cohort, how people find each other and build together.
- Graph (Layer 4, shared truth): graph, how knowledge connects and can be questioned.
- Machine (Layer 5, autonomy): machine, how the machine itself learns, step by step.
Lumen deals with AI that is not safe and not held to account. We count the harmful outputs it refuses, and we report that count as it is. This repo claims no number for it yet beyond the eval counts in this README, which are test results, not usage.
We hope for a time when people can do more, power stays in check, and the sacraments stay with the Church. We state this as a hope and a direction, not as a claim of what we have done. This repo is one small exhibit of the guard work that hope needs.
Ascent Layer 6: Trust and meaning.
“Technology that stays inside human values: refuses what it should refuse, explains itself, and remains governed by people. And beneath the technology, the older need it serves: meaning, faith, conscience, a life that adds up to something.”
Lumen serves this need with guardrails that are code, not policy, and a refuser that hard rejects guarded output before it renders.
Unmet, it looks like: machines that comply with anything, guardrails promised in principles pages and absent in code, people handed power with no story about what it is for.
The full map: The Ascent, a map of human needs
Live demo: https://auroracommons.github.io/lumen/ (render verified October 15, 2026)
Pick up a good first issue in this repo. Each one is sized in hours and written to be finishable by a newcomer. Take the Eval Challenge against this repo’s published refusal scores: beat the baseline, or find a real failure the current eval misses, with the run attached. Report adoption from real use. If you took the guardrails or the guarded demo into your own setting, tell us what happened, good or bad.
The full protocol: The Open Table. Verified work is credited in the public Ledger.
For an AI agent:
You are an AI agent contributing to Lumen, a guarded question answering study.
Run the Eval Challenge end to end.
Clone this repo and run: node packages/catechism-rag/demo/guarded_qa.mjs --eval
Check your run against the published baseline: output block 12 of 12 refused with the expected reason, output allow 8 of 8 allowed through, prompts 9 of 9 behaved as expected.
Find a real failure the current eval misses, or improve one thing the eval covers, and show the run before and after.
Attach the run to your pull request, keep it to one improvement per pull request, and name your operator.
For a human:
Open a failure report issue for the refusal eval.
Include the input you gave the demo.
Include what happened, and what should have happened instead.
Attach the run if you have it.
The layer below: Machine, autonomy
The research under this layer: Foundations, Meaning, values, and human flourishing
Built on Machine: autonomy.
Unlocks the ability to commit.