```python
def add_one(tally: dict, name: str, amount: int) -> dict:
    """Return a new tally with the specified amount added to the count of the given name."""
    updated_tally = tally.copy()
    updated_tally[name] = updated_tally.get(name, 0) + amount
    return updated_tally


def merge_tally(left: dict, right: dict) -> dict:
    """Return a new tally with counts from both tallies combined, summing counts for shared names."""
    merged_tally = left.copy()
    for name, amount in right.items():
        merged_tally[name] = merged_tally.get(name, 0) + amount
    return merged_tally
```