Memory contract assessment calibration
- MP1: one owner per allocation; length denotes initialized elements. Element pointers are borrowed. Successful replacement ends the old storage lifetime, even if a future allocator returns a familiar address. A shallow owner copy is not a clone.
- MP2: capacity cannot exceed SIZE_MAX/sizeof(int). Bound before multiply or add. A small artificial limit exercises the same branch logic; rejected planning leaves the output sentinel unchanged.
- MP3: initial failure leaves an empty owner; later failure preserves prior values and fields. A one-shot injected failure allows retry. Failed requests do not require freeing nonexistent allocations.
- MP4: index-based reacquisition, every successful allocation released once, empty reset after destroy, repeated destroy harmless, and reuse while allocator context remains live. No numerical inspection of a stale pointer as evidence.
- MP5: commands/results plus a before/after regression. Tool output alone cannot grade ownership reasoning; tests cover finite sequences. Unsupported instrumentation is not passed.
- MP6: a fresh trace defended independently, help record and honest limitations. Allocate-copy-release temporarily needs both allocations. Generic fallible element copies and concurrent readers require contracts beyond this int-only lab.