Plan Observability
Workflow actions expose an observability block intended for operator visibility.
It is descriptive, not prescriptive.
Fields
| Field | Values | Interpretation |
|---|---|---|
prod_comparison_at_plan |
equal|different|unknown|not_applicable |
Point-in-time structural comparison at plan generation. |
comparison_reason |
enum reason | Machine-readable explanation for the comparison result. |
Reason Codes
matched_after_normalization: equivalent after normalization and ID patching.content_diff_detected: meaningful structural diff detected.unresolved_future_ids: cannot compare confidently because some dependencies are unresolved in plan phase.target_missing_in_prod: no workflow target exists in PROD for comparison.normalization_failed: comparison pipeline could not normalize safely.prod_read_failed: comparison was blocked by inability to fetch target state.
Noise Filtering for Comparison
NDploy ignores non-functional metadata to reduce false positives in equivalence checks. Examples include:
nodes[*].idnodes[*].positionnodes[*].credentials.*.namestaticDatacachedResultUrl
Operational Rule
Use observability to estimate impact before apply, but use apply logs and final status to assert what happened.
Example
{
"type": "WORKFLOW",
"action": "UPDATE",
"name": "Billing - Process Invoice",
"observability": {
"prod_comparison_at_plan": "equal",
"comparison_reason": "matched_after_normalization"
}
}