diff --git a/web/paradise.prs b/web/paradise.prs
index 10358b6..035f12b 100644
--- a/web/paradise.prs
+++ b/web/paradise.prs
@@ -1,21 +1,51 @@
version 1 .
-Name = string .
+# # Containment
+#
+# Each `Vessel` has zero or one `Parent` asserted in its main dataspace. The vessel's parent
+# dataspace has a corresponding `Link` pointing back to the contained vessel. Each `Vessel`
+# monitors `Link` records asserted to it: each one causes tracking of the linked vessel's name
+# and genus to start, with the results published locally to the containing vessel as a
+# `LocalName` record.
-# a dataspace
+Link = .
+Parent = .
+LocalName = .
+
+# # Homing
+#
+# When a vessel's container vanishes unexpectedly (through disconnection or destruction,
+# perhaps), the vessel's location is automatically updated to its `Home` vessel.
+
+Home = .
+
+# # Object appearance
+#
+# Objects present themselves as having a name and a genus, both simple strings, plus a
+# general-purpose "properties" dictionary, all bundled up in a `Here` record asserted to their
+# main dataspace (`Vessel`).
+
+Name = string .
+Here = .
Vessel = #:any .
+# # Event broadcasting and logging
+#
+# Players are shown a record of things that have happened "nearby", a series of `Event`s. Each
+# has a unique ID, a Unix-epoch timestamp, and a sentence made up of a sequence of
+# `EventItem`s. Each `EventItem` is either a plain piece of text, displayed as itself, or a
+# reference to a `Vessel`, displayed as its name and kept up-to-date as the name changes. Each
+# `Event` is to be asserted at a vessel for a short while and then retracted.
+
Event = .
EventItem = @string string / @name .
Article = =none / =a / =the .
-Link = .
-Parent = .
-
-Here = .
-Home = .
-
-LocalName = .
+# # Sentence parsing
+#
+# A `CommandFormat` describes an imperative sentence structure that can be used at the
+# text-based UI. A matched sentence results in a `CommandInvocation` being asserted to
+# whichever vessel is the target of the command.
CommandFormat = .
MatchPredicate =
@@ -35,6 +65,10 @@ MatchFilter =
CommandInvocation = .
+# # Command S-expressions
+#
+# These are a few common forms of command understood by vessels.
+
VesselCommand =
/ @say ["say", @message string]
/ @destroy ["destroy"]
@@ -49,6 +83,3 @@ VesselCommand =
.
GotoAction = "initial" / "link" / "move" / "give" / "put" / "take" / "drop" / "enter" .
-
-# For upgrades from before there was the notion of genus.
-SavedHere = @new Here / @old .