A Brief Explanation
(Thanks to DinkumThinkum, Emma, Iudas, Qarl and others for this information.)
The so-called "72-Hours Bug" is not really a bug at all - nor is it necessarily 72 game hours.
The time is set by fCorpseClearDelay (see "Game Settings"), which defaults to 72, and which also controls the delay before non-persistent corpses vanish.
After the specified time, some temporary data is cleared to improve game performance.
Examples include:
• Talked to PC flag (dialogue) is reset.
• ForceGreeting: an actor will not be available for a ForceGreeting after the specified time unless "Corpses persist" is checked in the object info box.
• Actor stats and skills are reset to editor/autocalc levels.
• AI resets: e.g. an actor in combat with the player but with a low fight setting will no longer attack.
• Targeted scripts on non-persistent objects lose their targeting.
• OnActivate may be reset (see function description for more details).
Specific workarounds are mentioned in the relevant function's description. Alternatively, other methods can be used to store information. For example:
• A script that runs at least once each load session can be used to keep track of information, e.g. a companion's stats and skills.
• Journal entries or global variables can be used to store information, e.g. as a substitute for the Talked to PC flag.
• Token items may be added to an actor's inventory (or a refs persist container).
Of course, other workarounds may be devised. Note that it is usually not advisable to change the value of fCorpseClearDelay, as GMSTs are not accessible to script and your change may break mods which rely on time-dependent methods of avoiding the loss of temporary data. (Changing the setting to a higher value is less likely to break other mods, but more likely to cause CTDs for those whose system can't cope with the amount of data stored.)