thepragmaticquant.com

About

I am Sankalp Gilda, a staff machine learning engineer and ML tech lead based in St. Petersburg, Florida. I hold a Ph.D. in astrophysics from the University of Florida, and before that studied physics and electrical engineering at BITS Pilani. My earlier research covered stellar-spectra parametrization, galaxy properties, and weather calibration under distributional shift.

thepragmaticquant is where I build tools and write about them honestly: not the polished version, but how the thing actually works and where it breaks. These run here now.

  • waitbus — a workstation-local event bus: your AI coding agents wait on events instead of polling — and hear each other fail.
  • stillpoint — when agents delegate work down a chain, nothing can tell when the whole cascade is actually done — stillpoint detects that quiet point, soundly.
  • driftbound — forward-error bounds for the matrix profile's streaming inner product — machine-checked in Lean and Coq, validated to a real earthquake record.
  • tsbootstrap — a time series bootstrap library for Python that resamples while preserving the dependence a plain bootstrap destroys, with conformal uncertainty.
  • fired-not-fed — AI-for-security benchmarks that score models on compiled code can report a number nobody can recompute. We took one apart: how well obfuscation resists AI decompilers.
  • evaluations — an agent reads a sentence about your tool and decides, on that sentence, to call it. Your tests read the function. What a passing suite is evidence of, and what it is not.

How this site is put together — the type, the figures, the reading apparatus — is in the colophon, and what has my attention this month is on now.

What I work on

I take consulting work across all of it. Some of these carry public artifacts you can open and check before you write to me; the rest are simply what I do, said plainly and with nothing standing in for a receipt.

  • LLM agents and agentic systems

    Agents that call tools, delegate to one another and run as separate processes: how they wait, how they hear each other fail, and how anything downstream learns that a delegation cascade has actually settled.

    Shipped waitbusstillpointevaluations

  • Retrieval and RAG quality

    Retrieval pipelines and the assistants built on top of them: what the retriever actually returns for the questions people ask, where chunking and reranking change the answer, and how retrieval quality gets measured rather than eyeballed.

  • ML evaluation and measurement validity

    What a reported number is an average over, which conditions were never stated, and whether a stranger can recompute the figure from what was published.

    Shipped fired-not-fedevaluations

  • Knowledge graphs

    Entities, relations and the schema that holds them: pulling a graph out of unstructured sources, keeping it consistent as it grows, and asking it the questions a vector index cannot answer.

  • Time-series forecasting and anomaly detection

    Forecasts and detectors on data whose observations are not independent: which dependence the method has to preserve, and whether an excursion is a real event or the pipeline's own drift.

    Shipped driftboundtsbootstrap

  • Uncertainty and numerical correctness

    Intervals that hold on dependent data, and the arithmetic underneath them: floating-point error bounds, accumulator drift in streaming kernels, and what a machine-checked proof does and does not cover.

    Shipped driftboundtsbootstrap

  • Agentic security

    The attack surface a tool-using agent opens, and the harder half of it: whether a security claim about an AI system can be measured at all, or only asserted.

    Shipped fired-not-fed

  • Market risk and quantitative finance

    Risk models and the numbers they hand to a decision: what the backtest was conditioned on, how the tail was estimated, and which assumption gives way first when the regime changes.

Everything here can be checked

No testimonials, no logos, no case studies written by the person who did the work. Every claim below points at the artifact behind it, and at the article that shows how it was made.

  • Cross-process coordination in a local agent fleet, where nothing can hear anything else finish or fail

    waitbus published-package

    waitbus 0.2.0 ships on PyPI with SLSA build provenance: a sigstore-signed in-toto attestation, generated by slsa-github-generator, whose sha256 digests match the wheel and the sdist PyPI actually serves.

  • Termination detection in an async agent mesh: proving a delegation cascade has globally stopped, rather than waiting out a clock

    stillpoint merged-pr

    A teardown deadlock diagnosed in Google's A2A reference SDK and fixed upstream: a2aproject/a2a-python PR #1105, merged on 2026-07-20.

  • Unbounded floating-point drift in a streaming numerical kernel that every benchmark times and nobody bounds

    driftbound preprint

    Forward-error bounds for the matrix profile's streaming inner product: five of the six headline results carry machine-checked proof obligations across Lean 4/Mathlib, Coq/Flocq and Gappa, with the Lean development pinned to the three classical axioms and no sorry, and the sixth stated as an open conjecture. The bound was run against a full Parkfield seismic record with zero violations.

  • Confidence and prediction intervals that are too narrow because the resampling scheme assumed independence the data does not have

    tsbootstrap published-package

    tsbootstrap is published on PyPI: version 0.7.1, MIT-licensed, 18 releases, shipping block, residual, sieve and wild resampling for dependent data.

  • A published benchmark number that cannot be recomputed, because the population it was averaged over was never reported

    fired-not-fed preprint

    A 96-paper census of obfuscation-strength reporting — 91 verified against full text, 37 reporting a strength number, 35 of those as a single bare aggregate — paired with a 164-function grid whose placebo negative control fired on 6 objects and changed zero per-function outcomes.

  • Eval suites that score the function and never read the tool description the model actually decides on

    evaluations published-measurement

    One unchanged eval suite, one model, 50 runs at temperature zero: 8 runs scored a perfect 1.000 and the remaining 42 scored 0.947.

Getting in touch

Email is the way in. I read every one and I answer the ones with a real problem in them, including the ones I am the wrong person for, which I will say plainly.

sankalp.gilda@gmail.com

Four things get a useful reply on the first exchange instead of the third.

  • What is breaking — the symptom as you observe it, not the diagnosis you have arrived at. A trace, a number that moved, a test that passes when it should not.
  • The stack — languages, frameworks, model providers, where it runs, and whether I would be reading your code or only your outputs.
  • The team — who owns the system, who would be in the room, and who has to be convinced by whatever comes out of it.
  • The timeline — when this has to be settled, and what happens if it is not.
Email me about an engagement

What breaks, what it runs on, and by when. sankalp.gilda@gmail.com

Elsewhere GitHub ↗LinkedIn ↗Google Scholar ↗X ↗ Blogroll