Skip to content

Commit a2da26b

Browse files
algomaster99claudeCopilot
authored
Add thesis topic: Escaping the Hermetic Boundary (#97)
Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
1 parent 74e8ee5 commit a2da26b

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

master-thesis.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,30 @@ The stages of package installation
243243
</ol>
244244

245245

246+
### Beyond Declared Dependencies: The Limits of Hermetic Build Tools
247+
Contact: Aman Sharma
248+
249+
Tools like [Hermeto][herm1] promise hermetic container builds by prefetching all declared dependencies before network isolation kicks in. In theory, the build runs against a closed, auditable set of inputs. In practice, the hermetic guarantee is layered and partial: Hermeto addresses the *declared dependency layer* — what appears in lockfiles like `package-lock.json`, `Cargo.lock`, or `requirements.txt` — but leaves the *toolchain and native dependency layer* to the user. Nix offers a theoretically stronger model: content-addressed derivations, sandboxed builds, and a store that captures the full dependency closure including compilers and system libraries. An ecosystem of automated translation tools — `dream2nix`, `poetry2nix`, `cargo2nix` [2] — attempts to generate these derivations from standard lockfiles, but the two models rest on different assumptions about what a hermetic boundary even means.
250+
251+
This thesis investigates the *hermetic gap*: the delta between what a tool declares as its dependency set and what a build actually consumes. The central question is whether Nix's stronger closure model translates into a meaningfully tighter boundary in practice, and what classes of dependencies — undeclared system libraries, toolchain leakage, native extension bindings, implicit platform assumptions — fall outside the boundary regardless of which model is used.
252+
253+
Related Work:
254+
255+
[1] [Hermeto — prefetch CLI for hermetic container builds](https://github.com/hermetoproject/hermeto)
256+
257+
[2] [dream2nix — automated Nix derivation generation from package manager metadata](https://github.com/nix-community/dream2nix)
258+
259+
[3] [Zheng, Adams, Hassan — On Build Hermeticity in Bazel-Based Build Systems, IEEE Software 2025](https://mcislab.github.io/publications/2025/ieeesw-shenyu.pdf)
260+
261+
[4] [Lamb & Zacchiroli — Reproducible Builds: Increasing the Integrity of Software Supply Chains, IEEE Software 2021](https://arxiv.org/pdf/2104.06020)
262+
263+
[5] [SLSA — Supply-chain Levels for Software Artifacts framework](https://slsa.dev/)
264+
265+
[6] [The Design Space of Lockfiles Across Package Managers, Empirical Software Engineering 2025](https://arxiv.org/abs/2505.04834)
266+
267+
[herm1]: https://github.com/hermetoproject/hermeto
268+
269+
246270
### Dependency Fingerprinting: Reconstructing Full Dependency Trees from Partial Observations
247271
Contact: Aman Sharma, Eric Cornelissen
248272

0 commit comments

Comments
 (0)