Given a requirement for a basic data structure, implement it from scratch using TDD at A tech-focused logistics.
Implement a LIFO stack without using Python's built-in stack behavior. Define run_stack_operations(operations), where each operation is ['push', value], ['pop'], ['peek'], or ['is_empty']; return one result per operation, using null when pop or peek is called on an empty stack. The implementation should support constant-time push, pop, and peek operations and should be structured so its behavior can be tested independently.
def run_stack_operations(operations):