Merge "services/tidyable: new tidyable service interface"
diff --git a/services/application/application/impl_test.go b/services/application/application/impl_test.go
index 87c1074..89df3bb 100644
--- a/services/application/application/impl_test.go
+++ b/services/application/application/impl_test.go
@@ -100,15 +100,20 @@
 }
 
 func (s *server) SetPermissions(_ *context.T, _ rpc.ServerCall, perms access.Permissions, version string) error {
-	vlog.VI(2).Infof("%v.SetPermissions(%v, %v) was called", perms, version)
+	vlog.VI(2).Infof("%v.SetPermissions(%v, %v) was called", s, perms, version)
 	return nil
 }
 
 func (s *server) GetPermissions(*context.T, rpc.ServerCall) (access.Permissions, string, error) {
-	vlog.VI(2).Infof("%v.GetPermissions() was called")
+	vlog.VI(2).Infof("%v.GetPermissions() was called", s)
 	return nil, "", nil
 }
 
+func (s *server) TidyNow(*context.T, rpc.ServerCall) error {
+	vlog.VI(2).Infof("%v.TidyNow() was called", s)
+	return nil
+}
+
 type dispatcher struct{}
 
 func (d *dispatcher) Lookup(suffix string) (interface{}, security.Authorizer, error) {
diff --git a/services/application/applicationd/service.go b/services/application/applicationd/service.go
index 03f9139..e99a7a4 100644
--- a/services/application/applicationd/service.go
+++ b/services/application/applicationd/service.go
@@ -5,6 +5,7 @@
 package main
 
 import (
+	"fmt"
 	"sort"
 	"strings"
 
@@ -333,3 +334,7 @@
 	}
 	return nil
 }
+
+func (i *appRepoService) TidyNow(ctx *context.T, call rpc.ServerCall) error {
+	return fmt.Errorf("method not implemented")
+}
diff --git a/services/device/device/local_install.go b/services/device/device/local_install.go
index e0bde29..c111e98 100644
--- a/services/device/device/local_install.go
+++ b/services/device/device/local_install.go
@@ -215,6 +215,10 @@
 	return errNotImplemented
 }
 
+func (envelopeInvoker) TidyNow(*context.T, rpc.ServerCall) error {
+	return errNotImplemented
+}
+
 func servePackage(p string, ms *mapServer, tmpZipDir string) (string, string, error) {
 	info, err := os.Stat(p)
 	if os.IsNotExist(err) {
diff --git a/services/device/internal/impl/utiltest/mock_repo.go b/services/device/internal/impl/utiltest/mock_repo.go
index ae908d0..54c6807 100644
--- a/services/device/internal/impl/utiltest/mock_repo.go
+++ b/services/device/internal/impl/utiltest/mock_repo.go
@@ -80,6 +80,10 @@
 	return nil
 }
 
+func (i *arInvoker) TidyNow(_ *context.T, _ rpc.ServerCall) error {
+	return nil
+}
+
 // brInvoker holds the state of a binary repository invocation mock.  It always
 // serves the current running binary.
 type brInvoker struct{}
diff --git a/services/repository/repository.vdl.go b/services/repository/repository.vdl.go
index e90e22b..86454e4 100644
--- a/services/repository/repository.vdl.go
+++ b/services/repository/repository.vdl.go
@@ -21,6 +21,7 @@
 	"v.io/v23/services/application"
 	"v.io/v23/services/permissions"
 	"v.io/v23/services/repository"
+	"v.io/v23/services/tidyable"
 	"v.io/x/ref/services/profile"
 )
 
@@ -165,7 +166,7 @@
 }
 
 func (s implApplicationServerStub) Describe__() []rpc.InterfaceDesc {
-	return []rpc.InterfaceDesc{ApplicationDesc, repository.ApplicationDesc, permissions.ObjectDesc}
+	return []rpc.InterfaceDesc{ApplicationDesc, repository.ApplicationDesc, permissions.ObjectDesc, tidyable.TidyableDesc}
 }
 
 // ApplicationDesc describes the Application interface.