The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Build.PL 3133
CONTRIBUTING 1137
Changes 012
INSTALL 10
LICENSE 11
MANIFEST 613
META.json 163664
META.yml 152468
Makefile.PL 4650
README 13
README.md 1940
dist.ini 413
lib/MooseX/Object/Pluggable.pm 45219
t/00-report-prereqs.dd 0132
t/00-report-prereqs.t 98144
t/05-load-failure.t 067
t/boilerplate.t 460
t/lib/TestApp3/Plugin/Dies1.pm 06
t/lib/TestApp3/Plugin/Dies2.pm 06
t/lib/TestApp3/Plugin/Lives.pm 010
t/lib/TestApp3.pm 011
t/zzz-check-breaks.t 018
weaver.ini 06
xt/author/00-compile.t 58
xt/author/eol.t 08
xt/author/no-tabs.t 050
xt/author/pod-spell.t 710
xt/release/changes_has_content.t 11
xt/release/clean-namespaces.t 09
xt/release/distmeta.t 32
xt/release/eol.t 80
xt/release/kwalitee.t 27
xt/release/no-tabs.t 140
xt/release/pod-coverage.t 93
xt/release/pod-syntax.t 32
xt/release/portability.t 011
xt/release/test-version.t 220
xt/release/unused-vars.t 80
38 files changed (This is a version diff) 8532124
@@ -1,3 +1,133 @@
-use 5.006;
-use Module::Build::Tiny 0.030;
-Build_PL();
+# This Build.PL for MooseX-Object-Pluggable was generated by
+# Dist::Zilla::Plugin::ModuleBuildTiny::Fallback 0.014
+use strict;
+use warnings;
+
+my %configure_requires = (
+    'Module::Build::Tiny' => '0.039',
+);
+
+my @missing = grep {
+    ! eval "require $_; $_->VERSION($configure_requires{$_}); 1"
+} keys %configure_requires;
+
+if (not @missing)
+{
+    print "Congratulations, your toolchain understands 'configure_requires'!\n\n";
+
+    # This section for MooseX-Object-Pluggable was generated by Dist::Zilla::Plugin::ModuleBuildTiny 0.008.
+    use strict;
+    use warnings;
+
+    use 5.006;
+    # use Module::Build::Tiny 0.039;
+    Module::Build::Tiny::Build_PL();
+}
+else
+{
+    $ENV{PERL_MB_FALLBACK_SILENCE_WARNING} or warn <<'EOW';
+*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***
+
+If you're seeing this warning, your toolchain is really, really old* and you'll
+almost certainly have problems installing CPAN modules from this century. But
+never fear, dear user, for we have the technology to fix this!
+
+If you're using CPAN.pm to install things, then you can upgrade it using:
+
+    cpan CPAN
+
+If you're using CPANPLUS to install things, then you can upgrade it using:
+
+    cpanp CPANPLUS
+
+If you're using cpanminus, you shouldn't be seeing this message in the first
+place, so please file an issue on github.
+
+This public service announcement was brought to you by the Perl Toolchain
+Gang, the irc.perl.org #toolchain IRC channel, and the number 42.
+
+----
+
+* Alternatively, you are running this file manually, in which case you need
+to learn to first fulfill all configure requires prerequisites listed in
+META.yml or META.json -- or use a cpan client to install this distribution.
+
+You can also silence this warning for future installations by setting the
+PERL_MB_FALLBACK_SILENCE_WARNING environment variable, but please don't do
+that until you fix your toolchain as described above.
+
+EOW
+    sleep 10 if -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
+
+
+    # This section was automatically generated by Dist::Zilla::Plugin::ModuleBuild v5.031.
+    use strict;
+    use warnings;
+
+    require Module::Build; Module::Build->VERSION(0.28);
+
+
+    my %module_build_args = (
+      "build_requires" => {},
+      "configure_requires" => {
+        "Module::Build::Tiny" => "0.039",
+        "perl" => "5.004"
+      },
+      "dist_abstract" => "Make your classes pluggable",
+      "dist_author" => [
+        "Guillermo Roditi <groditi\@cpan.org>"
+      ],
+      "dist_name" => "MooseX-Object-Pluggable",
+      "dist_version" => "0.0014",
+      "license" => "perl",
+      "module_name" => "MooseX::Object::Pluggable",
+      "recommends" => {},
+      "recursive_test_files" => 1,
+      "requires" => {
+        "Carp" => 0,
+        "Module::Pluggable::Object" => 0,
+        "Module::Runtime" => 0,
+        "Moose::Role" => 0,
+        "Moose::Util" => 0,
+        "Scalar::Util" => 0,
+        "Try::Tiny" => 0,
+        "namespace::autoclean" => 0,
+        "perl" => "5.006"
+      },
+      "script_files" => [],
+      "test_requires" => {
+        "ExtUtils::MakeMaker" => 0,
+        "File::Spec" => 0,
+        "Moose" => 0,
+        "Test::Fatal" => 0,
+        "Test::More" => "0.88",
+        "lib" => 0,
+        "perl" => "5.006",
+        "strict" => 0,
+        "warnings" => 0
+      }
+    );
+
+
+    my %fallback_build_requires = (
+      "ExtUtils::MakeMaker" => 0,
+      "File::Spec" => 0,
+      "Moose" => 0,
+      "Test::Fatal" => 0,
+      "Test::More" => "0.88",
+      "lib" => 0,
+      "perl" => "5.006",
+      "strict" => 0,
+      "warnings" => 0
+    );
+
+
+    unless ( eval { Module::Build->VERSION(0.4004) } ) {
+      delete $module_build_args{test_requires};
+      $module_build_args{build_requires} = \%fallback_build_requires;
+    }
+
+    my $build = Module::Build->new(%module_build_args);
+
+    $build->create_build_script;
+}
@@ -4,9 +4,16 @@ CONTRIBUTING
 Thank you for considering contributing to this distribution.  This file
 contains instructions that will help you work with the source code.
 
