diff --git a/README.rst b/README.rst
index 4a3376e..697d994 100644
--- a/README.rst
+++ b/README.rst
@@ -86,9 +86,7 @@
    trying to coordinate and prioritize work) know what you would like
    to work on.
 
-7) TODOv3(jeblair): Coming soon: check storyboard for status of
-   current work items.  We do not have a list of work items yet, but
-   we will soon.
+7) Check storyboard for status of current work items: https://storyboard.openstack.org/#!/board/41
 
 Once you are up to speed on those items, it will be helpful to know
 the following:
@@ -100,9 +98,9 @@
   from something simple such as a test-framework method changing its
   name, to more substantial issues, such as a feature being removed as
   part of the v3 work.  Each test will need to be evaluated
-  individually.  Feel free to, at any time, claim a test name on this
-  etherpad and work on re-enabling it:
-  https://etherpad.openstack.org/p/zuulv3
+  individually.  Feel free to, at any time, claim a test name in this
+  story and work on re-enabling it:
+  https://storyboard.openstack.org/#!/story/2000773
 
 * Because of the importance of external systems, as well as the number
   of internal Zuul components, actually running Zuul in a development
@@ -127,3 +125,20 @@
   simply reflect who to ask to explain the item in more detail if it
   is too cryptic.  In your own work, feel free to leave TODOv3 notes
   if a change would otherwise become too large or unweildy.
+
+Roadmap
+-------
+
+* Implement Zookeeper for Nodepool builders and begin using this in
+  OpenStack Infra
+* Implement Zookeeper for Nodepool launchers
+* Implement a shim to translate Zuul v2 demand into Nodepool Zookeeper
+  launcher requests
+* Begin using Zookeeper based Nodepool launchers with Zuul v2.5 in
+  OpenStack Infra
+* Begin using Zuul v3 to run jobs for Zuul itself
+* Move OpenStack Infra to use Zuul v3
+* Implement Github support
+* Begin using Zuul v3 to run tests on Ansible repos
+* Implement support in Nodepool for non-OpenStack clouds
+* Add native container support to Zuul / Nodepool
diff --git a/tests/fixtures/config/single-tenant/git/layout-inheritance/zuul.yaml b/tests/fixtures/config/single-tenant/git/layout-inheritance/zuul.yaml
new file mode 100644
index 0000000..3070af0
--- /dev/null
+++ b/tests/fixtures/config/single-tenant/git/layout-inheritance/zuul.yaml
@@ -0,0 +1,46 @@
+- pipeline:
+    name: check
+    manager: independent
+    source:
+      gerrit
+    trigger:
+      gerrit:
+        - event: patchset-created
+    success:
+      gerrit:
+        verified: 1
+    failure:
+      gerrit:
+        verified: -1
+
+
+- job:
+    name: project-test-irrelevant-starts-empty
+
+- job:
+    name: project-test-irrelevant-starts-full
+    irrelevant-files:
+      - ^README$
+      - ^ignoreme$
+
+- job:
+    name: project-test-nomatch-starts-empty
+
+- job:
+    name: project-test-nomatch-starts-full
+    irrelevant-files:
+      - ^README$
+
+- project:
+    name: org/project
+    check:
+      jobs:
+        - project-test-irrelevant-starts-empty:
+            irrelevant-files:
+              - ^README$
+              - ^ignoreme$
+        - project-test-irrelevant-starts-full
+        - project-test-nomatch-starts-empty:
+            irrelevant-files:
+              - ^README$
+        - project-test-nomatch-starts-full
diff --git a/tests/fixtures/config/templated-project/git/common-config/zuul.yaml b/tests/fixtures/config/templated-project/git/common-config/zuul.yaml
index b4773f1..22a2d6d 100644
--- a/tests/fixtures/config/templated-project/git/common-config/zuul.yaml
+++ b/tests/fixtures/config/templated-project/git/common-config/zuul.yaml
@@ -81,6 +81,9 @@
 - job:
     name: layered-project-foo-test5
 
+- job:
+    name: project-test6
+
 - project:
     name: org/templated-project
     templates:
diff --git a/tests/test_model.py b/tests/test_model.py
index 0d4c7b6..0189340 100644
--- a/tests/test_model.py
+++ b/tests/test_model.py
@@ -265,6 +265,51 @@
         self.assertEqual(job.name, 'python27')
         self.assertEqual(job.timeout, 70)
 
+    def test_inheritance_keeps_matchers(self):
+        layout = model.Layout()
+
+        pipeline = model.Pipeline('gate', layout)
+        layout.addPipeline(pipeline)
+        queue = model.ChangeQueue(pipeline)
+        project = model.Project('project')
+
+        base = configloader.JobParser.fromYaml(layout, {
+            '_source_project': project,
+            'name': 'base',
+            'timeout': 30,
+        })
+        layout.addJob(base)
+        python27 = configloader.JobParser.fromYaml(layout, {
+            '_source_project': project,
+            'name': 'python27',
+            'parent': 'base',
+            'timeout': 40,
+            'irrelevant-files': ['^ignored-file$'],
+        })
+        layout.addJob(python27)
+
+        project_config = configloader.ProjectParser.fromYaml(layout, {
+            'name': 'project',
+            'gate': {
+                'jobs': [
+                    'python27',
+                ]
+            }
+        })
+        layout.addProjectConfig(project_config, update_pipeline=False)
+
+        change = model.Change(project)
+        change.branch = 'master'
+        change.files = ['/COMMIT_MSG', 'ignored-file']
+        item = queue.enqueueChange(change)
+        item.current_build_set.layout = layout
+
+        self.assertTrue(base.changeMatches(change))
+        self.assertFalse(python27.changeMatches(change))
+
+        item.freezeJobTree()
+        self.assertEqual([], item.getJobs())
+
     def test_job_source_project(self):
         layout = model.Layout()
         base_project = model.Project('base_project')
diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py
index d01a88d..ae80330 100755
--- a/tests/test_scheduler.py
+++ b/tests/test_scheduler.py
@@ -2236,6 +2236,24 @@
     def test_irrelevant_files_no_match_runs_job(self):
         self._test_irrelevant_files_jobs(should_skip=False)
 
+    def test_inherited_jobs_keep_matchers(self):
+        self.updateConfigLayout('layout-inheritance')
+        self.sched.reconfigure(self.config)
+
+        files = {'ignoreme': 'ignored\n'}
+
+        change = self.fake_gerrit.addFakeChange('org/project',
+                                                'master',
+                                                'test irrelevant-files',
+                                                files=files)
+        self.fake_gerrit.addEvent(change.getPatchsetCreatedEvent(1))
+        self.waitUntilSettled()
+
+        run_jobs = set([build.name for build in self.history])
+
+        self.assertEqual(set(['project-test-nomatch-starts-empty',
+                              'project-test-nomatch-starts-full']), run_jobs)
+
     @skip("Disabled for early v3 development")
     def test_test_config(self):
         "Test that we can test the config"
diff --git a/zuul/model.py b/zuul/model.py
index 06639f1..a77183c 100644
--- a/zuul/model.py
+++ b/zuul/model.py
@@ -1771,6 +1771,11 @@
                     if variant not in inherited:
                         frozen_job.inheritFrom(variant)
                         inherited.add(variant)
+            if not inherited:
+                # A change must match at least one defined job variant
+                # (that is to say that it must match more than just
+                # the job that is defined in the tree).
+                continue
             if job not in inherited:
                 # Only update from the job in the tree if it is
                 # unique, otherwise we might unset an attribute we
