A developer replaces 300 lines of storage code. Another changes one entry rule.
| Change | Decision to trace |
|---|---|
| New storage code | Does it preserve behavior, compatibility and pending work? |
| New entry rule | Who may enter now, and who owns that policy? |
| New engine | Where does old unfinished work remain? |
| Retired feature | What happens to existing consumers and obligations? |
Review the consequence. Line count is a poor guide to authority.
| Before | After | Same promise? |
|---|---|---|
| Look up the account in a vector. | Look it up in an index. | Yes, if the same facts and outcomes are preserved. |
| Require confirmation before entry. | Permit entry without confirmation. | No: a different group may enter. |
Engineering Depth
These reference implementations produce different entry behavior:
impl EntryRule for CookieValid {
fn permits(_: bool) -> bool {
true
}
}
impl EntryRule for ConfirmedOnly {
fn permits(confirmed: bool) -> bool {
confirmed
}
}
Selecting ConfirmedOnly changes a product rule. Replacing how an unchanged rule reads its records may be an implementation change.
If a compiler error exposes a forbidden combination, check the requirement before widening the bound. The project owns its checks and release cadence. CS-11, CS-12.
Your Reflection
All tests pass after a bound is relaxed. What decision remains?
Saved in this browser. Export a copy before changing devices.
Worked Discussion
Determine whether the requested change authorizes the newly admitted behavior. Tests can support that decision; they cannot supply the owner's mandate.