Skip to content

itos 8.0.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 21:58

itos 8.0.0

Cut by CI from the 240 commits since v7.5.0: 11 feats, 2 fixes and 7 breaking changes, where a breaking change makes a major release, a feat a minor one and a fix a patch. Every change: v7.5.0...v8.0.0

What changed

CI

  • Cut v8.0.0 by removing the pre-release marker (da7d98f)

Documentation

  • Add p1-prepush-new-ref-base (480411e)
  • Add p1-prepush-refuses-tag-moves (af4ee4a)
  • Add p1-shim-push-named-refs (e1d9dc7)
  • Close bug-105 (a02a70c)
  • Move the testing tiers to v8.x, first after v8.0.0 (0177697)
  • Add T-158 (5c5ac6c)
  • Close slice-131 (a1ebcc5)

Features

  • Push named tags and branches with itos push --tag and --ref (e716a0b)

Tests

  • Add the steps of itos push --tag and --ref (f6a7435)
  • Kill the surviving mutants of itos push and its --tag and --ref (01a6028)

Documentation

  • Edit p1-lint-leading-blank-hash-line (19cc075)
  • Edit p1-draft-checks-before-minting (dd22f4c)
  • Close slice-129 (8f285f6)
  • Add p1-github-registry-pilot (a573b56)
  • Edit p1-typed-items (89c175d)
  • Close slice-130 (b36fee3)
  • Add p2-pilot-mise (8afe2b1)
  • Promote p1-push-tag-and-ref to slice-131 (754cd49)
  • Specify slice-131, itos push --tag and --ref (f4a7fdb)
  • Take slice-131 (e66cf90)

Fixes

  • Warn of answered questions naming a missing item, and rename promoted ideas in questions (798276a)

Documentation

  • Edit p1-guard-follows-cd (dbd6cdc)
  • Edit p3-commit-long-text-footer (636512a)
  • Add p1-steps-config-sets-nested (db36b3e)
  • Add bug-105 (928e17f)
  • Drop p1-promote-renames-asks (cd5d8c6)
  • Specify bug-105, stale question links warn and promote renames them (9304f5a)
  • Take bug-105 (c66ca1c)

Features

  • Refuse ledger layouts, questions and config values itos cannot use (8d366ff)

Tests

  • Add the steps slice-130's scenarios set up with (4830dc4)
  • Kill the mutants slice-130's changed functions left alive (3fbcd4e)

Documentation

  • Put the nightly's changed sites and the stable push sample in v8's testing tiers (911322d)
  • Add p2-stateful-pbt-registry (38d0e9e)
  • Add p3-tla-id-counter (5058848)
  • Add p3-evaluate-pstack (705a6a5)
  • Edit p1-testing-tiers-guide (eabd22b)
  • Ask q-61 (0e2373f)
  • Add p2-adopt-go-template-itos (113e7d6)
  • Drop 4 items (26124ab)
  • Edit p1-wip-red-first (1d16a64)
  • Answer q-61 (3ba748f)
  • Record q-61 as decision 50, superseding ADR-0047 (09bcb3a)
  • Edit p3-commit-long-text-footer (e7f90b0)
  • Add p1-work-merge (94438b5)
  • Add p1-typed-items (297a6fd)
  • Edit p1-work-merge (d8507e6)
  • Promote p1-ledger-layout-checks to slice-130 (4c74635)
  • Drop p1-load-refuses-unusable-values, p1-asks-check, p1-ledger-id-default (b8bbd04)
  • Specify slice-130, ledger layouts, questions and config values refused alike (1e1dbed)
  • Take slice-130 (2bd715c)
  • Fix slice-130's Givens to set up what they assert (f30383d)
  • Extend the trace-each-Given lesson with slices 129 and 130 (f6d8ab0)
  • Edit p1-wip-red-first (41a44a8)
  • Point six questions at the items they were promoted to (68a7fcb)
  • Add p1-promote-renames-asks (dec1b9e)

