Skip to content

Releases: harshilmathur/RBI-Source-MCP

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 01 Jun 11:10

What's Changed

  • fix(correctness): close four HIGH-severity silent-data-quality bugs by @harshilmathur in #17
  • refactor(indexer,crawler): collapse duplicated upsert + bulk-runner + USER_AGENT by @harshilmathur in #23
  • test: backfill coverage on safety-boundary modules by @harshilmathur in #24
  • fix(security,perf): MEDIUM hardening — input caps, proxy CIDR gate, content-hash skip by @harshilmathur in #20
  • refactor: LOW + NIT + doc-drift cleanup by @harshilmathur in #21
  • fix(db): v3 detector ignores operator-added manual UNIQUE INDEX by @harshilmathur in #22

Full Changelog: v0.8.4...v0.9.0

Corpus 2026-07-06 (`latest-corpus`, refreshed daily)

Choose a tag to compare

@github-actions github-actions released this 05 May 08:59

Always-current corpus for rbi-source-mcp — the indexed RBI regulatory document database (hybrid FTS5 + sqlite-vec retrieval).

This release is a moving alias. Assets are clobber-replaced on every successful build. Consumers polling here never see a 404 window.

Latest build

field value
build_date 2026-07-06
build_mode diff
build_commit 4085a0eea0e47adbb5e022ecb17f402fc99794fb
build_run #28765315197
schema_version 1
embedding_model @cf/baai/bge-base-en-v1.5
embedding_dim 768

Cadence

  • Daily at 02:00 UTC: incremental diff build; ~5 min, ~50 CF Neurons.
  • Monthly on the 1st at 03:00 UTC: full rebuild; ~30 min, ~3000 CF Neurons. Catches silent RBI re-uploads (PDFs replaced without bumping the list-page date) that diff-mode can't see by definition.

Install

pip install rbi-source-mcp
rbi-source-fetch-corpus                   # pulls THIS alias
rbi-source-fetch-corpus --verify-sigstore # cryptographic verify

Verify

  • SHA256: shasum -a 256 -c corpus.sqlite.xz.sha256
  • Sigstore: the .sigstore.json bundles are signed by corpus-release.yml@refs/heads/main via GitHub Actions OIDC.
    cosign verify-blob \
      --bundle corpus.sqlite.xz.sigstore.json \
      --certificate-identity 'https://github.com/harshilmathur/RBI-Source-MCP/.github/workflows/corpus-release.yml@refs/heads/main' \
      --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
      corpus.sqlite.xz

Smoke gate

Each build passes a paired eval gate before publish:

  • absolute: ≥80% hit-rate on the eval suite
  • regression: <5pp drop vs the prior latest-corpus build

Eval JSON attached as eval.json (used by the next run's regression check) plus eval-current.json (this run's snapshot for forensics).

Forensics on prior corpora

Per-build provenance for this corpus is stamped inside the SQLite at corpus_meta (key/value rows: build_commit, build_run_id, build_mode, embedding_*, schema_version). For older builds: see this workflow's run history — each run carries a 30-day artifact with the corpus + eval.

v0.8.4

v0.8.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 May 06:50

What's Changed

  • v0.8.4 fix: security hardening + corpus-release housekeeping by @harshilmathur in #1

New Contributors

Full Changelog: v0.8.3...v0.8.4

v0.8.3

v0.8.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 May 12:13

Full Changelog: v0.8.2...v0.8.3

v0.8.2

v0.8.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 May 09:30

Full Changelog: v0.8.1...v0.8.2

v0.8.1

v0.8.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 May 08:42

Full Changelog: v0.6.0...v0.8.1

v0.6.0 — Cloudflare Workers AI embeddings

Choose a tag to compare

@harshilmathur harshilmathur released this 02 May 19:36

What changed

Production embedding moved from local sentence-transformers (bge-small @ 384-dim, in-process) to Cloudflare Workers AI (@cf/baai/bge-base-en-v1.5, 768-dim, over HTTPS).

Why

The local model carried a real cost on every cold-boot — 75-200s to download + load — which forced auto_stop_machines=off and a 2 GB Fly machine just to keep the embedder's hot pages resident. CF Workers AI is free at our usage tier and lets the runtime image drop everything torch-shaped.

Numbers

before after
Runtime image ~4 GB 89 MB
Cold boot embedder prewarm 75-200s 1.07s
Source-only deploy time 12-14 min 2-3 min
Fly machine memory 2 GB 1 GB
Eval gate (24 cases) 24/24 24/24
Warm query latency p50 / p95 588ms / 2.3s

Bake-off

Locally evaluated three options before shipping:

  • A bge-small @ 384 (local, baseline)
  • B bge-base @ 768 (CF) ← shipped
  • C bge-m3 @ 1024 (CF)

C looked appealing on paper but regressed the headline PPI loading-limit case (top-1 became 15.3.n audit text instead of 8.2.c loading-limit clause). B matched A on hit rate and on retrieval quality, with the bonus that we get the whole runtime-slimming win.

How embeddings get configured

Three env vars (no secrets) drive provider selection:

RBI_EMBEDDING_PROVIDER  local | cloudflare    (default: local)
RBI_EMBEDDING_MODEL     <model id>
RBI_EMBEDDING_DIM       <int>

Self-hosters who don't have CF creds can stay on the local path with uv sync --extra local-embeddings. The Fly image bakes the cloudflare defaults; CF auth (CF_ACCOUNT_ID, CF_API_TOKEN) lives in Fly secrets.

Weekly refresh

.github/workflows/refresh.yml runs Sundays 02:00 UTC: crawl → 5 indexers → eval gate (>=80%) → sftp + atomic-rename onto the Fly volume. App-scoped FLY_API_TOKEN limits blast radius to this app only.

Migration notes

Schema is forward-compatible — chunks_vec is now DIM-aware (vec0(embedding float[N]) where N comes from embedding_config.DIM). Forks running on the old 384-dim local path keep working without env changes.