diff --git a/maintner/github.go b/maintner/github.go
index 9f415d1..fd52f12 100644
--- a/maintner/github.go
+++ b/maintner/github.go
@@ -164,6 +164,32 @@
 	return nil
 }
 
+// ForeachReview calls fn for each review event on the issue
+//
+// If the issue is not a PullRequest, then it returns early with no error.
+//
+// If fn returns an error, iteration ends and ForeachReview returns
+// with that error.
+//
+// The fn function is called serially, in chronological order.
+func (pr *GitHubIssue) ForeachReview(fn func(*GitHubReview) error) error {
+	if !pr.PullRequest {
+		return nil
+	}
+	s := make([]*GitHubReview, 0, len(pr.reviews))
+	for _, rv := range pr.reviews {
+		s = append(s, rv)
+	}
+	sort.Slice(s, func(i, j int) bool { return s[i].Created.Before(s[j].Created) })
+	for _, rv := range s {
+		if err := fn(rv); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
 func (g *GitHubRepo) getOrCreateMilestone(id int64) *GitHubMilestone {
 	if id == 0 {
 		panic("zero id")
@@ -251,7 +277,9 @@
 	comments           map[int64]*GitHubComment    // by comment.ID
 	eventMaxTime       time.Time                   // latest time of any event in events map
 	eventsSyncedAsOf   time.Time                   // as of server's Date header
+	reviewsSyncedAsOf  time.Time                   // as of server's Date header
 	events             map[int64]*GitHubIssueEvent // by event.ID
+	reviews            map[int64]*GitHubReview     // by event.ID
 }
 
 // LastModified reports the most recent time that any known metadata was updated.
@@ -467,6 +495,68 @@
 	}
 }
 
+// GitHubReview represents a review on a Pull Request.
+// For more details, see https://developer.github.com/v3/pulls/reviews/
+type GitHubReview struct {
+	ID               int64
+	Actor            *GitHubUser
+	Body             string
+	State            string // COMMENTED, APPROVED, CHANGES_REQUESTED
+	CommitID         string
+	ActorAssociation string // CONTRIBUTOR
+	Created          time.Time
+	OtherJSON        string
+}
+
+// Proto converts GitHubReview to a protobuf
+func (e *GitHubReview) Proto() *maintpb.GithubReview {
+	p := &maintpb.GithubReview{
+		Id:               e.ID,
+		Body:             e.Body,
+		State:            e.State,
+		CommitId:         e.CommitID,
+		ActorAssociation: e.ActorAssociation,
+	}
+	if e.OtherJSON != "" {
+		p.OtherJson = []byte(e.OtherJSON)
+	}
+	if !e.Created.IsZero() {
+		if tp, err := ptypes.TimestampProto(e.Created); err == nil {
+			p.Created = tp
+		}
+	}
+	if e.Actor != nil {
+		p.ActorId = e.Actor.ID
+	}
+
+	return p
+}
+
+// r.github.c.mu must be held.
+func (r *GitHubRepo) newGithubReview(p *maintpb.GithubReview) *GitHubReview {
+	g := r.github
+	e := &GitHubReview{
+		ID:               p.Id,
+		Actor:            g.getOrCreateUserID(p.ActorId),
+		ActorAssociation: p.ActorAssociation,
+		CommitID:         p.CommitId,
+		Body:             p.Body,
+		State:            p.State,
+	}
+
+	if p.Created != nil {
+		e.Created, _ = ptypes.Timestamp(p.Created)
+	}
+	if len(p.OtherJson) > 0 {
+		// TODO: parse it and see if we've since learned how
+		// to deal with it?
+		log.Printf("Unknown JSON in log: %s", p.OtherJson)
+		e.OtherJSON = string(p.OtherJson)
+	}
+
+	return e
+}
+
 type GitHubComment struct {
 	ID      int64
 	User    *GitHubUser
@@ -657,6 +747,16 @@
 	return gi.eventsSyncedAsOf.After(gi.Updated)
 }
 
+// (requires corpus be locked for reads)
+func (gi *GitHubIssue) reviewsSynced() bool {
+	if gi.NotExist {
+		// Issue doesn't exist, so can't sync its non-issues,
+		// so consider it done.
+		return true
+	}
+	return gi.reviewsSyncedAsOf.After(gi.Updated)
+}
+
 func (c *Corpus) initGithub() {
 	if c.github != nil {
 		return
@@ -1312,6 +1412,26 @@
 			gi.eventsSyncedAsOf = serverDate.UTC()
 		}
 	}
+
+	for _, rmut := range m.Review {
+		if rmut.Id == 0 {
+			log.Printf("Ignoring bogus review mutation lacking Id: %v", rmut)
+			continue
+		}
+		if gi.reviews == nil {
+			gi.reviews = make(map[int64]*GitHubReview)
+		}
+		gre := gr.newGithubReview(rmut)
+		gi.reviews[rmut.Id] = gre
+		if gre.Created.After(gi.eventMaxTime) {
+			gi.eventMaxTime = gre.Created
+		}
+	}
+	if m.ReviewStatus != nil && m.ReviewStatus.ServerDate != nil {
+		if serverDate, err := ptypes.Timestamp(m.ReviewStatus.ServerDate); err == nil {
+			gi.reviewsSyncedAsOf = serverDate.UTC()
+		}
+	}
 }
 
 // githubCache is an httpcache.Cache wrapper that only
@@ -1454,6 +1574,9 @@
 	if err := p.syncEvents(ctx); err != nil {
 		return err
 	}
+	if err := p.syncReviews(ctx); err != nil {
+		return err
+	}
 	return nil
 }
 
@@ -2099,6 +2222,210 @@
 	return evts, nil
 }
 