Features

  • Refuse in config check the values no tool can use (b2adb2d)

Tests

  • Add the steps slice 129's scenarios need (7bf024d)

Documentation

  • Add p1-shim-pathspec-sweeps (52b91b7)
  • Add p1-help-cases-regenerate (e08392d)
  • Add p1-corpus-dev-binary-version (450c2e8)
  • Close slice-128 (792e669)
  • Settle the v8 plan's staging line, ledger.id and Changes hook (d7212ef)
  • Keep the local all-sites run in briefs until the nightly judges them (9ff6285)
  • Promote p1-shell-not-empty to slice-129 (c611035)
  • Drop 4 items (1c3cf9c)
  • Specify slice-129, config check refuses values no tool can use (ce312ed)
  • Take slice-129 (bc79197)
  • Add p1-load-refuses-unusable-values (460b4e7)

Features

  • Refuse skipped hooks, sweeping stages and force-pushes (96133c4)

Tests

  • Add the steps of slice 128's shim and pre-push scenarios (c843c55)

Documentation

  • Edit p1-lint-leading-blank-hash-line (cd0b95b)
  • Add p2-user-feedback-targets (ca14ff4)
  • Promote p1-shim-refuses-hook-skipping to slice-128 (9643618)
  • Specify slice-128, the gates refuse what skips them (65d2779)
  • Close T-157 (cc7db66)
  • Close bug-104 (2dc07ba)
  • Answer q-59 (72c61b6)
  • Ask q-60 (1ae8437)
  • Add p1-nightly-judges-changed-sites (38750b5)
  • Edit p1-testing-tiers-guide (f9b6ba0)
  • Close slice-127 (7282dd5)
  • Answer q-60 (2a603cb)
  • Record q-59 and q-60 as decisions 48 and 49 (77556cc)
  • Edit p1-decision-record-hook-lock (b4a97d9)
  • Take slice-128 (f8c2ef7)

Features

  • Judge the item's own commits at work done (f5e578a)

Tests

  • Add the steps of slice 127's work done scenarios (5047e0a)

CI

  • Hold AGENTS.md to 11000 bytes (23098ff)

Documentation

  • Add T-157 (39fb319)
  • Take T-157 (32d5d62)
  • Cut AGENTS.md to what holds only in this repository (9990ef7)
  • Promote p1-work-done-passes-own-closes to slice-127 (1ad8877)
  • Specify slice-127, work done judges the item's own commits (4911b36)
  • Take slice-127 (92c3ef4)

Fixes

  • Run itos init as the version the config pins (7166fa0)

Tests

  • Kill the four upgrade.go mutants that survive slice-126's range (bde8303)
  • Hold binaryCommand to a run with no command and to git-shim's second word (cc784a4)

Documentation

Features

  • Hand itos upgrade to the newer release it moves to (04ba2a9)

Refactoring

  • Give launch.Main's exit code only when it hands the run on (58d462f)

Tests

  • Let the conformance runner take its native git with --git (3537d34)
  • Expect the stealth rules file's OS path in TestRefreshedRules (62965b8)

CI

  • Hand the conformance runner its native git from previous-release (fcec781)

