The Swift Package Index logo.Swift Package Index

Build Information

Successful build of HybridRouterKit, reference main (4e4033), with Swift 6.4 for macOS (SPM) on 7 Nov 2026 15:31:05 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 5.1.4
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/jaichaudhry/HybridRouter.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/jaichaudhry/HybridRouter
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at 4e40339 Docs: private passages come with the question
Cloned https://github.com/jaichaudhry/HybridRouter.git
Revision (git rev-parse @):
4e40339fa4837d95a8a790564f058ce58b68f8d1
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/jaichaudhry/HybridRouter.git at main
Fetching https://github.com/anthropics/ClaudeForFoundationModels
[1/416] Fetching claudeforfoundationmodels
Fetched https://github.com/anthropics/ClaudeForFoundationModels (2.21s)
Computing version for https://github.com/anthropics/ClaudeForFoundationModels
Computed https://github.com/anthropics/ClaudeForFoundationModels at 0.2.3 (2.89s)
Creating working copy for https://github.com/anthropics/ClaudeForFoundationModels
Working copy of https://github.com/anthropics/ClaudeForFoundationModels resolved at 0.2.3
========================================
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": "hybridrouter",
      "name": "HybridRouterKit",
      "url": "https://github.com/jaichaudhry/HybridRouter.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/HybridRouter",
      "traits": [
        "default"
      ],
      "dependencies": [
        {
          "identity": "claudeforfoundationmodels",
          "name": "ClaudeForFoundationModels",
          "url": "https://github.com/anthropics/ClaudeForFoundationModels",
          "version": "0.2.3",
          "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/ClaudeForFoundationModels",
          "traits": [
            "default"
          ],
          "dependencies": [
          ]
        }
      ]
    }
  ]
}
Fetching https://github.com/jaichaudhry/HybridRouter.git
[1/2285] Fetching hybridrouter
Fetched https://github.com/jaichaudhry/HybridRouter.git (5.27s)
Fetching https://github.com/anthropics/ClaudeForFoundationModels from cache
Fetched https://github.com/anthropics/ClaudeForFoundationModels from cache (0.53s)
Computing version for https://github.com/anthropics/ClaudeForFoundationModels
Computed https://github.com/anthropics/ClaudeForFoundationModels at 0.2.3 (0.62s)
Creating working copy for https://github.com/anthropics/ClaudeForFoundationModels
Working copy of https://github.com/anthropics/ClaudeForFoundationModels resolved at 0.2.3
Creating working copy for https://github.com/jaichaudhry/HybridRouter.git
Working copy of https://github.com/jaichaudhry/HybridRouter.git resolved at main (4e40339)
warning: '.resolve-product-dependencies': dependency 'hybridrouter' is not used by any target
Found 1 product dependencies
  - ClaudeForFoundationModels
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.4
Building package at path:  $PWD
https://github.com/jaichaudhry/HybridRouter.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64
Building for debugging...
[Computing dependencies]
[Pre-planning 1 / 357]
[Planning deferred tasks]
[67 / 129] HybridRouterKit_HybridRouterKitTests
[77 / 129]
[78 / 130] ClaudeAPI
[88 / 175]
[93 / 175]
[95 / 175]
[97 / 175]
[101 / 175]
[103 / 175]
[106 / 175]
[109 / 175]
[111 / 175]
[112 / 175]
[123 / 175] ClaudeAPI
[124 / 175] ClaudeAPI
[132 / 176] ClaudeForFoundationModels
[141 / 199]
[142 / 199]
[143 / 199]
[144 / 199]
[155 / 199] ClaudeForFoundationModels
[162 / 200]
[162 / 200] ClaudeForFoundationModels
[169 / 216]
[180 / 216] HybridRouterKit
[189 / 219] HybridRouterKit
[194 / 224] HybridRouterKitTesting
[200 / 224] HybridRouterKit
[210 / 266]
[222 / 266]
[225 / 266]
[229 / 266]
[230 / 266] HybridRouterKit
[235 / 266] HybridRouterKitTesting-product
[236 / 266]
[238 / 266]
[239 / 266]
[244 / 266]
[254 / 266] HybridRouterKitSiri
[254 / 266] HybridRouterKitVoice
[260 / 266] HybridRouterKitSiri
[260 / 266] HybridRouterKitVoice
[263 / 266] HybridRouterKitSiri
Build complete! (16.69 sec)
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Knowledge/KnowledgeBase.swift:283:5: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it
281 |
282 |     /// Asks once for the English part-of-speech model, which a device may not have downloaded.
283 |     nonisolated(unsafe) private static let requestTaggerAssets: Void = {
    |     `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it
284 |         NLTagger.requestAssets(for: .english, tagScheme: .lexicalClass) { _, _ in }
285 |     }()
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Knowledge/KnowledgeBase.swift:283:5: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it
281 |
282 |     /// Asks once for the English part-of-speech model, which a device may not have downloaded.
283 |     nonisolated(unsafe) private static let requestTaggerAssets: Void = {
    |     `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it
284 |         NLTagger.requestAssets(for: .english, tagScheme: .lexicalClass) { _, _ in }
285 |     }()
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKitSiri/SiriAnswerCard.swift:89:55: warning: call to main actor-isolated initializer 'init(answer:)' in a synchronous nonisolated context [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call\ActorIsolatedCall]8;;\]
 12 |     let answer: SiriAnswer
 13 |
 14 |     public init(answer: SiriAnswer) {
    |            |- note: calls to initializer 'init(answer:)' from outside of its actor context are implicitly asynchronous
    |            `- note: main actor isolation inferred from conformance to protocol 'View'
 15 |         self.answer = answer
 16 |     }
    :
 86 |     /// The intent result for this answer: the text for Siri as the value, the dialog, and the
 87 |     /// card. An App Intent's `perform()` can return it directly.
 88 |     public func intentResult() -> some IntentResult & ReturnsValue<String> & ProvidesDialog & ShowsSnippetView {
    |                 `- note: add '@MainActor' to make instance method 'intentResult()' part of global actor 'MainActor'
 89 |         .result(value: forSiri, dialog: dialog, view: SiriAnswerCard(answer: self))
    |                                                       `- warning: call to main actor-isolated initializer 'init(answer:)' in a synchronous nonisolated context [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call\ActorIsolatedCall]8;;\]
 90 |     }
 91 | }
[#ActorIsolatedCall]: <https://docs.swift.org/compiler/documentation/diagnostics/actor-isolated-call>
Build complete.
{
  "dependencies" : [
    {
      "identity" : "claudeforfoundationmodels",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.2.2",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/anthropics/ClaudeForFoundationModels"
    }
  ],
  "manifest_display_name" : "HybridRouterKit",
  "name" : "HybridRouterKit",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "27.0"
    },
    {
      "name" : "macos",
      "version" : "27.0"
    }
  ],
  "products" : [
    {
      "name" : "HybridRouterKit",
      "targets" : [
        "HybridRouterKit"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "HybridRouterKitVoice",
      "targets" : [
        "HybridRouterKitVoice"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "HybridRouterKitSiri",
      "targets" : [
        "HybridRouterKitSiri"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "HybridRouterKitTesting",
      "targets" : [
        "HybridRouterKitTesting"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "6"
  ],
  "targets" : [
    {
      "c99name" : "HybridRouterKitVoice",
      "module_type" : "SwiftTarget",
      "name" : "HybridRouterKitVoice",
      "path" : "Packages/HybridRouterKit/Sources/HybridRouterKitVoice",
      "product_memberships" : [
        "HybridRouterKitVoice"
      ],
      "sources" : [
        "HybridAssistant+Voice.swift",
        "VoiceInput.swift"
      ],
      "target_dependencies" : [
        "HybridRouterKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "HybridRouterKitTests",
      "module_type" : "SwiftTarget",
      "name" : "HybridRouterKitTests",
      "path" : "Packages/HybridRouterKit/Tests/HybridRouterKitTests",
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Tests/HybridRouterKitTests/Fixtures",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "AttachmentsAndToolsTests.swift",
        "BusyModelTests.swift",
        "ClaudeAuthSourceTests.swift",
        "EscalationPolicyTests.swift",
        "FollowUpTests.swift",
        "HistoryPolicyTests.swift",
        "HybridAssistantTests.swift",
        "KnowledgeTests.swift",
        "MultiTurnBenchmarkTests.swift",
        "OpenRouterAuthTests.swift",
        "OpenRouterTests.swift",
        "PrivacyGuardTests.swift",
        "PrivateHistoryTests.swift",
        "ProviderTests.swift",
        "QualityBenchmarkTests.swift",
        "RouteTests.swift",
        "RoutedSessionTests.swift",
        "RouterTests.swift",
        "RoutingBenchmarkTests.swift",
        "RoutingRulesTests.swift",
        "RoutingSupportTests.swift",
        "SiriTests.swift",
        "SnapshotTests.swift",
        "TelemetryTests.swift",
        "TranscriptPersistenceTests.swift",
        "TranscriptScoreTests.swift",
        "TurnCoordinatorTests.swift",
        "VoiceInputTests.swift"
      ],
      "target_dependencies" : [
        "HybridRouterKit",
        "HybridRouterKitTesting",
        "HybridRouterKitVoice",
        "HybridRouterKitSiri"
      ],
      "type" : "test"
    },
    {
      "c99name" : "HybridRouterKitTesting",
      "module_type" : "SwiftTarget",
      "name" : "HybridRouterKitTesting",
      "path" : "Packages/HybridRouterKit/Sources/HybridRouterKitTesting",
      "product_memberships" : [
        "HybridRouterKitTesting"
      ],
      "sources" : [
        "FakeAnswerJudge.swift",
        "FakeClassifier.swift",
        "FakeLanguageModel.swift",
        "FixedTokenEstimator.swift"
      ],
      "target_dependencies" : [
        "HybridRouterKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "HybridRouterKitSiri",
      "module_type" : "SwiftTarget",
      "name" : "HybridRouterKitSiri",
      "path" : "Packages/HybridRouterKit/Sources/HybridRouterKitSiri",
      "product_memberships" : [
        "HybridRouterKitSiri"
      ],
      "sources" : [
        "SiriAnswer.swift",
        "SiriAnswerCard.swift",
        "SiriAssistant.swift"
      ],
      "target_dependencies" : [
        "HybridRouterKit"
      ],
      "type" : "library"
    },
    {
      "c99name" : "HybridRouterKit",
      "module_type" : "SwiftTarget",
      "name" : "HybridRouterKit",
      "path" : "Packages/HybridRouterKit/Sources/HybridRouterKit",
      "product_dependencies" : [
        "ClaudeForFoundationModels"
      ],
      "product_memberships" : [
        "HybridRouterKit",
        "HybridRouterKitVoice",
        "HybridRouterKitSiri",
        "HybridRouterKitTesting"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Resources/prices.json",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Assistant/HybridAssistant.swift",
        "Auth/ClaudeAuthSource.swift",
        "Auth/KeychainStore.swift",
        "Auth/OpenRouterAuth.swift",
        "Evaluation/AnswerJudge.swift",
        "Evaluation/CloudTap.swift",
        "Evaluation/MultiTurnBenchmark.swift",
        "Evaluation/MultiTurnBenchmarkRunner.swift",
        "Evaluation/MultiTurnReport.swift",
        "Evaluation/QualityBenchmark.swift",
        "Evaluation/QualityBenchmarkRunner.swift",
        "Evaluation/QualityReplay.swift",
        "Evaluation/QualityReport.swift",
        "Evaluation/RetrievalSpike.swift",
        "Evaluation/TranscriptScore.swift",
        "Knowledge/KnowledgeBase.swift",
        "Knowledge/KnowledgeSearchTool.swift",
        "Privacy/PrivacyGuard.swift",
        "Privacy/PrivateDataSignal.swift",
        "Providers/AppleCloudProvider.swift",
        "Providers/ClaudeProvider.swift",
        "Providers/MisplacedProvider.swift",
        "Providers/ModelProvider.swift",
        "Providers/MuseProvider.swift",
        "Providers/OnDeviceProvider.swift",
        "Providers/OpenRouterModel.swift",
        "Providers/OpenRouterProvider.swift",
        "Providers/SimulatedAppleCloudProvider.swift",
        "Routing/CloudModel.swift",
        "Routing/EscalationPolicy.swift",
        "Routing/ExactAnswerDetector.swift",
        "Routing/NetworkMonitor.swift",
        "Routing/Route.swift",
        "Routing/RouteClassification.swift",
        "Routing/RouteClassifier.swift",
        "Routing/RouteDecision.swift",
        "Routing/Router.swift",
        "Routing/RoutingBenchmark.swift",
        "Routing/RoutingRules.swift",
        "Routing/TokenEstimator.swift",
        "Session/ConversationSnapshot.swift",
        "Session/HistoryPolicy.swift",
        "Session/ImageInput.swift",
        "Session/PrivacyLedger.swift",
        "Session/RoutedSession.swift",
        "Session/RoutingProfile.swift",
        "Session/TurnCoordinator.swift",
        "Telemetry/CostTable.swift",
        "Telemetry/StepMetrics.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "6.2"
}
✅  Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path:  $PWD/.docs/jaichaudhry/hybridrouter/main
Repository:               jaichaudhry/HybridRouter
Swift version used:       6.4
Target:                   HybridRouterKit
Extracting symbol information for 'HybridRouterKit'...
Finished extracting symbol information for 'HybridRouterKit'. (3.52s)
Building documentation for 'HybridRouterKit'...
warning: Parameter 'prompt' is missing documentation
   --> ../Assistant/HybridAssistant.swift:211:97-211:97
209 |     ///   - route: run on this route instead of letting the router pick.
210 |     ///   - streams: stream the reply from the model internally. Pass false from the background,
211 +     ///     e.g. an App Intent: Apple's on-device model rate-limits background apps that stream.
212 |     public func respond(
213 |         to prompt: String,
warning: Parameter 'images' is missing documentation
   --> ../Assistant/HybridAssistant.swift:211:97-211:97
209 |     ///   - route: run on this route instead of letting the router pick.
210 |     ///   - streams: stream the reply from the model internally. Pass false from the background,
211 +     ///     e.g. an App Intent: Apple's on-device model rate-limits background apps that stream.
212 |     public func respond(
213 |         to prompt: String,
warning: Parameter 'onProgress' is missing documentation
  --> ../Evaluation/MultiTurnBenchmarkRunner.swift:82:67-82:67
80 |     /// Runs every conversation and strategy not already in the result. Stops early when cancelled
81 |     /// or at the cap.
82 +     /// - Parameter only: conversation IDs to run, or nil for all.
   |                                                                   ╰─suggestion: Document 'onProgress' parameter
83 |     @discardableResult
84 |     public func run(
warning: Parameter 'dataset' is missing documentation
  --> ../Evaluation/MultiTurnReport.swift:77:79-77:79
75 |     public let judgeErrors: Int
76 |
77 +     /// - Parameter split: "tuning", "heldout", or nil for every conversation.
   |         ╰─suggestion: Document 'dataset' parameter
78 |     public init(_ run: MultiTurnBenchmark.RunResult, dataset: MultiTurnBenchmark.Dataset, split: String? = nil) {
79 |         self.split = split
warning: Parameter 'run' is missing documentation
  --> ../Evaluation/MultiTurnReport.swift:77:79-77:79
75 |     public let judgeErrors: Int
76 |
77 +     /// - Parameter split: "tuning", "heldout", or nil for every conversation.
   |         ╰─suggestion: Document 'run' parameter
78 |     public init(_ run: MultiTurnBenchmark.RunResult, dataset: MultiTurnBenchmark.Dataset, split: String? = nil) {
79 |         self.split = split
warning: Parameter 'device, classifierName, judgeModelID' not found in initializer declaration
  --> ../Evaluation/QualityBenchmarkRunner.swift:46:13-46:49
44 |     ///   - checkpoint: where to save progress after each prompt. An existing checkpoint with the
45 |     ///     same columns is resumed.
46 +     ///   - device, classifierName, judgeModelID: recorded in the result.
   |             ╰─suggestion: Replace 'device, classifierName, judgeModelID' with 'classifierName'
47 |     ///   - detectsExactAnswers: route with the exact-answer detector, as the app does.
48 |     ///   - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
warning: Parameter 'judgeModelID' is missing documentation
  --> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 |     ///   - detectsExactAnswers: route with the exact-answer detector, as the app does.
   |           ╰─suggestion: Document 'judgeModelID' parameter
48 |     ///   - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 +     ///     as not measured. Nil measures every available one.
50 |     public init(
51 |         makeSession: @escaping SessionFactory,
warning: Parameter 'classifier' is missing documentation
  --> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 |     ///   - detectsExactAnswers: route with the exact-answer detector, as the app does.
48 |     ///   - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 +     ///     as not measured. Nil measures every available one.
50 |     public init(
51 |         makeSession: @escaping SessionFactory,
warning: Parameter 'mapping' is missing documentation
  --> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 |     ///   - detectsExactAnswers: route with the exact-answer detector, as the app does.
48 |     ///   - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 +     ///     as not measured. Nil measures every available one.
50 |     public init(
51 |         makeSession: @escaping SessionFactory,
warning: Parameter 'startedAt' is missing documentation
  --> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 |     ///   - detectsExactAnswers: route with the exact-answer detector, as the app does.
   |           ╰─suggestion: Document 'startedAt' parameter
48 |     ///   - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 +     ///     as not measured. Nil measures every available one.
50 |     public init(
51 |         makeSession: @escaping SessionFactory,
warning: Parameter 'judge' is missing documentation
  --> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 |     ///   - detectsExactAnswers: route with the exact-answer detector, as the app does.
48 |     ///   - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 +     ///     as not measured. Nil measures every available one.
50 |     public init(
51 |         makeSession: @escaping SessionFactory,
warning: Parameter 'classifierName' is missing documentation
  --> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 |     ///   - detectsExactAnswers: route with the exact-answer detector, as the app does.
   |           ╰─suggestion: Document 'classifierName' parameter
48 |     ///   - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 +     ///     as not measured. Nil measures every available one.
50 |     public init(
51 |         makeSession: @escaping SessionFactory,
warning: Parameter 'device' is missing documentation
  --> ../Evaluation/QualityBenchmarkRunner.swift:49:63-49:63
47 |     ///   - detectsExactAnswers: route with the exact-answer detector, as the app does.
   |           ╰─suggestion: Document 'device' parameter
48 |     ///   - only: measure just these columns, e.g. to skip Opus on a test set. Others are listed
49 +     ///     as not measured. Nil measures every available one.
50 |     public init(
51 |         makeSession: @escaping SessionFactory,
warning: Parameter 'run' is missing documentation
  --> ../Evaluation/QualityReplay.swift:11:65-11:65
9  |     /// The router sees the run's measured routes as available, as in the benchmark itself.
10 |     /// - Parameter split: replay only this split's prompts ("heldout", "tuning", "test"); others
   |         ╰─suggestion: Document 'run' parameter
11 +     ///   are dropped from the result. Nil replays every prompt.
12 |     @MainActor
13 |     public static func reroute(
warning: Parameter 'onProgress' is missing documentation
  --> ../Evaluation/QualityReplay.swift:11:65-11:65
9  |     /// The router sees the run's measured routes as available, as in the benchmark itself.
10 |     /// - Parameter split: replay only this split's prompts ("heldout", "tuning", "test"); others
11 +     ///   are dropped from the result. Nil replays every prompt.
   |                                                                 ╰─suggestion: Document 'onProgress' parameter
12 |     @MainActor
13 |     public static func reroute(
warning: Parameter 'router' is missing documentation
  --> ../Evaluation/QualityReplay.swift:11:65-11:65
9  |     /// The router sees the run's measured routes as available, as in the benchmark itself.
10 |     /// - Parameter split: replay only this split's prompts ("heldout", "tuning", "test"); others
   |         ╰─suggestion: Document 'router' parameter
11 +     ///   are dropped from the result. Nil replays every prompt.
12 |     @MainActor
13 |     public static func reroute(
warning: Parameter 'run' is missing documentation
  --> ../Evaluation/QualityReport.swift:78:73-78:73
76 |     public let judgeErrors: Int
77 |
78 +     /// - Parameter split: "tuning", "heldout", or nil for every prompt.
   |         ╰─suggestion: Document 'run' parameter
79 |     public init(_ run: QualityBenchmark.RunResult, split: String? = nil) {
80 |         let cases = run.cases.filter { split == nil || $0.case.split == split }
warning: Parameter 'question' is missing documentation
   --> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 |     /// - Parameters:
333 |     ///   - routesByDocuments: false routes as 0.9.0 did, for comparison.
    |           ╰─suggestion: Document 'question' parameter
334 +     ///   - onDeviceOnly: answer on-device whatever the router would pick.
335 |     /// - Returns: the row, and what judging cost.
336 |     public static func runAssistant(
warning: Parameter 'knowledge' is missing documentation
   --> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 |     /// - Parameters:
333 |     ///   - routesByDocuments: false routes as 0.9.0 did, for comparison.
    |           ╰─suggestion: Document 'knowledge' parameter
334 +     ///   - onDeviceOnly: answer on-device whatever the router would pick.
335 |     /// - Returns: the row, and what judging cost.
336 |     public static func runAssistant(
warning: Parameter 'markers' is missing documentation
   --> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 |     /// - Parameters:
333 |     ///   - routesByDocuments: false routes as 0.9.0 did, for comparison.
334 +     ///   - onDeviceOnly: answer on-device whatever the router would pick.
    |                                                                           ╰─suggestion: Document 'markers' parameter
335 |     /// - Returns: the row, and what judging cost.
336 |     public static func runAssistant(
warning: Parameter 'judge' is missing documentation
   --> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 |     /// - Parameters:
333 |     ///   - routesByDocuments: false routes as 0.9.0 did, for comparison.
334 +     ///   - onDeviceOnly: answer on-device whatever the router would pick.
    |                                                                           ╰─suggestion: Document 'judge' parameter
335 |     /// - Returns: the row, and what judging cost.
336 |     public static func runAssistant(
warning: Parameter 'arm' is missing documentation
   --> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 |     /// - Parameters:
333 |     ///   - routesByDocuments: false routes as 0.9.0 did, for comparison.
    |           ╰─suggestion: Document 'arm' parameter
334 +     ///   - onDeviceOnly: answer on-device whatever the router would pick.
335 |     /// - Returns: the row, and what judging cost.
336 |     public static func runAssistant(
warning: Parameter 'cloud' is missing documentation
   --> ../Evaluation/RetrievalSpike.swift:334:75-334:75
332 |     /// - Parameters:
333 |     ///   - routesByDocuments: false routes as 0.9.0 did, for comparison.
    |           ╰─suggestion: Document 'cloud' parameter
334 +     ///   - onDeviceOnly: answer on-device whatever the router would pick.
335 |     /// - Returns: the row, and what judging cost.
336 |     public static func runAssistant(
warning: Parameter 'documents' is missing documentation
  --> ../Knowledge/KnowledgeBase.swift:88:89-88:89
86 |     ///   - about: what the documents are, for the search tool's description.
87 |     ///   - domain: keeps this base's documents apart from others in the app's index.
   |           ╰─suggestion: Document 'documents' parameter
88 +     ///   - privateLabel: the reason shown when a private document keeps a turn private.
89 |     public convenience init(
90 |         about: String,
warning: Parameter 'limit' is missing documentation
   --> ../Knowledge/KnowledgeBase.swift:143:97-143:97
141 |
142 |     /// Passages matching the query's keywords, best first.
143 +     /// - Parameter includesPrivate: false leaves private documents out, as for the cloud route.
    |                                                                                                 ╰─suggestion: Document 'limit' parameter
144 |     public func search(_ query: String, includesPrivate: Bool = true, limit: Int = 3) async throws -> [Hit] {
145 |         try await ranked(query, includesPrivate: includesPrivate).hits.prefix(limit).map { $0 }
warning: Parameter 'query' is missing documentation
   --> ../Knowledge/KnowledgeBase.swift:143:97-143:97
141 |
142 |     /// Passages matching the query's keywords, best first.
143 +     /// - Parameter includesPrivate: false leaves private documents out, as for the cloud route.
    |         ╰─suggestion: Document 'query' parameter
144 |     public func search(_ query: String, includesPrivate: Bool = true, limit: Int = 3) async throws -> [Hit] {
145 |         try await ranked(query, includesPrivate: includesPrivate).hits.prefix(limit).map { $0 }
warning: Parameter 'knowledge' is missing documentation
  --> ../Knowledge/KnowledgeSearchTool.swift:25:88-25:88
23 |     ///   - includesPrivate: false for a tool the cloud model may call.
   |           ╰─suggestion: Document 'knowledge' parameter
24 |     ///   - limit: passages returned per search.
25 +     ///   - privateData: the session's signal, told when a private passage is returned.
26 |     public init(knowledge: KnowledgeBase, includesPrivate: Bool, limit: Int = 3, privateData: PrivateDataSignal? = nil) {
27 |         self.knowledge = knowledge
warning: Parameter 'route' is missing documentation
  --> ../Routing/CloudModel.swift:76:60-76:60
74 |
75 |     /// - Parameter modelID: the model that actually answered, if known, so earlier replies keep
   |         ╰─suggestion: Document 'route' parameter
76 +     ///   their own name after the cloud model is switched.
77 |     public func name(_ route: Route, modelID: String? = nil) -> String {
78 |         guard route == .cloud else { return route.displayName }
warning: Parameter 'prompt' is missing documentation
   --> ../Routing/RoutingRules.swift:156:105-156:105
154 | public enum RouteMention {
155 |     /// The single route named in the message, or nil if none or both are named.
156 +     /// - Parameter cloudName: the name of the model serving the cloud route, e.g. from ``RouteLabels``.
    |         ╰─suggestion: Document 'prompt' parameter
157 |     public static func named(in prompt: String, cloudName: String? = nil) -> Route? {
158 |         let cloudNames = ["claude", "muse wonder"] + aliases(of: cloudName)
warning: Parameter 'onDevice, appleCloud, cloud' not found in initializer declaration
  --> ../Session/RoutedSession.swift:56:13-56:40
54 |     ///   - privateData: shared with tools that may return private data; a turn they mark is
55 |     ///     withheld from the cloud model afterwards.
56 +     ///   - onDevice, appleCloud, cloud: the provider for each route. A provider whose `route`
   |             ╰─suggestion: Replace 'onDevice, appleCloud, cloud' with 'onDevice'
57 |     ///     doesn't match its slot reports the route unavailable instead of serving it.
58 |     ///   - history: an earlier conversation to continue.
warning: Parameter 'appleCloud' is missing documentation
  --> ../Session/RoutedSession.swift:61:98-61:98
59 |     ///   - privatePromptIDs: earlier private turns, from ``privatePromptIDs`` on the old session.
60 |     ///   - historyPolicy: how much of the conversation each route sees.
61 +     ///   - lastRoute: the route of the last reply in `history`, so a bare follow-up stays on it.
62 |     public init(
63 |         instructions: String,
warning: Parameter 'onDevice' is missing documentation
  --> ../Session/RoutedSession.swift:61:98-61:98
59 |     ///   - privatePromptIDs: earlier private turns, from ``privatePromptIDs`` on the old session.
60 |     ///   - historyPolicy: how much of the conversation each route sees.
61 +     ///   - lastRoute: the route of the last reply in `history`, so a bare follow-up stays on it.
62 |     public init(
63 |         instructions: String,
warning: Parameter 'cloud' is missing documentation
  --> ../Session/RoutedSession.swift:61:98-61:98
59 |     ///   - privatePromptIDs: earlier private turns, from ``privatePromptIDs`` on the old session.
60 |     ///   - historyPolicy: how much of the conversation each route sees.
61 +     ///   - lastRoute: the route of the last reply in `history`, so a bare follow-up stays on it.
62 |     public init(
63 |         instructions: String,
warning: Parameter 'costTable' is missing documentation
  --> ../Session/RoutedSession.swift:61:98-61:98
59 |     ///   - privatePromptIDs: earlier private turns, from ``privatePromptIDs`` on the old session.
60 |     ///   - historyPolicy: how much of the conversation each route sees.
61 +     ///   - lastRoute: the route of the last reply in `history`, so a bare follow-up stays on it.
62 |     public init(
63 |         instructions: String,
Finished building documentation for 'HybridRouterKit' (0.76s)
Generated documentation archive at:
  /Users/admin/builder/spi-builder-workspace/.docs/jaichaudhry/hybridrouter/main
Fetching https://github.com/swiftlang/swift-docc-plugin
Updating https://github.com/anthropics/ClaudeForFoundationModels
Updated https://github.com/anthropics/ClaudeForFoundationModels (0.53s)
[1/2345] Fetching swift-docc-plugin
Fetched https://github.com/swiftlang/swift-docc-plugin (1.42s)
Computing version for https://github.com/anthropics/ClaudeForFoundationModels
Computed https://github.com/anthropics/ClaudeForFoundationModels at 0.2.3 (2.04s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.5.0 (2.52s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3864] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit (1.40s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (2.22s)
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.5.0
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
Building for debugging...
[Planning deferred tasks]
[18 / 41]
[20 / 43] Snippets
[30 / 92]
[35 / 92]
[38 / 92]
[39 / 92]
[43 / 92]
[45 / 92]
[48 / 92]
[51 / 92]
[53 / 92]
[54 / 92]
[65 / 92] SymbolKit
[84 / 93] SymbolKit
[92 / 97] Snippets
[93 / 97] snippet-extract-product
[95 / 97] snippet-extract-product
Build complete! (4.51 sec)
Building for debugging...
[Planning 49 / 124]
[Planning deferred tasks]
[4 / 30] ClaudeAPI
[15 / 41] ClaudeAPI
[20 / 37] ClaudeForFoundationModels
[31 / 48] ClaudeForFoundationModels
[35 / 45] ClaudeForFoundationModels
[36 / 44] HybridRouterKit
[47 / 55] HybridRouterKit
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Knowledge/KnowledgeBase.swift:283:5: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it
281 |
282 |     /// Asks once for the English part-of-speech model, which a device may not have downloaded.
283 |     nonisolated(unsafe) private static let requestTaggerAssets: Void = {
    |     `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it
284 |         NLTagger.requestAssets(for: .english, tagScheme: .lexicalClass) { _, _ in }
285 |     }()
/Users/admin/builder/spi-builder-workspace/Packages/HybridRouterKit/Sources/HybridRouterKit/Knowledge/KnowledgeBase.swift:283:5: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it
281 |
282 |     /// Asks once for the English part-of-speech model, which a device may not have downloaded.
283 |     nonisolated(unsafe) private static let requestTaggerAssets: Void = {
    |     `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Void', consider removing it
284 |         NLTagger.requestAssets(for: .english, tagScheme: .lexicalClass) { _, _ in }
285 |     }()
[49 / 51] HybridRouterKit
Build complete! (3.29 sec)
    2796
18	/Users/admin/builder/spi-builder-workspace/.docs/jaichaudhry/hybridrouter/main
✅  Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/jaichaudhry/hybridrouter/main
File count: 2796
Doc size:   18.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -jaichaudhry-hybridrouter-main-a7bbfae8.zip to presigned URL
Starting upload of 3882229 bytes...
Upload completed successfully
Done.