Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

`darnit-reproducibility`: reproducibility layer + tightness taxonomy

オープン
#415 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
説明が足りない
活発さ
静か
技術スタック
python
領域
tooling

調査の方向性

Start by comparing the taxonomy needs in this issue with #393 (ontology) and #227 (HermeticBuild), then review the declaration options: .project/ context and [reproducibility] in .baseline.toml. Clarify the declaration format and how existing controls map to layer and tightness; done means the taxonomy handles compound layers and the third-party-binary case and can serialize into the ontology vocabulary.

索引モデルが issue の本文から書いたものです。

説明

module-reproducibility

Summary

"Reproducible" is not a single concept. Auditing meaningfully requires two
independent axes:

  1. Layer being reproduced.
  2. Tightness of match at that layer.

Without this taxonomy, users cannot declare what they are aiming for and
darnit cannot audit meaningfully -- the required signals differ per (layer,
tightness) pair. A repo can be statistically reproducible without pinning
PYTHONHASHSEED; a regulatory-grade forensic tool cannot. Conflating these
under one "reproducibility" label produces false PASS or false FAIL,
depending on which direction the assumption drifts.

Layers to name explicitly

  • Layer 1: Source -> built tool. Deterministic compilation,
    SOURCE_DATE_EPOCH, pinned toolchain, container-build digest. This is
    build reproducibility; overlaps with RE-02.01 HermeticBuild (#227).
  • Layer 2: Built tool + inputs -> outputs. Pinned execution
    environment, seeded RNG, deterministic ops, workflow spec, data
    lineage. This is what most people mean by "reproducible experiment."
  • Layer 3: Outputs -> conclusions. Downstream statistical processing,
    meta-analysis, plot generation. The layer where analytical
    reproducibility (same inputs -> same conclusions under the declared
    test) lives.

Compound case the taxonomy must handle: source that compiles to a tool
(Layer 1) that then runs the experiment (Layer 2). Two layers, potentially
different tightness tiers each. Similarly, experiments that consume a
third-party binary the researcher did not build -- Layer 1 is somebody
else's problem, but Layer 2 remains auditable.

Tightness tiers to name explicitly

  • Bit-for-bit: byte-equal outputs. Regulatory, forensic,
    cryptographic, hermetic-build contexts.
  • Within tolerance: outputs statistically equivalent under a declared
    epsilon or distributional test (KS, chi-square, etc.). The honest bar
    for stochastic ML, MCMC, ensemble methods, sampling, GANs.
  • Runs-to-completion: environment + data available; produces some
    result of the declared type. The honest bar for most published
    notebooks and the floor darnit should never audit below.

Scope

  • Formalize the (layer, tightness) two-axis taxonomy.
  • Design how a repo declares its target: candidate surfaces are a new key
    in .project/ context or a [reproducibility] block in
    .baseline.toml. Decide during clarify.
  • Map darnit-reproducibility's existing controls onto (layer, tightness)
    so each control knows which target it audits against.

Non-goals for v0

  • The specific signal checks (see #416).
  • Auto-remediation of missing tier declarations.
  • Rewriting existing controls to be tier-aware in the same PR -- tag
    with a default tier and re-tag in a follow-up.

Constitution alignment

  • II. Conservative-by-Default: if a repo declares "bit-for-bit" but
    a control at that tier is missing evidence, WARN -- never silent PASS.
  • IV. Never Guess User Values: the (layer, tightness) declaration is
    a user-judgment key. darnit MAY propose a tier from repo heuristics
    (e.g., Dockerfile with digest -> likely bit-for-bit at Layer 1) but
    MUST NOT conclude it.
  • III. TOML-First: tier declaration lives in TOML or .project/,
    not in Python.

Related

  • #414 (extractor module).
  • #416 (heuristic checks -- each control declares its (layer, tightness)
    applicability).
  • #393 (ontology) -- the taxonomy must serialize into the ontology
    vocabulary.
  • #227 (HermeticBuild) -- the canonical Layer 1 / bit-for-bit control.
主要言語
Python
スター
22
フォーク
27
平均マージ
1日 23時間
マージ済み PR(30日)
48

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

darnitdevorg/darnit のほかの issue

darnitdevorg/darnit の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。