-The distribution is managed with Dist::Zilla.  This means than many of the
-usual files you might expect are not in the repository, but are generated
-at release time (e.g. Makefile.PL).
+PLEASE NOTE that if you have any questions or difficulties, you can reach the
+maintainer(s) through the bug queue described later in this document
+(preferred), or by emailing the releaser directly. You are not required to
+follow any of the steps in this document to submit a patch or bug report;
+these are just recommendations, intended to help you (and help us help you
+faster).
+
+The distribution is managed with Dist::Zilla (https://metacpan.org/release/Dist-Zilla).
+This means than many of the usual files you might expect are not in the
+repository, but are generated at release time (e.g. Makefile.PL).
 
 However, you can run tests directly using the 'prove' tool:
 
@@ -31,14 +38,24 @@ install it from CPAN, then run one of the following commands, depending on
 your CPAN client:
 
   $ cpan `dzil authordeps --missing`
+or
   $ dzil authordeps --missing | cpanm
 
 You should then also install any additional requirements not needed by the
 dzil build but may be needed by tests or other development:
 
-  # cpan `dzil listdeps --author --missing`
+  $ cpan `dzil listdeps --author --missing`
+or
   $ dzil listdeps --author --missing | cpanm
 
+Or, you can use the 'dzil stale' command to install all requirements at once:
+
+  $ cpan Dist::Zilla::App::Command::stale
+  $ cpan `dzil stale --all`
+or
+  $ cpanm Dist::Zilla::App::Command::stale
+  $ dzil stale --all | cpanm
+
 You can also do this via cpanm directly:
 
   $ cpanm --reinstall --installdeps --with-develop --with-recommends MooseX::Object::Pluggable
@@ -50,25 +67,34 @@ Once installed, here are some dzil commands you might try:
   $ dzil test --release
   $ dzil xtest
   $ dzil listdeps --json
-  $ dzil build --not
+  $ dzil build --notgz
 
 You can learn more about Dist::Zilla at http://dzil.org/.
 
-The code for this distribution is hosted at GitHub. The main repository is:
-https://github.com/moose/MooseX-Object-Pluggable.
+The code for this distribution is hosted at GitHub. The repository is:
+https://github.com/moose/MooseX-Object-Pluggable
 You can submit code changes by forking the repository, pushing your code
 changes to your clone, and then submitting a pull request. Detailed
 instructions for doing that is available here:
 
-https://help.github.com/
 https://help.github.com/articles/creating-a-pull-request
 
 If you have found a bug, but do not have an accompanying patch to fix it, you
 can submit an issue report here:
 https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Object-Pluggable
 or via bug-MooseX-Object-Pluggable@rt.cpan.org.
-This is also a good place to send your questions about the usage of this distribution.
+
+There is also a mailing list available for users of this distribution, at
+http://lists.perl.org/list/moose.html.
+There is also an irc channel available for users of this distribution, at
+irc://irc.perl.org/#moose.
+
+If you send me a patch or pull request, your name and email address will be
+included in the documentation as a contributor (using the attribution on the
+commit or patch), unless you specifically request for it not to be.  If you
+wish to be listed under a different name or address, you should submit a pull
+request to the .mailmap file to contain the correct mapping.
 
 
-This file was generated via Dist::Zilla::Plugin::GenerateFile::ShareDir 0.002 from a
-template file originating in Dist-Zilla-PluginBundle-Author-ETHER-0.039.
+This file was generated via Dist::Zilla::Plugin::GenerateFile::ShareDir 0.005 from a
+template file originating in Dist-Zilla-PluginBundle-Author-ETHER-0.085.
@@ -1,5 +1,17 @@
 Revision history for MooseX-Object-Pluggable
 
+0.0014    2015-01-18 20:38:41Z
+          - add a test that runs `moose-outdated`, to make it more obvious
+            when there are installation conflicts
+
+0.0013    2014-02-02 08:53:34Z
+          - line numbers in shipped code are now almost the same (within 3) as
+            the repository source, for easier debugging
+          - add error diagnostic if the plugin is not a Moose role (RT#49507)
+          - avoid continuing on after failing to load a plugin (RT#63013)
+          - keep track of all plugins successfully loaded so far in case we
+            fail in the middle (RT#88562)
+
 0.0012    2013-11-11 03:59:19Z
           - removed use of deprecated Class::MOP::load_class
           - repository migrated from shadowcat to the github moose organization
@@ -1,4 +1,3 @@
-
 This is the Perl distribution MooseX-Object-Pluggable.
 
 Installing MooseX-Object-Pluggable is straightforward.
@@ -22,7 +22,7 @@ This is free software, licensed under:
                      Version 1, February 1989
 
  Copyright (C) 1989 Free Software Foundation, Inc.
- 51 Franklin St, Suite 500, Boston, MA  02110-1335  USA
+ 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
@@ -1,3 +1,4 @@
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.031.
 Build.PL
 CONTRIBUTING
 Changes
@@ -8,16 +9,16 @@ META.json
 META.yml
 Makefile.PL
 README
-README.md
 dist.ini
 lib/MooseX/Object/Pluggable.pm
 t/00-load.t
+t/00-report-prereqs.dd
 t/00-report-prereqs.t
 t/01-basic.t
 t/02-basic2.t
 t/03-custom-ns.t
 t/04-reload.t
-t/boilerplate.t
+t/05-load-failure.t
 t/lib/CustomNS/Plugin/Foo.pm
 t/lib/TestApp.pm
 t/lib/TestApp/Plugin/Bar.pm
@@ -26,18 +27,24 @@ t/lib/TestApp/Plugin/Bor.pm
 t/lib/TestApp/Plugin/Foo.pm
 t/lib/TestApp2.pm
 t/lib/TestApp2/Plugin/Foo.pm
+t/lib/TestApp3.pm
+t/lib/TestApp3/Plugin/Dies1.pm
+t/lib/TestApp3/Plugin/Dies2.pm
+t/lib/TestApp3/Plugin/Lives.pm
+t/zzz-check-breaks.t
+weaver.ini
 xt/author/00-compile.t
+xt/author/eol.t
+xt/author/no-tabs.t
 xt/author/pod-spell.t
 xt/release/changes_has_content.t
+xt/release/clean-namespaces.t
 xt/release/cpan-changes.t
 xt/release/distmeta.t
-xt/release/eol.t
 xt/release/kwalitee.t
 xt/release/minimum-version.t
 xt/release/mojibake.t
-xt/release/no-tabs.t
 xt/release/pod-coverage.t
 xt/release/pod-no404s.t
 xt/release/pod-syntax.t
-xt/release/test-version.t
-xt/release/unused-vars.t
+xt/release/portability.t
@@ -4,41 +4,104 @@
       "Guillermo Roditi <groditi@cpan.org>"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "Dist::Zilla version 5.006, CPAN::Meta::Converter version 2.132830",
+   "generated_by" : "Dist::Zilla version 5.031, CPAN::Meta::Converter version 2.143240",
    "license" : [
       "perl_5"
    ],
    "meta-spec" : {
       "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
-      "version" : "2"
+      "version" : 2
    },
    "name" : "MooseX-Object-Pluggable",
    "no_index" : {
       "directory" : [
          "t",
-         "xt",
-         "examples"
+         "xt"
       ]
    },
    "prereqs" : {
       "configure" : {
          "requires" : {
-            "ExtUtils::MakeMaker" : "6.30",
-            "Module::Build::Tiny" : "0.030"
+            "Module::Build::Tiny" : "0.039",
+            "perl" : "5.004"
          }
       },
       "develop" : {
          "recommends" : {
-            "Dist::Zilla::PluginBundle::Author::ETHER" : "0.039"
+            "Dist::Zilla::PluginBundle::Author::ETHER" : "0.085"
          },
          "requires" : {
-            "Dist::Zilla" : "5.006",
-            "Dist::Zilla::Plugin::ContributorsFromGit" : "0",
-            "Dist::Zilla::Plugin::GitHub::Update" : "0",
+            "Dist::Zilla" : "5",
+            "Dist::Zilla::Plugin::Authority" : "0",
+            "Dist::Zilla::Plugin::AuthorityFromModule" : "0.002",
+            "Dist::Zilla::Plugin::AutoMetaResources" : "0",
+            "Dist::Zilla::Plugin::AutoPrereqs" : "0",
+            "Dist::Zilla::Plugin::CheckIssues" : "0",
+            "Dist::Zilla::Plugin::CheckPrereqsIndexed" : "0",
+            "Dist::Zilla::Plugin::CheckSelfDependency" : "0",
+            "Dist::Zilla::Plugin::CheckStrictVersion" : "0",
+            "Dist::Zilla::Plugin::ConfirmRelease" : "0",
+            "Dist::Zilla::Plugin::CopyFilesFromRelease" : "0",
+            "Dist::Zilla::Plugin::ExecDir" : "0",
+            "Dist::Zilla::Plugin::FileFinder::ByName" : "0",
+            "Dist::Zilla::Plugin::GenerateFile::ShareDir" : "0",
+            "Dist::Zilla::Plugin::Git::Check" : "2.025",
+            "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch" : "0.004",
+            "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts" : "0",
+            "Dist::Zilla::Plugin::Git::Commit" : "2.020",
+            "Dist::Zilla::Plugin::Git::Contributors" : "0.004",
+            "Dist::Zilla::Plugin::Git::Describe" : "0.004",
+            "Dist::Zilla::Plugin::Git::GatherDir" : "2.016",
+            "Dist::Zilla::Plugin::Git::NextVersion" : "0",
+            "Dist::Zilla::Plugin::Git::Push" : "0",
+            "Dist::Zilla::Plugin::Git::Remote::Check" : "0",
+            "Dist::Zilla::Plugin::Git::Tag" : "0",
+            "Dist::Zilla::Plugin::GitHub::Update" : "0.40",
             "Dist::Zilla::Plugin::GithubMeta" : "0",
-            "Dist::Zilla::Plugin::MakeMaker::Fallback" : "0",
-            "Dist::Zilla::Plugin::ModuleBuildTiny" : "0.004",
-            "Dist::Zilla::PluginBundle::Author::ETHER" : "0.039",
+            "Dist::Zilla::Plugin::InstallGuide" : "0",
+            "Dist::Zilla::Plugin::Keywords" : "0.004",
+            "Dist::Zilla::Plugin::License" : "0",
+            "Dist::Zilla::Plugin::MakeMaker::Fallback" : "0.012",
+            "Dist::Zilla::Plugin::Manifest" : "0",
+            "Dist::Zilla::Plugin::MetaConfig" : "0",
+            "Dist::Zilla::Plugin::MetaJSON" : "0",
+            "Dist::Zilla::Plugin::MetaNoIndex" : "0",
+            "Dist::Zilla::Plugin::MetaProvides::Package" : "1.15000002",
+            "Dist::Zilla::Plugin::MetaResources" : "0",
+            "Dist::Zilla::Plugin::MetaTests" : "0",
+            "Dist::Zilla::Plugin::MetaYAML" : "0",
+            "Dist::Zilla::Plugin::MinimumPerl" : "1.006",
+            "Dist::Zilla::Plugin::ModuleBuildTiny::Fallback" : "0.006",
+            "Dist::Zilla::Plugin::MojibakeTests" : "0",
+            "Dist::Zilla::Plugin::NextRelease" : "4.300018",
+            "Dist::Zilla::Plugin::PkgVersion" : "5.010",
+            "Dist::Zilla::Plugin::PodCoverageTests" : "0",
+            "Dist::Zilla::Plugin::PodSyntaxTests" : "0",
+            "Dist::Zilla::Plugin::PodWeaver" : "4.005",
+            "Dist::Zilla::Plugin::Prereqs" : "0",
+            "Dist::Zilla::Plugin::Prereqs::AuthorDeps" : "0",
+            "Dist::Zilla::Plugin::PromptIfStale" : "0",
+            "Dist::Zilla::Plugin::Readme" : "0",
+            "Dist::Zilla::Plugin::ReadmeAnyFromPod" : "0.142180",
+            "Dist::Zilla::Plugin::Run::AfterBuild" : "0.028",
+            "Dist::Zilla::Plugin::Run::AfterRelease" : "0.031",
+            "Dist::Zilla::Plugin::RunExtraTests" : "0.024",
+            "Dist::Zilla::Plugin::ShareDir" : "0",
+            "Dist::Zilla::Plugin::Test::CPAN::Changes" : "0.008",
+            "Dist::Zilla::Plugin::Test::ChangesHasContent" : "0",
+            "Dist::Zilla::Plugin::Test::CheckBreaks" : "0",
+            "Dist::Zilla::Plugin::Test::Compile" : "2.039",
+            "Dist::Zilla::Plugin::Test::EOL" : "0.14",
+            "Dist::Zilla::Plugin::Test::Kwalitee" : "2.06",
+            "Dist::Zilla::Plugin::Test::MinimumVersion" : "2.000003",
+            "Dist::Zilla::Plugin::Test::NoTabs" : "0.08",
+            "Dist::Zilla::Plugin::Test::Pod::No404s" : "0",
+            "Dist::Zilla::Plugin::Test::PodSpelling" : "2.006001",
+            "Dist::Zilla::Plugin::Test::Portability" : "0",
+            "Dist::Zilla::Plugin::Test::ReportPrereqs" : "0.019",
+            "Dist::Zilla::Plugin::TestRelease" : "0",
+            "Dist::Zilla::Plugin::UploadToCPAN" : "0",
+            "Dist::Zilla::PluginBundle::Author::ETHER" : "0.068",
             "File::Spec" : "0",
             "IO::Handle" : "0",
             "IPC::Open3" : "0",
@@ -46,35 +109,41 @@
             "Pod::Weaver::Section::Contributors" : "0",
             "Test::CPAN::Changes" : "0.19",
             "Test::CPAN::Meta" : "0",
-            "Test::Kwalitee" : "1.12",
+            "Test::CleanNamespaces" : "0",
+            "Test::EOL" : "0",
+            "Test::Kwalitee" : "1.21",
             "Test::More" : "0.94",
             "Test::NoTabs" : "0",
             "Test::Pod" : "1.41",
-            "Test::Pod::Coverage" : "1.08"
+            "Test::Pod::Coverage" : "1.08",
+            "Test::Spelling" : "0.12"
          }
       },
       "runtime" : {
          "requires" : {
             "Carp" : "0",
-            "Class::Load" : "0",
             "Module::Pluggable::Object" : "0",
+            "Module::Runtime" : "0",
             "Moose::Role" : "0",
+            "Moose::Util" : "0",
             "Scalar::Util" : "0",
+            "Try::Tiny" : "0",
+            "namespace::autoclean" : "0",
             "perl" : "5.006"
          }
       },
       "test" : {
          "recommends" : {
-            "CPAN::Meta" : "0",
-            "CPAN::Meta::Requirements" : "0"
+            "CPAN::Meta" : "2.120900"
          },
          "requires" : {
             "ExtUtils::MakeMaker" : "0",
-            "File::Spec::Functions" : "0",
-            "List::Util" : "0",
+            "File::Spec" : "0",
             "Moose" : "0",
-            "Test::More" : "0",
+            "Test::Fatal" : "0",
+            "Test::More" : "0.88",
             "lib" : "0",
+            "perl" : "5.006",
             "strict" : "0",
             "warnings" : "0"
          }
@@ -83,7 +152,7 @@
    "provides" : {
       "MooseX::Object::Pluggable" : {
          "file" : "lib/MooseX/Object/Pluggable.pm",
-         "version" : "0.0012"
+         "version" : "0.0014"
       }
    },
    "release_status" : "stable",
@@ -97,73 +166,142 @@
          "type" : "git",
          "url" : "https://github.com/moose/MooseX-Object-Pluggable.git",
          "web" : "https://github.com/moose/MooseX-Object-Pluggable"
-      }
+      },
+      "x_IRC" : "irc://irc.perl.org/#moose",
+      "x_MailingList" : "http://lists.perl.org/list/moose.html"
    },
-   "version" : "0.0012",
+   "version" : "0.0014",
    "x_Dist_Zilla" : {
       "perl" : {
-         "version" : "5.019005"
+         "version" : "5.021006"
       },
       "plugins" : [
          {
+            "class" : "Dist::Zilla::Plugin::Prereqs",
+            "config" : {
+               "Dist::Zilla::Plugin::Prereqs" : {
+                  "phase" : "develop",
+                  "type" : "requires"
+               }
+            },
+            "name" : "@Author::ETHER/bundle_plugins",
+            "version" : "5.031"
+         },
+         {
             "class" : "Dist::Zilla::Plugin::Git::NextVersion",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::NextVersion" : {
+                  "first_version" : "0.001",
+                  "version_by_branch" : "0",
+                  "version_regexp" : "(?^:^v([\\d._]+)(-TRIAL)?$)"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "@Author::ETHER/Git::NextVersion",
-            "version" : "2.017"
+            "version" : "2.029"
          },
          {
             "class" : "Dist::Zilla::Plugin::PromptIfStale",
-            "name" : "@Author::ETHER/build",
-            "version" : "0.012"
+            "config" : {
+               "Dist::Zilla::Plugin::PromptIfStale" : {
+                  "check_all_plugins" : 0,
+                  "check_all_prereqs" : 0,
+                  "modules" : [
+                     "Dist::Zilla::PluginBundle::Author::ETHER"
+                  ],
+                  "phase" : "build",
+                  "skip" : []
+               }
+            },
+            "name" : "@Author::ETHER/stale modules, build",
+            "version" : "0.035"
          },
          {
             "class" : "Dist::Zilla::Plugin::PromptIfStale",
-            "name" : "@Author::ETHER/release",
-            "version" : "0.012"
+            "config" : {
+               "Dist::Zilla::Plugin::PromptIfStale" : {
+                  "check_all_plugins" : "1",
+                  "check_all_prereqs" : "1",
+                  "modules" : [],
+                  "phase" : "release",
+                  "skip" : []
+               }
+            },
+            "name" : "@Author::ETHER/stale modules, release",
+            "version" : "0.035"
          },
          {
             "class" : "Dist::Zilla::Plugin::ExecDir",
             "name" : "@Author::ETHER/ExecDir",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::ShareDir",
             "name" : "@Author::ETHER/ShareDir",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::FileFinder::ByName",
             "name" : "@Author::ETHER/Examples",
-            "version" : "5.006"
+            "version" : "5.031"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FileFinder::ByName",
+            "name" : "@Author::ETHER/ExtraTestFiles",
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::GatherDir",
+            "config" : {
+               "Dist::Zilla::Plugin::GatherDir" : {
+                  "exclude_filename" : [
+                     "README.md",
+                     "LICENSE",
+                     "CONTRIBUTING"
+                  ],
+                  "exclude_match" : [],
+                  "follow_symlinks" : "0",
+                  "include_dotfiles" : "0",
+                  "prefix" : "",
+                  "prune_directory" : [],
+                  "root" : "."
+               },
+               "Dist::Zilla::Plugin::Git::GatherDir" : {
+                  "include_untracked" : "0"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "@Author::ETHER/Git::GatherDir",
-            "version" : "2.017"
+            "version" : "2.029"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaYAML",
             "name" : "@Author::ETHER/MetaYAML",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaJSON",
             "name" : "@Author::ETHER/MetaJSON",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::License",
             "name" : "@Author::ETHER/License",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::Readme",
             "name" : "@Author::ETHER/Readme",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::Manifest",
             "name" : "@Author::ETHER/Manifest",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::GenerateFile::ShareDir",
@@ -172,59 +310,72 @@
                   "destination_filename" : "CONTRIBUTING",
                   "dist" : "Dist-Zilla-PluginBundle-Author-ETHER",
                   "encoding" : "UTF-8",
+                  "has_xs" : 0,
                   "source_filename" : "CONTRIBUTING"
                }
             },
-            "name" : "@Author::ETHER/GenerateFile::ShareDir",
-            "version" : "0.002"
+            "name" : "@Author::ETHER/generate CONTRIBUTING",
+            "version" : "0.005"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::InstallGuide",
+            "name" : "@Author::ETHER/InstallGuide",
+            "version" : "1.200006"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::Compile",
             "config" : {
                "Dist::Zilla::Plugin::Test::Compile" : {
+                  "bail_out_on_fail" : "1",
+                  "fail_on_warning" : "author",
+                  "fake_home" : "0",
                   "filename" : "xt/author/00-compile.t",
                   "module_finder" : [
                      ":InstallModules"
                   ],
+                  "needs_display" : "0",
+                  "phase" : "develop",
                   "script_finder" : [
                      ":ExecFiles",
                      "@Author::ETHER/Examples"
-                  ]
+                  ],
+                  "skips" : []
                }
             },
             "name" : "@Author::ETHER/Test::Compile",
-            "version" : "2.037"
+            "version" : "2.051"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::NoTabs",
             "config" : {
                "Dist::Zilla::Plugin::Test::NoTabs" : {
-                  "module_finder" : [
-                     ":InstallModules"
-                  ],
-                  "script_finder" : [
+                  "filename" : "xt/author/no-tabs.t",
+                  "finder" : [
+                     ":InstallModules",
                      ":ExecFiles",
-                     "@Author::ETHER/Examples"
+                     "@Author::ETHER/Examples",
+                     ":TestFiles",
+                     "@Author::ETHER/ExtraTestFiles"
                   ]
                }
             },
             "name" : "@Author::ETHER/Test::NoTabs",
-            "version" : "0.05"
+            "version" : "0.11"
          },
          {
-            "class" : "Dist::Zilla::Plugin::EOLTests",
-            "name" : "@Author::ETHER/EOLTests",
-            "version" : "0.02"
+            "class" : "Dist::Zilla::Plugin::Test::EOL",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::EOL" : {
+                  "filename" : "xt/author/eol.t"
+               }
+            },
+            "name" : "@Author::ETHER/Test::EOL",
+            "version" : "0.16"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaTests",
             "name" : "@Author::ETHER/MetaTests",
-            "version" : "5.006"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::Test::Version",
-            "name" : "@Author::ETHER/Test::Version",
-            "version" : "0.002004"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes",
@@ -234,12 +385,7 @@
          {
             "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent",
             "name" : "@Author::ETHER/Test::ChangesHasContent",
-            "version" : "0.006"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::Test::UnusedVars",
-            "name" : "@Author::ETHER/Test::UnusedVars",
-            "version" : "2.000005"
+            "version" : "0.007"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::MinimumVersion",
@@ -249,17 +395,17 @@
          {
             "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
             "name" : "@Author::ETHER/PodSyntaxTests",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::PodCoverageTests",
             "name" : "@Author::ETHER/PodCoverageTests",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::PodSpelling",
             "name" : "@Author::ETHER/Test::PodSpelling",
-            "version" : "2.006001"
+            "version" : "2.006008"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::Pod::No404s",
@@ -268,43 +414,44 @@
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::Kwalitee",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::Kwalitee" : {
+                  "filename" : "xt/release/kwalitee.t",
+                  "skiptest" : []
+               }
+            },
             "name" : "@Author::ETHER/Test::Kwalitee",
-            "version" : "2.07"
+            "version" : "2.11"
          },
          {
             "class" : "Dist::Zilla::Plugin::MojibakeTests",
             "name" : "@Author::ETHER/MojibakeTests",
-            "version" : "0.5"
+            "version" : "0.7"
          },
          {
             "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
             "name" : "@Author::ETHER/Test::ReportPrereqs",
-            "version" : "0.010"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::PruneCruft",
-            "name" : "@Author::ETHER/PruneCruft",
-            "version" : "5.006"
+            "version" : "0.019"
          },
          {
-            "class" : "Dist::Zilla::Plugin::ManifestSkip",
-            "name" : "@Author::ETHER/ManifestSkip",
-            "version" : "5.006"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::Authority",
-            "name" : "@Author::ETHER/Authority",
-            "version" : "1.006"
+            "class" : "Dist::Zilla::Plugin::Test::Portability",
+            "name" : "@Author::ETHER/Test::Portability",
+            "version" : "2.000005"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Describe",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Describe" : {
+                  "on_package_line" : "1"
+               }
+            },
             "name" : "@Author::ETHER/Git::Describe",
-            "version" : "0.003"
+            "version" : "0.004"
          },
          {
             "class" : "Dist::Zilla::Plugin::PkgVersion",
             "name" : "@Author::ETHER/PkgVersion",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::PodWeaver",
@@ -313,26 +460,118 @@
                   "finder" : [
                      ":InstallModules",
                      ":ExecFiles"
+                  ],
+                  "plugins" : [
+                     {
+                        "class" : "Pod::Weaver::Plugin::EnsurePod5",
+                        "name" : "@CorePrep/EnsurePod5",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Plugin::H1Nester",
+                        "name" : "@CorePrep/H1Nester",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Plugin::SingleEncoding",
+                        "name" : "@Default/SingleEncoding",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Name",
+                        "name" : "@Default/Name",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Version",
+                        "name" : "@Default/Version",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "@Default/prelude",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "SYNOPSIS",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "DESCRIPTION",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Generic",
+                        "name" : "OVERVIEW",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Collect",
+                        "name" : "ATTRIBUTES",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Collect",
+                        "name" : "METHODS",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Collect",
+                        "name" : "FUNCTIONS",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Leftovers",
+                        "name" : "@Default/Leftovers",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Region",
+                        "name" : "@Default/postlude",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Authors",
+                        "name" : "@Default/Authors",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Legal",
+                        "name" : "@Default/Legal",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Plugin::Transformer",
+                        "name" : "-Transformer",
+                        "version" : "4.010"
+                     },
+                     {
+                        "class" : "Pod::Weaver::Section::Contributors",
+                        "name" : "Contributors",
+                        "version" : "0.009"
+                     }
                   ]
                }
             },
             "name" : "@Author::ETHER/PodWeaver",
-            "version" : "4.001"
+            "version" : "4.006"
          },
          {
             "class" : "Dist::Zilla::Plugin::NextRelease",
             "name" : "@Author::ETHER/NextRelease",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
             "name" : "@Author::ETHER/ReadmeAnyFromPod",
-            "version" : "0.133030"
+            "version" : "0.142470"
          },
          {
             "class" : "Dist::Zilla::Plugin::GithubMeta",
             "name" : "@Author::ETHER/GithubMeta",
-            "version" : "0.42"
+            "version" : "0.46"
          },
          {
             "class" : "Dist::Zilla::Plugin::AutoMetaResources",
@@ -340,19 +579,40 @@
             "version" : "1.20"
          },
          {
-            "class" : "Dist::Zilla::Plugin::MetaNoIndex",
-            "name" : "@Author::ETHER/MetaNoIndex",
-            "version" : "5.006"
+            "class" : "Dist::Zilla::Plugin::AuthorityFromModule",
+            "config" : {
+               "Dist::Zilla::Plugin::AuthorityFromModule" : {
+                  "module" : "MooseX::Object::Pluggable"
+               }
+            },
+            "name" : "@Author::ETHER/AuthorityFromModule",
+            "version" : "0.004"
          },
          {
-            "class" : "Dist::Zilla::Plugin::FinderCode",
-            "name" : "@Author::ETHER/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
-            "version" : "5.006"
+            "class" : "Dist::Zilla::Plugin::Authority",
+            "name" : "@Author::ETHER/Authority",
+            "version" : "1.009"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaNoIndex",
+            "name" : "@Author::ETHER/MetaNoIndex",
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaProvides::Package",
             "config" : {
-               "Dist::Zilla::Plugin::MetaProvides::Package" : {},
+               "Dist::Zilla::Plugin::MetaProvides::Package" : {
+                  "finder" : [
+                     ":InstallModules"
+                  ],
+                  "finder_objects" : [
+                     {
+                        "class" : "Dist::Zilla::Plugin::FinderCode",
+                        "name" : ":InstallModules",
+                        "version" : "5.031"
+                     }
+                  ]
+               },
                "Dist::Zilla::Role::MetaProvider::Provider" : {
                   "inherit_missing" : "1",
                   "inherit_version" : "1",
@@ -360,38 +620,50 @@
                }
             },
             "name" : "@Author::ETHER/MetaProvides::Package",
-            "version" : "1.15000000"
+            "version" : "2.003001"
          },
          {
             "class" : "Dist::Zilla::Plugin::MetaConfig",
             "name" : "@Author::ETHER/MetaConfig",
-            "version" : "5.006"
+            "version" : "5.031"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Keywords",
+            "config" : {
+               "Dist::Zilla::Plugin::Keywords" : {
+                  "keywords" : []
+               }
+            },
+            "name" : "@Author::ETHER/Keywords",
+            "version" : "0.006"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::Contributors",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Contributors" : {
+                  "include_authors" : "0",
+                  "include_releaser" : "1",
+                  "order_by" : "commits",
+                  "paths" : []
+               }
+            },
+            "name" : "@Author::ETHER/Git::Contributors",
+            "version" : "0.008"
          },
          {
             "class" : "Dist::Zilla::Plugin::AutoPrereqs",
             "name" : "@Author::ETHER/AutoPrereqs",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs::AuthorDeps",
             "name" : "@Author::ETHER/Prereqs::AuthorDeps",
-            "version" : "0.002"
+            "version" : "0.004"
          },
          {
             "class" : "Dist::Zilla::Plugin::MinimumPerl",
             "name" : "@Author::ETHER/MinimumPerl",
-            "version" : "1.003"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::Prereqs",
-            "config" : {
-               "Dist::Zilla::Plugin::Prereqs" : {
-                  "phase" : "develop",
-                  "type" : "requires"
-               }
-            },
-            "name" : "@Author::ETHER/installer_requirements",
-            "version" : "5.006"
+            "version" : "1.006"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -402,47 +674,142 @@
                }
             },
             "name" : "@Author::ETHER/pluginbundle_version",
