Reviewer calibration for behavioral contracts
For BD1 accept a simple function, explicit transition table or composed object when the learner explains the actual change pressure. Strategy is not mandatory for one stateless policy. Template Method fixes a skeleton while subclasses supply steps; it is not inherently bound to compile-time selection. Iterator exposes a traversal contract; Chain must define first-handler versus all-handler semantics.
BD2: new subscriptions wait until the next publication; canceled pending tokens are skipped; duplicates have separate tokens; ordinary Exceptions are collected in order and other callbacks continue. Nested publish rejects before any nested delivery. A changed callback-snapshot contract may be valid but is not the current lab contract.
BD3: disposal removes the provider’s reference, close cancels pending callbacks, and closed publishers reject subscribe/publish. The currently running stack can still hold a callback until dispatch finishes. Do not demand immediate memory reclamation as the API guarantee.
BD4: rejected edits preserve the complete history snapshot. Valid no-ops preserve redo. A real edit after undo truncates the redo branch; boundary undo/redo returns false. Immutable strings and tuple snapshots prevent caller mutation through returned history. Snapshot storage grows with retained text versions.
BD5: neither order of a local ID write and an external send closes both crash windows. Require explicit receiver coordination or honest uncertain-outcome handling. Callback exception isolation is not atomic rollback of earlier effects.
BD6: inspect the learner’s code, retained traces and independent explanation. Change cancellation order, add a failing listener, or change an edit range. A copied reference can calibrate setup but does not establish independent reasoning. Review/pilot status of this curriculum remains separate from a learner’s result.
Scope alongside C01–C10
This key grades the runtime comparison package only. The core key grades the different core API. C02/C03 and BD2/BD4 can therefore require different traces without contradiction. Require the learner to identify the API before judging a response or mutant.