Preamble (altered to reflect comment trail)
With a rule NOT( ISNULL( Maintenance__c ) )
and workflow evaluation criteria of:
Evaluation Criteria : created, and any time it’s edited to subsequently meet criteria
The workflow rule only executes if the value of the field changes from null to nonNull or when the record is created.
The workflow will not evaluate at all if the Maintenance__c
changes from one non-null value to another non-null value as that won't "subsequently meet criteria" (true is still true). Note, for time-based workflows, the Every time it is edited
evaluation radio button is not available.
Once the time-based workflow is entered for the object, the object stays in that workflow until the time-based condition is no longer true (maintenance start date becomes null) or the time trigger finally happens (345 days after account.maintenance_start_date__c
). If the maintenance start date is changed on the Account, the time based trigger adjusts accordingly per the doc:
What happens if I update the value of a date field used in a time
trigger? If you update the date field used in a time trigger,
Salesforce recalculates the time trigger as long as the time trigger
has not yet fired and the recalculation does not reschedule the time
trigger to a date in the past.
For example, if a workflow rule alerts the opportunity owner seven
days before the opportunity close date and the close date is set to
2/20/2008, Salesforce sends the alert on 2/13/2008. If you update the
close date to 2/10/2008 and the current date is 2/2/2008 or before,
Salesforce reschedules the alert for 2/3/2008. The evaluation date of
pending actions is ALWAYS reevaluated and updated if necessary
irrespective of the rule criteria. Of course, if the rule is evaluated
to false, it does not matter as the actions are removed from the
queue.
If you were backdating to a date in the past, per the doc, the time trigger does not adjust
The problem is with how you are trying to get the workflow rule to fire. As crop1645 commented, changing the date will not cause the workflow rule to fire. Take a look at this help doc here.
Your workflow rule is set to fire when the record is created, and any time it’s edited to subsequently meet criteria:
(Default) Evaluate the rule criteria each time a record is created or
updated.
For a new record, run the rule if the rule criteria is met.
For an updated record, run the rule only if the record is changed from
not meeting the rule criteria to meeting the rule criteria.
With this option, the rule can run multiple times per record, but it
won’t run when the record edits are unrelated to the rule criteria.
For example, suppose that for an opportunity record to meet the rule
criteria, the opportunity probability must be greater than 50%. If you
create an opportunity with a probability of 75%, the workflow rule
runs. If you edit that opportunity by changing the probability to 25%,
the edit doesn't cause the rule to run. If you then edit that
opportunity by changing the probability from 25% to 75%, the edit
causes the rule to run. With this last edit, the rule runs, because
the record is changed from not meeting the rule criteria to meeting
the rule criteria.
Since you cannot use the "created, and every time it’s edited" with time-dependant actions, you could toggle the record type of the record to not match and then match the criteria or modify your criteria even temporarily to look at another field that does not match the criteria and then make it match the criteria, like a temporary flag field.
As far as the the help docs, I don't think they are contradicting each other, just misinterpreted. The first doc you quoted had additional detail in that section that states if the date is in the past then it will set it to the next future date, whereas the second one has the same example with an additional line stating if a future date isn't available then it will be set to trigger immediately.
From the first doc:
What happens if I update the value of a date field used in a time trigger?
If you update the date field used in a time trigger, Salesforce
recalculates the time trigger as long as the time trigger has not yet
fired and the recalculation does not reschedule the time trigger to a
date in the past.
For example, if a workflow rule alerts the opportunity owner seven
days before the opportunity close date and the close date is set to
2/20/2008, Salesforce sends the alert on 2/13/2008. If you update the
close date to 2/10/2008 and the current date is 2/2/2008 or before,
Salesforce reschedules the alert for 2/3/2008. The evaluation date of
pending actions is ALWAYS reevaluated and updated if necessary
irrespective of the rule criteria. Of course, if the rule is evaluated
to false, it does not matter as the actions are removed from the
queue.
Second doc:
If you change a date field that is referenced by an unfired time
trigger in a workflow rule that has been evaluated, Salesforce
recalculates the unfired time triggers associated with the rule. For
example, if a workflow rule is scheduled to alert the opportunity
owner seven days before the opportunity close date and the close date
is set to 2/20/2011, Salesforce sends the alert on 2/13/2011. If the
close date is updated to 2/10/2011 and the time trigger hasn't fired,
Salesforce reschedules the alert for 2/3/2011. If Salesforce
recalculates the time triggers to a date in the past, Salesforce
triggers the associated actions shortly after you save the record.
Best Answer
The 'rule trigger date' is defined in the Workflow Rule criteria. You can view those a little further down the screen in the section 'Rules using this field update'.
Then in the 'Rule Criteria' field you will see some criteria. The moment those are met is the 'Rule Trigger Date'.