FSO Learning

Core Ideas

Change the Promise Deliberately

Classify a change by its consequence, not its line count.

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.

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?

Worked Discussion

Determine whether the requested change authorizes the newly admitted behavior. Tests can support that decision; they cannot supply the owner's mandate.

Navigate