Specification
OrderedStrength.
What it is, how it works, and what it proves. One page, designed to print.
What it is
A strength coach for iPhone that changes your session while you are in it, based on how the sets you have already done compare to what it expected.
It writes things down before you lift. Before each set, it seals a prediction: the load it expects you to be capable of, given everything it knows about you. That prediction is committed with a cryptographic hash. You can check after the fact that nothing changed.
It grades itself. After each set it compares the result to the prediction, records the result against it, and the algorithm reads from that record when it makes the next prediction. The published accuracy rate goes on the record page once whole months have been graded, and no month has been yet.
Technical specification
Platform
iPhone (iOS 17+)
Computation
On-device
Account required
None
Training log leaves device
Never
Commitment scheme
SHA-256
Nonce
32 random bytes, from the phone's own secure generator
Daily anchor
One combined fingerprint per day, a Merkle root
Timestamp proof
GitHub commit date
What it proves
Binding: changing a prediction after it is sealed requires a SHA-256 collision. That is about 2128 operations, a number with 39 digits, which is another way of saying nobody has ever done it and no machine that exists could.
Hiding: the commitment discloses nothing about the prediction. A 32-byte cryptographic nonce means the prediction space cannot be brute-forced.
Timestamp: one Merkle root is published per day to a public repository, by a job running inside that repository rather than on our server, so a token stolen from our server cannot write there. A fingerprint inside a published day existed no later than the moment that day closed, and GitHub's own record of when that push happened is the evidence, not ours. It dates a prediction to the day. The seal and the set fall inside the same day, so it does not on its own order one against the other.
Open verification: the verifier at orderedstrength.com/verify/ requires no account and stores nothing. Anyone can check any receipt.
How to rebuild a daily root
Each published day names a scheme, os-merkle-v1-sha256, and the file beside it lists that day's fingerprints. These four rules turn that list back into the published root, and nothing else is needed.
1. Sort the fingerprints as text, so the root does not depend on the order they arrived in.
2. A leaf is SHA-256 of a single zero byte followed by the ascii text of that lowercase 64 character fingerprint. The text, not the bytes it decodes to.
3. A parent is SHA-256 of a single one byte followed by its left child then its right child. The two different leading bytes are what stop a leaf being passed off as a parent.
4. An odd node moves up unchanged. It is never duplicated to make a pair. Duplicating it is the common shortcut and it is the one that lets two different lists produce one root.
Repeat rules 3 and 4 until one node is left. That node is the root printed on orderedstrength.com/record/. Four independent implementations of this are kept deliberately, in the app, on the server, in the publishing job and in a cross-check, and the publisher refuses to publish a day whose root does not match its own arithmetic.
Contact and status
Website
www.orderedstrength.com
Accuracy record
orderedstrength.com/record/
Status
In testing
Support
orderedstrength.com/support/