Engineer-practitioner. Civil-engineering technician (PGS) by education — I build software the way structures are built: with tolerances, inspection records, and a paper trail.
| Project | What it is | State |
|---|---|---|
| mscodebase-intelligence | Local-first code intelligence over MCP: BM25/FTS5 + AST graph, impact analysis, project memory, safe writes. Text-first by default, dense optional. Works with OpenCode and Zed. | v3.5.0 · Python 3.14 · MIT |
| MSPortfolio | A portfolio that is also an MCP server and a proof-of-work engine: every claim an agent makes is traceable to a data record, every chat answer shows the tool calls behind it. | live · GitHub Pages + Workers |
| gemma_agent | Telegram assistant for a small trusted circle — memory, routing, and tools only when needed. | Python |
Every number below is published with the command that regenerates it in
docs/FACTS.md.
Numbers that do not hold up are published too.
| Claim | Value | Limit |
|---|---|---|
Search quality, code, hit@5 |
0.900 | 48-query panel, measured 2026-10-25 — a snapshot, not re-measured per commit |
Fast mode, hit@5 |
0.729 | same panel and date |
| Tools registered / visible by default | 69 / 17 | count depends on MSCODEBASE_MCP_PROFILE |
| Language grammars | 31 | graph depth varies by grammar |
| Commit localization on external repos | 12/25 and 17/40 | grep scored 19/25 and 20/40 on the same corpora — it wins, and that is written down |
No 95% claim, no "beats RAG", no "better than grep": the measured numbers did not support any of them.
Those numbers are records, not adjectives. Seven A4 sheets hand the repository over the way a construction object is handed over: a cover and register, measured claims with a validity rule, a dated work log, the ADRs that carry the structure, the conditions of use, a defect registry where red is reserved for what is actually open, and an acceptance act.
- Negative results are first-class. Four rerankers (MiniLM, BGE-base, BGE-M3, Qwen3-0.6B) were measured and rejected: BGE-base cut
hit@1from 0.688 to 0.625 at 3.1 s per query, and Qwen3-0.6B answered in 29–55 s on a 16-query pilot withhit@10.500. The rejection stays in the log instead of being deleted. - A test that cannot fail is not a test. Before a fix ships, the implementation is broken on purpose to confirm the test goes red.
- Living documentation. Code and its docs change in the same commit; a stale number is a bug.
- "Tumbler" pattern. Technology does not dictate architecture — the database, the model, and the transport are swappable parts.
- PageRank vs RAG on a real codebase — semantic vs structural retrieval, with two rounds of self-correction.
- I asked one AI to fact-check another AI — cross-verification against confident hallucinations in security reviews.
- The silent vector contamination bug — thread safety and memory isolation in concurrent embeddings (OpenVINO).
The portfolio is an MCP server, so an agent can interview it instead of scraping it:
claude mcp add --transport http msp-portfolio https://msp-portfolio.mansio-dev.workers.dev/mcpAsk it anything about the projects above — it answers through tools (get_projects, analyze_stack, verify_claim, get_known_issues), not vibes.



