### ftl_project_expert/cli.py:_reasons_export
VERDICT: PASS
CORRECTNESS: VALID
SPEC_COMPLIANCE: N/A
ISSUE_COMPLIANCE: ADDRESSES
BELIEF_COMPLIANCE: N/A
TEST_COVERAGE: UNTESTED
INTEGRATION: WIRED
REASONING: The change switches from capturing standard output in Python to passing an explicit output path `-o` directly to the `reasons` CLI. This prevents massive string buffers in memory for large networks (e.g. 10k+ beliefs / 3.9 MB) and allows the subprocess to write the file directly. Correct return code checking is preserved, and the updated file message is only printed on success.
---

### ftl_project_expert/cli.py:_load_network
VERDICT: PASS
CORRECTNESS: VALID
SPEC_COMPLIANCE: N/A
ISSUE_COMPLIANCE: ADDRESSES
BELIEF_COMPLIANCE: N/A
TEST_COVERAGE: UNTESTED
INTEGRATION: WIRED
REASONING: Adds extremely defensive logic around loading and parsing `network.json`. It gracefully catches `json.JSONDecodeError`, `ValueError`, and `FileNotFoundError`. If corruption, empty files, or missing files are detected, it issues a warning, attempts to re-generate the file using `reasons export -o`, and retries parsing. If all else fails, it falls back to returning `{"nodes": {}}` instead of crashing. This directly solves the empty/corrupt file parsing failures observed during derive runs.
---

### SELF_REVIEW
LIMITATIONS:
- Did not have access to run automated tests or execute code dynamically as the environment policy restricts shell tool execution.
- Assumed `-o` is a supported and standard output argument of the external `reasons` CLI tool.
---
