Every question below was asked of the ledger by a real caller and logged by AgentQueryLogger; every answer is the citation the ledger itself returned at the time. Nothing on this page was written by hand or by a model — there is no answer text here that the store did not already contain.
Generated by tools/faq-builder.py from
motlogs_agent_queries — 20,781 logged calls spanning 2026-05-25 → 2026-08-09.
No model was called to produce this page and no answer text was generated; the builder only ever
selects between hits the store already recorded. Regenerate it, do not edit it.
From /api/query-stats
Value
calls logged, last 24 h
527
calls logged, last 7 d
14,067
median latency, 24 h
14 ms
clusters the failure job flags
5
where is the Anthropic API key configured and which service calls the Claude API
2 other phrasings of the same question
Anthropic API key Claude client usage
Anthropic API key Claude client
Answer the ledger gave
motmaster-openbrain/MOTLogs.ArchitecturalLedger/Program.cs repo openbrain ·
confidence 0.85 ·
chosen by 18 of 36 askings
Asked
36 separate times
(from 36 logged calls)
When
first 2026-08-02 · last 2026-08-09
Source of the answer
chunk 1c2272ee7282… · logged query id 13612611eace40e5a9f81484526291fcrecorded 2026-08-07
motmaster-sql/SQL/64_mot_master_agent_seed.sql repo sql ·
confidence 0.93 ·
chosen by 10 of 11 askings
Asked
11 separate times
(from 11 logged calls)
When
first 2026-08-03 · last 2026-08-07
Source of the answer
chunk cb1377669884… · logged query id b6bee39c1b5849cc9c972b50fe777c38recorded 2026-08-07
Operational FAQ — hand-verified against source, not mined
The entries above are auto-mined from real query traffic, as the note at the top of this page describes.
The six below are a different, honestly-labelled category: questions about the ledger's own behaviour
that don't show up as query text, answered by hand and checked against the code cited beside each one — not
generated by a model and not selected from recorded hits.
why did my query return “⚠ file changed since indexed”
A hit carries an indexed_sha — the commit the chunk was indexed at (WP4.1). When the caller
asks for staleness checking and a live git diff --quiet <indexed_sha>..HEAD -- <file>
against the working tree finds a difference, the hit's meta row gets a trailing
· ⚠ file changed since indexed marker. It means exactly what it says: the file has moved on
since this chunk was embedded, so the snippet you're reading may not match what's on disk right now. It
never appears on a hit with no indexed_sha (every pre-WP4.1a chunk) — the absence of the
warning there is not a claim of freshness, just an absence of the signal. The fix, if the file matters, is
sync_ledger or waiting for the next scheduled ingest.
src: McpService.cs (SpanFirstHitHeader, the
"⚠ file changed since indexed" literal)
how do I search my worktree (root)
Pass the absolute path of your checkout as root on query_ledger,
read_span or symbol_lookup (or, for the precise C# lane, on
find_definition/find_references/find_implementations, which also
accept a plain repo id). It must be registered first —
POST /api/admin/overlay/register {root}, loopback-only — after which a file that differs
between your checkout and the indexed mirror is served from your checkout, marked
⊕ from your checkout. Editing inside an accepted worktree shape
(.claude/worktrees/*, ws-*/motmaster-*, wt-*) auto-refreshes the
overlay a few seconds after every Edit/Write via a PostToolUse hook, so there's usually nothing to trigger
by hand. An unregistered or unaccepted root is ignored with a one-line hint rather than an error — it never
turns a good query into a failure, it just quietly serves main's version instead.
why does find_references say the precise lane is unavailable
Two different messages mean two different things. {"error": "precise lane disabled
(Precise:Enabled=false)"} means the whole precise lane is off in this deployment's config — every
call to any of the three precise tools returns this, and no root will ever work until an operator flips
Precise:Enabled=true. A per-call{"error": "…", "truth": "none", "hint":
"fall back to reference_set (text) or grep"} — with truth:"none" — means the lane is on
but your workspace is degraded: the MSBuildWorkspace for that root failed to load (missing SDK,
unrestored NuGet packages, a bad root value). That shape exists specifically so a broken
workspace can never be misread as "the symbol doesn't exist" — a real "no such symbol" result instead
carries truth:"compiler" plus a workspace count, which the unavailable shape never does. If you
see {"loading": true} instead, the workspace is still warming up — retry.
src: McpService.cs (PreciseDisabledMessage,
PreciseUnavailableJson, LookupResultToJson) — todo 72936320, fixed
in #191
what does “(no intent)” mean
Every chunk is supposed to carry a one-line intent from the Groq analysis pass. A hit heading printing
- (no intent) instead means that field is empty for this specific chunk — most often because
the chunk pre-dates enrichment, the Groq call was budget-skipped, or (for a checkout-overlay hit) the
overlay path builds a chunk locally without an analysis pass at all, which stamps a placeholder intent of
its own ("(no intent — overlay)") rather than calling Groq inline. It's an honest gap, not a
broken query — the rest of the hit (path, coordinates, repo/layer/pattern) is unaffected.
src: McpService.cs (SpanFirstHitHeader, the
"(no intent)" literal) · IngestionEngine.cs (the overlay placeholder
ChunkAnalysis)
why was I denied by the gate, and what should I ask instead
The PreToolUse consult gate (see Governance layer) denied a code-touching
call because it has no record of a recent enough query_ledger call for this session/agent. The
fix is always the same shape: call mcp__mot-ledger__query_ledger with the actual question you
need answered — naming a symbol (a type, method, config key, table, or endpoint) if you
know one — then retry the denied call. Do not narrate what you were about to do; that isn't a question and
the gate will deny again. In hard mode a consult is valid for 20 minutes and up to 20 gated
calls; in first-touch mode one consult unlocks a repo permanently; in advisory
mode you're never actually denied, only reminded. Which mode is active for your session depends on the
gate A/B currently under way — see Governance for the arms and schedule.
src: motmaster-infra/claude-hooks/require-ledger-consulted.ps1 (the deny
text) · docs/ROUTING_GUIDANCE.md
where are the nightly metrics
/docs/metrics/ — a self-contained "nightly ledger utilisation metrics" page (WP0.1),
plain HTML/JS with no dependency on the rest of wwwroot, generated by a nightly 02:30 UTC
cron job. It tracks the ledger-usage audit figures (query volume, tool mix, gate traffic, tree-search rates)
night over night, dated, so drift shows up as a trend rather than a single snapshot.
src: wwwroot/docs/metrics/index.html
How an entry gets here
Only questions count. Calls to tools that take a file path
or a symbol anchor (orient_me, why_query, tests_for) log
that anchor into the same field as a question. Those are filtered out by shape, not by trust.
Repeats at machine cadence collapse. Rows with identical text
less than 60 s apart become one asking occasion, so a harness loop cannot
manufacture a popular question. "Asked n times" on this page means n separate
occasions, and the raw call count is shown beside it.
Phrasings are clustered, not matched. Grouping is cosine
similarity at 0.85 over the query vectors already stored with each record — the
same threshold and the same greedy algorithm FailedQueryClusterJob uses, so the
admin page and this page agree on what counts as the same question. Nothing is re-embedded.
Clustering ran over the 500 most-asked of 6,753 distinct
phrasings; the never-repeated tail is not clustered, because an entry needs recurrence anyway.
The answer is chosen, never written. Among the recorded hits
for a cluster, the entry takes the file that the most separate askings independently landed on;
the ledger's own confidence only breaks ties, and recency breaks those. Agreement leads because
the stored confidence says how sure the classifier was about the chunk it labelled, not that the
chunk answers the question — ranking on it alone picks flukes, which is why every entry above
prints how many of its askings chose the file.
A cluster with no recorded answer is dropped. It does not
become an entry with a plausible-looking answer. That is why this page can come back empty.
Open Brain — the MOTMaster Architectural Ledger · generated 2026-08-09
from 7,409 asking occasions across 414 question clusters