Same DepositFactUseCase as POST /api/v1/facts, attributed as a human
identity from the Authentik proxy header. Cascading authentication state
carries the principal into the Blazor circuit; without a signed-in user
the form is replaced by a notice. Lists the raw sources awaiting the
nightly distill.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Both phases register their use cases and map their endpoints in the same host
files. The lab host test asserted exactly one labelled query, which held only
while no other test in the shared fixture wrote to output/; it now checks the
seeded query is among the rows.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
POST /api/v1/questions runs ask (rank + judge), selects the paragraphs that
carry probability mass, and streams one answer-model call over them. Below
the coverage gate no model is called and the response names the gap. With
save: true (signed-in user or API key) the answer lands in output/ as a
synth-shaped document with sources, confidence and the answering model.
The Answers page streams the same use case and lists saved answers.
Anthropic is the first IAnswerModel adapter; the answer model is chosen per
request or from Wiki:AnswerModels:Active.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Adds EvaluateUseCase, the C# port of bin/wiki_rank_eval.py: every output/
document with a question and a sources list labels a query, gold is the
cited slugs that still exist as wiki notes, and RankUseCase ranks each
one to report recall@k, hit-rate@k, MRR and a one-hop recall variant that
also credits a gold note reachable from a top-k note by wikilink or
related:. Exposes it as POST /api/v1/lab/eval (write-policy) and a new
/lab page for running it against any registered embedding model and
comparing runs side by side.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds / (search, with recent notes as default view), /notes/{slug}, /browse,
/raw/{slug}, /reports/{slug} and /maintenance, all InteractiveServer, built on
NoteQueries and IEmbeddingModel injected directly (no HTTP). Moves the former
status page from / to /status and factors its markup into a shared
StatusPanel used by both /status and /maintenance. Adds a MudDrawer/NavMenu
nav in MainLayout.
Wikilinks ([[slug]], [[slug|alias]], [[slug#heading]]) are rewritten to note
links (or a muted "no such note" span when unresolved) by a new
Wiki.Host.Rendering.WikiMarkdown, before the body goes through Markdig with
DisableHtml() so note content can't inject script. Fenced code blocks and
inline code spans are left untouched. Covered by WikiMarkdownTests.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>