Problem
BusinessReport.full_report(include_appendix=True) attempts to append the underlying estimator's summary() output in a Technical Appendix. If that estimator summary raises, the current implementation catches the exception and silently omits the appendix.
That makes the report look complete even though an expected section could not be rendered.
Proposed behaviour
Keep full_report() resilient, but make the appendix failure visible in the markdown output:
- preserve the existing Technical Appendix output when estimator
summary() succeeds;
- when estimator
summary() fails, render a short Technical Appendix note that the appendix is unavailable;
- include only bounded diagnostic information, such as the exception class name;
- do not include tracebacks or raw exception messages, since those may contain local paths, data values, formulas, or other implementation details.
Acceptance criteria
BusinessReport.full_report(include_appendix=True) still returns a report if estimator summary() raises.
- The markdown report includes a visible
## Technical Appendix section explaining that the appendix is unavailable.
- The report does not expose raw exception messages or tracebacks.
- Existing successful appendix rendering remains unchanged.
Problem
BusinessReport.full_report(include_appendix=True)attempts to append the underlying estimator'ssummary()output in a Technical Appendix. If that estimator summary raises, the current implementation catches the exception and silently omits the appendix.That makes the report look complete even though an expected section could not be rendered.
Proposed behaviour
Keep
full_report()resilient, but make the appendix failure visible in the markdown output:summary()succeeds;summary()fails, render a short Technical Appendix note that the appendix is unavailable;Acceptance criteria
BusinessReport.full_report(include_appendix=True)still returns a report if estimatorsummary()raises.## Technical Appendixsection explaining that the appendix is unavailable.