### ftl_project_expert/cli.py
VERDICT: CONCERN
CORRECTNESS: QUESTIONABLE
SPEC_COMPLIANCE: N/A
ISSUE_COMPLIANCE: N/A
BELIEF_COMPLIANCE: N/A
TEST_COVERAGE: UNTESTED
INTEGRATION: PARTIAL
REASONING: 
1. **Filtering Bug in `_select_beliefs_for_research`**:
   ```python
   if not negative and not has_justifications:
       pass  # premises are valid candidates
   ```
   This is a dead branch. Since it only executes a `pass` and proceeds to append the candidate regardless, ALL beliefs (both premises and derived beliefs) are appended to the candidate list when `negative` is `False`. If the intent was to restrict candidates to premises, this condition must filter (e.g., using `continue` for derived beliefs).
2. **GitLab Identifier Limitations in `_extract_issue_refs`**:
   The regexes specifically ignore and exclude `GL-` and `MR-` prefixes under Jira-style matches:
   ```python
   if jira_key.startswith(("GH-", "PR-", "GL-", "MR-")):
       continue
   ```
   However, these are not matched anywhere else in the extractor. As a result, GitLab issue references (`GL-123`) and Merge Requests (`MR-123`) are completely dropped. Only the generic `#123` format is extracted.
3. **No Tests**: No tests exist in the workspace to cover the newly introduced research functionality.
---

### 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 contains correctly placed and named format placeholders (`belief_id`, `belief_text`, `belief_status`, `source_entry`, `artifacts`, `dependents`) that exactly match the formatting invocation in `cli.py`. There are no stray curly braces that would cause runtime formatting errors.
---

### ftl_project_expert/prompts/__init__.py
VERDICT: PASS
CORRECTNESS: VALID
SPEC_COMPLIANCE: N/A
ISSUE_COMPLIANCE: N/A
BELIEF_COMPLIANCE: N/A
TEST_COVERAGE: UNTESTED
INTEGRATION: WIRED
REASONING: Correctly imports and exposes `RESEARCH_PROMPT` in `__all__` to make it accessible to `cli.py`.
---

### 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 invokes the GitHub CLI (`gh pr view`) to retrieve PR details, handles non-zero exit codes gracefully by raising a descriptive `RuntimeError`, and correctly normalizes the output via `_normalize_pr` to return a `PullRequest` dataclass.
---

### SELF_REVIEW
LIMITATIONS:
- There is no test suite in the workspace (no test files matching `**/*test*.py` or configured in `pyproject.toml`). Therefore, validation is limited strictly to static analysis of code correctness and integration.
- The output formats of external CLIs (such as `reasons show` and `gh pr view`) are assumed from the parser implementation details because live sandboxes or mocks for those tools are not available.
---

### FEATURE_REQUESTS
- **Automated Tests**: Establish a standardized test framework (e.g., pytest) with unit tests for adapter parsers and regex extractors.
- **GitLab MR Research Support**: Implement a `get_pr` adapter method in `GitLabSource` and update `_extract_issue_refs` to support `GL-` and `MR-` format identifiers.
---
