Composition trace practice
Attempt each case before consulting the calibration.
- Convert "0.10", "12.5000", "12.501" and the float 12.5. Calibration: 10, 1250, rejection, rejection. State the decimal-string contract and why no rounding occurs.
- A fake provider fails transiently once, then succeeds. Predict logs for both wrapper orders. Calibration: logical: start/success; attempt: start/error:TransientError/start/success.
- The provider succeeds but conversion rejects its currency. Budget is five. Calibration: one provider call; start/error:ValueError in either order. A permanent contract error is not a transient provider failure.
- Call the same retry wrapper twice, each time with an always-failing provider and budget two. Calibration: four total invocations; each logical call gets a new budget.
- Enter manager A, then B fails to enter. Calibration: A exits; B must clean up its own partially acquired state. A successfully entered B would exit before A.
- A caller provides a shared quote provider and an event list. Calibration: build_quote borrows the provider and appends to the caller-owned list; it does not own provider cleanup. Explain how this differs from open_bundle.
- Choose a factory function versus Abstract Factory for one product versus a related family. Calibration: prefer the simpler function until family consistency or substitution pressure justifies a larger interface; tests must still establish compatibility.
Record the failed prediction, exact missing contract and a changed case. Guided calibration is not independent assessment evidence.