About 2) the use-package forms happen after I load custom-file.

I just manually deleted those 3 packages and reinstalled them from the package manager and then M-x package-autoremove displayed "Nothing to autoremove". But I noticed that that process did not update the package-selected-packages to the custom.el. I had to manually eval

(package--save-selected-packages (package--find-non-dependencies))

in order to update the custom.el

Before that, of course, after each emacs restart, package.el was trying to autoremove those 3 packages.

On Thu, May 21, 2015 at 10:58 AM Artur Malabarba <bruce.connor.am@gmail.com> wrote:
2015-05-21 15:35 GMT+01:00 Kaushal <kaushal.modi@gmail.com>:
> I just updated to the latest commit on emacs master and tried out
> package-autoremove.
>
> That suggested removing 3 packages (symon, minibuffer-line,
> git-timemachine), out of which I actually use 2: minibuffer-line,
> git-timemachine.
>
> For example, I have this in my init:
>
> ;; Display date+time in the minibuffer instead of in the mode-line
> (use-package minibuffer-line

There are two possibilities for why this happened.

1. The first time you start Emacs after the commit that introduced
selected-packages, package.el will try to guess which of your packages
were explicitly installed by you, and which were pulled in as deps.
It's impossible to know for sure, so this guessing is bound to go
wrong on some instances.

2. The list of selected packages is stored with your
custom-set-variables. So, if your `use-package' form comes before your
`custom-set-variables', then that might cause it to not get stored
correctly.

I'm not sure if there's a global fix we can do for case 2. Either way,
you (the user) can manually fix that by simply trying to install the
package you already have (`minibuffer-line', in this case). You can do
that from the package menu or with `M-x package-install'. You'll get a
message that "package already installed", and then package.el will
store this package in your list of `selected-packages'.
Another way to fix that is to `M-x customize-variable RET
package-selected-packages' and manually add `minibuffer-line' to it.