Documentation

  • Close slice-124 (8719140)
  • Queue slice-124 (876b4fc)
  • Close slice-125 (07e85ad)
  • Queue slice-125 (613611d)
  • Add T-153 (f5c5863)
  • Take T-153 (e60e7b4)
  • Promote p1-upgrade-refreshes-agent-block to slice-126 (0aa45ba)
  • Specify slice-126, upgrade handed to the newer release (33b33b4)
  • Take slice-126 (f585700)
  • Add p1-init-agent-rules-runs-pin (e412304)
  • Add p1-draft-checks-before-minting (27e27f0)
  • Add p1-ci-run-help-proof-check (921f97a)
  • Edit p1-ci-watch-failed-step (55fea0c)
  • Put p1-init-agent-rules-runs-pin in the v8 plan (af586ea)
  • Edit p1-work-done-passes-own-closes (52ee944)
  • Ask q-58 (ec31237)
  • Add p1-draft-decision-id (9319bb2)
  • Add p1-upgrade-already-refreshes-block (1c8dcef)
  • Answer q-58 (c713abc)
  • Add T-154 (fc7399d)
  • Edit p1-work-done-passes-own-closes (3ee8f3f)
  • Add p1-check-paths-missing-path (24a8a73)
  • Edit p1-check-paths-missing-path (553c4cc)
  • Write T-154's Windows path with single backslashes (76d94e2)
  • Take T-154 (75d1ce5)
  • Add T-155 (e32a4d2)
  • Take T-155 (3efd508)
  • Add p1-upgrade-cli-survivors (7756449)

Features

  • Let a commit outside except_types reword a feature's description (71418aa)

Tests

  • Add the steps that change a feature's description, name or Background (45a1721)

Documentation

  • Add p1-push-proof-local-cost (e1cb2e6)
  • Promote p1-moves-feature-description to slice-125 (2cc7694)
  • Specify slice-125, a feature's description reworded outside feat and fix (a52ed12)
  • Queue slice-125 (1719165)
  • Take slice-125 (ffbaef9)
  • Say a feature's description may be reworded outside feat and fix (aa12dce)

Features

  • Name itos init --agent-rules in status when the agent block is stale (ec42242)

Documentation

  • Close T-152 (7a2e376)
  • Queue T-152 (351c10b)
  • Add p1-corpus-runner-load-deadline (50fa802)
  • Close slice-122 (05ce942)
  • Queue slice-122 (eecf563)
  • Promote p1-stale-agent-block-reported to slice-124 (5133a57)
  • Specify slice-124, status naming a stale agent block (cdef3a0)
  • Queue slice-124 (9c368ca)
  • Take slice-124 (c336aef)

Features

  • Give an item in progress back to todo with itos work give-back (1793851)

CI

  • Judge only the changed lines in the push proof, with itos-cc v0.12.0 (4a0cdb6)

Documentation

  • Close slice-120 (5386d3b)
  • Queue slice-120 (e68fdf1)
  • Add the testing tiers to the v8 plan (6fc17d1)
  • Edit p1-testing-tiers-guide (bc9bf8b)
  • Edit p1-ci-e2e-workflow (e2a7e17)
  • Brief the scenarios of both commands when a rule moves between them (989524e)
  • Close slice-107 (7cd47ed)
  • Queue slice-107 (1fb01c1)
  • Promote p1-proof-changed-lines-any-test to T-152 (3be6d55)
  • Specify T-152, the push proof over changed lines (f411351)
  • Queue T-152 (9d9803d)
  • Take T-152 (b63f9a3)
  • Say the push proof judges the lines a push changes (fe1503f)
  • Promote p1-work-give-back to slice-122 (d480449)
  • Specify slice-122, giving an item in progress back to todo (76dcf6b)
  • Queue slice-122 (8e72ddf)
  • Take slice-122 (d11886f)

Features

  • Refuse the nightly step that runs the done tasks' checks (59a483f)

Documentation

  • Edit p1-upgrade-refreshes-agent-block (bd93cd1)
  • Add p1-stale-agent-block-reported (d5bad4a)
  • Edit p1-shim-refuses-hook-skipping (d845417)
  • Drop p1-agent-rules-as-checks (916dfe8)
  • Add p1-init-recommends-branch-protection (0437bb5)
  • Add p3-evaluate-cupcake (134b262)
  • Edit p1-trim-agents-md (d28c27b)
  • Edit p1-proof-changed-lines-any-test (1ba1f89)
  • Name the upgrade handoff and the merged refusals in the v8 plan (98f70f8)
  • Resume slice-107 (67d622c)
  • Queue slice-107 (5d09b94)
  • Take slice-107 (a5a4f6d)

