Awesome Search KG — History Entry
Writes one dated entry after a batch of work, from session context — what
the batch changed — never reconstructed from diffs. If a kg-writer subagent did
the work, write the entry from its report.
An entry is a short announcement of what is now covered, in the voice of a
mailing-list digest: someone who never opens the notes should still learn
something from the paragraph, and someone who wants more should know which note
to open.
The subject is the finished change, not the work that produced it. Facts
that were corrected are part of the change and belong in the entry — say what
was wrong and what it says now. Deliberation is not: never write what was
weighed, what alternatives were considered and rejected, what was deliberately
left unwritten, or why option 1 beat option 2. The process is over; only the
result is news.
The reader is already inside the knowledge base, so it is never named. Write
what happened to the material — added, extended, corrected, now covers —
and let the notes speak for where it lives.
Scope: one entry = one coherent edit
An entry describes a single consistent unit of work: one source (article,
video, series), one correction, or one cluster built around one theme. If the
session did unrelated things — e.g. processed an article and fixed an
unrelated stub — write separate entries, one per unit, each with its own
heading and counts. Never merge unrelated work into one entry to save space,
and never pad one unit's entry with another unit's details.
File layout
Awesome Search/History/<year>.<week>.md — the actual log, one file per
ISO week, zero-padded week number (e.g. 2026.31.md). Entries newest
first, separated by ---. Header:
---
tags:
- meta
- history
---
# History — <year> week <WW> (<Mon d – Sun d, year>)
Newest first.
Awesome Search/History.md — index only, never entries. One line per
week file, newest on top:
- [[2026.31]] — Jul 27 – Aug 2, 2026 (11 entries)
Awesome Search/History/History Stats.md is a frozen artifact — a running
note-count table kept until 2026-07-27. Never append to it; running totals are
banned (hard rule 8).
Entry format (fixed)
## YYYY-MM-DD — <Title, ≤10 words> (N new, M updated)
<ONE prose paragraph, 3–5 sentences, 60–120 words, subject-first. Open on the
substance — the problem the material addresses or the claim it makes — then what
was added or extended to cover it, linking the notes inline. Close with sourcing
(author, series, paper) and any caveat a reader would be misled without
(paywalled stub, author-reported figures). Written for someone who will not
open the notes.>
**Corrections** (only when this batch changed something already written)
- <≤3 bullets, one line each: what was wrong → what it says now, in [[note]].>
**New** — [[Note]] (≤8-word gloss) · [[Note]] · …
**Updated** — [[Note]] (reason, only when not obvious) · [[Note]] · …
Hard rules
- Newest first. Prepend under the week file's intro, separated from the
previous entry by
---.
- Heading count is always
(N new, M updated). No (~14 notes),
no (0 notes, 1 correction) — a correction-only run is (0 new, 3 updated).
- One paragraph, 60–120 words. Never more. No
### subheadings, no
tables, no block quotes, no formulas, no bold inline part-markers
(**Part one**, …). If the material deserves more prose than that, it belongs
in the notes themselves — link to them.
- Subject first, bookkeeping never. Open on what the material is about, not
on the state of the graph — not "X was scattered across…", "there was no note
owning…", "built out the Y side of the graph". Coverage gaps are the reason
for the work, not the news; if a gap matters to a reader, it is because of
what now fills it.
- Never write "vault", "this vault", "the graph", "the knowledge base".
The reader is looking at it. Say what happened to the material instead:
added, extended, corrected, reworked, now covers, now hands off
to. "A note on tenant skew was added" — not "the vault gained a note on
tenant skew".
- Substance is welcome, retelling is not. Carry the shape of the material —
the tension, the ladder of options, the counter-intuitive result — in enough
detail to be worth reading. Do not reproduce the notes: no walkthrough of
every section, no stacked metrics, no quotes. One or two concrete figures are
fine when they are the point.
- No deliberation, ever. Nothing about options weighed, alternatives
rejected, naming or filing calls, what was left unwritten, what a search
turned up, or how sources were reconciled. The reader cannot see the roads
not taken and does not need to. Ban phrases: "rather than", "instead of
creating", "opted to", "left … as", "no note exists so".
- No totals, no tallies. Never a running or cumulative count — not "now at
~660 notes", not "the 12th case study", not "one of only three notes on…".
The
(N new, M updated) heading count is per-entry and is the only count
that appears anywhere.
- Corrections are content, not process. A
**Corrections** bullet appears
only when this batch changed a claim written earlier, and states the
correction itself: what the note said, what it says now, where. Max 3. Not
"verified figures against the PDF" — instead "[[Note]] attributed the 30%
uplift to the vendor's post; it is the paper's baseline-of-1 reference".
Renames, re-filings, and deleted drafts are not corrections; omit them.
- Typed New line(s). If the batch spans multiple note types, split into
typed lines in this order: Articles / Videos / Concepts /
Topics / People / Companies / Tools / Case Studies /
Datasets / Conferences — each replacing the single New line.
Glosses ≤8 words, only where the title alone is opaque.
- Updated line lists content notes only. Never
[[global_toc]],
[[Index]], [[index]], MOC/section files, or History itself — index
maintenance is an invariant of every run and logging it is noise.
- Every wikilink must resolve to an existing note (same names/aliases used
in the batch).
- Anything named that has a note is linked. Every concept, person, company,
tool, engine, dataset, or source mentioned anywhere in an entry — paragraph
included, not just the New/Updated lines — is a wikilink on first mention.
Never
Elasticsearch, Vespa, Algolia, Qdrant as bare prose when those notes
exist. Check before writing rather than assuming; alias the link to keep the
sentence readable ([[Uber Eats - Scaling Search for Food Delivery|Uber Eats]]).
If a named thing has no note, it stays plain text — do not invent a link, and
do not create the note just to satisfy this rule. When linking every member
of a long list would bloat the paragraph, name fewer of them and link those,
or count them ("nine engines") instead of listing.
- Multiple entries on the same date (or for the same session) are fine and
expected when work was unrelated — one entry per coherent edit, each
distinguished by title.
Worked example
Same batch, written both ways.
Don't — opens on the graph, then lists the run's reasoning:
Multi-tenancy was scattered across [[Sharding]], [[Extreme Search Systems]]
and [[Bonsai - Designing Search for a Relational Database]] with no note owning
it. Written from vendor documentation (Elastic, Lucidworks, Vespa, Algolia,
Meilisearch, Pinecone, Qdrant, Weaviate, Milvus) and structured as an isolation
ladder plus a per-engine mechanism table, covering schema, routing, tenant skew,
corpus statistics, filtered ANN, operations and access control.
Decisions
- Left Meilisearch as plain text in [[Multi-Tenancy in Search]] — no Tool note
exists and a single mechanism mention did not warrant creating one.
- Linked [[Vespa]] (company) for streaming mode; the vault has no Vespa tool note.
Do — opens on the subject, links inline, ends on sourcing:
Serving thousands of customers from one search cluster is a ladder of isolation
choices — a tenant field on every document, a routing key, an index per tenant,
a cluster per tenant — trading operational cost against blast radius at each
rung. [[Multi-Tenancy in Search]] climbs that ladder and maps where nine engines
put each rung, then covers what breaks in between: tenants skewed a thousand to
one in size, corpus statistics that let one tenant's vocabulary distort another's
relevance, and filtered ANN that degrades as the filter gets more selective.
Sourced from vendor documentation. [[Sharding]] and [[Extreme Search Systems]]
now hand off to it.
The second is longer in prose and shorter in total, and a reader who never opens
a note still leaves knowing what tenant skew is.
Procedure
- Collect from the session: what was created, what was updated, and any claim
written earlier that this batch corrected. Split the work into
coherent units (one source / one correction / one cluster) — each unit gets
its own entry. Per unit, compute N (files created) and M (content notes
modified, excluding index/TOC/MOC files).
- Determine the current ISO year and week for today's date
(
date +%G.%V gives it directly, e.g. 2026.31).
- If
History/<year>.<week>.md does not exist: create it with the header
above, and prepend its index line to the link list in History.md
(newest on top).
- Draft each entry inside the template. Then reread the paragraph as a
subscriber seeing this material for the first time: if the first sentence is
about the graph rather than the subject, or if any clause describes a choice
being made rather than a thing that is now true, rewrite it. Check every hard
rule above.
- Prepend the entries to the week file, below its intro. Use the Obsidian MCP
server (disk edit only if the REST API is down, per vault conventions).
- Refresh the entry count on this week's line in
History.md.
- Report the entry heading(s) and paragraph word count(s) in your summary.
kg-reviewer verifies the newest entry against this format after every batch.
1---2name: kg-history3description: Write the dated history entry after any Awesome Search KG batch (new notes, enrichment, corrections). Entries go into weekly History/<year>.<week>.md files; History.md is only an index of links to them. Enforces a fixed entry format. Invoke at the end of every batch, before kg-reviewer.4---56# Awesome Search KG — History Entry78Writes one dated entry after a batch of work, from **session context** — what9the batch changed — never reconstructed from diffs. If a kg-writer subagent did10the work, write the entry from its report.1112An entry is a **short announcement of what is now covered**, in the voice of a13mailing-list digest: someone who never opens the notes should still learn14something from the paragraph, and someone who wants more should know which note15to open.1617The subject is the **finished change**, not the work that produced it. Facts18that were corrected are part of the change and belong in the entry — say what19was wrong and what it says now. Deliberation is not: never write what was20weighed, what alternatives were considered and rejected, what was deliberately21left unwritten, or why option 1 beat option 2. The process is over; only the22result is news.2324The reader is already inside the knowledge base, so it is never named. Write25what happened to the material — *added*, *extended*, *corrected*, *now covers* —26and let the notes speak for where it lives.2728## Scope: one entry = one coherent edit2930An entry describes a **single consistent unit of work**: one source (article,31video, series), one correction, or one cluster built around one theme. If the32session did unrelated things — e.g. processed an article *and* fixed an33unrelated stub — write **separate entries**, one per unit, each with its own34heading and counts. Never merge unrelated work into one entry to save space,35and never pad one unit's entry with another unit's details.3637## File layout3839- `Awesome Search/History/<year>.<week>.md` — the actual log, one file per40 **ISO week**, zero-padded week number (e.g. `2026.31.md`). Entries newest41 first, separated by `---`. Header:4243 ```markdown44 ---45 tags:46 - meta47 - history48 ---49 # History — <year> week <WW> (<Mon d – Sun d, year>)5051 Newest first.52 ```5354- `Awesome Search/History.md` — **index only**, never entries. One line per55 week file, newest on top:5657 ```markdown58 - [[2026.31]] — Jul 27 – Aug 2, 2026 (11 entries)59 ```6061`Awesome Search/History/History Stats.md` is a frozen artifact — a running62note-count table kept until 2026-07-27. Never append to it; running totals are63banned (hard rule 8).6465## Entry format (fixed)6667```markdown68## YYYY-MM-DD — <Title, ≤10 words> (N new, M updated)6970<ONE prose paragraph, 3–5 sentences, 60–120 words, subject-first. Open on the71substance — the problem the material addresses or the claim it makes — then what72was added or extended to cover it, linking the notes inline. Close with sourcing73(author, series, paper) and any caveat a reader would be misled without74(paywalled stub, author-reported figures). Written for someone who will not75open the notes.>7677**Corrections** (only when this batch changed something already written)78- <≤3 bullets, one line each: what was wrong → what it says now, in [[note]].>7980**New** — [[Note]] (≤8-word gloss) · [[Note]] · …81**Updated** — [[Note]] (reason, only when not obvious) · [[Note]] · …82```8384## Hard rules85861. **Newest first.** Prepend under the week file's intro, separated from the87 previous entry by `---`.882. **Heading count is always `(N new, M updated)`.** No `(~14 notes)`,89 no `(0 notes, 1 correction)` — a correction-only run is `(0 new, 3 updated)`.903. **One paragraph, 60–120 words.** Never more. No `### ` subheadings, no91 tables, no block quotes, no formulas, no bold inline part-markers92 (`**Part one**`, …). If the material deserves more prose than that, it belongs93 in the notes themselves — link to them.944. **Subject first, bookkeeping never.** Open on what the material is about, not95 on the state of the graph — not "X was scattered across…", "there was no note96 owning…", "built out the Y side of the graph". Coverage gaps are the *reason*97 for the work, not the news; if a gap matters to a reader, it is because of98 what now fills it.995. **Never write "vault", "this vault", "the graph", "the knowledge base".**100 The reader is looking at it. Say what happened to the material instead:101 *added*, *extended*, *corrected*, *reworked*, *now covers*, *now hands off102 to*. "A note on tenant skew was added" — not "the vault gained a note on103 tenant skew".1046. **Substance is welcome, retelling is not.** Carry the shape of the material —105 the tension, the ladder of options, the counter-intuitive result — in enough106 detail to be worth reading. Do not reproduce the notes: no walkthrough of107 every section, no stacked metrics, no quotes. One or two concrete figures are108 fine when they *are* the point.1097. **No deliberation, ever.** Nothing about options weighed, alternatives110 rejected, naming or filing calls, what was left unwritten, what a search111 turned up, or how sources were reconciled. The reader cannot see the roads112 not taken and does not need to. Ban phrases: "rather than", "instead of113 creating", "opted to", "left … as", "no note exists so".1148. **No totals, no tallies.** Never a running or cumulative count — not "now at115 ~660 notes", not "the 12th case study", not "one of only three notes on…".116 The `(N new, M updated)` heading count is per-entry and is the only count117 that appears anywhere.1189. **Corrections are content, not process.** A `**Corrections**` bullet appears119 only when this batch changed a claim written earlier, and states the120 correction itself: what the note said, what it says now, where. Max 3. Not121 "verified figures against the PDF" — instead "[[Note]] attributed the 30%122 uplift to the vendor's post; it is the paper's baseline-of-1 reference".123 Renames, re-filings, and deleted drafts are not corrections; omit them.12410. **Typed New line(s).** If the batch spans multiple note types, split into125 typed lines in this order: **Articles** / **Videos** / **Concepts** /126 **Topics** / **People** / **Companies** / **Tools** / **Case Studies** /127 **Datasets** / **Conferences** — each replacing the single **New** line.128 Glosses ≤8 words, only where the title alone is opaque.12911. **Updated line lists content notes only.** Never `[[global_toc]]`,130 `[[Index]]`, `[[index]]`, MOC/section files, or History itself — index131 maintenance is an invariant of every run and logging it is noise.13212. **Every wikilink must resolve** to an existing note (same names/aliases used133 in the batch).13413. **Anything named that has a note is linked.** Every concept, person, company,135 tool, engine, dataset, or source mentioned anywhere in an entry — paragraph136 included, not just the New/Updated lines — is a wikilink on first mention.137 Never `Elasticsearch, Vespa, Algolia, Qdrant` as bare prose when those notes138 exist. Check before writing rather than assuming; alias the link to keep the139 sentence readable (`[[Uber Eats - Scaling Search for Food Delivery|Uber Eats]]`).140 If a named thing has no note, it stays plain text — do not invent a link, and141 do not create the note just to satisfy this rule. When linking every member142 of a long list would bloat the paragraph, name fewer of them and link those,143 or count them ("nine engines") instead of listing.14414. Multiple entries on the same date (or for the same session) are fine and145 expected when work was unrelated — one entry per coherent edit, each146 distinguished by title.147148## Worked example149150Same batch, written both ways.151152**Don't** — opens on the graph, then lists the run's reasoning:153154> Multi-tenancy was scattered across [[Sharding]], [[Extreme Search Systems]]155> and [[Bonsai - Designing Search for a Relational Database]] with no note owning156> it. Written from vendor documentation (Elastic, Lucidworks, Vespa, Algolia,157> Meilisearch, Pinecone, Qdrant, Weaviate, Milvus) and structured as an isolation158> ladder plus a per-engine mechanism table, covering schema, routing, tenant skew,159> corpus statistics, filtered ANN, operations and access control.160>161> **Decisions**162> - Left Meilisearch as plain text in [[Multi-Tenancy in Search]] — no Tool note163> exists and a single mechanism mention did not warrant creating one.164> - Linked [[Vespa]] (company) for streaming mode; the vault has no Vespa tool note.165166**Do** — opens on the subject, links inline, ends on sourcing:167168> Serving thousands of customers from one search cluster is a ladder of isolation169> choices — a tenant field on every document, a routing key, an index per tenant,170> a cluster per tenant — trading operational cost against blast radius at each171> rung. [[Multi-Tenancy in Search]] climbs that ladder and maps where nine engines172> put each rung, then covers what breaks in between: tenants skewed a thousand to173> one in size, corpus statistics that let one tenant's vocabulary distort another's174> relevance, and filtered ANN that degrades as the filter gets more selective.175> Sourced from vendor documentation. [[Sharding]] and [[Extreme Search Systems]]176> now hand off to it.177178The second is longer in prose and shorter in total, and a reader who never opens179a note still leaves knowing what tenant skew is.180181## Procedure1821831. Collect from the session: what was created, what was updated, and any claim184 written earlier that this batch corrected. **Split the work into185 coherent units** (one source / one correction / one cluster) — each unit gets186 its own entry. Per unit, compute N (files created) and M (content notes187 modified, excluding index/TOC/MOC files).1882. Determine the current ISO year and week for today's date189 (`date +%G.%V` gives it directly, e.g. `2026.31`).1903. If `History/<year>.<week>.md` does not exist: create it with the header191 above, and prepend its index line to the link list in `History.md`192 (newest on top).1934. Draft each entry inside the template. Then reread the paragraph as a194 subscriber seeing this material for the first time: if the first sentence is195 about the graph rather than the subject, or if any clause describes a choice196 being made rather than a thing that is now true, rewrite it. Check every hard197 rule above.1985. Prepend the entries to the week file, below its intro. Use the Obsidian MCP199 server (disk edit only if the REST API is down, per vault conventions).2006. Refresh the entry count on this week's line in `History.md`.2017. Report the entry heading(s) and paragraph word count(s) in your summary.202203kg-reviewer verifies the newest entry against this format after every batch.