baby-free.openapps.xyz

Source

This app’s code and revision history are public. Download a copy or explore the files below.

Public
The app’s code and revision history are public.
Owned app · rev c84ed8821371
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone 381bd6356d4b794ac2a7c1b8
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
← All files
policy-tests/removed-owner.json
{
  "version": "1",
  "name": "an owner who is removed keeps no owner powers: cannot change the key, remove people, rejoin or read",
  "actors": { "Mom": "mom_guest", "OldPhone": "oldphone_guest", "Dad": "dad_guest", "Eve": "eve_guest" },
  "steps": [
    { "op": "setTime", "epoch": 1800000000 },

    { "op": "as", "who": "Mom" },
    { "op": "setMany", "writes": [
      { "path": "households/famCCCCCCCCCCCCCCCCC", "data": { "name": "Ada's family", "tz": "UTC", "createdBy": "$Mom", "createdAt": 1800000000 } },
      { "path": "households/famCCCCCCCCCCCCCCCCC/members/mom_guest", "data": { "name": "Mom", "at": 1800000000 } },
      { "path": "households/famCCCCCCCCCCCCCCCCC/owners/mom_guest", "data": { "at": 1800000000 } },
      { "path": "householdkeys/famCCCCCCCCCCCCCCCCC", "data": { "key": "oldkeyoldkeyoldkeyoldkey" } },
      { "path": "ownerkeys/famCCCCCCCCCCCCCCCCC", "data": { "key": "ownerkeyownerkeyownerkey" } },
      { "path": "households/famCCCCCCCCCCCCCCCCC/babies/babyAda", "data": { "name": "Ada", "birth": "", "createdAt": 1800000000 } }
    ] },

    { "op": "as", "who": "OldPhone" },
    { "op": "setMany", "writes": [
      { "path": "households/famCCCCCCCCCCCCCCCCC/claims/oldphone_guest", "data": { "key": "oldkeyoldkeyoldkeyoldkey", "n": "a" } },
      { "path": "households/famCCCCCCCCCCCCCCCCC/members/oldphone_guest", "data": { "name": "Mom", "at": 1800000000 } },
      { "path": "households/famCCCCCCCCCCCCCCCCC/ownerclaims/oldphone_guest", "data": { "key": "ownerkeyownerkeyownerkey", "n": "a" } },
      { "path": "households/famCCCCCCCCCCCCCCCCC/owners/oldphone_guest", "data": { "at": 1800000000 } }
    ] },

    { "op": "as", "who": "Dad" },
    { "op": "setMany", "writes": [
      { "path": "households/famCCCCCCCCCCCCCCCCC/claims/dad_guest", "data": { "key": "oldkeyoldkeyoldkeyoldkey", "n": "a" } },
      { "path": "households/famCCCCCCCCCCCCCCCCC/members/dad_guest", "data": { "name": "Dad", "at": 1800000000 } }
    ] },
    { "op": "set", "path": "households/famCCCCCCCCCCCCCCCCC/events/d1", "data": { "baby": "babyAda", "type": "diaper", "start": 1800000000, "data": "{\"kind\":\"wet\"}", "by": "$Dad", "createdAt": 1800000000 } },
    { "op": "read", "path": "households/famCCCCCCCCCCCCCCCCC/events/d1" },

    { "op": "as", "who": "Eve" },
    { "op": "read", "path": "households/famCCCCCCCCCCCCCCCCC", "shouldFail": true },
    { "op": "read", "path": "households/famCCCCCCCCCCCCCCCCC/events/d1", "shouldFail": true },
    { "op": "read", "path": "householdkeys/famCCCCCCCCCCCCCCCCC", "shouldFail": true },

    { "op": "as", "who": "Mom" },
    { "op": "delete", "path": "households/famCCCCCCCCCCCCCCCCC/members/oldphone_guest" },
    { "op": "set", "path": "householdkeys/famCCCCCCCCCCCCCCCCC", "data": { "key": "newkeynewkeynewkeynewkey" } },
    { "op": "expect", "expr": "get(/households/famCCCCCCCCCCCCCCCCC/owners/oldphone_guest) != null" },

    { "op": "as", "who": "OldPhone" },
    { "op": "set", "path": "householdkeys/famCCCCCCCCCCCCCCCCC", "data": { "key": "thiefkeythiefkeythiefkey" }, "shouldFail": true },
    { "op": "delete", "path": "households/famCCCCCCCCCCCCCCCCC/members/dad_guest", "shouldFail": true },
    { "op": "delete", "path": "households/famCCCCCCCCCCCCCCCCC/members/mom_guest", "shouldFail": true },
    { "op": "setMany", "writes": [
      { "path": "households/famCCCCCCCCCCCCCCCCC/claims/oldphone_guest", "data": { "key": "oldkeyoldkeyoldkeyoldkey", "n": "b" } },
      { "path": "households/famCCCCCCCCCCCCCCCCC/members/oldphone_guest", "data": { "name": "Mom", "at": 1800000000 } }
    ], "shouldFail": true },
    { "op": "set", "path": "households/famCCCCCCCCCCCCCCCCC/members/oldphone_guest", "data": { "name": "Mom", "at": 1800000000 }, "shouldFail": true },
    { "op": "set", "path": "households/famCCCCCCCCCCCCCCCCC/events/o1", "data": { "baby": "babyAda", "type": "note", "start": 1800000000, "data": "{}", "by": "$OldPhone", "createdAt": 1800000000 }, "shouldFail": true },
    { "op": "read", "path": "households/famCCCCCCCCCCCCCCCCC", "shouldFail": true },
    { "op": "read", "path": "householdkeys/famCCCCCCCCCCCCCCCCC", "shouldFail": true },
    { "op": "expect", "expr": "get(/householdkeys/famCCCCCCCCCCCCCCCCC).key == 'newkeynewkeynewkeynewkey'" },
    { "op": "expect", "expr": "get(/households/famCCCCCCCCCCCCCCCCC/members/dad_guest) != null" },
    { "op": "expect", "expr": "get(/households/famCCCCCCCCCCCCCCCCC/members/mom_guest) != null" },

    { "op": "as", "who": "Mom" },
    { "op": "delete", "path": "households/famCCCCCCCCCCCCCCCCC/members/dad_guest" },
    { "op": "as", "who": "Dad" },
    { "op": "read", "path": "households/famCCCCCCCCCCCCCCCCC/events/d1", "shouldFail": true }
  ]
}

Change history

Quality pass: undo on timers, sleep by hour chart, diaper color, fixes
c84ed88213 · 5 hours ago
Bounded source sync
1ed137d95d · 16 hours ago
Bounded source sync
851999f793 · 17 hours ago
Bounded source sync
9623bc231c · 17 hours ago