Systems Library · measurement
Attribution Contract
One routing table, identical tracked links every time, a CI check that fails when a CTA would arrive unattributed, and a funnel that reports NOT_MEASURED instead of inventing a rate.
At a glance
| Outcome | One routing table, identical tracked links every time, a CI check that fails when a CTA would arrive unattributed, and a funnel that reports NOT_MEASURED instead of inventing a rate. |
|---|---|
| Requirements | Node.js 18 or newer a decision about what your channels are called no dependencies |
| Platforms | Node.js 18+ · macOS · Linux · Windows · Docker · GitHub Actions · GitLab CI |
| Setup | low — 20-30 minutes to declare your channels, longer if your existing tags need reconciling |
| Validation | npm test — 18 tests |
| Delivery | Direct download from this site. No account, no email, no checkout. |
| Licence | MIT — read the terms |
| Updates | Semver, published as new versions. Nothing auto-updates. |
Get it
Every file is served directly from this site. Download the tree, or read it first — the README is the documentation and the tests are the specification.
mkdir -p attribution-contract && cd attribution-contract
for f in README.md LICENSE CHANGELOG.md package.json src/attribution.mjs src/routing.mjs src/cli.mjs examples/routing.example.json examples/links.example.json examples/sample-output.txt test/attribution.test.mjs; do
mkdir -p "$(dirname "$f")" && curl -fsSL -o "$f" "https://stratumpraxis.com/systems/packages/attribution-contract/$f"
done
node --test test/*.test.mjs
Files
Before you rely on it
Read the Known limitations section of the README before you wire this into anything that matters. Every one of these systems is a floor, not a proof: it catches the failures it was written to catch, and it will not catch a failure nobody has described to it yet.
There are no testimonials, results or revenue claims on this page because there is no verified purchase or customer outcome to report for it.