II.
MergePolicy JSON
Structured · livemerge-policy:most-restrictive
Most-restrictive-wins (hooks-adapter default) json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "merge-policy:most-restrictive",
"_kind": "MergePolicy",
"_file": "channels-hooks/merge-policies/most-restrictive.yaml",
"_cluster": "channels-hooks",
"attributes": {
"displayName": "Most-restrictive-wins (hooks-adapter default)",
"decisionRule": "most-restrictive-wins",
"envMergeRule": "deep-merge",
"systemMessageStrategy": "concatenate",
"arraysMergeRule": "replace",
"description": "The default hooks-adapter merge policy. The decision verb collapses by\nmost-restrictive-wins (deny < ask < allow < continue < noop). Plain\nobjects (persistEnv, contextVars, metadata) are deep-merged with later\nhandlers overwriting earlier ones at conflicting leaves; arrays are\nreplaced wholesale rather than concatenated. systemMessage strings are\nconcatenated across handlers in registration order.\n"
},
"outgoingEdges": [
{
"from": "merge-policy:most-restrictive",
"to": "decision-verb:deny",
"kind": "merge_policy_orders_decision_verb",
"attributes": {
"rank": 1
}
},
{
"from": "merge-policy:most-restrictive",
"to": "decision-verb:ask",
"kind": "merge_policy_orders_decision_verb",
"attributes": {
"rank": 2
}
},
{
"from": "merge-policy:most-restrictive",
"to": "decision-verb:allow",
"kind": "merge_policy_orders_decision_verb",
"attributes": {
"rank": 3
}
},
{
"from": "merge-policy:most-restrictive",
"to": "decision-verb:continue",
"kind": "merge_policy_orders_decision_verb",
"attributes": {
"rank": 4
}
},
{
"from": "merge-policy:most-restrictive",
"to": "decision-verb:noop",
"kind": "merge_policy_orders_decision_verb",
"attributes": {
"rank": 5
}
}
],
"incomingEdges": [
{
"from": "hook-surface:decision-point",
"to": "merge-policy:most-restrictive",
"kind": "uses_merge_policy",
"attributes": {}
}
]
}