Assessment Solutions and Scoring
Preserve the first independent attempt. Equivalent designs with sound contracts and evidence are acceptable. Use the 0–3 gate rubric.
A01 / C01
Inspect domain decisions, dependencies, change history and invariants. A pure coherent kernel can stay intact; a short coordinator mixing unrelated storage and presentation policy may benefit from a boundary. Neither size flag proves the diagnosis. Score 2 only with concrete evidence and an alternative.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.
A02 / C02
Initially 8/(); after deposit 10/(2,); retained snapshot (2,); after withdraw 5, balance 5/history (2,-5); rejected 9 leaves those unchanged. A shallow tuple can still share mutable elements; their ownership or immutability must protect the observation.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.
A03 / C03
At balance 3, withdraw 1 is valid and affordable for the original contract but rejected by the subtype: a strengthened precondition. If the base contract permits provider-specific minimums under specified rules, rejecting 1 may conform; the client must follow that broader contract. Class names alone do not settle it.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.
A04 / C04
Constructor injection changes assembly, but policy remains source-coupled to vendor types. Define policy-level records/results and meaningful errors, adapt vendor details in infrastructure and wire at an entry point. A fake can differ in transactions, failure modes or persistence; isolated tests do not prove adapter integration.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.
A05 / C05
With a stable closed node set and frequently added operations, an external operation over all variants may localise change and expose omissions. With frequent external variants and stable operations, polymorphism can be attractive. Include dispatch coverage and compatibility, not an absolute ban on switches.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.
A06 / C06
There is a local naming change, a dict-to-object representation change and a public API change. Check row shape, missing-key versus attribute errors, reflective/string consumers, stored formats and external clients. Separate migration from pure rename and provide an adapter/alias/version strategy where necessary.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.
A07 / C07
A consumed generator contributes no rows to the second traversal, so a total may be wrong; late input failure may follow an already written header. Materialising and validating once before rendering avoids those input failure writes and costs linear memory. A sink can partially write and fail; that contract does not promise external atomicity.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.
A08 / C08
Frozen blocks ordinary field reassignment but does not deep-freeze metadata. Floating values and assertion-only validation do not establish exact currency arithmetic. The lab uses integer minor units, explicit currency/domain validation, immutable exposed values and nonnegative constraints at account operations. Document excluded conversion, rounding and concurrency.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.
A09 / C09
The run records an observation for that workload/environment, not universal improvement or a causal controlled result. Warm-up, order, runtime noise and changed data may confound it. Check opening+sum(history)=cached balance across successes and failures; report operation counts, repeated timings, sizes, environment and memory cost.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.
A10 / C10
Keep snapshot history stable for existing callers; introduce a separately named live-view capability only if needed and define lifetime, mutation, iteration and concurrency limits. Alternatively let the caller re-query snapshots or consume explicit events. Do not silently weaken the old guarantee. Present need, migration cost and measured usage govern the decision, not the count of hypothetical providers.
Repair: revisit the mapped practice evidence, then defend a changed case without this key.