Features

  • Write a two-line block for agents in place of the commit policy (5a1bb17)

Refactoring

  • Move the module path to github.com/donvargax/itos/v8 (1a2fb36)

Tests

  • Add the step for a block an older itos wrote (9262055)
  • Cover init's writes and the rules offer's every outcome (c2309dd)

CI

  • Name the /v8 module path in the gates (8e634c7)
  • Cut v8 as release candidates (a6369d6)

Documentation

  • Point this repository's notes at the guide's procedures (f9a3425)
  • Add p1-guide-brief-handoff (7c96ec4)
  • Add p1-corpus-stdout-lacks (bc63038)
  • Close slice-119 (dedacef)
  • Queue slice-119 (53661c6)
  • Edit p1-drop-compat-code (5cd7608)
  • Drop p1-v8-deprecation-sweep (3f31b6c)
  • Drop p1-push-fits-foreground, p1-guide-brief-handoff (010bead)
  • Plan v8, the lean agent context (3965e1a)
  • Edit p1-notes-placement (e7475b9)
  • Edit p1-agents-md-reduced (433ce5a)
  • Add p1-work-give-back (d75016c)
  • Add p1-moves-feature-description (ca0d11e)
  • Edit p1-push-tag-and-ref (901df6a)
  • Bundle three consumer reports into the v8 plan (70d42da)
  • Add T-151 (2725a8a)
  • Queue T-151 (3617142)
  • Take T-151 (8f9ad26)
  • Name the /v8 module path in ARCHITECTURE (abfca91)
  • Add p1-module-move-commit (778ce30)
  • Close T-151 (84ac3c9)
  • Queue T-151 (d0877a2)
  • Promote p1-agents-md-reduced to slice-120 (ea5ec03)
  • Specify slice-120, the two-line agent rules block (adcac61)
  • Add p1-upgrade-refreshes-agent-block (de405ac)
  • Add p1-trim-agents-md (62efb92)
  • Name the two-line block and its follow-ups in the v8 plan (09cc54b)
  • Queue slice-120 (77ebd10)
  • Take slice-120 (b1044d6)
  • Write this repository's agent block as its itos now does (7bca2b3)
  • Say what the agent block holds now in the readme and the map (c62428d)

Upgrading

