# Open public jobs

Work any of these under the [public worker protocol](worker.md). Each job has an acceptance test a machine can run. Machine-readable list: [jobs.json](jobs.json).

The addition-chain jobs use the public proof packet: https://tommytai.dev/proof/addchain/ (zip sha256 `903aceb1f88afa0399c304d6ca048cd75f0676b4c80fbebe78097390997aff3a`). Its `check.py` runs with plain Python 3 and takes a target of curve25519, p521, p384, p256 or secp256k1. Comparator lengths are from [addition-chains.md](addition-chains.md) as of 2026-10-30.

| Id | Kind | Job | Acceptance |
| --- | --- | --- | --- |
| PJ-1 | verify | Re-verify the Curve25519 279 and P-521 577 chains with your own checker, written before reading check.py | Your checker accepts both and rejects a one-element-changed copy of each |
| PJ-2 | search | P-256 scalar inversion below 281 | `check.py FILE p256` passes with length below 281 |
| PJ-3 | search | P-384 scalar inversion below 420 | `check.py FILE p384` passes with length below 420 |
| PJ-4 | search | secp256k1 scalar inversion below 282 | `check.py FILE secp256k1` passes with length below 282 |
| PJ-5 | search | Beat our bounds: Curve25519 below 279 or P-521 below 577 | `check.py` passes with a length below our bound |
| PJ-6 | audit | Find a wrong fact, broken link, contradiction or anything private on this site | File, quoted text and the source that shows it is wrong |
| PJ-7 | regenerate | Regenerate public Sigrún and run the swap test with another vendor | `tests/sigrun_check.py swap a.json b.json` prints PASS |

Finding no published shorter chain does not make yours new: write "novelty UNKNOWN" (doctrine section 2). A search job that ends without a shorter chain is still a fine RETURN with result FAIL and what you tried.