-            "version" : "5.006"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::RunExtraTests",
-            "name" : "@Author::ETHER/RunExtraTests",
-            "version" : "0.015"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::MakeMaker::Fallback",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : 9
+               }
+            },
             "name" : "@Author::ETHER/MakeMaker::Fallback",
-            "version" : "0.003"
+            "version" : "0.016"
          },
          {
-            "class" : "Dist::Zilla::Plugin::ModuleBuildTiny",
-            "name" : "@Author::ETHER/ModuleBuildTiny",
-            "version" : "0.005"
+            "class" : "Dist::Zilla::Plugin::ModuleBuildTiny::Fallback",
+            "config" : {
+               "Dist::Zilla::Plugin::ModuleBuildTiny::Fallback" : {
+                  "plugins" : [
+                     {
+                        "class" : "Dist::Zilla::Plugin::ModuleBuild",
+                        "config" : {
+                           "Dist::Zilla::Role::TestRunner" : {
+                              "default_jobs" : 9
+                           }
+                        },
+                        "name" : "ModuleBuildTiny::Fallback",
+                        "version" : "5.031"
+                     },
+                     {
+                        "class" : "Dist::Zilla::Plugin::ModuleBuildTiny",
+                        "config" : {
+                           "Dist::Zilla::Role::TestRunner" : {
+                              "default_jobs" : 9
+                           }
+                        },
+                        "name" : "ModuleBuildTiny::Fallback",
+                        "version" : "0.008"
+                     }
+                  ]
+               },
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : 9
+               }
+            },
+            "name" : "@Author::ETHER/ModuleBuildTiny::Fallback",
+            "version" : "0.014"
          },
          {
-            "class" : "Dist::Zilla::Plugin::InstallGuide",
-            "name" : "@Author::ETHER/InstallGuide",
-            "version" : "1.200001"
+            "class" : "Dist::Zilla::Plugin::RunExtraTests",
+            "config" : {
+               "Dist::Zilla::Role::TestRunner" : {
+                  "default_jobs" : 9
+               }
+            },
+            "name" : "@Author::ETHER/RunExtraTests",
+            "version" : "0.025"
          },
          {
             "class" : "Dist::Zilla::Plugin::CheckSelfDependency",
+            "config" : {
+               "Dist::Zilla::Plugin::CheckSelfDependency" : {
+                  "finder" : [
+                     ":InstallModules"
+                  ]
+               }
+            },
             "name" : "@Author::ETHER/CheckSelfDependency",
-            "version" : "0.005"
+            "version" : "0.010"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Run::AfterBuild",
+            "config" : {
+               "Dist::Zilla::Plugin::Run::Role::Runner" : {
+                  "fatal_errors" : 1,
+                  "run" : [
+                     "bash -c \"test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname %d` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi\""
+                  ]
+               }
+            },
+            "name" : "@Author::ETHER/.ackrc",
+            "version" : "0.032"
          },
          {
             "class" : "Dist::Zilla::Plugin::Run::AfterBuild",
-            "name" : "@Author::ETHER/Run::AfterBuild",
-            "version" : "0.020"
+            "config" : {
+               "Dist::Zilla::Plugin::Run::Role::Runner" : {
+                  "eval" : [
+                     "if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; }"
+                  ],
+                  "fatal_errors" : 1
+               }
+            },
+            "name" : "@Author::ETHER/.latest",
+            "version" : "0.032"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckStrictVersion",
+            "name" : "@Author::ETHER/CheckStrictVersion",
+            "version" : "0.001"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Check",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Check" : {
+                  "untracked_files" : "die"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "@Author::ETHER/initial check",
-            "version" : "2.017"
+            "version" : "2.029"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts",
+            "config" : {
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@Author::ETHER/Git::CheckFor::MergeConflicts",
+            "version" : "0.011"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch",
+            "config" : {
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "@Author::ETHER/Git::CheckFor::CorrectBranch",
-            "version" : "0.007"
+            "version" : "0.011"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Remote::Check",
@@ -452,57 +819,179 @@
          {
             "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed",
             "name" : "@Author::ETHER/CheckPrereqsIndexed",
-            "version" : "0.009"
+            "version" : "0.014"
          },
          {
             "class" : "Dist::Zilla::Plugin::TestRelease",
             "name" : "@Author::ETHER/TestRelease",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Check",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Check" : {
+                  "untracked_files" : "die"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "@Author::ETHER/after tests",
-            "version" : "2.017"
+            "version" : "2.029"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::CheckIssues",
+            "name" : "@Author::ETHER/CheckIssues",
+            "version" : "0.007"
          },
          {
             "class" : "Dist::Zilla::Plugin::UploadToCPAN",
             "name" : "@Author::ETHER/UploadToCPAN",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::CopyFilesFromRelease",
+            "config" : {
+               "Dist::Zilla::Plugin::CopyFilesFromRelease" : {
+                  "filename" : [
+                     "LICENSE",
+                     "CONTRIBUTING"
+                  ],
+                  "match" : []
+               }
+            },
             "name" : "@Author::ETHER/CopyFilesFromRelease",
-            "version" : "0.001"
+            "version" : "0.005"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Run::AfterRelease",
+            "config" : {
+               "Dist::Zilla::Plugin::Run::Role::Runner" : {
+                  "eval" : [
+                     "unlink 'README.md'"
+                  ],
+                  "fatal_errors" : 1
+               }
+            },
+            "name" : "@Author::ETHER/remove old READMEs",
+            "version" : "0.032"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Commit",
-            "name" : "@Author::ETHER/Git::Commit",
-            "version" : "2.017"
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Commit" : {
+                  "add_files_in" : [
+                     "."
+                  ],
+                  "commit_msg" : "%N-%v%t%n%n%c",
+                  "time_zone" : "local"
+               },
+               "Dist::Zilla::Role::Git::DirtyFiles" : {
+                  "allow_dirty" : [
+                     "Changes",
+                     "README.md",
+                     "LICENSE",
+                     "CONTRIBUTING"
+                  ],
+                  "allow_dirty_match" : [],
+                  "changelog" : "Changes"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
+            "name" : "@Author::ETHER/release snapshot",
+            "version" : "2.029"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Tag",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Tag" : {
+                  "branch" : null,
+                  "signed" : 0,
+                  "tag" : "v0.0014",
+                  "tag_format" : "v%v%t",
+                  "tag_message" : "v%v%t",
+                  "time_zone" : "local"
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "@Author::ETHER/Git::Tag",
-            "version" : "2.017"
+            "version" : "2.029"
          },
          {
             "class" : "Dist::Zilla::Plugin::GitHub::Update",
             "name" : "@Author::ETHER/GitHub::Update",
-            "version" : "0.35"
+            "version" : "0.40"
          },
          {
             "class" : "Dist::Zilla::Plugin::Git::Push",
+            "config" : {
+               "Dist::Zilla::Plugin::Git::Push" : {
+                  "push_to" : [
+                     "origin"
+                  ],
+                  "remotes_must_exist" : 1
+               },
+               "Dist::Zilla::Role::Git::Repo" : {
+                  "repo_root" : "."
+               }
+            },
             "name" : "@Author::ETHER/Git::Push",
-            "version" : "2.017"
+            "version" : "2.029"
          },
          {
-            "class" : "Dist::Zilla::Plugin::InstallRelease",
-            "name" : "@Author::ETHER/InstallRelease",
-            "version" : "0.008"
+            "class" : "Dist::Zilla::Plugin::Run::AfterRelease",
+            "config" : {
+               "Dist::Zilla::Plugin::Run::Role::Runner" : {
+                  "fatal_errors" : 0,
+                  "run" : [
+                     "REDACTED"
+                  ]
+               }
+            },
+            "name" : "@Author::ETHER/install release",
+            "version" : "0.032"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Run::AfterRelease",
+            "config" : {
+               "Dist::Zilla::Plugin::Run::Role::Runner" : {
+                  "eval" : [
+                     "print \"release complete!\n\""
+                  ],
+                  "fatal_errors" : 1
+               }
+            },
+            "name" : "@Author::ETHER/release complete",
+            "version" : "0.032"
          },
          {
             "class" : "Dist::Zilla::Plugin::ConfirmRelease",
             "name" : "@Author::ETHER/ConfirmRelease",
-            "version" : "5.006"
+            "version" : "5.031"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::MetaResources",
+            "name" : "MetaResources",
+            "version" : "5.031"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::Test::CheckBreaks",
+            "config" : {
+               "Dist::Zilla::Plugin::Test::CheckBreaks" : {
+                  "conflicts_module" : "Moose::Conflicts"
+               }
+            },
+            "name" : "Test::CheckBreaks",
+            "version" : "0.011"
          },
          {
             "class" : "Dist::Zilla::Plugin::Prereqs",
@@ -512,43 +1001,53 @@
                   "type" : "requires"
                }
             },
-            "name" : "@Author::ETHER/via_options",
-            "version" : "5.006"
-         },
-         {
-            "class" : "Dist::Zilla::Plugin::ContributorsFromGit",
-            "name" : "ContributorsFromGit",
-            "version" : "0.006"
+            "name" : "DevelopRequires",
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":InstallModules",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":IncModules",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":TestFiles",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":ExecFiles",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":ShareFiles",
-            "version" : "5.006"
+            "version" : "5.031"
          },
          {
             "class" : "Dist::Zilla::Plugin::FinderCode",
             "name" : ":MainModule",
-            "version" : "5.006"
+            "version" : "5.031"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":AllFiles",
+            "version" : "5.031"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::FinderCode",
+            "name" : ":NoFiles",
+            "version" : "5.031"
+         },
+         {
+            "class" : "Dist::Zilla::Plugin::VerifyPhases",
+            "name" : "@Author::ETHER/PHASE VERIFICATION",
+            "version" : "0.010"
          }
       ],
       "zilla" : {
@@ -556,17 +1055,19 @@
          "config" : {
             "is_trial" : "0"
          },
-         "version" : "5.006"
+         "version" : "5.031"
       }
    },
    "x_authority" : "cpan:GRODITI",
+   "x_authority_from_module" : "MooseX::Object::Pluggable",
    "x_contributors" : [
-      "Guillermo Roditi <groditi@gmail.com>",
       "Karen Etheridge <ether@cpan.org>",
-      "Robert Boone <robo4288@gmail.com>",
       "Shawn M Moore <sartak@gmail.com>",
-      "Todd Hepler <thepler@employees.org>",
-      "Yuval Kogman <nothingmuch@woobling.org>"
-   ]
+      "Yuval Kogman <nothingmuch@woobling.org>",
+      "Robert Boone <robo4288@gmail.com>",
+      "David Steinbrunner <dsteinbrunner@pobox.com>",
+      "Todd Hepler <thepler@employees.org>"
+   ],
+   "x_permissions_from_module" : "MooseX::Object::Pluggable"
 }
 
@@ -3,97 +3,152 @@ abstract: 'Make your classes pluggable'
 author:
   - 'Guillermo Roditi <groditi@cpan.org>'
 build_requires:
-  ExtUtils::MakeMaker: 0
-  File::Spec::Functions: 0
-  List::Util: 0
-  Moose: 0
-  Test::More: 0
-  lib: 0
-  strict: 0
-  warnings: 0
+  ExtUtils::MakeMaker: '0'
+  File::Spec: '0'
+  Moose: '0'
+  Test::Fatal: '0'
+  Test::More: '0.88'
+  lib: '0'
+  perl: '5.006'
+  strict: '0'
+  warnings: '0'
 configure_requires:
-  ExtUtils::MakeMaker: 6.30
-  Module::Build::Tiny: 0.030
+  Module::Build::Tiny: '0.039'
+  perl: '5.004'
 dynamic_config: 0
-generated_by: 'Dist::Zilla version 5.006, CPAN::Meta::Converter version 2.132830'
+generated_by: 'Dist::Zilla version 5.031, CPAN::Meta::Converter version 2.143240'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
+  version: '1.4'
 name: MooseX-Object-Pluggable
 no_index:
   directory:
     - t
     - xt
-    - examples
 provides:
   MooseX::Object::Pluggable:
     file: lib/MooseX/Object/Pluggable.pm
-    version: 0.0012
+    version: '0.0014'
 requires:
