tasks-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 9b0d0f7b9a93
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 f6f2112e77bc8c011e38c83a
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/remove-people.json
{
 "version": "1",
 "name": "an owner removes a device and a name; the removed device cannot come back, even an owner's; others cannot remove anyone",
 "actors": {
  "Alice": "alice",
  "Bob": "bob",
  "Carol": "carol",
  "Api": "apiprincipal",
  "Dave": "dave"
 },
 "constants": {
  "BOUNDED_PUBLIC_PRINCIPAL_API": "apiprincipal"
 },
 "steps": [
  {
   "op": "setTime",
   "epoch": 1800000000
  },
  {
   "op": "as",
   "who": "Alice"
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "boards/boardAAAAAAAAAAAAAAA",
     "data": {
      "title": "Launch",
      "archived": false,
      "createdBy": "alice",
      "createdAt": 1800000000
     }
    },
    {
     "path": "boards/boardAAAAAAAAAAAAAAA/joins/alice",
     "data": {
      "at": 1800000000
     }
    },
    {
     "path": "boards/boardAAAAAAAAAAAAAAA/owners/alice",
     "data": {
      "at": 1800000000
     }
    },
    {
     "path": "boardkeys/boardAAAAAAAAAAAAAAA",
     "data": {
      "key": "kkkkkkkkkkkkkkkkkkkkkkkk"
     }
    }
   ]
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "boards/boardAAAAAAAAAAAAAAA/lists/listAAAA1",
     "data": {
      "title": "To do",
      "pos": 1024,
      "archived": false,
      "createdAt": 1800000000
     }
    },
    {
     "path": "boards/boardAAAAAAAAAAAAAAA/cards/cardAAAA1",
     "data": {
      "listId": "listAAAA1",
      "title": "Write brief",
      "description": "",
      "pos": 1024,
      "due": "",
      "done": false,
      "labels": "[]",
      "assignees": "[]",
      "checklist": "[]",
      "cover": "",
      "archived": false,
      "createdBy": "alice",
      "createdAt": 1800000000
     }
    }
   ]
  },
  {
   "op": "as",
   "who": "Bob"
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/joins/bob",
   "data": {
    "at": 1800000000
   }
  },
  {
   "op": "as",
   "who": "Carol"
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/joins/carol",
   "data": {
    "at": 1800000000
   }
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/members/memCCCC1",
   "data": {
    "name": "Carol",
    "removed": false,
    "createdAt": 1800000000
   }
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/members/memCCCC1",
   "data": {
    "removed": true
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/blocks/bob",
   "data": {
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "delete",
   "path": "boards/boardAAAAAAAAAAAAAAA/joins/bob",
   "shouldFail": true
  },
  {
   "op": "as",
   "who": "Alice"
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/blocks/alice",
   "data": {
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/blocks/apiprincipal",
   "data": {
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "deleteMany",
   "paths": [
    "boards/boardAAAAAAAAAAAAAAA/joins/bob"
   ]
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/blocks/bob",
   "data": {
    "at": 1800000000
   }
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/members/memCCCC1",
   "data": {
    "removed": true
   }
  },
  {
   "op": "expect",
   "expr": "get(/boards/boardAAAAAAAAAAAAAAA/members/memCCCC1).removed == true"
  },
  {
   "op": "as",
   "who": "Bob"
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/joins/bob",
   "data": {
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/cards/cardBBBB1",
   "data": {
    "listId": "listAAAA1",
    "title": "Write brief",
    "description": "",
    "pos": 1024,
    "due": "",
    "done": false,
    "labels": "[]",
    "assignees": "[]",
    "checklist": "[]",
    "cover": "",
    "archived": false,
    "createdBy": "bob",
    "createdAt": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "as",
   "who": "Alice"
  },
  {
   "op": "delete",
   "path": "boards/boardAAAAAAAAAAAAAAA/blocks/bob"
  },
  {
   "op": "as",
   "who": "Bob"
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/joins/bob",
   "data": {
    "at": 1800000000
   }
  },
  {
   "op": "as",
   "who": "Dave"
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/joins/dave",
   "data": {
    "at": 1800000000
   }
  },
  {
   "op": "setMany",
   "writes": [
    {
     "path": "boardclaims/boardAAAAAAAAAAAAAAA/c/dave",
     "data": {
      "key": "kkkkkkkkkkkkkkkkkkkkkkkk"
     }
    },
    {
     "path": "boards/boardAAAAAAAAAAAAAAA/owners/dave",
     "data": {
      "at": 1800000000
     }
    }
   ]
  },
  {
   "op": "as",
   "who": "Alice"
  },
  {
   "op": "deleteMany",
   "paths": [
    "boards/boardAAAAAAAAAAAAAAA/joins/dave"
   ]
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/blocks/dave",
   "data": {
    "at": 1800000000
   }
  },
  {
   "op": "as",
   "who": "Dave"
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA",
   "data": {
    "title": "Still mine"
   },
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA",
   "data": {
    "archived": true
   },
   "shouldFail": true
  },
  {
   "op": "delete",
   "path": "boards/boardAAAAAAAAAAAAAAA/blocks/dave",
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/blocks/bob",
   "data": {
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "delete",
   "path": "boards/boardAAAAAAAAAAAAAAA",
   "shouldFail": true
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/joins/dave",
   "data": {
    "at": 1800000000
   },
   "shouldFail": true
  },
  {
   "op": "as",
   "who": "Alice"
  },
  {
   "op": "delete",
   "path": "boards/boardAAAAAAAAAAAAAAA/blocks/dave"
  },
  {
   "op": "as",
   "who": "Dave"
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA/joins/dave",
   "data": {
    "at": 1800000000
   }
  },
  {
   "op": "set",
   "path": "boards/boardAAAAAAAAAAAAAAA",
   "data": {
    "title": "Back in"
   }
  },
  {
   "op": "expect",
   "expr": "get(/boards/boardAAAAAAAAAAAAAAA).title == 'Back in'"
  }
 ]
}

Change history

Point OpenApps links to openapps.free
9b0d0f7b9a · 18 hours ago
Bind agent address in policy
25f84633c0 · 19 hours ago
Use OpenApps service URLs and add contribution strip
07519eb348 · 19 hours ago
Bounded source sync
3296872001 · 1 day ago
Bounded source sync
ac8d2f5d18 · 1 day ago
Bounded source sync
2a5b08a001 · 1 day ago
Bounded source sync
d2242ddf34 · 1 day ago