shrub/pkg/arvo
Philip Monk 9ddc04143a
jael: provide edge-triggered breach notification
Until now, clients of Jael have had to store the first-seen rift if they
want to reliably detect breaches.  Otherwise, they would get a false
positive if they heard an old message about a breach (eg if you kick
azimuth-tracker).  Clay and Gall did this correctly, but Ames did not.

Jael already maintains this state, so I added a notification to the
existing subscription that happens whenever it notices a breach (a diff
or full where the new rift is greater than the old one).

Because this is an issue on the live network, I wrote state adapters
for Gall and Clay.  The Gall one just removes the rift from our state,
but the Clay one is much more involved because we have to upgrade
instances of the clad monad that are possibly in progress.
Specifically, since more input is possible than before, we must wrap any
in-progress instances of the monad in a function that handles the
potential new input from Jael.  This temporarily preservers a copy of
the old kernel, but only until the current commit/merge/update has
completed.

The real solution for Clay is to factor out those IO-heavy instances to
userspace tapp/async/imp/threads, and if an upgrade happens in the
middle, you should simply restart them.

Fixes #1852
2019-10-23 21:40:34 -07:00
..
.travis Add 'pkg/arvo/' from commit 'c20e2a185f131ff3f5d3961829bd7a3fe0f227f8' 2019-06-28 12:48:05 +08:00
app chat-cli: update prompt on ;join 2019-10-18 15:04:34 +02:00
gen azimuth-tracker: fix |watch generator 2019-10-17 10:37:09 -07:00
lib apps: added permission hook and chat-view %join action 2019-10-11 14:09:30 -07:00
mar apps: added permission hook and chat-view %join action 2019-10-11 14:09:30 -07:00
ren updated publish files 2019-07-18 15:34:42 -07:00
sur permission-hook: style improvement 2019-10-12 18:58:20 -07:00
sys jael: provide edge-triggered breach notification 2019-10-23 21:40:34 -07:00
tests tests: disable %ames test-send 2019-10-15 23:23:57 +04:00
.gitignore Add 'pkg/arvo/' from commit 'c20e2a185f131ff3f5d3961829bd7a3fe0f227f8' 2019-06-28 12:48:05 +08:00
.travis.yml Add 'pkg/arvo/' from commit 'c20e2a185f131ff3f5d3961829bd7a3fe0f227f8' 2019-06-28 12:48:05 +08:00
LICENSE.txt Add 'pkg/arvo/' from commit 'c20e2a185f131ff3f5d3961829bd7a3fe0f227f8' 2019-06-28 12:48:05 +08:00
README.md meta: update contributing section in arvo readme [ci skip] 2019-10-03 14:39:14 +04:00
TESTING.udon Moved testing documentation out of tests folder so as to pass tests~ 2019-07-05 16:48:40 -07:00

Arvo

A clean-slate operating system.

Usage

To run Arvo, you'll need Urbit. To install Urbit and run Arvo please follow the instructions in the getting started docs. You'll be on the live network in a few minutes.

If you're doing development on Arvo, keep reading.

Documentation

Find Arvo's documentation on urbit.org.

Development

To boot a fake ship from your development files, run urbit with the following arguments:

urbit -F zod -A /path/to/arvo -c fakezod

Mount Arvo's filesystem allows you to update its contents through Unix. To do so, run |mount in dojo. It is most common to |mount /=home=.

To create a custom pill (bootstrapping object) from the files loaded into the home desk, run .my/pill +solid. Your pill will appear in /path/to/fakezod/.urb/put/my.pill.

To boot a fake ship with a custom pill, use the -B flag:

urbit -F zod -A /path/to/arvo -B /path/to.pill -c fakezod

To run all tests in /tests, run +test in dojo. +test /some/path would only run all tests in /tests/some/path.

Maintainers

Most parts of Arvo have dedicated maintainers.

  • /sys/hoon: @pilfer-pandex (~pilfer-pandex)
  • /sys/zuse: @pilfer-pandex (~pilfer-pandex)
  • /sys/arvo: @jtobin (~nidsut-tomdun)
  • /sys/vane/ames: @belisarius222 (~rovnys-ricfer) & @joemfb (~master-morzod)
  • /sys/vane/behn: @belisarius222 (~rovnys-ricfer)
  • /sys/vane/clay: @philipcmonk (~wicdev-wisryt)
  • /sys/vane/dill: @bernardodelaplaz (~rigdyn-sondur)
  • /sys/vane/eyre: @eglaysher (~littel-ponnys)
  • /sys/vane/ford: @belisarius222 (~rovnys-ricfer) & @eglaysher (~littel-ponnys)
  • /sys/vane/gall: @jtobin (~nidsut-tomdun)
  • /sys/vane/jael: @fang- (~palfun-foslup) & @joemfb (~master-morzod)
  • /app/acme: @joemfb (~master-morzod)
  • /app/dns: @joemfb (~master-morzod)
  • /app/hall: @fang- (~palfun-foslup)
  • /app/talk: @fang- (~palfun-foslup)
  • /app/aqua: @philipcmonk (~wicdev-wisryt)
  • /lib/test: @eglaysher (~littel-ponnys)

Contributing

Contributions of any form are more than welcome! Please take a look at our contributing guidelines for details on our git practices, coding styles, how we manage issues, and so on.

You might also be interested in: