| Index: appengine/config_service/README.md
 | 
| diff --git a/appengine/config_service/README.md b/appengine/config_service/README.md
 | 
| index 64a65d68bad51ba8de169101dbb4bd69420fc5c2..5d48e60148e9a648bb3ac139ed521a98fd25f84c 100644
 | 
| --- a/appengine/config_service/README.md
 | 
| +++ b/appengine/config_service/README.md
 | 
| @@ -2,17 +2,17 @@
 | 
|  
 | 
|    - Stores and imports config files from repositories, such as Gitiles.
 | 
|    - Provides read-only access to config files and encapsulates their location.
 | 
| +  - Stores a registry of LUCI services.
 | 
|    - Stores a registry of projects that use LUCI services.
 | 
|  
 | 
| -
 | 
|  ## Quick examples
 | 
|  
 | 
|  ### Service config example
 | 
|  Auth service admins keep client id whitelist and configuration of group import
 | 
| -from externa sources. They can store these configs as files in Gitiles.
 | 
| -Config service can be configured to import them from Gitiles to
 | 
| -to `services/auth` config set. Auth service can use config component to
 | 
| -access its own configs.
 | 
| +from external sources. These configs are stored as files in Gitiles.
 | 
| +Config service imports them from Gitiles to `services/<auth-service-app-id>`
 | 
| +config set. Auth service can use
 | 
| +[config component](../components/components/config) to access its the configs.
 | 
|  
 | 
|  As a result, Auth services has the following for free
 | 
|  
 | 
| @@ -61,11 +61,6 @@ There are three types of configs:
 | 
|      `services/<service_id>` is always accessible to
 | 
|      <service-id>.appspot.com.
 | 
|  
 | 
| -    `services/luci-config:projects.cfg` is a project registry. It contains
 | 
| -    unique project ids (chromium, v8, skia) and location of project configs.
 | 
| -    This list is available through get_projects() API. This is how projects are
 | 
| -    discovered by services.
 | 
| -
 | 
|    2. Project configs. Project-wide branch-independent configs for services.
 | 
|      This is what a project as a tenant tells a service about itself. Examples:
 | 
|  
 | 
| @@ -90,14 +85,50 @@ There are three types of configs:
 | 
|      Ref configs live in `projects/<project_id>/<ref_name>` config
 | 
|      set, where `<ref_name>` always starts with `refs/`.
 | 
|  
 | 
| +## Project registry
 | 
|  
 | 
| -## GAE component
 | 
| +`services/luci-config:projects.cfg` is a project registry. It contains unique
 | 
| +project ids (chromium, v8, skia) and location of project configs. This list is
 | 
| +available through get_projects() API. This is how projects are discovered by
 | 
| +services.
 | 
| +
 | 
| +See [ProjectsCfg message](proto/service_config.proto) for more info.
 | 
| +
 | 
| +## Service registry
 | 
| +
 | 
| +`services/luci-config:services.cfg` is a service registry. It contains unique
 | 
| +service ids (chrome-infra-auth, swarming), location of configs if different from
 | 
| +default and metadata url.
 | 
| +
 | 
| +See [ServicesCfg message](proto/service_config.proto) for more info.
 | 
|  
 | 
| -config component can be used by a GAE app to read configs.
 | 
| +## Access control
 | 
| +
 | 
| +Service configs are accessible to a group defined in service/luci-config:acl.cfg
 | 
| +and a GAE app with the same id, e.g. x.appspot.com has access to `services/x`.
 | 
| +
 | 
| +Projects define access to their configs in projects/foo:project.cfg. See
 | 
| +[access field in ProjectCfg message](proto/project_config.proto).
 | 
| +
 | 
| +## Configuration validation
 | 
| +
 | 
| +Config files are validated and config set revisions containing invalid configs
 | 
| +are not imported. Configs of the config service (services/luci-config config
 | 
| +set) are validated by the config service. Other configs can be validated by
 | 
| +registered services. A service may expose a list of config patterns that it is
 | 
| +able to validate and the config service will call service's endpoint to
 | 
| +validate.
 | 
| +
 | 
| +See [ServicesCfg and Validator messages](proto/service_config.proto) for more
 | 
| +info.
 | 
| +
 | 
| +## GAE component
 | 
|  
 | 
| +[config component](../components/components/config) can be used by a GAE app to
 | 
| +read configs.
 | 
|  
 | 
|  ## Config import
 | 
|  
 | 
|  Configs are continuously imported from external sources to the datastore by
 | 
| -config service backend.
 | 
| +config service backend, with 10 min latency.
 | 
|  [Read more](https://github.com/luci/luci-py/wiki/Config-service:-config-import)
 | 
| 
 |