Nice idea Deon.
I've just looked through the stock positions raws and came up with a logical structure of how positions might be reappointed when they are lost.
I've tried to keep the relationships reasonably realistic.
The first chart shows the standard positions and you can see how the Mayor is a single point of failure.
The second chart shows appointment changes that would give better disaster recovery.
Here are the position raws that should implement this: (not tested)
[POSITION:MILITIA_COMMANDER]
[NAME:militia commander:militia commanders]
[SITE]
[NUMBER:1]
[SQUAD:10:militia-dwarf:militia-dwarves]
[APPOINTED_BY:EXPEDITION_LEADER]
[APPOINTED_BY:MAYOR]
[APPOINTED_BY:SHERIFF]
[APPOINTED_BY:CAPTAIN_OF_THE_GUARD]
[APPOINTED_BY:MILITIA_CAPTAIN]
[RESPONSIBILITY:MILITARY_STRATEGY]
[COMMANDER:MILITIA_CAPTAIN:ALL]
[PRECEDENCE:120]
[DO_NOT_CULL]
[DUTY_BOUND]
[POSITION:MILITIA_CAPTAIN]
[NAME:militia captain:militia captains]
[SITE]
[NUMBER:AS_NEEDED]
[SQUAD:10:militia-dwarf:militia-dwarves]
[APPOINTED_BY:MILITIA_COMMANDER]
[PRECEDENCE:200]
[DO_NOT_CULL]
[DUTY_BOUND]
[MILITARY_SCREEN_ONLY]
[POSITION:SHERIFF]
[NAME:sheriff:sheriffs]
[SITE]
[NUMBER:1]
[RESPONSIBILITY:LAW_ENFORCEMENT]
[APPOINTED_BY:EXPEDITION_LEADER]
[APPOINTED_BY:MAYOR]
[REPLACED_BY:CAPTAIN_OF_THE_GUARD]
[PRECEDENCE:130]
[DO_NOT_CULL]
[COLOR:1:0:1]
[ACCOUNT_EXEMPT]
[DUTY_BOUND]
[REQUIRED_BOXES:1]
[REQUIRED_CABINETS:1]
[REQUIRED_RACKS:1]
[REQUIRED_STANDS:1]
[REQUIRED_OFFICE:100]
[REQUIRED_BEDROOM:100]
[REQUIRED_DINING:100]
[POSITION:CAPTAIN_OF_THE_GUARD]
[NAME:captain of the guard:captains of the guard]
[SITE]
[NUMBER:1]
[RESPONSIBILITY:LAW_ENFORCEMENT]
[SQUAD:10:fortress guard:fortress guards]
[APPOINTED_BY:EXPEDITION_LEADER]
[APPOINTED_BY:MAYOR]
[REQUIRES_POPULATION:50]
[PRECEDENCE:105]
[DO_NOT_CULL]
[COLOR:1:0:1]
[ACCOUNT_EXEMPT]
[DUTY_BOUND]
[REQUIRED_BOXES:1]
[REQUIRED_CABINETS:1]
[REQUIRED_RACKS:1]
[REQUIRED_STANDS:1]
[REQUIRED_OFFICE:250]
[REQUIRED_BEDROOM:250]
[REQUIRED_DINING:250]
[POSITION:EXPEDITION_LEADER]
[NAME:expedition leader:expedition leaders]
[SITE]
[NUMBER:1]
[APPOINTED_BY:SHERIFF]
[APPOINTED_BY:CAPTAIN_OF_THE_GUARD]
[APPOINTED_BY:MANAGER]
[REPLACED_BY:MAYOR]
[RULES_FROM_LOCATION]
[RESPONSIBILITY:MEET_WORKERS]
[RESPONSIBILITY:RECEIVE_DIPLOMATS]
[RESPONSIBILITY:MILITARY_GOALS]
[PRECEDENCE:110]
[DO_NOT_CULL]
[ACCOUNT_EXEMPT]
[DUTY_BOUND]
[POSITION:MAYOR]
[NAME:mayor:mayors]
[SITE]
[NUMBER:1]
[APPOINTED_BY:SHERIFF]
[APPOINTED_BY:CAPTAIN_OF_THE_GUARD]
[APPOINTED_BY:MANAGER]
[RESPONSIBILITY:MEET_WORKERS]
[RESPONSIBILITY:RECEIVE_DIPLOMATS]
[RESPONSIBILITY:MILITARY_GOALS]
[REQUIRES_POPULATION:50]
[RULES_FROM_LOCATION]
[ELECTED]
[PRECEDENCE:60]
[FLASHES]
[BRAG_ON_KILL]
[CHAT_WORTHY]
[DO_NOT_CULL]
[KILL_QUEST]
[COLOR:5:0:0]
[ACCOUNT_EXEMPT]
[DUTY_BOUND]
[DEMAND_MAX:2]
[MANDATE_MAX:1]
[REQUIRED_BOXES:2]
[REQUIRED_CABINETS:1]
[REQUIRED_RACKS:1]
[REQUIRED_STANDS:1]
[REQUIRED_OFFICE:500]
[REQUIRED_BEDROOM:500]
[REQUIRED_DINING:500]
[POSITION:MANAGER]
[NAME:manager:managers]
[SITE]
[NUMBER:1]
[RESPONSIBILITY:MANAGE_PRODUCTION]
[APPOINTED_BY:EXPEDITION_LEADER]
[APPOINTED_BY:MAYOR]
[APPOINTED_BY:CHIEF_MEDICAL_DWARF]
[PRECEDENCE:160]
[DO_NOT_CULL]
[COLOR:5:0:0]
[DUTY_BOUND]
[REQUIRED_OFFICE:1]
[POSITION:CHIEF_MEDICAL_DWARF]
[NAME:chief medical dwarf:chief medical dwarves]
[SITE]
[NUMBER:1]
[RESPONSIBILITY:HEALTH_MANAGEMENT]
[APPOINTED_BY:EXPEDITION_LEADER]
[APPOINTED_BY:MAYOR]
[APPOINTED_BY:MANAGER]
[APPOINTED_BY:BROKER]
[PRECEDENCE:165]
[DO_NOT_CULL]
[COLOR:5:0:0]
[DUTY_BOUND]
[POSITION:BROKER]
[NAME:broker:brokers]
[SITE]
[NUMBER:1]
[RESPONSIBILITY:TRADE]
[APPOINTED_BY:EXPEDITION_LEADER]
[APPOINTED_BY:MAYOR]
[APPOINTED_BY:CHIEF_MEDICAL_DWARF]
[APPOINTED_BY:BOOKKEEPER]
[PRECEDENCE:170]
[DO_NOT_CULL]
[COLOR:5:0:0]
[DUTY_BOUND]
[POSITION:ARSENAL_DWARF]
[NAME:arsenal dwarf:arsenal dwarves]
[SITE]
[NUMBER:1]
[RESPONSIBILITY:UPGRADE_SQUAD_EQUIPMENT]
[RESPONSIBILITY:EQUIPMENT_MANIFESTS]
[RESPONSIBILITY:SORT_AMMUNITION]
[APPOINTED_BY:EXPEDITION_LEADER]
[APPOINTED_BY:MAYOR]
[APPOINTED_BY:MILITIA_COMMANDER]
[APPOINTED_BY:BOOKKEEPER]
[REQUIRES_POPULATION:20]
[PRECEDENCE:179]
[DO_NOT_CULL]
[COLOR:5:0:0]
[DUTY_BOUND]
[REQUIRED_OFFICE:1]
[POSITION:BOOKKEEPER]
[NAME:bookkeeper:bookkeepers]
[SITE]
[NUMBER:1]
[RESPONSIBILITY:ACCOUNTING]
[APPOINTED_BY:EXPEDITION_LEADER]
[APPOINTED_BY:MAYOR]
[APPOINTED_BY:BROKER]
[APPOINTED_BY:ARSENAL_DWARF]
[PRECEDENCE:180]
[DO_NOT_CULL]
[COLOR:5:0:0]
[DUTY_BOUND]
[REQUIRED_OFFICE:1]