Files
Prog-Prober/docs/adr/0011-oci-runtime-image.md
BillyOutlast a197e50988 Scaffold Prog-Prober: spec, ADRs, and Phase 1 tracker
- docs/architecture.md: full architecture spec (safety contract, topology,
  Tool API, data model, phasing).
- docs/adr/0001-0011: decision records for the grilling outcomes.
- Repo skeleton: Cargo workspace (crates/core), pnpm workspace
  (apps/desktop, packages/ui), Python workers package, OCI runtime
  placeholder, graph JSON Schema.
- AGENTS.md, CONTEXT.md, THIRD_PARTY.md, README.md, LICENSE (AGPL-3.0).
- GitHub issues #1-#14: phase epics plus Phase 1 tickets.
2026-09-19 17:50:23 -04:00

1019 B

ADR-0011: Single versioned OCI runtime image

  • Status: accepted
  • Date: 2026-09-19

Context

Analysis spans a JDK (Ghidra), a Python environment (PyGhidra, capa, FLOSS, LIEF, Speakeasy, Qiling), and containerized detonation. Installing this on the host would make reproducibility and cache invalidation fragile.

Decision

Ship one versioned OCI image, progprober-runtime, containing the full analysis toolchain. The Rust core drives Podman to run it. Nothing untrusted executes on the host.

Consequences

  • Reproducible analyses and meaningful (tool, tool_version, config_hash) cache keys.
  • Clean host; consistent across machines and CI.
  • The image is large; accepted, and mitigated by layer caching.
  • Podman is used rootless where possible; /dev/kvm is required for the sandbox later.

Alternatives considered

  • Host-installed Python/Ghidra with a bootstrap installer — less isolation and version drift.
  • PyInstaller bundling — awkward for the JDK/Ghidra combination.