# Computational Accountability in MAS Organizations with ADOPT
## 4 The ADOPT Accountability Protocol
### Goal Agreement  
This phase of the protocol regulates the agreement process between an agent and an organization for the achievement of a given organizational goal. Figure 2 shows the sequencing of the exchanged messages, which combines FIPA Request Interaction Protocol [50] with the already described CNP. When an organizational goal is to be pursued, the organization asks an agent to achieve it. The agent has, then, the possibility to accept or refuse the request made by the organization, or to make further requests of certain provisions that are considered by the agent as necessary to achieve the goal. This realizes Principles 4 and 5. The messages that are exchanged in this phase are the following:  
* _call_for_proposal(achieve(g))_: by this message \(Org\) starts an interaction with \(Ag\) with the aim of assigning it a goal \(g\) to pursue. * _refuse(achieve(g))_: the agent refuses the request made by the organization to achieve \(g\). * _propose(achieve(g), prov)_: with this message, an agent creates a commitment \(C_{3}=C(Ag,\)_Org, accept_proposal\((g,\)_prov)\wedge request(achieve(g,\)_prov))\), _agree\((achieve(g,\)_prov)))\)_. This means that on receiving a request to achieve \(g\), given that the provisions _prov_ were accepted, the agent is expected to agree to pursue the goal. It is up to the organization to decide whether _prov_ is acceptable or not. Only in case _prov_ is accepted, the commitment will eventually be detached. When no provisions are needed, _prov_ will amount to \(\top\). This is a necessary step to reach two ends: agent's awareness of assigned goals, and agent's acknowledgement to exert the necessary control to reach the goal. The rationale is that an agent, by being aware of its own capabilities, will not promise to pursue a goal it is not capable to pursue--even indirectly by enticing other agents to act--and that the relevant conditions that are necessary for goal achievement, but that the agent does not control (_prov_), are clearly stipulated. * _reject_proposal(achieve(g), prov)_: with this message the organization rejects the request for provisions _prov_ made by the agent for goal (g). It will release \(C_{3}\). * _accept_proposal(achieve(g), prov)_: with this message the organization accepts to provide the provisions _prov_ that were requested by the agent for goal \(g\). This creates a commitment \(C_{4}=C(Org,Ag,\ request(achieve(g,\)_prov))\wedge\ agree(achieve(g,\)_prov))\). With this commitment the organization ties the request to the agent to pursue a goal with the supply of provisions _prov_. The commitment will be detached by the final word of the agent, and its possible agreement to the pursuit. The rationale is that, since provisions may come at a cost, before supplying them, the organization waits for a confirmation by the agent. * _request(achieve(g, prov))_: with this message the organization _Org_ asks agent \(Ag\) to achieve goal \(g\), with provisions _prov_. Note that stipulation of what provisions should be supplied was done earlier through _propose_ and _accept_proposal_, but while that was an interaction aimed at deciding whether to assign \(g\) to \(Ag\), now \(Org\) wants the goal achieved. Generally, _request_ may be uttered after _call_for_proposal_. The occurrence of a _request_ contributes to detaching both \(C_{3}\) and \(C_{4}\). * _refuse(achieve(g, prov))_: with this message the agent refuses to achieve \(g\) with provisions _prov_. It, thus, releases \(C_{4}\), meaning that \(Org\) does not have to actually supply _prov_. We assume that this message is mutually exclusive with _agree(achieve(g, prov))_, thus, by this _refuse_ the agent violates \(C_{3}\), which at this point is already detached. * _agree(achieve(g, prov))_: with this message the agent creates the commitment where \(C_{5}=C(Ag,Org,\)\(inform(done(prov)),\)\(inform(done(achieve(g,\)_prov)))\), meaning that it will pursue the goal if _prov_ is actually provided. _Org_ is now expected to supply provisions. * _failure(prov)_: the organization did not succeed in supplying provisions.