Ludwig J. Marx

Projects

Public

GitHub API, read 2026-09-21 09:10 UTC, at render · no longer public = named without a link

OnesteinRust · Apache-2.0 OR MIT · public, v0.1.0 pre-release

0 stars · 0 forks · pushed 2026-09-18

  • A messaging protocol stack for networks that are slow, intermittent, censored or absent, and its implementation. The same message travels over Tor, Bluetooth, a local network or a memory card. No server has to exist, nobody hands out an identifier, and an identity can be rebuilt from a seed after the last device is gone.
  • The library opens no file, no socket, and reads no clock. Randomness and time arrive as arguments, every piece of state goes out to the caller and comes back. That is what makes the protocol testable and the application's storage its own problem.
  • Hybrid key agreement, X25519 and ML-KEM-768. Authentication by decapsulation rather than by signature. Device certificates signed twice, Ed25519 and ML-DSA-65.
  • Nine specification documents, eleven crates plus a relay daemon. It is the protocol and the library, not a messenger, and it will not become one.
  • Started as a second implementation of an existing protocol and was rebuilt as its own design. What that costs, including the loss of interoperability, is in docs/protocol-gaps.md.
mesuraPython · MIT · public, v0.1.0 on PyPI

0 stars · 0 forks · pushed 2026-09-19

  • Asks what a reported performance figure supports, given the sample behind it. Metrics carry their sample size and interval, the ledger models execution delay and capital lockup, and the cost model states the breakeven hit rate.
  • Compares two Sharpe ratios by Jobson-Korkie with Memmel's correction, with the test's own level checked by Monte Carlo.
  • Run against a published multi-agent trading paper, one layer at a time. Factor choice sits at chance, median rank 51 percent across 11 windows, and the rank correlation from one window to the next is -0.111: a debate redistributes information, it does not create any. A panel returns exposure rather than a verdict, and an adjudicator took the arguing side in 10 cases out of 10.
  • None of that refutes the paper's result, which holds against chance at 1 in 20,000 coin flips. What it refutes is the explanation.
  • A control period was the finding nobody went looking for: 20 of 20 before the cutoff, 20 of 20 inside the test window, and 19 of 19 after it, where no training run reaches. The model looks things up. Without the control, a property of the connection would have been reported as a property of the model.
  • Filing data is point-in-time: only what had been filed by a given day, and the last filing per period. The SEC contact address is the caller's, there is no default, and a test reads the script's own source and rejects any address found in it.
  • 404 tests, mypy strict across 19 files, a matrix over Python 3.12, 3.13 and 3.14. Published from the tag over OIDC, no token: a tag has to contain the workflow that checks it.
mesura-webTypeScript, no runtime dependencies · MIT · public, v0.1.2

0 stars · 0 forks · pushed 2026-09-19

  • What a list of closed trades supports: win rate, profit factor, payoff ratio and expectancy, each with the number of trades behind it and the range that sample allows.
  • Runs in the browser. Nothing is uploaded, requested or stored, and the network tab shows it.
  • Every figure is computed twice, here and in Python by mesura, and the page prints both columns. A resampled bound is identical to the last bit; a Wilson bound agrees to about 1e-16, because the z value goes through the platform's libm on one side. The page names which of the two it is.
  • It refuses rather than inventing: a profit factor with no losing trade, a bootstrap where more than one resample in ten is undefined, a table whose columns are not named. Each refusal is rendered where the number would have been, with its reason.
  • Live on this site under /demos/track-record.
factorbasePython, pandas · MIT · public

0 stars · 0 forks · pushed 2026-09-19

  • 192 stock-screening factors: 74 indicators, 57 chart signals, 55 fundamental ratios, 6 composites.
  • Each entry states the formula it is defined by, and ships an implementation tested against that formula.
  • Two packages will both hand you RSI(14) and disagree, because one smoothed with Wilder's 1/n and the other with 2/(n+1), and neither wrote it down. Every such choice is stated next to the formula.
  • At least one test per family compares against something written outside the package. Four arithmetic defects once survived 279 self-consistent tests, because every test recomputed them faithfully from the same wrong premise. Wilder's published example found all four in an afternoon.
  • Checked against R's TTR in CI. No data source, and there will not be one.
  • On PyPI as factorbase 0.1.0, MIT, Python 3.11 and up.
vigilGo, SQLite, TypeScript extension · Apache-2.0 · public, v0.1.1 released

0 stars · 0 forks · pushed 2026-09-18

  • Self-hosted signal layer for long-cycle B2B sales: a timeline per account, and a score built from the weight and the age of what is on it.
  • Returns the contributions the total is made of, and names every signal kind it had no rule for, so an account that is quiet and a scoring model that understood nothing do not produce the same empty list.
  • Sends no message on your behalf and makes no request to LinkedIn. The absence is enforced by a check in CI.
  • 74 Go tests, 14 extension tests, 51 checker tests across eight checkers. DCO verified in CI; third-party notices generated from the build matrix.
  • The release workflow calls the checks via workflow_call and depends on them via needs, so a tag cannot ship something unchecked.

Closed

listed by what they do · no links · no client names · no screenshots

Application tracker with a recomputable matching scoreTypeScript, Next.js, Postgres · closed · in production
  • Asking a language model how well a CV fits, 0 to 100, gives a number nobody can recompute. The work is split instead: a model judges each requirement of the posting on its own, a deterministic stage turns those judgements into a score.
  • Same input, same result, including after a model change.
  • Runs on its own domain against managed Postgres. Closed and access-gated while billing is not switched on: without it the operator carries every model call of every user, uncapped.
  • Three arithmetic defects were found in the billing chain, none of them visible from the interface: a hard-coded exchange rate 5.63 percent off the central bank's, a model price 50 percent too high at the tier with the most volume, and a markup that was estimated rather than derived. Rates and prices are fetched daily now, and a call is refused rather than booked against a substitute value.
  • 104 tests in 10 files, three probe runs.
Document and image forensics benchPython · closed · feasibility stage
  • Inspects what a document carries besides its content: EXIF, PDF metadata, fold marks, and the yellow machine identification code a colour laser printer leaves on every page.
  • Dot detection runs on the periodicity of the column sum. Threshold 0.20, between the highest false positive at 0.090 and the lowest true positive at 0.364. 18 tests.
  • Above noise sigma 15 the checker misses a grid that is present, and reports a hint rather than a hit, because a silent miss here is the expensive failure.
  • The widely repeated claim that printer dots identified a particular US leak source was checked against the FBI affidavit and does not hold; the affidavit names fold marks, a print audit and email traffic. The project description was corrected accordingly.
Two internal Next.js applications and one agent systemTypeScript, Next.js, Postgres, Python · closed · in production use
  • Closed because they hold client records and account data, not because of the code.
  • Available for review in a call, not as a link.