{"record":{"id":"f145f1aa3fa336f9","repo":"larksuite/cli","slug":"s-scope-q-is-already-always-required-for-identit","errorCode":null,"errorMessage":"%s scope %q is already always required for identity %q","messagePattern":"(.+?) scope %q is already always required for identity %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"shortcuts/common/typed_compiler.go","lineNumber":141,"sourceCode":"\t\t}\n\t\tif err := validateScopeList(auth.RequiredScopes, fmt.Sprintf(\"Authorization.%s.RequiredScopes\", identity)); err != nil {\n\t\t\treturn err\n\t\t}\n\t\trequiredScopes := make(map[string]struct{}, len(auth.RequiredScopes))\n\t\tfor _, scope := range auth.RequiredScopes {\n\t\t\trequiredScopes[scope] = struct{}{}\n\t\t}\n\t\tfor i, conditional := range auth.ConditionalScopes {\n\t\t\tpath := fmt.Sprintf(\"Authorization.%s.ConditionalScopes[%d]\", identity, i)\n\t\t\tif err := validateScopeList(conditional.Scopes, path); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tif len(conditional.Scopes) == 0 {\n\t\t\t\treturn fmt.Errorf(\"%s.Scopes is empty\", path)\n\t\t\t}\n\t\t\tfor _, scope := range conditional.Scopes {\n\t\t\t\tif _, alwaysRequired := requiredScopes[scope]; alwaysRequired {\n\t\t\t\t\treturn fmt.Errorf(\"%s scope %q is already always required for identity %q\", path, scope, identity)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif conditional.When != strings.TrimSpace(conditional.When) {\n\t\t\t\treturn fmt.Errorf(\"%s.When must be trimmed\", path)\n\t\t\t}\n\t\t\tswitch conditional.Requirement {\n\t\t\tcase typedScopeRequired, typedScopeBestEffort:\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"%s.Requirement %q is invalid\", path, conditional.Requirement)\n\t\t\t}\n\t\t}\n\t}\n\tif len(metadata.Authorization.IdentityOrder) > 0 {\n\t\tif len(metadata.Authorization.IdentityOrder) != len(metadata.Authorization.Identities) {\n\t\t\treturn fmt.Errorf(\"Metadata.Authorization.IdentityOrder must contain each declared identity exactly once\")\n\t\t}\n\t\tseen := make(map[typedIdentity]struct{}, len(metadata.Authorization.IdentityOrder))\n\t\tfor _, identity := range metadata.Authorization.IdentityOrder {","sourceCodeStart":123,"sourceCodeEnd":159,"githubUrl":"https://github.com/larksuite/cli/blob/7fd6ef3c07182257ce776cdc5a614e122d5bd4b3/shortcuts/common/typed_compiler.go#L123-L159","documentation":"Compile-time guard in validateCommandMetadata: a conditional scope for an identity is also listed in that identity's RequiredScopes, making the condition meaningless.","triggerScenarios":"Thrown at shortcuts/common/typed_compiler.go:141 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the scope from ConditionalScopes or from RequiredScopes"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7fd6ef3c07182257ce776cdc5a614e122d5bd4b3","analyzedAt":"2026-09-04T21:17:44.649Z","contentChangedAt":"2026-09-04T21:17:44.649Z","schemaVersion":2},"datasetVersion":"2026-09-12T02:17:10.037Z"}