Commit these changes as your project's rules ask (the install script and the pin are build
commits, or whatever type your rules give itos.yaml and tools/bin/).

  1. What the commits ask.

    • Breaking, 5a1bb17 feat: write a two-line block for agents in place of the commit policy:

      AGENTS.md's itos block is two lines; itos guide commit prints the commit policy

    • Breaking, 59a483f feat: refuse the nightly step that runs the done tasks' checks:

      config check and ci refuse the nightly step { tasks: done }, which v8 removed

    • Breaking, 04ba2a9 feat: hand itos upgrade to the newer release it moves to:

      itos upgrade by an older itos now fetches and runs the target release's own upgrade

    • Breaking, 96133c4 feat: refuse skipped hooks, sweeping stages and force-pushes:

      itos refuses --no-verify, commit -a, git add -A via the shim and force-pushes

    • Breaking, b2adb2d feat: refuse in config check the values no tool can use:

      itos config check now exits 1 on values it accepted that no tool can use

    • Breaking, 8d366ff feat: refuse ledger layouts, questions and config values itos cannot use:

      every command refuses a config number .nan or .inf, an empty shell, a timeout of 0

    • Breaking, e716a0b feat: push named tags and branches with itos push --tag and --ref:

      a plain itos push no longer follows push.followTags: it pushes no tag; use --tag
      Each Upgrading: footer since v7.5.0 (itos commit footers Upgrading v7.5.0 v8.0.0):

    • 5a1bb17 feat: write a two-line block for agents in place of the commit policy:

      Run itos init --agent-rules for the two-line block; trim your own text it repeats

    • 59a483f feat: refuse the nightly step that runs the done tasks' checks:

      Remove { tasks: done } from ci.nightly.steps; write each check to keep as a run: step

    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to:

      upgrade runs the target release's own steps; the itos on the PATH need not be current

    • 7166fa0 fix: run itos init as the version the config pins:

      init in a pinned repo now runs the pinned itos; re-run init after upgrade for its block

    • 96133c4 feat: refuse skipped hooks, sweeping stages and force-pushes:

      Scripts passing --no-verify, -a or git add -A through the shim: name paths, let hooks run

    • b2adb2d feat: refuse in config check the values no tool can use:

      Change each value itos config check now refuses (exit 1) as the problem's fix says

    • 8d366ff feat: refuse ledger layouts, questions and config values itos cannot use:

      run itos config check; fix each value, ledger layout or question it refuses

    • e716a0b feat: push named tags and branches with itos push --tag and --ref:

      Push release tags with itos push --tag ; a plain push no longer publishes tags

  2. What it changes on purpose. The old scenarios and conformance cases the range's Changes: footers name,
    which a fix changes because they held the bug (T-071):

    • 5a1bb17 feat: write a two-line block for agents in place of the commit policy: @ID-INIT-26
    • 5a1bb17 feat: write a two-line block for agents in place of the commit policy: @ID-INIT-29
    • 5a1bb17 feat: write a two-line block for agents in place of the commit policy: @ID-INIT-30
    • 5a1bb17 feat: write a two-line block for agents in place of the commit policy: @ID-INIT-32
    • 5a1bb17 feat: write a two-line block for agents in place of the commit policy: @ID-INIT-34
    • 5a1bb17 feat: write a two-line block for agents in place of the commit policy: @ID-INIT-36
    • 5a1bb17 feat: write a two-line block for agents in place of the commit policy: init.yaml: with --agent-rules init writes the config's rules
    • 5a1bb17 feat: write a two-line block for agents in place of the commit policy: init.yaml: under --stealth, --agent-rules writes the rules in the git folder
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: @ID-NIGHTLY-01
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: @ID-NIGHTLY-02
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: @ID-NIGHTLY-03
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: @ID-NIGHTLY-04
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: ci-run.yaml: the nightly's tasks step runs the done tasks' checks
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: ci-run.yaml: a done task's failing check fails the nightly
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: config.yaml: a nightly step runs the done tasks' checks
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: config.yaml: a nightly tasks step takes only done
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: config.yaml: a tasks step belongs to the nightly
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: plans.yaml: the nightly's tasks step plans every check of the done tasks
    • 59a483f feat: refuse the nightly step that runs the done tasks' checks: plans.yaml: with cost static, only their static checks
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-01
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-02
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-03
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-04
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-05
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-06
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-08
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-09
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-10
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-12
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-13
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-14
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-15
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-16
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-17
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-18
    • 04ba2a9 feat: hand itos upgrade to the newer release it moves to: @ID-UPGRADECMD-19
    • 96133c4 feat: refuse skipped hooks, sweeping stages and force-pushes: hooks.yaml: pre-push runs the whole command for a remote commit the clone lacks
    • 8d366ff feat: refuse ledger layouts, questions and config values itos cannot use: @ID-CONFIG-45 @ID-CONFIG-49 @ID-CONFIG-50
  3. The config. Since v7.5.0 (tools/bin/schema-contract, T-070):

    • ci.nightly.steps[].tasks: values widened: any string is now accepted, not only ["done"]
    • ci.steps[].tasks: values widened: any string is now accepted, not only ["done"]
  4. Move the install script to 8.0.0. A project on the install script
    (tools/bin/install-itos, v2.0.0's Upgrading, step 1) changes its version= line and each
    platform's hash, from this release's checksums.txt; the whole script, for a project that has
    none yet:

    #!/bin/sh
    # tools/bin/install-itos: the pinned itos, into .tools/bin/
    set -eu
    version=8.0.0
    cd "$(git rev-parse --show-toplevel)"
    case "$(uname -s)-$(uname -m)" in
    Linux-x86_64) platform=linux-amd64 sum=35d99114a5deb2b011e95bec9ba10ee675de63a08eb85500a63eb47879df0b83 ;;
    Linux-aarch64 | Linux-arm64) platform=linux-arm64 sum=a3458573ebdd7009d51f79e8368c857d662dfeba36446d791c14cbad8ddc8521 ;;
    Darwin-x86_64) platform=darwin-amd64 sum=e15c2be8f0e8f0b62065fc5d1932d198ba34ea426532b746532cc6cbbc19b5f1 ;;
    Darwin-arm64) platform=darwin-arm64 sum=625ec307d73be79b520fe945a9f653fdd7cc43df0c2a1b9afe3e2ef7ef2c658b ;;
    MINGW*-x86_64 | MSYS*-x86_64) platform=windows-amd64 sum=a35bff883fd0b1fb65a7bf5d25e334742bb2231a05150322058e8e221c7f03cf ;;
    *) echo "install-itos: no itos archive for $(uname -s)-$(uname -m)" >&2 && exit 1 ;;
    esac
    case "$platform" in
    windows-*) archive="itos-$version-$platform.zip" bin=.tools/bin/itos.exe ;;
    *) archive="itos-$version-$platform.tar.gz" bin=.tools/bin/itos ;;
    esac
    # What was installed, so a call with nothing to do runs nothing.
    pin=".tools/bin/itos.pin"
    if [ -x "$bin" ] && [ "$(cat "$pin" 2>/dev/null)" = "$version $sum" ]; then exit 0; fi
    tmp=$(mktemp -d)
    trap 'rm -rf "$tmp"' EXIT
    curl -fsSL -o "$tmp/$archive" "https://github.com/donvargax/itos/releases/download/v$version/$archive"
    if command -v sha256sum >/dev/null; then check="sha256sum -c -"; else check="shasum -a 256 -c -"; fi
    (cd "$tmp" && echo "$sum  $archive" | $check)
    mkdir -p .tools/bin
    case "$archive" in
    *.zip) unzip -o -q "$tmp/$archive" itos.exe -d .tools/bin ;;
    *) tar -xzf "$tmp/$archive" -C .tools/bin itos ;;
    esac
    echo "$version $sum" > "$pin"
    echo "install-itos: itos $version in $bin"
  5. Or move the pin to 8.0.0. A repository that pins a release in itos.yaml
    (v2.1.0's Upgrading, step 2) changes its two lines; pin.checksums is the SHA-256 of this
    release's checksums.txt itself, one hash for every platform:

    pin:
      version: 8.0.0
      checksums: f127de8a96e9ee1614eab1f19bc86b23ae141b6dd33a357d81560d7381eb0b35

    A CI step that installs itos by go install moves to
    go install github.com/donvargax/itos/v8/cmd/itos@v8.0.0.

  6. Point the schema line at v8.0.0's. If itos.yaml's first line names a release's
    itos.schema.json, make it
    # yaml-language-server: $schema=https://github.com/donvargax/itos/releases/download/v8.0.0/itos.schema.json.

  7. Check: tools/bin/itos version (or itos version in the repository, with a pin)
    prints itos 8.0.0, tools/bin/itos version --check exits 0 (widen a cap in
    requires that 8.0.0 is past), and tools/bin/itos config check passes. To report a
    problem itos causes, open an issue on donvargax/itos with the label consumer-report
    (https://github.com/donvargax/itos/issues/new?template=consumer-report.yml).

The archives are attested by the workflow that built them:
gh attestation verify <archive> -R donvargax/itos checks one, and
sha256sum --ignore-missing -c checksums.txt checks the ones downloaded beside it.