Skip to content

Bootstrap: scope of the shared tools library #1

Open

Description

@matbrgz

tools-commons holds code shared by the BenchCommons tools (ADR 0005 in .product), so they stop copying it between repos.

Candidates, to decide in spec 001:

  • Contract checkers: catalog contract validation (tools-benchmark spec 010, check_catalog.py) and input contract validation (tools-dataset spec 001).
  • Common helpers already duplicated: changed --since selection of implementation folders (catalog-algorithms hello.py, catalog-web-frameworks catalog.py), retry wrappers for flaky downloads, Docker run helpers.
  • Packaging: language (Python 3.12, as tools-benchmark and tools-dataset) and how tools pin a version (release tag, or a git dependency by commit).
  • CI: unit tests plus the org docs CI.

Activity

  1. matbrgz commented on Oct 12, 2026

    @matbrgz
    ContributorAuthor

    For the "retry wrappers for flaky downloads" candidate: tools-dataset already has this code, in the source toolkit of spec 004 (PR tools-dataset#7), ported from dataset-names.

    • datasettool.sources.cache.fetch_resource: cache at <cache>/<source_id>/<file> with .meta.json (url, time, sha256, size), User-Agent per project, up to three attempts with doubling backoff, no retry on 4xx except 408 and 429, atomic writes through .part, Content-Length check, BlockedError for an HTML page served instead of a file, manual-download hint on 403, offline and refresh modes. Tested against a local HTTP server only.
    • Placement decision: tools-dataset ADR 0007. It stays in tools-dataset because its consumers are the dataset repos. If tools-benchmark needs it, it can move here through a tools-commons spec, and tools-dataset would then depend on tools-commons.
    • Hardening still open: tools-dataset#8.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions