lists-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 ebccaf0b13fe
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 ee59501e91bae6d2c23a8370
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/lists.json
{
 "version": "1",
 "name": "making a list, joining with the share link, items, and what strangers cannot do",
 "actors": {
  "Ann": "ann_guest",
  "Ben": "ben_guest",
  "Cal": "cal_guest",
  "Dan": "dan_guest",
  "Eve": "eve_guest",
  "Api": "api_guest"
 },
 "steps": [
  {
   "op": "setTime",
   "epoch": 1800000000
  },
  {
   "op": "as",
   "who": "Eve"
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA",
     "data": {
      "name": "Groceries",
      "kind": "grocery",
      "order": "",
      "createdBy": "$Ann",
      "createdAt": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/eve_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "as",
   "who": "Ann"
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA",
     "data": {
      "name": "Groceries",
      "kind": "grocery",
      "order": "",
      "createdBy": "$Ben",
      "createdAt": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/owners/ann_guest",
     "data": {
      "at": 1800000000
     }
    },
    {
     "path": "listkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "keyaaaaaaaaaaaaaaaaaaaaa"
     }
    },
    {
     "path": "ownerkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "ownerkeyaaaaaaaaaaaaaaaa"
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA",
     "data": {
      "name": "Groceries",
      "kind": "grocery",
      "order": "",
      "createdBy": "$Ann",
      "createdAt": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/owners/ann_guest",
     "data": {
      "at": 1800000000
     }
    },
    {
     "path": "listkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "keyaaaaaaaaaaaaaaaaaaaaa"
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA",
     "data": {
      "name": "Groceries",
      "kind": "grocery",
      "order": "",
      "createdBy": "$Ann",
      "createdAt": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/owners/ann_guest",
     "data": {
      "at": 1800000000
     }
    },
    {
     "path": "ownerkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "ownerkeyaaaaaaaaaaaaaaaa"
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA",
     "data": {
      "name": "Groceries",
      "kind": "party",
      "order": "",
      "createdBy": "$Ann",
      "createdAt": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/owners/ann_guest",
     "data": {
      "at": 1800000000
     }
    },
    {
     "path": "listkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "keyaaaaaaaaaaaaaaaaaaaaa"
     }
    },
    {
     "path": "ownerkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "ownerkeyaaaaaaaaaaaaaaaa"
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA",
     "data": {
      "name": "",
      "kind": "grocery",
      "order": "",
      "createdBy": "$Ann",
      "createdAt": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/owners/ann_guest",
     "data": {
      "at": 1800000000
     }
    },
    {
     "path": "listkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "keyaaaaaaaaaaaaaaaaaaaaa"
     }
    },
    {
     "path": "ownerkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "ownerkeyaaaaaaaaaaaaaaaa"
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA",
     "data": {
      "name": "Groceries",
      "kind": "grocery",
      "order": "",
      "createdBy": "$Ann",
      "createdAt": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/owners/ann_guest",
     "data": {
      "at": 1800000000
     }
    },
    {
     "path": "listkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "short"
     }
    },
    {
     "path": "ownerkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "ownerkeyaaaaaaaaaaaaaaaa"
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA",
     "data": {
      "name": "Groceries",
      "kind": "grocery",
      "order": "",
      "createdBy": "$Ann",
      "createdAt": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/owners/ann_guest",
     "data": {
      "at": 1800000000
     }
    },
    {
     "path": "listkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "keyaaaaaaaaaaaaaaaaaaaaa"
     }
    },
    {
     "path": "ownerkeys/listAAAAAAAAAAAAAAAA",
     "data": {
      "key": "ownerkeyaaaaaaaaaaaaaaaa"
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/items/i1",
     "data": {
      "name": "Milk",
      "qty": "",
      "note": "",
      "section": "dairy",
      "checked": false,
      "addedAt": 1800000000123
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/known/i1",
     "data": {
      "name": "Milk",
      "section": "dairy",
      "uses": 1,
      "at": 1800000000
     }
    }
   ]
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i1",
   "data": {
    "checked": true,
    "checkedAt": 1800000000
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i1",
   "data": {
    "checked": false,
    "checkedAt": null
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA",
   "data": {
    "order": "[\"dairy\",\"produce\"]"
   }
  },
  {
   "op": "expect",
   "expr": "get(/lists/listAAAAAAAAAAAAAAAA/items/i1).checked == false"
  },
  {
   "op": "as",
   "who": "Eve"
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA",
   "data": {
    "name": "Mine now"
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/members/eve_guest",
   "data": {
    "name": "",
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/claims/eve_guest",
   "data": {
    "key": "wrongwrongwrongwrongwron",
    "n": "a"
   },
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/claims/eve_guest",
     "data": {
      "key": "wrongwrongwrongwrongwron",
      "n": "a"
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/eve_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/ownerclaims/eve_guest",
     "data": {
      "key": "wrongwrongwrongwrongwron",
      "n": "a"
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/eve_guest",
     "data": {
      "name": "",
      "at": 1800000000
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i2",
   "data": {
    "name": "Eggs",
    "qty": "",
    "note": "",
    "section": "dairy",
    "checked": false,
    "addedAt": 1800000000123
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i1",
   "data": {
    "checked": true
   },
   "shouldFail": true
  },
  {
   "op": "delete",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i1",
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/known/i9",
   "data": {
    "name": "Spam",
    "section": "pantry",
    "uses": 1,
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "listkeys/listAAAAAAAAAAAAAAAA",
   "data": {
    "key": "evilevilevilevilevilevil"
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "ownerkeys/listAAAAAAAAAAAAAAAA",
   "data": {
    "key": "evilevilevilevilevilevil"
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/owners/eve_guest",
   "data": {
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "delete",
   "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
   "shouldFail": true
  },
  {
   "op": "as",
   "who": "Ben"
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/claims/ben_guest",
     "data": {
      "key": "keyaaaaaaaaaaaaaaaaaaaaa",
      "n": "a"
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/ben_guest",
     "data": {
      "name": "Ben",
      "at": 1800000000
     }
    }
   ]
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i2",
   "data": {
    "name": "Eggs",
    "qty": "",
    "note": "",
    "section": "dairy",
    "checked": false,
    "addedAt": 1800000000123
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i2",
   "data": {
    "qty": "12",
    "note": "free range",
    "section": "dairy"
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i1",
   "data": {
    "checked": true,
    "checkedAt": 1800000000
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i3",
   "data": {
    "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "qty": "",
    "note": "",
    "section": "dairy",
    "checked": false,
    "addedAt": 1800000000123
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i3",
   "data": {
    "name": "",
    "qty": "",
    "note": "",
    "section": "dairy",
    "checked": false,
    "addedAt": 1800000000123
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i3",
   "data": {
    "name": "Bread",
    "qty": "",
    "note": "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn",
    "section": "dairy",
    "checked": false,
    "addedAt": 1800000000123
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i3",
   "data": {
    "name": "Bread",
    "qty": "",
    "note": "",
    "section": "sssssssssssssssssssss",
    "checked": false,
    "addedAt": 1800000000123
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i4",
   "data": {
    "checked": true,
    "checkedAt": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/known/i2",
   "data": {
    "name": "Eggs",
    "section": "dairy",
    "uses": {
     "operation": "increment",
     "value": 1
    },
    "at": 1800000000
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/known/i2",
   "data": {
    "name": "Eggs",
    "section": "produce",
    "uses": {
     "operation": "increment",
     "value": 1
    },
    "at": 1800000000
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA",
   "data": {
    "name": "Weekly shop"
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA",
   "data": {
    "name": ""
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA",
   "data": {
    "kind": "todo"
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA",
   "data": {
    "kind": "grocery"
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA",
   "data": {
    "createdBy": "$Ben"
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA",
   "data": {
    "deleted": true
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "listkeys/listAAAAAAAAAAAAAAAA",
   "data": {
    "key": "benkeybenkeybenkeybenkey"
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/owners/ben_guest",
   "data": {
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/ownerclaims/ben_guest",
     "data": {
      "key": "guessguessguessguessgues",
      "n": "a"
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/owners/ben_guest",
     "data": {
      "at": 1800000000
     }
    }
   ],
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/members/ben_guest",
   "data": {
    "name": "Benjamin"
   }
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
   "data": {
    "name": "Not Ann"
   },
   "shouldFail": true
  },
  {
   "op": "delete",
   "path": "lists/listAAAAAAAAAAAAAAAA/members/ann_guest",
   "shouldFail": true
  },
  {
   "op": "delete",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i1"
  },
  {
   "op": "expect",
   "expr": "get(/lists/listAAAAAAAAAAAAAAAA/items/i1) == null"
  },
  {
   "op": "expect",
   "expr": "get(/lists/listAAAAAAAAAAAAAAAA/items/i2).qty == '12'"
  },
  {
   "op": "expect",
   "expr": "get(/lists/listAAAAAAAAAAAAAAAA/known/i2).uses == 2"
  },
  {
   "op": "expect",
   "expr": "get(/lists/listAAAAAAAAAAAAAAAA/known/i2).section == 'produce'"
  },
  {
   "op": "expect",
   "expr": "get(/lists/listAAAAAAAAAAAAAAAA).name == 'Weekly shop'"
  },
  {
   "op": "delete",
   "path": "lists/listAAAAAAAAAAAAAAAA/members/ben_guest"
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i5",
   "data": {
    "name": "Butter",
    "qty": "",
    "note": "",
    "section": "dairy",
    "checked": false,
    "addedAt": 1800000000123
   },
   "shouldFail": true
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/claims/ben_guest",
     "data": {
      "key": "keyaaaaaaaaaaaaaaaaaaaaa",
      "n": "b"
     }
    },
    {
     "path": "lists/listAAAAAAAAAAAAAAAA/members/ben_guest",
     "data": {
      "name": "Ben",
      "at": 1800000000
     }
    }
   ]
  },
  {
   "op": "set",
   "path": "lists/listAAAAAAAAAAAAAAAA/items/i5",
   "data": {
    "name": "Butter",
    "qty": "",
    "note": "",
    "section": "dairy",
    "checked": false,
    "addedAt": 1800000000123
   }
  }
 ]
}

Change history

Point OpenApps links to openapps.free
ebccaf0b13 · 17 hours ago
Bind agent address in policy constants
519855687c · 19 hours ago
Use OpenApps service URLs and add contribution strip
2c353edfdc · 19 hours ago
Bounded source sync
58ac7e08ec · 1 day ago
Bounded source sync
150962f3d9 · 1 day ago
Bounded source sync
e52e4676b9 · 1 day ago