Curated, high-bar diary of the valuable ideas surfaced by the community-PR wave, grouped into 10 themes with contributor credit and OPEN/CLOSED/HELD status, so good thinking survives PR closure. Captured during a full triage + hygiene pass over the open-PR backlog. Pure docs; no code impact. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
26 KiB
Community Ideas Ledger
A diary of the valuable ideas surfaced by the community-PR wave, kept so that good thinking survives even when the PR that carried it is closed. gbrain moves fast and the maintainer's "cathedral" rewrites supersede most individual PRs — but the idea behind a closed PR is often still worth something.
Bar for this file: an idea only earns a line if it is (a) still live on master and (b) genuinely valuable to gbrain users. Graduating an idea to
TODOS.mdis a higher bar still — it must serve the North Star (next-Postgres- for-memory: widest coverage, best-for-the-most-at-the-least) and be worth a maintainer-owned implementation. Most lines here will never graduate. That's fine.Status legend: OPEN = PR still open as a real merge candidate · CLOSED = PR closed, idea captured here · HELD = strategic, awaiting maintainer call. Provenance is credited to the contributor; scrub real private-network names per the repo privacy rule when anything here graduates to a public artifact.
Generated from a full triage of the open-PR backlog (436 community PRs), 2026-06-07.
1. Internationalization — non-English brains are second-class
The single biggest coverage gap for "serve a billion people." Several independent contributors hit the same walls.
- Configurable FTS language (#580/#581/#582, @rafaelreis-r) — OPEN, high.
Every
to_tsvector/tsqueryis hardcoded'english'(query side, trigger side, and no reindex path), so non-English brains run every search through the English stemmer. A coherent 3-PR set:GBRAIN_FTS_LANGUAGEconfig → migration recreating triggers with the chosen language →gbrain reindex-search-vectorto change it post-install. Strongest i18n candidate to graduate. - Full-Unicode slugs (#782, @tamagodo-fu; #514 zh, @JimmyJiang67) — HELD, high.
CJK slugs already work (
CJK_SLUG_CHARS); generalize to all scripts (Cyrillic, Devanagari, Hangul, …) and widen the remaining ASCII-only validators so non-ASCII slugs flow end-to-end instead of being generated then rejected. #514 also carries a corpus-drivenrelationships-zh.jsonverb dictionary forinferLinkType— a reusable artifact for Chinese relationship typing. - CJK entity extraction (#1637, @alkalide) — OPEN, high. Mention extraction is
ASCII-only (
TOKEN_RE,MIN_NAME_LENGTH=4), so 2–3 char Chinese/Japanese/Korean names are invisible to the gazetteer (there's an in-code TODO acknowledging it). CJK detection + lower min-length + single-token pure-CJK titles + substring pass.
2. Reliability — the daily-driver failure modes
Recurring, production-observed failures. Many are tiny fixes with outsized impact; these are the densest source of real bugs in the whole backlog.
- Embedding egress waste (#347/#460, @notjbg) — OPEN, high.
getChunksdoesSELECT cc.*, shipping the ~6KB pgvector embedding thatrowToChunkimmediately discards — ~19–22 GB/day egress on a busy Supabase brain. Enumerate the columns; add a CI guard. (#460 dup of #347.) - Body-keyed embedding reuse (#1424, @defenestrate2) — OPEN, high. Markdown
import re-embeds byte-identical chunks that merely shifted position, turning a
cosmetic edit into ~99K wasted re-embeds. Reuse by chunk-text hash like the code
path already does; add
--force+ a no-hash sentinel. embed --stalefull re-pull (#775, @kyledeanjackson) — CLOSED (partial on master), high. Re-pulled all chunks every cycle (~3TB/mo egress); steady-state brains should do near-zero work. Master added acountStaleChunksearly-exit; verify it fully closes this.- Config round-trip storm (#1694, @Omerbahari) — OPEN, high. A single query
fires ~85 serial single-key config
SELECTs — invisible on PGLite, ~85 network RTTs on a remote pooler. Batch + cachegetConfig(getConfigMany). - cgroup-aware worker sizing (#1244, @tyler3k1) — OPEN, high.
defaultWorkers()sizes fromos.totalmem()(host RAM), so containerized installs (Railway/Fly/Render/ Cloud Run/ECS) oversize the pool and get OOM-killed mid-import. Useprocess.constrainedMemory(). - Linux memory-pressure throttle (#556, @chengzehsu) — OPEN, high.
os.freemem()isMemFree(excludes reclaimable cache), so healthy containers reject every batch job. ReadMemAvailablefrom/proc/meminfo. - propose_takes never caches empties (#1218 @AdityaRajeshGadgil / #1760 @notjbg) —
OPEN, high. A valid
[]extractor result writes no cache row, so unchanged pages re-spend extractor tokens every ~5min cycle (57,885 calls/11 days observed). Sentinel row keyed on(source_id, page_slug, content_hash, prompt_version). - Prompt-cache opt-in on hot paths (#1761, @notjbg) — OPEN, high. Only ~4.9% of
input tokens hit the Anthropic prompt cache because the highest-volume cycle/extraction
call sites don't set
cacheSystem:truedespite gateway support. One-line opt-ins. - Autopilot reliability cluster (#232 @ianderse, #464/#465 @notjbg, #289 @RyanAlberts,
#477 @vinsew, #1935/#1936 @mdcruz88, #1906/#1891 @rayers/@jalagrange) — OPEN, high.
A family of distinct live bugs: argless
engine.connect()wipes saved config and crash-loops under launchd;cwd=/wrappers missbrain/.env; mtime-only lock probing blocks respawn for 10min after OOM; no backoff on the 5-failure suicide cap; disconnect-before-connectreconnect()bricks the engine on a transient blip; config accessors lack the retry wrapper. Pick the best fix per layer and land as a wave. - lint
--fixcorrupts mid-doc fences (#1417 @trinh-macbook, #1597 @chungty) — OPEN, high. Detector/fixer regex disagree, solint --fixstrips the closing fence of mid-document```markdownblocks and autopilot re-corrupts the page every cycle. Only unwrap whole-page fences. - backlinks worker defaults to
fix(#1853 @choomz; #1027 @sliday; #495 @23salus) — OPEN, high. Empty-payload backlinks jobs default toaction='fix', silently rewriting tracked markdown ("Referenced in" bullets) on every sync→embed→backlinks chain (129 files/day in the wild). Default tocheck; require explicit opt-in. Also fixes a duplicate-line accumulation bug. DATABASE_URLhijack (#1884, @awilkinson) — OPEN, high. A co-located app's genericDATABASE_URLsilently overrides the configured brain (wrong DB, or auto-migrates it). Fix precedence:GBRAIN_DATABASE_URL> config.json >DATABASE_URL.- Engine-switch strips config (#1088, @samchaudhary) — OPEN, high.
migrate --torewrites config to just{engine,url}, droppingembedding_model/dimensions/keys; migration "succeeds" but new embeds break. - Re-init silently corrupts the brain (#1060, @vincedk-alt) — OPEN, high. Flag-less
re-init ignores persisted
embedding_model/dimensionsand writes a wrong-shape OpenAI-1536 brain before the dim-check catches it. - IPv6-only direct URL (#1006, @diazMelgarejo) — OPEN, high.
deriveDirectUrlturns a Session-Pooler URL into an IPv6-only host, ECONNREFUSED on IPv4-only networks (the majority). Return null for pooler URLs. - HOME-isolation in tests (#205/#517/#534 @orendi84, #434 @lloydarmbrust) — OPEN,
high. The E2E suite spawns
gbrain init/importagainst the developer's real~/.gbrain/config.json, clobbering their live DB URL+keys. Isolate HOME to a tmpdir. (A footgun that bites contributors of this very repo.) - dim-aware embed write target (#1263, @DmitryBMsk) — OPEN, high.
upsertChunksalways writes the legacyembedding vector(1536)column, so brains on an alternate column (embedding_ze halfvec(2560)) fail with dim-mismatch on every write. - Oversized chunks silently unembedded (#1675, @lubos-buracinsky) — OPEN, high. The code chunker emits giant literals/template strings whole; the embedder rejects them and they vanish from semantic search. Cap chunk size so they stay embeddable.
- Token-vs-char truncation (#557 @chengzehsu, #990 @mgunnin, #1180 @kkroo,
#1281 @mmekkaoui, #1947 @100menotu001) — OPEN, high. The embed path truncates by
chars (
MAX_CHARS) not tokens, so dense pages still exceed the 8192/300K-token ceiling and loop forever on HTTP 400 withembedded_atnever cleared;isTokenLimitErrormisses OpenAI's real error string; llama-server's 32-input limit isn't capped; and--catch-up's unbounded budget overflows the 32-bitsetTimeoutand aborts after one batch. A "make embedding backfills never silently wedge" cluster.
3. Search & retrieval quality
- Keyword search ignores page titles (#1646, @jeades) — OPEN, high.
searchKeywordranks only chunksearch_vector, neverpages.search_vector(weight-A titles), so an exact-titlegbrain searchreturns nothing whilequeryfinds it. High-impact, tiny. code-defmisses most OO symbols (#1628, @rayers) — OPEN, high.DEF_TYPESomits method/constructor/field/struct/protocol, socode-defreturns 0 for most object-oriented code. Root-cause fix innormalizeSymbolType+DEF_TYPES. (Prefer over #1701's fallback-only approach.)- doc-comment column is wired but dead (#520, @Evode-Manirahari) — OPEN, high. FTS
weights
content_chunks.doc_commentabove chunk text but the column is never populated. Extract JSDoc/docstrings per symbol via AST and thread through import. - autocut weak-top collapse (#1863, @rayers) — OPEN, high. The fresh autocut
feature (#1682) normalizes the rerank gap by the top score, so a weak top (0.317→1.0)
looks like a confident cliff and rare cross-source queries collapse to 1 result. Add a
minTopScorefloor. - Graph-hop wikilink rerank (#717, @gwanghoon91) — HELD, high. Zero-token score-shapers (graph-hop wikilink rerank + query-token disambiguation) claimed +2.6/+2.8pt P@5/R@5 on BrainBench. Worth re-evaluating against the new retrieval cathedral's ranker rather than merging the old diff.
- Effective-date time filters (#1706, @mvanhorn) — OPEN, med.
since/untilfilter onupdated_at, so content dated to the past but edited recently is mis-filtered; filter onCOALESCE(effective_date, updated_at, created_at).
4. Extraction & the knowledge graph
- Obsidian wikilink → typed graph edges (#87 @franmaranchello; alias/title/basename
fallback #1188 @rwbaker) — OPEN/HELD, high.
[[wikilinks]]/![[embeds]]are invisible to the graph. Materialize them as typed edges with alias (frontmatteraliases:), first-H1-title, and basename fallback resolution (path-equality-only gives ~5.5% edge recall on real vaults). Master shipped global-basename (#1388); the alias/ title fallbacks are the still-novel part. - Schema-pack-aware link extraction (#1547, @billy-armstrong) — OPEN, high. The
link extractor's
DIR_PATTERNis a frozen 16-prefix const that ignores pack-declaredpath_prefixes, so default-pack installs silently lose wikilinks toperson/,writing/,wiki/*. Resolve prefixes from the active pack. - DB-source extraction (#1539, @afshaker) — OPEN, high. The cycle's extract phase
only walks the filesystem, so DB-resident pages (imported transcripts, remote-DB brains)
never get links/timeline and
brain_scoreis capped. Threadsource:'db'. - source_id threaded through fs-walk extract (#1719, @seungsu-kr) — OPEN, high.
fs-walk extractors omit
source_id, defaulting to'default', so thepagesINNER JOIN drops every row on non-default-source brains — silent 0 inserted. - extract
--stalepermanent-lag loop (#1791, @Nazim22) — OPEN, high. Pages last edited before the link-extractor version bump get stamped below the version threshold and re-flag every run (~97% pages permanently "stale"). StampGREATEST(updated_at, versionTs). - Plain-text NER for auto-link (#1565, @donogeme) — HELD, med. Plain mentions of
people (no
[[wikilink]]) never become edges. The opt-in idea is right; the shipped implementation (capitalized-bigram regex, Western-names-only) is too crude — needs a real NER pass to clear the graph-integrity bar.
5. Providers & the gateway
The AI-gateway + recipes + user_provided_models system already absorbed ~40
per-vendor embedding PRs (Ollama, Gemini, Azure, DashScope, DeepSeek, Zhipu, E5,
bge-m3, Copilot, Composio, Kimi, LM Studio, Mistral, Hunyuan, MiniMax…). The
residue worth keeping:
- litellm proxy unusable for chat (#1953 @miroslavb, #1938 @BKF-Gitty) — OPEN, high.
The
litellm-proxyrecipe declares only an embedding touchpoint (no chat), sochat_model=litellm:*fails validation andthinkdegrades to a misleading "set ANTHROPIC_API_KEY"; andbuild-gateway-confignever foldslitellm/openrouter/togetherkeys, so configured proxy auth goes out unauthenticated. Plus user-provided custom-dim embeddings are double-false-rejected in preflight. The general-OpenAI-compat-proxy story. - Matryoshka dims threading (#1072 @mgandal, #1240 @mike7seven) — OPEN, high.
Qwen3-Embedding returns its native dim (2560/4096) not the requested one because
dimensions:Nisn't threaded for the openai-compat path, hard-failing a 1536-dim brain. - "Freeze provider at init, clear vectors on dim change" (#100/#172, @niallobrien/ @nbzy1995) — CLOSED, med. A safety insight worth keeping even though the provider PRs are superseded: persist+freeze the brain's provider/dim at init so a later env change can't silently corrupt the vector space; clear stale embeddings on an intentional change.
- China-region provider coverage (#59 @Magicray1217, #1071 @AzeWZ) — CLOSED, med.
Make DashScope/DeepSeek/Zhipu first-class recipes that honor
provider_base_urls(the China-region endpoints) and provider batch limits — on-mission for global coverage. - Amazon Bedrock native (#1826, @naterchrdsn) / Jina asymmetric retrieval
(#1930, @Whamp) — HELD, high/med. The maintainer pattern prefers the universal
litellm-proxy over per-vendor native recipes, but Bedrock (AWS IAM credential chain) and
Jina's asymmetric
input_type=document|queryare distinct enough to warrant a call. - Local-first chat parity (#1854/#1855/#1858 @starm2010, #1423 @pabloglzg,
#1618 @punksterlabs) — OPEN, high.
FREE_LOCAL_CHAT_PROVIDERSdoesn't exist (only embed), brainstorm/cycle/takes hardcodeanthropic:claude-sonnet-4-6, and the openai-compatgenerateObjectpath silently fails on providers that rejectjson_schema. The "run gbrain fully local" cluster. - OpenRouter config key (#1714 @tmchow), OAuth bearer for AI providers
(#1312 @pabloglzg), API-key files (#570 @shawnduggan) — OPEN, med. Credential
ergonomics: config-file key (not just env), externally-minted bearer tokens, and
OPENAI_API_KEY_FILEso OAuth harnesses don't inherit a raw key inprocess.env.
6. Auth, federation & access control (security-adjacent)
These cluster into a real theme: runtime access control for remote/multi-tenant MCP beyond prompt discipline. Several are live security gaps (see the security list in the triage report) and should be treated as a coordinated design, not piecemeal merges.
- Clamp remote source overrides (#1372, @jlfetter1) — OPEN, high, SECURITY. A
remote MCP caller can pass
source_id(or__all__) toquery/get_pageto read sources outside their OAuthallowedSources— the param bypassessourceScopeOpts(CWE-285). Clamp to token claims, fail-closed. #1394 (get_page source_id) must land with this clamp, not before it. - Read-side prefix/federation enforcement (#1860 @choomz, #1790 @colin-atlas,
#470 @AdityaRajeshGadgil, #1508 @tim404x) — OPEN, high.
bound_slug_prefixesis enforced on write but not read; exactget_pageuses scalarctx.sourceIdwhile fuzzy uses the federation ladder; unqualified search can scan isolated--no-federatedsources. Unify on one fail-closed visibility predicate across every read surface. - Per-OIDC-user access tiers (#789, @0x471) — HELD, high, SECURITY. Map verified
OIDC end-users to
oauth_clients.access_tierdispatch gates + shape filters — real runtime access control. Pairs with multi-agent MCP hardening (#1316, @chipoto69, HELD). - Federated-read management CLI + admin UI (#1592/#1601 @bitak1, #1558 @flamerged) —
OPEN, high. No CLI/UI to inspect or change a client's
federated_readscope (raw SQL only today). Atomicarray_append/array_removeSQL to avoid read-modify-write races, plus an admin Sources tab. - Pre-registration flow flags (#894, @panda850819) — OPEN, high, SECURITY.
register-clienthardcodesredirect_uris=[], making the SECURITY.md-recommended pre-registration (DCR-off) flow unusable for Claude.ai/ChatGPT connectors. - RFC 9728
resource_metadata(#1410, @rayers) — OPEN, high. HTTP MCP 401s omit theresource_metadataparam the MCP auth spec + RFC 9728 require, so claude.ai/Cursor can't discover the auth server and never start OAuth. - Server-enforced memory groups (#1497, @oldmate99) — HELD, med. Audience-based
read/write via
memory_groups+ client-to-group assignment — strategic for hosted multi-tenant, but overlaps the existing source-isolation model; a design call.
7. Security hardening (must not be lost)
- Command injection in transcription (#245, @aliceagent) — OPEN, high, SECURITY.
transcription.tsshell-interpolates an agent-controlledaudioPathintoexecSyncffprobe/ffmpeg/rm -rf. Confirmed still present on master. Switch toexecFileSyncarg arrays +fs.rmSync. - Dotfile / skills-dir confinement (#418/#419, @garagon) — OPEN, high, SECURITY.
.gbrain-sourcewalk-up trusts any ancestor dotfile (source hijack on shared hosts);resolveWorkspaceSkillsDirnever canonicalizes (symlink escape).lstatownership/ symlink/world-writable checks + realpath containment. - Destructive reclone gate (#1705, @mvanhorn) — OPEN, high, SECURITY.
recloneIfMissingdoesrm+rename oversrc.local_pathwithout verifying it's gbrain-managed, so a re-pointed source can wipe a user's working tree. Gate behindisManagedRecloneTarget()+ reject... (The maintainer's own #1960 is the canonical landing for this class — cross-check.) - CORS preflight asymmetry (#983, @yashkot007) — OPEN, high, SECURITY. Preflight returns the full method/header surface unconditionally while the actual-request path gates on the allowlist — leaks allowed surface to non-allowlisted origins.
- jsonb double-encode corruption (#1584 @warkcod, #597 @vinsew) — OPEN, high,
SECURITY/integrity. Source-config and subagent writers
JSON.stringifyinto a::jsonbcast — the exact postgres.js trap CLAUDE.md forbids; corrupts source config (freshness/autopilot) and breaks dream synthesize slug-collection on real Postgres.
8. Developer experience & platform reach
- Windows / CRLF portability (#1294 @xwang4-svg, #1149 @samporter-31, #1554 @Sanjays2402,
#1396 @xuezhaolan) — OPEN, high. CRLF breaks frontmatter + skill-trigger parsing
(CI is Ubuntu-only so it never surfaces),
/dev/stdindoesn't exist, a POSIX postinstall one-liner hard-failsbun install, backslash bundle keys. A coordinated "first-class Windows" pass. (A working Windows binary + CI target #180/#181 is the prerequisite for the full story.) .gbrainignore/ per-repo exclusion (#1483 @eepaul; repo-local code filters #1011 @AndrewLauder;--respect-gitignore#1159 @jetsetterfl) — OPEN, high. Sync indexes every file with no ignore mechanism (data/,*.parquet, fixtures, vendored trees), bloating DB + embedding cost. gitignore-parity.gbrainignore+ per-sourceexcludePatterns. (See also the maintainer's walker-prune work; #1942 prunes vendor/dist/build.)- Monorepo sub-path sources (#774, @jeremyknows) — HELD, high.
--src-subpath(split repo into git-root + logical-source axes) +--excludeso one repo can hold N sources at subdirs. - MCP tool filtering (#747, @joelwp) — OPEN, high. MCP advertises all ~51 ops to
every consumer (~10K tokens of schemas, tool confusion);
GBRAIN_EXPOSED_TOOLSfilters the advertised surface. - Install-method detection for upgrade (#538, @brucek) — OPEN, high. The README's
own recommended git-clone+bun-link install detects as
unknown, sogbrain upgradeoffers three dead ends including a wrong npm package. - Runtime subagent defs (#1282, @dcarolan1) — OPEN, high. The plugin loader
validates
SubagentDefinition[]at startup but the handler never readsdata.subagent_def, so the persisted field is dead at runtime — callers must re-embed the full system body in every job. - macOS Tahoe PGLite workaround (#1671, @roysaurav) — HELD, med. PGLite's WASM engine crashes on macOS 26 (Apple Silicon); document the native Homebrew Postgres+pgvector fallback. Reader-valuable until the WASM crash is fixed upstream.
9. Capabilities & integrations (strategic — maintainer call)
These are net-new surfaces held for a product decision, not auto-closed.
- Alternative engines — SQLite/
bun:sqlite+FTS5 single-file backend (#291, @mvanhorn) and Neo4j GraphBrain REST backend (#594, @pkyanam). Both conflict with the two-engine lockstep invariant and the Postgres-for-memory North Star, but the zero-WASM single-file install story (SQLite) is strategically interesting. HELD. - Page versioning / soft-delete / read audit (#573, @cropsgg) — HELD, high. Snapshots with provenance, soft-delete tombstones + hard purge, read-path audit treating edits as derivative works. Ambitious cathedral-scope; maintainer-owned territory.
- Configurable embedding dimension (#1051, @vincedk-alt) — HELD, high.
schema.sqlhardcodesvector(1536); readembedding_dimensionsfrom config (default 1536). The canonical fix that dozens of local-provider PRs hack around. (Pairs with #1263.) - Transcribe skill (#1449, @RyanAlberts) — OPEN, high. Implements the empty
video/audio branch of
media-ingest(YouTube captions fast path + yt-dlp/whisper fallback), $0 by default. A genuine capability gap. - iPhone backup importer (#1733, @H4RR1SON) — HELD, med. Local-CLI-only importer for decrypted iPhone backups (contacts→person pages, iMessage→conversation pages); zero network, thin-client refused.
- Compounding dream phase (#509, @durang) — HELD, high. An LLM "7th phase" that
creates structure (orphan-mention people, knowledge gaps, concept-dup at cosine>0.92,
decay, incomplete pages) vs the deterministic phases. Overlaps
enrich --thin. - Codex-OAuth for dream (#977, @barronlroth) / dream gateway +
migrate-embedding-dim(#1013, @cxbitz) — HELD, high. OAuth-backed chat for synthesis; a command to resize the vector schema + clear incompatible embeddings. - Voice-extraction skill (#300, @harjclaw) — CLOSED, med. Mine the user's outbound- email corpus already in the brain to build a queryable writing-voice profile so agents draft in the user's voice. Overlaps soul-audit.
- MCP put_page parity + DB→markdown reconciliation (#438, @rayzhux) — HELD, high.
A frontmatter-only safe auto-link mode for remote callers +
GBRAIN_BRAIN_ROOTto render remote writes back to markdown so MCP writes reach the git source-of-truth. Touches the remote trust boundary — a design proposal, not a merge. - Recipe discovery convention (#1279, @ialmeida-jera) — OPEN, med.
~/.gbrain/recipes/auto-discovery +--external-dir, loaded untrusted to keep the command-spawn boundary. - Destructive-op audit trail + audit-factory (#1069/#1070, @vincedk-alt) — HELD, med.
Rotating JSONL forensic trail for hard-deletes + a shared
createAuditLoggerfactory.
10. Doctor & brain-health observability
- Queue dead-job visibility (#1185, @ethanbeard) — OPEN, high. A collector can
heartbeat green while all its jobs die in the worker (3561 dead in the wild) and doctor
has zero view into the minions queue. Add a cross-cutting
[queue]dead-jobs check. - Orphan-metric alignment (#1107 @colin477, #915 @xaviroblessarries, #1202 @rwbaker) —
OPEN, high.
get_healthcounts ingestion-by-design (daily/, briefings), soft-deleted, and hub pages as orphans, distortingbrain_score; CLIfind_orphansuses a different predicate thangetHealth. Unify on one islanded predicate with sensible exclusions. - doctor check-name registry drift (#1839, @mvanhorn) — OPEN, med. Several emitted
checks aren't registered in
doctor-categories, printingunknown check nameevery run; the drift guard only scanneddoctor.ts, missingonboard/checks.tsemitters. - Honest stale-lock hint (#1553, @Sanjays2402) — OPEN, med. doctor always says
gbrain sync --break-lock, which silently no-ops ongbrain-cyclelocks.
Cross-cutting observations for the maintainer
- The same bug was filed many times.
extract_facts.entity_hintsmissing anitemsschema came in ≥5 times (#812/#832/#847/#863/…, already fixed); the Postgres-singleton disconnect class a dozen+ times; sync no-op freshness, slug-casing, and the embedding- preflight false-reject each 5–15 times. A short "already fixed / known" note in the release notes or a CONTRIBUTING "before you file" list would cut the re-file rate. - The recipe system is working as a pressure valve — it correctly absorbed ~40 vendor
PRs into config rather than code. The remaining provider asks are about capabilities
the recipe schema doesn't yet express (asymmetric
input_type, Matryoshka dims, per-item RPM caps, alternative credential groups), not new vendors. - i18n (§1) and local-first chat (§5) are the two biggest "serve a billion" coverage gaps the community is repeatedly hitting and the best candidates to graduate to TODOs.