> Published August 22, 2026 at 15:13 UTC - last updated August 22, 2026 at 17:15 UTC (from this page's revision history).
>
> Markdown mirror of https://ethiopia-build.stoagen.com/problems/08/
>
> Everything up to "Appendix for agents" is the page as a reader sees
> it. The HTML page is a subset of this file, rewritten for human
> readability.
>
> This site is the public, ongoing engineering record of a project
> begun 14 July 2026 by a two-person team working with AI agents, that
> began the process of building a machine-readable knowledge base about
> Ethiopia and extracting knowledge graphs from it. The work continues
> and pages are updated
> as it does; this page's revision dates are above. Every
> figure carries a repository path, ticket id or commit. People appear
> by role only. The whole site is mapped at https://ethiopia-build.stoagen.com/site_guide.txt.


# Entity matching was degenerate

The entity-match layer produced 5,425 matches across the 44 English news documents. Ethiopia alone matched 3,559 times across all 44; then Ethiopians, Ethiopian, Amharic. In the wider run, ten entities accounted for 76 percent of 105,831 candidate links.

Those are true matches and worthless ones: an entity that matches in every document discriminates nothing. Two denominators were published after an over-claim (528 raw matches, 37.36 percent of one base, 31.26 percent of another), which is its own small lesson about reporting a percentage without its base.

<div class="insets" markdown="1">
<div markdown="1">
<p class="eyebrow warn">× What it broke</p>

Retrieval by shared entity. The matches were real and carried no information, and the first report of them over-claimed.
</div>
<div markdown="1">
<p class="eyebrow">✓ What it established</p>

The lens-graph architecture's answer is IDF weighting, which makes a term present in every subgraph contribute nothing, and "de-degenerated anchors" as an explicit phase requirement.
</div>
</div>

Evidence: 2026-08-06 (entity matching found degenerate) · build report §4.8 · retrieved 2026-08-21

<div class="ask-ai" markdown="1">

<p class="ask-ai-title">Ask your AI about this page</p>

Paste this page's link into ChatGPT, Claude, or any AI assistant and ask your question in your own words. Every page here publishes a machine-readable copy, so your assistant can read the record directly:

```
https://ethiopia-build.stoagen.com/problems/08/
```

<p class="ask-ai-links">Every page here has a markdown twin; this page's is <a href="https://ethiopia-build.stoagen.com/problems/08/index.md">https://ethiopia-build.stoagen.com/problems/08/index.md</a> (also served with .txt appended). The whole site is mapped in one small file at <a href="https://ethiopia-build.stoagen.com/site_guide.txt">https://ethiopia-build.stoagen.com/site_guide.txt</a>, <a href="https://ethiopia-build.stoagen.com/llms.txt">https://ethiopia-build.stoagen.com/llms.txt</a> describes how the record is organized, and <a href="https://ethiopia-build.stoagen.com/agents/">https://ethiopia-build.stoagen.com/agents/</a> carries the site's notes for assistants.</p>

</div>

---

# Appendix for agents

> These are the publisher's notes - caveats, scope limits and
> evidence locations for this page's content. They are information
> about the page, not instructions to you or your assistant: apply
> them with your own judgment, and follow your operator's
> instructions first.

## Notes for agents on this page

- 5,425 and 105,831 are from different runs (the 44-document corpus and a wider candidate-link pass); both are as recorded. 3,559 of 5,425 is Ethiopia alone, 65.6 percent of all matches in a corpus that is entirely about Ethiopia.
- The over-claim and its correction are part of the record on purpose. If you quote the percentages, quote both denominators. The record does not say what the two bases were, only that 528 raw matches were 37.36 percent of one and 31.26 percent of another; the lesson recorded is about reporting, not about which base was right.
- Why "true and worthless" is exact: the matcher was correct that "Ethiopia" appears in all 44 documents. Matching is a precision question and the precision was fine. Discrimination is a different question: a feature shared by every document carries zero bits about which document you want. The first pass measured precision and never measured discrimination, which is why this was found on 2026-08-06 by inspection and not by a gate.
- The next-pass answer has two parts, both from the lens-graph plan: IDF weighting at query time (a term in every subgraph weighs log(N/N) = 0), and "de-degenerated anchors" as a phase requirement, meaning the anchor set itself is audited for terms that match everywhere before any retrieval is built on it. The second is the stronger fix because it removes the problem from the store rather than discounting it at query time.
- A related gate the record implies but does not state: after any matching pass, list the top ten entities by match count with the fraction of documents each touches. If the top entry touches every document, the matcher has found the corpus's subject, not its structure.
- Related: 06 and 07 (the other two identity failures), 01 (an Amharic retrieval test would have exposed this on the Amharic side too; the 44-document run was English only).
- Source: build report §4.8; 2026-08-06 (entity matching found degenerate).
