# Task Variant 2 — The missed pour

## Challenge

Reconstruct a water-pouring shot in which the camera turns away during a major
change in the scene. Infer the water transferred, retained, and spilled during
the unobserved interval using the evidence available before and after it.

The reference is 180 frames at 30 fps, 800 × 600. The camera pans away after
frame 66, holds its away orientation for frames 76–111 (1.2 seconds), and returns
to the original view at frame 120. During that hold the source vessel and cup
are outside the image. Use frames 66 and 120 as the scored interval endpoints.

## Inputs

- `input/reference.mp4`: the camera-away shot, with no alternate view.
- `input/scene_facts.json`: known geometry, units, and physical assumptions.
- `input/camera_poses.json`: per-frame camera extrinsics.

The graduated source vessel is the only water supply. Its outlet pours into a
stationary open cup. Water that exceeds cup capacity spills onto the tray.
There are no other sources, drains, absorption, evaporation, or cup motion.
The valve may change flow while off-screen; do not assume constant flow.

## Workflow

Measure the visible water levels and geometry; construct a volume-conserving
model; render a reconstruction in Blender; compare all observed portions of
the shot. Account explicitly for the missing observations.

This benchmark uses an analytical reservoir/cup conservation model rendered
in Blender, not a Navier–Stokes simulation. Liquid heights and cumulative
volumes are the authoritative state. Stream transit time and hold-up are
neglected. Ripples and droplets are visual tracers and are excluded from the
volume ledger. Individual splashes and detailed fluid shapes are not targets.

## Deliverables

1. `answer.json` with:
   - `unobserved_poured_ml`: source volume lost between frames 66 and 120.
   - `unobserved_retained_ml`: increase in cup volume between those frames.
   - `unobserved_spilled_ml`: increase in spill volume between those frames.
   - `overflow_occurred`: a JSON boolean indicating overflow during the interval.
2. `match.blend`: your reconstructed scene and animation.
3. `match.mp4`: 180 frames at 30 fps, 800 × 600, following the supplied camera path.

Volumes are nonnegative and expressed in millilitres. An optional
`reasoning.md` may document your measurement uncertainty and alternative
hidden flow histories consistent with the observations.

## Evaluation

| Component | Weight | Full credit | Zero credit |
|---|---:|---|---|
| Unobserved poured volume, absolute error | 35% | ≤8 mL | ≥32 mL |
| Unobserved retained volume, absolute error | 25% | ≤5 mL | ≥20 mL |
| Unobserved spilled volume, absolute error | 25% | ≤12 mL | ≥40 mL |
| Conservation residual: absolute poured − retained − spilled | 10% | ≤2 mL | ≥15 mL |
| Overflow classification | 5% | Correct | Incorrect |

Interpolate linearly between full and zero credit. Numerical scoring uses
`answer.json`; the scene and video are inspection deliverables.

**Identifiability rule:** the exact hidden flow curve and exact overflow-onset
frame are not uniquely determined by the supplied observations and are not
scored. A reconstruction may use any nonnegative hidden flow history that
matches the observed states and conserves volume. Do not claim to recover
unseen timing uniquely.
