on master help sign in
keep md file (#1911)

* keep md file * Update keep.md Co-authored-by: rabsef bicrym <rabsef-bicrym@MacBook-Pro-Baby.local> Co-authored-by: thomasurbit <99678438+thomasurbit@users.noreply.github.com>

commit6420cfdaad0c81fd55957cd827c2189ac9664dc2 authorrabsef-bicrym <52549148+rabsef-bicrym@users.noreply.github.com> dateWed 30 Nov 2022, 11:05 (4 years ago) parent522a965
1 file changed+119
content/grants/2022/keep.md+119
content/grants/2022/keep.mdnew file+119
@@ -0,0 +1,119 @@
1++++
2+title = "Keep"
3+date = "2022-11-25"
4+
5+[taxonomies]
6+grant_type = [ "Proposal" ]
7+grant_category = [ "App Dev"]
8+
9+[extra]
10+image = ""
11+description = "Keep: Arbitrary Agent State Restoration Agent + Wrapper"
12+reward = "6 star"
13+assignee = ["~wicrum-wicrun", "~sogrum-savluc"]
14+grant_id = "P0184"
15+champion = ["~rabsef-bicrym"]
16+completed = false
17++++
18+
19+## Purpose
20+Keep is Urbit’s first agent-state backup utility. Outside of the Flag Day script and other areologic phenomena, the breach has been an impenetrable barrier for Urbit pilots and their data. Agent state has been, as a result, considered ephemeral trans-breach.
21+
22+## Rationale - Keep
23+
24+Urbit will eventually be a perfect diamond protocol at the center of a computing dynasty. Until that time, however, people will experience issues with their urbits. Sometimes, people will breach.
25+
26+Unfortunately, to date, data continuity across breach has remained technically possible but practically impossible for users.
27+
28+![a recent question in urbit community about restoring groups across breaches](https://i.imgur.com/i1xMhH1.png)
29+
30+Enter Keep!
31+
32+### Keep
33+
34+As new and interesting software appears on network, users create an ever-expanding series of data-persistence expectations that Urbit must uphold, in order to gain their trust. Backing up agent state, therefore, needs to be a protocol that a user can **_arbitrarily apply to any agent they use, regardless of whether the original code afforded for such backups_**. Keep is that protocol. Utilizing a wrapper library, a user can add backup functionality to any agent. With the Keep agent, that library-wrapped agent's state can be held and hot-reloaded into an agent, should it be `nuke`d or otherwise lose its state.
35+
36+## User Stories
37+
38+* Import
39+ * [ ] Recover an Agent's `state` from a saved file - potentially transferrable between ships, or at least over rifts
40+* Export
41+ * [ ] Export an Agent's `state` to a file on underlying file system (e.g. Unix) - in the `/path/to/pier/.urb/put` directory
42+* Backup/Restore
43+ * [ ] Backup an Agent's `state` to a central agent, on the same ship or a moon of that ship, or many ships (distributed backup)
44+ * [ ] Once and/or on a recurring basis
45+ * [ ] Restore an Agent's `state` from a central agent, on the same ship or a moon of that ship
46+ * [ ] Request from a backup provider that, should I ever breach in the future, they will automatically send me a DM with instructions on how to restore the agents whose states they store for me
47+
48+### Export to Disk - Details
49+* [ ] User can see and select from available Agents that have been wrapped in Keep's library
50+* [ ] User can select an Agent to back up to disk
51+* [ ] User can click a button to begin the export
52+* [ ] User is told that the export will/has begun and is given an indicator as to where the file will go (this will always be the `/path/to/pier/.urb/put` directory, but we can also specify, a priori, the file name)
53+ * [ ] User's data is exported to an intelligibly named folder - if backups are recurring, some indication as to recency of the last backup is provided to the user.
54+
55+### Import from File - Details
56+* [ ] User can import a `jam` file of agent-state, if that jam file is saved on a mounted disk available to the ship in question.
57+* [ ] User can import a `jam` file of agent-state through a web-portal to avoid impacting clay and loom size more than necessary.
58+* [ ] User's `jam` file is applied as restoration-of-state to the agent to which it belongs.
59+* [ ] User is informed that the restoration is underway/has completed
60+
61+#### Network Restoration
62+* [ ] User is given instructions to wrap an agent
63+ * Currently, this requires a code modification, see implementation notes.
64+* [ ] User can see all "wrapped" agents
65+
66+##### Backup (User)
67+* [ ] User can choose to backup an Agent's `state`:
68+ * `once` - an instant time
69+ * `many` - on a recurring basis, every `x-time`
70+* [ ] User is informted that a backup is underway/has completed successfully
71+* [ ] Users can see any backups they have currently stored, per Agent
72+
73+##### Restore (User)
74+* [ ] Users can choose to restore an Agent's `state`
75+* [ ] User is informed that a restoration is underway/has completed successfully
76+
77+##### Backup (Server)
78+* [ ] Admin can manually (de/)whitelist ships that can send them backups
79+* [ ] Admin can automatically (de/)whitelist ships using `gora` or the bitcoin wallet
80+* [ ] Visualize which pairs of ships and their agents are stored in backup, accompanied by their size
81+
82+##### Restore (Server)
83+* [ ] Admin can toggle between automatically sending (or not sending) instructions via DM to any breached ships (by reading azimuth state) for which Admin holds backups
84+
85+## Milestones
86+
87+* **Milestone 1:**
88+ Delivery: November 20, 2022
89+
90+ Reward: 5 stars
91+
92+ Tasks:
93+
94+ * [ ] Keep is available for installation from a distribution moon.
95+ * [ ] Keep distributes with its wrapper library and full documentation on `%docs` that walks a user through adding the wrapper library to a software of the user's choice
96+ * [ ] Keep's "server" system is implemented to install locally, however instructions for prospective providers are included in the `%docs`.
97+
98+* **Milestone 2:**
99+ Delivery: Pending on Solid State Subscription
100+
101+ Reward: 1 Star
102+
103+ Tasks:
104+
105+ * [ ] Keep is implemented with Glue + Bank - Glue is an upcoming middleware aggregator system that will make appending and prepending agent transformers to an agent easier. Bank is a system whereby use of an agent can be payrolled. With these two component parts, Keep will be a viable service model for providers - they could charge to back up and maintain state for their clients and gate restoration functions behind the same paywall.
106+
107+* **Milestone 3**
108+
109+ Delivery: After Milestone 2, Community Outreach Required
110+
111+ No Additional Compensation
112+
113+ Tasks:
114+
115+ * [ ] Keep is in use by some hosting provider to provide backup and restoration utilities to their Urbit clients.
116+ * [ ] Provider speaks to this fact.
117+ * [ ] Agents are being shipped pre-wrapped in Keep for convenience.
118+ * [ ] Developers speak to this fact.
119+ **No Additonal Compensation**