Repository: truera/trulens
Issue: Unhandled Exception in feedback function
Root cause: Validation Gap

I see the following exception occuring occasionally when running evaluation on versions 0.20.0 and 0.20.1 (and maybe others). The exception happens in both deferred and normal execution modes.

```
Feedback Function exception caught: Traceback (most recent call last):
  File "/Users/eric.pinzur/Library/Caches/pypoetry/virtualenvs/ragstack-ai-B4Qzu5Pn-py3.11/lib/python3.11/site-packages/trulens_eval/feedback/feedback.py", line 501, in run
    result_and_meta, part_cost = Endpoint.track_all_costs_tally(
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/eric.pinzur/Library/Caches/pypoetry/virtualenvs/ragstack-ai-B4Qzu5Pn-py3.11/lib/python3.11/site-packages/trulens_eval/feedback/provider/endpoint/base.py", line 462, in track_all_costs_tally
    result, cbs = Endpoint.track_all_costs(
                  ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/eric.pinzur/Library/Caches/pypoetry/virtualenvs/ragstack-ai-B4Qzu5Pn-py3.11/lib/python3.11/site-packages/trulens_eval/feedback/provider/endpoint/base.py", line 411, in track_all_costs
    return Endpoint._track_costs(thunk, with_endpoints=endpoints)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/eric.pinzur/Library/Caches/pypoetry/virtualenvs/ragstack-ai-B4Qzu5Pn-py3.11/lib/python3.11/site-packages/trulens_eval/feedback/provider/endpoint/base.py", line 568, in _track_costs
    result: T = thunk()
                ^^^^^^^
  File "/Users/eric.pinzur/Library/Caches/pypoetry/virtualenvs/ragstack-ai-B4Qzu5Pn-py3.11/lib/python3.11/site-packages/trulens_eval/feedback/feedback.py", line 502, in <lambda>
    lambda: self.imp(**ins)
            ^^^^^^^^^^^^^^^
  File "/Users/eric.pinzur/Library/Caches/pypoetry/virtualenvs/ragstack-ai-B4Qzu5Pn-py3.11/lib/python3.11/site-packages/trulens_eval/feedback/groundedness.py", line 165, in groundedness_measure_with_cot_reasons
    i = 0
    ^
UnboundLocalError: cannot access local variable 'reason' where it is not associated with a value

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/eric.pinzur/Library/Caches/pypoetry/virtualenvs/ragstack-ai-B4Qzu5Pn-py3.11/lib/python3.11/site-packages/trulens_eval/feedback/feedback.py", line 506, in run
    raise RuntimeError(
RuntimeError: Evaluation of groundedness_measure_with_cot_reasons failed on inputs: 
{'source': [[{'metadata': {'source': 'data/patronus_ai_financebench/source_files/-6927891925076153667.pdf'},
              'page
cannot access local variable 'reason' where it is not associated with a value.`
```

Attached are the full app and record json:
[app.json](https://github.com/truera/trulens/files/13845626/app.json)
[record.json](https://github.com/truera/trulens/files/13845619/record.json)


Looks like the logic in `groundedness_measure_with_cot_reasons` fails due to the `plausiable_junk_char_min` test. @joshreini1 can you take a look at this?

Was able to reproduce this issue when simple yes/no answers are given by the LLM.

Need to explore further on ideal behavior. I'm not sure groundedness is useful for this edge case where the LLM response does not contain claims to check against evidence. @epinzur would be good to get your thoughts on this too.