### ftl_project_expert/cli.py:research
VERDICT: CONCERN
CORRECTNESS: QUESTIONABLE
SPEC_COMPLIANCE: N/A
ISSUE_COMPLIANCE: N/A
BELIEF_COMPLIANCE: N/A
TEST_COVERAGE: UNTESTED
INTEGRATION: WIRED
REASONING: The new command and its supporting helper functions are successfully registered, but several logical concerns exist:
1. **Incomplete filtering in selection**: `_select_beliefs_for_research` includes `OUT` beliefs even when `negative` is `False`, which may lead to unexpectedly researching negative/retracted beliefs by default.
2. **Platform and type mismatch**: `_extract_issue_refs` extracts references across platforms indiscriminately. If `platform == "github"` and a Jira key (e.g., `PROJ-123`) is found, `_fetch_artifacts` calls `GitHubSource.get_issue("PROJ-123")` which expects an `int` and will raise a `RuntimeError` (caught safely, but incorrect behavior).
3. **Platform feature parity gap**: If `platform == "gitlab"`, any merge request reference is parsed as `"pr"` but is not fetchable as `GitLabSource` lacks a `get_pr` implementation, reverting to a `(Could not fetch pr #...)` message.
4. **No tests**: There is no test coverage for the command or its helper functions.
---

### ftl_project_expert/prompts/research.py
VERDICT: PASS
CORRECTNESS: VALID
SPEC_COMPLIANCE: N/A
ISSUE_COMPLIANCE: N/A
BELIEF_COMPLIANCE: N/A
TEST_COVERAGE: UNTESTED
INTEGRATION: WIRED
REASONING: The prompt template file is correctly structured, and all placeholder variables (`belief_id`, `belief_text`, `belief_status`, `source_entry`, `artifacts`, `dependents`) perfectly align with the keys passed by the research command.
---

### ftl_project_expert/sources/github.py:GitHubSource.get_pr
VERDICT: PASS
CORRECTNESS: VALID
SPEC_COMPLIANCE: N/A
ISSUE_COMPLIANCE: N/A
BELIEF_COMPLIANCE: N/A
TEST_COVERAGE: UNTESTED
INTEGRATION: WIRED
REASONING: Correctly implements fetching of a single Pull Request via `gh pr view` and uses the existing `_normalize_pr` parser, keeping parity with the existing `list_prs` structure. It is fully integrated with the `research` command.
---

### SELF_REVIEW
LIMITATIONS:
- We could not see the actual schema or outputs of `reasons export` or `reasons show` directly, so we had to infer whether `dependents` is a valid attribute of the exported JSON node.
- The repository has no existing unit tests or test framework configurations, making it impossible to evaluate if tests were missing due to local conventions or if there is simply no testing architecture.
---