-  Carp: 0
-  Class::Load: 0
-  Module::Pluggable::Object: 0
-  Moose::Role: 0
-  Scalar::Util: 0
-  perl: 5.006
+  Carp: '0'
+  Module::Pluggable::Object: '0'
+  Module::Runtime: '0'
+  Moose::Role: '0'
+  Moose::Util: '0'
+  Scalar::Util: '0'
+  Try::Tiny: '0'
+  namespace::autoclean: '0'
+  perl: '5.006'
 resources:
+  IRC: irc://irc.perl.org/#moose
+  MailingList: http://lists.perl.org/list/moose.html
   bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Object-Pluggable
   homepage: https://github.com/moose/MooseX-Object-Pluggable
   repository: https://github.com/moose/MooseX-Object-Pluggable.git
-version: 0.0012
+version: '0.0014'
 x_Dist_Zilla:
   perl:
-    version: 5.019005
+    version: '5.021006'
   plugins:
     -
+      class: Dist::Zilla::Plugin::Prereqs
+      config:
+        Dist::Zilla::Plugin::Prereqs:
+          phase: develop
+          type: requires
+      name: '@Author::ETHER/bundle_plugins'
+      version: '5.031'
+    -
       class: Dist::Zilla::Plugin::Git::NextVersion
+      config:
+        Dist::Zilla::Plugin::Git::NextVersion:
+          first_version: '0.001'
+          version_by_branch: '0'
+          version_regexp: (?^:^v([\d._]+)(-TRIAL)?$)
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: '@Author::ETHER/Git::NextVersion'
-      version: 2.017
+      version: '2.029'
     -
       class: Dist::Zilla::Plugin::PromptIfStale
-      name: '@Author::ETHER/build'
-      version: 0.012
+      config:
+        Dist::Zilla::Plugin::PromptIfStale:
+          check_all_plugins: 0
+          check_all_prereqs: 0
+          modules:
+            - Dist::Zilla::PluginBundle::Author::ETHER
+          phase: build
+          skip: []
+      name: '@Author::ETHER/stale modules, build'
+      version: '0.035'
     -
       class: Dist::Zilla::Plugin::PromptIfStale
-      name: '@Author::ETHER/release'
-      version: 0.012
+      config:
+        Dist::Zilla::Plugin::PromptIfStale:
+          check_all_plugins: '1'
+          check_all_prereqs: '1'
+          modules: []
+          phase: release
+          skip: []
+      name: '@Author::ETHER/stale modules, release'
+      version: '0.035'
     -
       class: Dist::Zilla::Plugin::ExecDir
       name: '@Author::ETHER/ExecDir'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::ShareDir
       name: '@Author::ETHER/ShareDir'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::FileFinder::ByName
       name: '@Author::ETHER/Examples'
-      version: 5.006
+      version: '5.031'
+    -
+      class: Dist::Zilla::Plugin::FileFinder::ByName
+      name: '@Author::ETHER/ExtraTestFiles'
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::Git::GatherDir
+      config:
+        Dist::Zilla::Plugin::GatherDir:
+          exclude_filename:
+            - README.md
+            - LICENSE
+            - CONTRIBUTING
+          exclude_match: []
+          follow_symlinks: '0'
+          include_dotfiles: '0'
+          prefix: ''
+          prune_directory: []
+          root: .
+        Dist::Zilla::Plugin::Git::GatherDir:
+          include_untracked: '0'
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: '@Author::ETHER/Git::GatherDir'
-      version: 2.017
+      version: '2.029'
     -
       class: Dist::Zilla::Plugin::MetaYAML
       name: '@Author::ETHER/MetaYAML'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::MetaJSON
       name: '@Author::ETHER/MetaJSON'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::License
       name: '@Author::ETHER/License'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::Readme
       name: '@Author::ETHER/Readme'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::Manifest
       name: '@Author::ETHER/Manifest'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::GenerateFile::ShareDir
       config:
@@ -101,108 +156,115 @@ x_Dist_Zilla:
           destination_filename: CONTRIBUTING
           dist: Dist-Zilla-PluginBundle-Author-ETHER
           encoding: UTF-8
+          has_xs: 0
           source_filename: CONTRIBUTING
-      name: '@Author::ETHER/GenerateFile::ShareDir'
-      version: 0.002
+      name: '@Author::ETHER/generate CONTRIBUTING'
+      version: '0.005'
+    -
+      class: Dist::Zilla::Plugin::InstallGuide
+      name: '@Author::ETHER/InstallGuide'
+      version: '1.200006'
     -
       class: Dist::Zilla::Plugin::Test::Compile
       config:
         Dist::Zilla::Plugin::Test::Compile:
+          bail_out_on_fail: '1'
+          fail_on_warning: author
+          fake_home: '0'
           filename: xt/author/00-compile.t
           module_finder:
             - ':InstallModules'
+          needs_display: '0'
+          phase: develop
           script_finder:
             - ':ExecFiles'
             - '@Author::ETHER/Examples'
+          skips: []
       name: '@Author::ETHER/Test::Compile'
-      version: 2.037
+      version: '2.051'
     -
       class: Dist::Zilla::Plugin::Test::NoTabs
       config:
         Dist::Zilla::Plugin::Test::NoTabs:
-          module_finder:
+          filename: xt/author/no-tabs.t
+          finder:
             - ':InstallModules'
-          script_finder:
             - ':ExecFiles'
             - '@Author::ETHER/Examples'
+            - ':TestFiles'
+            - '@Author::ETHER/ExtraTestFiles'
       name: '@Author::ETHER/Test::NoTabs'
-      version: 0.05
+      version: '0.11'
     -
-      class: Dist::Zilla::Plugin::EOLTests
-      name: '@Author::ETHER/EOLTests'
-      version: 0.02
+      class: Dist::Zilla::Plugin::Test::EOL
+      config:
+        Dist::Zilla::Plugin::Test::EOL:
+          filename: xt/author/eol.t
+      name: '@Author::ETHER/Test::EOL'
+      version: '0.16'
     -
       class: Dist::Zilla::Plugin::MetaTests
       name: '@Author::ETHER/MetaTests'
-      version: 5.006
-    -
-      class: Dist::Zilla::Plugin::Test::Version
-      name: '@Author::ETHER/Test::Version'
-      version: 0.002004
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::Test::CPAN::Changes
       name: '@Author::ETHER/Test::CPAN::Changes'
-      version: 0.008
+      version: '0.008'
     -
       class: Dist::Zilla::Plugin::Test::ChangesHasContent
       name: '@Author::ETHER/Test::ChangesHasContent'
-      version: 0.006
-    -
-      class: Dist::Zilla::Plugin::Test::UnusedVars
-      name: '@Author::ETHER/Test::UnusedVars'
-      version: 2.000005
+      version: '0.007'
     -
       class: Dist::Zilla::Plugin::Test::MinimumVersion
       name: '@Author::ETHER/Test::MinimumVersion'
-      version: 2.000005
+      version: '2.000005'
     -
       class: Dist::Zilla::Plugin::PodSyntaxTests
       name: '@Author::ETHER/PodSyntaxTests'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::PodCoverageTests
       name: '@Author::ETHER/PodCoverageTests'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::Test::PodSpelling
       name: '@Author::ETHER/Test::PodSpelling'
-      version: 2.006001
+      version: '2.006008'
     -
       class: Dist::Zilla::Plugin::Test::Pod::No404s
       name: '@Author::ETHER/Test::Pod::No404s'
-      version: 1.001
+      version: '1.001'
     -
       class: Dist::Zilla::Plugin::Test::Kwalitee
+      config:
+        Dist::Zilla::Plugin::Test::Kwalitee:
+          filename: xt/release/kwalitee.t
+          skiptest: []
       name: '@Author::ETHER/Test::Kwalitee'
-      version: 2.07
+      version: '2.11'
     -
       class: Dist::Zilla::Plugin::MojibakeTests
       name: '@Author::ETHER/MojibakeTests'
-      version: 0.5
+      version: '0.7'
     -
       class: Dist::Zilla::Plugin::Test::ReportPrereqs
       name: '@Author::ETHER/Test::ReportPrereqs'
-      version: 0.010
+      version: '0.019'
     -
-      class: Dist::Zilla::Plugin::PruneCruft
-      name: '@Author::ETHER/PruneCruft'
-      version: 5.006
-    -
-      class: Dist::Zilla::Plugin::ManifestSkip
-      name: '@Author::ETHER/ManifestSkip'
-      version: 5.006
-    -
-      class: Dist::Zilla::Plugin::Authority
-      name: '@Author::ETHER/Authority'
-      version: 1.006
+      class: Dist::Zilla::Plugin::Test::Portability
+      name: '@Author::ETHER/Test::Portability'
+      version: '2.000005'
     -
       class: Dist::Zilla::Plugin::Git::Describe
+      config:
+        Dist::Zilla::Plugin::Git::Describe:
+          on_package_line: '1'
       name: '@Author::ETHER/Git::Describe'
-      version: 0.003
+      version: '0.004'
     -
       class: Dist::Zilla::Plugin::PkgVersion
       name: '@Author::ETHER/PkgVersion'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::PodWeaver
       config:
@@ -210,66 +272,162 @@ x_Dist_Zilla:
           finder:
             - ':InstallModules'
             - ':ExecFiles'
+          plugins:
+            -
+              class: Pod::Weaver::Plugin::EnsurePod5
+              name: '@CorePrep/EnsurePod5'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Plugin::H1Nester
+              name: '@CorePrep/H1Nester'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Plugin::SingleEncoding
+              name: '@Default/SingleEncoding'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Name
+              name: '@Default/Name'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Version
+              name: '@Default/Version'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Region
+              name: '@Default/prelude'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: SYNOPSIS
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: DESCRIPTION
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Generic
+              name: OVERVIEW
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Collect
+              name: ATTRIBUTES
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Collect
+              name: METHODS
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Collect
+              name: FUNCTIONS
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Leftovers
+              name: '@Default/Leftovers'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Region
+              name: '@Default/postlude'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Authors
+              name: '@Default/Authors'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Legal
+              name: '@Default/Legal'
+              version: '4.010'
+            -
+              class: Pod::Weaver::Plugin::Transformer
+              name: -Transformer
+              version: '4.010'
+            -
+              class: Pod::Weaver::Section::Contributors
+              name: Contributors
+              version: '0.009'
       name: '@Author::ETHER/PodWeaver'
-      version: 4.001
+      version: '4.006'
     -
       class: Dist::Zilla::Plugin::NextRelease
       name: '@Author::ETHER/NextRelease'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::ReadmeAnyFromPod
       name: '@Author::ETHER/ReadmeAnyFromPod'
-      version: 0.133030
+      version: '0.142470'
     -
       class: Dist::Zilla::Plugin::GithubMeta
       name: '@Author::ETHER/GithubMeta'
-      version: 0.42
+      version: '0.46'
     -
       class: Dist::Zilla::Plugin::AutoMetaResources
       name: '@Author::ETHER/AutoMetaResources'
-      version: 1.20
+      version: '1.20'
+    -
+      class: Dist::Zilla::Plugin::AuthorityFromModule
+      config:
+        Dist::Zilla::Plugin::AuthorityFromModule:
+          module: MooseX::Object::Pluggable
+      name: '@Author::ETHER/AuthorityFromModule'
+      version: '0.004'
+    -
+      class: Dist::Zilla::Plugin::Authority
+      name: '@Author::ETHER/Authority'
+      version: '1.009'
     -
       class: Dist::Zilla::Plugin::MetaNoIndex
       name: '@Author::ETHER/MetaNoIndex'
-      version: 5.006
-    -
-      class: Dist::Zilla::Plugin::FinderCode
-      name: '@Author::ETHER/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::MetaProvides::Package
       config:
-        Dist::Zilla::Plugin::MetaProvides::Package: {}
+        Dist::Zilla::Plugin::MetaProvides::Package:
+          finder:
+            - ':InstallModules'
+          finder_objects:
+            -
+              class: Dist::Zilla::Plugin::FinderCode
+              name: ':InstallModules'
+              version: '5.031'
         Dist::Zilla::Role::MetaProvider::Provider:
-          inherit_missing: 1
-          inherit_version: 1
-          meta_noindex: 1
+          inherit_missing: '1'
+          inherit_version: '1'
+          meta_noindex: '1'
       name: '@Author::ETHER/MetaProvides::Package'
-      version: 1.15000000
+      version: '2.003001'
     -
       class: Dist::Zilla::Plugin::MetaConfig
       name: '@Author::ETHER/MetaConfig'
-      version: 5.006
+      version: '5.031'
+    -
+      class: Dist::Zilla::Plugin::Keywords
+      config:
+        Dist::Zilla::Plugin::Keywords:
+          keywords: []
+      name: '@Author::ETHER/Keywords'
+      version: '0.006'
+    -
+      class: Dist::Zilla::Plugin::Git::Contributors
+      config:
+        Dist::Zilla::Plugin::Git::Contributors:
+          include_authors: '0'
+          include_releaser: '1'
+          order_by: commits
+          paths: []
+      name: '@Author::ETHER/Git::Contributors'
+      version: '0.008'
     -
       class: Dist::Zilla::Plugin::AutoPrereqs
       name: '@Author::ETHER/AutoPrereqs'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::Prereqs::AuthorDeps
       name: '@Author::ETHER/Prereqs::AuthorDeps'
-      version: 0.002
+      version: '0.004'
     -
       class: Dist::Zilla::Plugin::MinimumPerl
       name: '@Author::ETHER/MinimumPerl'
-      version: 1.003
-    -
-      class: Dist::Zilla::Plugin::Prereqs
-      config:
-        Dist::Zilla::Plugin::Prereqs:
-          phase: develop
-          type: requires
-      name: '@Author::ETHER/installer_requirements'
-      version: 5.006
+      version: '1.006'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
@@ -277,39 +435,101 @@ x_Dist_Zilla:
           phase: develop
           type: recommends
       name: '@Author::ETHER/pluginbundle_version'
-      version: 5.006
-    -
-      class: Dist::Zilla::Plugin::RunExtraTests
-      name: '@Author::ETHER/RunExtraTests'
-      version: 0.015
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::MakeMaker::Fallback
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: 9
       name: '@Author::ETHER/MakeMaker::Fallback'
-      version: 0.003
+      version: '0.016'
     -
-      class: Dist::Zilla::Plugin::ModuleBuildTiny
-      name: '@Author::ETHER/ModuleBuildTiny'
-      version: 0.005
+      class: Dist::Zilla::Plugin::ModuleBuildTiny::Fallback
+      config:
+        Dist::Zilla::Plugin::ModuleBuildTiny::Fallback:
+          plugins:
+            -
+              class: Dist::Zilla::Plugin::ModuleBuild
+              config:
+                Dist::Zilla::Role::TestRunner:
+                  default_jobs: 9
+              name: ModuleBuildTiny::Fallback
+              version: '5.031'
+            -
+              class: Dist::Zilla::Plugin::ModuleBuildTiny
+              config:
+                Dist::Zilla::Role::TestRunner:
+                  default_jobs: 9
+              name: ModuleBuildTiny::Fallback
+              version: '0.008'
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: 9
+      name: '@Author::ETHER/ModuleBuildTiny::Fallback'
+      version: '0.014'
     -
-      class: Dist::Zilla::Plugin::InstallGuide
-      name: '@Author::ETHER/InstallGuide'
-      version: 1.200001
+      class: Dist::Zilla::Plugin::RunExtraTests
+      config:
+        Dist::Zilla::Role::TestRunner:
+          default_jobs: 9
+      name: '@Author::ETHER/RunExtraTests'
+      version: '0.025'
     -
       class: Dist::Zilla::Plugin::CheckSelfDependency
+      config:
+        Dist::Zilla::Plugin::CheckSelfDependency:
+          finder:
+            - ':InstallModules'
       name: '@Author::ETHER/CheckSelfDependency'
