I haven't fully read the proposal yet, however there are some instances where BasicProgress is passed in as optional. For instance:
In Detailed Design the assign function does not return an optional result:
public func assign(count: Int) -> ProgressReporter<Properties>.Progress
Would you mind clarifying, why it is optional in chopFruits and friends? Thank you.