** TENTATIVE PROPOSAL, VERY VERY VERY DRAFT **
-# APT External Dependency Solver Protocol (EDSP) - version 0.2
+# APT External Dependency Solver Protocol (EDSP) - version 0.3
This document describes the communication protocol between APT and
external dependency solvers. The protocol is called APT EDSP, for "APT
The value of the **Request:** field is a string describing the EDSP
protocol which will be used to communicate. At present, the string must
-be `EDSP 0.2`.
+be `EDSP 0.3`.
a unique request identifier, such as an
UUID. Request fields are mainly used to identify the beginning of a
#### Solution
-A solution is a list of Deb 822 stanzas. Each of them is either an
-install stanza, telling APT to install a specific package, or a remove
-stanza, telling APT to remove one.
+A solution is a list of Deb 822 stanzas. Each of them could be an
+install stanza (telling APT to install a specific package), a remove
+stanza (telling APT to remove one), or an autoremove stanza (telling APT
+about the *future* possibility of removing a package using the
+Autoremove action).
An **install stanza** starts with an Install field and supports the
following fields:
**Remove stanzas** are similar to install stanzas, but have **Remove**
fields instead of Install fields.
+**Autoremove stanzas** are similar to install stanzas, but have
+**Autoremove** fields instead of Install fields. Autoremove stanzas
+should be output so that APT can inform the user of which packages they
+can now autoremove, as a consequence of the executed action. However,
+this protocol makes no assumption on the fact that a subsequent
+invocation of an Autoremove action will actually remove the very same
+packages indicated by Autoremove stanzas in the former solution.
+
In terms of expressivity, install and remove stanzas can carry one
single field each, as APT-IDs are enough to pinpoint packages to be
installed/removed. Nonetheless, for protocol readability, it is