<commit_before>Check HarvesterConfig.h to adjust from which nodes the Harvester will gather data.

Harvester (node 0)
   Upon start-up the green light will be blinking.

     User Button SHORT (announce existence to network)
       green light on SensorBox; red light on Harvester... User Button LONG to get data. there
       will be a delay and then blue lights flash while data transferred. There is another delay
       before the Harvester is ready for more (green light will start flashing again).

     User Button LONG (shutdown)
       User Button LONG again to restore SensorBox to "normal" operation. The Harvester has a
       blue light on while it is working on this. There is a delay before the SensorBox goes
       back to normal and a delay before the Harvester goes back to normal.

SensorBox (node 1)
   Upon start-up the red light will be on.

     User Button LONG (clear memory)
       red+green light... User Button LONG again... wait for blue light

     User Button SHORT (sampling mode)
       green light... User Button SHORT... light off (10 second start up)... red light on while
       sampling... all lights off when sampling done and ready for Harvester.

=====

The two roles of interest are the N.control and N.collect roles. There are a total of three
entities are N (the nodes), Hd (the Harvester that can collect data), and Hc (the "Harvester"
that can issue commands).

The nodes need to propagate information forward so they need access to both roles. Thus the
overall policy is

1. N.control <- N
2. N.control <- Hc
3. N.collect <- N
4. N.collect <- Hc (here I'm allowing a controller to also collect).
5. N.collect <- Hd

In principal the nodes should be deployed with credential #1 and #3. Each kind of harvester
should be deployed with it's corresponding credentials (#2 and #4 for an Hc harvester, and #5
for an Hd harvester). Actually the current implementation has every node transmitting all
credentials (a little unnecessary).<commit_msg>Added some notes on a more interesting policy for use in the SnowCloud sample.<commit_after>Check HarvesterConfig.h to adjust from which nodes the Harvester will gather data.

Harvester (node 0)
   Upon start-up the green light will be blinking.

     User Button SHORT (announce existence to network)
       green light on SensorBox; red light on Harvester... User Button LONG to get data. there
       will be a delay and then blue lights flash while data transferred. There is another delay
       before the Harvester is ready for more (green light will start flashing again).

     User Button LONG (shutdown)
       User Button LONG again to restore SensorBox to "normal" operation. The Harvester has a
       blue light on while it is working on this. There is a delay before the SensorBox goes
       back to normal and a delay before the Harvester goes back to normal.

SensorBox (node 1)
   Upon start-up the red light will be on.

     User Button LONG (clear memory)
       red+green light... User Button LONG again... wait for blue light

     User Button SHORT (sampling mode)
       green light... User Button SHORT... light off (10 second start up)... red light on while
       sampling... all lights off when sampling done and ready for Harvester.

=====

The two roles of interest are the N.control and N.collect roles. There are a total of three
entities are N (the nodes), Hd (the Harvester that can collect data), and Hc (the "Harvester"
that can issue commands).

The nodes need to propagate information forward so they need access to both roles. Thus the
overall policy is

1. N.control <- N
2. N.control <- Hc
3. N.collect <- N
4. N.collect <- Hc (here I'm allowing a controller to also collect).
5. N.collect <- Hd

In principal the nodes should be deployed with credential #1 and #3. Each kind of harvester
should be deployed with it's corresponding credentials (#2 and #4 for an Hc harvester, and #5
for an Hd harvester). Actually the current implementation has every node transmitting all
credentials (a little unnecessary).

=====

Here is a more complex policy that is not current supportable (due to limitations in Sprocket)
but it would be nice to lift those limitations to allow this.

On Nodes:

 Snowcloud.Control <- Snowcloud.Node
 Snowcloud.Collect <- Snowcloud.Node
 Snowcloud.Collect <- Snowcloud.Collab.User
 Snowcloud.Node <- NodeID             # Notice that each node is its own entity.

On Admin Harvester:

 Snowcloud.Node <- AdminHarvester

On Collection Harvesters (e.g. for UNH):

 Snowcloud.Collab <- UNH
 UNH.User <- GEO
{'fraction_non_alphanumeric': 0.05992098331870061, 'fraction_numerical': 0.006145741878841089, 'mean_word_length': 3.2430167597765363, 'pattern_counts': {'":': 0, '<': 20, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2331200', 'n_tokens_mistral': 1248, 'n_tokens_neox': 1159, 'n_words': 687}