@@ -0,0 +1,63 @@
1++++
2+title = "Life and Rift"
3+weight = 3
4+template = "doc.html"
5+aliases = ["/docs/learn/azimuth"]
6++++
7+
8+Associated to every Azimuth point are two non-negative integers known as _life_
9+and _rift_. This numbering system partition messages according to the quantity
10+of networking key changes and quantity of
11+[breaches](@/using/id/guide-to-breaches.md), respectively. This is explained in
12+more detail below. These values are utilized by [Ames](@/docs/arvo/ames/ames.md)
13+and [Jael](@/docs/arvo/jael/jael-api.md) to ensure that you are communicating
14+with a ship using its most recent set of keys.
15+
16+Before it has been spawned, every ship begin with a `life` and `rift` of 0. For
17+galaxies, stars, and planets, these values are stored in the Azimuth PKI, while
18+for moons, these values are stored by their parent. Comets cannot change their
19+networking keys, nor can they breach, and so their `life` and `rift` are always 0.
20+
21+You can check your current life and rift number by running the `+keys our`
22+generator in dojo. You can inspect another ship's life and rift by running
23+`+keys ~sampel-palnet`.
24+
25+## Life
26+
27+A ship's `life`, or _key revision number_, is a count of the number of times which
28+a ship's networking keys have been altered. The initial value of the keys is
29+always 0, and the initial `life` is always 0.
30+
31+Thus, setting the keys of a ship to a nonzero value for the first time will
32+increment the `life` from 0 to 1. Rotating to a new set of keys will then
33+increment the `life` to 2. Setting the keys back to zero would increment the
34+`life` once more, to 3.
35+
36+## Rift
37+
38+A ship's `rift`, or _continuity number_, is a count of the number of times which
39+a ship has breached after its networking keys have been set.
40+
41+In other words, a ship's `rift` will remain at 0 until its the first time it is
42+breached after its `life` has been incremented for the first time. Spawning a
43+ship has no effect on `rift`, and neither does breaching it, until its
44+networking keys have been set to a non-zero value for the first time.
45+
46+Networking breaches do not affect the `rift` of any ship. They are only used to
47+count the number of personal breaches.
48+
49+## Edge cases
50+
51+Configuring the keys to the same value they already were (i.e. a no-op) is
52+possible, but has no effect on the `life`. Thus `life` is actually a measure of
53+networking key _alterations_, and not the number of times they've been set.
54+
55+Thus under ordinary circumstances, a breach will increment both `life` and
56+`rift` since a breach typically also involves changing the networking keys.
57+However, it is possible to breach without changing the networking keys. As a
58+breach resets networking keys to 0 unless new keys were specified, if the
59+networking keys were already 0 then they have not changed, and so `rift` will
60+increment but `life` will not. This is just a special case of breaching while
61+maintaining the same networking keys. That is to say, if the new keys specified
62+as part of a breach as the same as the old, again `rift` will increment while
63+`life` will not.