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.
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.
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
Bind agent address in policy constants
Use OpenApps service URLs and add contribution strip
Bounded source sync
Bounded source sync
Bounded source sync