Model Versioning + Scheduling

Has anyone attempted a model design that incorporates both versioning
and
scheduling of model changes?

As an example implementation:

Each model version has a publish_on and expire_on date, the latest
version
that should be live, is presented.

id content_id version publish_on expire_on content
1 1 v1 1/2/2013 nil
foo
2 1 v2 1/4/2013 1/7/2013
bar

On 1/1, there’s nothing published/
1/2 to 1/3, version 1 is live, content = foo
1/4 to 1/6, version 2 is live, content = bar
on 1/7, back to version 1, content = foo

This would handle: the idea of promotions, scheduled changes, old
content
removal, and provide an audit view of old versions (similar to the idea,
but not structure of papertrail).

I would rather not reinvent the wheel here, but I am definitely open to
suggestions / thoughts.

Thanks in advance.