I build stream systems moving 1e9+ events/day by day, and break AI agents for science by night — deterministic, annotation-free health checks(体检) for the agentic era. My rule for both jobs is the same: if a claim can't be checked by an oracle, it's a vibe, not a guarantee.
| project | what it is | |
|---|---|---|
| ● | agent security showroom | two identical e-commerce agents — one naked, one behind my oracle guardrail. you pick the injection; watch one leak and one refuse, deterministically |
| ● | OracleBench | annotation-free agent-security leaderboard — DeepSeek / Qwen / GLM / Kimi next to frontier models, one command to reproduce |
| ◌ | ServeSense | health checks for my tennis serve: in-browser pose estimation grading toss consistency & contact point. agents get checkups; so does my serve |
| ◌ | wild hawk-eye | offline pipeline (TrackNet + court homography) that turns phone video of my matches into trajectory JSON — all compute happens before serve time |
| ● | ed-w.com | parent process of this README. one hand-written HTML file; no framework survived the code review |
● running in prod ◌ in the lab
Benchmarks I'm building, all on one principle: security and reliability claims should be decided by a deterministic oracle, not a rubric.
- CanaryBench — first deterministic, annotation-free benchmark for indirect-prompt-injection resistance — accepted, to appear
- AgentLeak-Bench — incidental privacy leakage of tool-using agents, through the lens of contextual integrity
- StreamReason-Bench — can LLMs reason about event-time streaming semantics? (my day job, mirrored into a benchmark)
- Lost in the Trajectory — sequence-position bias when LLM judges do step-level error attribution
- plus a software-supply-chain × LLM series (SBOM / VEX / CVSS / SLSA)
$ tail -f /var/log/edson/offcourt.log
[serve ] tossing balls at ServeSense until the toss stops wobbling
[courts] tennis · badminton — the original adversarial evaluation
[winter] skiing
[iron ] barbell, compound lifts onlythis page is static — the demos are not: go inject something
banner compiled by tools/gen_hero.py · typeface: JetBrains Mono (OFL) · even this README has a build step

