A crew of N generates roughly 2–3 L of dry trash per person per day (food packaging, wipes, filters). A compactor squeezes each bag's volume down by a ratio r without changing its mass — bag mass stays m = ρ·V₀ (ρ ≈ 0.2 kg/L for mixed dry trash), but its packed footprint shrinks.
This is a 2D cross-section reduction of the real 3-axis packing problem: a bag's volume shrinks isotropically as V/r, so each of its 3 side lengths scales by r-1/3. Dropping one axis to view the bay as a 2D slice (fixed unit depth) means the kept 2 side lengths must scale so their area shrinks by 1/r instead — that requires each side to scale by r-1/2, not r-1/3:
area_packed = area_raw / r
side_scale_2D = 1 / sqrt(r) (isotropic shrink of a 2D bag footprint,
vs. side_scale_3D = 1/cbrt(r) in the full 3D packer)
Bags are loaded into the cargo cross-section with a 2D shelf first-fit heuristic — the standard 2D bin-packing approximation, and the direct dimensional reduction of the 3D shelf-packing rule (rows along width, next row when a row is full, cargo full when a row no longer fits in the remaining height):
for each new bag (w,h):
if x+w > BayWidth: x=0; y+=rowHeight; rowHeight=0 # next row
if y+h > BayHeight: bay is full, vehicle must depart
place bag at (x,y)
x += w; rowHeight = max(rowHeight,h)
The days-until-full readout is the remaining bay area divided by today's compacted daily footprint area: D = A_remaining / A_day. A higher compaction ratio shrinks every bag, so more of them fit before the vehicle has to undock and burn up on re-entry with the trash aboard — the real disposal method used for ISS Progress and Cygnus vehicles today. Drag the packing view to pan, scroll/pinch to zoom.