When I debug, however, Get(Eval('context', {}), 'egob_employee', -1) always evaluates to -1, even though egob_employee is correctly set in the context. As a result, no records ever match.
You can not base record rule on the context, it would be too easy to by pass as the caller can forge the context.
If you want to write record rules based on specific value, you must extend _get_context method of ir.rule to set the content you want to use. You also need to update the cache keys from _get_cache_key to be sure that different contexts have different cache key.
You may have a look at modules/timesheet/ir.py to see how employees is added to the rules of some models.