| 
						
						
						
					 | 
					 | 
					@ -1,73 +1,69 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					workflow
 | 
					 | 
					 | 
					 | 
					workflow
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					========
 | 
					 | 
					 | 
					 | 
					========
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Manage control of repeat jobs.  `gui/workflow` provides a simple
 | 
					 | 
					 | 
					 | 
					Tags:
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					:dfhack-keybind:`workflow`
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					:dfhack-keybind:`fix-job-postings`
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					Manage repeat jobs according to stock levels. `gui/workflow` provides a simple
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					front-end integrated in the game UI.
 | 
					 | 
					 | 
					 | 
					front-end integrated in the game UI.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Usage:
 | 
					 | 
					 | 
					 | 
					When the plugin is enabled, it protects all repeat jobs from removal. If they do
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					disappear due to any cause (raw materials not available, manual removal by the
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					player, etc.), they are immediately re-added to their workshop and suspended.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					If any constraints on item amounts are set, repeat jobs that produce that kind
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					of item are automatically suspended and resumed as the item amount goes above or
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					below the limit.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					``workflow enable [option...], workflow disable [option...]``
 | 
					 | 
					 | 
					 | 
					There is a good amount of overlap between this plugin and the vanilla manager
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   If no options are specified, enables or disables the plugin.
 | 
					 | 
					 | 
					 | 
					workorders, and both systems have their advantages. Vanilla manager workorders
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   Otherwise, enables or disables any of the following options:
 | 
					 | 
					 | 
					 | 
					can be more expressive about when to enqueue jobs. For example, you can gate the
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					activation of a vanilla workorder based on availability of raw materials, which
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					you cannot do in ``workflow``. However, ``workflow`` is often more convenient
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					for quickly keeping a small stock of various items on hand without having to
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					configure all the vanilla manager options. Also see the `orders` plugin for
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					a library of manager orders that may make managing your stocks even more
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					convenient than ``workflow`` can.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   - drybuckets: Automatically empty abandoned water buckets.
 | 
					 | 
					 | 
					 | 
					Usage:
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   - auto-melt: Resume melt jobs when there are objects to melt.
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					``enable workflow``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    Start monitoring for and managing workshop jobs that are set to repeat.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					``workflow enable|disable drybuckets``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    Enables/disables automatic emptying of abandoned water buckets.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					``workflow enable|disable auto-melt``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    Enables/disables automatic resumption of repeat melt jobs when there are
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    objects to melt.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					``workflow count <constraint-spec> <target> [gap]``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    Set a constraint, counting every stack as 1 item. If a gap is specified,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    stocks are allowed to dip that many items below the target before relevant
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    jobs are resumed.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					``workflow amount <constraint-spec> <target> [gap]``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    Set a constraint, counting all items within stacks. If a gap is specified,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    stocks are allowed to dip that many items below the target before relevant
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    jobs are resumed.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					``workflow unlimit <constraint-spec>``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    Delete a constraint.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					``workflow unlimit-all``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    Delete all constraints.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					``workflow jobs``
 | 
					 | 
					 | 
					 | 
					``workflow jobs``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    List workflow-controlled jobs (if in a workshop, filtered by it).
 | 
					 | 
					 | 
					 | 
					    List workflow-controlled jobs (if in a workshop, filtered by it).
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					``workflow list``
 | 
					 | 
					 | 
					 | 
					``workflow list``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    List active constraints, and their job counts.
 | 
					 | 
					 | 
					 | 
					    List active constraints, and their job counts.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					``workflow list-commands``
 | 
					 | 
					 | 
					 | 
					``workflow list-commands``
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   List active constraints as workflow commands that re-create them;
 | 
					 | 
					 | 
					 | 
					    List active constraints as workflow commands that re-create them; this list
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   this list can be copied to a file, and then reloaded using the
 | 
					 | 
					 | 
					 | 
					    can be copied to a file, and then reloaded using the `script` built-in
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   ``script`` built-in command.
 | 
					 | 
					 | 
					 | 
					    command.
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					``workflow count <constraint-spec> <cnt-limit> [cnt-gap]``
 | 
					 | 
					 | 
					 | 
					``fix-job-postings [dry-run]``
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   Set a constraint, counting every stack as 1 item.
 | 
					 | 
					 | 
					 | 
					    Fixes crashes caused the version of workflow released with DFHack
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					``workflow amount <constraint-spec> <cnt-limit> [cnt-gap]``
 | 
					 | 
					 | 
					 | 
					    0.40.24-r4. It will be run automatically if needed. If your save has never
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   Set a constraint, counting all items within stacks.
 | 
					 | 
					 | 
					 | 
					    been run with this version, you will never need this command. Specify the
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					``workflow unlimit <constraint-spec>``
 | 
					 | 
					 | 
					 | 
					    ``dry-run`` keyword to see what this command would do without making any
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   Delete a constraint.
 | 
					 | 
					 | 
					 | 
					    changes to game state.
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					``workflow unlimit-all``
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   Delete all constraints.
 | 
					 | 
					 | 
					 | 
					Examples
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Function
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					--------
 | 
					 | 
					 | 
					 | 
					--------
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					When the plugin is enabled, it protects all repeat jobs from removal.
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					If they do disappear due to any cause, they are immediately re-added to their
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					workshop and suspended.
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					In addition, when any constraints on item amounts are set, repeat jobs that
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					produce that kind of item are automatically suspended and resumed as the item
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					amount goes above or below the limit. The gap specifies how much below the limit
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					the amount has to drop before jobs are resumed; this is intended to reduce
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					the frequency of jobs being toggled.
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Constraint format
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					-----------------
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					The constraint spec consists of 4 parts, separated with ``/`` characters::
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ITEM[:SUBTYPE]/[GENERIC_MAT,...]/[SPECIFIC_MAT:...]/[LOCAL,<quality>]
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					The first part is mandatory and specifies the item type and subtype,
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using the raw tokens for items (the same syntax used custom reaction inputs).
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					For more information, see :wiki:`this wiki page <Material_token>`.
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					The subsequent parts are optional:
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					- A generic material spec constrains the item material to one of
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  the hard-coded generic classes, which currently include::
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    PLANT WOOD CLOTH SILK LEATHER BONE SHELL SOAP TOOTH HORN PEARL YARN
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    METAL STONE SAND GLASS CLAY MILK
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					- A specific material spec chooses the material exactly, using the
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  raw syntax for reaction input materials, e.g. ``INORGANIC:IRON``,
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  although for convenience it also allows just ``IRON``, or ``ACACIA:WOOD`` etc.
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  See the link above for more details on the unabbreviated raw syntax.
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					- A comma-separated list of miscellaneous flags, which currently can
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  be used to ignore imported items or items below a certain quality.
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Constraint examples
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					-------------------
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Keep metal bolts within 900-1000, and wood/bone within 150-200::
 | 
					 | 
					 | 
					 | 
					Keep metal bolts within 900-1000, and wood/bone within 150-200::
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    workflow amount AMMO:ITEM_AMMO_BOLTS/METAL 1000 100
 | 
					 | 
					 | 
					 | 
					    workflow amount AMMO:ITEM_AMMO_BOLTS/METAL 1000 100
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -105,15 +101,38 @@ Make sure there are always 80-100 units of dimple dye::
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					.. note::
 | 
					 | 
					 | 
					 | 
					.. note::
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    In order for this to work, you have to set the material of the PLANT input
 | 
					 | 
					 | 
					 | 
					    In order for this to work, you have to set the material of the PLANT input
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  on the Mill Plants job to MUSHROOM_CUP_DIMPLE using the `job item-material <job>`
 | 
					 | 
					 | 
					 | 
					    on the Mill Plants job to MUSHROOM_CUP_DIMPLE using the
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  command. Otherwise the plugin won't be able to deduce the output material.
 | 
					 | 
					 | 
					 | 
					    `job item-material <job>` command. Otherwise the plugin won't be able to
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    deduce the output material.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Maintain 10-100 locally-made crafts of exceptional quality::
 | 
					 | 
					 | 
					 | 
					Maintain 10-100 locally-made crafts of exceptional quality::
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    workflow count CRAFTS///LOCAL,EXCEPTIONAL 100 90
 | 
					 | 
					 | 
					 | 
					    workflow count CRAFTS///LOCAL,EXCEPTIONAL 100 90
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					fix-job-postings
 | 
					 | 
					 | 
					 | 
					Constraint format
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					----------------
 | 
					 | 
					 | 
					 | 
					-----------------
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					This command fixes crashes caused by previous versions of workflow, mostly in
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					DFHack 0.40.24-r4, and should be run automatically when loading a world (but can
 | 
					 | 
					 | 
					 | 
					The constraint spec consists of 4 parts, separated with ``/`` characters::
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					also be run manually if desired).
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    ITEM[:SUBTYPE]/[GENERIC_MAT,...]/[SPECIFIC_MAT:...]/[LOCAL,<quality>]
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					The first part is mandatory and specifies the item type and subtype, using the
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					raw tokens for items (the same syntax used custom reaction inputs). For more
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					information, see :wiki:`this wiki page <Material_token>`.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					The subsequent parts are optional:
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					- A generic material spec constrains the item material to one of the hard-coded
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  generic classes, which currently include::
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    PLANT WOOD CLOTH SILK LEATHER BONE SHELL SOAP TOOTH HORN PEARL YARN
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    METAL STONE SAND GLASS CLAY MILK
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					- A specific material spec chooses the material exactly, using the raw syntax
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  for reaction input materials, e.g. ``INORGANIC:IRON``, although for
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  convenience it also allows just ``IRON``, or ``ACACIA:WOOD`` etc.  See the
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  link above for more details on the unabbreviated raw syntax.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					- A comma-separated list of miscellaneous flags, which currently can be used to
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  ignore imported items (``LOCAL``) or items below a certain quality (1-5, with
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  5 being masterwork).
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
 
 |