Fourth-year undergraduate (senior) in Network Engineering at Guangzhou University. I build tools that audit deployed AI systems and run preregistered empirical studies in RL.
My contribution history starts with an early exploratory phase — small docs and fixes spread across many RL/ML repos. Since then I've deliberately narrowed to a few in-depth upstream fixes (below) and to my own research artifacts; the broad early PRs are left as-is rather than hidden.
Applying for Fall 2027 PhD entry (applications due Dec 2026 – Jan 2027) in Embodied AI / Reinforcement Learning / Robotics.
Academic Homepage | Blog | CV | ldz@e.gzhu.edu.cn
TransitTruth — open-source auditing tool that verifies whether an AI API relay actually serves the advertised model, using statistical behavioral fingerprints (chi-square / KS tests, Bayesian updating). A guided offline demo walks through the check with bundled seed data; the real audit runs locally. The technical report measures the two baselines' distribution distance (gpt-4o vs gpt-4o-mini, TVD up to 0.90) and, separately, the combined pipeline's in-distribution resubstitution posterior (91.3% on the baseline's own reference — self-consistency, not held-out accuracy). Complements single-token fingerprinting work by focusing on fine-grained same-family distinctions. Tech Report (PDF) · Live Demo
wm-audit — preregistered single-machine CPU audit suite that disentangles world-model perceptual fidelity (next-frame MSE / SSIM / NLL, plus fixed-filter stand-ins for LPIPS / rollout FVD — deterministic random-conv filter banks, not learned VGG/AlexNet backbones) from control utility (whether a planner can actually solve the task). A locked-scale run on one env (pixel_nav, 5 seeds × 3 capacities, 200k train steps, n=15) met the pre-registered H1 threshold, but pixel fidelity barely tracks closed-loop return (ρ=0.02; 95% CI crosses zero, Holm-adjusted p=1.0) — a weak, non-significant signal, not an established finding. H2 was contradicted (control-relevant diagnostics ρ=−0.10, below the 0.6 threshold), and H3 reversed: INT8 compression degraded the pixel composite (0.78) more than the control/calibration composite (0.42), the opposite of the pre-registered direction. Diagnostic collinearity fell from five identical rank patterns at n=9 to two at n=15. Both pre-registered environments are now executed at locked scale (2/2): the second one, dm_control.cartpole_swingup, ran on GitHub-hosted runners (5 seed shards, 200k train steps × 100k collect steps × 3 capacities) and repeated the pattern rather than rescuing it — H1 ρ=+0.13 with a 95% CI of [−0.48, +0.69], H2 +0.30 against the 0.6 bar, H3 reversed again at 1.58 vs 1.37. Two of the nine diagnostics are unmeasurable in that environment and are reported as null rather than as numbers, and the return axis carries only 9 distinct values across the 15 float rows; both limits are machine-readable in the committed result JSON.
embodied-offpolicy-study — a Soft Actor-Critic implementation written from scratch in PyTorch (no Stable-Baselines3), run as a preregistered two-arm controlled study with a logged third-arm (FixedAlpha) amendment on Hopper-v4 (CPU, 120k env steps, 3 seeds/arm): Baseline (reward scale 1.0) vs RewardScaled (0.1) vs FixedAlpha (automatic temperature off, scale 0.1, α fixed at 0.2). Mean return ± SD (final window 105k–120k, n=3/arm): Baseline 1085±698, RewardScaled 1118±623, FixedAlpha 1404±632. Welch p: Baseline–FixedAlpha 0.59, Baseline–RewardScaled 0.95, FixedAlpha–RewardScaled 0.61; ANOVA F=0.22, p=0.81 — no statistically distinguishable effect detected (n=3). At 60k the reward-scaled arm looked ~3× better; extending to the preregistered 120k budget and adding the fixed-temperature control arm overturned that apparent gain as early seed noise.
rl-deploy-bench — cross-platform RL deployment and benchmarking toolkit. Export SB3 policies to ONNX/TorchScript and quantize to FP16/INT8, then benchmark latency, throughput, and accuracy across GPU and CPU from one config-driven CLI with auto-generated HTML reports. An experimental standalone TensorRT engine-builder is included but not yet wired into the benchmark harness; Jetson/edge is a target deployment path, not yet measured on device.
Merged — code fixes (5)
| Project | PR | Contribution |
|---|---|---|
| microsoft/TextWorld | #377 | Fixed env.step crash on multi-command input (non-greedy score parsing + unit tests) |
| shmuma/ptan | #57 | Fixed Gymnasium 5-tuple API compatibility in experience sources |
| learnsyslab/gym-pybullet-drones | #319 | Converted print()+exit() error paths to raised exceptions across 8 files |
| MichalBortkiewicz/JaxGCRL | #65 | Fixed XML path resolution across all arm manipulation environments |
| RLE-Bench/RLE-Bench | #9 | Recorded per-trial status/failure reason/timing in summary.json; fixed embedded final-step reward resolution. The maintainer closed the issue this addressed (#8) as completed, citing "fixed by #9" |
Merged — community & documentation (5, not code fixes)
- Eclectic-Sheep/sheeprl #340 — CONTRIBUTING guide and Code of Conduct.
- Algorineko/AgenticArXiv-RL #72 — MIT LICENSE, CONTRIBUTING, Code of Conduct, and CI workflow.
- FluxVLA #122 — typo rename
bloat16→bf16in the BFloat16 support check. - FluxVLA #123 — community docs: CONTRIBUTING, Code of Conduct, CHANGELOG, issue templates.
- scadastrangelove/awesome-ai-security-tools #165 — added TransitTruth to the WATCHLIST (merged 2026-10-21).
Under review (not yet merged) — selected code PRs in upstream RL/ML infrastructure
| Project | PR | Contribution |
|---|---|---|
| thu-ml/tianshou | #1315 | Fixed pickled policy restore under PyTorch 2.6 weights_only default |
| ContinualAI/avalanche | #1701 | Fixed MASPlugin raising on zero loss (falsy check) |
| uoe-agents/epymarl | #92 | Fixed registration of multi-digit versioned PettingZoo envs |
| vllm-project/vllm | #57400 | Fixed system_fingerprint=null emitted under fingerprint-mode=none |
| huggingface/datasets | #8633 | Accepted pathlib.Path in load/save_to_disk |
| huggingface/diffusers | #14796 | Fixed undefined attribute in TangentialClassifierFreeGuidance |
| google/brax | #676 | Fixed EpisodeWrapper metrics accumulation with action_repeat |
| AI4Finance-Foundation/ElegantRL | #488 | Fixed argmax→max in get_cumulative_rewards |
| Farama-Foundation/PettingZoo | #1465 | Fixed agent selector reinit in tictactoe reset |
| pandas-dev/pandas | #68968 | Fixed to_html href escaping with render_links + escape |
Other early exploratory PRs across smaller RL/ML projects remain open or unanswered — part of the broad phase noted above, not deep work.
Small, focused, offline tools that keep RL reporting and relay setup honest. They are zero-dependency local utilities (not services), each with its own test suite.
- seedlot — aggregate per-seed RL logs into mean ± std, IQR and 95% CI; blocks single-seed superiority claims.
- policy-parity — compare FP32 vs quantized/exported action logs (MAE, cosine, tolerance) before deployment.
- claim-boundary — check a draft's wording against the scope actually measured.
- relay-preflight — offline hygiene scan for relay configs (inline keys, Bearer, plaintext http).
- dsh-model-probe — a DSH plugin that runs the local model-authenticity check from a settings page.
Research notes and figures from the off-policy study: GitHub Pages notebook.
- Fixing a bug in Microsoft TextWorld — one line of regex and the multi-command parsing behind it: root-cause writeup of merged PR #377. A greedy regex with DOTALL stitched two state blocks into one when a single line carried multiple commands.
- CI passed green but the package wouldn't import: numpy and scipy missing from requirements: postmortem on a dependency-declaration bug found while running the TransitTruth audit pipeline — tests on a dirty machine passing says nothing about a clean install.
RL / Robotics — PyTorch · Stable-Baselines3 · Gymnasium · MuJoCo Deployment — ONNX · ONNX Runtime · TorchScript · INT8/FP16; TensorRT engine-builder written but not yet wired into the benchmark harness Systems — Python · C++ · Linux · Docker · Git · CI/CD; CUDA (learning — deployment code written, no GPU-measured results yet)

