Rationale
A general building block underneath hand-off and many activity scenarios is a single object that is attached to (carried by) an agent — its world point moves rigidly with the holder — and then detaches (set down / released) at a defined frame. The benchmark needs this as a first-class, reusable primitive with ground-truth possession over time, so downstream consumers can score "is this object currently held, and by whom".
This is the single-agent special case of the two-agent hand-off (#63); building it first keeps that scenario simple.
What to build
A helper that binds an object entity to a holder entity's carry point over a frame range, drives the object's center from the holder's motion while attached, and records a possession timeline (held-by id, then None after detach).
Acceptance criteria
Files / data model to extend
src/multicam_sim/entities.py — Entity / EntityFrame (the object is an entity with a center point that this helper drives).
src/multicam_sim/order.py — sidecar precedent for the possession GT.
src/multicam_sim/scene.py — Scene container.
Open design note
Attachment can be modelled as a build-time helper that bakes the object's frames, or as a declarative binding resolved at manifest time. Either is fine provided the golden manifest stays byte-identical; the choice is left to the maintainer.
Rationale
A general building block underneath hand-off and many activity scenarios is a single object that is attached to (carried by) an agent — its world point moves rigidly with the holder — and then detaches (set down / released) at a defined frame. The benchmark needs this as a first-class, reusable primitive with ground-truth possession over time, so downstream consumers can score "is this object currently held, and by whom".
This is the single-agent special case of the two-agent hand-off (#63); building it first keeps that scenario simple.
What to build
A helper that binds an object entity to a holder entity's carry point over a frame range, drives the object's
centerfrom the holder's motion while attached, and records a possession timeline (held-by id, thenNoneafter detach).Acceptance criteria
[start, end)frames so the object's world point follows the holder (optionally with a fixed carry offset), then detaches atend.Noneafter detach; the detach frame is explicit.order.pyprecedent); the byte-golden analytic manifest is unchanged and the new GT is opt-in.Files / data model to extend
src/multicam_sim/entities.py—Entity/EntityFrame(the object is an entity with acenterpoint that this helper drives).src/multicam_sim/order.py— sidecar precedent for the possession GT.src/multicam_sim/scene.py—Scenecontainer.Open design note
Attachment can be modelled as a build-time helper that bakes the object's frames, or as a declarative binding resolved at manifest time. Either is fine provided the golden manifest stays byte-identical; the choice is left to the maintainer.