-      version: 0.005
+      version: '0.010'
+    -
+      class: Dist::Zilla::Plugin::Run::AfterBuild
+      config:
+        Dist::Zilla::Plugin::Run::Role::Runner:
+          fatal_errors: 1
+          run:
+            - "bash -c \"test -e .ackrc && grep -q -- '--ignore-dir=.latest' .ackrc || echo '--ignore-dir=.latest' >> .ackrc; if [[ `dirname %d` != .build ]]; then test -e .ackrc && grep -q -- '--ignore-dir=%d' .ackrc || echo '--ignore-dir=%d' >> .ackrc; fi\""
+      name: '@Author::ETHER/.ackrc'
+      version: '0.032'
     -
       class: Dist::Zilla::Plugin::Run::AfterBuild
-      name: '@Author::ETHER/Run::AfterBuild'
-      version: 0.020
+      config:
+        Dist::Zilla::Plugin::Run::Role::Runner:
+          eval:
+            - "if ('%d' =~ /^%n-[.[:xdigit:]]+$/) { unlink '.latest'; symlink '%d', '.latest'; }"
+          fatal_errors: 1
+      name: '@Author::ETHER/.latest'
+      version: '0.032'
+    -
+      class: Dist::Zilla::Plugin::CheckStrictVersion
+      name: '@Author::ETHER/CheckStrictVersion'
+      version: '0.001'
     -
       class: Dist::Zilla::Plugin::Git::Check
+      config:
+        Dist::Zilla::Plugin::Git::Check:
+          untracked_files: die
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty: []
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: '@Author::ETHER/initial check'
-      version: 2.017
+      version: '2.029'
+    -
+      class: Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts
+      config:
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
+      name: '@Author::ETHER/Git::CheckFor::MergeConflicts'
+      version: '0.011'
     -
       class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch
+      config:
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: '@Author::ETHER/Git::CheckFor::CorrectBranch'
-      version: 0.007
+      version: '0.011'
     -
       class: Dist::Zilla::Plugin::Git::Remote::Check
       name: '@Author::ETHER/Git::Remote::Check'
@@ -317,93 +537,189 @@ x_Dist_Zilla:
     -
       class: Dist::Zilla::Plugin::CheckPrereqsIndexed
       name: '@Author::ETHER/CheckPrereqsIndexed'
-      version: 0.009
+      version: '0.014'
     -
       class: Dist::Zilla::Plugin::TestRelease
       name: '@Author::ETHER/TestRelease'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::Git::Check
+      config:
+        Dist::Zilla::Plugin::Git::Check:
+          untracked_files: die
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty: []
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: '@Author::ETHER/after tests'
-      version: 2.017
+      version: '2.029'
+    -
+      class: Dist::Zilla::Plugin::CheckIssues
+      name: '@Author::ETHER/CheckIssues'
+      version: '0.007'
     -
       class: Dist::Zilla::Plugin::UploadToCPAN
       name: '@Author::ETHER/UploadToCPAN'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::CopyFilesFromRelease
+      config:
+        Dist::Zilla::Plugin::CopyFilesFromRelease:
+          filename:
+            - LICENSE
+            - CONTRIBUTING
+          match: []
       name: '@Author::ETHER/CopyFilesFromRelease'
-      version: 0.001
+      version: '0.005'
+    -
+      class: Dist::Zilla::Plugin::Run::AfterRelease
+      config:
+        Dist::Zilla::Plugin::Run::Role::Runner:
+          eval:
+            - "unlink 'README.md'"
+          fatal_errors: 1
+      name: '@Author::ETHER/remove old READMEs'
+      version: '0.032'
     -
       class: Dist::Zilla::Plugin::Git::Commit
-      name: '@Author::ETHER/Git::Commit'
-      version: 2.017
+      config:
+        Dist::Zilla::Plugin::Git::Commit:
+          add_files_in:
+            - .
+          commit_msg: '%N-%v%t%n%n%c'
+          time_zone: local
+        Dist::Zilla::Role::Git::DirtyFiles:
+          allow_dirty:
+            - Changes
+            - README.md
+            - LICENSE
+            - CONTRIBUTING
+          allow_dirty_match: []
+          changelog: Changes
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
+      name: '@Author::ETHER/release snapshot'
+      version: '2.029'
     -
       class: Dist::Zilla::Plugin::Git::Tag
+      config:
+        Dist::Zilla::Plugin::Git::Tag:
+          branch: ~
+          signed: 0
+          tag: v0.0014
+          tag_format: v%v%t
+          tag_message: v%v%t
+          time_zone: local
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: '@Author::ETHER/Git::Tag'
-      version: 2.017
+      version: '2.029'
     -
       class: Dist::Zilla::Plugin::GitHub::Update
       name: '@Author::ETHER/GitHub::Update'
-      version: 0.35
+      version: '0.40'
     -
       class: Dist::Zilla::Plugin::Git::Push
+      config:
+        Dist::Zilla::Plugin::Git::Push:
+          push_to:
+            - origin
+          remotes_must_exist: 1
+        Dist::Zilla::Role::Git::Repo:
+          repo_root: .
       name: '@Author::ETHER/Git::Push'
-      version: 2.017
+      version: '2.029'
     -
-      class: Dist::Zilla::Plugin::InstallRelease
-      name: '@Author::ETHER/InstallRelease'
-      version: 0.008
+      class: Dist::Zilla::Plugin::Run::AfterRelease
+      config:
+        Dist::Zilla::Plugin::Run::Role::Runner:
+          fatal_errors: 0
+          run:
+            - REDACTED
+      name: '@Author::ETHER/install release'
+      version: '0.032'
+    -
+      class: Dist::Zilla::Plugin::Run::AfterRelease
+      config:
+        Dist::Zilla::Plugin::Run::Role::Runner:
+          eval:
+            - "print \"release complete!\n\""
+          fatal_errors: 1
+      name: '@Author::ETHER/release complete'
+      version: '0.032'
     -
       class: Dist::Zilla::Plugin::ConfirmRelease
       name: '@Author::ETHER/ConfirmRelease'
-      version: 5.006
+      version: '5.031'
+    -
+      class: Dist::Zilla::Plugin::MetaResources
+      name: MetaResources
+      version: '5.031'
+    -
+      class: Dist::Zilla::Plugin::Test::CheckBreaks
+      config:
+        Dist::Zilla::Plugin::Test::CheckBreaks:
+          conflicts_module: Moose::Conflicts
+      name: Test::CheckBreaks
+      version: '0.011'
     -
       class: Dist::Zilla::Plugin::Prereqs
       config:
         Dist::Zilla::Plugin::Prereqs:
           phase: develop
           type: requires
-      name: '@Author::ETHER/via_options'
-      version: 5.006
-    -
-      class: Dist::Zilla::Plugin::ContributorsFromGit
-      name: ContributorsFromGit
-      version: 0.006
+      name: DevelopRequires
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':InstallModules'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':IncModules'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':TestFiles'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':ExecFiles'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':ShareFiles'
-      version: 5.006
+      version: '5.031'
     -
       class: Dist::Zilla::Plugin::FinderCode
       name: ':MainModule'
-      version: 5.006
+      version: '5.031'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':AllFiles'
+      version: '5.031'
+    -
+      class: Dist::Zilla::Plugin::FinderCode
+      name: ':NoFiles'
+      version: '5.031'
+    -
+      class: Dist::Zilla::Plugin::VerifyPhases
+      name: '@Author::ETHER/PHASE VERIFICATION'
+      version: '0.010'
   zilla:
     class: Dist::Zilla::Dist::Builder
     config:
-      is_trial: 0
-    version: 5.006
+      is_trial: '0'
+    version: '5.031'
 x_authority: cpan:GRODITI
+x_authority_from_module: MooseX::Object::Pluggable
 x_contributors:
-  - 'Guillermo Roditi <groditi@gmail.com>'
   - 'Karen Etheridge <ether@cpan.org>'
-  - 'Robert Boone <robo4288@gmail.com>'
   - 'Shawn M Moore <sartak@gmail.com>'
-  - 'Todd Hepler <thepler@employees.org>'
   - 'Yuval Kogman <nothingmuch@woobling.org>'
+  - 'Robert Boone <robo4288@gmail.com>'
+  - 'David Steinbrunner <dsteinbrunner@pobox.com>'
+  - 'Todd Hepler <thepler@employees.org>'
+x_permissions_from_module: MooseX::Object::Pluggable
@@ -1,14 +1,14 @@
 # This Makefile.PL for MooseX-Object-Pluggable was generated by
-# Dist::Zilla::Plugin::MakeMaker::Fallback 0.003.
-# Don't edit it but the dist.ini used to construct it.
+# Dist::Zilla::Plugin::MakeMaker::Fallback 0.016
+# and Dist::Zilla::Plugin::MakeMaker::Awesome 0.33.
+# Don't edit it but the dist.ini and plugins used to construct it.
 
 use strict;
 use warnings;
 
 BEGIN {
 my %configure_requires = (
-    'ExtUtils::MakeMaker' => '6.30',
-    'Module::Build::Tiny' => '0.030',
+    'Module::Build::Tiny' => '0.039',
 );
 
 my @missing = grep {
@@ -21,10 +21,10 @@ if (not @missing)
 }
 else
 {
-    warn <<'EOW';
+    $ENV{PERL_MM_FALLBACK_SILENCE_WARNING} or warn <<'EOW';
 *** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***
 
-If you're seeing this warning, your toolchain is really, really old and you'll
+If you're seeing this warning, your toolchain is really, really old* and you'll
 almost certainly have problems installing CPAN modules from this century. But
 never fear, dear user, for we have the technology to fix this!
 
@@ -45,84 +45,88 @@ when present instead.
 This public service announcement was brought to you by the Perl Toolchain
 Gang, the irc.perl.org #toolchain IRC channel, and the number 42.
 
+----
+
+* Alternatively, you are doing something overly clever, in which case you
+should consider setting the 'prefer_installer' config option in CPAN.pm, or
+'prefer_makefile' in CPANPLUS, to 'mb" and '0' respectively.
+
+You can also silence this warning for future installations by setting the
+PERL_MM_FALLBACK_SILENCE_WARNING environment variable.
+
 EOW
 
-    sleep 10 if -t STDIN;
+    sleep 10 if -t STDIN && (-t STDOUT || !(-f STDOUT || -c STDOUT));
 }
 }
 
 use 5.006;
-
-use ExtUtils::MakeMaker 6.30;
-
-
+use ExtUtils::MakeMaker;
 
 my %WriteMakefileArgs = (
   "ABSTRACT" => "Make your classes pluggable",
   "AUTHOR" => "Guillermo Roditi <groditi\@cpan.org>",
-  "BUILD_REQUIRES" => {},
   "CONFIGURE_REQUIRES" => {
-    "ExtUtils::MakeMaker" => "6.30",
-    "Module::Build::Tiny" => "0.030"
+    "Module::Build::Tiny" => "0.039"
   },
   "DISTNAME" => "MooseX-Object-Pluggable",
   "EXE_FILES" => [],
   "LICENSE" => "perl",
+  "MIN_PERL_VERSION" => "5.006",
   "NAME" => "MooseX::Object::Pluggable",
   "PREREQ_PM" => {
     "Carp" => 0,
-    "Class::Load" => 0,
     "Module::Pluggable::Object" => 0,
+    "Module::Runtime" => 0,
     "Moose::Role" => 0,
-    "Scalar::Util" => 0
+    "Moose::Util" => 0,
+    "Scalar::Util" => 0,
+    "Try::Tiny" => 0,
+    "namespace::autoclean" => 0
   },
   "TEST_REQUIRES" => {
     "ExtUtils::MakeMaker" => 0,
-    "File::Spec::Functions" => 0,
-    "List::Util" => 0,
+    "File::Spec" => 0,
     "Moose" => 0,
-    "Test::More" => 0,
+    "Test::Fatal" => 0,
+    "Test::More" => "0.88",
     "lib" => 0,
     "strict" => 0,
     "warnings" => 0
   },
-  "VERSION" => "0.0012",
+  "VERSION" => "0.0014",
   "test" => {
     "TESTS" => "t/*.t"
   }
 );
 
+my %FallbackPrereqs = (
+  "Carp" => 0,
+  "ExtUtils::MakeMaker" => 0,
+  "File::Spec" => 0,
+  "Module::Build::Tiny" => "0.039",
+  "Module::Pluggable::Object" => 0,
+  "Module::Runtime" => 0,
+  "Moose" => 0,
+  "Moose::Role" => 0,
+  "Moose::Util" => 0,
+  "Scalar::Util" => 0,
+  "Test::Fatal" => 0,
+  "Test::More" => "0.88",
+  "Try::Tiny" => 0,
+  "lib" => 0,
+  "namespace::autoclean" => 0,
+  "strict" => 0,
+  "warnings" => 0
+);
 
 unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
-  my $tr = delete $WriteMakefileArgs{TEST_REQUIRES};
-  my $br = $WriteMakefileArgs{BUILD_REQUIRES};
-  for my $mod ( keys %$tr ) {
-    if ( exists $br->{$mod} ) {
-      $br->{$mod} = $tr->{$mod} if $tr->{$mod} > $br->{$mod};
-    }
-    else {
-      $br->{$mod} = $tr->{$mod};
-    }
-  }
-}
-
-unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
-  my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
-  my $pp = $WriteMakefileArgs{PREREQ_PM};
-  for my $mod ( keys %$br ) {
-    if ( exists $pp->{$mod} ) {
-      $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod};
-    }
-    else {
-      $pp->{$mod} = $br->{$mod};
-    }
-  }
+  delete $WriteMakefileArgs{TEST_REQUIRES};
+  delete $WriteMakefileArgs{BUILD_REQUIRES};
+  $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
 }
 
 delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
   unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
 
 WriteMakefile(%WriteMakefileArgs);
-
-
-
@@ -1,7 +1,7 @@
 
 
 This archive contains the distribution MooseX-Object-Pluggable,
-version 0.0012:
+version 0.0014:
 
   Make your classes pluggable
 
