Skip to content

Unpacking your kit

Four commands. Nothing to install, no account, no login.

Release 1.0.0

You should have a release key — Stripe showed it on the confirmation page immediately after payment. Keep it somewhere you will still have it in two years; it is the only thing standing between you and this archive, and there is no account to log in to and recover it from.

If you do not have it, skip to lost your key at the bottom. It is a two-minute fix and it is not a problem.

1. Download the encrypted archive

toledo-migration-acceptance-kit-1.0.0.zip.enc

This file is public and safe to be. It is AES-256 ciphertext, so the only thing that makes it useful is your key.

2. Decrypt it

macOS and Linux, in the folder where you downloaded it. openssl is already installed on both.

openssl enc -d -aes-256-cbc -md sha512 -pbkdf2 -iter 600000 \ -in toledo-migration-acceptance-kit-1.0.0.zip.enc \ -out toledo-migration-acceptance-kit-1.0.0.zip

It prompts for the password rather than taking it as an argument, which is deliberate: your key does not end up in your shell history or in the process list. Paste the release key at the prompt.

Windows: the same command, run in Git Bash (installed with Git for Windows, which includes openssl) or in WSL. Plain PowerShell does not ship openssl.

3. Check you got what was advertised

shasum -a 256 toledo-migration-acceptance-kit-1.0.0.zip # macOS sha256sum toledo-migration-acceptance-kit-1.0.0.zip # Linux Get-FileHash toledo-migration-acceptance-kit-1.0.0.zip -Algorithm SHA256 # PowerShell

It should print, exactly:

7dcfe441454ac91e991d11c52b78cf30841db943a3a9e63f040e9f319c9a6a2e

That hash is also published on the public product page, where it was before you paid. If the two do not match, do not use the archive — email dev@toledotechnologies.com and say so, because it would mean something is wrong on our side.

4. Unzip and run the tests first

unzip toledo-migration-acceptance-kit-1.0.0.zip cd toledo-migration-acceptance-kit-1.0.0 python3 -m unittest test_reconcile -v

74 tests, about a tenth of a second, no network and no third-party packages. That they pass is the only warranty in the licence, so it is worth confirming before you rely on anything.

5. See it work

python3 reconcile.py \ --spec specs/customers.json \ --source examples/source-customers.csv \ --target examples/target-customers.csv \ --rejects examples/rejects-customers.csv \ --out out

Open out/report.html. The shipped example is built so that every bucket the tool can produce has at least one row in it — including the awkward ones: an orphan, a row declared excluded that migrated anyway, and duplicate keys on both sides. There is a test that fails if that stops being true.

Then read docs/ACCEPTANCE-PROCEDURE.md. The tool is step 7 of twelve; the steps that decide whether a migration can be signed off at all happen before anyone migrates anything.

If decryption fails

  • bad decrypt or bad magic number almost always means the key is wrong — usually a trailing space or a missing character from a copy-paste. Retype it rather than re-pasting.
  • Check the whole download arrived: if the .enc file is much smaller than about 31 KB, the download was truncated. Fetch it again.
  • Very old openssl builds (1.0.x) do not support -pbkdf2. openssl version will tell you. Any current macOS, Linux or Git for Windows install is fine.

Lost your key

Email dev@toledotechnologies.com with your Stripe receipt reference and you will be sent the release key again. There is no charge and no limit on this; a key you cannot find is not a reason to lose access to something you bought.

Refunds, and what happens next

Within 30 days, email the same address with your receipt reference and ask for a refund. You get one. No reason required, no evidence, no questions. This is section 4 of the licence.

Buyers of 1.0.0 get 1.x maintenance releases at no additional cost. There is no mailing list and nothing to subscribe to — email with your receipt reference and you will be sent the current release.

A reproducible defect gets fixed. Send the spec, the smallest input that reproduces it, and what you expected.