Repository navigation
feat(connections): a client names the scopes it may ask, and a way takes the one covering its scope - #289
Merged
Conversation
…kes the one covering its scope A vendor that verifies a project at the tier of its most demanding scope holds every scope of the project behind the review of that tier, so one issuer may need a client for each tier. The consent client found a registered client, and a client of Auto's consent service, by the issuer alone, and the reading of registered_clients refused a second client at an issuer. A client names scopes, the scopes it may ask at its issuers, and a way takes the first client at its issuer whose scopes hold every scope the way asks, its scope split on spaces and compared as written; a client that names none covers every way, so a vendor with one client is served as before. registeredClientFor and serviceClientFor take the way, whose WayOfClients carries its scope, in place of registeredClientAt and serviceClientAt; the sources a way has, the start, the listing of the providers and an addition all judge with it. A way no client covers is set up first, in the words a way without a client has. registered_clients takes scopes, at least one and none empty. Clients that name one issuer, a trailing slash aside, each name their scopes: one that names none is refused at its scopes, since it would serve every way there that no client before it covers, and a client after it never. Auto's consent service lists a client's scopes where it names them. ServiceClient is the type of ServiceClientSchema, which reads the listing, in place of an interface beside a second shape of the same fields. A finish, a renewal and a revocation of a registered connection take the client registered at the issuer under the client id the connection recorded, registeredClientNamed, and not the first client at the issuer, which would fail a connection made with a later one as client_gone. A connection of auto sends the service what it sent. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…tered per verification tier The configuration reference gives scopes on registered_clients with the rule a way takes its client by: the first client at its issuer whose scopes hold every scope the way asks, one that names none covering every way, and each client naming its scopes where several serve one issuer. It lists the two refusals of the reading among the checks at start. The page on connections names scopes among the fields of a registered client, and each mention of a client at an issuer, a registered one or one of Auto's, says it covers the way's scope. The table of the Google providers gives Google's tier of each: sensitive for the eight APIs and restricted for the five Workspace servers, whose scopes Google's own pages fix. The steps make one project for each tier an operator offers, both or one, with the scopes of that tier on its consent screen and one client in it, and the example lists two clients at https://accounts.google.com, each with the scopes of its tier; read through the setting, each of the eight APIs takes the first and each of the five servers the second. The verification step asks the brand, the justifications and the video of both tiers, and the yearly security assessment of the restricted one alone, so a finding on one never touches the other. At a vendor that verifies in tiers, Auto has a client for each tier, which its consent service lists with the scopes it covers. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
rami-hatoum
pushed a commit
that referenced
this pull request
Oct 22, 2026
🤖 I have created a release *beep* *boop* --- ## [0.17.0](v0.16.0...v0.17.0) (2026-10-22) ### Features * **api:** the instructions and the playbook tools claim a request for a playbook ([#288](#288)) ([e4e6f86](e4e6f86)) * **connections:** a client names the scopes it may ask, and a way takes the one covering its scope ([#289](#289)) ([e05a127](e05a127)) * **connections:** a connect link names what its page cannot know, and the agent shows it as a link ([#290](#290)) ([8d1de91](8d1de91)) * **definitions:** the overview is its author's markdown, and a read names what uses a definition ([#287](#287)) ([7c1c637](7c1c637)) * **ledger:** a layout number, written at creation and checked at open, replaces the shape checks ([#281](#281)) ([a48be0e](a48be0e)) ### Bug Fixes * **operations:** a version 7 uuid made in the same millisecond as the last sorts after it ([#285](#285)) ([846a36d](846a36d)) * **prediction:** a model loads with the telemetry of onnxruntime off, so its process leaves nothing ([#283](#283)) ([ea1a6d8](ea1a6d8)) * **server:** the start's waits run on Effect's clock and the restart mark names its port ([#282](#282)) ([db6c858](db6c858)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: beonautobot[bot] <298957281+beonautobot[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
A client names the scopes it may ask. A registered client under
registered_clientsmay listscopes, the scopes it may ask at its issuers. A way is served by the first client at its issuer whose scopes cover the way's scope, every scope the way asks being one the client names; a client that names none covers every way, so nothing changes for a vendor with one client. Where several clients serve one issuer, each names its scopes, and a configuration with two clients at one issuer of which one names none is refused at that client'sscopes, since the one naming none would serve every way the clients before it leave and a client after it never. An empty list is refused too: a client that may ask any scope leavesscopesout.Auto's clients follow the same rule. The consent service lists each of its clients with the scopes it names, and a way takes Auto's client by coverage; a listed client without scopes covers every way, as before.
A connection renews with the client that got its tokens. A renewal or a revocation of a registered connection finds the client the connection names, by its id at its issuer, not the first at the issuer; a client no longer configured fails the call as a client gone, as before.
The self-host page registers a Google client per verification tier. Google verifies a project at the tier of its most demanding scope, and two scopes the five Workspace servers require are restricted, so their project goes through the restricted review with a yearly security assessment while the eight API providers' scopes are sensitive and need the justifications and the video alone. The page's table names each provider's tier; the steps say one project per tier an operator offers, both or one, with the scopes of that tier on its consent screen and one client per project; the
registered_clientsexample shows the two clients with their scopes. The configuration page documentsscopesand the two refusals.Tests
scopesrefused.scopes, and a way taken from Auto's client by coverage; a listing whose scope is empty is unanswered.Checklist
feat(reasoning): .... It becomes the squash commit and the changelog entry.pnpm checkpasses locally, with every file at 100% coverage.