Play / The map / The capabilities

The capabilities

A capability is a verb crossed with an object class crossed with a reach, carrying whether its effect can be undone. Read a file in the project and read a file anywhere the account can are two capabilities; /etc/passwd is not a third — a specific path is an instance, never a new primitive.

CapabilityIdFamilyUndoGranted byReduction
Read the project it is working onread.file.projectfilesystemyes7yes
Change the project it is working onwrite.file.projectfilesystemwith-effort5yes
Read any file the account can reachread.file.hostfilesystemno7yes
Change any file the account can reachwrite.file.hostfilesystemwith-effort6yes
Delete files anywhere the account can reachdelete.file.hostfilesystemno4yes
Read a retained record: shell history, past sessionsread.record.historyfilesystemno4yes
Run programs as the accountexecute.process.hostprocesswith-effort6yes
Run programs inside its own sandbox onlyexecute.process.selfprocessyes0yes
Reach a permitted list of hostssend.endpoint.allowednetworkno1yes
Reach any host on the internetsend.endpoint.worldnetworkno6yes
Read credentials stored where it runsread.credential.hostidentityno4yes
Act in accounts with the credentials it holdsauthenticate-as.credential.tenantidentityno7yes
Change its own permission settingsgrant.credential.selfidentityyes3yes
Send a message to anyonesend.message.worldcommunicationno0yes
Read mail or chat it is connected toread.message.tenantcommunicationno1yes
Commit to the repository it was pointed atwrite.repository.projectcodewith-effort4yes
Push to a code host (any branch it can reach)write.repository.tenantcodewith-effort4yes
Sign commits with the key it holdsauthenticate-as.credential.signingcodeno3yes
Publish packages, images or pages under the name it holdscreate.record.worldcodeno2yes
Spend money or tokens against an account it holdswrite.budget.tenantmoneyno1yes
Create something that outlives the turn where it runs (a cron, a service)create.schedule.hostscheduleyes4yes
Create something that outlives the session, on the platform (a routine, a scheduled trigger, a new session)create.schedule.tenantscheduleyes1
Read every page you visitread.record.browsingbrowserno1yes

The rules the set is written under

Reach

ReachMeans
selfthe agent's own process, sandbox or turn
projectthe working tree or workspace it was pointed at
hostthe machine, container or account it runs as
tenantthe organisation's accounts, repositories and services
worldanything on the internet

Reach is the axis people get wrong. Host for an agent in a vendor's container is the container, and tenant is a scoped token; each product's page says what the words mean there.