Build Information
Successful build of Relax, reference 2.2.1 (30de4b), with Swift 6.3 for macOS (SPM) on 14 Apr 2026 06:36:42 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/tdeleon/Relax.git
Reference: 2.2.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/tdeleon/Relax
* tag 2.2.1 -> FETCH_HEAD
HEAD is now at 30de4b5 Merge pull request #60 from tdeleon/develop
Cloned https://github.com/tdeleon/Relax.git
Revision (git rev-parse @):
30de4b526965f008ab776baac3325a98ce6787f0
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/tdeleon/Relax.git at 2.2.1
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"traits": [
"default"
],
"dependencies": [
{
"identity": "relax",
"name": "Relax",
"url": "https://github.com/tdeleon/Relax.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/Relax",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
Fetching https://github.com/tdeleon/Relax.git
[1/2794] Fetching relax
Fetched https://github.com/tdeleon/Relax.git from cache (1.10s)
Creating working copy for https://github.com/tdeleon/Relax.git
Working copy of https://github.com/tdeleon/Relax.git resolved at 2.2.1 (30de4b5)
warning: '.resolve-product-dependencies': dependency 'relax' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.3
Building package at path: $PWD
https://github.com/tdeleon/Relax.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.4.0.app xcrun swift build --arch arm64
Building for debugging...
[0/3] Write sources
[2/3] Write swift-version--6988338F2F200930.txt
[4/18] Compiling Relax Request+SendPublisher.swift
[5/18] Compiling Relax Request+SendAsync.swift
[6/19] Compiling Relax RequestProperty.swift
[7/19] Compiling Relax Request+Configuration.swift
[8/19] Compiling Relax Request+Modifiers.swift
[9/19] Compiling Relax PathComponents.swift
[10/19] Compiling Relax QueryItems.swift
[11/19] Compiling Relax Service.swift
[12/19] Compiling Relax Errors.swift
[13/19] Compiling Relax Body.swift
[14/19] Compiling Relax Headers.swift
[15/19] Compiling Relax Request+Send.swift
[16/19] Emitting module Relax
[17/19] Compiling Relax APIComponent.swift
[18/19] Compiling Relax Endpoint.swift
[19/19] Compiling Relax Request.swift
[20/24] Compiling URLMock URLMock.swift
[21/24] Compiling URLMock Response.swift
[22/24] Compiling URLMock MockResponse.swift
[23/24] Emitting module URLMock
[24/24] Compiling URLMock URLRequestValidation.swift
Build complete! (13.90s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "Relax",
"name" : "Relax",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "tvos",
"version" : "14.0"
},
{
"name" : "watchos",
"version" : "7.0"
},
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "Relax",
"targets" : [
"Relax"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "URLMock",
"targets" : [
"URLMock"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "URLMock",
"module_type" : "SwiftTarget",
"name" : "URLMock",
"path" : "Sources/URLMock",
"product_memberships" : [
"URLMock"
],
"sources" : [
"MockResponse/MockResponse.swift",
"MockResponse/Response.swift",
"URLMock.swift",
"URLRequestValidation.swift"
],
"target_dependencies" : [
"Relax"
],
"type" : "library"
},
{
"c99name" : "RelaxTests",
"module_type" : "SwiftTarget",
"name" : "RelaxTests",
"path" : "Tests/RelaxTests",
"sources" : [
"AsyncTests/AsyncCancellationTests.swift",
"AsyncTests/AsyncCodableTests.swift",
"AsyncTests/AsyncErrorTests.swift",
"AsyncTests/AsyncRequestTests.swift",
"CombineTests/CombineCodableTests.swift",
"CombineTests/CombineErrorTests.swift",
"CombineTests/CombineRequestTests.swift",
"CompletionTests/CompletionErrorTests.swift",
"CompletionTests/CompletionRequestTests.swift",
"Errors/HTTPErrorTests.swift",
"Errors/RequestErrorTests.swift",
"Helpers/ErrorTest.swift",
"Helpers/MockError.swift",
"Helpers/MockServices.swift",
"Helpers/Service+Testing.swift",
"Request/Properties/BodyTests.swift",
"Request/Properties/ConfigurationTests.swift",
"Request/Properties/HeaderTests.swift",
"Request/Properties/HeaderTypeTests.swift",
"Request/Properties/PathComponentsTests.swift",
"Request/Properties/QueryItemTests.swift",
"Request/Properties/RequestPropertiesBuilderTests.swift",
"Request/Properties/RequestPropertiesTests.swift",
"Request/RequestModifiersTests.swift",
"Request/RequestTests.swift",
"Request/ServiceTests.swift"
],
"target_dependencies" : [
"Relax",
"URLMock"
],
"type" : "test"
},
{
"c99name" : "Relax",
"module_type" : "SwiftTarget",
"name" : "Relax",
"path" : "Sources/Relax",
"product_memberships" : [
"Relax",
"URLMock"
],
"sources" : [
"API Structure/APIComponent.swift",
"API Structure/Endpoint.swift",
"API Structure/Service.swift",
"Errors.swift",
"Request/Properties/Body.swift",
"Request/Properties/Headers.swift",
"Request/Properties/PathComponents.swift",
"Request/Properties/QueryItems.swift",
"Request/Properties/RequestProperty.swift",
"Request/Request+Configuration.swift",
"Request/Request+Modifiers.swift",
"Request/Request+Send.swift",
"Request/Request+SendAsync.swift",
"Request/Request+SendPublisher.swift",
"Request/Request.swift"
],
"type" : "library"
}
],
"tools_version" : "5.7"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/tdeleon/relax/2.2.1
Repository: tdeleon/Relax
Swift version used: 6.3
Target: Relax
Extracting symbol information for 'Relax'...
Finished extracting symbol information for 'Relax'. (27.00s)
Building documentation for 'Relax'...
warning: 'send(decoder:session:completion:)' is ambiguous at '/Relax/Request'
--> Request/Request.md:65:5-65:38
63 | - <doc:SendingRequestsHandler>
64 | - ``send(session:autoResumeTask:completion:)``
65 + - ``send(decoder:session:completion:)``
| ├─suggestion: Insert '-(_,_,(Result<ResponseModel,RequestError>)->Void)' for 'func send<ResponseModel>(decoder: JSONDecoder? = nil, session: URLSession? = nil, completion: @escaping (Result<ResponseModel, RequestError>) -> Void) where ResponseModel : Decodable'
| ╰─suggestion: Insert '-(_,_,Request.ModelCompletion<ResponseModel>)' for 'func send<ResponseModel>(decoder: JSONDecoder? = nil, session: URLSession? = nil, completion: @escaping Request.ModelCompletion<ResponseModel>) where ResponseModel : Decodable'
66 | - ``Response``
67 | - ``ResponseModel``
warning: 'send(decoder:session:completion:)' is ambiguous at '/Relax/Request'
--> Request/SendingRequests/SendingRequestsHandler.md:78:11-78:44
76 |
77 | You can automatically decode received data into a `Decodable` instance with the
78 + ``Request/send(decoder:session:completion:)`` method. This method also uses a completion handler, but instead of `Data`,
| ├─suggestion: Insert '-(_,_,(Result<ResponseModel,RequestError>)->Void)' for 'func send<ResponseModel>(decoder: JSONDecoder? = nil, session: URLSession? = nil, completion: @escaping (Result<ResponseModel, RequestError>) -> Void) where ResponseModel : Decodable'
| ╰─suggestion: Insert '-(_,_,Request.ModelCompletion<ResponseModel>)' for 'func send<ResponseModel>(decoder: JSONDecoder? = nil, session: URLSession? = nil, completion: @escaping Request.ModelCompletion<ResponseModel>) where ResponseModel : Decodable'
79 | returns the data decoded to a `Decodable` type.
80 |
warning: Parameter 'appendTrailingSlashToPath' not found in initializer declaration
--> ../Request/Request+Configuration.swift:121:17-121:42
119 | /// - allowsExpensiveNetworkAccess: Whether to allow access to expensive networks
120 | /// - parseHTTPStatusErrors: Whether to parse HTTP status codes for errors
121 + /// - appendTrailingSlashToPath: Whether to append a trailing '/' to the path components
| ╰─suggestion: Replace 'appendTrailingSlashToPath' with 'appendTraillingSlashToPath'
122 | public init(
123 | allowsCellularAccess: Bool = true,
warning: Parameter 'appendTraillingSlashToPath' is missing documentation
--> ../Request/Request+Configuration.swift:121:99-121:99
119 | /// - allowsExpensiveNetworkAccess: Whether to allow access to expensive networks
120 | /// - parseHTTPStatusErrors: Whether to parse HTTP status codes for errors
121 + /// - appendTrailingSlashToPath: Whether to append a trailing '/' to the path components
| ╰─suggestion: Document 'appendTraillingSlashToPath' parameter
122 | public init(
123 | allowsCellularAccess: Bool = true,
warning: Parameter 'Note' not found in initializer declaration
--> ../Request/Request.swift:207:11-208:9
205 | /// ``Request/Properties/empty`` (no properties).
206 | ///
207 + /// - Note: Any `properties` provided are appended to the ``APIComponent/allProperties-7xy23`` defined on the parent, not replaced.
| ╰─suggestion: Remove 'Note' parameter documentation
208 + ///
209 | /// The request will inherit attributes defined on the `parent`, including:
210 | /// * ``APIComponent/baseURL``
Finished building documentation for 'Relax' (0.51s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/tdeleon/relax/2.2.1
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2271] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.09s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.4.6 (1.86s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3672] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.20s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (2.25s)
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.4.6
Building for debugging...
[0/8] Write sources
[1/8] Write snippet-extract-tool-entitlement.plist
[1/8] Write sources
[4/8] Write swift-version--6988338F2F200930.txt
[6/53] Emitting module SymbolKit
[7/57] Emitting module Snippets
[8/57] Compiling Snippets Snippet.swift
[9/57] Compiling Snippets SnippetParser.swift
[10/57] Compiling SymbolKit Relationship.swift
[11/57] Compiling SymbolKit RelationshipKind.swift
[12/57] Compiling SymbolKit SourceOrigin.swift
[13/57] Compiling SymbolKit GenericConstraints.swift
[14/57] Compiling SymbolKit Swift.swift
[15/57] Compiling SymbolKit SourceRange.swift
[16/57] Compiling SymbolKit Metadata.swift
[17/57] Compiling SymbolKit Module.swift
[18/57] Compiling SymbolKit OperatingSystem.swift
[19/57] Compiling SymbolKit Platform.swift
[20/57] Compiling SymbolKit Mixin+Equals.swift
[21/57] Compiling SymbolKit Mixin+Hash.swift
[22/57] Compiling SymbolKit Mixin.swift
[23/57] Compiling SymbolKit LineList.swift
[24/57] Compiling SymbolKit Position.swift
[25/57] Compiling SymbolKit Names.swift
[26/57] Compiling SymbolKit SPI.swift
[27/57] Compiling SymbolKit Snippet.swift
[28/57] Compiling SymbolKit Extension.swift
[29/57] Compiling SymbolKit Symbol.swift
[30/57] Compiling SymbolKit SymbolKind.swift
[31/57] Compiling SymbolKit SymbolGraph.swift
[32/57] Compiling SymbolKit GraphCollector.swift
[33/57] Compiling SymbolKit SemanticVersion.swift
[34/57] Compiling SymbolKit AccessControl.swift
[35/57] Compiling SymbolKit Availability.swift
[36/57] Compiling SymbolKit AvailabilityItem.swift
[37/57] Compiling SymbolKit Domain.swift
[38/57] Compiling SymbolKit Identifier.swift
[39/57] Compiling SymbolKit KindIdentifier.swift
[40/57] Compiling SymbolKit Location.swift
[41/57] Compiling SymbolKit Mutability.swift
[42/57] Compiling SymbolKit GenericConstraint.swift
[43/57] Compiling SymbolKit GenericParameter.swift
[44/57] Compiling SymbolKit Generics.swift
[45/57] Compiling SymbolKit Namespace.swift
[46/57] Compiling SymbolKit DeclarationFragments.swift
[47/57] Compiling SymbolKit Fragment.swift
[48/57] Compiling SymbolKit FragmentKind.swift
[49/57] Compiling SymbolKit FunctionParameter.swift
[50/57] Compiling SymbolKit FunctionSignature.swift
[51/57] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[52/57] Compiling SymbolKit UnifiedSymbol.swift
[53/57] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[54/57] Compiling SymbolKit UnifiedSymbolGraph.swift
[55/61] Compiling snippet_extract URL+Status.swift
[56/61] Compiling snippet_extract SymbolGraph+Snippet.swift
[57/61] Emitting module snippet_extract
[58/61] Compiling snippet_extract SnippetBuildCommand.swift
[58/61] Write Objects.LinkFileList
[59/61] Linking snippet-extract-tool
[60/61] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (4.64s)
Building for debugging...
[0/1] Write swift-version--6988338F2F200930.txt
Build of target: 'Relax' complete! (0.19s)
Target: URLMock
Extracting symbol information for 'URLMock'...
Finished extracting symbol information for 'URLMock'. (17.57s)
Building documentation for 'URLMock'...
warning: Parameter 'urlErrorCode' not found in initializer declaration
--> ../MockResponse/Response.swift:102:15-102:53
100 | /// A response returning a `URLError` with the given code
101 | /// - Parameters:
102 + /// - urlErrorCode: The code for the error
| ╰─suggestion: Remove 'urlErrorCode' parameter documentation
103 | /// - request: The request this is in response to
104 | /// - Returns: A response with `URLError` of the given code
warning: Parameter 'code' is missing documentation
--> ../MockResponse/Response.swift:103:60-103:60
101 | /// - Parameters:
102 | /// - urlErrorCode: The code for the error
103 + /// - request: The request this is in response to
| ╰─suggestion: Document 'code' parameter
104 | /// - Returns: A response with `URLError` of the given code
105 | public init(code: URLError.Code, for request: URLRequest) {
warning: External name 'match' used to document parameter
--> ../URLRequestValidation.swift:45:21-45:26
43 | //MARK: - Validation
44 | /// Validates the request query items match the provided query items
45 + /// - Parameter match: The expected query items
| ╰─suggestion: Replace 'match' with 'expected'
46 | ///
47 | /// This method validates that the query items match the expected using `XCTAssertEqual()`. Sets are used so order is not required to match.
warning: External name 'matches' used to document parameter
--> ../URLRequestValidation.swift:75:13-75:20
73 | /// Validates the request body matches the provided `Codable` object
74 | /// - Parameters:
75 + /// - matches: The Encodable object to match
| ╰─suggestion: Replace 'matches' with 'expected'
76 | /// - decoder: The decoder to use when decoding the request body data
77 | ///
warning: External name 'matches' used to document parameter
--> ../URLRequestValidation.swift:89:21-89:28
87 |
88 | /// Validates that the request body matches the provided dictionary
89 + /// - Parameter matches: The dictionary to match
| ╰─suggestion: Replace 'matches' with 'expected'
90 | ///
91 | /// This method attempts to decode the request body using `JSONSerialization` into a dictionary, and then validates it against the expected using
warning: External name 'match' used to document parameter
--> ../URLRequestValidation.swift:125:21-125:26
123 |
124 | /// Validates that the request HTTP headers match the provided
125 + /// - Parameter match: The expected headers to match
| ╰─suggestion: Replace 'match' with 'expected'
126 | ///
127 | /// This method matches the request `allHTTPHeaderFields` with the expected using `XCTAssertEqual()`
Finished building documentation for 'URLMock' (0.08s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/tdeleon/relax/2.2.1
Building for debugging...
[0/3] Write swift-version--6988338F2F200930.txt
Build of product 'snippet-extract' complete! (0.20s)
Building for debugging...
[0/1] Write swift-version--6988338F2F200930.txt
Build of target: 'URLMock' complete! (0.19s)
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/tdeleon/relax/2.2.1/index/index.json
Successfully merged into /Users/admin/builder/spi-builder-workspace/.docs-staging/tdeleon/relax/2.2.1/linkable-paths.json
763
6 /Users/admin/builder/spi-builder-workspace/.docs/tdeleon/relax/2.2.1
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/tdeleon/relax/2.2.1
File count: 763
Doc size: 6.0MB
Preparing doc bundle ...
Uploading prod-tdeleon-relax-2.2.1-e1e825be.zip to s3://spi-docs-inbox/prod-tdeleon-relax-2.2.1-e1e825be.zip
Copying... [10%]
Copying... [21%]
Copying... [31%]
Copying... [41%]
Copying... [52%]
Copying... [62%]
Copying... [72%]
Copying... [82%]
Copying... [93%]
Copying... [100%]
Done.