The Swift Package Index logo.Swift Package Index

Build Information

Failed to build SwiftGodotBuilder, reference main (b88257), with Swift 6.2 for macOS (SPM) on 1 Jan 2026 23:19:21 UTC.

Build Command

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

Build Log

112 |     // Left = +/- pi
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:113:35: error: value of type 'Facing' has no member 'angle'
111 |
112 |     // Left = +/- pi
113 |     XCTAssertTrue(abs(Facing.left.angle) > pi - 0.1, "Left angle should be near +/- pi")
    |                                   `- error: value of type 'Facing' has no member 'angle'
114 |   }
115 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:118:24: error: type 'Facing' has no member 'from'
116 |   func testFromDirectionHorizontal() {
117 |     // Horizontal mode only returns left or right
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
    |                        `- error: type 'Facing' has no member 'from'
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:118:55: error: cannot infer contextual base in reference to member 'horizontal'
116 |   func testFromDirectionHorizontal() {
117 |     // Horizontal mode only returns left or right
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
    |                                                       `- error: cannot infer contextual base in reference to member 'horizontal'
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:119:23: error: type 'Facing' has no member 'from'
117 |     // Horizontal mode only returns left or right
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
    |                       `- error: type 'Facing' has no member 'from'
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
121 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:119:55: error: cannot infer contextual base in reference to member 'horizontal'
117 |     // Horizontal mode only returns left or right
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
    |                                                       `- error: cannot infer contextual base in reference to member 'horizontal'
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
121 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:120:23: error: type 'Facing' has no member 'from'
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
    |                       `- error: type 'Facing' has no member 'from'
121 |
122 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:120:58: error: cannot infer contextual base in reference to member 'horizontal'
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
    |                                                          `- error: cannot infer contextual base in reference to member 'horizontal'
121 |
122 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:122:5: error: generic parameter 'T' could not be inferred
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
121 |
122 |     XCTAssertEqual(right, .right)
    |     `- error: generic parameter 'T' could not be inferred
123 |     XCTAssertEqual(left, .left)
124 |     XCTAssertEqual(diag, .right, "Positive x should give right in horizontal mode")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:123:5: error: generic parameter 'T' could not be inferred
121 |
122 |     XCTAssertEqual(right, .right)
123 |     XCTAssertEqual(left, .left)
    |     `- error: generic parameter 'T' could not be inferred
124 |     XCTAssertEqual(diag, .right, "Positive x should give right in horizontal mode")
125 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:124:5: error: generic parameter 'T' could not be inferred
122 |     XCTAssertEqual(right, .right)
123 |     XCTAssertEqual(left, .left)
124 |     XCTAssertEqual(diag, .right, "Positive x should give right in horizontal mode")
    |     `- error: generic parameter 'T' could not be inferred
125 |   }
126 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:129:21: error: type 'Facing' has no member 'from'
127 |   func testFromDirectionVertical() {
128 |     // Vertical mode only returns up or down
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
    |                     `- error: type 'Facing' has no member 'from'
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:129:53: error: cannot infer contextual base in reference to member 'vertical'
127 |   func testFromDirectionVertical() {
128 |     // Vertical mode only returns up or down
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
    |                                                     `- error: cannot infer contextual base in reference to member 'vertical'
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:130:23: error: type 'Facing' has no member 'from'
128 |     // Vertical mode only returns up or down
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
    |                       `- error: type 'Facing' has no member 'from'
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:130:54: error: cannot infer contextual base in reference to member 'vertical'
128 |     // Vertical mode only returns up or down
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
    |                                                      `- error: cannot infer contextual base in reference to member 'vertical'
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:131:23: error: type 'Facing' has no member 'from'
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
    |                       `- error: type 'Facing' has no member 'from'
132 |
133 |     XCTAssertEqual(up, .up)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:131:58: error: cannot infer contextual base in reference to member 'vertical'
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
    |                                                          `- error: cannot infer contextual base in reference to member 'vertical'
132 |
133 |     XCTAssertEqual(up, .up)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:133:5: error: generic parameter 'T' could not be inferred
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
132 |
133 |     XCTAssertEqual(up, .up)
    |     `- error: generic parameter 'T' could not be inferred
134 |     XCTAssertEqual(down, .down)
135 |     XCTAssertEqual(diag, .down, "Positive y should give down in vertical mode")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:134:5: error: generic parameter 'T' could not be inferred
132 |
133 |     XCTAssertEqual(up, .up)
134 |     XCTAssertEqual(down, .down)
    |     `- error: generic parameter 'T' could not be inferred
135 |     XCTAssertEqual(diag, .down, "Positive y should give down in vertical mode")
136 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:135:5: error: generic parameter 'T' could not be inferred
133 |     XCTAssertEqual(up, .up)
134 |     XCTAssertEqual(down, .down)
135 |     XCTAssertEqual(diag, .down, "Positive y should give down in vertical mode")
    |     `- error: generic parameter 'T' could not be inferred
136 |   }
137 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:140:24: error: type 'Facing' has no member 'from'
138 |   func testFromDirectionFourWay() {
139 |     // Four-way picks dominant axis
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
    |                        `- error: type 'Facing' has no member 'from'
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:140:57: error: cannot infer contextual base in reference to member 'fourWay'
138 |   func testFromDirectionFourWay() {
139 |     // Four-way picks dominant axis
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
    |                                                         `- error: cannot infer contextual base in reference to member 'fourWay'
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:141:23: error: type 'Facing' has no member 'from'
139 |     // Four-way picks dominant axis
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
    |                       `- error: type 'Facing' has no member 'from'
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:141:57: error: cannot infer contextual base in reference to member 'fourWay'
139 |     // Four-way picks dominant axis
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
    |                                                         `- error: cannot infer contextual base in reference to member 'fourWay'
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:142:21: error: type 'Facing' has no member 'from'
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
    |                     `- error: type 'Facing' has no member 'from'
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
144 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:142:55: error: cannot infer contextual base in reference to member 'fourWay'
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
    |                                                       `- error: cannot infer contextual base in reference to member 'fourWay'
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
144 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:143:23: error: type 'Facing' has no member 'from'
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
    |                       `- error: type 'Facing' has no member 'from'
144 |
145 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:143:56: error: cannot infer contextual base in reference to member 'fourWay'
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
    |                                                        `- error: cannot infer contextual base in reference to member 'fourWay'
144 |
145 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:145:5: error: generic parameter 'T' could not be inferred
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
144 |
145 |     XCTAssertEqual(right, .right)
    |     `- error: generic parameter 'T' could not be inferred
146 |     XCTAssertEqual(left, .left)
147 |     XCTAssertEqual(up, .up)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:146:5: error: generic parameter 'T' could not be inferred
144 |
145 |     XCTAssertEqual(right, .right)
146 |     XCTAssertEqual(left, .left)
    |     `- error: generic parameter 'T' could not be inferred
147 |     XCTAssertEqual(up, .up)
148 |     XCTAssertEqual(down, .down)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:147:5: error: generic parameter 'T' could not be inferred
145 |     XCTAssertEqual(right, .right)
146 |     XCTAssertEqual(left, .left)
147 |     XCTAssertEqual(up, .up)
    |     `- error: generic parameter 'T' could not be inferred
148 |     XCTAssertEqual(down, .down)
149 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:148:5: error: generic parameter 'T' could not be inferred
146 |     XCTAssertEqual(left, .left)
147 |     XCTAssertEqual(up, .up)
148 |     XCTAssertEqual(down, .down)
    |     `- error: generic parameter 'T' could not be inferred
149 |   }
150 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:153:26: error: type 'Facing' has no member 'from'
151 |   func testFromDirectionEightWay() {
152 |     // Eight-way should return diagonals for diagonal inputs
153 |     let upRight = Facing.from(direction: [1, -1], axes: .eightWay)
    |                          `- error: type 'Facing' has no member 'from'
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
155 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:153:58: error: cannot infer contextual base in reference to member 'eightWay'
151 |   func testFromDirectionEightWay() {
152 |     // Eight-way should return diagonals for diagonal inputs
153 |     let upRight = Facing.from(direction: [1, -1], axes: .eightWay)
    |                                                          `- error: cannot infer contextual base in reference to member 'eightWay'
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
155 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:154:27: error: type 'Facing' has no member 'from'
152 |     // Eight-way should return diagonals for diagonal inputs
153 |     let upRight = Facing.from(direction: [1, -1], axes: .eightWay)
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
    |                           `- error: type 'Facing' has no member 'from'
155 |
156 |     XCTAssertEqual(upRight, .upRight)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:154:59: error: cannot infer contextual base in reference to member 'eightWay'
152 |     // Eight-way should return diagonals for diagonal inputs
153 |     let upRight = Facing.from(direction: [1, -1], axes: .eightWay)
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
    |                                                           `- error: cannot infer contextual base in reference to member 'eightWay'
155 |
156 |     XCTAssertEqual(upRight, .upRight)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:156:5: error: generic parameter 'T' could not be inferred
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
155 |
156 |     XCTAssertEqual(upRight, .upRight)
    |     `- error: generic parameter 'T' could not be inferred
157 |     XCTAssertEqual(downLeft, .downLeft)
158 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:157:5: error: generic parameter 'T' could not be inferred
155 |
156 |     XCTAssertEqual(upRight, .upRight)
157 |     XCTAssertEqual(downLeft, .downLeft)
    |     `- error: generic parameter 'T' could not be inferred
158 |
159 |     // Cardinal directions should still work
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:160:24: error: type 'Facing' has no member 'from'
158 |
159 |     // Cardinal directions should still work
160 |     let right = Facing.from(direction: [1, 0], axes: .eightWay)
    |                        `- error: type 'Facing' has no member 'from'
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
162 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:160:55: error: cannot infer contextual base in reference to member 'eightWay'
158 |
159 |     // Cardinal directions should still work
160 |     let right = Facing.from(direction: [1, 0], axes: .eightWay)
    |                                                       `- error: cannot infer contextual base in reference to member 'eightWay'
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
162 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:161:21: error: type 'Facing' has no member 'from'
159 |     // Cardinal directions should still work
160 |     let right = Facing.from(direction: [1, 0], axes: .eightWay)
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
    |                     `- error: type 'Facing' has no member 'from'
162 |
163 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:161:53: error: cannot infer contextual base in reference to member 'eightWay'
159 |     // Cardinal directions should still work
160 |     let right = Facing.from(direction: [1, 0], axes: .eightWay)
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
    |                                                     `- error: cannot infer contextual base in reference to member 'eightWay'
162 |
163 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:163:5: error: generic parameter 'T' could not be inferred
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
162 |
163 |     XCTAssertEqual(right, .right)
    |     `- error: generic parameter 'T' could not be inferred
164 |     XCTAssertEqual(up, .up)
165 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:164:5: error: generic parameter 'T' could not be inferred
162 |
163 |     XCTAssertEqual(right, .right)
164 |     XCTAssertEqual(up, .up)
    |     `- error: generic parameter 'T' could not be inferred
165 |   }
166 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:169:23: error: type 'Facing' has no member 'from'
167 |   func testFromZeroVector() {
168 |     // Zero or near-zero vectors should default to .right
169 |     let zero = Facing.from(direction: [0, 0], axes: .eightWay)
    |                       `- error: type 'Facing' has no member 'from'
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
171 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:169:54: error: cannot infer contextual base in reference to member 'eightWay'
167 |   func testFromZeroVector() {
168 |     // Zero or near-zero vectors should default to .right
169 |     let zero = Facing.from(direction: [0, 0], axes: .eightWay)
    |                                                      `- error: cannot infer contextual base in reference to member 'eightWay'
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
171 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:170:23: error: type 'Facing' has no member 'from'
168 |     // Zero or near-zero vectors should default to .right
169 |     let zero = Facing.from(direction: [0, 0], axes: .eightWay)
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
    |                       `- error: type 'Facing' has no member 'from'
171 |
172 |     XCTAssertEqual(zero, .right, "Zero vector should default to right")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:170:60: error: cannot infer contextual base in reference to member 'eightWay'
168 |     // Zero or near-zero vectors should default to .right
169 |     let zero = Facing.from(direction: [0, 0], axes: .eightWay)
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
    |                                                            `- error: cannot infer contextual base in reference to member 'eightWay'
171 |
172 |     XCTAssertEqual(zero, .right, "Zero vector should default to right")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:172:5: error: generic parameter 'T' could not be inferred
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
171 |
172 |     XCTAssertEqual(zero, .right, "Zero vector should default to right")
    |     `- error: generic parameter 'T' could not be inferred
173 |     XCTAssertEqual(tiny, .right, "Tiny vector should default to right")
174 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:173:5: error: generic parameter 'T' could not be inferred
171 |
172 |     XCTAssertEqual(zero, .right, "Zero vector should default to right")
173 |     XCTAssertEqual(tiny, .right, "Tiny vector should default to right")
    |     `- error: generic parameter 'T' could not be inferred
174 |   }
175 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
[1443/1463] Compiling SwiftGodotBuilderTestExtension FacingTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:29:30: error: type 'Facing' has no member 'upLeft'
 27 |     // Left-facing directions have sign -1
 28 |     assertApproxEqual(Facing.left.sign, Float(-1))
 29 |     assertApproxEqual(Facing.upLeft.sign, Float(-1))
    |                              `- error: type 'Facing' has no member 'upLeft'
 30 |     assertApproxEqual(Facing.downLeft.sign, Float(-1))
 31 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:30:30: error: type 'Facing' has no member 'downLeft'
 28 |     assertApproxEqual(Facing.left.sign, Float(-1))
 29 |     assertApproxEqual(Facing.upLeft.sign, Float(-1))
 30 |     assertApproxEqual(Facing.downLeft.sign, Float(-1))
    |                              `- error: type 'Facing' has no member 'downLeft'
 31 |
 32 |     // Right-facing directions have sign 1
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:34:30: error: type 'Facing' has no member 'upRight'
 32 |     // Right-facing directions have sign 1
 33 |     assertApproxEqual(Facing.right.sign, Float(1))
 34 |     assertApproxEqual(Facing.upRight.sign, Float(1))
    |                              `- error: type 'Facing' has no member 'upRight'
 35 |     assertApproxEqual(Facing.downRight.sign, Float(1))
 36 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:35:30: error: type 'Facing' has no member 'downRight'
 33 |     assertApproxEqual(Facing.right.sign, Float(1))
 34 |     assertApproxEqual(Facing.upRight.sign, Float(1))
 35 |     assertApproxEqual(Facing.downRight.sign, Float(1))
    |                              `- error: type 'Facing' has no member 'downRight'
 36 |
 37 |     // Pure vertical directions have sign 0
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:38:30: error: type 'Facing' has no member 'up'
 36 |
 37 |     // Pure vertical directions have sign 0
 38 |     assertApproxEqual(Facing.up.sign, Float(0))
    |                              `- error: type 'Facing' has no member 'up'
 39 |     assertApproxEqual(Facing.down.sign, Float(0))
 40 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:39:30: error: type 'Facing' has no member 'down'
 37 |     // Pure vertical directions have sign 0
 38 |     assertApproxEqual(Facing.up.sign, Float(0))
 39 |     assertApproxEqual(Facing.down.sign, Float(0))
    |                              `- error: type 'Facing' has no member 'down'
 40 |   }
 41 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:44:30: error: type 'Facing' has no member 'up'
 42 |   func testVerticalSignValues() {
 43 |     // Up-facing directions have verticalSign -1
 44 |     assertApproxEqual(Facing.up.verticalSign, Float(-1))
    |                              `- error: type 'Facing' has no member 'up'
 45 |     assertApproxEqual(Facing.upLeft.verticalSign, Float(-1))
 46 |     assertApproxEqual(Facing.upRight.verticalSign, Float(-1))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:45:30: error: type 'Facing' has no member 'upLeft'
 43 |     // Up-facing directions have verticalSign -1
 44 |     assertApproxEqual(Facing.up.verticalSign, Float(-1))
 45 |     assertApproxEqual(Facing.upLeft.verticalSign, Float(-1))
    |                              `- error: type 'Facing' has no member 'upLeft'
 46 |     assertApproxEqual(Facing.upRight.verticalSign, Float(-1))
 47 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:46:30: error: type 'Facing' has no member 'upRight'
 44 |     assertApproxEqual(Facing.up.verticalSign, Float(-1))
 45 |     assertApproxEqual(Facing.upLeft.verticalSign, Float(-1))
 46 |     assertApproxEqual(Facing.upRight.verticalSign, Float(-1))
    |                              `- error: type 'Facing' has no member 'upRight'
 47 |
 48 |     // Down-facing directions have verticalSign 1
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:49:30: error: type 'Facing' has no member 'down'
 47 |
 48 |     // Down-facing directions have verticalSign 1
 49 |     assertApproxEqual(Facing.down.verticalSign, Float(1))
    |                              `- error: type 'Facing' has no member 'down'
 50 |     assertApproxEqual(Facing.downLeft.verticalSign, Float(1))
 51 |     assertApproxEqual(Facing.downRight.verticalSign, Float(1))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:50:30: error: type 'Facing' has no member 'downLeft'
 48 |     // Down-facing directions have verticalSign 1
 49 |     assertApproxEqual(Facing.down.verticalSign, Float(1))
 50 |     assertApproxEqual(Facing.downLeft.verticalSign, Float(1))
    |                              `- error: type 'Facing' has no member 'downLeft'
 51 |     assertApproxEqual(Facing.downRight.verticalSign, Float(1))
 52 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:51:30: error: type 'Facing' has no member 'downRight'
 49 |     assertApproxEqual(Facing.down.verticalSign, Float(1))
 50 |     assertApproxEqual(Facing.downLeft.verticalSign, Float(1))
 51 |     assertApproxEqual(Facing.downRight.verticalSign, Float(1))
    |                              `- error: type 'Facing' has no member 'downRight'
 52 |
 53 |     // Pure horizontal directions have verticalSign 0
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:54:35: error: value of type 'Facing' has no member 'verticalSign'
 52 |
 53 |     // Pure horizontal directions have verticalSign 0
 54 |     assertApproxEqual(Facing.left.verticalSign, Float(0))
    |                                   `- error: value of type 'Facing' has no member 'verticalSign'
 55 |     assertApproxEqual(Facing.right.verticalSign, Float(0))
 56 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:55:36: error: value of type 'Facing' has no member 'verticalSign'
 53 |     // Pure horizontal directions have verticalSign 0
 54 |     assertApproxEqual(Facing.left.verticalSign, Float(0))
 55 |     assertApproxEqual(Facing.right.verticalSign, Float(0))
    |                                    `- error: value of type 'Facing' has no member 'verticalSign'
 56 |   }
 57 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:60:31: error: value of type 'Facing' has no member 'isLeft'
 58 |   func testIsLeftRight() {
 59 |     // isLeft checks
 60 |     XCTAssertTrue(Facing.left.isLeft)
    |                               `- error: value of type 'Facing' has no member 'isLeft'
 61 |     XCTAssertTrue(Facing.upLeft.isLeft)
 62 |     XCTAssertTrue(Facing.downLeft.isLeft)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:61:26: error: type 'Facing' has no member 'upLeft'
 59 |     // isLeft checks
 60 |     XCTAssertTrue(Facing.left.isLeft)
 61 |     XCTAssertTrue(Facing.upLeft.isLeft)
    |                          `- error: type 'Facing' has no member 'upLeft'
 62 |     XCTAssertTrue(Facing.downLeft.isLeft)
 63 |     XCTAssertFalse(Facing.right.isLeft)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:62:26: error: type 'Facing' has no member 'downLeft'
 60 |     XCTAssertTrue(Facing.left.isLeft)
 61 |     XCTAssertTrue(Facing.upLeft.isLeft)
 62 |     XCTAssertTrue(Facing.downLeft.isLeft)
    |                          `- error: type 'Facing' has no member 'downLeft'
 63 |     XCTAssertFalse(Facing.right.isLeft)
 64 |     XCTAssertFalse(Facing.up.isLeft)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:63:33: error: value of type 'Facing' has no member 'isLeft'
 61 |     XCTAssertTrue(Facing.upLeft.isLeft)
 62 |     XCTAssertTrue(Facing.downLeft.isLeft)
 63 |     XCTAssertFalse(Facing.right.isLeft)
    |                                 `- error: value of type 'Facing' has no member 'isLeft'
 64 |     XCTAssertFalse(Facing.up.isLeft)
 65 |     XCTAssertFalse(Facing.down.isLeft)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:64:27: error: type 'Facing' has no member 'up'
 62 |     XCTAssertTrue(Facing.downLeft.isLeft)
 63 |     XCTAssertFalse(Facing.right.isLeft)
 64 |     XCTAssertFalse(Facing.up.isLeft)
    |                           `- error: type 'Facing' has no member 'up'
 65 |     XCTAssertFalse(Facing.down.isLeft)
 66 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:65:27: error: type 'Facing' has no member 'down'
 63 |     XCTAssertFalse(Facing.right.isLeft)
 64 |     XCTAssertFalse(Facing.up.isLeft)
 65 |     XCTAssertFalse(Facing.down.isLeft)
    |                           `- error: type 'Facing' has no member 'down'
 66 |
 67 |     // isRight checks
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:68:32: error: value of type 'Facing' has no member 'isRight'
 66 |
 67 |     // isRight checks
 68 |     XCTAssertTrue(Facing.right.isRight)
    |                                `- error: value of type 'Facing' has no member 'isRight'
 69 |     XCTAssertTrue(Facing.upRight.isRight)
 70 |     XCTAssertTrue(Facing.downRight.isRight)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:69:26: error: type 'Facing' has no member 'upRight'
 67 |     // isRight checks
 68 |     XCTAssertTrue(Facing.right.isRight)
 69 |     XCTAssertTrue(Facing.upRight.isRight)
    |                          `- error: type 'Facing' has no member 'upRight'
 70 |     XCTAssertTrue(Facing.downRight.isRight)
 71 |     XCTAssertFalse(Facing.left.isRight)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:70:26: error: type 'Facing' has no member 'downRight'
 68 |     XCTAssertTrue(Facing.right.isRight)
 69 |     XCTAssertTrue(Facing.upRight.isRight)
 70 |     XCTAssertTrue(Facing.downRight.isRight)
    |                          `- error: type 'Facing' has no member 'downRight'
 71 |     XCTAssertFalse(Facing.left.isRight)
 72 |     XCTAssertFalse(Facing.up.isRight)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:71:32: error: value of type 'Facing' has no member 'isRight'
 69 |     XCTAssertTrue(Facing.upRight.isRight)
 70 |     XCTAssertTrue(Facing.downRight.isRight)
 71 |     XCTAssertFalse(Facing.left.isRight)
    |                                `- error: value of type 'Facing' has no member 'isRight'
 72 |     XCTAssertFalse(Facing.up.isRight)
 73 |     XCTAssertFalse(Facing.down.isRight)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:72:27: error: type 'Facing' has no member 'up'
 70 |     XCTAssertTrue(Facing.downRight.isRight)
 71 |     XCTAssertFalse(Facing.left.isRight)
 72 |     XCTAssertFalse(Facing.up.isRight)
    |                           `- error: type 'Facing' has no member 'up'
 73 |     XCTAssertFalse(Facing.down.isRight)
 74 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:73:27: error: type 'Facing' has no member 'down'
 71 |     XCTAssertFalse(Facing.left.isRight)
 72 |     XCTAssertFalse(Facing.up.isRight)
 73 |     XCTAssertFalse(Facing.down.isRight)
    |                           `- error: type 'Facing' has no member 'down'
 74 |   }
 75 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:78:30: error: type 'Facing' has no member 'up'
 76 |   func testVectorCardinals() {
 77 |     // Cardinal directions should be unit vectors
 78 |     assertApproxEqual(Facing.up.vector, Vector2(x: 0, y: -1))
    |                              `- error: type 'Facing' has no member 'up'
 79 |     assertApproxEqual(Facing.down.vector, Vector2(x: 0, y: 1))
 80 |     assertApproxEqual(Facing.left.vector, Vector2(x: -1, y: 0))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:79:30: error: type 'Facing' has no member 'down'
 77 |     // Cardinal directions should be unit vectors
 78 |     assertApproxEqual(Facing.up.vector, Vector2(x: 0, y: -1))
 79 |     assertApproxEqual(Facing.down.vector, Vector2(x: 0, y: 1))
    |                              `- error: type 'Facing' has no member 'down'
 80 |     assertApproxEqual(Facing.left.vector, Vector2(x: -1, y: 0))
 81 |     assertApproxEqual(Facing.right.vector, Vector2(x: 1, y: 0))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:80:35: error: value of type 'Facing' has no member 'vector'
 78 |     assertApproxEqual(Facing.up.vector, Vector2(x: 0, y: -1))
 79 |     assertApproxEqual(Facing.down.vector, Vector2(x: 0, y: 1))
 80 |     assertApproxEqual(Facing.left.vector, Vector2(x: -1, y: 0))
    |                                   `- error: value of type 'Facing' has no member 'vector'
 81 |     assertApproxEqual(Facing.right.vector, Vector2(x: 1, y: 0))
 82 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:81:36: error: value of type 'Facing' has no member 'vector'
 79 |     assertApproxEqual(Facing.down.vector, Vector2(x: 0, y: 1))
 80 |     assertApproxEqual(Facing.left.vector, Vector2(x: -1, y: 0))
 81 |     assertApproxEqual(Facing.right.vector, Vector2(x: 1, y: 0))
    |                                    `- error: value of type 'Facing' has no member 'vector'
 82 |   }
 83 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:88:36: error: type 'Facing' has no member 'upLeft'
 86 |     let sqrt2Inv = Float(1.0 / Foundation.sqrt(2.0))
 87 |
 88 |     assertApproxEqual(Float(Facing.upLeft.vector.length()), Float(1.0))
    |                                    `- error: type 'Facing' has no member 'upLeft'
 89 |     assertApproxEqual(Float(Facing.upRight.vector.length()), Float(1.0))
 90 |     assertApproxEqual(Float(Facing.downLeft.vector.length()), Float(1.0))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:89:36: error: type 'Facing' has no member 'upRight'
 87 |
 88 |     assertApproxEqual(Float(Facing.upLeft.vector.length()), Float(1.0))
 89 |     assertApproxEqual(Float(Facing.upRight.vector.length()), Float(1.0))
    |                                    `- error: type 'Facing' has no member 'upRight'
 90 |     assertApproxEqual(Float(Facing.downLeft.vector.length()), Float(1.0))
 91 |     assertApproxEqual(Float(Facing.downRight.vector.length()), Float(1.0))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:90:36: error: type 'Facing' has no member 'downLeft'
 88 |     assertApproxEqual(Float(Facing.upLeft.vector.length()), Float(1.0))
 89 |     assertApproxEqual(Float(Facing.upRight.vector.length()), Float(1.0))
 90 |     assertApproxEqual(Float(Facing.downLeft.vector.length()), Float(1.0))
    |                                    `- error: type 'Facing' has no member 'downLeft'
 91 |     assertApproxEqual(Float(Facing.downRight.vector.length()), Float(1.0))
 92 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:91:36: error: type 'Facing' has no member 'downRight'
 89 |     assertApproxEqual(Float(Facing.upRight.vector.length()), Float(1.0))
 90 |     assertApproxEqual(Float(Facing.downLeft.vector.length()), Float(1.0))
 91 |     assertApproxEqual(Float(Facing.downRight.vector.length()), Float(1.0))
    |                                    `- error: type 'Facing' has no member 'downRight'
 92 |
 93 |     // Check components
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:94:30: error: type 'Facing' has no member 'upLeft'
 92 |
 93 |     // Check components
 94 |     assertApproxEqual(Facing.upLeft.vector.x, -sqrt2Inv)
    |                              `- error: type 'Facing' has no member 'upLeft'
 95 |     assertApproxEqual(Facing.upLeft.vector.y, -sqrt2Inv)
 96 |     assertApproxEqual(Facing.downRight.vector.x, sqrt2Inv)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:95:30: error: type 'Facing' has no member 'upLeft'
 93 |     // Check components
 94 |     assertApproxEqual(Facing.upLeft.vector.x, -sqrt2Inv)
 95 |     assertApproxEqual(Facing.upLeft.vector.y, -sqrt2Inv)
    |                              `- error: type 'Facing' has no member 'upLeft'
 96 |     assertApproxEqual(Facing.downRight.vector.x, sqrt2Inv)
 97 |     assertApproxEqual(Facing.downRight.vector.y, sqrt2Inv)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:96:30: error: type 'Facing' has no member 'downRight'
 94 |     assertApproxEqual(Facing.upLeft.vector.x, -sqrt2Inv)
 95 |     assertApproxEqual(Facing.upLeft.vector.y, -sqrt2Inv)
 96 |     assertApproxEqual(Facing.downRight.vector.x, sqrt2Inv)
    |                              `- error: type 'Facing' has no member 'downRight'
 97 |     assertApproxEqual(Facing.downRight.vector.y, sqrt2Inv)
 98 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:97:30: error: type 'Facing' has no member 'downRight'
 95 |     assertApproxEqual(Facing.upLeft.vector.y, -sqrt2Inv)
 96 |     assertApproxEqual(Facing.downRight.vector.x, sqrt2Inv)
 97 |     assertApproxEqual(Facing.downRight.vector.y, sqrt2Inv)
    |                              `- error: type 'Facing' has no member 'downRight'
 98 |   }
 99 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:104:36: error: value of type 'Facing' has no member 'angle'
102 |
103 |     // Right = 0 radians
104 |     assertApproxEqual(Facing.right.angle, Float(0), epsilon: 0.01)
    |                                    `- error: value of type 'Facing' has no member 'angle'
105 |
106 |     // Down = pi/2
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:107:30: error: type 'Facing' has no member 'down'
105 |
106 |     // Down = pi/2
107 |     assertApproxEqual(Facing.down.angle, pi / 2, epsilon: 0.01)
    |                              `- error: type 'Facing' has no member 'down'
108 |
109 |     // Up = -pi/2
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:110:30: error: type 'Facing' has no member 'up'
108 |
109 |     // Up = -pi/2
110 |     assertApproxEqual(Facing.up.angle, -pi / 2, epsilon: 0.01)
    |                              `- error: type 'Facing' has no member 'up'
111 |
112 |     // Left = +/- pi
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:113:35: error: value of type 'Facing' has no member 'angle'
111 |
112 |     // Left = +/- pi
113 |     XCTAssertTrue(abs(Facing.left.angle) > pi - 0.1, "Left angle should be near +/- pi")
    |                                   `- error: value of type 'Facing' has no member 'angle'
114 |   }
115 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:118:24: error: type 'Facing' has no member 'from'
116 |   func testFromDirectionHorizontal() {
117 |     // Horizontal mode only returns left or right
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
    |                        `- error: type 'Facing' has no member 'from'
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:118:55: error: cannot infer contextual base in reference to member 'horizontal'
116 |   func testFromDirectionHorizontal() {
117 |     // Horizontal mode only returns left or right
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
    |                                                       `- error: cannot infer contextual base in reference to member 'horizontal'
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:119:23: error: type 'Facing' has no member 'from'
117 |     // Horizontal mode only returns left or right
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
    |                       `- error: type 'Facing' has no member 'from'
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
121 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:119:55: error: cannot infer contextual base in reference to member 'horizontal'
117 |     // Horizontal mode only returns left or right
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
    |                                                       `- error: cannot infer contextual base in reference to member 'horizontal'
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
121 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:120:23: error: type 'Facing' has no member 'from'
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
    |                       `- error: type 'Facing' has no member 'from'
121 |
122 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:120:58: error: cannot infer contextual base in reference to member 'horizontal'
118 |     let right = Facing.from(direction: [1, 0], axes: .horizontal)
119 |     let left = Facing.from(direction: [-1, 0], axes: .horizontal)
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
    |                                                          `- error: cannot infer contextual base in reference to member 'horizontal'
121 |
122 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:122:5: error: generic parameter 'T' could not be inferred
120 |     let diag = Facing.from(direction: [0.5, 0.9], axes: .horizontal)
121 |
122 |     XCTAssertEqual(right, .right)
    |     `- error: generic parameter 'T' could not be inferred
123 |     XCTAssertEqual(left, .left)
124 |     XCTAssertEqual(diag, .right, "Positive x should give right in horizontal mode")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:123:5: error: generic parameter 'T' could not be inferred
121 |
122 |     XCTAssertEqual(right, .right)
123 |     XCTAssertEqual(left, .left)
    |     `- error: generic parameter 'T' could not be inferred
124 |     XCTAssertEqual(diag, .right, "Positive x should give right in horizontal mode")
125 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:124:5: error: generic parameter 'T' could not be inferred
122 |     XCTAssertEqual(right, .right)
123 |     XCTAssertEqual(left, .left)
124 |     XCTAssertEqual(diag, .right, "Positive x should give right in horizontal mode")
    |     `- error: generic parameter 'T' could not be inferred
125 |   }
126 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:129:21: error: type 'Facing' has no member 'from'
127 |   func testFromDirectionVertical() {
128 |     // Vertical mode only returns up or down
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
    |                     `- error: type 'Facing' has no member 'from'
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:129:53: error: cannot infer contextual base in reference to member 'vertical'
127 |   func testFromDirectionVertical() {
128 |     // Vertical mode only returns up or down
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
    |                                                     `- error: cannot infer contextual base in reference to member 'vertical'
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:130:23: error: type 'Facing' has no member 'from'
128 |     // Vertical mode only returns up or down
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
    |                       `- error: type 'Facing' has no member 'from'
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:130:54: error: cannot infer contextual base in reference to member 'vertical'
128 |     // Vertical mode only returns up or down
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
    |                                                      `- error: cannot infer contextual base in reference to member 'vertical'
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:131:23: error: type 'Facing' has no member 'from'
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
    |                       `- error: type 'Facing' has no member 'from'
132 |
133 |     XCTAssertEqual(up, .up)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:131:58: error: cannot infer contextual base in reference to member 'vertical'
129 |     let up = Facing.from(direction: [0, -1], axes: .vertical)
130 |     let down = Facing.from(direction: [0, 1], axes: .vertical)
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
    |                                                          `- error: cannot infer contextual base in reference to member 'vertical'
132 |
133 |     XCTAssertEqual(up, .up)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:133:5: error: generic parameter 'T' could not be inferred
131 |     let diag = Facing.from(direction: [0.9, 0.5], axes: .vertical)
132 |
133 |     XCTAssertEqual(up, .up)
    |     `- error: generic parameter 'T' could not be inferred
134 |     XCTAssertEqual(down, .down)
135 |     XCTAssertEqual(diag, .down, "Positive y should give down in vertical mode")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:134:5: error: generic parameter 'T' could not be inferred
132 |
133 |     XCTAssertEqual(up, .up)
134 |     XCTAssertEqual(down, .down)
    |     `- error: generic parameter 'T' could not be inferred
135 |     XCTAssertEqual(diag, .down, "Positive y should give down in vertical mode")
136 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:135:5: error: generic parameter 'T' could not be inferred
133 |     XCTAssertEqual(up, .up)
134 |     XCTAssertEqual(down, .down)
135 |     XCTAssertEqual(diag, .down, "Positive y should give down in vertical mode")
    |     `- error: generic parameter 'T' could not be inferred
136 |   }
137 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:140:24: error: type 'Facing' has no member 'from'
138 |   func testFromDirectionFourWay() {
139 |     // Four-way picks dominant axis
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
    |                        `- error: type 'Facing' has no member 'from'
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:140:57: error: cannot infer contextual base in reference to member 'fourWay'
138 |   func testFromDirectionFourWay() {
139 |     // Four-way picks dominant axis
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
    |                                                         `- error: cannot infer contextual base in reference to member 'fourWay'
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:141:23: error: type 'Facing' has no member 'from'
139 |     // Four-way picks dominant axis
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
    |                       `- error: type 'Facing' has no member 'from'
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:141:57: error: cannot infer contextual base in reference to member 'fourWay'
139 |     // Four-way picks dominant axis
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
    |                                                         `- error: cannot infer contextual base in reference to member 'fourWay'
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:142:21: error: type 'Facing' has no member 'from'
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
    |                     `- error: type 'Facing' has no member 'from'
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
144 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:142:55: error: cannot infer contextual base in reference to member 'fourWay'
140 |     let right = Facing.from(direction: [1, 0.3], axes: .fourWay)
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
    |                                                       `- error: cannot infer contextual base in reference to member 'fourWay'
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
144 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:143:23: error: type 'Facing' has no member 'from'
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
    |                       `- error: type 'Facing' has no member 'from'
144 |
145 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:143:56: error: cannot infer contextual base in reference to member 'fourWay'
141 |     let left = Facing.from(direction: [-1, 0.3], axes: .fourWay)
142 |     let up = Facing.from(direction: [0.3, -1], axes: .fourWay)
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
    |                                                        `- error: cannot infer contextual base in reference to member 'fourWay'
144 |
145 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:145:5: error: generic parameter 'T' could not be inferred
143 |     let down = Facing.from(direction: [0.3, 1], axes: .fourWay)
144 |
145 |     XCTAssertEqual(right, .right)
    |     `- error: generic parameter 'T' could not be inferred
146 |     XCTAssertEqual(left, .left)
147 |     XCTAssertEqual(up, .up)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:146:5: error: generic parameter 'T' could not be inferred
144 |
145 |     XCTAssertEqual(right, .right)
146 |     XCTAssertEqual(left, .left)
    |     `- error: generic parameter 'T' could not be inferred
147 |     XCTAssertEqual(up, .up)
148 |     XCTAssertEqual(down, .down)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:147:5: error: generic parameter 'T' could not be inferred
145 |     XCTAssertEqual(right, .right)
146 |     XCTAssertEqual(left, .left)
147 |     XCTAssertEqual(up, .up)
    |     `- error: generic parameter 'T' could not be inferred
148 |     XCTAssertEqual(down, .down)
149 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:148:5: error: generic parameter 'T' could not be inferred
146 |     XCTAssertEqual(left, .left)
147 |     XCTAssertEqual(up, .up)
148 |     XCTAssertEqual(down, .down)
    |     `- error: generic parameter 'T' could not be inferred
149 |   }
150 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:153:26: error: type 'Facing' has no member 'from'
151 |   func testFromDirectionEightWay() {
152 |     // Eight-way should return diagonals for diagonal inputs
153 |     let upRight = Facing.from(direction: [1, -1], axes: .eightWay)
    |                          `- error: type 'Facing' has no member 'from'
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
155 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:153:58: error: cannot infer contextual base in reference to member 'eightWay'
151 |   func testFromDirectionEightWay() {
152 |     // Eight-way should return diagonals for diagonal inputs
153 |     let upRight = Facing.from(direction: [1, -1], axes: .eightWay)
    |                                                          `- error: cannot infer contextual base in reference to member 'eightWay'
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
155 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:154:27: error: type 'Facing' has no member 'from'
152 |     // Eight-way should return diagonals for diagonal inputs
153 |     let upRight = Facing.from(direction: [1, -1], axes: .eightWay)
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
    |                           `- error: type 'Facing' has no member 'from'
155 |
156 |     XCTAssertEqual(upRight, .upRight)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:154:59: error: cannot infer contextual base in reference to member 'eightWay'
152 |     // Eight-way should return diagonals for diagonal inputs
153 |     let upRight = Facing.from(direction: [1, -1], axes: .eightWay)
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
    |                                                           `- error: cannot infer contextual base in reference to member 'eightWay'
155 |
156 |     XCTAssertEqual(upRight, .upRight)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:156:5: error: generic parameter 'T' could not be inferred
154 |     let downLeft = Facing.from(direction: [-1, 1], axes: .eightWay)
155 |
156 |     XCTAssertEqual(upRight, .upRight)
    |     `- error: generic parameter 'T' could not be inferred
157 |     XCTAssertEqual(downLeft, .downLeft)
158 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:157:5: error: generic parameter 'T' could not be inferred
155 |
156 |     XCTAssertEqual(upRight, .upRight)
157 |     XCTAssertEqual(downLeft, .downLeft)
    |     `- error: generic parameter 'T' could not be inferred
158 |
159 |     // Cardinal directions should still work
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:160:24: error: type 'Facing' has no member 'from'
158 |
159 |     // Cardinal directions should still work
160 |     let right = Facing.from(direction: [1, 0], axes: .eightWay)
    |                        `- error: type 'Facing' has no member 'from'
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
162 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:160:55: error: cannot infer contextual base in reference to member 'eightWay'
158 |
159 |     // Cardinal directions should still work
160 |     let right = Facing.from(direction: [1, 0], axes: .eightWay)
    |                                                       `- error: cannot infer contextual base in reference to member 'eightWay'
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
162 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:161:21: error: type 'Facing' has no member 'from'
159 |     // Cardinal directions should still work
160 |     let right = Facing.from(direction: [1, 0], axes: .eightWay)
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
    |                     `- error: type 'Facing' has no member 'from'
162 |
163 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:161:53: error: cannot infer contextual base in reference to member 'eightWay'
159 |     // Cardinal directions should still work
160 |     let right = Facing.from(direction: [1, 0], axes: .eightWay)
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
    |                                                     `- error: cannot infer contextual base in reference to member 'eightWay'
162 |
163 |     XCTAssertEqual(right, .right)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:163:5: error: generic parameter 'T' could not be inferred
161 |     let up = Facing.from(direction: [0, -1], axes: .eightWay)
162 |
163 |     XCTAssertEqual(right, .right)
    |     `- error: generic parameter 'T' could not be inferred
164 |     XCTAssertEqual(up, .up)
165 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:164:5: error: generic parameter 'T' could not be inferred
162 |
163 |     XCTAssertEqual(right, .right)
164 |     XCTAssertEqual(up, .up)
    |     `- error: generic parameter 'T' could not be inferred
165 |   }
166 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:169:23: error: type 'Facing' has no member 'from'
167 |   func testFromZeroVector() {
168 |     // Zero or near-zero vectors should default to .right
169 |     let zero = Facing.from(direction: [0, 0], axes: .eightWay)
    |                       `- error: type 'Facing' has no member 'from'
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
171 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:169:54: error: cannot infer contextual base in reference to member 'eightWay'
167 |   func testFromZeroVector() {
168 |     // Zero or near-zero vectors should default to .right
169 |     let zero = Facing.from(direction: [0, 0], axes: .eightWay)
    |                                                      `- error: cannot infer contextual base in reference to member 'eightWay'
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
171 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:170:23: error: type 'Facing' has no member 'from'
168 |     // Zero or near-zero vectors should default to .right
169 |     let zero = Facing.from(direction: [0, 0], axes: .eightWay)
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
    |                       `- error: type 'Facing' has no member 'from'
171 |
172 |     XCTAssertEqual(zero, .right, "Zero vector should default to right")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:170:60: error: cannot infer contextual base in reference to member 'eightWay'
168 |     // Zero or near-zero vectors should default to .right
169 |     let zero = Facing.from(direction: [0, 0], axes: .eightWay)
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
    |                                                            `- error: cannot infer contextual base in reference to member 'eightWay'
171 |
172 |     XCTAssertEqual(zero, .right, "Zero vector should default to right")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:172:5: error: generic parameter 'T' could not be inferred
170 |     let tiny = Facing.from(direction: [0.05, 0.05], axes: .eightWay)
171 |
172 |     XCTAssertEqual(zero, .right, "Zero vector should default to right")
    |     `- error: generic parameter 'T' could not be inferred
173 |     XCTAssertEqual(tiny, .right, "Tiny vector should default to right")
174 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/FacingTests.swift:173:5: error: generic parameter 'T' could not be inferred
171 |
172 |     XCTAssertEqual(zero, .right, "Zero vector should default to right")
173 |     XCTAssertEqual(tiny, .right, "Tiny vector should default to right")
    |     `- error: generic parameter 'T' could not be inferred
174 |   }
175 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
[1444/1465] Emitting module SwiftGodotBuilderTestExtension
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/BehaviorMachineTests.swift:171:50: warning: reference to captured var 'shouldTransition' in concurrently-executing code; this is an error in the Swift 6 language mode [#SendableClosureCaptures]
169 |         Idle()
170 |       }
171 |       .transition(to: TestAIState.patrol) { _ in shouldTransition }
    |                                                  `- warning: reference to captured var 'shouldTransition' in concurrently-executing code; this is an error in the Swift 6 language mode [#SendableClosureCaptures]
172 |
173 |       During(TestAIState.patrol) {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/TestResult.swift:18:14: warning: stored property 'failure' of 'Sendable'-conforming struct 'TestCaseResult' contains non-Sendable type 'TestFailure'; this is an error in the Swift 6 language mode
16 |   public let status: TestStatus
17 |   public let duration: Double
18 |   public let failure: TestFailure?
   |              `- warning: stored property 'failure' of 'Sendable'-conforming struct 'TestCaseResult' contains non-Sendable type 'TestFailure'; this is an error in the Swift 6 language mode
19 |
20 |   public init(name: String, status: TestStatus, duration: Double, failure: TestFailure? = nil) {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/TestContext.swift:31:15: note: consider making struct 'TestFailure' conform to the 'Sendable' protocol
29 |
30 | /// A recorded test failure
31 | public struct TestFailure: Codable {
   |               `- note: consider making struct 'TestFailure' conform to the 'Sendable' protocol
32 |   public let message: String
33 |   public let file: String
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[1445/1465] Compiling SwiftGodotBuilderTestExtension GNodeEventsTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/GNodeTweenTests.swift:21:9: warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
19 |
20 |     // Test the property-based tweenToggle API using TweenProp.Scale
21 |     let node = Node2D$()
   |         `- warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
22 |       .tweenToggle(isActive, TweenProp.Scale.self,
23 |         whenTrue: [1.2, 1.2], whenFalse: [1.0, 1.0],
[1446/1465] Compiling SwiftGodotBuilderTestExtension GNodeSignalsTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/GNodeTweenTests.swift:21:9: warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
19 |
20 |     // Test the property-based tweenToggle API using TweenProp.Scale
21 |     let node = Node2D$()
   |         `- warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
22 |       .tweenToggle(isActive, TweenProp.Scale.self,
23 |         whenTrue: [1.2, 1.2], whenFalse: [1.0, 1.0],
[1447/1465] Compiling SwiftGodotBuilderTestExtension GNodeTweenTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/GNodeTweenTests.swift:21:9: warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
19 |
20 |     // Test the property-based tweenToggle API using TweenProp.Scale
21 |     let node = Node2D$()
   |         `- warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
22 |       .tweenToggle(isActive, TweenProp.Scale.self,
23 |         whenTrue: [1.2, 1.2], whenFalse: [1.0, 1.0],
[1448/1465] Compiling SwiftGodotBuilderTestExtension GViewTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ObjectPoolTests.swift:90:9: warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
 88 |     XCTAssertEqual(PooledNode.acquireCount, 0, "onAcquire not called during preload")
 89 |
 90 |     let node = pool.acquire()
    |         `- warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
 91 |     XCTAssertEqual(PooledNode.acquireCount, 1, "onAcquire called on acquire")
 92 |   }
[1449/1465] Compiling SwiftGodotBuilderTestExtension ObjectPoolTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ObjectPoolTests.swift:90:9: warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
 88 |     XCTAssertEqual(PooledNode.acquireCount, 0, "onAcquire not called during preload")
 89 |
 90 |     let node = pool.acquire()
    |         `- warning: initialization of immutable value 'node' was never used; consider replacing with assignment to '_' or removing it [#no-usage]
 91 |     XCTAssertEqual(PooledNode.acquireCount, 1, "onAcquire called on acquire")
 92 |   }
[1450/1465] Compiling SwiftGodotBuilderTestExtension TestContext.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/TestResult.swift:18:14: warning: stored property 'failure' of 'Sendable'-conforming struct 'TestCaseResult' contains non-Sendable type 'TestFailure'; this is an error in the Swift 6 language mode
16 |   public let status: TestStatus
17 |   public let duration: Double
18 |   public let failure: TestFailure?
   |              `- warning: stored property 'failure' of 'Sendable'-conforming struct 'TestCaseResult' contains non-Sendable type 'TestFailure'; this is an error in the Swift 6 language mode
19 |
20 |   public init(name: String, status: TestStatus, duration: Double, failure: TestFailure? = nil) {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/TestContext.swift:31:15: note: consider making struct 'TestFailure' conform to the 'Sendable' protocol
29 |
30 | /// A recorded test failure
31 | public struct TestFailure: Codable {
   |               `- note: consider making struct 'TestFailure' conform to the 'Sendable' protocol
32 |   public let message: String
33 |   public let file: String
[1451/1465] Compiling SwiftGodotBuilderTestExtension TestResult.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/TestResult.swift:18:14: warning: stored property 'failure' of 'Sendable'-conforming struct 'TestCaseResult' contains non-Sendable type 'TestFailure'; this is an error in the Swift 6 language mode
16 |   public let status: TestStatus
17 |   public let duration: Double
18 |   public let failure: TestFailure?
   |              `- warning: stored property 'failure' of 'Sendable'-conforming struct 'TestCaseResult' contains non-Sendable type 'TestFailure'; this is an error in the Swift 6 language mode
19 |
20 |   public init(name: String, status: TestStatus, duration: Double, failure: TestFailure? = nil) {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/TestContext.swift:31:15: note: consider making struct 'TestFailure' conform to the 'Sendable' protocol
29 |
30 | /// A recorded test failure
31 | public struct TestFailure: Codable {
   |               `- note: consider making struct 'TestFailure' conform to the 'Sendable' protocol
32 |   public let message: String
33 |   public let file: String
[1452/1465] Compiling SwiftGodotBuilderTestExtension AbilityTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:37:18: error: cannot find 'JumpConfig' in scope
 35 |
 36 |   func testJumpConfigDefaults() {
 37 |     let config = JumpConfig.default
    |                  `- error: cannot find 'JumpConfig' in scope
 38 |
 39 |     assertApproxEqual(config.jumpSpeed, Float(130))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:47:18: error: cannot find 'JumpConfig' in scope
 45 |
 46 |   func testJumpConfigCustom() {
 47 |     let config = JumpConfig(
    |                  `- error: cannot find 'JumpConfig' in scope
 48 |       jumpSpeed: 200,
 49 |       minJumpSpeed: 100,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:63:19: error: cannot find 'JumpAbility' in scope
 61 |
 62 |   func testJumpAbilityInitialState() {
 63 |     let ability = JumpAbility()
    |                   `- error: cannot find 'JumpAbility' in scope
 64 |
 65 |     XCTAssertFalse(ability.isActive, "Jump is instant, not sustained")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:70:19: error: cannot find 'JumpAbility' in scope
 68 |
 69 |   func testJumpAbilityReset() {
 70 |     let ability = JumpAbility()
    |                   `- error: cannot find 'JumpAbility' in scope
 71 |
 72 |     // Request a jump then reset
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:84:18: error: cannot find 'DashConfig' in scope
 82 |
 83 |   func testDashConfigDefaults() {
 84 |     let config = DashConfig.default
    |                  `- error: cannot find 'DashConfig' in scope
 85 |
 86 |     assertApproxEqual(config.speed, Float(200))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:92:18: error: cannot find 'DashConfig' in scope
 90 |
 91 |   func testDashConfigCustom() {
 92 |     let config = DashConfig(
    |                  `- error: cannot find 'DashConfig' in scope
 93 |       speed: 300,
 94 |       duration: 0.2,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:104:19: error: cannot find 'DashAbility' in scope
102 |
103 |   func testDashAbilityInitialState() {
104 |     let ability = DashAbility()
    |                   `- error: cannot find 'DashAbility' in scope
105 |
106 |     XCTAssertFalse(ability.isActive)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:111:19: error: cannot find 'DashAbility' in scope
109 |
110 |   func testDashAbilityReset() {
111 |     let ability = DashAbility()
    |                   `- error: cannot find 'DashAbility' in scope
112 |
113 |     // Reset should clear all state
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:123:18: error: cannot find 'WallJumpConfig' in scope
121 |
122 |   func testWallJumpConfigDefaults() {
123 |     let config = WallJumpConfig.default
    |                  `- error: cannot find 'WallJumpConfig' in scope
124 |
125 |     assertApproxEqual(config.wallSlideGravityMultiplier, Float(0.3))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:131:18: error: cannot find 'WallJumpConfig' in scope
129 |
130 |   func testWallJumpConfigCustom() {
131 |     let config = WallJumpConfig(
    |                  `- error: cannot find 'WallJumpConfig' in scope
132 |       wallSlideGravityMultiplier: 0.5,
133 |       wallJumpHorizontalSpeed: 100,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:143:19: error: cannot find 'WallJumpAbility' in scope
141 |
142 |   func testWallJumpAbilityInitialState() {
143 |     let ability = WallJumpAbility()
    |                   `- error: cannot find 'WallJumpAbility' in scope
144 |
145 |     XCTAssertFalse(ability.isActive, "Not wall sliding initially")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:150:18: error: cannot find 'WallJumpConfig' in scope
148 |
149 |   func testWallJumpGravityMultiplier() {
150 |     let config = WallJumpConfig(wallSlideGravityMultiplier: 0.25)
    |                  `- error: cannot find 'WallJumpConfig' in scope
151 |     let ability = WallJumpAbility(config: config)
152 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:151:19: error: cannot find 'WallJumpAbility' in scope
149 |   func testWallJumpGravityMultiplier() {
150 |     let config = WallJumpConfig(wallSlideGravityMultiplier: 0.25)
151 |     let ability = WallJumpAbility(config: config)
    |                   `- error: cannot find 'WallJumpAbility' in scope
152 |
153 |     // When not wall sliding, multiplier is 1.0
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:164:20: error: cannot find 'AbilitySlot' in scope
162 |
163 |   func testAbilitySlotValues() {
164 |     XCTAssertEqual(AbilitySlot.primary.rawValue, 0)
    |                    `- error: cannot find 'AbilitySlot' in scope
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:165:20: error: cannot find 'AbilitySlot' in scope
163 |   func testAbilitySlotValues() {
164 |     XCTAssertEqual(AbilitySlot.primary.rawValue, 0)
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
    |                    `- error: cannot find 'AbilitySlot' in scope
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
167 |     XCTAssertEqual(AbilitySlot.quaternary.rawValue, 3)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:166:20: error: cannot find 'AbilitySlot' in scope
164 |     XCTAssertEqual(AbilitySlot.primary.rawValue, 0)
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
    |                    `- error: cannot find 'AbilitySlot' in scope
167 |     XCTAssertEqual(AbilitySlot.quaternary.rawValue, 3)
168 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:167:20: error: cannot find 'AbilitySlot' in scope
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
167 |     XCTAssertEqual(AbilitySlot.quaternary.rawValue, 3)
    |                    `- error: cannot find 'AbilitySlot' in scope
168 |   }
169 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:171:20: error: cannot find 'AbilitySlot' in scope
169 |
170 |   func testAbilitySlotCaseIterable() {
171 |     let allSlots = AbilitySlot.allCases
    |                    `- error: cannot find 'AbilitySlot' in scope
172 |     XCTAssertEqual(allSlots.count, 4)
173 |   }
[1453/1465] Compiling SwiftGodotBuilderTestExtension ActionsTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:37:18: error: cannot find 'JumpConfig' in scope
 35 |
 36 |   func testJumpConfigDefaults() {
 37 |     let config = JumpConfig.default
    |                  `- error: cannot find 'JumpConfig' in scope
 38 |
 39 |     assertApproxEqual(config.jumpSpeed, Float(130))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:47:18: error: cannot find 'JumpConfig' in scope
 45 |
 46 |   func testJumpConfigCustom() {
 47 |     let config = JumpConfig(
    |                  `- error: cannot find 'JumpConfig' in scope
 48 |       jumpSpeed: 200,
 49 |       minJumpSpeed: 100,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:63:19: error: cannot find 'JumpAbility' in scope
 61 |
 62 |   func testJumpAbilityInitialState() {
 63 |     let ability = JumpAbility()
    |                   `- error: cannot find 'JumpAbility' in scope
 64 |
 65 |     XCTAssertFalse(ability.isActive, "Jump is instant, not sustained")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:70:19: error: cannot find 'JumpAbility' in scope
 68 |
 69 |   func testJumpAbilityReset() {
 70 |     let ability = JumpAbility()
    |                   `- error: cannot find 'JumpAbility' in scope
 71 |
 72 |     // Request a jump then reset
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:84:18: error: cannot find 'DashConfig' in scope
 82 |
 83 |   func testDashConfigDefaults() {
 84 |     let config = DashConfig.default
    |                  `- error: cannot find 'DashConfig' in scope
 85 |
 86 |     assertApproxEqual(config.speed, Float(200))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:92:18: error: cannot find 'DashConfig' in scope
 90 |
 91 |   func testDashConfigCustom() {
 92 |     let config = DashConfig(
    |                  `- error: cannot find 'DashConfig' in scope
 93 |       speed: 300,
 94 |       duration: 0.2,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:104:19: error: cannot find 'DashAbility' in scope
102 |
103 |   func testDashAbilityInitialState() {
104 |     let ability = DashAbility()
    |                   `- error: cannot find 'DashAbility' in scope
105 |
106 |     XCTAssertFalse(ability.isActive)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:111:19: error: cannot find 'DashAbility' in scope
109 |
110 |   func testDashAbilityReset() {
111 |     let ability = DashAbility()
    |                   `- error: cannot find 'DashAbility' in scope
112 |
113 |     // Reset should clear all state
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:123:18: error: cannot find 'WallJumpConfig' in scope
121 |
122 |   func testWallJumpConfigDefaults() {
123 |     let config = WallJumpConfig.default
    |                  `- error: cannot find 'WallJumpConfig' in scope
124 |
125 |     assertApproxEqual(config.wallSlideGravityMultiplier, Float(0.3))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:131:18: error: cannot find 'WallJumpConfig' in scope
129 |
130 |   func testWallJumpConfigCustom() {
131 |     let config = WallJumpConfig(
    |                  `- error: cannot find 'WallJumpConfig' in scope
132 |       wallSlideGravityMultiplier: 0.5,
133 |       wallJumpHorizontalSpeed: 100,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:143:19: error: cannot find 'WallJumpAbility' in scope
141 |
142 |   func testWallJumpAbilityInitialState() {
143 |     let ability = WallJumpAbility()
    |                   `- error: cannot find 'WallJumpAbility' in scope
144 |
145 |     XCTAssertFalse(ability.isActive, "Not wall sliding initially")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:150:18: error: cannot find 'WallJumpConfig' in scope
148 |
149 |   func testWallJumpGravityMultiplier() {
150 |     let config = WallJumpConfig(wallSlideGravityMultiplier: 0.25)
    |                  `- error: cannot find 'WallJumpConfig' in scope
151 |     let ability = WallJumpAbility(config: config)
152 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:151:19: error: cannot find 'WallJumpAbility' in scope
149 |   func testWallJumpGravityMultiplier() {
150 |     let config = WallJumpConfig(wallSlideGravityMultiplier: 0.25)
151 |     let ability = WallJumpAbility(config: config)
    |                   `- error: cannot find 'WallJumpAbility' in scope
152 |
153 |     // When not wall sliding, multiplier is 1.0
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:164:20: error: cannot find 'AbilitySlot' in scope
162 |
163 |   func testAbilitySlotValues() {
164 |     XCTAssertEqual(AbilitySlot.primary.rawValue, 0)
    |                    `- error: cannot find 'AbilitySlot' in scope
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:165:20: error: cannot find 'AbilitySlot' in scope
163 |   func testAbilitySlotValues() {
164 |     XCTAssertEqual(AbilitySlot.primary.rawValue, 0)
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
    |                    `- error: cannot find 'AbilitySlot' in scope
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
167 |     XCTAssertEqual(AbilitySlot.quaternary.rawValue, 3)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:166:20: error: cannot find 'AbilitySlot' in scope
164 |     XCTAssertEqual(AbilitySlot.primary.rawValue, 0)
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
    |                    `- error: cannot find 'AbilitySlot' in scope
167 |     XCTAssertEqual(AbilitySlot.quaternary.rawValue, 3)
168 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:167:20: error: cannot find 'AbilitySlot' in scope
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
167 |     XCTAssertEqual(AbilitySlot.quaternary.rawValue, 3)
    |                    `- error: cannot find 'AbilitySlot' in scope
168 |   }
169 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:171:20: error: cannot find 'AbilitySlot' in scope
169 |
170 |   func testAbilitySlotCaseIterable() {
171 |     let allSlots = AbilitySlot.allCases
    |                    `- error: cannot find 'AbilitySlot' in scope
172 |     XCTAssertEqual(allSlots.count, 4)
173 |   }
[1454/1465] Compiling SwiftGodotBuilderTestExtension ActorDefenseTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:37:18: error: cannot find 'JumpConfig' in scope
 35 |
 36 |   func testJumpConfigDefaults() {
 37 |     let config = JumpConfig.default
    |                  `- error: cannot find 'JumpConfig' in scope
 38 |
 39 |     assertApproxEqual(config.jumpSpeed, Float(130))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:47:18: error: cannot find 'JumpConfig' in scope
 45 |
 46 |   func testJumpConfigCustom() {
 47 |     let config = JumpConfig(
    |                  `- error: cannot find 'JumpConfig' in scope
 48 |       jumpSpeed: 200,
 49 |       minJumpSpeed: 100,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:63:19: error: cannot find 'JumpAbility' in scope
 61 |
 62 |   func testJumpAbilityInitialState() {
 63 |     let ability = JumpAbility()
    |                   `- error: cannot find 'JumpAbility' in scope
 64 |
 65 |     XCTAssertFalse(ability.isActive, "Jump is instant, not sustained")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:70:19: error: cannot find 'JumpAbility' in scope
 68 |
 69 |   func testJumpAbilityReset() {
 70 |     let ability = JumpAbility()
    |                   `- error: cannot find 'JumpAbility' in scope
 71 |
 72 |     // Request a jump then reset
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:84:18: error: cannot find 'DashConfig' in scope
 82 |
 83 |   func testDashConfigDefaults() {
 84 |     let config = DashConfig.default
    |                  `- error: cannot find 'DashConfig' in scope
 85 |
 86 |     assertApproxEqual(config.speed, Float(200))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:92:18: error: cannot find 'DashConfig' in scope
 90 |
 91 |   func testDashConfigCustom() {
 92 |     let config = DashConfig(
    |                  `- error: cannot find 'DashConfig' in scope
 93 |       speed: 300,
 94 |       duration: 0.2,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:104:19: error: cannot find 'DashAbility' in scope
102 |
103 |   func testDashAbilityInitialState() {
104 |     let ability = DashAbility()
    |                   `- error: cannot find 'DashAbility' in scope
105 |
106 |     XCTAssertFalse(ability.isActive)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:111:19: error: cannot find 'DashAbility' in scope
109 |
110 |   func testDashAbilityReset() {
111 |     let ability = DashAbility()
    |                   `- error: cannot find 'DashAbility' in scope
112 |
113 |     // Reset should clear all state
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:123:18: error: cannot find 'WallJumpConfig' in scope
121 |
122 |   func testWallJumpConfigDefaults() {
123 |     let config = WallJumpConfig.default
    |                  `- error: cannot find 'WallJumpConfig' in scope
124 |
125 |     assertApproxEqual(config.wallSlideGravityMultiplier, Float(0.3))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:131:18: error: cannot find 'WallJumpConfig' in scope
129 |
130 |   func testWallJumpConfigCustom() {
131 |     let config = WallJumpConfig(
    |                  `- error: cannot find 'WallJumpConfig' in scope
132 |       wallSlideGravityMultiplier: 0.5,
133 |       wallJumpHorizontalSpeed: 100,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:143:19: error: cannot find 'WallJumpAbility' in scope
141 |
142 |   func testWallJumpAbilityInitialState() {
143 |     let ability = WallJumpAbility()
    |                   `- error: cannot find 'WallJumpAbility' in scope
144 |
145 |     XCTAssertFalse(ability.isActive, "Not wall sliding initially")
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:150:18: error: cannot find 'WallJumpConfig' in scope
148 |
149 |   func testWallJumpGravityMultiplier() {
150 |     let config = WallJumpConfig(wallSlideGravityMultiplier: 0.25)
    |                  `- error: cannot find 'WallJumpConfig' in scope
151 |     let ability = WallJumpAbility(config: config)
152 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:151:19: error: cannot find 'WallJumpAbility' in scope
149 |   func testWallJumpGravityMultiplier() {
150 |     let config = WallJumpConfig(wallSlideGravityMultiplier: 0.25)
151 |     let ability = WallJumpAbility(config: config)
    |                   `- error: cannot find 'WallJumpAbility' in scope
152 |
153 |     // When not wall sliding, multiplier is 1.0
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:164:20: error: cannot find 'AbilitySlot' in scope
162 |
163 |   func testAbilitySlotValues() {
164 |     XCTAssertEqual(AbilitySlot.primary.rawValue, 0)
    |                    `- error: cannot find 'AbilitySlot' in scope
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:165:20: error: cannot find 'AbilitySlot' in scope
163 |   func testAbilitySlotValues() {
164 |     XCTAssertEqual(AbilitySlot.primary.rawValue, 0)
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
    |                    `- error: cannot find 'AbilitySlot' in scope
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
167 |     XCTAssertEqual(AbilitySlot.quaternary.rawValue, 3)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:166:20: error: cannot find 'AbilitySlot' in scope
164 |     XCTAssertEqual(AbilitySlot.primary.rawValue, 0)
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
    |                    `- error: cannot find 'AbilitySlot' in scope
167 |     XCTAssertEqual(AbilitySlot.quaternary.rawValue, 3)
168 |   }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:167:20: error: cannot find 'AbilitySlot' in scope
165 |     XCTAssertEqual(AbilitySlot.secondary.rawValue, 1)
166 |     XCTAssertEqual(AbilitySlot.tertiary.rawValue, 2)
167 |     XCTAssertEqual(AbilitySlot.quaternary.rawValue, 3)
    |                    `- error: cannot find 'AbilitySlot' in scope
168 |   }
169 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/AbilityTests.swift:171:20: error: cannot find 'AbilitySlot' in scope
169 |
170 |   func testAbilitySlotCaseIterable() {
171 |     let allSlots = AbilitySlot.allCases
    |                    `- error: cannot find 'AbilitySlot' in scope
172 |     XCTAssertEqual(allSlots.count, 4)
173 |   }
[1455/1465] Compiling SwiftGodotBuilderTestExtension ActorPhysicsConfigTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:30:31: error: value of type 'ActorPhysicsConfig' has no member 'movementModel'
 28 |
 29 |     // Default movement model is physics
 30 |     if case .physics = config.movementModel {
    |                               `- error: value of type 'ActorPhysicsConfig' has no member 'movementModel'
 31 |       XCTAssertTrue(true)
 32 |     } else {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:37:5: error: generic parameter 'T' could not be inferred
 35 |
 36 |     // Default facing is horizontal
 37 |     XCTAssertEqual(config.facingAxes, .horizontal)
    |     `- error: generic parameter 'T' could not be inferred
 38 |   }
 39 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:37:27: error: value of type 'ActorPhysicsConfig' has no member 'facingAxes'
 35 |
 36 |     // Default facing is horizontal
 37 |     XCTAssertEqual(config.facingAxes, .horizontal)
    |                           `- error: value of type 'ActorPhysicsConfig' has no member 'facingAxes'
 38 |   }
 39 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:41:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 39 |
 40 |   func testPlatformerPreset() {
 41 |     let config = ActorPhysicsConfig.platformer(speed: 100, gravity: 600)
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 42 |
 43 |     assertApproxEqual(config.speed, Float(100))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:45:5: error: generic parameter 'T' could not be inferred
 43 |     assertApproxEqual(config.speed, Float(100))
 44 |     assertApproxEqual(config.gravity ?? 0, Float(600))
 45 |     XCTAssertEqual(config.facingAxes, .horizontal)
    |     `- error: generic parameter 'T' could not be inferred
 46 |
 47 |     if case .physics = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:55:37: error: type 'ActorPhysicsConfig' has no member 'topDown'
 53 |
 54 |   func testTopDownPreset() {
 55 |     let config = ActorPhysicsConfig.topDown(speed: 120, facingAxes: .fourWay)
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'topDown'
 56 |
 57 |     assertApproxEqual(config.speed, Float(120))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:55:70: error: cannot infer contextual base in reference to member 'fourWay'
 53 |
 54 |   func testTopDownPreset() {
 55 |     let config = ActorPhysicsConfig.topDown(speed: 120, facingAxes: .fourWay)
    |                                                                      `- error: cannot infer contextual base in reference to member 'fourWay'
 56 |
 57 |     assertApproxEqual(config.speed, Float(120))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:59:5: error: generic parameter 'T' could not be inferred
 57 |     assertApproxEqual(config.speed, Float(120))
 58 |     assertApproxEqual(config.gravity ?? -1, Float(0), "Top-down should have no gravity")
 59 |     XCTAssertEqual(config.facingAxes, .fourWay)
    |     `- error: generic parameter 'T' could not be inferred
 60 |
 61 |     if case .velocity(let accel, let decel) = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:70:37: error: type 'ActorPhysicsConfig' has no member 'velocity'
 68 |
 69 |   func testVelocityPreset() {
 70 |     let config = ActorPhysicsConfig.velocity(
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'velocity'
 71 |       speed: 150,
 72 |       acceleration: 500,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:74:20: error: cannot infer contextual base in reference to member 'eightWay'
 72 |       acceleration: 500,
 73 |       deceleration: 300,
 74 |       facingAxes: .eightWay
    |                    `- error: cannot infer contextual base in reference to member 'eightWay'
 75 |     )
 76 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:79:5: error: generic parameter 'T' could not be inferred
 77 |     assertApproxEqual(config.speed, Float(150))
 78 |     assertApproxEqual(config.gravity ?? -1, Float(0))
 79 |     XCTAssertEqual(config.facingAxes, .eightWay)
    |     `- error: generic parameter 'T' could not be inferred
 80 |
 81 |     if case .velocity(let accel, let decel) = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:90:37: error: type 'ActorPhysicsConfig' has no member 'grid'
 88 |
 89 |   func testGridPreset() {
 90 |     let config = ActorPhysicsConfig.grid(
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'grid'
 91 |       tileSize: [32, 32],
 92 |       moveDuration: 0.2,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:93:20: error: cannot infer contextual base in reference to member 'fourWay'
 91 |       tileSize: [32, 32],
 92 |       moveDuration: 0.2,
 93 |       facingAxes: .fourWay
    |                    `- error: cannot infer contextual base in reference to member 'fourWay'
 94 |     )
 95 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:98:5: error: generic parameter 'T' could not be inferred
 96 |     assertApproxEqual(config.speed, Float(0), "Grid mode doesn't use speed")
 97 |     assertApproxEqual(config.gravity ?? -1, Float(0))
 98 |     XCTAssertEqual(config.facingAxes, .fourWay)
    |     `- error: generic parameter 'T' could not be inferred
 99 |
100 |     if case .grid(let tileSize, let duration) = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:111:20: error: cannot find 'MovementModel' in scope
109 |   func testMovementModelEquality() {
110 |     // Physics models are equal
111 |     let physics1 = MovementModel.physics
    |                    `- error: cannot find 'MovementModel' in scope
112 |     let physics2 = MovementModel.physics
113 |     XCTAssertEqual(physics1, physics2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:112:20: error: cannot find 'MovementModel' in scope
110 |     // Physics models are equal
111 |     let physics1 = MovementModel.physics
112 |     let physics2 = MovementModel.physics
    |                    `- error: cannot find 'MovementModel' in scope
113 |     XCTAssertEqual(physics1, physics2)
114 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:113:5: error: generic parameter 'T' could not be inferred
111 |     let physics1 = MovementModel.physics
112 |     let physics2 = MovementModel.physics
113 |     XCTAssertEqual(physics1, physics2)
    |     `- error: generic parameter 'T' could not be inferred
114 |
115 |     // Velocity models with same params are equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:116:16: error: cannot find 'MovementModel' in scope
114 |
115 |     // Velocity models with same params are equal
116 |     let vel1 = MovementModel.velocity(acceleration: 100, deceleration: 50)
    |                `- error: cannot find 'MovementModel' in scope
117 |     let vel2 = MovementModel.velocity(acceleration: 100, deceleration: 50)
118 |     XCTAssertEqual(vel1, vel2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:117:16: error: cannot find 'MovementModel' in scope
115 |     // Velocity models with same params are equal
116 |     let vel1 = MovementModel.velocity(acceleration: 100, deceleration: 50)
117 |     let vel2 = MovementModel.velocity(acceleration: 100, deceleration: 50)
    |                `- error: cannot find 'MovementModel' in scope
118 |     XCTAssertEqual(vel1, vel2)
119 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:118:5: error: generic parameter 'T' could not be inferred
116 |     let vel1 = MovementModel.velocity(acceleration: 100, deceleration: 50)
117 |     let vel2 = MovementModel.velocity(acceleration: 100, deceleration: 50)
118 |     XCTAssertEqual(vel1, vel2)
    |     `- error: generic parameter 'T' could not be inferred
119 |
120 |     // Velocity models with different params are not equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:121:16: error: cannot find 'MovementModel' in scope
119 |
120 |     // Velocity models with different params are not equal
121 |     let vel3 = MovementModel.velocity(acceleration: 200, deceleration: 50)
    |                `- error: cannot find 'MovementModel' in scope
122 |     XCTAssertNotEqual(vel1, vel3)
123 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:122:5: error: generic parameter 'T' could not be inferred
120 |     // Velocity models with different params are not equal
121 |     let vel3 = MovementModel.velocity(acceleration: 200, deceleration: 50)
122 |     XCTAssertNotEqual(vel1, vel3)
    |     `- error: generic parameter 'T' could not be inferred
123 |
124 |     // Grid models with same params are equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:267:13: note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
265 | }
266 |
267 | public func XCTAssertNotEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
268 |   assertNotEqual(a, b, message, file: file, line: line)
269 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:125:17: error: cannot find 'MovementModel' in scope
123 |
124 |     // Grid models with same params are equal
125 |     let grid1 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
    |                 `- error: cannot find 'MovementModel' in scope
126 |     let grid2 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
127 |     XCTAssertEqual(grid1, grid2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:126:17: error: cannot find 'MovementModel' in scope
124 |     // Grid models with same params are equal
125 |     let grid1 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
126 |     let grid2 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
    |                 `- error: cannot find 'MovementModel' in scope
127 |     XCTAssertEqual(grid1, grid2)
128 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:127:5: error: generic parameter 'T' could not be inferred
125 |     let grid1 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
126 |     let grid2 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
127 |     XCTAssertEqual(grid1, grid2)
    |     `- error: generic parameter 'T' could not be inferred
128 |
129 |     // Different model types are not equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:130:33: error: cannot find 'MovementModel' in scope
128 |
129 |     // Different model types are not equal
130 |     XCTAssertNotEqual(physics1, MovementModel.velocity())
    |                                 `- error: cannot find 'MovementModel' in scope
131 |   }
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:130:5: error: generic parameter 'T' could not be inferred
128 |
129 |     // Different model types are not equal
130 |     XCTAssertNotEqual(physics1, MovementModel.velocity())
    |     `- error: generic parameter 'T' could not be inferred
131 |   }
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:267:13: note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
265 | }
266 |
267 | public func XCTAssertNotEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
268 |   assertNotEqual(a, b, message, file: file, line: line)
269 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:134:36: error: extra arguments at positions #1, #2 in call
132 |
133 |   func testCustomConfig() {
134 |     let config = ActorPhysicsConfig(
    |                                    `- error: extra arguments at positions #1, #2 in call
135 |       movementModel: .velocity(acceleration: 1000, deceleration: 800),
136 |       facingAxes: .eightWay,
/Users/admin/builder/spi-builder-workspace/Sources/SwiftGodotBuilder/Actor/ActorPhysicsConfig.swift:36:10: note: 'init(speed:gravity:knockbackStrength:knockbackRecoveryTime:jumpSpeed:minJumpSpeed:coyoteTime:jumpBufferTime:wallSlideGravityMultiplier:wallJumpSpeed:wallJumpVerticalSpeed:dashSpeed:dashDuration:dashCooldown:crouchSpeedMultiplier:swimSpeed:waterGravityMultiplier:waterMaxFallSpeed:waterMoveSpeedMultiplier:)' declared here
34 |   public var waterMoveSpeedMultiplier: Float
35 |
36 |   public init(
   |          `- note: 'init(speed:gravity:knockbackStrength:knockbackRecoveryTime:jumpSpeed:minJumpSpeed:coyoteTime:jumpBufferTime:wallSlideGravityMultiplier:wallJumpSpeed:wallJumpVerticalSpeed:dashSpeed:dashDuration:dashCooldown:crouchSpeedMultiplier:swimSpeed:waterGravityMultiplier:waterMaxFallSpeed:waterMoveSpeedMultiplier:)' declared here
37 |     speed: Float = 60,
38 |     gravity: Float? = nil,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:135:23: error: cannot infer contextual base in reference to member 'velocity'
133 |   func testCustomConfig() {
134 |     let config = ActorPhysicsConfig(
135 |       movementModel: .velocity(acceleration: 1000, deceleration: 800),
    |                       `- error: cannot infer contextual base in reference to member 'velocity'
136 |       facingAxes: .eightWay,
137 |       speed: 200,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:136:20: error: cannot infer contextual base in reference to member 'eightWay'
134 |     let config = ActorPhysicsConfig(
135 |       movementModel: .velocity(acceleration: 1000, deceleration: 800),
136 |       facingAxes: .eightWay,
    |                    `- error: cannot infer contextual base in reference to member 'eightWay'
137 |       speed: 200,
138 |       gravity: 0,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:147:5: error: generic parameter 'T' could not be inferred
145 |     assertApproxEqual(config.knockbackStrength, Float(150))
146 |     assertApproxEqual(config.knockbackRecoveryTime, Double(0.3))
147 |     XCTAssertEqual(config.facingAxes, .eightWay)
    |     `- error: generic parameter 'T' could not be inferred
148 |   }
149 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:23:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 21 |
 22 |   func testInitialState() {
 23 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 24 |     let physics = ActorPhysicsState(config: config)
 25 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:37:5: error: generic parameter 'T' could not be inferred
 35 |     assertApproxEqual(physics.inputDirection.x, Float(0))
 36 |     assertApproxEqual(physics.inputDirection.y, Float(0))
 37 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
 38 |   }
 39 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:41:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 39 |
 40 |   func testResetClearsState() {
 41 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 42 |     let physics = ActorPhysicsState(config: config)
 43 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:72:5: error: generic parameter 'T' could not be inferred
 70 |     assertApproxEqual(physics.inputDirection.x, Float(0))
 71 |     assertApproxEqual(physics.inputDirection.y, Float(0))
 72 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
 73 |   }
 74 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:76:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 74 |
 75 |   func testKnockbackTimerDecays() {
 76 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 77 |     let physics = ActorPhysicsState(config: config)
 78 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:88:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 86 |
 87 |   func testKnockbackVelocityDecays() {
 88 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 89 |     let physics = ActorPhysicsState(config: config)
 90 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:104:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
102 |
103 |   func testKnockbackClearsWhenTimerExpires() {
104 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
105 |     let physics = ActorPhysicsState(config: config)
106 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:118:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
116 |
117 |   func testInputDirectionStored() {
118 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
119 |     let physics = ActorPhysicsState(config: config)
120 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:128:37: error: type 'ActorPhysicsConfig' has no member 'grid'
126 |
127 |   func testGridMovementState() {
128 |     let config = ActorPhysicsConfig.grid(tileSize: [16, 16], moveDuration: 0.2)
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'grid'
129 |     let physics = ActorPhysicsState(config: config)
130 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:143:37: error: type 'ActorPhysicsConfig' has no member 'topDown'
141 |
142 |   func testClickToMoveTarget() {
143 |     let config = ActorPhysicsConfig.topDown()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'topDown'
144 |     let physics = ActorPhysicsState(config: config)
145 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:146:5: error: generic parameter 'T' could not be inferred
144 |     let physics = ActorPhysicsState(config: config)
145 |
146 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
147 |
148 |     physics.clickToMoveTarget = [100, 200]
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:149:5: error: generic parameter 'T' could not be inferred
147 |
148 |     physics.clickToMoveTarget = [100, 200]
149 |     XCTAssertNotNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
150 |     assertApproxEqual(physics.clickToMoveTarget?.x ?? 0, Float(100))
151 |     assertApproxEqual(physics.clickToMoveTarget?.y ?? 0, Float(200))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:275:13: note: in call to function 'XCTAssertNotNil(_:_:file:line:)'
273 | }
274 |
275 | public func XCTAssertNotNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNotNil(_:_:file:line:)'
276 |   assertNotNil(value, message, file: file, line: line)
277 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:154:5: error: generic parameter 'T' could not be inferred
152 |
153 |     physics.clickToMoveTarget = nil
154 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
155 |   }
156 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:158:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
156 |
157 |   func testFloorStateTracking() {
158 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
159 |     let physics = ActorPhysicsState(config: config)
160 |
[1456/1465] Compiling SwiftGodotBuilderTestExtension ActorPhysicsStateTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:30:31: error: value of type 'ActorPhysicsConfig' has no member 'movementModel'
 28 |
 29 |     // Default movement model is physics
 30 |     if case .physics = config.movementModel {
    |                               `- error: value of type 'ActorPhysicsConfig' has no member 'movementModel'
 31 |       XCTAssertTrue(true)
 32 |     } else {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:37:5: error: generic parameter 'T' could not be inferred
 35 |
 36 |     // Default facing is horizontal
 37 |     XCTAssertEqual(config.facingAxes, .horizontal)
    |     `- error: generic parameter 'T' could not be inferred
 38 |   }
 39 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:37:27: error: value of type 'ActorPhysicsConfig' has no member 'facingAxes'
 35 |
 36 |     // Default facing is horizontal
 37 |     XCTAssertEqual(config.facingAxes, .horizontal)
    |                           `- error: value of type 'ActorPhysicsConfig' has no member 'facingAxes'
 38 |   }
 39 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:41:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 39 |
 40 |   func testPlatformerPreset() {
 41 |     let config = ActorPhysicsConfig.platformer(speed: 100, gravity: 600)
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 42 |
 43 |     assertApproxEqual(config.speed, Float(100))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:45:5: error: generic parameter 'T' could not be inferred
 43 |     assertApproxEqual(config.speed, Float(100))
 44 |     assertApproxEqual(config.gravity ?? 0, Float(600))
 45 |     XCTAssertEqual(config.facingAxes, .horizontal)
    |     `- error: generic parameter 'T' could not be inferred
 46 |
 47 |     if case .physics = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:55:37: error: type 'ActorPhysicsConfig' has no member 'topDown'
 53 |
 54 |   func testTopDownPreset() {
 55 |     let config = ActorPhysicsConfig.topDown(speed: 120, facingAxes: .fourWay)
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'topDown'
 56 |
 57 |     assertApproxEqual(config.speed, Float(120))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:55:70: error: cannot infer contextual base in reference to member 'fourWay'
 53 |
 54 |   func testTopDownPreset() {
 55 |     let config = ActorPhysicsConfig.topDown(speed: 120, facingAxes: .fourWay)
    |                                                                      `- error: cannot infer contextual base in reference to member 'fourWay'
 56 |
 57 |     assertApproxEqual(config.speed, Float(120))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:59:5: error: generic parameter 'T' could not be inferred
 57 |     assertApproxEqual(config.speed, Float(120))
 58 |     assertApproxEqual(config.gravity ?? -1, Float(0), "Top-down should have no gravity")
 59 |     XCTAssertEqual(config.facingAxes, .fourWay)
    |     `- error: generic parameter 'T' could not be inferred
 60 |
 61 |     if case .velocity(let accel, let decel) = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:70:37: error: type 'ActorPhysicsConfig' has no member 'velocity'
 68 |
 69 |   func testVelocityPreset() {
 70 |     let config = ActorPhysicsConfig.velocity(
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'velocity'
 71 |       speed: 150,
 72 |       acceleration: 500,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:74:20: error: cannot infer contextual base in reference to member 'eightWay'
 72 |       acceleration: 500,
 73 |       deceleration: 300,
 74 |       facingAxes: .eightWay
    |                    `- error: cannot infer contextual base in reference to member 'eightWay'
 75 |     )
 76 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:79:5: error: generic parameter 'T' could not be inferred
 77 |     assertApproxEqual(config.speed, Float(150))
 78 |     assertApproxEqual(config.gravity ?? -1, Float(0))
 79 |     XCTAssertEqual(config.facingAxes, .eightWay)
    |     `- error: generic parameter 'T' could not be inferred
 80 |
 81 |     if case .velocity(let accel, let decel) = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:90:37: error: type 'ActorPhysicsConfig' has no member 'grid'
 88 |
 89 |   func testGridPreset() {
 90 |     let config = ActorPhysicsConfig.grid(
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'grid'
 91 |       tileSize: [32, 32],
 92 |       moveDuration: 0.2,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:93:20: error: cannot infer contextual base in reference to member 'fourWay'
 91 |       tileSize: [32, 32],
 92 |       moveDuration: 0.2,
 93 |       facingAxes: .fourWay
    |                    `- error: cannot infer contextual base in reference to member 'fourWay'
 94 |     )
 95 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:98:5: error: generic parameter 'T' could not be inferred
 96 |     assertApproxEqual(config.speed, Float(0), "Grid mode doesn't use speed")
 97 |     assertApproxEqual(config.gravity ?? -1, Float(0))
 98 |     XCTAssertEqual(config.facingAxes, .fourWay)
    |     `- error: generic parameter 'T' could not be inferred
 99 |
100 |     if case .grid(let tileSize, let duration) = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:111:20: error: cannot find 'MovementModel' in scope
109 |   func testMovementModelEquality() {
110 |     // Physics models are equal
111 |     let physics1 = MovementModel.physics
    |                    `- error: cannot find 'MovementModel' in scope
112 |     let physics2 = MovementModel.physics
113 |     XCTAssertEqual(physics1, physics2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:112:20: error: cannot find 'MovementModel' in scope
110 |     // Physics models are equal
111 |     let physics1 = MovementModel.physics
112 |     let physics2 = MovementModel.physics
    |                    `- error: cannot find 'MovementModel' in scope
113 |     XCTAssertEqual(physics1, physics2)
114 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:113:5: error: generic parameter 'T' could not be inferred
111 |     let physics1 = MovementModel.physics
112 |     let physics2 = MovementModel.physics
113 |     XCTAssertEqual(physics1, physics2)
    |     `- error: generic parameter 'T' could not be inferred
114 |
115 |     // Velocity models with same params are equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:116:16: error: cannot find 'MovementModel' in scope
114 |
115 |     // Velocity models with same params are equal
116 |     let vel1 = MovementModel.velocity(acceleration: 100, deceleration: 50)
    |                `- error: cannot find 'MovementModel' in scope
117 |     let vel2 = MovementModel.velocity(acceleration: 100, deceleration: 50)
118 |     XCTAssertEqual(vel1, vel2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:117:16: error: cannot find 'MovementModel' in scope
115 |     // Velocity models with same params are equal
116 |     let vel1 = MovementModel.velocity(acceleration: 100, deceleration: 50)
117 |     let vel2 = MovementModel.velocity(acceleration: 100, deceleration: 50)
    |                `- error: cannot find 'MovementModel' in scope
118 |     XCTAssertEqual(vel1, vel2)
119 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:118:5: error: generic parameter 'T' could not be inferred
116 |     let vel1 = MovementModel.velocity(acceleration: 100, deceleration: 50)
117 |     let vel2 = MovementModel.velocity(acceleration: 100, deceleration: 50)
118 |     XCTAssertEqual(vel1, vel2)
    |     `- error: generic parameter 'T' could not be inferred
119 |
120 |     // Velocity models with different params are not equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:121:16: error: cannot find 'MovementModel' in scope
119 |
120 |     // Velocity models with different params are not equal
121 |     let vel3 = MovementModel.velocity(acceleration: 200, deceleration: 50)
    |                `- error: cannot find 'MovementModel' in scope
122 |     XCTAssertNotEqual(vel1, vel3)
123 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:122:5: error: generic parameter 'T' could not be inferred
120 |     // Velocity models with different params are not equal
121 |     let vel3 = MovementModel.velocity(acceleration: 200, deceleration: 50)
122 |     XCTAssertNotEqual(vel1, vel3)
    |     `- error: generic parameter 'T' could not be inferred
123 |
124 |     // Grid models with same params are equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:267:13: note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
265 | }
266 |
267 | public func XCTAssertNotEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
268 |   assertNotEqual(a, b, message, file: file, line: line)
269 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:125:17: error: cannot find 'MovementModel' in scope
123 |
124 |     // Grid models with same params are equal
125 |     let grid1 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
    |                 `- error: cannot find 'MovementModel' in scope
126 |     let grid2 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
127 |     XCTAssertEqual(grid1, grid2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:126:17: error: cannot find 'MovementModel' in scope
124 |     // Grid models with same params are equal
125 |     let grid1 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
126 |     let grid2 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
    |                 `- error: cannot find 'MovementModel' in scope
127 |     XCTAssertEqual(grid1, grid2)
128 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:127:5: error: generic parameter 'T' could not be inferred
125 |     let grid1 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
126 |     let grid2 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
127 |     XCTAssertEqual(grid1, grid2)
    |     `- error: generic parameter 'T' could not be inferred
128 |
129 |     // Different model types are not equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:130:33: error: cannot find 'MovementModel' in scope
128 |
129 |     // Different model types are not equal
130 |     XCTAssertNotEqual(physics1, MovementModel.velocity())
    |                                 `- error: cannot find 'MovementModel' in scope
131 |   }
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:130:5: error: generic parameter 'T' could not be inferred
128 |
129 |     // Different model types are not equal
130 |     XCTAssertNotEqual(physics1, MovementModel.velocity())
    |     `- error: generic parameter 'T' could not be inferred
131 |   }
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:267:13: note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
265 | }
266 |
267 | public func XCTAssertNotEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
268 |   assertNotEqual(a, b, message, file: file, line: line)
269 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:134:36: error: extra arguments at positions #1, #2 in call
132 |
133 |   func testCustomConfig() {
134 |     let config = ActorPhysicsConfig(
    |                                    `- error: extra arguments at positions #1, #2 in call
135 |       movementModel: .velocity(acceleration: 1000, deceleration: 800),
136 |       facingAxes: .eightWay,
/Users/admin/builder/spi-builder-workspace/Sources/SwiftGodotBuilder/Actor/ActorPhysicsConfig.swift:36:10: note: 'init(speed:gravity:knockbackStrength:knockbackRecoveryTime:jumpSpeed:minJumpSpeed:coyoteTime:jumpBufferTime:wallSlideGravityMultiplier:wallJumpSpeed:wallJumpVerticalSpeed:dashSpeed:dashDuration:dashCooldown:crouchSpeedMultiplier:swimSpeed:waterGravityMultiplier:waterMaxFallSpeed:waterMoveSpeedMultiplier:)' declared here
34 |   public var waterMoveSpeedMultiplier: Float
35 |
36 |   public init(
   |          `- note: 'init(speed:gravity:knockbackStrength:knockbackRecoveryTime:jumpSpeed:minJumpSpeed:coyoteTime:jumpBufferTime:wallSlideGravityMultiplier:wallJumpSpeed:wallJumpVerticalSpeed:dashSpeed:dashDuration:dashCooldown:crouchSpeedMultiplier:swimSpeed:waterGravityMultiplier:waterMaxFallSpeed:waterMoveSpeedMultiplier:)' declared here
37 |     speed: Float = 60,
38 |     gravity: Float? = nil,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:135:23: error: cannot infer contextual base in reference to member 'velocity'
133 |   func testCustomConfig() {
134 |     let config = ActorPhysicsConfig(
135 |       movementModel: .velocity(acceleration: 1000, deceleration: 800),
    |                       `- error: cannot infer contextual base in reference to member 'velocity'
136 |       facingAxes: .eightWay,
137 |       speed: 200,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:136:20: error: cannot infer contextual base in reference to member 'eightWay'
134 |     let config = ActorPhysicsConfig(
135 |       movementModel: .velocity(acceleration: 1000, deceleration: 800),
136 |       facingAxes: .eightWay,
    |                    `- error: cannot infer contextual base in reference to member 'eightWay'
137 |       speed: 200,
138 |       gravity: 0,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:147:5: error: generic parameter 'T' could not be inferred
145 |     assertApproxEqual(config.knockbackStrength, Float(150))
146 |     assertApproxEqual(config.knockbackRecoveryTime, Double(0.3))
147 |     XCTAssertEqual(config.facingAxes, .eightWay)
    |     `- error: generic parameter 'T' could not be inferred
148 |   }
149 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:23:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 21 |
 22 |   func testInitialState() {
 23 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 24 |     let physics = ActorPhysicsState(config: config)
 25 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:37:5: error: generic parameter 'T' could not be inferred
 35 |     assertApproxEqual(physics.inputDirection.x, Float(0))
 36 |     assertApproxEqual(physics.inputDirection.y, Float(0))
 37 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
 38 |   }
 39 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:41:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 39 |
 40 |   func testResetClearsState() {
 41 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 42 |     let physics = ActorPhysicsState(config: config)
 43 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:72:5: error: generic parameter 'T' could not be inferred
 70 |     assertApproxEqual(physics.inputDirection.x, Float(0))
 71 |     assertApproxEqual(physics.inputDirection.y, Float(0))
 72 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
 73 |   }
 74 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:76:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 74 |
 75 |   func testKnockbackTimerDecays() {
 76 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 77 |     let physics = ActorPhysicsState(config: config)
 78 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:88:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 86 |
 87 |   func testKnockbackVelocityDecays() {
 88 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 89 |     let physics = ActorPhysicsState(config: config)
 90 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:104:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
102 |
103 |   func testKnockbackClearsWhenTimerExpires() {
104 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
105 |     let physics = ActorPhysicsState(config: config)
106 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:118:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
116 |
117 |   func testInputDirectionStored() {
118 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
119 |     let physics = ActorPhysicsState(config: config)
120 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:128:37: error: type 'ActorPhysicsConfig' has no member 'grid'
126 |
127 |   func testGridMovementState() {
128 |     let config = ActorPhysicsConfig.grid(tileSize: [16, 16], moveDuration: 0.2)
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'grid'
129 |     let physics = ActorPhysicsState(config: config)
130 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:143:37: error: type 'ActorPhysicsConfig' has no member 'topDown'
141 |
142 |   func testClickToMoveTarget() {
143 |     let config = ActorPhysicsConfig.topDown()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'topDown'
144 |     let physics = ActorPhysicsState(config: config)
145 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:146:5: error: generic parameter 'T' could not be inferred
144 |     let physics = ActorPhysicsState(config: config)
145 |
146 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
147 |
148 |     physics.clickToMoveTarget = [100, 200]
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:149:5: error: generic parameter 'T' could not be inferred
147 |
148 |     physics.clickToMoveTarget = [100, 200]
149 |     XCTAssertNotNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
150 |     assertApproxEqual(physics.clickToMoveTarget?.x ?? 0, Float(100))
151 |     assertApproxEqual(physics.clickToMoveTarget?.y ?? 0, Float(200))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:275:13: note: in call to function 'XCTAssertNotNil(_:_:file:line:)'
273 | }
274 |
275 | public func XCTAssertNotNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNotNil(_:_:file:line:)'
276 |   assertNotNil(value, message, file: file, line: line)
277 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:154:5: error: generic parameter 'T' could not be inferred
152 |
153 |     physics.clickToMoveTarget = nil
154 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
155 |   }
156 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:158:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
156 |
157 |   func testFloorStateTracking() {
158 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
159 |     let physics = ActorPhysicsState(config: config)
160 |
[1457/1465] Compiling SwiftGodotBuilderTestExtension AnimPropertyTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:30:31: error: value of type 'ActorPhysicsConfig' has no member 'movementModel'
 28 |
 29 |     // Default movement model is physics
 30 |     if case .physics = config.movementModel {
    |                               `- error: value of type 'ActorPhysicsConfig' has no member 'movementModel'
 31 |       XCTAssertTrue(true)
 32 |     } else {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:37:5: error: generic parameter 'T' could not be inferred
 35 |
 36 |     // Default facing is horizontal
 37 |     XCTAssertEqual(config.facingAxes, .horizontal)
    |     `- error: generic parameter 'T' could not be inferred
 38 |   }
 39 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:37:27: error: value of type 'ActorPhysicsConfig' has no member 'facingAxes'
 35 |
 36 |     // Default facing is horizontal
 37 |     XCTAssertEqual(config.facingAxes, .horizontal)
    |                           `- error: value of type 'ActorPhysicsConfig' has no member 'facingAxes'
 38 |   }
 39 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:41:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 39 |
 40 |   func testPlatformerPreset() {
 41 |     let config = ActorPhysicsConfig.platformer(speed: 100, gravity: 600)
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 42 |
 43 |     assertApproxEqual(config.speed, Float(100))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:45:5: error: generic parameter 'T' could not be inferred
 43 |     assertApproxEqual(config.speed, Float(100))
 44 |     assertApproxEqual(config.gravity ?? 0, Float(600))
 45 |     XCTAssertEqual(config.facingAxes, .horizontal)
    |     `- error: generic parameter 'T' could not be inferred
 46 |
 47 |     if case .physics = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:55:37: error: type 'ActorPhysicsConfig' has no member 'topDown'
 53 |
 54 |   func testTopDownPreset() {
 55 |     let config = ActorPhysicsConfig.topDown(speed: 120, facingAxes: .fourWay)
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'topDown'
 56 |
 57 |     assertApproxEqual(config.speed, Float(120))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:55:70: error: cannot infer contextual base in reference to member 'fourWay'
 53 |
 54 |   func testTopDownPreset() {
 55 |     let config = ActorPhysicsConfig.topDown(speed: 120, facingAxes: .fourWay)
    |                                                                      `- error: cannot infer contextual base in reference to member 'fourWay'
 56 |
 57 |     assertApproxEqual(config.speed, Float(120))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:59:5: error: generic parameter 'T' could not be inferred
 57 |     assertApproxEqual(config.speed, Float(120))
 58 |     assertApproxEqual(config.gravity ?? -1, Float(0), "Top-down should have no gravity")
 59 |     XCTAssertEqual(config.facingAxes, .fourWay)
    |     `- error: generic parameter 'T' could not be inferred
 60 |
 61 |     if case .velocity(let accel, let decel) = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:70:37: error: type 'ActorPhysicsConfig' has no member 'velocity'
 68 |
 69 |   func testVelocityPreset() {
 70 |     let config = ActorPhysicsConfig.velocity(
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'velocity'
 71 |       speed: 150,
 72 |       acceleration: 500,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:74:20: error: cannot infer contextual base in reference to member 'eightWay'
 72 |       acceleration: 500,
 73 |       deceleration: 300,
 74 |       facingAxes: .eightWay
    |                    `- error: cannot infer contextual base in reference to member 'eightWay'
 75 |     )
 76 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:79:5: error: generic parameter 'T' could not be inferred
 77 |     assertApproxEqual(config.speed, Float(150))
 78 |     assertApproxEqual(config.gravity ?? -1, Float(0))
 79 |     XCTAssertEqual(config.facingAxes, .eightWay)
    |     `- error: generic parameter 'T' could not be inferred
 80 |
 81 |     if case .velocity(let accel, let decel) = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:90:37: error: type 'ActorPhysicsConfig' has no member 'grid'
 88 |
 89 |   func testGridPreset() {
 90 |     let config = ActorPhysicsConfig.grid(
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'grid'
 91 |       tileSize: [32, 32],
 92 |       moveDuration: 0.2,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:93:20: error: cannot infer contextual base in reference to member 'fourWay'
 91 |       tileSize: [32, 32],
 92 |       moveDuration: 0.2,
 93 |       facingAxes: .fourWay
    |                    `- error: cannot infer contextual base in reference to member 'fourWay'
 94 |     )
 95 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:98:5: error: generic parameter 'T' could not be inferred
 96 |     assertApproxEqual(config.speed, Float(0), "Grid mode doesn't use speed")
 97 |     assertApproxEqual(config.gravity ?? -1, Float(0))
 98 |     XCTAssertEqual(config.facingAxes, .fourWay)
    |     `- error: generic parameter 'T' could not be inferred
 99 |
100 |     if case .grid(let tileSize, let duration) = config.movementModel {
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:111:20: error: cannot find 'MovementModel' in scope
109 |   func testMovementModelEquality() {
110 |     // Physics models are equal
111 |     let physics1 = MovementModel.physics
    |                    `- error: cannot find 'MovementModel' in scope
112 |     let physics2 = MovementModel.physics
113 |     XCTAssertEqual(physics1, physics2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:112:20: error: cannot find 'MovementModel' in scope
110 |     // Physics models are equal
111 |     let physics1 = MovementModel.physics
112 |     let physics2 = MovementModel.physics
    |                    `- error: cannot find 'MovementModel' in scope
113 |     XCTAssertEqual(physics1, physics2)
114 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:113:5: error: generic parameter 'T' could not be inferred
111 |     let physics1 = MovementModel.physics
112 |     let physics2 = MovementModel.physics
113 |     XCTAssertEqual(physics1, physics2)
    |     `- error: generic parameter 'T' could not be inferred
114 |
115 |     // Velocity models with same params are equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:116:16: error: cannot find 'MovementModel' in scope
114 |
115 |     // Velocity models with same params are equal
116 |     let vel1 = MovementModel.velocity(acceleration: 100, deceleration: 50)
    |                `- error: cannot find 'MovementModel' in scope
117 |     let vel2 = MovementModel.velocity(acceleration: 100, deceleration: 50)
118 |     XCTAssertEqual(vel1, vel2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:117:16: error: cannot find 'MovementModel' in scope
115 |     // Velocity models with same params are equal
116 |     let vel1 = MovementModel.velocity(acceleration: 100, deceleration: 50)
117 |     let vel2 = MovementModel.velocity(acceleration: 100, deceleration: 50)
    |                `- error: cannot find 'MovementModel' in scope
118 |     XCTAssertEqual(vel1, vel2)
119 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:118:5: error: generic parameter 'T' could not be inferred
116 |     let vel1 = MovementModel.velocity(acceleration: 100, deceleration: 50)
117 |     let vel2 = MovementModel.velocity(acceleration: 100, deceleration: 50)
118 |     XCTAssertEqual(vel1, vel2)
    |     `- error: generic parameter 'T' could not be inferred
119 |
120 |     // Velocity models with different params are not equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:121:16: error: cannot find 'MovementModel' in scope
119 |
120 |     // Velocity models with different params are not equal
121 |     let vel3 = MovementModel.velocity(acceleration: 200, deceleration: 50)
    |                `- error: cannot find 'MovementModel' in scope
122 |     XCTAssertNotEqual(vel1, vel3)
123 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:122:5: error: generic parameter 'T' could not be inferred
120 |     // Velocity models with different params are not equal
121 |     let vel3 = MovementModel.velocity(acceleration: 200, deceleration: 50)
122 |     XCTAssertNotEqual(vel1, vel3)
    |     `- error: generic parameter 'T' could not be inferred
123 |
124 |     // Grid models with same params are equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:267:13: note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
265 | }
266 |
267 | public func XCTAssertNotEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
268 |   assertNotEqual(a, b, message, file: file, line: line)
269 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:125:17: error: cannot find 'MovementModel' in scope
123 |
124 |     // Grid models with same params are equal
125 |     let grid1 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
    |                 `- error: cannot find 'MovementModel' in scope
126 |     let grid2 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
127 |     XCTAssertEqual(grid1, grid2)
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:126:17: error: cannot find 'MovementModel' in scope
124 |     // Grid models with same params are equal
125 |     let grid1 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
126 |     let grid2 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
    |                 `- error: cannot find 'MovementModel' in scope
127 |     XCTAssertEqual(grid1, grid2)
128 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:127:5: error: generic parameter 'T' could not be inferred
125 |     let grid1 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
126 |     let grid2 = MovementModel.grid(tileSize: [16, 16], moveDuration: 0.1)
127 |     XCTAssertEqual(grid1, grid2)
    |     `- error: generic parameter 'T' could not be inferred
128 |
129 |     // Different model types are not equal
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:130:33: error: cannot find 'MovementModel' in scope
128 |
129 |     // Different model types are not equal
130 |     XCTAssertNotEqual(physics1, MovementModel.velocity())
    |                                 `- error: cannot find 'MovementModel' in scope
131 |   }
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:130:5: error: generic parameter 'T' could not be inferred
128 |
129 |     // Different model types are not equal
130 |     XCTAssertNotEqual(physics1, MovementModel.velocity())
    |     `- error: generic parameter 'T' could not be inferred
131 |   }
132 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:267:13: note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
265 | }
266 |
267 | public func XCTAssertNotEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNotEqual(_:_:_:file:line:)'
268 |   assertNotEqual(a, b, message, file: file, line: line)
269 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:134:36: error: extra arguments at positions #1, #2 in call
132 |
133 |   func testCustomConfig() {
134 |     let config = ActorPhysicsConfig(
    |                                    `- error: extra arguments at positions #1, #2 in call
135 |       movementModel: .velocity(acceleration: 1000, deceleration: 800),
136 |       facingAxes: .eightWay,
/Users/admin/builder/spi-builder-workspace/Sources/SwiftGodotBuilder/Actor/ActorPhysicsConfig.swift:36:10: note: 'init(speed:gravity:knockbackStrength:knockbackRecoveryTime:jumpSpeed:minJumpSpeed:coyoteTime:jumpBufferTime:wallSlideGravityMultiplier:wallJumpSpeed:wallJumpVerticalSpeed:dashSpeed:dashDuration:dashCooldown:crouchSpeedMultiplier:swimSpeed:waterGravityMultiplier:waterMaxFallSpeed:waterMoveSpeedMultiplier:)' declared here
34 |   public var waterMoveSpeedMultiplier: Float
35 |
36 |   public init(
   |          `- note: 'init(speed:gravity:knockbackStrength:knockbackRecoveryTime:jumpSpeed:minJumpSpeed:coyoteTime:jumpBufferTime:wallSlideGravityMultiplier:wallJumpSpeed:wallJumpVerticalSpeed:dashSpeed:dashDuration:dashCooldown:crouchSpeedMultiplier:swimSpeed:waterGravityMultiplier:waterMaxFallSpeed:waterMoveSpeedMultiplier:)' declared here
37 |     speed: Float = 60,
38 |     gravity: Float? = nil,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:135:23: error: cannot infer contextual base in reference to member 'velocity'
133 |   func testCustomConfig() {
134 |     let config = ActorPhysicsConfig(
135 |       movementModel: .velocity(acceleration: 1000, deceleration: 800),
    |                       `- error: cannot infer contextual base in reference to member 'velocity'
136 |       facingAxes: .eightWay,
137 |       speed: 200,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:136:20: error: cannot infer contextual base in reference to member 'eightWay'
134 |     let config = ActorPhysicsConfig(
135 |       movementModel: .velocity(acceleration: 1000, deceleration: 800),
136 |       facingAxes: .eightWay,
    |                    `- error: cannot infer contextual base in reference to member 'eightWay'
137 |       speed: 200,
138 |       gravity: 0,
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsConfigTests.swift:147:5: error: generic parameter 'T' could not be inferred
145 |     assertApproxEqual(config.knockbackStrength, Float(150))
146 |     assertApproxEqual(config.knockbackRecoveryTime, Double(0.3))
147 |     XCTAssertEqual(config.facingAxes, .eightWay)
    |     `- error: generic parameter 'T' could not be inferred
148 |   }
149 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:263:13: note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
261 | }
262 |
263 | public func XCTAssertEqual<T: Equatable>(_ a: T?, _ b: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertEqual(_:_:_:file:line:)'
264 |   assertEqual(a, b, message, file: file, line: line)
265 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:23:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 21 |
 22 |   func testInitialState() {
 23 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 24 |     let physics = ActorPhysicsState(config: config)
 25 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:37:5: error: generic parameter 'T' could not be inferred
 35 |     assertApproxEqual(physics.inputDirection.x, Float(0))
 36 |     assertApproxEqual(physics.inputDirection.y, Float(0))
 37 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
 38 |   }
 39 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:41:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 39 |
 40 |   func testResetClearsState() {
 41 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 42 |     let physics = ActorPhysicsState(config: config)
 43 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:72:5: error: generic parameter 'T' could not be inferred
 70 |     assertApproxEqual(physics.inputDirection.x, Float(0))
 71 |     assertApproxEqual(physics.inputDirection.y, Float(0))
 72 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
 73 |   }
 74 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:76:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 74 |
 75 |   func testKnockbackTimerDecays() {
 76 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 77 |     let physics = ActorPhysicsState(config: config)
 78 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:88:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
 86 |
 87 |   func testKnockbackVelocityDecays() {
 88 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
 89 |     let physics = ActorPhysicsState(config: config)
 90 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:104:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
102 |
103 |   func testKnockbackClearsWhenTimerExpires() {
104 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
105 |     let physics = ActorPhysicsState(config: config)
106 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:118:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
116 |
117 |   func testInputDirectionStored() {
118 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
119 |     let physics = ActorPhysicsState(config: config)
120 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:128:37: error: type 'ActorPhysicsConfig' has no member 'grid'
126 |
127 |   func testGridMovementState() {
128 |     let config = ActorPhysicsConfig.grid(tileSize: [16, 16], moveDuration: 0.2)
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'grid'
129 |     let physics = ActorPhysicsState(config: config)
130 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:143:37: error: type 'ActorPhysicsConfig' has no member 'topDown'
141 |
142 |   func testClickToMoveTarget() {
143 |     let config = ActorPhysicsConfig.topDown()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'topDown'
144 |     let physics = ActorPhysicsState(config: config)
145 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:146:5: error: generic parameter 'T' could not be inferred
144 |     let physics = ActorPhysicsState(config: config)
145 |
146 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
147 |
148 |     physics.clickToMoveTarget = [100, 200]
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:149:5: error: generic parameter 'T' could not be inferred
147 |
148 |     physics.clickToMoveTarget = [100, 200]
149 |     XCTAssertNotNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
150 |     assertApproxEqual(physics.clickToMoveTarget?.x ?? 0, Float(100))
151 |     assertApproxEqual(physics.clickToMoveTarget?.y ?? 0, Float(200))
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:275:13: note: in call to function 'XCTAssertNotNil(_:_:file:line:)'
273 | }
274 |
275 | public func XCTAssertNotNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNotNil(_:_:file:line:)'
276 |   assertNotNil(value, message, file: file, line: line)
277 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:154:5: error: generic parameter 'T' could not be inferred
152 |
153 |     physics.clickToMoveTarget = nil
154 |     XCTAssertNil(physics.clickToMoveTarget)
    |     `- error: generic parameter 'T' could not be inferred
155 |   }
156 |
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/Assertions.swift:271:13: note: in call to function 'XCTAssertNil(_:_:file:line:)'
269 | }
270 |
271 | public func XCTAssertNil<T>(_ value: T?, _ message: String = "", file: StaticString = #file, line: UInt = #line) {
    |             `- note: in call to function 'XCTAssertNil(_:_:file:line:)'
272 |   assertNil(value, message, file: file, line: line)
273 | }
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/ActorPhysicsStateTests.swift:158:37: error: type 'ActorPhysicsConfig' has no member 'platformer'
156 |
157 |   func testFloorStateTracking() {
158 |     let config = ActorPhysicsConfig.platformer()
    |                                     `- error: type 'ActorPhysicsConfig' has no member 'platformer'
159 |     let physics = ActorPhysicsState(config: config)
160 |
[1457/1465] Linking libSwiftGodotBuilder.dylib
[1459/1465] Compiling SwiftGodotBuilderTestExtension Assertions.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/BehaviorMachineTests.swift:171:50: warning: reference to captured var 'shouldTransition' in concurrently-executing code; this is an error in the Swift 6 language mode [#SendableClosureCaptures]
169 |         Idle()
170 |       }
171 |       .transition(to: TestAIState.patrol) { _ in shouldTransition }
    |                                                  `- warning: reference to captured var 'shouldTransition' in concurrently-executing code; this is an error in the Swift 6 language mode [#SendableClosureCaptures]
172 |
173 |       During(TestAIState.patrol) {
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[1460/1465] Compiling SwiftGodotBuilderTestExtension BehaviorMachineTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/BehaviorMachineTests.swift:171:50: warning: reference to captured var 'shouldTransition' in concurrently-executing code; this is an error in the Swift 6 language mode [#SendableClosureCaptures]
169 |         Idle()
170 |       }
171 |       .transition(to: TestAIState.patrol) { _ in shouldTransition }
    |                                                  `- warning: reference to captured var 'shouldTransition' in concurrently-executing code; this is an error in the Swift 6 language mode [#SendableClosureCaptures]
172 |
173 |       During(TestAIState.patrol) {
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[1461/1465] Compiling SwiftGodotBuilderTestExtension DialogTests.swift
/Users/admin/builder/spi-builder-workspace/Tests/SwiftGodotBuilderTestExtension/BehaviorMachineTests.swift:171:50: warning: reference to captured var 'shouldTransition' in concurrently-executing code; this is an error in the Swift 6 language mode [#SendableClosureCaptures]
169 |         Idle()
170 |       }
171 |       .transition(to: TestAIState.patrol) { _ in shouldTransition }
    |                                                  `- warning: reference to captured var 'shouldTransition' in concurrently-executing code; this is an error in the Swift 6 language mode [#SendableClosureCaptures]
172 |
173 |       During(TestAIState.patrol) {
[#SendableClosureCaptures]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-closure-captures>
[1462/1465] Compiling SwiftGodotBuilderTestExtension TestRunnerNode.swift
[1463/1465] Compiling SwiftGodotBuilderTestExtension TestSuite.swift
BUILD FAILURE 6.2 macosSpm