It was fun to read through your blog post - as all these considerations and thoughts are running through my head for months now. I try to achieve exactly the same: I want my game to consist of different stories which are triggered by player's actions and by certain rules (current location, planned todos, certain player stats and NPC stats, already played stories and so on). The overall goal is to make it feel organic and non-linear - in my fantasy one can run through the game several times and can experience complete different stories.
I find it quite difficult to develop a system that consistently stores all the necessary data. I always switch between NPC-related classes (some kind of memory) and some kind of overall protocol. At the moment I decided to stay with a NPC related memory (so that I always know what the NPC can remember of the players choices - some kind of individual memory of a NPC about the players character) and a protocol for some general data. There is also still some kind of story-related memory where I protocol which story was played and which choices the player made / what the outcome was of the story but this makes it more complicated to collect information only relevant for one NPC...
I just write you as it might be interesting to talk about that? I create this system in Renpy / Python but apart from the concrete programming technique I think the overall problems and solutions might be very similar.