# To-Do

## First Release (0.1)

* README, Tutorial, Setup docs

* Performance/profiling examination


### Manager

* Only restore timestamps from serialized node dependencies, not the deps themselves.

* Broadcast system events:
    - `sys.node.added`
    - `sys.node.removed`
    - `sys.startup`
    - `sys.shutdown`


### Observers

* Re-subscribe on `sys.startup`, `sys.reloaded`, `sys.node.added`
* Add `except` to observers DSL


### Nodes

* Allow a service node to not inherit all of its host's addresses (i.e., be bound to one address only or whatever)
* Resource nodes: disk, load, process checks, etc.  Anything that might
  be considered a problem, that you'd want to ack independantly of the
  Host node they are attached to.

### Monitor

* Add some default monitor types and utilities
  - UDP socket check
  - Basic monitors for stdlib Net::* protocols/services
  - 

* Gems for monitor types that have external dependency
  - SNMP

### Watch Command

* Re-subscribe on `sys.startup`, `sys.reloaded`, `sys.node.added`


## Second Release (0.2)

### Setup/Installation

* Add a CLI for generating a basic setup and then adding nodes/monitors/observers to it.
* Potential federation / referral for sibling managers

### Nodes

* Ask a node (via tree-api or otherwise) what nodes it affects (immediate children, secondary dependents)

### Observers

 * Action dependencies -- as an example, if an action sends an email,
   don't trigger if the email service is offline.  Potential action
   "chains", ie:  If the email service is down, use a separate
   out-of-band action that sends SMS.