Implement Prototype(source OwnedSource) ([]byte,error) with explicit cleanup on ordinary exits; then Solve using defer so cleanup also runs during a source panic. OwnedSource has ReadAll() ([]byte,error) and Close() error. Nil interface returns error without calls. For a nonnil source, ReadAll runs exactly once, Close exactly once after it (including read error). If reading fails, return nil and that classifiable read error even if Close also fails. If only Close fails, return nil and its error. Complete success returns a detached nonnil byte slice, including empty input. Final must close on a ReadAll panic, then let that panic propagate. Typed nil receivers are outside the input domain. Do not return a source-owned buffer.
Edit exercise.go; retain the public types and signatures. prototype and final are separate stages. The executable tests recover panics as failures, report named checks, and exit nonzero on any failure. A successful run must execute at least one check. Tests use logical time or explicit synchronization where relevant.
Complete the starter code, then run the checks.
Results and errors will appear here.