Skip to content

Commit f91e25f

Browse files
Merge pull request #47 from CompOmics/feat/sensitivity-improvements
Release readiness for v0.1.0: installable, portable, tested, documented
2 parents c236a87 + f8f9ce2 commit f91e25f

153 files changed

Lines changed: 29662 additions & 2439 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.dockerignore‎

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,39 @@
1-
# Keep the build context small and free of machine-specific / large files.
2-
.git
3-
**/target
4-
**/.cargo/config.toml
5-
out_*/
6-
mzml_files/
7-
fasta/
8-
notebooks/
9-
sidecar_work/
10-
*.parquet
11-
*.mzML
12-
*.mzml
13-
*.raw
14-
*.pin
15-
*.log
16-
__pycache__/
17-
*.pyc
1+
# ALLOWLIST, not a deny list.
2+
#
3+
# A deny list is the wrong shape for a build context: it has to be updated every time
4+
# something new appears in the tree, and the thing that appears is exactly the thing
5+
# nobody thought to exclude. Two concrete cases it was already missing:
6+
#
7+
# - `.gitignore` excludes `scripts/run_*.sh` and `scripts/_probe*.py` as "throwaway;
8+
# hardcoded paths", but the Docker build context is the WORKING TREE, not the git
9+
# tree, and the Dockerfile does `COPY scripts /opt/mumdia/scripts`. A locally built
10+
# image would have baked them in. (CI builds from a clean checkout, so the published
11+
# image was never affected -- it was latent, not live.)
12+
# - untracked local data and vendored comparison sources (`alphadia/`, `lib/`,
13+
# `raw_files/`, `val*/`, `mbr_work/`) all entered the context and were sent to the
14+
# daemon on every local build.
15+
#
16+
# Everything is excluded, then the four things the Dockerfile actually COPYs are
17+
# re-included. Adding a new COPY now requires adding it here, which is the failure
18+
# direction we want: a build that misses a file, not an image that carries one.
19+
*
20+
21+
# The workspace the release binary is built from.
22+
!rust
23+
rust/**/target
24+
rust/**/.cargo/config.toml
25+
26+
# The Python sidecar workers the engine invokes, and their environment specs.
27+
!scripts
28+
scripts/__pycache__
29+
scripts/*.pyc
30+
# Local-only helpers with hardcoded paths (mirrors .gitignore).
31+
scripts/run_*.sh
32+
scripts/_probe*.py
33+
!env
34+
35+
# The two baked configs, and the notices that must travel with the binary.
36+
!docker
37+
!LICENSE
38+
!THIRD_PARTY_LICENSES.md
39+
!sbom.cdx.json

‎.github/dependabot.yml‎

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Dependency updates. Cargo.lock is tracked and both CI and the Docker build use
2+
# `--locked`, so a dependency only moves when a pull request moves it here.
3+
#
4+
# Grouped, monthly, and capped on purpose: the dependency surface is small (arrow,
5+
# parquet, mzdata, clap, serde, rayon and a handful of leaves) and an unreviewed
6+
# arrow or parquet bump can change artifact encoding, which is a data-format change
7+
# rather than a routine upgrade. Every bump still has to pass the full CI gate.
8+
version: 2
9+
updates:
10+
- package-ecosystem: cargo
11+
directory: /rust/mumdia
12+
schedule:
13+
interval: monthly
14+
open-pull-requests-limit: 5
15+
groups:
16+
# The Arrow/Parquet pair must move together: they share a version line, and
17+
# the engine's on-disk contract (snappy, utf8, list columns) rides on them.
18+
arrow-parquet:
19+
patterns:
20+
- arrow*
21+
- parquet*
22+
# Everything else, batched so review is one pull request rather than ten.
23+
rust-minor-and-patch:
24+
patterns:
25+
- "*"
26+
exclude-patterns:
27+
- arrow*
28+
- parquet*
29+
update-types:
30+
- minor
31+
- patch
32+
33+
# Base images, so the digest pins in the Dockerfile stay current instead of
34+
# freezing the image on a base that stops receiving security updates. Pinning
35+
# without an update path is how a reproducible image becomes an unpatched one.
36+
- package-ecosystem: docker
37+
directory: /
38+
schedule:
39+
interval: monthly
40+
open-pull-requests-limit: 2
41+
42+
# No `pip` entry, deliberately. The Python dependency surface lives in the pip
43+
# sections of the conda specifications under `env/`, which Dependabot does not
44+
# parse: its pip ecosystem reads requirements.txt, pyproject.toml, Pipfile or
45+
# poetry.lock. Adding a mirror requirements file to satisfy the scanner would
46+
# create a second list that nothing installs and that drifts from the one that
47+
# does, which is worse than no entry.
48+
#
49+
# What covers the gap meanwhile: the `sidecar-imports` CI job resolves both
50+
# environments for real and runs `pip-audit` over them, so a known
51+
# vulnerability in a sidecar dependency fails a build. The permanent fix is
52+
# `scripts/pyproject.toml` (docs/22, WP4), after which a `pip` entry pointing
53+
# at /scripts belongs here.
54+
- package-ecosystem: github-actions
55+
directory: /
56+
schedule:
57+
interval: monthly
58+
open-pull-requests-limit: 3
59+
groups:
60+
actions:
61+
patterns:
62+
- "*"

0 commit comments

Comments
 (0)