+func (p *githubRepoPoller) issueNumbersWithStaleReviewsSync() (issueNums []int32) {
+	p.c.mu.RLock()
+	defer p.c.mu.RUnlock()
+
+	for n, gi := range p.gr.issues {
+		if gi.PullRequest && !gi.reviewsSynced() {
+			issueNums = append(issueNums, n)
+		}
+	}
+	sort.Slice(issueNums, func(i, j int) bool {
+		return issueNums[i] < issueNums[j]
+	})
+	return issueNums
+}
+
+func (p *githubRepoPoller) syncReviews(ctx context.Context) error {
+	for {
+		nums := p.issueNumbersWithStaleReviewsSync()
+		if len(nums) == 0 {
+			return nil
+		}
+		remain := len(nums)
+		for _, num := range nums {
+			p.logf("reviews sync: %d issues remaining; syncing issue %v", remain, num)
+			if err := p.syncReviewsOnPullRequest(ctx, num); err != nil {
+				p.logf("review sync on issue %d: %v", num, err)
+				return err
+			}
+			remain--
+		}
+	}
+}
+
+func (p *githubRepoPoller) syncReviewsOnPullRequest(ctx context.Context, issueNum int32) error {
+	const perPage = 100
+	p.c.mu.RLock()
+	gi := p.gr.issues[issueNum]
+	if gi == nil {
+		p.c.mu.RUnlock()
+		panic(fmt.Sprintf("bogus issue %v", issueNum))
+	}
+
+	if !gi.PullRequest {
+		p.c.mu.RUnlock()
+		return nil
+	}
+
+	have := len(gi.reviews)
+	p.c.mu.RUnlock()
+
+	skipPages := have / perPage
+
+	mut := &maintpb.Mutation{
+		GithubIssue: &maintpb.GithubIssueMutation{
+			Owner:  p.Owner(),
+			Repo:   p.Repo(),
+			Number: issueNum,
+		},
+	}
+
+	err := p.foreachItem(ctx,
+		1+skipPages,
+		func(ctx context.Context, page int) ([]interface{}, *github.Response, error) {
+			u := fmt.Sprintf("https://api.github.com/repos/%s/%s/pulls/%v/reviews?per_page=%v&page=%v",
+				p.Owner(), p.Repo(), issueNum, perPage, page)
+			req, _ := http.NewRequest("GET", u, nil)
+
+			req.Header.Set("Authorization", "Bearer "+p.token)
+			req.Header.Set("User-Agent", "golang-x-build-maintner/1.0")
+			ctx, cancel := context.WithTimeout(ctx, time.Minute)
+			defer cancel()
+			req = req.WithContext(ctx)
+			res, err := http.DefaultClient.Do(req)
+			if err != nil {
+				log.Printf("Fetching %s: %v", u, err)
+				return nil, nil, err
+			}
+			log.Printf("Fetching %s: %v", u, res.Status)
+			if res.StatusCode != http.StatusOK {
+				log.Printf("Fetching %s: %v: %+v", u, res.Status, res.Header)
+				// TODO: rate limiting, etc.
+				return nil, nil, fmt.Errorf("%s: %v", u, res.Status)
+			}
+			evts, err := parseGithubReviews(res.Body)
+			if err != nil {
+				return nil, nil, fmt.Errorf("%s: parse github pr review events: %v", u, err)
+			}
+			is := make([]interface{}, len(evts))
+			for i, v := range evts {
+				is[i] = v
+			}
+			serverDate, err := http.ParseTime(res.Header.Get("Date"))
+			if err != nil {
+				return nil, nil, fmt.Errorf("invalid server Date response: %v", err)
+			}
+			sdp, _ := ptypes.TimestampProto(serverDate.UTC())
+			mut.GithubIssue.ReviewStatus = &maintpb.GithubIssueSyncStatus{ServerDate: sdp}
+
+			return is, makeGithubResponse(res), err
+		},
+		func(v interface{}) error {
+			ge := v.(*GitHubReview)
+			p.c.mu.RLock()
+			_, ok := gi.reviews[ge.ID]
+			p.c.mu.RUnlock()
+			if ok {
+				// Already have it. And they're
+				// assumed to be immutable, so the
+				// copy we already have should be
+				// good. Don't add to mutation log.
+				return nil
+			}
+			mut.GithubIssue.Review = append(mut.GithubIssue.Review, ge.Proto())
+			return nil
+		})
+	if err != nil {
+		return err
+	}
+	p.c.addMutation(mut)
+	return nil
+}
+
+// parseGithubReviews parses the JSON array of GitHub review events in r.  It
+// does this the very manual way (using map[string]interface{})
+// instead of using nice types because https://golang.org/issue/15314
+// isn't implemented yet and also because even if it were implemented,
+// this code still wants to preserve any unknown fields to store in
+// the "OtherJSON" field for future updates of the code to parse. (If
+// GitHub adds new Event types in the future, we want to archive them,
+// even if we don't understand them)
+func parseGithubReviews(r io.Reader) ([]*GitHubReview, error) {
+	var jevents []map[string]interface{}
+	jd := json.NewDecoder(r)
+	jd.UseNumber()
+	if err := jd.Decode(&jevents); err != nil {
+		return nil, err
+	}
+	var evts []*GitHubReview
+	for _, em := range jevents {
+		for k, v := range em {
+			if v == nil {
+				delete(em, k)
+			}
+		}
+
+		e := &GitHubReview{}
+
+		e.ID = jint64(em["id"])
+		delete(em, "id")
+
+		e.Body, _ = em["body"].(string)
+		delete(em, "body")
+
+		e.State, _ = em["state"].(string)
+		delete(em, "state")
+
+		// TODO: store these two more compactly:
+		e.CommitID, _ = em["commit_id"].(string) // "5383ecf5a0824649ffcc0349f00f0317575753d0"
+		delete(em, "commit_id")
+
+		getUser := func(field string, gup **GitHubUser) {
+			am, ok := em[field].(map[string]interface{})
+			if !ok {
+				return
+			}
+			delete(em, field)
+			gu := &GitHubUser{ID: jint64(am["id"])}
+			gu.Login, _ = am["login"].(string)
+			*gup = gu
+		}
+
+		getUser("user", &e.Actor)
+
+		e.ActorAssociation, _ = em["author_association"].(string)
+		delete(em, "author_association")
+
+		if createdStr, ok := em["submitted_at"].(string); ok {
+			delete(em, "submitted_at")
+			var err error
+			e.Created, err = time.Parse(time.RFC3339, createdStr)
+			if err != nil {
+				return nil, err
+			}
+			e.Created = e.Created.UTC()
+		}
+
+		delete(em, "node_id")          // not sure what it is, but don't need to store it
+		delete(em, "html_url")         // not needed.
+		delete(em, "pull_request_url") // not needed.
+		delete(em, "_links")           // not needed. (duplicate data of above two nodes)
+
+		otherJSON, _ := json.Marshal(em)
+		e.OtherJSON = string(otherJSON)
+		if e.OtherJSON == "{}" {
+			e.OtherJSON = ""
+		}
+		if e.OtherJSON != "" {
+			log.Printf("warning: storing unknown field(s) in GitHub event: %s", e.OtherJSON)
+		}
+		evts = append(evts, e)
+	}
+	return evts, nil
+}
+
 // jint64 return an int64 from the provided JSON object value v.
 func jint64(v interface{}) int64 {
 	switch v := v.(type) {
diff --git a/maintner/github_test.go b/maintner/github_test.go
index 35f7317..5eb8e1d 100644
--- a/maintner/github_test.go
+++ b/maintner/github_test.go
@@ -5,6 +5,7 @@
 package maintner
 
 import (
+	"fmt"
 	"reflect"
 	"strings"
 	"testing"
@@ -516,6 +517,240 @@
 	t.Logf("Tested event types: %q", eventTypes)
 }
 
+func TestParseGitHubReviews(t *testing.T) {
+	tests := []struct {
+		name string                // test
+		j    string                // JSON from Github API
+		e    *GitHubReview         // in-memory
+		p    *maintpb.GithubReview // on disk
+	}{
+		{
+			name: "Approved",
+			j: `{
+				"id": 123456,
+				"node_id": "548913adsafas84asdf48a",
+				"user": {
+					"login": "bradfitz", 
+					"id": 2621
+				},
+				"body": "I approve this commit",
+				"state": "APPROVED",
+				"html_url": "https://github.com/bradfitz/go-issue-mirror/pull/21",
+				"pull_request_url": "https://github.com/bradfitz/go-issue-mirror/pull/21",
+				"author_association": "CONTRIBUTOR",
+				"_links":{
+					"html":{
+						"href": "https://github.com/bradfitz/go-issue-mirror/pull/21"
+					},
+					"pull_request":{
+						"href": "https://github.com/bradfitz/go-issue-mirror/pull/21"
+					}
+				},
+				"submitted_at": "2018-03-22T00:26:48Z",
+				"commit_id" : "e4d70f7e8892f024e4ed3e8b99ee6c5a9f16e126"
+				}`,
+			e: &GitHubReview{
+				ID: 123456,
+				Actor: &GitHubUser{
+					ID:    2621,
+					Login: "bradfitz",
+				},
+				Body:             "I approve this commit",
+				State:            "APPROVED",
+				CommitID:         "e4d70f7e8892f024e4ed3e8b99ee6c5a9f16e126",
+				ActorAssociation: "CONTRIBUTOR",
+				Created:          t3339("2018-03-22T00:26:48Z"),
+			},
+			p: &maintpb.GithubReview{
+				Id:               123456,
+				ActorId:          2621,
+				Body:             "I approve this commit",
+				State:            "APPROVED",
+				CommitId:         "e4d70f7e8892f024e4ed3e8b99ee6c5a9f16e126",
+				ActorAssociation: "CONTRIBUTOR",
+				Created:          p3339("2018-03-22T00:26:48Z"),
+			},
+		},
+		{
+			name: "Extra Unknown JSON",
+			j: `{
+				"id": 123456,
+				"node_id": "548913adsafas84asdf48a",
+				"user": {
+					"login": "bradfitz", 
+					"id": 2621
+				},
+				"body": "I approve this commit",
+				"state": "APPROVED",
+				"html_url": "https://github.com/bradfitz/go-issue-mirror/pull/21",
+				"pull_request_url": "https://github.com/bradfitz/go-issue-mirror/pull/21",
+				"author_association": "CONTRIBUTOR",
+				"_links":{
+					"html":{
+						"href": "https://github.com/bradfitz/go-issue-mirror/pull/21"
+					},
+					"pull_request":{
+						"href": "https://github.com/bradfitz/go-issue-mirror/pull/21"
+					}
+				},
+				"submitted_at": "2018-03-22T00:26:48Z",
+				"commit_id" : "e4d70f7e8892f024e4ed3e8b99ee6c5a9f16e126",
+				"random_key": "some random value"
+				}`,
+			e: &GitHubReview{
+				ID: 123456,
+				Actor: &GitHubUser{
+					ID:    2621,
+					Login: "bradfitz",
+				},
+				Body:             "I approve this commit",
+				State:            "APPROVED",
+				CommitID:         "e4d70f7e8892f024e4ed3e8b99ee6c5a9f16e126",
+				ActorAssociation: "CONTRIBUTOR",
+				Created:          t3339("2018-03-22T00:26:48Z"),
+				OtherJSON:        `{"random_key":"some random value"}`,
+			},
+			p: &maintpb.GithubReview{
+				Id:               123456,
+				ActorId:          2621,
+				Body:             "I approve this commit",
+				State:            "APPROVED",
+				CommitId:         "e4d70f7e8892f024e4ed3e8b99ee6c5a9f16e126",
+				ActorAssociation: "CONTRIBUTOR",
+				Created:          p3339("2018-03-22T00:26:48Z"),
+				OtherJson:        []byte(`{"random_key":"some random value"}`),
+			},
+		},
+	}
+
+	for _, tt := range tests {
+		evts, err := parseGithubReviews(strings.NewReader("[" + tt.j + "]"))
+		if err != nil {
+			t.Errorf("%s: parse JSON: %v", tt.name, err)
+			continue
+		}
+		if len(evts) != 1 {
+			t.Errorf("%s: parse JSON = %v entries; want 1", tt.name, len(evts))
+			continue
+		}
+		gote := evts[0]
+		if !reflect.DeepEqual(gote, tt.e) {
+			t.Errorf("%s: JSON -> githubReviewEvent differs: %v", tt.name, DeepDiff(gote, tt.e))
+			continue
+		}
+
+		gotp := gote.Proto()
+		if !reflect.DeepEqual(gotp, tt.p) {
+			t.Errorf("%s: githubReviewEvent -> proto differs: %v", tt.name, DeepDiff(gotp, tt.p))
+			continue
+		}
+
+		var c Corpus
+		c.initGithub()
+		c.github.getOrCreateUserID(2621).Login = "bradfitz"
+		c.github.getOrCreateUserID(1924134).Login = "dmitshur"
+		gr := c.github.getOrCreateRepo("foowner", "bar")
+		e2 := gr.newGithubReview(gotp)
+
+		if !reflect.DeepEqual(e2, tt.e) {
+			t.Errorf("%s: proto -> githubReviewEvent differs: %v", tt.name, DeepDiff(e2, tt.e))
+			continue
+		}
+	}
+}
+
+func TestForeachRepo(t *testing.T) {
+	tests := []struct {
+		name    string
+		issue   *GitHubIssue
+		want    []string
+		wantErr error
+	}{
+		{
+			name: "Skips non-PullRequests",
+			issue: &GitHubIssue{
+				PullRequest: false,
+			},
+			want:    []string{},
+			wantErr: nil,
+		},
+		{
+			name: "Processes Multiple in Order",
+			issue: &GitHubIssue{
+				PullRequest: true,
+				reviews: map[int64]*GitHubReview{
+					0: &GitHubReview{
+						Body:    "Second",
+						Created: t3339("2018-04-22T00:26:48Z"),
+					},
+					1: &GitHubReview{
+						Body:    "First",
+						Created: t3339("2018-03-22T00:26:48Z"),
+					},
+				},
+			},
+			want:    []string{"First", "Second"},
+			wantErr: nil,
+		},
+		{
+			name: "Will Error",
+			issue: &GitHubIssue{
+				PullRequest: true,
+				reviews: map[int64]*GitHubReview{
+					0: &GitHubReview{
+						Body: "Fail",
+					},
+				},
+			},
+			want:    []string{},
+			wantErr: fmt.Errorf("Planned Failure"),
+		},
+		{
+			name: "Will Error Late",
+			issue: &GitHubIssue{
+				PullRequest: true,
+				reviews: map[int64]*GitHubReview{
+					0: &GitHubReview{
+						Body:    "First Event",
+						Created: t3339("2018-03-22T00:26:48Z"),
+					},
+					1: &GitHubReview{
+						Body:    "Fail",
+						Created: t3339("2018-04-22T00:26:48Z"),
+					},
+					2: &GitHubReview{
+						Body:    "Third Event",
+						Created: t3339("2018-05-22T00:26:48Z"),
+					},
+				},
+			},
+			want:    []string{"First Event"},
+			wantErr: fmt.Errorf("Planned Failure"),
+		}}
+
+	for _, tt := range tests {
+		got := make([]string, 0)
+
+		err := tt.issue.ForeachReview(func(r *GitHubReview) error {
+			if r.Body == "Fail" {
+				return fmt.Errorf("Planned Failure")
+			}
+			got = append(got, r.Body)
+			return nil
+		})
+
+		if !reflect.DeepEqual(tt.wantErr, err) {
+			t.Errorf("%s: ForeachReview errs differ. got: %s, want: %s", tt.name, err, tt.wantErr)
+		}
+
+		if !reflect.DeepEqual(got, tt.want) {
+			t.Errorf("%s: ForeachReview calls differ. got: %s want: %s", tt.name, got, tt.want)
+		}
+	}
+
+	t.Log("Tested Reviews")
+}
+
 func TestCacheableURL(t *testing.T) {
 	tests := []struct {
 		v    string
diff --git a/maintner/maintpb/maintner.pb.go b/maintner/maintpb/maintner.pb.go
index e30d178..c9f8a0e 100644
--- a/maintner/maintpb/maintner.pb.go
+++ b/maintner/maintpb/maintner.pb.go
@@ -17,6 +17,7 @@
 	GithubIssueEvent
 	GithubDismissedReviewEvent
 	GithubCommit
+	GithubReview
 	GithubIssueSyncStatus
 	GithubIssueCommentMutation
 	GithubUser
@@ -164,6 +165,8 @@
 	CommentStatus  *GithubIssueSyncStatus        `protobuf:"bytes,14,opt,name=comment_status,json=commentStatus" json:"comment_status,omitempty"`
 	Event          []*GithubIssueEvent           `protobuf:"bytes,26,rep,name=event" json:"event,omitempty"`
 	EventStatus    *GithubIssueSyncStatus        `protobuf:"bytes,27,opt,name=event_status,json=eventStatus" json:"event_status,omitempty"`
+	Review         []*GithubReview               `protobuf:"bytes,29,rep,name=review" json:"review,omitempty"`
+	ReviewStatus   *GithubIssueSyncStatus        `protobuf:"bytes,30,opt,name=review_status,json=reviewStatus" json:"review_status,omitempty"`
 }
 
 func (m *GithubIssueMutation) Reset()                    { *m = GithubIssueMutation{} }
@@ -360,6 +363,20 @@
 	return nil
 }
 
+func (m *GithubIssueMutation) GetReview() []*GithubReview {
+	if m != nil {
+		return m.Review
+	}
+	return nil
+}
+
+func (m *GithubIssueMutation) GetReviewStatus() *GithubIssueSyncStatus {
+	if m != nil {
+		return m.ReviewStatus
+	}
+	return nil
+}
+
 // BoolChange represents a change to a boolean value.
 type BoolChange struct {
 	Val bool `protobuf:"varint,1,opt,name=val" json:"val,omitempty"`
@@ -666,6 +683,84 @@
 	return ""
 }
 
+// Contents of a pull request review - when someone
+// comments, requests changes, or approves changes
+// on a pull request. See
+// https://developer.github.com/v3/pulls/reviews/ for more information.
+type GithubReview struct {
+	// Required:
+	Id               int64                      `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
+	ActorId          int64                      `protobuf:"varint,2,opt,name=actor_id,json=actorId" json:"actor_id,omitempty"`
+	Created          *google_protobuf.Timestamp `protobuf:"bytes,3,opt,name=created" json:"created,omitempty"`
+	Body             string                     `protobuf:"bytes,4,opt,name=body" json:"body,omitempty"`
+	State            string                     `protobuf:"bytes,5,opt,name=state" json:"state,omitempty"`
+	CommitId         string                     `protobuf:"bytes,6,opt,name=commit_id,json=commitId" json:"commit_id,omitempty"`
+	ActorAssociation string                     `protobuf:"bytes,7,opt,name=actor_association,json=actorAssociation" json:"actor_association,omitempty"`
+	// other_json is usually empty.
+	OtherJson []byte `protobuf:"bytes,8,opt,name=other_json,json=otherJson,proto3" json:"other_json,omitempty"`
+}
+
+func (m *GithubReview) Reset()                    { *m = GithubReview{} }
+func (m *GithubReview) String() string            { return proto.CompactTextString(m) }
+func (*GithubReview) ProtoMessage()               {}
+func (*GithubReview) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+
+func (m *GithubReview) GetId() int64 {
+	if m != nil {
+		return m.Id
+	}
+	return 0
+}
+
+func (m *GithubReview) GetActorId() int64 {
+	if m != nil {
+		return m.ActorId
+	}
+	return 0
+}
+
+func (m *GithubReview) GetCreated() *google_protobuf.Timestamp {
+	if m != nil {
+		return m.Created
+	}
+	return nil
+}
+
+func (m *GithubReview) GetBody() string {
+	if m != nil {
+		return m.Body
+	}
+	return ""
+}
+
+func (m *GithubReview) GetState() string {
+	if m != nil {
+		return m.State
+	}
+	return ""
+}
+
+func (m *GithubReview) GetCommitId() string {
+	if m != nil {
+		return m.CommitId
+	}
+	return ""
+}
+
+func (m *GithubReview) GetActorAssociation() string {
+	if m != nil {
+		return m.ActorAssociation
+	}
+	return ""
+}
+
+func (m *GithubReview) GetOtherJson() []byte {
+	if m != nil {
+		return m.OtherJson
+	}
+	return nil
+}
+
 // GithubIssueSyncStatus notes where syncing is at for comments
 // on an issue,
 // This mutation type is only made at/after the same top-level mutation
@@ -679,7 +774,7 @@
 func (m *GithubIssueSyncStatus) Reset()                    { *m = GithubIssueSyncStatus{} }
 func (m *GithubIssueSyncStatus) String() string            { return proto.CompactTextString(m) }
 func (*GithubIssueSyncStatus) ProtoMessage()               {}
-func (*GithubIssueSyncStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+func (*GithubIssueSyncStatus) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
 
 func (m *GithubIssueSyncStatus) GetServerDate() *google_protobuf.Timestamp {
 	if m != nil {
@@ -699,7 +794,7 @@
 func (m *GithubIssueCommentMutation) Reset()                    { *m = GithubIssueCommentMutation{} }
 func (m *GithubIssueCommentMutation) String() string            { return proto.CompactTextString(m) }
 func (*GithubIssueCommentMutation) ProtoMessage()               {}
-func (*GithubIssueCommentMutation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+func (*GithubIssueCommentMutation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
 
 func (m *GithubIssueCommentMutation) GetId() int64 {
 	if m != nil {
@@ -744,7 +839,7 @@
 func (m *GithubUser) Reset()                    { *m = GithubUser{} }
 func (m *GithubUser) String() string            { return proto.CompactTextString(m) }
 func (*GithubUser) ProtoMessage()               {}
-func (*GithubUser) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+func (*GithubUser) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
 
 func (m *GithubUser) GetId() int64 {
 	if m != nil {
@@ -768,7 +863,7 @@
 func (m *GithubTeam) Reset()                    { *m = GithubTeam{} }
 func (m *GithubTeam) String() string            { return proto.CompactTextString(m) }
 func (*GithubTeam) ProtoMessage()               {}
-func (*GithubTeam) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+func (*GithubTeam) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
 
 func (m *GithubTeam) GetId() int64 {
 	if m != nil {
@@ -794,7 +889,7 @@
 func (m *GitMutation) Reset()                    { *m = GitMutation{} }
 func (m *GitMutation) String() string            { return proto.CompactTextString(m) }
 func (*GitMutation) ProtoMessage()               {}
-func (*GitMutation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+func (*GitMutation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
 
 func (m *GitMutation) GetRepo() *GitRepo {
 	if m != nil {
@@ -819,7 +914,7 @@
 func (m *GitRepo) Reset()                    { *m = GitRepo{} }
 func (m *GitRepo) String() string            { return proto.CompactTextString(m) }
 func (*GitRepo) ProtoMessage()               {}
-func (*GitRepo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+func (*GitRepo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
 
 func (m *GitRepo) GetGoRepo() string {
 	if m != nil {
@@ -838,7 +933,7 @@
 func (m *GitCommit) Reset()                    { *m = GitCommit{} }
 func (m *GitCommit) String() string            { return proto.CompactTextString(m) }
 func (*GitCommit) ProtoMessage()               {}
-func (*GitCommit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+func (*GitCommit) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
 
 func (m *GitCommit) GetSha1() string {
 	if m != nil {
@@ -869,7 +964,7 @@
 func (m *GitDiffTree) Reset()                    { *m = GitDiffTree{} }
 func (m *GitDiffTree) String() string            { return proto.CompactTextString(m) }
 func (*GitDiffTree) ProtoMessage()               {}
-func (*GitDiffTree) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+func (*GitDiffTree) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
 
 func (m *GitDiffTree) GetFile() []*GitDiffTreeFile {
 	if m != nil {
@@ -889,7 +984,7 @@
 func (m *GitDiffTreeFile) Reset()                    { *m = GitDiffTreeFile{} }
 func (m *GitDiffTreeFile) String() string            { return proto.CompactTextString(m) }
 func (*GitDiffTreeFile) ProtoMessage()               {}
-func (*GitDiffTreeFile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+func (*GitDiffTreeFile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
 
 func (m *GitDiffTreeFile) GetFile() string {
 	if m != nil {
@@ -932,7 +1027,7 @@
 func (m *GerritMutation) Reset()                    { *m = GerritMutation{} }
 func (m *GerritMutation) String() string            { return proto.CompactTextString(m) }
 func (*GerritMutation) ProtoMessage()               {}
-func (*GerritMutation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+func (*GerritMutation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
 
 func (m *GerritMutation) GetProject() string {
 	if m != nil {
@@ -970,7 +1065,7 @@
 func (m *GitRef) Reset()                    { *m = GitRef{} }
 func (m *GitRef) String() string            { return proto.CompactTextString(m) }
 func (*GitRef) ProtoMessage()               {}
-func (*GitRef) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+func (*GitRef) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
 
 func (m *GitRef) GetRef() string {
 	if m != nil {
@@ -996,6 +1091,7 @@
 	proto.RegisterType((*GithubIssueEvent)(nil), "maintpb.GithubIssueEvent")
 	proto.RegisterType((*GithubDismissedReviewEvent)(nil), "maintpb.GithubDismissedReviewEvent")
 	proto.RegisterType((*GithubCommit)(nil), "maintpb.GithubCommit")
+	proto.RegisterType((*GithubReview)(nil), "maintpb.GithubReview")
 	proto.RegisterType((*GithubIssueSyncStatus)(nil), "maintpb.GithubIssueSyncStatus")
 	proto.RegisterType((*GithubIssueCommentMutation)(nil), "maintpb.GithubIssueCommentMutation")
 	proto.RegisterType((*GithubUser)(nil), "maintpb.GithubUser")
@@ -1012,93 +1108,99 @@
 func init() { proto.RegisterFile("maintner.proto", fileDescriptor0) }
 
 var fileDescriptor0 = []byte{
-	// 1401 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x6d, 0x6f, 0xdb, 0x36,
-	0x10, 0x86, 0xdf, 0xa5, 0xb3, 0xe3, 0xb8, 0x4c, 0x5f, 0xd8, 0xb4, 0xeb, 0x32, 0x75, 0x58, 0x83,
-	0xb6, 0x73, 0xda, 0x6e, 0xd8, 0x0a, 0x14, 0xc3, 0xd0, 0xd7, 0xc1, 0xc5, 0xda, 0x0f, 0x6c, 0xfa,
-	0x59, 0x90, 0x4d, 0x5a, 0x51, 0x27, 0x89, 0x9e, 0x44, 0xa5, 0x0b, 0xb0, 0x7d, 0xd9, 0x1f, 0x19,
-	0xb0, 0xff, 0xb4, 0xdf, 0xb1, 0xbf, 0x30, 0xf0, 0x48, 0x49, 0x8e, 0xed, 0x34, 0xed, 0xbe, 0xf1,
-	0x8e, 0xcf, 0x9d, 0x8e, 0x77, 0xc7, 0xe7, 0x28, 0x18, 0x26, 0x41, 0x94, 0xaa, 0x54, 0x64, 0xe3,
-	0x45, 0x26, 0x95, 0x24, 0x3d, 0x94, 0x17, 0xd3, 0xdd, 0x47, 0x61, 0xa4, 0x8e, 0x8a, 0xe9, 0x78,
-	0x26, 0x93, 0x83, 0x50, 0xc6, 0x41, 0x1a, 0x1e, 0x20, 0x62, 0x5a, 0xcc, 0x0f, 0x16, 0xea, 0x64,
-	0x21, 0xf2, 0x03, 0x15, 0x25, 0x22, 0x57, 0x41, 0xb2, 0xa8, 0x57, 0xc6, 0x8b, 0xf7, 0x4f, 0x03,
-	0x9c, 0x57, 0x85, 0x0a, 0x54, 0x24, 0x53, 0xf2, 0x23, 0x0c, 0x8c, 0x2f, 0x3f, 0xca, 0xf3, 0x42,
-	0xd0, 0xc6, 0x5e, 0x63, 0xbf, 0xff, 0xe0, 0xfa, 0xd8, 0x7e, 0x69, 0xfc, 0x13, 0x6e, 0x4e, 0xf4,
-	0x5e, 0x69, 0xc3, 0xfa, 0x61, 0xad, 0x24, 0x07, 0xd0, 0x35, 0x22, 0x6d, 0xa1, 0xe9, 0x95, 0x15,
-	0xd3, 0xca, 0xca, 0xc2, 0xc8, 0x57, 0xd0, 0x0a, 0x23, 0x45, 0x9b, 0x88, 0xbe, 0xb8, 0x8c, 0xae,
-	0xa0, 0x1a, 0x80, 0x8e, 0x45, 0x96, 0x45, 0x8a, 0xb6, 0x57, 0x1d, 0xa3, 0x7a, 0xc9, 0x31, 0xca,
-	0xde, 0xdf, 0x0d, 0x18, 0x9e, 0xfe, 0x26, 0xb9, 0x08, 0x1d, 0xf9, 0x3e, 0x15, 0x19, 0x1e, 0xcb,
-	0x65, 0x46, 0x20, 0x04, 0xda, 0x99, 0x58, 0x48, 0x0c, 0xc1, 0x65, 0xb8, 0x26, 0x77, 0xa1, 0x1b,
-	0x07, 0x53, 0x11, 0xe7, 0xb4, 0xb5, 0xd7, 0x5a, 0x0d, 0xec, 0xa8, 0x98, 0xfe, 0xac, 0x37, 0x99,
-	0xc5, 0x90, 0x87, 0x00, 0x49, 0x14, 0x8b, 0x5c, 0xc9, 0x54, 0xe4, 0xb4, 0x8d, 0x16, 0x74, 0xf5,
-	0xe0, 0x25, 0x80, 0x2d, 0x61, 0xbd, 0x7f, 0x1d, 0xd8, 0xd9, 0x90, 0xd3, 0x4f, 0x88, 0xf4, 0x32,
-	0x74, 0xd3, 0x22, 0x99, 0x8a, 0x0c, 0x13, 0xde, 0x61, 0x56, 0x22, 0xd7, 0xc0, 0x4d, 0xa5, 0xf2,
-	0xc5, 0x6f, 0x51, 0xae, 0xe8, 0xd6, 0x5e, 0x63, 0xdf, 0x61, 0x4e, 0x2a, 0xd5, 0x73, 0x2d, 0x93,
-	0x21, 0x34, 0x23, 0x4e, 0x07, 0x7b, 0x8d, 0xfd, 0x16, 0x6b, 0x46, 0x9c, 0xdc, 0x82, 0x76, 0x91,
-	0x8b, 0xcc, 0xa6, 0x76, 0x67, 0x25, 0xf4, 0xb7, 0xb9, 0xc8, 0x18, 0x02, 0xc8, 0x7d, 0x70, 0x83,
-	0x3c, 0x8f, 0xc2, 0x54, 0x88, 0x9c, 0x02, 0x1e, 0x74, 0x23, 0xba, 0x46, 0x91, 0x3b, 0x70, 0x81,
-	0x8b, 0x58, 0x28, 0xc1, 0xfd, 0xda, 0xb4, 0xbf, 0xd7, 0xda, 0x6f, 0xb1, 0x91, 0xdd, 0x78, 0x5c,
-	0x81, 0xbf, 0x85, 0xde, 0x2c, 0x13, 0x81, 0x12, 0x9c, 0x76, 0x30, 0x96, 0xdd, 0x71, 0x28, 0x65,
-	0x18, 0x8b, 0x71, 0xd9, 0xd0, 0xe3, 0xc3, 0xb2, 0x7f, 0x59, 0x09, 0xd5, 0x56, 0xc5, 0x82, 0xa3,
-	0x55, 0xf7, 0x7c, 0x2b, 0x0b, 0xd5, 0xd9, 0x9c, 0x4a, 0x7e, 0x42, 0x7b, 0x26, 0x9b, 0x7a, 0xad,
-	0xf3, 0xae, 0x22, 0x15, 0x0b, 0xea, 0x9a, 0xbc, 0xa3, 0x40, 0xbe, 0x80, 0x41, 0x2a, 0xfd, 0xaa,
-	0x6c, 0x74, 0x1b, 0xd3, 0xd9, 0x4f, 0x65, 0x55, 0x54, 0x0d, 0xa9, 0xf6, 0xfd, 0x88, 0xd3, 0x11,
-	0xe6, 0xb6, 0x5f, 0xe9, 0x26, 0x9c, 0xdc, 0x84, 0xad, 0x1a, 0x92, 0x16, 0x09, 0xbd, 0x80, 0x98,
-	0xda, 0xee, 0x75, 0x91, 0x90, 0x5b, 0xb0, 0x5d, 0x83, 0x4c, 0x28, 0x04, 0x43, 0x19, 0x56, 0xea,
-	0x43, 0x8c, 0xe9, 0x0e, 0x74, 0x67, 0xb1, 0xcc, 0x05, 0xa7, 0x3b, 0x2b, 0x45, 0x7b, 0x22, 0x65,
-	0xfc, 0xf4, 0x28, 0x48, 0x43, 0xc1, 0x2c, 0x44, 0x83, 0x63, 0x39, 0xfb, 0x45, 0x70, 0x7a, 0xf5,
-	0x03, 0x60, 0x03, 0xd1, 0x47, 0x59, 0x14, 0x71, 0xec, 0x67, 0xe2, 0xd7, 0x42, 0xe4, 0x8a, 0x5e,
-	0x37, 0xa7, 0xd5, 0x3a, 0x66, 0x54, 0xe4, 0x7b, 0x70, 0x8d, 0x67, 0x3f, 0x50, 0xf4, 0xd2, 0xb9,
-	0x29, 0x77, 0x0c, 0xf8, 0xb1, 0x22, 0xf7, 0x2a, 0xc3, 0xe9, 0x09, 0xbd, 0x7c, 0x76, 0xb7, 0x59,
-	0x8b, 0x27, 0x27, 0x3a, 0x9a, 0x4c, 0x24, 0xf2, 0x58, 0xf8, 0x78, 0xd9, 0xe8, 0x15, 0xec, 0x9c,
-	0xbe, 0xd1, 0xe1, 0x35, 0xc4, 0xa6, 0xe4, 0xdc, 0xee, 0xd3, 0x0f, 0xdc, 0x57, 0x27, 0xe0, 0xdc,
-	0x98, 0xfc, 0x00, 0xbd, 0x99, 0x4c, 0x12, 0x91, 0x2a, 0xea, 0xa0, 0xc1, 0xcd, 0x4d, 0x14, 0xf7,
-	0xd4, 0x40, 0x2a, 0x6a, 0x29, 0x6d, 0xc8, 0x73, 0x18, 0xda, 0xa5, 0x9f, 0xab, 0x40, 0x15, 0x39,
-	0x1d, 0xe2, 0x59, 0x6e, 0x6c, 0xf2, 0xf2, 0xe6, 0x24, 0x9d, 0xbd, 0x41, 0x14, 0xdb, 0xb2, 0x56,
-	0x46, 0x24, 0x07, 0xd0, 0x11, 0xc7, 0x3a, 0x86, 0x5d, 0x8c, 0xe1, 0xea, 0x26, 0xeb, 0xe7, 0x1a,
-	0xc0, 0x0c, 0x8e, 0x3c, 0x86, 0x01, 0x2e, 0xca, 0xaf, 0x5e, 0xfb, 0xa8, 0xaf, 0xf6, 0xd1, 0xc6,
-	0x08, 0xde, 0x0d, 0x80, 0xba, 0xe6, 0x64, 0x04, 0xad, 0xe3, 0x20, 0x46, 0x96, 0x71, 0x98, 0x5e,
-	0x7a, 0xf7, 0xa1, 0xbf, 0x94, 0x32, 0xcb, 0x14, 0x8d, 0x8a, 0x29, 0x08, 0xb4, 0xd3, 0x20, 0x11,
-	0x25, 0x05, 0xe9, 0xb5, 0xf7, 0x3b, 0x6c, 0xaf, 0x70, 0xdc, 0x9a, 0x59, 0x75, 0xaf, 0x9a, 0xcb,
-	0xf7, 0xaa, 0xee, 0xe1, 0xd6, 0xf9, 0x3d, 0x5c, 0x13, 0x5d, 0x1b, 0xdd, 0x5a, 0xc9, 0xfb, 0xab,
-	0x03, 0xa3, 0xd5, 0x7c, 0xad, 0x7d, 0xff, 0x33, 0x00, 0x93, 0x38, 0x3d, 0x0d, 0x6d, 0x10, 0x2e,
-	0x6a, 0x0e, 0x4f, 0x16, 0x82, 0x5c, 0x05, 0x27, 0x98, 0x29, 0x99, 0xe9, 0x9b, 0xdb, 0x42, 0xa3,
-	0x1e, 0xca, 0x13, 0xbe, 0xcc, 0x48, 0xed, 0x8f, 0x67, 0xa4, 0xdb, 0xd0, 0x31, 0xed, 0xd8, 0x59,
-	0x9f, 0x6b, 0x55, 0x3b, 0x1a, 0x08, 0xf9, 0x0e, 0xdc, 0x9a, 0x5a, 0x0c, 0x7f, 0x9d, 0x3d, 0x3c,
-	0x6a, 0x28, 0xf9, 0x1c, 0xfa, 0x25, 0xa1, 0xea, 0xb8, 0x7b, 0x18, 0x37, 0x94, 0xaa, 0x09, 0x5f,
-	0x02, 0xe0, 0xc1, 0x9c, 0x53, 0x00, 0x7d, 0xb6, 0xaf, 0xa1, 0xab, 0x1b, 0x32, 0x52, 0x48, 0x77,
-	0xfd, 0x07, 0x97, 0x56, 0x3e, 0xfb, 0x14, 0x37, 0x99, 0x05, 0x69, 0x7f, 0x99, 0xd0, 0x15, 0xf7,
-	0xe7, 0x99, 0x4c, 0x68, 0x1f, 0xb3, 0x08, 0x46, 0xf5, 0x22, 0x93, 0x89, 0x9e, 0x39, 0x16, 0xa0,
-	0x24, 0x4e, 0x17, 0x97, 0x39, 0x46, 0x71, 0x28, 0x8d, 0xf5, 0x71, 0x24, 0xde, 0x9b, 0x68, 0xb6,
-	0x4c, 0x34, 0xa5, 0x6a, 0xc2, 0xc9, 0x18, 0x76, 0x8c, 0x54, 0x32, 0x8f, 0x01, 0x0e, 0x11, 0x78,
-	0xc1, 0x6c, 0xb1, 0x72, 0x67, 0xc2, 0xc9, 0x43, 0xd8, 0x52, 0x22, 0x48, 0xfc, 0xd2, 0x05, 0x72,
-	0xee, 0x3a, 0x9f, 0x1c, 0x8a, 0x20, 0x61, 0x03, 0x8d, 0x64, 0x16, 0x48, 0x5e, 0xc3, 0x88, 0x47,
-	0x79, 0x12, 0xe5, 0x9a, 0x88, 0x8c, 0x39, 0x72, 0xfa, 0x3a, 0x0d, 0x3c, 0x2b, 0x61, 0xc6, 0xd6,
-	0x5c, 0xc6, 0x6d, 0x7e, 0x5a, 0xab, 0xbb, 0x4b, 0xaa, 0x23, 0x91, 0xf9, 0xef, 0x72, 0x99, 0x52,
-	0xd8, 0x6b, 0xec, 0x0f, 0x98, 0x8b, 0x9a, 0x97, 0xb9, 0x4c, 0xbd, 0x3f, 0x1b, 0xb0, 0x7b, 0xb6,
-	0x3b, 0x93, 0x35, 0x3c, 0x77, 0xd5, 0xb2, 0x8e, 0x51, 0x4c, 0x38, 0x4e, 0x4f, 0x63, 0x14, 0xc4,
-	0x7e, 0x22, 0xf2, 0x3c, 0x08, 0x05, 0xb6, 0xa8, 0xcb, 0x46, 0xd5, 0xc6, 0x2b, 0xa3, 0xd7, 0xb7,
-	0x4c, 0x13, 0x83, 0xc0, 0x4e, 0x75, 0x99, 0x11, 0x5e, 0xb6, 0x9d, 0xe6, 0xa8, 0xe5, 0xbd, 0x85,
-	0xc1, 0x72, 0x51, 0x3f, 0xe1, 0x85, 0x71, 0x0d, 0x5c, 0xd3, 0x00, 0xe5, 0xed, 0x70, 0x99, 0x63,
-	0x14, 0x13, 0xee, 0x1d, 0xc2, 0xa5, 0x8d, 0xa4, 0x43, 0x1e, 0x41, 0x3f, 0x17, 0xd9, 0xb1, 0xc8,
-	0x7c, 0x3d, 0x6d, 0xed, 0x43, 0xf2, 0x43, 0x77, 0x07, 0x0c, 0xfc, 0x59, 0xa0, 0x84, 0x7e, 0x93,
-	0xee, 0x9e, 0xcd, 0xc3, 0x6b, 0xb7, 0xbb, 0x7c, 0xbe, 0x34, 0xcf, 0x7b, 0xbe, 0x94, 0x23, 0xbf,
-	0xb5, 0x34, 0xf2, 0xff, 0xdf, 0x05, 0x5f, 0x7a, 0x72, 0x74, 0x3e, 0xfa, 0xc9, 0xe1, 0x3d, 0x00,
-	0xa8, 0x63, 0xda, 0x44, 0x92, 0xb1, 0x0c, 0xa3, 0xb4, 0x24, 0x49, 0x14, 0xbc, 0x7b, 0xa5, 0x8d,
-	0x6e, 0xe4, 0x4d, 0x7c, 0x9c, 0xc7, 0x45, 0x58, 0x16, 0x4c, 0xaf, 0x3d, 0x1f, 0x29, 0xbc, 0xca,
-	0xd6, 0x97, 0xb6, 0xa6, 0xa6, 0x04, 0xa3, 0xe5, 0xec, 0x30, 0xb1, 0x90, 0xb6, 0xca, 0xb7, 0x2b,
-	0x2e, 0x30, 0x59, 0x24, 0xcb, 0xb8, 0xd3, 0x44, 0xe0, 0x79, 0xd0, 0xb3, 0xc6, 0xe4, 0x0a, 0xf4,
-	0x42, 0xe9, 0x57, 0xfe, 0x5d, 0xd6, 0x0d, 0xa5, 0xde, 0xf0, 0x38, 0xb8, 0x95, 0x21, 0x46, 0x79,
-	0x14, 0xdc, 0xb7, 0x10, 0x5c, 0xeb, 0xd1, 0x93, 0x05, 0xef, 0xf1, 0x6b, 0x03, 0xa6, 0x97, 0x7a,
-	0x8e, 0xf3, 0x68, 0x3e, 0xf7, 0x55, 0x26, 0x84, 0x9d, 0x08, 0xa7, 0x88, 0xf3, 0x59, 0x34, 0x9f,
-	0x1f, 0x66, 0x42, 0x30, 0x87, 0xdb, 0x95, 0xf7, 0x08, 0x8f, 0x5a, 0x6e, 0x90, 0xbb, 0xd0, 0x9e,
-	0x47, 0xb1, 0xee, 0xb6, 0xb5, 0x27, 0x78, 0x89, 0x79, 0x11, 0xc5, 0x82, 0x21, 0xca, 0x4b, 0x70,
-	0x6e, 0x2d, 0x6f, 0xe8, 0x40, 0xad, 0x03, 0x0c, 0x54, 0xaf, 0x75, 0x59, 0x02, 0xce, 0x05, 0xc7,
-	0x50, 0x5b, 0xcc, 0x08, 0x84, 0x42, 0xcf, 0xbe, 0x5e, 0xcb, 0x89, 0x61, 0x45, 0x3d, 0xa8, 0xa6,
-	0x51, 0x1a, 0x64, 0x27, 0xd8, 0x4f, 0x0e, 0xb3, 0x92, 0xf7, 0x07, 0x0c, 0x4f, 0xff, 0xaa, 0x68,
-	0x1f, 0x8b, 0x4c, 0xbe, 0x13, 0x33, 0x65, 0x3f, 0x58, 0x8a, 0xe4, 0xae, 0x79, 0x9f, 0x44, 0x2a,
-	0xa7, 0x4d, 0x3c, 0xcb, 0xa6, 0x72, 0x94, 0x10, 0x72, 0x53, 0x57, 0x78, 0x5e, 0xfe, 0xab, 0x6c,
-	0x9f, 0xae, 0xf0, 0x9c, 0xe1, 0xa6, 0x37, 0x86, 0xae, 0x91, 0x31, 0xf3, 0x62, 0x6e, 0x3f, 0xa9,
-	0x97, 0x55, 0x7d, 0x9a, 0x75, 0x7d, 0xa6, 0x5d, 0x6c, 0xe4, 0x6f, 0xfe, 0x0b, 0x00, 0x00, 0xff,
-	0xff, 0xec, 0x37, 0x4a, 0xa0, 0x76, 0x0e, 0x00, 0x00,
+	// 1489 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xeb, 0x6e, 0xdb, 0xb6,
+	0x17, 0x87, 0xef, 0xd2, 0xb1, 0xe3, 0xb8, 0x4c, 0x2f, 0x6c, 0x7a, 0xf9, 0xe7, 0xaf, 0x0e, 0x6b,
+	0xd0, 0x8b, 0xd3, 0x76, 0xc3, 0x56, 0xa0, 0x18, 0x86, 0x34, 0x6d, 0x07, 0x17, 0x6b, 0x3f, 0xb0,
+	0xe9, 0x67, 0x41, 0xb6, 0x68, 0x47, 0x9d, 0x24, 0x7a, 0x12, 0x9d, 0x2e, 0xc0, 0xf6, 0xa5, 0x2f,
+	0x32, 0x60, 0xef, 0xb4, 0x27, 0xd8, 0x8b, 0x0c, 0x3c, 0x24, 0x25, 0xd9, 0x71, 0x9a, 0x74, 0xdf,
+	0x78, 0xce, 0xf9, 0x1d, 0xf2, 0xf0, 0x5c, 0x49, 0xe8, 0x27, 0x41, 0x94, 0xca, 0x94, 0x67, 0xc3,
+	0x79, 0x26, 0xa4, 0x20, 0x1d, 0xa4, 0xe7, 0xe3, 0xed, 0x67, 0xb3, 0x48, 0x1e, 0x2d, 0xc6, 0xc3,
+	0x89, 0x48, 0xf6, 0x66, 0x22, 0x0e, 0xd2, 0xd9, 0x1e, 0x22, 0xc6, 0x8b, 0xe9, 0xde, 0x5c, 0x9e,
+	0xcc, 0x79, 0xbe, 0x27, 0xa3, 0x84, 0xe7, 0x32, 0x48, 0xe6, 0xe5, 0x4a, 0xef, 0xe2, 0xfd, 0x5d,
+	0x03, 0xe7, 0xcd, 0x42, 0x06, 0x32, 0x12, 0x29, 0xf9, 0x11, 0x7a, 0x7a, 0x2f, 0x3f, 0xca, 0xf3,
+	0x05, 0xa7, 0xb5, 0x9d, 0xda, 0x6e, 0xf7, 0xc9, 0xcd, 0xa1, 0x39, 0x69, 0xf8, 0x13, 0x0a, 0x47,
+	0x4a, 0x66, 0x75, 0x58, 0x77, 0x56, 0x32, 0xc9, 0x1e, 0xb4, 0x35, 0x49, 0x1b, 0xa8, 0x7a, 0x6d,
+	0x45, 0xb5, 0xd0, 0x32, 0x30, 0xf2, 0x35, 0x34, 0x66, 0x91, 0xa4, 0x75, 0x44, 0x5f, 0xae, 0xa2,
+	0x0b, 0xa8, 0x02, 0xe0, 0xc6, 0x3c, 0xcb, 0x22, 0x49, 0x9b, 0xab, 0x1b, 0x23, 0xbb, 0xb2, 0x31,
+	0xd2, 0xde, 0x5f, 0x35, 0xe8, 0x2f, 0x9f, 0x49, 0x2e, 0x43, 0x4b, 0x7c, 0x4c, 0x79, 0x86, 0xd7,
+	0x72, 0x99, 0x26, 0x08, 0x81, 0x66, 0xc6, 0xe7, 0x02, 0x4d, 0x70, 0x19, 0xae, 0xc9, 0x03, 0x68,
+	0xc7, 0xc1, 0x98, 0xc7, 0x39, 0x6d, 0xec, 0x34, 0x56, 0x0d, 0x3b, 0x5a, 0x8c, 0x7f, 0x56, 0x42,
+	0x66, 0x30, 0xe4, 0x29, 0x40, 0x12, 0xc5, 0x3c, 0x97, 0x22, 0xe5, 0x39, 0x6d, 0xa2, 0x06, 0x5d,
+	0xbd, 0xb8, 0x05, 0xb0, 0x0a, 0xd6, 0xfb, 0xc7, 0x85, 0xad, 0x35, 0x3e, 0xfd, 0x02, 0x4b, 0xaf,
+	0x42, 0x3b, 0x5d, 0x24, 0x63, 0x9e, 0xa1, 0xc3, 0x5b, 0xcc, 0x50, 0xe4, 0x06, 0xb8, 0xa9, 0x90,
+	0x3e, 0xff, 0x2d, 0xca, 0x25, 0xdd, 0xd8, 0xa9, 0xed, 0x3a, 0xcc, 0x49, 0x85, 0x7c, 0xa9, 0x68,
+	0xd2, 0x87, 0x7a, 0x14, 0xd2, 0xde, 0x4e, 0x6d, 0xb7, 0xc1, 0xea, 0x51, 0x48, 0xee, 0x42, 0x73,
+	0x91, 0xf3, 0xcc, 0xb8, 0x76, 0x6b, 0xc5, 0xf4, 0xf7, 0x39, 0xcf, 0x18, 0x02, 0xc8, 0x63, 0x70,
+	0x83, 0x3c, 0x8f, 0x66, 0x29, 0xe7, 0x39, 0x05, 0xbc, 0xe8, 0x5a, 0x74, 0x89, 0x22, 0xf7, 0xe1,
+	0x52, 0xc8, 0x63, 0x2e, 0x79, 0xe8, 0x97, 0xaa, 0xdd, 0x9d, 0xc6, 0x6e, 0x83, 0x0d, 0x8c, 0x60,
+	0xbf, 0x00, 0x7f, 0x0b, 0x9d, 0x49, 0xc6, 0x03, 0xc9, 0x43, 0xda, 0x42, 0x5b, 0xb6, 0x87, 0x33,
+	0x21, 0x66, 0x31, 0x1f, 0xda, 0x84, 0x1e, 0x1e, 0xda, 0xfc, 0x65, 0x16, 0xaa, 0xb4, 0x16, 0xf3,
+	0x10, 0xb5, 0xda, 0xe7, 0x6b, 0x19, 0xa8, 0xf2, 0xe6, 0x58, 0x84, 0x27, 0xb4, 0xa3, 0xbd, 0xa9,
+	0xd6, 0xca, 0xef, 0x32, 0x92, 0x31, 0xa7, 0xae, 0xf6, 0x3b, 0x12, 0xe4, 0xff, 0xd0, 0x4b, 0x85,
+	0x5f, 0x84, 0x8d, 0x6e, 0xa2, 0x3b, 0xbb, 0xa9, 0x28, 0x82, 0xaa, 0x20, 0x85, 0xdc, 0x8f, 0x42,
+	0x3a, 0x40, 0xdf, 0x76, 0x0b, 0xde, 0x28, 0x24, 0x77, 0x60, 0xa3, 0x84, 0xa4, 0x8b, 0x84, 0x5e,
+	0x42, 0x4c, 0xa9, 0xf7, 0x76, 0x91, 0x90, 0xbb, 0xb0, 0x59, 0x82, 0xb4, 0x29, 0x04, 0x4d, 0xe9,
+	0x17, 0xec, 0x43, 0xb4, 0xe9, 0x3e, 0xb4, 0x27, 0xb1, 0xc8, 0x79, 0x48, 0xb7, 0x56, 0x82, 0xf6,
+	0x5c, 0x88, 0xf8, 0xe0, 0x28, 0x48, 0x67, 0x9c, 0x19, 0x88, 0x02, 0xc7, 0x62, 0xf2, 0x0b, 0x0f,
+	0xe9, 0xf5, 0xcf, 0x80, 0x35, 0x44, 0x5d, 0x65, 0xbe, 0x88, 0x63, 0x3f, 0xe3, 0xbf, 0x2e, 0x78,
+	0x2e, 0xe9, 0x4d, 0x7d, 0x5b, 0xc5, 0x63, 0x9a, 0x45, 0xbe, 0x07, 0x57, 0xef, 0xec, 0x07, 0x92,
+	0x5e, 0x39, 0xd7, 0xe5, 0x8e, 0x06, 0xef, 0x4b, 0xf2, 0xa8, 0x50, 0x1c, 0x9f, 0xd0, 0xab, 0x67,
+	0x67, 0x9b, 0xd1, 0x78, 0x7e, 0xa2, 0xac, 0xc9, 0x78, 0x22, 0x8e, 0xb9, 0x8f, 0xc5, 0x46, 0xaf,
+	0x61, 0xe6, 0x74, 0x35, 0x0f, 0xcb, 0x10, 0x93, 0x32, 0x0c, 0x8d, 0x9c, 0x7e, 0xa6, 0x5e, 0x9d,
+	0x20, 0x0c, 0xb5, 0xca, 0x0f, 0xd0, 0x99, 0x88, 0x24, 0xe1, 0xa9, 0xa4, 0x0e, 0x2a, 0xdc, 0x59,
+	0xd7, 0xe2, 0x0e, 0x34, 0xa4, 0x68, 0x2d, 0x56, 0x87, 0xbc, 0x84, 0xbe, 0x59, 0xfa, 0xb9, 0x0c,
+	0xe4, 0x22, 0xa7, 0x7d, 0xbc, 0xcb, 0xed, 0x75, 0xbb, 0xbc, 0x3b, 0x49, 0x27, 0xef, 0x10, 0xc5,
+	0x36, 0x8c, 0x96, 0x26, 0xc9, 0x1e, 0xb4, 0xf8, 0xb1, 0xb2, 0x61, 0x1b, 0x6d, 0xb8, 0xbe, 0x4e,
+	0xfb, 0xa5, 0x02, 0x30, 0x8d, 0x23, 0xfb, 0xd0, 0xc3, 0x85, 0x3d, 0xf5, 0xc6, 0x85, 0x4e, 0xed,
+	0xa2, 0x8e, 0x39, 0xf3, 0x21, 0xb4, 0x33, 0x7e, 0x1c, 0xf1, 0x8f, 0xf4, 0x16, 0x1e, 0x7a, 0x65,
+	0x45, 0x99, 0xa1, 0x90, 0x19, 0x10, 0x39, 0x80, 0x0d, 0xbd, 0xb2, 0x47, 0xde, 0xbe, 0xd0, 0x91,
+	0x3d, 0xad, 0xa4, 0x29, 0xef, 0x36, 0x40, 0x99, 0x67, 0x64, 0x00, 0x8d, 0xe3, 0x20, 0xc6, 0xce,
+	0xe6, 0x30, 0xb5, 0xf4, 0x1e, 0x43, 0xb7, 0x12, 0x26, 0xd3, 0x9d, 0x6a, 0x45, 0x77, 0x22, 0xd0,
+	0x4c, 0x83, 0x84, 0xdb, 0xb6, 0xa7, 0xd6, 0xde, 0xef, 0xb0, 0xb9, 0xd2, 0x57, 0x4f, 0xa9, 0x15,
+	0xb5, 0x5c, 0xaf, 0xd6, 0x72, 0x59, 0x37, 0x8d, 0xf3, 0xeb, 0xa6, 0x6c, 0xae, 0x4d, 0xdc, 0xd6,
+	0x50, 0xde, 0x9f, 0x2d, 0x18, 0xac, 0xc6, 0xe8, 0xd4, 0xf9, 0xb7, 0x00, 0x74, 0xb0, 0xd4, 0x04,
+	0x36, 0x46, 0xb8, 0xc8, 0x39, 0x3c, 0x99, 0x73, 0x72, 0x1d, 0x9c, 0x60, 0x22, 0x45, 0xa6, 0xba,
+	0x45, 0x03, 0x95, 0x3a, 0x48, 0x8f, 0xc2, 0x6a, 0x17, 0x6c, 0x5e, 0xbc, 0x0b, 0xde, 0x83, 0x96,
+	0x2e, 0x81, 0xd6, 0xe9, 0x59, 0x5a, 0x94, 0x80, 0x86, 0x90, 0xef, 0xc0, 0x2d, 0xdb, 0x99, 0xee,
+	0x99, 0x67, 0x0f, 0xac, 0x12, 0x4a, 0xfe, 0x07, 0x5d, 0xdb, 0xc4, 0x95, 0xdd, 0x1d, 0xb4, 0x1b,
+	0x2c, 0x6b, 0x14, 0x56, 0x00, 0x78, 0x31, 0x67, 0x09, 0xa0, 0xee, 0xf6, 0x10, 0xda, 0xaa, 0x08,
+	0x22, 0x89, 0x2d, 0xf6, 0x74, 0xfe, 0x1d, 0xa0, 0x90, 0x19, 0x90, 0xda, 0x2f, 0xe3, 0x2a, 0xe2,
+	0xfe, 0x34, 0x13, 0x09, 0xed, 0xa2, 0x17, 0x41, 0xb3, 0x5e, 0x65, 0x22, 0x51, 0x73, 0xce, 0x00,
+	0xa4, 0xc0, 0x89, 0xe6, 0x32, 0x47, 0x33, 0x0e, 0x85, 0xd6, 0x56, 0x89, 0xa8, 0xad, 0xd9, 0xd0,
+	0xd6, 0x58, 0xd6, 0x28, 0x24, 0x43, 0xd8, 0x32, 0xe9, 0x6d, 0xba, 0x9d, 0x06, 0xf6, 0x11, 0x78,
+	0x49, 0x8b, 0x98, 0x95, 0x8c, 0x42, 0xf2, 0x14, 0x36, 0x24, 0x0f, 0x12, 0xdf, 0x6e, 0x81, 0x7d,
+	0xfe, 0x74, 0x0f, 0x3b, 0xe4, 0x41, 0xc2, 0x7a, 0x0a, 0xc9, 0x0c, 0x90, 0xbc, 0x85, 0x41, 0x18,
+	0xe5, 0x49, 0x94, 0xab, 0xe6, 0x67, 0x2a, 0x70, 0x13, 0x95, 0x57, 0x5b, 0xcf, 0x0b, 0x0b, 0xd3,
+	0xba, 0xba, 0x01, 0x6c, 0x86, 0xcb, 0x5c, 0x95, 0x5d, 0x42, 0x1e, 0xf1, 0xcc, 0xff, 0x90, 0x8b,
+	0x94, 0xc2, 0x4e, 0x6d, 0xb7, 0xc7, 0x5c, 0xe4, 0xbc, 0xce, 0x45, 0xea, 0x7d, 0xaa, 0xc1, 0xf6,
+	0xd9, 0xdb, 0x69, 0xaf, 0xe1, 0xbd, 0x8b, 0x94, 0x75, 0x34, 0x63, 0x14, 0xe2, 0xc4, 0xd6, 0x4a,
+	0x41, 0xec, 0x27, 0x3c, 0xcf, 0x83, 0x19, 0xc7, 0x14, 0x75, 0xd9, 0xa0, 0x10, 0xbc, 0xd1, 0x7c,
+	0x55, 0x65, 0xaa, 0x33, 0x70, 0xcc, 0x54, 0x97, 0x69, 0xe2, 0x75, 0xd3, 0xa9, 0x0f, 0x1a, 0xde,
+	0x7b, 0xe8, 0x55, 0x83, 0xfa, 0x05, 0xaf, 0x9a, 0x1b, 0xe0, 0xea, 0x04, 0xb0, 0xd5, 0xe1, 0x32,
+	0x47, 0x33, 0x46, 0xa1, 0xf7, 0xa9, 0x6e, 0xf7, 0x35, 0xbe, 0x58, 0xad, 0xbc, 0x6a, 0x69, 0xd5,
+	0xcf, 0x2c, 0xad, 0xc6, 0xc5, 0x4b, 0xcb, 0x3e, 0x15, 0x9a, 0xcb, 0x4f, 0x05, 0x7d, 0xf1, 0x56,
+	0xe5, 0xe2, 0xcb, 0x86, 0xb7, 0x97, 0x0d, 0x57, 0x8e, 0xd5, 0x76, 0x05, 0x79, 0x2e, 0x26, 0x11,
+	0x0e, 0x15, 0xf3, 0xfc, 0x18, 0xa0, 0x60, 0xbf, 0xe4, 0xaf, 0x04, 0xd8, 0x59, 0x0d, 0xf0, 0x21,
+	0x5c, 0x59, 0xdb, 0x7a, 0xc9, 0x33, 0xe8, 0xe6, 0x3c, 0x3b, 0xe6, 0x99, 0xaf, 0x9e, 0x39, 0xe6,
+	0x05, 0xff, 0xb9, 0x5b, 0x82, 0x86, 0xbf, 0x08, 0x24, 0x57, 0x9f, 0x81, 0xed, 0xb3, 0x07, 0xe0,
+	0x29, 0x47, 0xdb, 0x77, 0x63, 0xfd, 0xbc, 0x77, 0xa3, 0x75, 0x60, 0xa3, 0xe2, 0xc0, 0xff, 0xd6,
+	0xe5, 0x2a, 0x6f, 0xbd, 0xd6, 0x85, 0xdf, 0x7a, 0xde, 0x13, 0x80, 0xd2, 0xa6, 0x75, 0x93, 0x22,
+	0x16, 0xb3, 0x28, 0xb5, 0x93, 0x02, 0x09, 0xef, 0x91, 0xd5, 0x51, 0xd5, 0xbc, 0x6e, 0x28, 0xe5,
+	0xf1, 0x62, 0x66, 0xb3, 0x56, 0xad, 0x3d, 0x1f, 0xe7, 0x58, 0xe1, 0xad, 0xaf, 0x4c, 0x62, 0xeb,
+	0x10, 0x0c, 0xaa, 0xde, 0x61, 0x7c, 0x2e, 0x4c, 0xaa, 0xdf, 0x2b, 0x1a, 0xa2, 0xf6, 0x22, 0xa9,
+	0xe2, 0x96, 0xbb, 0xa1, 0xe7, 0x41, 0xc7, 0x28, 0x93, 0x6b, 0xd0, 0x99, 0x09, 0xbf, 0xd8, 0xdf,
+	0x65, 0xed, 0x99, 0x50, 0x02, 0x2f, 0x04, 0xb7, 0x50, 0x44, 0x2b, 0x8f, 0x82, 0xc7, 0x06, 0x82,
+	0x6b, 0x35, 0x7f, 0xb3, 0xe0, 0x23, 0x9e, 0xd6, 0x63, 0x6a, 0xa9, 0x1e, 0x50, 0x61, 0x34, 0x9d,
+	0xfa, 0x32, 0xe3, 0xdc, 0x94, 0xc5, 0xd2, 0xf4, 0x78, 0x11, 0x4d, 0xa7, 0x87, 0x19, 0xe7, 0xcc,
+	0x09, 0xcd, 0xca, 0x7b, 0x86, 0x57, 0xb5, 0x02, 0xf2, 0x00, 0x9a, 0xd3, 0x28, 0x56, 0xd9, 0x76,
+	0xea, 0xef, 0x63, 0x31, 0xaf, 0xa2, 0x98, 0x33, 0x44, 0x79, 0x09, 0x0e, 0xef, 0xaa, 0x40, 0x19,
+	0x6a, 0x36, 0x40, 0x43, 0xd5, 0x5a, 0x85, 0x25, 0x08, 0x43, 0x6e, 0x6b, 0x58, 0x13, 0x84, 0x42,
+	0xc7, 0x7c, 0x1b, 0xec, 0xd8, 0x34, 0xa4, 0x9a, 0xd6, 0xe3, 0x28, 0x0d, 0x32, 0x5d, 0xa7, 0x0e,
+	0x33, 0x94, 0xf7, 0x07, 0xf4, 0x97, 0xff, 0x88, 0x6a, 0x8f, 0x79, 0x26, 0x3e, 0xf0, 0x89, 0x34,
+	0x07, 0x5a, 0x92, 0x3c, 0xd0, 0x0f, 0xc3, 0x48, 0xe6, 0xb4, 0x8e, 0x77, 0x59, 0x17, 0x0e, 0x0b,
+	0x21, 0x77, 0x54, 0x84, 0xa7, 0xf6, 0x93, 0xb8, 0xb9, 0x1c, 0xe1, 0x29, 0x43, 0xa1, 0x37, 0x84,
+	0xb6, 0xa6, 0xd1, 0xf3, 0x7c, 0x6a, 0x8e, 0x54, 0xcb, 0x22, 0x3e, 0xf5, 0x32, 0x3e, 0xe3, 0x36,
+	0x26, 0xf2, 0x37, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x46, 0xe0, 0x26, 0x49, 0xef, 0x0f, 0x00,
+	0x00,
 }
diff --git a/maintner/maintpb/maintner.proto b/maintner/maintpb/maintner.proto
index 0d34baa..7ba7723 100644
--- a/maintner/maintpb/maintner.proto
+++ b/maintner/maintpb/maintner.proto
@@ -73,6 +73,11 @@
 
   repeated GithubIssueEvent event = 26;  // new events to add
   GithubIssueSyncStatus event_status = 27;
+
+  repeated GithubReview review = 29;  // new reviews to add
+  GithubIssueSyncStatus review_status = 30;
+
+  // Next tag: 31
 }
 
 // BoolChange represents a change to a boolean value.
@@ -160,6 +165,27 @@
   string commit_id = 3; // "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
 }
 
+// Contents of a pull request review - when someone
+// comments, requests changes, or approves changes
+// on a pull request. See
+// https://developer.github.com/v3/pulls/reviews/ for more information.
+message GithubReview {
+  // Required:
+  int64 id = 1;
+
+  int64 actor_id = 2;
+  google.protobuf.Timestamp created = 3;  // time of the event
+  string body = 4;                        // body of the review comment
+  string state = 5;  // COMMENTED, APPROVED, CHANGES_REQUESTED
+  string commit_id = 6;
+  string actor_association = 7;
+
+  // other_json is usually empty.
+  bytes other_json = 8;
+
+  // Next tag: 9
+}
+
 // GithubIssueSyncStatus notes where syncing is at for comments
 // on an issue,
 // This mutation type is only made at/after the same top-level mutation
