Build Information
Successful build of PaginatedRESTClient, reference 0.5.0 (da0471), with Swift 6.3 for macOS (SPM) on 8 Sep 2026 20:08:01 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-26.5.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 5.0.2
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/adamtheturtle/PaginatedRESTClient.git
Reference: 0.5.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/adamtheturtle/PaginatedRESTClient
* tag 0.5.0 -> FETCH_HEAD
HEAD is now at da04711 Merge pull request #225 from adamtheturtle/fix/open-issues-batch-transport
Cloned https://github.com/adamtheturtle/PaginatedRESTClient.git
Revision (git rev-parse @):
da0471144598e5a3a13c56bb8651318b569c8488
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/adamtheturtle/PaginatedRESTClient.git at 0.5.0
Fetching https://github.com/swiftlang/swift-docc-symbolkit
Fetching https://github.com/swiftlang/swift-docc-plugin
[1/2345] Fetching swift-docc-plugin
[236/6165] Fetching swift-docc-plugin, swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-plugin from cache (1.45s)
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (1.45s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
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
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.5.0
========================================
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": "paginatedrestclient",
"name": "PaginatedRESTClient",
"url": "https://github.com/adamtheturtle/PaginatedRESTClient.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/PaginatedRESTClient",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
Fetching https://github.com/adamtheturtle/PaginatedRESTClient.git
[1/722] Fetching paginatedrestclient
Fetched https://github.com/adamtheturtle/PaginatedRESTClient.git from cache (1.06s)
Creating working copy for https://github.com/adamtheturtle/PaginatedRESTClient.git
Working copy of https://github.com/adamtheturtle/PaginatedRESTClient.git resolved at 0.5.0 (da04711)
warning: '.resolve-product-dependencies': dependency 'paginatedrestclient' 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/adamtheturtle/PaginatedRESTClient.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.5.0.app xcrun swift build --arch arm64
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
Building for debugging...
[2/4] Write sources
[3/4] Write swift-version-69A768CDF2A0BEE1.txt
[5/9] Compiling PaginatedRESTClient SameOriginRedirectDelegate.swift
[6/9] Compiling PaginatedRESTClient URLSessionTransport.swift
[7/9] Compiling PaginatedRESTClient PaginatedRESTClient.swift
[8/9] Compiling PaginatedRESTClient RESTTransport.swift
[9/9] Emitting module PaginatedRESTClient
Build complete! (10.69s)
Build complete.
{
"dependencies" : [
{
"identity" : "swift-docc-plugin",
"requirement" : {
"range" : [
{
"lower_bound" : "1.4.3",
"upper_bound" : "2.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/swiftlang/swift-docc-plugin"
}
],
"manifest_display_name" : "PaginatedRESTClient",
"name" : "PaginatedRESTClient",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "15.0"
},
{
"name" : "ios",
"version" : "18.0"
},
{
"name" : "tvos",
"version" : "18.0"
},
{
"name" : "watchos",
"version" : "11.0"
},
{
"name" : "visionos",
"version" : "2.0"
}
],
"products" : [
{
"name" : "PaginatedRESTClient",
"targets" : [
"PaginatedRESTClient"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "PaginatedRESTClientTests",
"module_type" : "SwiftTarget",
"name" : "PaginatedRESTClientTests",
"path" : "Tests/PaginatedRESTClientTests",
"sources" : [
"InitializerIsolationTests.swift",
"OpenIssuesBatchTests.swift",
"PaginatedRESTClientTests.swift",
"READMEQuickStartTests.swift",
"RedirectPolicyTests.swift",
"URLSessionTransportTests.swift"
],
"target_dependencies" : [
"PaginatedRESTClient"
],
"type" : "test"
},
{
"c99name" : "PaginatedRESTClient",
"module_type" : "SwiftTarget",
"name" : "PaginatedRESTClient",
"path" : "Sources/PaginatedRESTClient",
"product_memberships" : [
"PaginatedRESTClient"
],
"sources" : [
"PaginatedRESTClient.swift",
"RESTTransport.swift",
"SameOriginRedirectDelegate.swift",
"URLSessionTransport.swift"
],
"type" : "library"
}
],
"tools_version" : "6.2"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/adamtheturtle/paginatedrestclient/0.5.0
Repository: adamtheturtle/PaginatedRESTClient
Swift version used: 6.3
.package(url: "https://github.com/swiftlang/swift-docc-plugin", from: "1.4.3")
Target: PaginatedRESTClient
Extracting symbol information for 'PaginatedRESTClient'...
Finished extracting symbol information for 'PaginatedRESTClient'. (26.94s)
Building documentation for 'PaginatedRESTClient'...
warning: 'authorizedGET(_:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient'
--> CustomTransports.md:41:23-41:40
39 | ## Redirect credential safety
40 |
41 + ``PaginatedRESTClient/authorizedGET(_:)`` and the other authenticated builders validate only
| ╰─suggestion: Replace 'authorizedGET(_:)' with 'authorizedGET(_:headers:)'
42 | the *initial* URL. Once a ``RESTRequest`` is handed to your transport, **redirect handling is
43 | entirely yours.**
warning: 'SameOriginRedirectDelegate' doesn't exist at '/PaginatedRESTClient/CustomTransports'
--> CustomTransports.md:51:44-51:70
49 | 2. Strip credential headers before following a cross-origin redirect.
50 |
51 + ``URLSessionTransport`` does (1) through ``SameOriginRedirectDelegate``. A literal adapter
52 | that blindly replays the original ``RESTRequest/headers`` on every hop can reintroduce a
53 | credential leak. Treat same-origin redirect policy as part of the ``RESTTransport`` contract,
warning: 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient'
--> PaginatedRESTClient.md:32:23-32:157
30 |
31 | Idempotent requests retry up to three times by default. Pass `maxAttempts` to
32 + ``PaginatedRESTClient/init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:)``
| ╰─suggestion: Replace 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:)' with 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:maxPaginationHTTPAttempts:)'
33 | to change that default for ``PaginatedRESTClient/fetch(_:path:)``, pagination, and
34 | ``PaginatedRESTClient/performWithRetry(_:request:maxAttempts:)``. Retry delays cap at 60
warning: 'fetch(_:path:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient'
--> PaginatedRESTClient.md:33:50-33:64
31 | Idempotent requests retry up to three times by default. Pass `maxAttempts` to
32 | ``PaginatedRESTClient/init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:)``
33 + to change that default for ``PaginatedRESTClient/fetch(_:path:)``, pagination, and
| ├─suggestion: Replace 'fetch(_:path:)' with 'fetch(_:path:headers:)'
| ╰─suggestion: Replace 'fetch(_:path:)' with 'fetchAllPages(_:path:sort:)'
34 | ``PaginatedRESTClient/performWithRetry(_:request:maxAttempts:)``. Retry delays cap at 60
35 | seconds by default; configure `maxRetryDelay` when an API's `Retry-After` requires a longer
warning: 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient'
--> PaginatedRESTClient.md:42:70-42:178
40 | ``PaginatedRESTClient/defaultMaxSequentialPages`` and
41 | ``PaginatedRESTClient/defaultMaxParallelPages`` both default to `1000`. Pass
42 + `maxSequentialPages` and `maxParallelPages` to ``PaginatedRESTClient/init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:)``
| ╰─suggestion: Replace 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:)' with 'init(apiKey:baseURL:transport:decoderFactory:encoderFactory:errors:log:maxSequentialPages:maxParallelPages:maxRetryDelay:maxAttempts:maxPaginationHTTPAttempts:)'
43 | to tune them per client. Hitting either cap throws through
44 | ``RESTTransportErrorMapping/invalidRequest(_:)`` rather than truncating the list. The
warning: 'Hashable' doesn't exist at '/PaginatedRESTClient/RESTItemIdentity'
--> ../PaginatedRESTClient.swift:35:9-35:17
33 | /// rather than walking `next_page` one blocking round-trip at a time.
34 |
35 + /// A ``Hashable`` & ``Sendable`` item identity for pagination de-duplication (#122).
36 | ///
37 | /// Swift 6 marks `AnyHashable`'s `Sendable` conformance unavailable, so the public
warning: 'Sendable' doesn't exist at '/PaginatedRESTClient/RESTItemIdentity'
--> ../PaginatedRESTClient.swift:35:24-35:32
33 | /// rather than walking `next_page` one blocking round-trip at a time.
34 |
35 + /// A ``Hashable`` & ``Sendable`` item identity for pagination de-duplication (#122).
36 | ///
37 | /// Swift 6 marks `AnyHashable`'s `Sendable` conformance unavailable, so the public
warning: 'maxSequentialPages' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/maxPaginationHTTPAttempts'
--> ../PaginatedRESTClient.swift:339:23-339:41
337 |
338 | /// Upper bound on HTTP attempts across one paginated list (retries included) (#123).
339 + /// Defaults to ``maxSequentialPages`` × ``maxAttempts``. Parallel fetches also count
340 | /// toward ``maxSequentialPages``, so that valve (not ``maxParallelPages`` alone) is
341 | /// the page budget the retry multiplier must cover.
warning: 'maxAttempts' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/maxPaginationHTTPAttempts'
--> ../PaginatedRESTClient.swift:339:49-339:60
337 |
338 | /// Upper bound on HTTP attempts across one paginated list (retries included) (#123).
339 + /// Defaults to ``maxSequentialPages`` × ``maxAttempts``. Parallel fetches also count
340 | /// toward ``maxSequentialPages``, so that valve (not ``maxParallelPages`` alone) is
341 | /// the page budget the retry multiplier must cover.
warning: 'maxSequentialPages' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/maxPaginationHTTPAttempts'
--> ../PaginatedRESTClient.swift:340:18-340:36
338 | /// Upper bound on HTTP attempts across one paginated list (retries included) (#123).
339 | /// Defaults to ``maxSequentialPages`` × ``maxAttempts``. Parallel fetches also count
340 + /// toward ``maxSequentialPages``, so that valve (not ``maxParallelPages`` alone) is
341 | /// the page budget the retry multiplier must cover.
342 | public nonisolated let maxPaginationHTTPAttempts: Int
warning: 'maxParallelPages' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/maxPaginationHTTPAttempts'
--> ../PaginatedRESTClient.swift:340:61-340:77
338 | /// Upper bound on HTTP attempts across one paginated list (retries included) (#123).
339 | /// Defaults to ``maxSequentialPages`` × ``maxAttempts``. Parallel fetches also count
340 + /// toward ``maxSequentialPages``, so that valve (not ``maxParallelPages`` alone) is
341 | /// the page budget the retry multiplier must cover.
342 | public nonisolated let maxPaginationHTTPAttempts: Int
warning: 'fetch(_:path:)' doesn't exist at '/PaginatedRESTClient/PaginatedRESTClient/validatedAuthenticatedURL(_:)'
--> ../PaginatedRESTClient.swift:1309:56-1309:70
1307 |
1308 | /// Validates that `url` stays on the configured HTTP(S) origin without URL userinfo,
1309 + /// matching the credential-safety rules used by ``fetch(_:path:)``.
1310 | nonisolated func validatedAuthenticatedURL(_ url: URL) throws -> URL {
1311 | guard SameOriginRedirectDelegate.hasSameOrigin(baseURL, url),
Finished building documentation for 'PaginatedRESTClient' (0.56s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/adamtheturtle/paginatedrestclient/0.5.0
Building for debugging...
[0/8] Write sources
[3/8] Write snippet-extract-tool-entitlement.plist
[4/8] Write swift-version-69A768CDF2A0BEE1.txt
[6/54] Compiling SymbolKit Relationship.swift
[7/54] Compiling SymbolKit RelationshipKind.swift
[8/54] Compiling SymbolKit SourceOrigin.swift
[9/54] Compiling SymbolKit GenericConstraints.swift
[10/54] Compiling SymbolKit Swift.swift
[11/58] Compiling SymbolKit DeclarationFragments.swift
[12/58] Compiling SymbolKit Fragment.swift
[13/58] Compiling SymbolKit FragmentKind.swift
[14/58] Compiling SymbolKit FunctionParameter.swift
[15/58] Compiling SymbolKit FunctionSignature.swift
[16/58] Compiling SymbolKit Mixin+Equals.swift
[17/58] Compiling SymbolKit Mixin+Hash.swift
[18/58] Compiling SymbolKit Mixin.swift
[19/58] Compiling SymbolKit LineList.swift
[20/58] Compiling SymbolKit Position.swift
[21/58] Compiling Snippets Snippet.swift
[22/58] Compiling Snippets SnippetParser.swift
[23/58] Compiling Snippets SnippetLanguage.swift
[24/58] Emitting module Snippets
[25/58] Compiling SymbolKit Identifier.swift
[26/58] Compiling SymbolKit KindIdentifier.swift
[27/58] Compiling SymbolKit Location.swift
[28/58] Compiling SymbolKit Mutability.swift
[29/58] Compiling SymbolKit SemanticVersion.swift
[30/58] Compiling SymbolKit AccessControl.swift
[31/58] Compiling SymbolKit Availability.swift
[32/58] Compiling SymbolKit AvailabilityItem.swift
[33/58] Compiling SymbolKit Domain.swift
[34/58] Compiling SymbolKit Names.swift
[35/58] Compiling SymbolKit SPI.swift
[36/58] Compiling SymbolKit Snippet.swift
[37/58] Compiling SymbolKit Extension.swift
[38/58] Compiling SymbolKit GenericConstraint.swift
[39/58] Compiling SymbolKit GenericParameter.swift
[40/58] Compiling SymbolKit Generics.swift
[41/58] Compiling SymbolKit Namespace.swift
[42/58] Compiling SymbolKit Symbol.swift
[43/58] Compiling SymbolKit SymbolKind.swift
[44/58] Compiling SymbolKit SymbolGraph.swift
[45/58] Compiling SymbolKit GraphCollector.swift
[46/58] Compiling SymbolKit SourceRange.swift
[47/58] Compiling SymbolKit Metadata.swift
[48/58] Compiling SymbolKit Module.swift
[49/58] Compiling SymbolKit OperatingSystem.swift
[50/58] Compiling SymbolKit Platform.swift
[51/58] Emitting module SymbolKit
[52/58] Compiling SymbolKit UnifiedSymbol+Encodable.swift
[53/58] Compiling SymbolKit UnifiedSymbol.swift
[54/58] Compiling SymbolKit UnifiedSymbolGraph+Encodable.swift
[55/58] Compiling SymbolKit UnifiedSymbolGraph.swift
[56/62] Compiling snippet_extract URL+Status.swift
[57/62] Compiling snippet_extract SymbolGraph+Snippet.swift
[58/62] Emitting module snippet_extract
[59/62] Compiling snippet_extract SnippetBuildCommand.swift
[59/62] Write Objects.LinkFileList
[60/62] Linking snippet-extract-tool
[61/62] Applying snippet-extract-tool
Build of product 'snippet-extract' complete! (3.51s)
Building for debugging...
[0/1] Write swift-version-69A768CDF2A0BEE1.txt
Build of target: 'PaginatedRESTClient' complete! (0.23s)
376
4 /Users/admin/builder/spi-builder-workspace/.docs/adamtheturtle/paginatedrestclient/0.5.0
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/adamtheturtle/paginatedrestclient/0.5.0
File count: 376
Doc size: 4.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -adamtheturtle-paginatedrestclient-0.5.0-0f750620.zip to presigned URL
Starting upload of 802044 bytes...
Upload completed successfully
Done.