Global AI Mission Forum 2026 · Americas A-1
Leaving Context
Behind
A knowledge base built with Obsidian and AI agents, and the ministry it makes possible
“Write the vision; make it plain on tablets,
so he may run who reads it.”
Habakkuk 2:2 · ESV
- A record is not storage. It is written to be passed on.
- Sermons get buried once Sunday passes. Visits stay only in memory. Letters from the field sleep in a cabinet.
Three ways to work with AI. Only one of them builds up over time.
They are not rivals. Each one contains the one before it. Everything I show you today lives in v3.
Superhuman is not a talent.
It is a context.
The people who use AI brilliantly are not better at asking. They have left more behind for it to stand on.
- 10,000+ notes since 2022: sermons, lectures, meetings and drafts, all in one shape.
- Nine agents that work inside them, under rules I wrote down once.
While I sleep, the record keeps itself
And every ten minutes, every conversation I have had with an agent is indexed, so nothing we decided together is lost.
Nine agents. Nine Johns. Nine fruits of the Spirit.
Not because a machine can bear fruit. These are the virtues I want my own work held to, so each one from Galatians 5:22–23 is written into an agent’s rules as its guardrail. Kepler’s gentleness: lay down your own theory before the data.
What changes when a ministry leaves its context behind
None of this needs a bigger model. It needs a record left in a form an agent can work in, kept on your own machine where it must be.
A
How it worksthree decisions: a schema, two vaults, and rules in files
Leaving a record is not enough. The form you leave it in decides what an agent can, and cannot, do with it.
AI appears to read content.
It actually reads structure better.
A searchable format lets a thought be recalled. An unsearchable one lets it evaporate.
One note. The metadata is the index.
| Field | What it makes answerable, years later |
|---|---|
presenter | Who preached it — across every note, for years |
source_url | Where it came from, so a claim can be traced back |
date | What season the congregation was walking through |
[[John 3]] | Every sermon that touched this passage, in one click |
[!bible] / [!quote] | Scripture and a quoted book, never collapsed together |
The author of a book and the pastor who chose the excerpt are never mixed. That rule lives in the file, not in my memory.
The wiki is the pantry. The main vault is where the meal is served.
The real reason I split the vault in two is not size, not speed, not who I share it with. It is so that I never lose track of how much I actually know.
— from my own notes on authorship separation
Author separation is an epistemic safeguard. In matters of faith, an epistemic safeguard is a theological one: it is how, three years from now, I will still tell what I believe from what I merely read.
Same file format. Same folder. Same grammar.
Format rule
- Descriptions must be double-quoted
- Dates must be written one way
- Seven properties are required
Doctrine rule
- Never invent new theological content
- Never fabricate an author. Never guess
- The pastor chose the excerpt. He did not write the book
Both are plain text in the same folder, read before every edit. That is the whole mechanism.
Every agent write is checked. Here is exactly what that means.
$ validate-frontmatter.sh
six of seven fieldsexit 2failed back
description unquotedexit 2failed back
no metadata at allexit 2failed back
seven fields, quotedexit 0passed
type: bananas · date: not-a-dateexit 0passed
Three hooks run after every write my agent makes. One hands a failure back into the agent’s own context, so it cannot carry on as if the write were clean. It checks whether the boxes are filled, not whether they are filled correctly. No script of mine checks theology.
D
Proven by refusalwhat the session log kept while preparing a lecture two weeks ago
You cannot verify that my output is good. You can verify that it said no.
“If I invent a validation table from guesses,
— the agent, declining to fabricate · translated from the Korean session log
that is not analysis. It is fiction.”
I asked it to analyse the data. The folder had none. It said so, named exactly what would have made the question answerable, and declined to produce the table anyway. I can quote it two weeks later because the session log is kept — which is the same habit the rest of this talk is about.
A boundary runs in both directions
None of these four is code. All four are sentences, loaded every session. Writing a rule down is building the fence.
A schema does not prevent a wrong judgment.
It makes a wrong judgment traceable. That is a smaller claim than you may have expected, and it is the honest one.
- Structure can tell you what a sentence was standing on. It cannot tell you the sentence was true.
- Discernment and proclamation stay with me. No file makes that decision for me.
Where I draw the line
I hand over
- Retrieval and comparison
- First drafts
- Linking and indexing
- Enforcing the format
I never hand over
- Discernment
- Proclamation
- Pastoral care
- Standing before God in my place
If you start this week
Not the tool first. The folder, the five fields, and the page of rules — in that order.
AI organizes my study.
It does not stand in my pulpit.
Hand the machine what it can carry, and the time comes back to people: to prayer, to presence, to the person in front of you. Leaving context behind is how a ministry is handed to the next person.
Thank you. Questions are always welcome.
Yohan Koo · CMDSPACE · Author, Obsidian Professional Notes (Recommend, 2026)
Z
Appendixmeasured on disk, 2026-09-18
Everything past this sheet was counted on disk two weeks before this talk, not estimated. Where the number is unflattering, it is still the number — and the gap it names is the work in front of me.
I did not count any of this. The structure counted.
Same idea. Different contract.
Main vault — I am the author
- The author field is fixed to me
- A status field carries my judgment
- Two coordinates: subject, and which list it joins
- A published flag, once it has gone out
Wiki vault — the agent is the author
- The author field records which agent wrote it
- Confidence, and whether it has been verified
- Whether a human has actually read it
- Its source, and any recorded disagreement
The difference is not cosmetic. It is written into a file the machine reads, so neither vault can quietly adopt the other's rules.
Every wiki page is born doubting itself
The template starts every page at medium confidence, unread, unverified. Starting well is not available, and nothing ages into being verified — only a verification pass moves those values, and it has run on every one of the 42. Forty-one of those passes were signed by an agent. A human pass is the layer I am adding next.
79 KB governs 10,252 files
Rules have to be short to be loaded always, and they have to be loaded always to be rules.
A skill opens in four layers
Of 895,063 bytes in this one skill, 0.07% is always on. Across all ninety-nine, measured the same way, 0.09%. The always-on layer never reaches a tenth of one percent.
The context window is a budget,
and the schema decides how it is spent.
The agent sees only that one description line, and decides from it whether to open the rest. A skill does not fail because its instructions are bad. It fails because its one line did not describe it.
- So most of my skills carry a sentence saying what they are not for.
- And when one misfires I write it down the same turn, in my own words, so the fix has evidence behind it.
Every agent write is checked, every time
# settings.json — 646 bytes, the whole entry point
after every agent write:
├ validate-frontmatter.shexit 2→ hands the failure back
├ qmd-reindex.shexit 0→ never blocks
└ transcript-lane.shexit 0→ never blocks
Three hooks run on every write my agent makes. One can fail, and when it does the breach lands back in the agent’s own context, so it cannot carry on as though the write had been clean. It runs after the write, not before: the file is already on disk when the script opens it. The other two are forbidden from ever failing. Enforce the form, never obstruct the work.
The contract every content note signs
| Field | Rule | Why it exists |
|---|---|---|
type | Open vocabulary | 126 distinct values in use; the top fifteen cover 87% |
aliases | A list | The other names a link might arrive under |
description | English, always quoted | Written for the next agent, not for me |
author | A quoted link | The field that keeps me and the machine apart |
date created | One date format | When it began |
date modified | One date format | When it last moved |
tags | A list, never a bare number | A bare number here breaks the properties panel |
Two characters can eat
the rest of a sentence.
In this metadata format an unquoted value ends at a space followed by a hash. One note in my inbox has a description the parser silently truncates mid-word, because the text contained a reference like “#52”. Of 2,738 descriptions, 2,347 are quoted and exactly two are actually broken. The rule exists because of those two.
The gap between the rule and the vault
| Measure | Count | Share |
|---|---|---|
| Markdown files | 10,250 | 100% |
| Has a metadata block | 7,902 | 77.1% |
| All seven fields present | 2,418 | 30.6% |
| Has a description | 2,738 | 26.7% |
| Status inside the standard five | 2,821 | 89.1% |
| Subject coordinate pointing correctly | 2,660 | 95.1% |
A schema is not a claim that everything obeys it. It is the thing that lets you count how much does.
The fields divide by who fills them
I write these
- Status — 3,178 filled of 4,506 ready
- Subject and list coordinates — about 2,800 each
- Published — 402, of which 61 actually went out
- My own rating — 161 filled of 414 ready
The agent writes these
- A link back to the session that made the note — 1,056
- Which model wrote it — 811, and at what effort — 802
- The daily note's own state — 40
- Where a finished artifact was archived — 18
811 notes carry a model signature. That is a floor, not a total: the rule was adopted in August, so anything older is unsigned. Every note written since carries one, and back-filling the older ones is a job I have queued rather than guessed at.
What the agent writes when it does not know
effort: high 330
effort: xhigh 175
effort: medium 66
effort: ultra 45
effort: "not exposed" 70 # the runtime did not tell it
Seventy notes say “not exposed” instead of guessing. A field is only useful if the agent is allowed to admit it does not know the value.
Ten folders. None of them is a subject.
No folder is named after a topic, so the agent can never decide to move a note because its subject changed. Subject lives in a field.
Nine files, numbered so they cannot argue
230 KB in total. The agent does not choose which rules apply to it. Its number is assigned.
Nine rule files, 69 KB, loaded every session
| Rule file | Size | What it governs |
|---|---|---|
| Linking | 14.6 KB | Three ways to reference a file, and when to use each |
| Metadata | 13.4 KB | The seven fields, and where an edit may not reach |
| File creation | 12.0 KB | Eight agent lanes, and how finished work is closed out |
| File moving | 10.0 KB | Moving a file without orphaning what points at it |
| Whitespace | 6.1 KB | Where blank lines are required and where they are noise |
| Directories | 5.8 KB | Ten folders, and the links that sync them between machines |
| Three more | 7.1 KB | Heavy media projects, diagrams, tabs versus spaces |
One of them calls another: the linking rule reaches into the moving rule. There is depth, but only two levels of it.
The rules belong to the vault, not to this laptop
# sync ignores hidden folders, so the originals live in the open
hidden/agents → 90. Settings / Agent Settings / agents
hidden/commands → 90. Settings / Agent Settings / commands
hidden/hooks → 90. Settings / Agent Settings / hooks
hidden/rules → 90. Settings / Agent Settings / rules
hidden/skills → 90. Settings / Agent Settings / skills
settings file not linked — deliberately per-machine
Because the originals sit in an ordinary folder, the rules travel with the vault to my second machine and to whichever agent opens it next. They became part of the knowledge base rather than part of an installation.
When routing fails, the failure is written down
Source, compilation, and the rules that separate them
Fields the main vault does not have
| Field | Born as | What it forces |
|---|---|---|
author | the agent's name | 765 pages name one agent, 251 another, 2 name me |
confidence | medium | It cannot promote itself to high |
verificationStatus | unverified | Only a verification pass changes this |
explored | false | True means a human actually read it |
source | empty | 941 pages point back at a raw source |
disputed | absent | 262 pages already have the place to record one |
A new page is born at medium, unread, unverified. Starting well is not an option the template offers.
1,018 pages, graded by the gate
These numbers staying low is the evidence that the gate works. Nothing ages into being verified.
Seven indexes, and only two of them are lists
What I do not know is a file,
not a footnote.
161 open questions are marked inside pages, and the substantive ones are promoted into pages of their own, with hypotheses and evidence on both sides. 805 bias checks are recorded the same way. Not knowing became something the system can index, revisit, and eventually close.
An asymmetry worth designing around
Cannot cross
- A link between vaults renders as broken
- The graph view only sees inside one vault
- So connections live in metadata fields instead
- 504 pages point home; 36 notes point out
Crosses freely
- One search index spans both vaults
- Fifteen collections, scoped per question
- Embedding and reranking run locally
- Nothing leaves this machine in order to be searched
Separated where authorship matters. Joined where a question does not care which vault holds the answer.
Eleven of thirteen commands declare their own tools
| Command | Shape | What it cannot do |
|---|---|---|
| Status | /status | No writing tool was declared, so it has none to reach for |
| Inbox | /inbox | Only routes. Never files anything itself |
| Connect | /connect | Cannot merge or synthesize |
| Merge | /merge | Never fans out. Synthesis has exactly one writer |
| Share | /share | Delegates to other skills. Writes no prose itself |
| Lint | /lint | Reports problems. Leaves the fixing to me |
| Daily · Weekly | /daily · /weekly | These two declare no tool limits yet. Still open |
A declared tool list is a real limit: a command that never declared a writing tool cannot reach for one. Where a command does declare Edit, a written rule holds it back instead. Both are in force. Knowing which is which is the point, and narrowing the declarations is the next pass.
The daily note, and the parts it may not touch
A state field carries the note from pending to filled to final, so a second run patches sections instead of starting over.
Not a demo. A trail.
Two months later I can reopen the conversation that produced a file. That is what a link back to the session buys.
When I build Bible reference material, I keep a ledger
| Kept per source | Why it is there |
|---|---|
| Where it came from | So a reader can go and check it themselves |
| What it supports | Exactly which claim it backs, and no other |
| Its limitations | What this source is not able to establish |
| How it was checked | Whether I opened it, or only saw it in an index |
180 sources, each with its own stated limits, and a receipt file hashing every artifact. The question is never only whether it is right — it is what it stands on, and how far that can carry.
Thank you. Questions are always welcome.
Yohan Koo · CMDSPACE · Author, Obsidian Professional Notes (Recommend, 2026)