There are a couple things to keep in mind when consider the "how do I achieve this" when there are multiple routes.
For processing alarms, you generally have four places you can affect the behavior: the source probe configuration, NAS preprocessing script, alarm enrichment probe, and nas AO script.
In my usage, I categorize my functionality like:
Source probe: this is core functionality
NAS preprocessing script: this is functionality that should have been in the source probe or functionality that impacts most/all alarms similarly and/or functionality that would affect how nas ultimately handles the alarm.
Alarm enrichment: Addition of well structured database data to most/all alarms
NAS AO: All other automation
From a growth standpoint, the preprocessing script option doesn't scale well - NAS will pick only a single one of the matching preprocessing profiles and run it. So in your case you couldn't have a process profile that adds text to some alerts and a preprocess profile that changes severity for some overlapping set of alarms and expect that common set to have both operations applied. What I have found is that you really can only have a single monolithic preprocessing script and then incorporate into it the profile filter logic.
Also, it was mentioned before, but preprocessing scripts operate on an "event" and AOs operate on an "alarm". Or maybe in a different perspective, the preprocessing function is a filter - it accepts a stream of events, filters them, and emits a stream of events. AO profiles are different, they match an existing alarm, operate on it and save the results, that save event retriggers the evaluation of whether any AO profiles match. The result is that AO profiles can create loops in processing while a preprocessing script can not.
So, to your question, the operation "appends specific verbiage to an alert AND changes the severity of the alert" is a good candidate for a preprocessing script. This is essentially a "source probe generates an incorrect alarm which needs to be corrected" event.
The "I want nothing appended to the alert message until the overdue age reaches 6 hours" part requires an AO for two reasons - First, there's no "time" data that's usable in a preprocessing script related to the alarm message, and second, the preprocessing script operates on the inbound data before it becomes an alarm and so there's nothing cause the nas to do something after 6 hours.
Your AO to change the priority would look something like:
al = alarm.get () -- retrieve the alarm data related to the activated profile
al.level = 5 -- Set the alarm level to critical
alarm.set(al) -- Store the alarm back to the nas
Your profile would need to have the matching criteria and the overdue age set.