@@ -11,3 +11,5 @@ This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
 
 
+This README file was generated by Dist::Zilla::Plugin::Readme v5.031.
+
@@ -1,194 +0,0 @@
-# NAME
-
-MooseX::Object::Pluggable - Make your classes pluggable
-
-# VERSION
-
-version 0.0012
-
-# SYNOPSIS
-
-    package MyApp;
-    use Moose;
-
-    with 'MooseX::Object::Pluggable';
-
-    ...
-
-    package MyApp::Plugin::Pretty;
-    use Moose::Role;
-
-    sub pretty{ print "I am pretty" }
-
-    1;
-
-    #
-    use MyApp;
-    my $app = MyApp->new;
-    $app->load_plugin('Pretty');
-    $app->pretty;
-
-# DESCRIPTION
-
-This module is meant to be loaded as a role from Moose-based classes
-it will add five methods and four attributes to assist you with the loading
-and handling of plugins and extensions for plugins. I understand that this may
-pollute your namespace, however I took great care in using the least ambiguous
-names possible.
-
-# How plugins Work
-
-Plugins and extensions are just Roles by a fancy name. They are loaded at runtime
-on demand and are instance, not class based. This means that if you have more than
-one instance of a class they can all have different plugins loaded. This is a feature.
-
-Plugin methods are allowed to `around`, `before`, `after`
-their consuming classes, so it is important to watch for load order as plugins can
-and will overload each other. You may also add attributes through has.
-
-Please note that when you load at runtime you lose the ability to wrap `BUILD`
-and roles using `has` will not go through compile time checks like `required`
-and <default>.
-
-Even though `override` will work , I STRONGLY discourage it's use
-and a warning will be thrown if you try to use it.
-This is closely linked to the way multiple roles being applied is handled and is not
-likely to change. `override` behavior is closely linked to inheritance and thus will
-likely not work as you expect it in multiple inheritance situations. Point being,
-save yourself the headache.
-
-# How plugins are loaded
-
-When roles are applied at runtime an anonymous class will wrap your class and
-`$self->blessed` and `ref $self` will no longer return the name of your object,
-they will instead return the name of the anonymous class created at runtime.
-See `_original_class_name`.
-
-# Usage
-
-For a simple example see the tests included in this distribution.
-
-# Attributes
-
-## \_plugin\_ns
-
-String. The prefix to use for plugin names provided. MyApp::Plugin is sensible.
-
-## \_plugin\_app\_ns
-
-ArrayRef, Accessor automatically dereferences into array on a read call.
-By default will be filled with the class name and its precedents, it is used
-to determine which directories to look for plugins as well as which plugins
-take precedence upon namespace collisions. This allows you to subclass a pluggable
-class and still use it's plugins while using yours first if they are available.
-
-## \_plugin\_locator
-
-An automatically built instance of [Module::Pluggable::Object](http://search.cpan.org/perldoc?Module::Pluggable::Object) used to locate
-available plugins.
-
-## \_original\_class\_name
-
-Because of the way roles apply `$self->blessed` and `ref $self` will
-no longer return what you expect. Instead, upon instantiation, the name of the
-class instantiated will be stored in this attribute if you need to access the
-name the class held before any runtime roles were applied.
-
-# Public Methods
-
-## load\_plugins @plugins
-
-## load\_plugin $plugin
-
-Load the appropriate role for `$plugin`.
-
-# Private Methods
-
-There's nothing stopping you from using these, but if you are using them
-for anything that's not really complicated you are probably doing
-something wrong.
-
-## \_role\_from\_plugin $plugin
-
-Creates a role name from a plugin name. If the plugin name is prepended
-with a `+` it will be treated as a full name returned as is. Otherwise
-a string consisting of `$plugin`  prepended with the `_plugin_ns`
-and the first valid value from `_plugin_app_ns` will be returned. Example
-
-    #assuming appname MyApp and C<_plugin_ns> 'Plugin'
-    $self->_role_from_plugin("MyPlugin"); # MyApp::Plugin::MyPlugin
-
-## \_load\_and\_apply\_role @roles
-
-Require `$role` if it is not already loaded and apply it. This is
-the meat of this module.
-
-## \_build\_plugin\_app\_ns
-
-Automatically builds the \_plugin\_app\_ns attribute with the classes in the
-class precedence list that are not part of Moose.
-
-## \_build\_plugin\_locator
-
-Automatically creates a [Module::Pluggable::Object](http://search.cpan.org/perldoc?Module::Pluggable::Object) instance with the correct
-search\_path.
-
-## meta
-
-Keep tests happy. See [Moose](http://search.cpan.org/perldoc?Moose)
-
-# SEE ALSO
-
-[Moose](http://search.cpan.org/perldoc?Moose), [Moose::Role](http://search.cpan.org/perldoc?Moose::Role), [Class::Inspector](http://search.cpan.org/perldoc?Class::Inspector)
-
-# BUGS
-
-Holler?
-
-Please report any bugs or feature requests to
-`bug-MooseX-Object-Pluggable at rt.cpan.org`, or through the web interface at
-[http://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Object-Pluggable](http://rt.cpan.org/Public/Dist/Display.html?Name=MooseX-Object-Pluggable).
-I will be notified, and then you'll automatically be notified of progress on
-your bug as I make changes.
-
-# SUPPORT
-
-You can find documentation for this module with the perldoc command.
-
-    perldoc MooseX-Object-Pluggable
-
-You can also look for information at:
-
-- AnnoCPAN: Annotated CPAN documentation
-
-    [http://annocpan.org/dist/MooseX-Object-Pluggable](http://annocpan.org/dist/MooseX-Object-Pluggable)
-
-- CPAN Ratings
-
-    [http://cpanratings.perl.org/d/MooseX-Object-Pluggable](http://cpanratings.perl.org/d/MooseX-Object-Pluggable)
-
-- RT: CPAN's request tracker
-
-    [http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-Object-Pluggable](http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-Object-Pluggable)
-
-- Search CPAN
-
-    [http://search.cpan.org/dist/MooseX-Object-Pluggable](http://search.cpan.org/dist/MooseX-Object-Pluggable)
-
-# ACKNOWLEDGEMENTS
-
-- \#Moose - Huge number of questions
-- Matt S Trout <mst@shadowcatsystems.co.uk> - ideas / planning.
-- Stevan Little - EVERYTHING. Without him this would have never happened.
-- Shawn M Moore - bugfixes
-
-# AUTHOR
-
-Guillermo Roditi <groditi@cpan.org>
-
-# COPYRIGHT AND LICENSE
-
-This software is copyright (c) 2007 by Guillermo Roditi <groditi@cpan.org>.
-
-This is free software; you can redistribute it and/or modify it under
-the same terms as the Perl 5 programming language system itself.
@@ -5,10 +5,19 @@ copyright_holder = Guillermo Roditi <groditi@cpan.org>
 copyright_year = 2007
 
 [@Author::ETHER]
-:version = 0.039
-server = github
+:version = 0.068
 Authority.authority = cpan:GRODITI
+AutoPrereqs.skip = TestApp3::Missing
 
-; authordep Pod::Weaver::Section::Contributors
+[MetaResources]
+x_IRC = irc://irc.perl.org/#moose
+x_MailingList = http://lists.perl.org/list/moose.html
+
+[Test::CheckBreaks]
+conflicts_module = Moose::Conflicts
 
-[ContributorsFromGit]
+[Prereqs / DevelopRequires]
+Test::CleanNamespaces = 0
+
+; authordep Pod::Weaver 4
+; authordep Pod::Weaver::Section::Contributors
@@ -1,20 +1,108 @@
-package MooseX::Object::Pluggable;
-{
-  $MooseX::Object::Pluggable::VERSION = '0.0012';
-}
-# git description: v0.0011-6-g98105e4
-
-BEGIN {
-  $MooseX::Object::Pluggable::AUTHORITY = 'cpan:GRODITI';
-}
+package MooseX::Object::Pluggable; # git description: v0.0013-5-g45105f2
 # ABSTRACT: Make your classes pluggable
-
+$MooseX::Object::Pluggable::VERSION = '0.0014';
 use Carp;
 use Moose::Role;
-use Class::Load 'load_class';
+use Module::Runtime 'use_module';
 use Scalar::Util 'blessed';
+use Try::Tiny;
 use Module::Pluggable::Object;
-
+use Moose::Util 'find_meta';
+use namespace::autoclean;
+
+#pod =head1 SYNOPSIS
+#pod
+#pod     package MyApp;
+#pod     use Moose;
+#pod
+#pod     with 'MooseX::Object::Pluggable';
+#pod
+#pod     ...
+#pod
+#pod     package MyApp::Plugin::Pretty;
+#pod     use Moose::Role;
+#pod
+#pod     sub pretty{ print "I am pretty" }
+#pod
+#pod     1;
+#pod
+#pod     #
+#pod     use MyApp;
+#pod     my $app = MyApp->new;
+#pod     $app->load_plugin('Pretty');
+#pod     $app->pretty;
+#pod
+#pod =head1 DESCRIPTION
+#pod
+#pod This module is meant to be loaded as a role from Moose-based classes.
+#pod It will add five methods and four attributes to assist you with the loading
+#pod and handling of plugins and extensions for plugins. I understand that this may
+#pod pollute your namespace, however I took great care in using the least ambiguous
+#pod names possible.
+#pod
+#pod =head1 How plugins Work
+#pod
+#pod Plugins and extensions are just Roles by a fancy name. They are loaded at runtime
+#pod on demand and are instance, not class based. This means that if you have more than
+#pod one instance of a class they can all have different plugins loaded. This is a feature.
+#pod
+#pod Plugin methods are allowed to C<around>, C<before>, C<after>
+#pod their consuming classes, so it is important to watch for load order as plugins can
+#pod and will overload each other. You may also add attributes through C<has>.
+#pod
+#pod Please note that when you load at runtime you lose the ability to wrap C<BUILD>
+#pod and roles using C<has> will not go through compile time checks like C<required>
+#pod and C<default>.
+#pod
+#pod Even though C<override> will work, I B<STRONGLY> discourage its use
+#pod and a warning will be thrown if you try to use it.
+#pod This is closely linked to the way multiple roles being applied is handled and is not
+#pod likely to change. C<override> behavior is closely linked to inheritance and thus will
+#pod likely not work as you expect it in multiple inheritance situations. Point being,
+#pod save yourself the headache.
+#pod
+#pod =head1 How plugins are loaded
+#pod
+#pod When roles are applied at runtime an anonymous class will wrap your class and
+#pod C<< $self->blessed >>, C<< ref $self >> and C<< $self->meta->name >>
+#pod will no longer return the name of your object;
+#pod they will instead return the name of the anonymous class created at runtime.
+#pod See C<_original_class_name>.
+#pod
+#pod =head1 Usage
+#pod
+#pod For a simple example see the tests included in this distribution.
+#pod
+#pod =head1 Attributes
+#pod
+#pod =head2 _plugin_ns
+#pod
+#pod String. The prefix to use for plugin names provided. C<MyApp::Plugin> is sensible.
+#pod
+#pod =head2 _plugin_app_ns
+#pod
+#pod An ArrayRef accessor that automatically dereferences into array on a read call.
+#pod By default it will be filled with the class name and its precedents. It is used
+#pod to determine which directories to look for plugins as well as which plugins
+#pod take precedence upon namespace collisions. This allows you to subclass a pluggable
+#pod class and still use its plugins while using yours first if they are available.
+#pod
+#pod =head2 _plugin_locator
+#pod
+#pod An automatically built instance of L<Module::Pluggable::Object> used to locate
+#pod available plugins.
+#pod
+#pod =head2 _original_class_name
+#pod
+#pod =for stopwords instantiation
+#pod
+#pod Because of the way roles apply, C<< $self->blessed >>, C<< ref $self >>
+#pod and C<< $self->meta->name >> will
+#pod no longer return what you expect. Instead, upon instantiation, the name of the
+#pod class instantiated will be stored in this attribute if you need to access the
+#pod name the class held before any runtime roles were applied.
+#pod
+#pod =cut
 
 #--------#---------#---------#---------#---------#---------#---------#---------#
 
@@ -61,23 +149,34 @@ has _plugin_locator => (
 
 #--------#---------#---------#---------#---------#---------#---------#---------#
 
+#pod =head1 Public Methods
+#pod
+#pod =head2 load_plugins @plugins
+#pod
+#pod =head2 load_plugin $plugin
+#pod
+#pod Load the appropriate role for C<$plugin>.
+#pod
+#pod =cut
 
 sub load_plugins {
     my ($self, @plugins) = @_;
     die("You must provide a plugin name") unless @plugins;
 
     my $loaded = $self->_plugin_loaded;
-    my @load = grep { not exists $loaded->{$_} } @plugins;
-    my @roles = map { $self->_role_from_plugin($_) } @load;
+    @plugins = grep { not exists $loaded->{$_} } @plugins;
+
+    return if @plugins == 0;
 
-    return if @roles == 0;
+    foreach my $plugin (@plugins)
+    {
+        my $role = $self->_role_from_plugin($plugin);
+        return if not $self->_load_and_apply_role($role);
 
-    if ( $self->_load_and_apply_role(@roles) ) {
-        @{ $loaded }{@load} = @roles;
-        return 1;
-    } else {
-        return;
+        $loaded->{$plugin} = $role;
     }
+
+    return 1;
 }
 
 
@@ -86,6 +185,23 @@ sub load_plugin {
   $self->load_plugins(@_);
 }
 
+#pod =head1 Private Methods
+#pod
+#pod There's nothing stopping you from using these, but if you are using them
+#pod for anything that's not really complicated you are probably doing
+#pod something wrong.
+#pod
+#pod =head2 _role_from_plugin $plugin
+#pod
+#pod Creates a role name from a plugin name. If the plugin name is prepended
+#pod with a C<+> it will be treated as a full name returned as is. Otherwise
+#pod a string consisting of C<$plugin>  prepended with the C<_plugin_ns>
+#pod and the first valid value from C<_plugin_app_ns> will be returned. Example
+#pod
+#pod    #assuming appname MyApp and C<_plugin_ns> 'Plugin'
+#pod    $self->_role_from_plugin("MyPlugin"); # MyApp::Plugin::MyPlugin
+#pod
+#pod =cut
 
 sub _role_from_plugin{
     my ($self, $plugin) = @_;
@@ -100,32 +216,45 @@ sub _role_from_plugin{
     return $roles[0] if @roles == 1;
 
     my $i = 0;
-    my %presedence_list = map{ $i++; "${_}::${o}", $i } $self->_plugin_app_ns;
+    my %precedence_list = map{ $i++; "${_}::${o}", $i } $self->_plugin_app_ns;
 
-    @roles = sort{ $presedence_list{$a} <=> $presedence_list{$b}} @roles;
+    @roles = sort{ $precedence_list{$a} <=> $precedence_list{$b}} @roles;
 
     return shift @roles;
 }
 
+#pod =head2 _load_and_apply_role @roles
+#pod
+#pod Require C<$role> if it is not already loaded and apply it. This is
+#pod the meat of this module.
+#pod
+#pod =cut
 
-sub _load_and_apply_role{
-    my ($self, @roles) = @_;
-    die("You must provide a role name") unless @roles;
+sub _load_and_apply_role {
+    my ($self, $role) = @_;
+    die("You must provide a role name") unless $role;
 
-    foreach my $role ( @roles ) {
-        eval { load_class($role) };
-        confess("Failed to load role: ${role} $@") if $@;
+    try { use_module($role) }
+    catch { confess("Failed to load role: ${role} $_") };
 
-        carp("Using 'override' is strongly discouraged and may not behave ".
-            "as you expect it to. Please use 'around'")
-        if scalar keys %{ $role->meta->get_override_method_modifiers_map };
-    }
+    croak("Your plugin '$role' must be a Moose::Role")
+        unless find_meta($role)->isa('Moose::Meta::Role');
 
-    Moose::Util::apply_all_roles( $self, @roles );
+    carp("Using 'override' is strongly discouraged and may not behave ".
+        "as you expect it to. Please use 'around'")
+    if scalar keys %{ $role->meta->get_override_method_modifiers_map };
+
+    Moose::Util::apply_all_roles( $self, $role );
 
     return 1;
 }
 
+#pod =head2 _build_plugin_app_ns
+#pod
+#pod Automatically builds the _plugin_app_ns attribute with the classes in the
+#pod class precedence list that are not part of Moose.
+#pod
+#pod =cut
 
 sub _build_plugin_app_ns{
     my $self = shift;
@@ -133,6 +262,12 @@ sub _build_plugin_app_ns{
     return \@names;
 }
 
+#pod =head2 _build_plugin_locator
+#pod
+#pod Automatically creates a L<Module::Pluggable::Object> instance with the correct
+#pod search_path.
+#pod
+#pod =cut
 
 sub _build_plugin_locator{
     my $self = shift;
@@ -144,6 +279,11 @@ sub _build_plugin_locator{
     return $locator;
 }
 
+#pod =head2 meta
+#pod
+#pod Keep tests happy. See L<Moose>
+#pod
+#pod =cut
 
 1;
 
@@ -157,7 +297,7 @@ MooseX::Object::Pluggable - Make your classes pluggable
 
 =head1 VERSION
 
-version 0.0012
+version 0.0014
 
 =head1 SYNOPSIS
 
@@ -183,8 +323,8 @@ version 0.0012
 
 =head1 DESCRIPTION
 
-This module is meant to be loaded as a role from Moose-based classes
-it will add five methods and four attributes to assist you with the loading
+This module is meant to be loaded as a role from Moose-based classes.
+It will add five methods and four attributes to assist you with the loading
 and handling of plugins and extensions for plugins. I understand that this may
 pollute your namespace, however I took great care in using the least ambiguous
 names possible.
@@ -197,13 +337,13 @@ one instance of a class they can all have different plugins loaded. This is a fe
 
 Plugin methods are allowed to C<around>, C<before>, C<after>
 their consuming classes, so it is important to watch for load order as plugins can
-and will overload each other. You may also add attributes through has.
+and will overload each other. You may also add attributes through C<has>.
 
 Please note that when you load at runtime you lose the ability to wrap C<BUILD>
 and roles using C<has> will not go through compile time checks like C<required>
-and <default>.
+and C<default>.
 
-Even though C<override> will work , I STRONGLY discourage it's use
+Even though C<override> will work, I B<STRONGLY> discourage its use
 and a warning will be thrown if you try to use it.
 This is closely linked to the way multiple roles being applied is handled and is not
 likely to change. C<override> behavior is closely linked to inheritance and thus will
@@ -213,7 +353,8 @@ save yourself the headache.
 =head1 How plugins are loaded
 
 When roles are applied at runtime an anonymous class will wrap your class and
-C<$self-E<gt>blessed> and C<ref $self> will no longer return the name of your object,
+C<< $self->blessed >>, C<< ref $self >> and C<< $self->meta->name >>
+will no longer return the name of your object;
 they will instead return the name of the anonymous class created at runtime.
 See C<_original_class_name>.
 
@@ -225,15 +366,15 @@ For a simple example see the tests included in this distribution.
 
 =head2 _plugin_ns
 
-String. The prefix to use for plugin names provided. MyApp::Plugin is sensible.
+String. The prefix to use for plugin names provided. C<MyApp::Plugin> is sensible.
 
 =head2 _plugin_app_ns
 
-ArrayRef, Accessor automatically dereferences into array on a read call.
-By default will be filled with the class name and its precedents, it is used
+An ArrayRef accessor that automatically dereferences into array on a read call.
+By default it will be filled with the class name and its precedents. It is used
 to determine which directories to look for plugins as well as which plugins
 take precedence upon namespace collisions. This allows you to subclass a pluggable
-class and still use it's plugins while using yours first if they are available.
+class and still use its plugins while using yours first if they are available.
 
 =head2 _plugin_locator
 
@@ -244,7 +385,8 @@ available plugins.
 
 =for stopwords instantiation
 
-Because of the way roles apply C<$self-E<gt>blessed> and C<ref $self> will
+Because of the way roles apply, C<< $self->blessed >>, C<< ref $self >>
+and C<< $self->meta->name >> will
 no longer return what you expect. Instead, upon instantiation, the name of the
 class instantiated will be stored in this attribute if you need to access the
 name the class held before any runtime roles were applied.
@@ -363,6 +505,38 @@ This software is copyright (c) 2007 by Guillermo Roditi <groditi@cpan.org>.
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
 
+=head1 CONTRIBUTORS
+
+=for stopwords Karen Etheridge Shawn M Moore Yuval Kogman Robert Boone David Steinbrunner Todd Hepler
+
+=over 4
+
+=item *
+
+Karen Etheridge <ether@cpan.org>
+
+=item *
+
+Shawn M Moore <sartak@gmail.com>
+
+=item *
+
+Yuval Kogman <nothingmuch@woobling.org>
+
+=item *
+
+Robert Boone <robo4288@gmail.com>
+
+=item *
+
+David Steinbrunner <dsteinbrunner@pobox.com>
+
+=item *
+
+Todd Hepler <thepler@employees.org>
+
+=back
+
 =cut
 
 __END__;
@@ -0,0 +1,132 @@
+do { my $x = {
+       'configure' => {
+                        'requires' => {
+                                        'Module::Build::Tiny' => '0.039',
+                                        'perl' => '5.004'
+                                      }
+                      },
+       'develop' => {
+                      'recommends' => {
+                                        'Dist::Zilla::PluginBundle::Author::ETHER' => '0.085'
+                                      },
+                      'requires' => {
+                                      'Dist::Zilla' => '5',
+                                      'Dist::Zilla::Plugin::Authority' => '0',
+                                      'Dist::Zilla::Plugin::AuthorityFromModule' => '0.002',
+                                      'Dist::Zilla::Plugin::AutoMetaResources' => '0',
+                                      'Dist::Zilla::Plugin::AutoPrereqs' => '0',
+                                      'Dist::Zilla::Plugin::CheckIssues' => '0',
+                                      'Dist::Zilla::Plugin::CheckPrereqsIndexed' => '0',
+                                      'Dist::Zilla::Plugin::CheckSelfDependency' => '0',
+                                      'Dist::Zilla::Plugin::CheckStrictVersion' => '0',
+                                      'Dist::Zilla::Plugin::ConfirmRelease' => '0',
+                                      'Dist::Zilla::Plugin::CopyFilesFromRelease' => '0',
+                                      'Dist::Zilla::Plugin::ExecDir' => '0',
+                                      'Dist::Zilla::Plugin::FileFinder::ByName' => '0',
+                                      'Dist::Zilla::Plugin::GenerateFile::ShareDir' => '0',
+                                      'Dist::Zilla::Plugin::Git::Check' => '2.025',
+                                      'Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch' => '0.004',
+                                      'Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts' => '0',
+                                      'Dist::Zilla::Plugin::Git::Commit' => '2.020',
+                                      'Dist::Zilla::Plugin::Git::Contributors' => '0.004',
+                                      'Dist::Zilla::Plugin::Git::Describe' => '0.004',
+                                      'Dist::Zilla::Plugin::Git::GatherDir' => '2.016',
+                                      'Dist::Zilla::Plugin::Git::NextVersion' => '0',
+                                      'Dist::Zilla::Plugin::Git::Push' => '0',
+                                      'Dist::Zilla::Plugin::Git::Remote::Check' => '0',
+                                      'Dist::Zilla::Plugin::Git::Tag' => '0',
+                                      'Dist::Zilla::Plugin::GitHub::Update' => '0.40',
+                                      'Dist::Zilla::Plugin::GithubMeta' => '0',
+                                      'Dist::Zilla::Plugin::InstallGuide' => '0',
+                                      'Dist::Zilla::Plugin::Keywords' => '0.004',
+                                      'Dist::Zilla::Plugin::License' => '0',
+                                      'Dist::Zilla::Plugin::MakeMaker::Fallback' => '0.012',
+                                      'Dist::Zilla::Plugin::Manifest' => '0',
+                                      'Dist::Zilla::Plugin::MetaConfig' => '0',
+                                      'Dist::Zilla::Plugin::MetaJSON' => '0',
+                                      'Dist::Zilla::Plugin::MetaNoIndex' => '0',
+                                      'Dist::Zilla::Plugin::MetaProvides::Package' => '1.15000002',
+                                      'Dist::Zilla::Plugin::MetaResources' => '0',
+                                      'Dist::Zilla::Plugin::MetaTests' => '0',
+                                      'Dist::Zilla::Plugin::MetaYAML' => '0',
+                                      'Dist::Zilla::Plugin::MinimumPerl' => '1.006',
+                                      'Dist::Zilla::Plugin::ModuleBuildTiny::Fallback' => '0.006',
+                                      'Dist::Zilla::Plugin::MojibakeTests' => '0',
+                                      'Dist::Zilla::Plugin::NextRelease' => '4.300018',
+                                      'Dist::Zilla::Plugin::PkgVersion' => '5.010',
+                                      'Dist::Zilla::Plugin::PodCoverageTests' => '0',
+                                      'Dist::Zilla::Plugin::PodSyntaxTests' => '0',
+                                      'Dist::Zilla::Plugin::PodWeaver' => '4.005',
+                                      'Dist::Zilla::Plugin::Prereqs' => '0',
+                                      'Dist::Zilla::Plugin::Prereqs::AuthorDeps' => '0',
+                                      'Dist::Zilla::Plugin::PromptIfStale' => '0',
+                                      'Dist::Zilla::Plugin::Readme' => '0',
+                                      'Dist::Zilla::Plugin::ReadmeAnyFromPod' => '0.142180',
+                                      'Dist::Zilla::Plugin::Run::AfterBuild' => '0.028',
+                                      'Dist::Zilla::Plugin::Run::AfterRelease' => '0.031',
+                                      'Dist::Zilla::Plugin::RunExtraTests' => '0.024',
+                                      'Dist::Zilla::Plugin::ShareDir' => '0',
+                                      'Dist::Zilla::Plugin::Test::CPAN::Changes' => '0.008',
+                                      'Dist::Zilla::Plugin::Test::ChangesHasContent' => '0',
+                                      'Dist::Zilla::Plugin::Test::CheckBreaks' => '0',
+                                      'Dist::Zilla::Plugin::Test::Compile' => '2.039',
+                                      'Dist::Zilla::Plugin::Test::EOL' => '0.14',
+                                      'Dist::Zilla::Plugin::Test::Kwalitee' => '2.06',
+                                      'Dist::Zilla::Plugin::Test::MinimumVersion' => '2.000003',
+                                      'Dist::Zilla::Plugin::Test::NoTabs' => '0.08',
+                                      'Dist::Zilla::Plugin::Test::Pod::No404s' => '0',
+                                      'Dist::Zilla::Plugin::Test::PodSpelling' => '2.006001',
+                                      'Dist::Zilla::Plugin::Test::Portability' => '0',
+                                      'Dist::Zilla::Plugin::Test::ReportPrereqs' => '0.019',
+                                      'Dist::Zilla::Plugin::TestRelease' => '0',
+                                      'Dist::Zilla::Plugin::UploadToCPAN' => '0',
+                                      'Dist::Zilla::PluginBundle::Author::ETHER' => '0.068',
+                                      'File::Spec' => '0',
+                                      'IO::Handle' => '0',
+                                      'IPC::Open3' => '0',
+                                      'Pod::Coverage::TrustPod' => '0',
+                                      'Pod::Weaver::Section::Contributors' => '0',
+                                      'Test::CPAN::Changes' => '0.19',
+                                      'Test::CPAN::Meta' => '0',
+                                      'Test::CleanNamespaces' => '0',
+                                      'Test::EOL' => '0',
+                                      'Test::Kwalitee' => '1.21',
+                                      'Test::More' => '0.94',
+                                      'Test::NoTabs' => '0',
+                                      'Test::Pod' => '1.41',
+                                      'Test::Pod::Coverage' => '1.08',
+                                      'Test::Spelling' => '0.12'
+                                    }
+                    },
+       'runtime' => {
+                      'requires' => {
+                                      'Carp' => '0',
+                                      'Module::Pluggable::Object' => '0',
+                                      'Module::Runtime' => '0',
+                                      'Moose::Role' => '0',
+                                      'Moose::Util' => '0',
+                                      'Scalar::Util' => '0',
+                                      'Try::Tiny' => '0',
+                                      'namespace::autoclean' => '0',
+                                      'perl' => '5.006'
+                                    }
+                    },
+       'test' => {
+                   'recommends' => {
+                                     'CPAN::Meta' => '2.120900'
+                                   },
+                   'requires' => {
+                                   'ExtUtils::MakeMaker' => '0',
+                                   'File::Spec' => '0',
+                                   'Moose' => '0',
+                                   'Test::Fatal' => '0',
+                                   'Test::More' => '0.88',
+                                   'lib' => '0',
+                                   'perl' => '5.006',
+                                   'strict' => '0',
+                                   'warnings' => '0'
+                                 }
+                 }
+     };
+  $x;
+ }
\ No newline at end of file
@@ -3,128 +3,174 @@
 use strict;
 use warnings;
 
-# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.010
+# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.019
 
 use Test::More tests => 1;
 
 use ExtUtils::MakeMaker;
-use File::Spec::Functions;
-use List::Util qw/max/;
-
-my @modules = qw(
-  CPAN::Meta
-  CPAN::Meta::Requirements
-  Carp
-  Class::Load
-  ExtUtils::MakeMaker
-  File::Spec::Functions
-  List::Util
-  Module::Build::Tiny
-  Module::Pluggable::Object
-  Moose
-  Moose::Role
-  Scalar::Util
-  Test::More
-  lib
-  perl
-  strict
-  warnings
+use File::Spec;
+
+# from $version::LAX
+my $lax_version_re =
+    qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )?
+            |
+            (?:\.[0-9]+) (?:_[0-9]+)?
+        ) | (?:
+            v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )?
+            |
+            (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)?
+        )
+    )/x;
+
+# hide optional CPAN::Meta modules from prereq scanner
+# and check if they are available
+my $cpan_meta = "CPAN::Meta";
+my $cpan_meta_pre = "CPAN::Meta::Prereqs";
+my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic
+
+# Verify requirements?
+my $DO_VERIFY_PREREQS = 1;
+
+sub _max {
+    my $max = shift;
+    $max = ( $_ > $max ) ? $_ : $max for @_;
+    return $max;
+}
+
+sub _merge_prereqs {
+    my ($collector, $prereqs) = @_;
+
+    # CPAN::Meta::Prereqs object
+    if (ref $collector eq $cpan_meta_pre) {
+        return $collector->with_merged_prereqs(
+            CPAN::Meta::Prereqs->new( $prereqs )
+        );
+    }
+
+    # Raw hashrefs
+    for my $phase ( keys %$prereqs ) {
+        for my $type ( keys %{ $prereqs->{$phase} } ) {
+            for my $module ( keys %{ $prereqs->{$phase}{$type} } ) {
+                $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module};
+            }
+        }
+    }
+
+    return $collector;
+}
+
+my @include = qw(
+
 );
 
-my %exclude = map {; $_ => 1 } qw(
+my @exclude = qw(
 
 );
 
-my ($source) = grep { -f $_ } qw/MYMETA.json MYMETA.yml META.json/;
-$source = "META.yml" unless defined $source;
+# Add static prereqs to the included modules list
+my $static_prereqs = do 't/00-report-prereqs.dd';
 
-# replace modules with dynamic results from MYMETA.json if we can
-# (hide CPAN::Meta from prereq scanner)
-my $cpan_meta = "CPAN::Meta";
-my $cpan_meta_req = "CPAN::Meta::Requirements";
-my $all_requires;
-if ( -f $source && eval "require $cpan_meta" ) { ## no critic
-  if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
-
-    # Get ALL modules mentioned in META (any phase/type)
-    my $prereqs = $meta->prereqs;
-    delete $prereqs->{develop} if not $ENV{AUTHOR_TESTING};
-    my %uniq = map {$_ => 1} map { keys %$_ } map { values %$_ } values %$prereqs;
-    $uniq{$_} = 1 for @modules; # don't lose any static ones
-    @modules = sort grep { ! $exclude{$_} } keys %uniq;
-
-    # If verifying, merge 'requires' only for major phases
-    if ( 1 ) {
-      $prereqs = $meta->effective_prereqs; # get the object, not the hash
-      if (eval "require $cpan_meta_req; 1") { ## no critic
-        $all_requires = $cpan_meta_req->new;
-        for my $phase ( qw/configure build test runtime/ ) {
-          $all_requires->add_requirements(
-            $prereqs->requirements_for($phase, 'requires')
-          );
-        }
-      }
+# Merge all prereqs (either with ::Prereqs or a hashref)
+my $full_prereqs = _merge_prereqs(
+    ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ),
+    $static_prereqs
+);
+
+# Add dynamic prereqs to the included modules list (if we can)
+my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
+if ( $source && $HAS_CPAN_META ) {
+    if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
+        $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs);
     }
-  }
+}
+else {
+    $source = 'static metadata';
 }
 
-my @reports = [qw/Version Module/];
+my @full_reports;
 my @dep_errors;
-my $req_hash = defined($all_requires) ? $all_requires->as_string_hash : {};
-
-for my $mod ( @modules ) {
-  next if $mod eq 'perl';
-  my $file = $mod;
-  $file =~ s{::}{/}g;
-  $file .= ".pm";
-  my ($prefix) = grep { -e catfile($_, $file) } @INC;
-  if ( $prefix ) {
-    my $ver = MM->parse_version( catfile($prefix, $file) );
-    $ver = "undef" unless defined $ver; # Newer MM should do this anyway
-    push @reports, [$ver, $mod];
-
-    if ( 1 && $all_requires ) {
-      my $req = $req_hash->{$mod};
-      if ( defined $req && length $req ) {
-        if ( ! defined eval { version->parse($ver) } ) {
-          push @dep_errors, "$mod version '$ver' cannot be parsed (version '$req' required)";
-        }
-        elsif ( ! $all_requires->accepts_module( $mod => $ver ) ) {
-          push @dep_errors, "$mod version '$ver' is not in required range '$req'";
+my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs;
+
+# Add static includes into a fake section
+for my $mod (@include) {
+    $req_hash->{other}{modules}{$mod} = 0;
+}
+
+for my $phase ( qw(configure build test runtime develop other) ) {
+    next unless $req_hash->{$phase};
+    next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING});
+
+    for my $type ( qw(requires recommends suggests conflicts modules) ) {
+        next unless $req_hash->{$phase}{$type};
+
+        my $title = ucfirst($phase).' '.ucfirst($type);
+        my @reports = [qw/Module Want Have/];
+
+        for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) {
+            next if $mod eq 'perl';
+            next if grep { $_ eq $mod } @exclude;
+
+            my $file = $mod;
+            $file =~ s{::}{/}g;
+            $file .= ".pm";
+            my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC;
+
+            my $want = $req_hash->{$phase}{$type}{$mod};
+            $want = "undef" unless defined $want;
+            $want = "any" if !$want && $want == 0;
+
+            my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required";
+
+            if ($prefix) {
+                my $have = MM->parse_version( File::Spec->catfile($prefix, $file) );
+                $have = "undef" unless defined $have;
+                push @reports, [$mod, $want, $have];
+
+                if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) {
+                    if ( $have !~ /\A$lax_version_re\z/ ) {
+                        push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)";
+                    }
+                    elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) {
+                        push @dep_errors, "$mod version '$have' is not in required range '$want'";
+                    }
+                }
+            }
+            else {
+                push @reports, [$mod, $want, "missing"];
+
+                if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) {
+                    push @dep_errors, "$mod is not installed ($req_string)";
+                }
+            }
         }
-      }
-    }
 
-  }
-  else {
-    push @reports, ["missing", $mod];
+        if ( @reports ) {
+            push @full_reports, "=== $title ===\n\n";
+
+            my $ml = _max( map { length $_->[0] } @reports );
+            my $wl = _max( map { length $_->[1] } @reports );
+            my $hl = _max( map { length $_->[2] } @reports );
+            splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl];
 
-    if ( 1 && $all_requires ) {
-      my $req = $req_hash->{$mod};
-      if ( defined $req && length $req ) {
-        push @dep_errors, "$mod is not installed (version '$req' required)";
-      }
+            push @full_reports, map { sprintf("    %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports;
+            push @full_reports, "\n";
+        }
     }
-  }
 }
 
-if ( @reports ) {
-  my $vl = max map { length $_->[0] } @reports;
-  my $ml = max map { length $_->[1] } @reports;
-  splice @reports, 1, 0, ["-" x $vl, "-" x $ml];
-  diag "\nVersions for all modules listed in $source (including optional ones):\n",
-    map {sprintf("  %*s %*s\n",$vl,$_->[0],-$ml,$_->[1])} @reports;
+if ( @full_reports ) {
+    diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports;
 }
 
 if ( @dep_errors ) {
-  diag join("\n",
-    "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n",
-    "The following REQUIRED prerequisites were not satisfied:\n",
-    @dep_errors,
-    "\n"
-  );
+    diag join("\n",
+        "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n",
+        "The following REQUIRED prerequisites were not satisfied:\n",
+        @dep_errors,
+        "\n"
+    );
 }
 
 pass;
 
-# vim: ts=2 sts=2 sw=2 et:
+# vim: ts=4 sts=4 sw=4 et:
@@ -0,0 +1,67 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Test::More;
+use Test::Fatal;
+use lib 't/lib';
+
+use TestApp3;
+
+{
+    my $app = TestApp3->new;
+    my $res;
+
+    is(
+        exception { $res = $app->load_plugin('Lives') },
+        undef,
+        'lived through successfully loading a class',
+    );
+
+    note "does roles: ", join(', ', map { $_->name } $app->meta->calculate_all_roles_with_inheritance );
+
+    ok(exists $app->_plugin_loaded->{'Lives'}, 'Lives was added to loaded plugin list');
+    ok($app->does('TestApp3::Plugin::Lives'), 'app has the Lives plugin applied');
+
+    like(
+        exception { $res = $app->load_plugin('Dies1') },
+        qr/Failed to load /,
+        'Failure to load a class results in an exception',
+    );
+
+    ok(!exists $app->_plugin_loaded->{'Dies1'}, 'Dies1 was not added to loaded plugin list');
+    ok(!$app->does('TestApp3::Plugin::Dies1'), 'app does not have the Dies1 plugin applied');
+
+    ok(exists $app->_plugin_loaded->{'Lives'}, 'Lives is still in the loaded plugin list');
+    ok($app->does('TestApp3::Plugin::Lives'), 'app still has the Lives plugin applied');
+}
+
+{
+    my $app = TestApp3->new;
+    my $res;
+
+    # note - it's key that we already tried to load Dies1 in an earlier test
+    like(
+        exception { $res = $app->load_plugin('Dies1') },
+        qr/Failed to load /,
+        'Failure to load a class again results in the right exception',
+    );
+
+    #$res = warning {$app->load_plugins('Dies2', 'Lives')};
+    like(
+        exception { $res = $app->load_plugins('Lives', 'Dies2') },
+        qr/Failed to load /,
+        'Failure to load any class in a list results in an exception',
+    );
+    note "does roles: ", join(', ', map { $_->name } $app->meta->calculate_all_roles_with_inheritance );
+
+    ok(!exists $app->_plugin_loaded->{'Dies1'}, 'Dies1 was not added to loaded plugin list');
+    ok(!$app->does('TestApp3::Plugin::Dies1'), 'app does not have the Dies1 plugin applied');
+
+    ok(exists $app->_plugin_loaded->{'Lives'}, 'Lives was added to loaded plugin list');
+    ok($app->does('TestApp3::Plugin::Lives'), 'app has the Lives plugin applied');
+
+    ok(!exists $app->_plugin_loaded->{'Dies2'}, 'Dies2 was not added to loaded plugin list');
+    ok(!$app->does('TestApp3::Plugin::Dies2'), 'app does not have the Dies2 plugin applied');
+}
+
+done_testing;
@@ -1,46 +0,0 @@
-use strict;
-use warnings;
-use Test::More tests => 3;
-
-sub not_in_file_ok {
-    my ($filename, %regex) = @_;
-    open my $fh, "<", $filename
-        or die "couldn't open $filename for reading: $!";
-
-    my %violated;
-
-    while (my $line = <$fh>) {
-        while (my ($desc, $regex) = each %regex) {
-            if ($line =~ $regex) {
-                push @{$violated{$desc}||=[]}, $.;
-            }
-        }
-    }
-
-    if (%violated) {
-        fail("$filename contains boilerplate text");
-        diag "$_ appears on lines @{$violated{$_}}" for keys %violated;
-    } else {
-        pass("$filename contains no boilerplate text");
-    }
-}
-
-not_in_file_ok(README =>
-    "The README is used..."       => qr/The README is used/,
-    "'version information here'"  => qr/to provide version information/,
-);
-
-not_in_file_ok(Changes =>
-    "placeholder date/time"       => qr(Date/time)
-);
-
-sub module_boilerplate_ok {
-    my ($module) = @_;
-    not_in_file_ok($module =>
-        'the great new $MODULENAME'   => qr/ - The great new /,
-        'boilerplate description'     => qr/Quick summary of what the module/,
-        'stub function definition'    => qr/function[12]/,
-    );
-}
-
-module_boilerplate_ok('lib/MooseX/Object/Pluggable.pm');
@@ -0,0 +1,6 @@
+package TestApp3::Plugin::Dies1;
+
+use Moose::Role;
+die 'oh noes';
+
+1;
@@ -0,0 +1,6 @@
+package TestApp3::Plugin::Dies2;
+
+use Moose::Role;
+die 'oh noes';
+
+1;
@@ -0,0 +1,10 @@
+package TestApp3::Plugin::Lives;
+
+use Moose::Role;
+
+use warnings;
+use strict;
+
+sub bar {}
+
+1;
@@ -0,0 +1,11 @@
+package TestApp3;
+
+use strict;
+use warnings;
+use Moose;
+
+with 'MooseX::Object::Pluggable';
+
+__PACKAGE__->meta->make_immutable;
+
+1;
@@ -0,0 +1,18 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::CheckBreaks 0.011
+
+use Test::More 0.88;
+
+SKIP: {
+    eval 'require Moose::Conflicts; Moose::Conflicts->check_conflicts';
+    skip('no Moose::Conflicts module found', 1) if not $INC{'Moose/Conflicts.pm'};
+
+    diag $@ if $@;
+    pass 'conflicts checked via Moose::Conflicts';
+}
+
+pass 'no x_breaks data to check';
+
+done_testing;
@@ -0,0 +1,6 @@
+[@Default]
+
+[-Transformer]
+transformer = List
+
+[Contributors]
@@ -1,11 +1,12 @@
+use 5.006;
 use strict;
 use warnings;
 
-# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.037
-
-use Test::More 0.94 tests => 1 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.051
 
+use Test::More 0.94;
 
+plan tests => 1 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
 
 my @module_files = (
     'MooseX/Object/Pluggable.pm'
@@ -21,11 +22,12 @@ use File::Spec;
 use IPC::Open3;
 use IO::Handle;
 
+open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
+
 my @warnings;
 for my $lib (@module_files)
 {
     # see L<perlfaq8/How can I capture STDERR from an external command?>
-    open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
     my $stderr = IO::Handle->new;
 
     my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, '-e', "require q[$lib]");
@@ -43,6 +45,7 @@ for my $lib (@module_files)
 
 
 
-is(scalar(@warnings), 0, 'no warnings found') if $ENV{AUTHOR_TESTING};
+is(scalar(@warnings), 0, 'no warnings found')
+    or diag 'got warnings: ', explain(\@warnings) if $ENV{AUTHOR_TESTING};
 
 BAIL_OUT("Compilation problems") if !Test::More->builder->is_passing;
@@ -0,0 +1,8 @@
+use strict;
+use warnings;
+use Test::More;
+
+# generated by Dist::Zilla::Plugin::Test::EOL 0.16
+use Test::EOL;
+
+all_perl_files_ok({ trailing_whitespace => 1 });
@@ -0,0 +1,50 @@
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.11
+
+use Test::More 0.88;
+use Test::NoTabs;
+
+my @files = (
+    'lib/MooseX/Object/Pluggable.pm',
+    't/00-load.t',
+    't/00-report-prereqs.dd',
+    't/00-report-prereqs.t',
+    't/01-basic.t',
+    't/02-basic2.t',
+    't/03-custom-ns.t',
+    't/04-reload.t',
+    't/05-load-failure.t',
+    't/lib/CustomNS/Plugin/Foo.pm',
+    't/lib/TestApp.pm',
+    't/lib/TestApp/Plugin/Bar.pm',
+    't/lib/TestApp/Plugin/Baz.pm',
+    't/lib/TestApp/Plugin/Bor.pm',
+    't/lib/TestApp/Plugin/Foo.pm',
+    't/lib/TestApp2.pm',
+    't/lib/TestApp2/Plugin/Foo.pm',
+    't/lib/TestApp3.pm',
+    't/lib/TestApp3/Plugin/Dies1.pm',
+    't/lib/TestApp3/Plugin/Dies2.pm',
+    't/lib/TestApp3/Plugin/Lives.pm',
+    't/zzz-check-breaks.t',
+    'xt/author/00-compile.t',
+    'xt/author/eol.t',
+    'xt/author/no-tabs.t',
+    'xt/author/pod-spell.t',
+    'xt/release/changes_has_content.t',
+    'xt/release/clean-namespaces.t',
+    'xt/release/cpan-changes.t',
+    'xt/release/distmeta.t',
+    'xt/release/kwalitee.t',
+    'xt/release/minimum-version.t',
+    'xt/release/mojibake.t',
+    'xt/release/pod-coverage.t',
+    'xt/release/pod-no404s.t',
+    'xt/release/pod-syntax.t',
+    'xt/release/portability.t'
+);
+
+notabs_ok($_) foreach @files;
+done_testing;
@@ -2,7 +2,7 @@ use strict;
 use warnings;
 use Test::More;
 
-# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006001
+# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006008
 use Test::Spelling 0.12;
 use Pod::Wordlist;
 
@@ -16,18 +16,21 @@ groditi
 Karen
 Etheridge
 ether
-Robert
-Boone
-robo4288
 Shawn
 Moore
 sartak
-Todd
-Hepler
-thepler
 Yuval
 Kogman
 nothingmuch
+Robert
+Boone
+robo4288
+David
+Steinbrunner
+dsteinbrunner
+Todd
+Hepler
+thepler
 lib
 MooseX
 Object
@@ -4,7 +4,7 @@ use Test::More tests => 2;
 
 note 'Checking Changes';
 my $changes_file = 'Changes';
-my $newver = '0.0012';
+my $newver = '0.0014';
 my $trial_token = '-TRIAL';
 
 SKIP: {
@@ -0,0 +1,9 @@
+use strict;
+use warnings FATAL => 'all';
+
+use Test::More;
+use Test::CleanNamespaces;
+
+all_namespaces_clean();
+
+done_testing;
@@ -1,7 +1,6 @@
 #!perl
+# This file was automatically generated by Dist::Zilla::Plugin::MetaTests.
 
-use Test::More;
+use Test::CPAN::Meta;
 
-eval "use Test::CPAN::Meta";
-plan skip_all => "Test::CPAN::Meta required for testing META.yml" if $@;
 meta_yaml_ok();
@@ -1,8 +0,0 @@
-use strict;
-use warnings;
-use Test::More;
-
-eval 'use Test::EOL';
-plan skip_all => 'Test::EOL required' if $@;
-
-all_perl_files_ok({ trailing_whitespace => 1 });
@@ -1,4 +1,9 @@
-# this test was generated with Dist::Zilla::Plugin::Test::Kwalitee 2.07
+# this test was generated with Dist::Zilla::Plugin::Test::Kwalitee 2.11
 use strict;
 use warnings;
-use Test::Kwalitee;
+use Test::More 0.88;
+use Test::Kwalitee 1.21 'kwalitee_ok';
+
+kwalitee_ok();
+
+done_testing;
@@ -1,14 +0,0 @@
-use strict;
-use warnings;
-
-# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.05
-
-use Test::More 0.88;
-use Test::NoTabs;
-
-my @files = (
-    'lib/MooseX/Object/Pluggable.pm'
-);
-
-notabs_ok($_) foreach @files;
-done_testing;
@@ -1,13 +1,7 @@
 #!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests.
 
-use Test::More;
-
-eval "use Test::Pod::Coverage 1.08";
-plan skip_all => "Test::Pod::Coverage 1.08 required for testing POD coverage"
-  if $@;
-
-eval "use Pod::Coverage::TrustPod";
-plan skip_all => "Pod::Coverage::TrustPod required for testing POD coverage"
-  if $@;
+use Test::Pod::Coverage 1.08;
+use Pod::Coverage::TrustPod;
 
 all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' });
@@ -1,7 +1,6 @@
 #!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
 use Test::More;
-
-eval "use Test::Pod 1.41";
-plan skip_all => "Test::Pod 1.41 required for testing POD" if $@;
+use Test::Pod 1.41;
 
 all_pod_files_ok();
@@ -0,0 +1,11 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+eval 'use Test::Portability::Files';
+plan skip_all => 'Test::Portability::Files required for testing portability'
+    if $@;
+run_tests();
@@ -1,22 +0,0 @@
-use strict;
-use warnings;
-use Test::More;
-
-# generated by Dist::Zilla::Plugin::Test::Version 0.002004
-BEGIN { eval "use Test::Version; 1;" or die $@; }
-
-my @imports = ( 'version_all_ok' );
-
-my $params = {
-    is_strict   => 1,
-    has_version => 1,
-};
-
-push @imports, $params
-    if version->parse( $Test::Version::VERSION ) >= version->parse('1.002');
-
-
-Test::Version->import(@imports);
-
-version_all_ok;
-done_testing;
@@ -1,8 +0,0 @@
-#!perl
-
-use Test::More;
-
-eval "use Test::Vars";
-plan skip_all => "Test::Vars required for testing unused vars"
-  if $@;
-all_vars_ok();