(nods) Yeah, I know what you mean. I've entertained the idea, but there's sort of an "order of operations" problem. When I'm rendering a page, I have a choice to make:
With #1, everything generates with the same consistent, post-viewing history. Everybody thinks they've seen everything, even what's being displayed for the first time.
With #2, I would be playing a bit of a shell game. Every time I update a page, I would need to be cognizant of "Does this function need the pre-viewing history? Or the post viewing?" If ever I screwed that up, or introduced something that always needed pre-viewing or post-viewing, I would have to reorder things in my rendering mechanism. This isn't fun.
I might be able to make a modification... essentially, have my "maintain_viewing_history" function return a list of things it considered "unseen" before its call. Then, I would have to change a number of other functions to pay attention to that. It would mean dragging even more parameters through the different rendering calls, but it would be less hellish in the end.
I'll think about it.